haskell-tools.nvim
haskell-tools.nvim copied to clipboard
add menu entries and/or commands to toggle plugins
Feature description
Kind of an openended issue. My initial issue is that I contribute to several haskell packages, and haskell plugins like stan or hlint are noisy in the diagnostics. To work around this:
- One way to fix this is probably to ignore DEBUG/INFO diagnostics as a general diagnostic nvim functions. can be annoying if you want to keep hlint but not stan
- add a hls.json with the correct config in every project. Can be annoying if you can't commit it.
- change the config dynamically. This is the usecase I prefer, toggling on/off plugins at runtime .
Here is what I've tried:
M.toggle_stan = function ()
local settings = M.generate_settings()
settings.hls.default_settings.haskell.plugin.stan.globalOn = not settings.hls.default_settings.haskell.plugin.stan.globalOn
return settings
end
M.restart_hls = function ()
local new_settings = M.toggle_stan()
vim.g.settings = new_settings
vim.cmd [[ HlsRestart ]]
end
Seems to work. Looking at the HLS doc, it looks like it could be generalized, haskell-tools could parse the available plugins via --list-plugins
and expose a :HlsTools plugin toggle/enable/disable <plugin>
.
Unrelated/more of a general problem but I believe that a good way to expose commands could be to have a function that registers menu
commands. For my own purpose I have created a local context menu where I add commands but maybe haskell-tools could have a
function register_menu_entries command (prefix)
vim.cmd[[menu ]]..prefix..[[.Restart\ HLS <cmd>HlsRestart<cr>]]
...
end
This sounds like a good idea!
Not sure I fully understand the "registering menu
commands" thing though.
I've been planning to rework the commands, so that it's less polluting and more similar to how I implemented it with rustaceanvim: One :Hls
command (for haskell-language-server) and :Ht
(for non-hls tools) with subcommands and completions, e.g. :Hls [re]start
, :Hls stop
, :Hls plugin toggle
, and :Ht repl [...]
, etc (see #297)