mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2026-05-11 07:18:04 +02: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):
|
||||
|
||||
- Fixed invalid keys in the haskell-tools configuration
|
||||
- Changed the default haskell formatter to
|
||||
[fourmolu](https://github.com/fourmolu/fourmolu), matching the
|
||||
[haskell-tools default](https://github.com/mrcjkb/haskell-tools.nvim/blob/9ea030aa67f3875753e70e1eb59701f7020479a0/lua/haskell-tools/config/internal.lua#L131)
|
||||
- Split haskell configuration into `lsp/presets/haskell-language-server.nix` and
|
||||
`languages/haskell.nix`
|
||||
- Made the haskell LSP and formatter configurable
|
||||
|
||||
[alfarel](https://github.com/alfarelcynthesis):
|
||||
|
||||
|
|
|
|||
|
|
@ -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
Reference in a new issue