Compare commits

..

No commits in common. "5ce1d90e952cc84e8ba92b509ac60d409ebdb018" and "7324474ef8e5fb5b85ccd30f0faa12fd4c8a65fe" have entirely different histories.

9 changed files with 20 additions and 174 deletions

View file

@ -79,7 +79,6 @@ isMaximal: {
dart.enable = false;
ocaml.enable = false;
elixir.enable = false;
haskell.enable = false;
tailwind.enable = false;
svelte.enable = false;

View file

@ -8,9 +8,3 @@
`languages.typst.extensions.typst-preview-nvim`.
- Add a search widget to the options page in the nvf manual.
[amadaluzia](https://github.com/amadaluzia):
[haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim
- Add Haskell support under `vim.languages.haskell` using [haskell-tools.nvim]

View file

@ -684,22 +684,6 @@
"type": "github"
}
},
"plugin-haskell-tools-nvim": {
"flake": false,
"locked": {
"lastModified": 1734222260,
"narHash": "sha256-gZVN9ADPO5wFOaf19FydCneb7aKTT9K1vcLoBURPEjk=",
"owner": "mrcjkb",
"repo": "haskell-tools.nvim",
"rev": "943b77b68a79d3991523ba4d373063c9355c6f55",
"type": "github"
},
"original": {
"owner": "mrcjkb",
"repo": "haskell-tools.nvim",
"type": "github"
}
},
"plugin-highlight-undo": {
"flake": false,
"locked": {
@ -2107,7 +2091,6 @@
"plugin-gitsigns-nvim": "plugin-gitsigns-nvim",
"plugin-glow-nvim": "plugin-glow-nvim",
"plugin-gruvbox": "plugin-gruvbox",
"plugin-haskell-tools-nvim": "plugin-haskell-tools-nvim",
"plugin-highlight-undo": "plugin-highlight-undo",
"plugin-hop-nvim": "plugin-hop-nvim",
"plugin-icon-picker-nvim": "plugin-icon-picker-nvim",

View file

@ -720,10 +720,5 @@
url = "github:otavioschwanck/new-file-template.nvim";
flake = false;
};
plugin-haskell-tools-nvim = {
url = "github:mrcjkb/haskell-tools.nvim";
flake = false;
};
};
}

View file

@ -14,7 +14,6 @@ in {
./hcl.nix
./kotlin.nix
./html.nix
./haskell.nix
./java.nix
./lua.nix
./markdown.nix

View file

@ -1,104 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
inherit (builtins) isList;
inherit (lib.types) either package listOf str;
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.strings) optionalString;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.nvim.dag) entryAfter;
inherit (lib.nvim.lua) expToLua;
inherit (pkgs) haskellPackages;
cfg = config.vim.languages.haskell;
in {
options.vim.languages.haskell = {
enable = mkEnableOption "Haskell support";
treesitter = {
enable = mkEnableOption "Treesitter support for Haskell" // {default = config.vim.languages.enableTreesitter;};
package = mkGrammarOption pkgs "haskell";
};
lsp = {
enable = mkEnableOption "LSP support for Haskell" // {default = config.vim.languages.enableLSP;};
package = mkOption {
description = "Haskell LSP package or command to run the Haskell LSP";
example = ''[ (lib.getExe pkgs.haskellPackages.haskell-language-server) "--debug" ]'';
default = haskellPackages.haskell-language-server;
type = either package (listOf str);
};
};
dap = {
enable = mkEnableOption "DAP support for Haskell" // {default = config.vim.languages.enableDAP;};
package = mkOption {
description = "Haskell DAP package or command to run the Haskell DAP";
default = haskellPackages.haskell-debug-adapter;
type = either package (listOf str);
};
};
};
config = mkIf cfg.enable (mkMerge [
(mkIf cfg.treesitter.enable {
vim.treesitter = {
enable = true;
grammars = [cfg.treesitter.package];
};
})
(mkIf (cfg.dap.enable || cfg.lsp.enable) {
vim = {
startPlugins = ["haskell-tools-nvim"];
luaConfigRC.haskell-tools-nvim =
entryAfter
["lsp-setup"]
''
vim.g.haskell_tools = {
${optionalString cfg.lsp.enable ''
-- LSP
tools = {
hover = {
enable = true,
},
},
hls = {
cmd = ${
if isList cfg.lsp.package
then expToLua cfg.lsp.package
else ''{"${cfg.lsp.package}/bin/haskell-language-server-wrapper"}''
},
on_attach = function(client, bufnr, ht)
default_on_attach(client, bufnr, ht)
local opts = { noremap = true, silent = true, buffer = bufnr }
vim.keymap.set('n', '<localleader>cl', vim.lsp.codelens.run, opts)
vim.keymap.set('n', '<localleader>hs', ht.hoogle.hoogle_signature, opts)
vim.keymap.set('n', '<localleader>ea', ht.lsp.buf_eval_all, opts)
vim.keymap.set('n', '<localleader>rr', ht.repl.toggle, opts)
vim.keymap.set('n', '<localleader>rf', function()
ht.repl.toggle(vim.api.nvim_buf_get_name(0))
end, opts)
vim.keymap.set('n', '<localleader>rq', ht.repl.quit, opts)
end,
},
''}
${optionalString cfg.dap.enable ''
dap = {
cmd = ${
if isList cfg.dap.package
then expToLua cfg.dap.package
else ''${cfg.dap.package}/bin/haskell-debug-adapter''
},
},
''}
}
'';
};
})
]);
}

View file

@ -13,7 +13,7 @@
inherit (lib.types) bool package str listOf either enum;
inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.nvim.lua) expToLua;
inherit (lib.nvim.dag) entryAfter entryAnywhere;
inherit (lib.nvim.dag) entryAnywhere;
cfg = config.vim.languages.rust;
@ -127,7 +127,7 @@ in {
vim = {
startPlugins = ["rustaceanvim"];
pluginRC.rustaceanvim = entryAfter ["lsp-setup"] ''
luaConfigRC.rustaceanvim = entryAnywhere ''
vim.g.rustaceanvim = {
${optionalString cfg.lsp.enable ''
-- LSP

View file

@ -23,11 +23,8 @@
package = pkgs.typescript-language-server;
lspConfig = ''
lspconfig.ts_ls.setup {
capabilities = capabilities,
on_attach = function(client, bufnr)
attach_keymaps(client, bufnr);
client.server_capabilities.documentFormattingProvider = false;
end,
capabilities = capabilities;
on_attach = attach_keymaps,
cmd = ${
if isList cfg.lsp.package
then expToLua cfg.lsp.package
@ -82,7 +79,6 @@
ls_sources,
null_ls.builtins.formatting.prettier.with({
command = "${cfg.format.package}/bin/prettier",
filetypes = { "typescript" },
})
)
'';

View file

@ -126,14 +126,16 @@ in {
example = {"some_variable" = 42;};
description = ''
A freeform attribute set containing global variable values for setting vim
variables as early as possible. If populated, this option will set vim variables
in the built {option}`luaConfigRC` as the first item.
An attribute set containing global variable values
for storing vim variables as early as possible. If
populated, this option will set vim variables in the
built luaConfigRC as the first item.
::: {.note}
`{foo = "bar";}` will set `vim.g.foo` to "bar", where the type of `bar` in the
resulting Lua value will be inferred from the type of the value in the
`{name = value;}` pair passed to the option.
`{foo = "bar";}` will set `vim.g.foo` to "bar", where
the type of `bar` in the resulting Lua value will be
inferred from the type of the value in the `{name = value;}`
pair passed to the option.
:::
'';
};
@ -210,39 +212,21 @@ in {
default = true;
description = "Enable word wrapping.";
};
tabstop = mkOption {
type = int;
default = 8; # Neovim default
description = ''
Number of spaces that a `<Tab>` in the file counts for. Also see
the {command}`:retab` command, and the {option}`softtabstop` option.
'';
};
shiftwidth = mkOption {
type = int;
default = 8; # Neovim default
description = ''
Number of spaces to use for each step of (auto)indent. Used for
{option}`cindent`, `>>`, `<<`, etc.
When zero the {option}`tabstop` value will be used.
'';
};
};
};
example = {visualbell = true;};
description = ''
A freeform attribute set containing vim options to be set as early as possible.
If populated, this option will set vim options in the built {option}`luaConfigRC`
after `basic` and before `pluginConfigs` DAG entries.
An attribute set containing vim options to be set
as early as possible. If populated, this option will
set vim options in the built luaConfigRC after `basic`
and before `pluginConfigs` DAG entries.
::: {.note}
`{foo = "bar";}` will set `vim.o.foo` to "bar", where the type of `bar` in the
resulting Lua value will be inferred from the type of the value in the
`{name = value;}` pair passed to the option.
`{foo = "bar";}` will set `vim.o.foo` to "bar", where
the type of `bar` in the resulting Lua value will be
inferred from the type of the value in the`{name = value;}`
pair passed to the option.
:::
'';
};