mirror of
https://github.com/NotAShelf/nvf.git
synced 2026-05-20 22:08:47 +00:00
languages/haskell.nix: address PR comments
- Rename hls -> haskell-language-server to match the nixpkgs name - Remove unneeded injection - Only set lsp filetypes in the language module, not the preset - Remove unneeded `mkDefault` - Use `root_markers` instead of yucky inline Lua
This commit is contained in:
parent
ca21d43590
commit
a97aa7d724
5 changed files with 38 additions and 48 deletions
|
|
@ -204,9 +204,9 @@
|
||||||
[dathegreat](https://github.com/dathegreat):
|
[dathegreat](https://github.com/dathegreat):
|
||||||
|
|
||||||
- Fixed invalid keys in the haskell-tools configuration
|
- Fixed invalid keys in the haskell-tools configuration
|
||||||
- Changed the default haskell formatter to
|
- Split haskell configuration into `lsp/presets/haskell-language-server.nix` and
|
||||||
[fourmolu](https://github.com/fourmolu/fourmolu), matching the
|
`languages/haskell.nix`
|
||||||
[haskell-tools default](https://github.com/mrcjkb/haskell-tools.nvim/blob/9ea030aa67f3875753e70e1eb59701f7020479a0/lua/haskell-tools/config/internal.lua#L131)
|
- Made the haskell LSP and formatter configurable
|
||||||
|
|
||||||
[alfarel](https://github.com/alfarelcynthesis):
|
[alfarel](https://github.com/alfarelcynthesis):
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,9 @@
|
||||||
|
|
||||||
cfg = config.vim.languages.haskell;
|
cfg = config.vim.languages.haskell;
|
||||||
|
|
||||||
defaultServers = ["hls"];
|
defaultServers = ["haskell-language-server"];
|
||||||
servers = {
|
servers = {
|
||||||
hls = {};
|
haskell-language-server = {};
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
options.vim.languages.haskell = {
|
options.vim.languages.haskell = {
|
||||||
|
|
@ -84,6 +84,8 @@ in {
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# haskell-tools prefers to manage the lsp directly,
|
||||||
|
# so we only configure the lsp ourselves if haskell-tools is disabled
|
||||||
(mkIf (cfg.lsp.enable && !cfg.extensions.haskell-tools.enable) {
|
(mkIf (cfg.lsp.enable && !cfg.extensions.haskell-tools.enable) {
|
||||||
vim.lsp = {
|
vim.lsp = {
|
||||||
presets = genAttrs cfg.lsp.servers (_: {enable = true;});
|
presets = genAttrs cfg.lsp.servers (_: {enable = true;});
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
./gopls.nix
|
./gopls.nix
|
||||||
./harper.nix
|
./harper.nix
|
||||||
./helm-ls.nix
|
./helm-ls.nix
|
||||||
./hls.nix
|
./haskell-language-server.nix
|
||||||
./intelephense.nix
|
./intelephense.nix
|
||||||
./jdt-language-server.nix
|
./jdt-language-server.nix
|
||||||
./jinja-lsp.nix
|
./jinja-lsp.nix
|
||||||
|
|
|
||||||
30
modules/plugins/lsp/presets/haskell-language-server.nix
Normal file
30
modules/plugins/lsp/presets/haskell-language-server.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.meta) getExe';
|
||||||
|
inherit (lib.modules) mkIf;
|
||||||
|
inherit (lib.nvim.types) mkLspPresetEnableOption;
|
||||||
|
|
||||||
|
cfg = config.vim.lsp.presets.haskell-language-server;
|
||||||
|
in {
|
||||||
|
options.vim.lsp.presets.haskell-language-server = {
|
||||||
|
enable = mkLspPresetEnableOption "haskell-language-server" "Haskell" [];
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
vim.lsp.servers.haskell-language-server = {
|
||||||
|
enable = true;
|
||||||
|
cmd = [(getExe' pkgs.haskellPackages.haskell-language-server "haskell-language-server-wrapper") "--lsp"];
|
||||||
|
root_markers = ["hie.yaml" "stack.yaml" "cabal.project" "*.cabal" "package.yaml"];
|
||||||
|
settings = {
|
||||||
|
haskell = {
|
||||||
|
formattingProvider = "ormolu";
|
||||||
|
cabalFormattingProvider = "cabal-fmt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.meta) getExe';
|
|
||||||
inherit (lib.modules) mkDefault mkIf;
|
|
||||||
inherit (lib.nvim.types) mkLspPresetEnableOption;
|
|
||||||
inherit (lib.generators) mkLuaInline;
|
|
||||||
|
|
||||||
cfg = config.vim.lsp.presets.hls;
|
|
||||||
in {
|
|
||||||
options.vim.lsp.presets.hls = {
|
|
||||||
enable = mkLspPresetEnableOption "hls" "Haskell" [];
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
vim.lsp.servers.hls = {
|
|
||||||
enable = true;
|
|
||||||
cmd = [(getExe' pkgs.haskellPackages.haskell-language-server "haskell-language-server-wrapper") "--lsp"];
|
|
||||||
filetypes = ["haskell" "lhaskell"];
|
|
||||||
root_dir =
|
|
||||||
mkLuaInline
|
|
||||||
/*
|
|
||||||
lua
|
|
||||||
*/
|
|
||||||
''
|
|
||||||
function(bufnr, on_dir)
|
|
||||||
local fname = vim.api.nvim_buf_get_name(bufnr)
|
|
||||||
on_dir(util.root_pattern('hie.yaml', 'stack.yaml', 'cabal.project', '*.cabal', 'package.yaml')(fname))
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
settings = {
|
|
||||||
haskell = {
|
|
||||||
formattingProvider = mkDefault "ormolu";
|
|
||||||
cabalFormattingProvider = "cabal-fmt";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue