2023-08-20 14:27:47 +02:00
|
|
|
local M = {}
|
|
|
|
|
|
|
|
function M.config()
|
2023-07-23 01:34:24 +02:00
|
|
|
local ht = require('haskell-tools')
|
|
|
|
local def_opts = { noremap = true, silent = true, }
|
|
|
|
|
|
|
|
ht.start_or_attach {
|
|
|
|
hls = {
|
|
|
|
on_attach = function(_, bufnr)
|
|
|
|
local opts = vim.tbl_extend('keep', def_opts, { buffer = bufnr, })
|
|
|
|
-- haskell-language-server relies heavily on codeLenses,
|
|
|
|
-- so auto-refresh (see advanced configuration) is enabled by default
|
|
|
|
vim.keymap.set('n', '<space>ca', vim.lsp.codelens.run, opts)
|
|
|
|
vim.keymap.set('n', '<space>hs', ht.hoogle.hoogle_signature, opts)
|
|
|
|
vim.keymap.set('n', '<space>ea', ht.lsp.buf_eval_all, opts)
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
-- Suggested keymaps that do not depend on haskell-language-server:
|
|
|
|
local bufnr = vim.api.nvim_get_current_buf()
|
|
|
|
-- set buffer = bufnr in ftplugin/haskell.lua
|
|
|
|
local opts = { noremap = true, silent = true, buffer = bufnr }
|
|
|
|
|
|
|
|
-- Toggle a GHCi repl for the current package
|
|
|
|
vim.keymap.set('n', '<leader>rr', ht.repl.toggle, opts)
|
|
|
|
-- Toggle a GHCi repl for the current buffer
|
|
|
|
vim.keymap.set('n', '<leader>rf', function()
|
|
|
|
ht.repl.toggle(vim.api.nvim_buf_get_name(0))
|
|
|
|
end, def_opts)
|
|
|
|
vim.keymap.set('n', '<leader>rq', ht.repl.quit, opts)
|
|
|
|
|
|
|
|
-- Detect nvim-dap launch configurations
|
|
|
|
-- (requires nvim-dap and haskell-debug-adapter)
|
|
|
|
-- ht.dap.discover_configurations(bufnr)
|
2023-08-20 14:27:47 +02:00
|
|
|
return 1
|
2023-07-23 01:34:24 +02:00
|
|
|
end
|
|
|
|
|
2023-08-20 14:27:47 +02:00
|
|
|
return M
|
|
|
|
|