.files/.config/nvim/lua/lsp/haskell.lua

47 lines
1.5 KiB
Lua

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("<leader>hhe", ht.lsp.buf_eval_all)
nnoremap("<leader>hhs", ht.hoogle.hoogle_signature)
nnoremap("<leader>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,
},
}