mirror of
https://github.com/NotAShelf/nvf.git
synced 2026-05-19 21:46:32 +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
|
|
@ -18,9 +18,9 @@
|
|||
|
||||
cfg = config.vim.languages.haskell;
|
||||
|
||||
defaultServers = ["hls"];
|
||||
defaultServers = ["haskell-language-server"];
|
||||
servers = {
|
||||
hls = {};
|
||||
haskell-language-server = {};
|
||||
};
|
||||
in {
|
||||
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) {
|
||||
vim.lsp = {
|
||||
presets = genAttrs cfg.lsp.servers (_: {enable = true;});
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
./gopls.nix
|
||||
./harper.nix
|
||||
./helm-ls.nix
|
||||
./hls.nix
|
||||
./haskell-language-server.nix
|
||||
./intelephense.nix
|
||||
./jdt-language-server.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