languages/haskell: simplify attach function

This commit is contained in:
Ching Pei Yang 2026-05-10 23:19:39 +02:00 committed by Ching Pei Yang
commit 8a0073182f

View file

@ -200,38 +200,31 @@ in {
vim = { vim = {
extraPackages = [haskellPackages.cabal-fmt]; extraPackages = [haskellPackages.cabal-fmt];
startPlugins = ["haskell-tools-nvim"]; startPlugins = ["haskell-tools-nvim"];
globals.haskell_tools = let globals.haskell_tools = cfg.extensions.haskell-tools.setupOpts;
htCfg = cfg.extensions.haskell-tools; languages.haskell.extensions.haskell-tools.setupOpts = {
keymapDefinitions = options.vim.languages.haskell.extensions.haskell-tools.mappings; hls = {
mappings = addDescriptionsToMappings htCfg.mappings keymapDefinitions; on_attach = let
mkBinding = binding: action: htCfg = cfg.extensions.haskell-tools;
if binding.value != null keymapDefinitions = options.vim.languages.haskell.extensions.haskell-tools.mappings;
then "vim.keymap.set('n', ${toLuaObject binding.value}, ${action}, {buffer=bufnr, noremap=true, silent=true, desc=${toLuaObject binding.description}})" mappings = addDescriptionsToMappings htCfg.mappings keymapDefinitions;
else ""; mkBinding = binding: action:
generatedOnAttach = mkLuaInline '' if binding.value != null
function(client, bufnr) then "vim.keymap.set('n', ${toLuaObject binding.value}, ${action}, {buffer=bufnr, noremap=true, silent=true, desc=${toLuaObject binding.description}})"
local ht = require("haskell-tools") else "";
${mkBinding mappings.codeLensRun "vim.lsp.codelens.run"} in
${mkBinding mappings.hoogleSignature "ht.hoogle.hoogle_signature"} mkLuaInline ''
${mkBinding mappings.evalAll "ht.lsp.buf_eval_all"} function(client, bufnr)
${mkBinding mappings.replToggle "function() vim.cmd('Haskell repl toggle') end"} local ht = require("haskell-tools")
${mkBinding mappings.replToggleFile "function() vim.cmd('Haskell repl toggle ' .. vim.api.nvim_buf_get_name(0)) end"} ${mkBinding mappings.codeLensRun "vim.lsp.codelens.run"}
${mkBinding mappings.replQuit "function() vim.cmd('Haskell repl quit') end"} ${mkBinding mappings.hoogleSignature "ht.hoogle.hoogle_signature"}
end ${mkBinding mappings.evalAll "ht.lsp.buf_eval_all"}
''; ${mkBinding mappings.replToggle "function() vim.cmd('Haskell repl toggle') end"}
effectiveOnAttach = ${mkBinding mappings.replToggleFile "function() vim.cmd('Haskell repl toggle ' .. vim.api.nvim_buf_get_name(0)) end"}
if htCfg.setupOpts.hls.on_attach != null ${mkBinding mappings.replQuit "function() vim.cmd('Haskell repl quit') end"}
then htCfg.setupOpts.hls.on_attach end
else generatedOnAttach; '';
in
htCfg.setupOpts
// {
hls =
htCfg.setupOpts.hls
// {
on_attach = effectiveOnAttach;
};
}; };
};
}; };
}) })
]); ]);