local mylsp = require("lsp") local border = mylsp.border local on_attach = mylsp.on_attach -- Haskell vim.g.haskell_tools = { tools = { log = { level = vim.log.levels.OFF }, hover = { border = border, stylize_markdown = true, }, }, hls = { on_attach = function(client, bufnr) local ht = require("haskell-tools") local nnoremap = function(bind, callback, userargs) local args = userargs or {} args.buffer = bufnr vim.keymap.set("n", bind, callback, args) end nnoremap("hhe", ht.lsp.buf_eval_all) nnoremap("hhs", ht.hoogle.hoogle_signature) nnoremap("hhr", ht.repl.toggle) on_attach(client, bufnr) end, default_settings = { haskell = { checkProject = false, -- PERF: don't check the entire project on initial load formattingProvider = "fourmolu", plugin = { rename = { config = { diff = true, -- (experimental) rename across modules }, }, }, }, }, settings = function(project_root) local ht = require("haskell-tools") return ht.lsp.load_hls_settings(project_root, { settings_file_pattern = "hls.json" }) end, }, }