From 7c793e8e15a551baf166af994679208851f0e828 Mon Sep 17 00:00:00 2001 From: Kirens Date: Sun, 30 Mar 2025 12:48:08 +0200 Subject: [PATCH 1/4] plugins/lsp: enable ltex_plus --- plugins/lsp/lsp-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/lsp/lsp-packages.nix b/plugins/lsp/lsp-packages.nix index 721ab6de..f08144c2 100644 --- a/plugins/lsp/lsp-packages.nix +++ b/plugins/lsp/lsp-packages.nix @@ -82,7 +82,6 @@ "laravel_ls" "lean3ls" "lelwel_ls" - "ltex_plus" "lwc_ls" "m68k" "marko-js" @@ -281,6 +280,7 @@ lemminx = "lemminx"; lsp_ai = "lsp-ai"; ltex = "ltex-ls"; + ltex_plus = "ltex-ls-plus"; lua_ls = "lua-language-server"; luau_lsp = "luau-lsp"; markdown_oxide = "markdown-oxide"; From 81b327ec5da46b2c8b247f5d66512ab975cc146c Mon Sep 17 00:00:00 2001 From: Kirens Date: Sun, 30 Mar 2025 17:14:13 +0200 Subject: [PATCH 2/4] plugins/lsp: fix incorrect path in ltex-settings --- plugins/lsp/language-servers/ltex-settings.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/lsp/language-servers/ltex-settings.nix b/plugins/lsp/language-servers/ltex-settings.nix index deda8dea..a0d20426 100644 --- a/plugins/lsp/language-servers/ltex-settings.nix +++ b/plugins/lsp/language-servers/ltex-settings.nix @@ -249,7 +249,7 @@ in ''; }; - fields = defaultNullOpts.mkAttrsOf' { + bibtex.fields = defaultNullOpts.mkAttrsOf' { type = types.bool; pluginDefault = { }; example = { From 0633c9d139e719c9c11de552f1b5aad0d942ec70 Mon Sep 17 00:00:00 2001 From: Kirens Date: Sun, 30 Mar 2025 12:49:34 +0200 Subject: [PATCH 3/4] plugins/ltex-extra: prefer ltex_plus over ltex ltex_plus is a maintained fork that recently got supported by ltex-extra https://github.com/barreiroleo/ltex_extra.nvim/pull/66 Enable it unless the user explicitly use ltex --- plugins/by-name/ltex-extra/default.nix | 77 +++++++++++++++++++++----- 1 file changed, 63 insertions(+), 14 deletions(-) diff --git a/plugins/by-name/ltex-extra/default.nix b/plugins/by-name/ltex-extra/default.nix index d5e7f0a1..51b7a89e 100644 --- a/plugins/by-name/ltex-extra/default.nix +++ b/plugins/by-name/ltex-extra/default.nix @@ -2,9 +2,13 @@ lib, helpers, config, + options, ... }: with lib; +let + lspCfg = config.plugins.lsp; +in lib.nixvim.plugins.mkNeovimPlugin { name = "ltex-extra"; packPathName = "ltex_extra.nvim"; @@ -12,6 +16,10 @@ lib.nixvim.plugins.mkNeovimPlugin { maintainers = [ maintainers.loicreynier ]; + description = '' + This plugin works with both the ltex or ltex_plus language servers and will enable ltex_plus if neither are. + ''; + callSetup = false; settingsOptions = { @@ -44,24 +52,65 @@ lib.nixvim.plugins.mkNeovimPlugin { }; extraConfig = cfg: { - warnings = lib.nixvim.mkWarnings "plugins.ltex-extra" { - when = !config.plugins.lsp.enable; - message = '' - You have enabled `ltex-extra` but not the lsp (`plugins.lsp`). - You should set `plugins.lsp.enable = true` to make use of the LTeX_extra plugin's features. - ''; - }; + warnings = lib.nixvim.mkWarnings "plugins.ltex-extra" [ + { + when = !lspCfg.enable; + message = '' + You have enabled `ltex-extra` but not the lsp (`plugins.lsp`). + You should set `plugins.lsp.enable = true` to make use of the LTeX_extra plugin's features. + ''; + } + ( + let + expectedDefs = map toString [ + ./. + ../../lsp/language-servers + ]; + isExternal = d: !elem d.file expectedDefs; + anyExternal = + acc: name: v: + let + e = findFirst isExternal null v.definitionsWithLocations; + in + if acc != null then + acc + else if e == null then + null + else + { + inherit name; + inherit (e) file; + }; + external = foldlAttrs anyExternal null options.plugins.lsp.servers.ltex; + in + { + # TODO: Added 2025-03-30; remove after 25.05 + # Warn if servers.ltex seems to be configured outside of ltex-extra + when = !lspCfg.servers.ltex.enable && external != null; + message = '' + in ${external.file} + You seem to have configured `plugins.lsp.servers.ltex.${external.name}` for `ltex-extra`. + It now uses `plugins.lsp.servers.ltex_plus` by default, + either move the configuration or explicitly enable `ltex` with `plugins.lsp.servers.ltex.enable = true` + ''; + } + ) + ]; - plugins.lsp = { - servers.ltex = { - # Enable the ltex language server - enable = true; - - onAttach.function = '' + plugins.lsp = + let + attachLua = '' require("ltex_extra").setup(${lib.nixvim.toLuaObject cfg.settings}) ''; + in + { + servers.ltex.onAttach.function = attachLua; + servers.ltex_plus = { + # Enable ltex_plus if ltex is not already enabled + enable = mkIf (!lspCfg.servers.ltex.enable) (mkDefault true); + onAttach.function = attachLua; + }; }; - }; }; settingsExample = { From d7048c8661d317d384e632f3ea32b58dd557ffaf Mon Sep 17 00:00:00 2001 From: Kirens Date: Sun, 30 Mar 2025 14:59:50 +0200 Subject: [PATCH 4/4] plugins/lspsaga: fix incorrect scope in mkWarnings --- plugins/by-name/lspsaga/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/by-name/lspsaga/default.nix b/plugins/by-name/lspsaga/default.nix index c2d4045d..3aad03c0 100644 --- a/plugins/by-name/lspsaga/default.nix +++ b/plugins/by-name/lspsaga/default.nix @@ -467,7 +467,7 @@ in { enable = mkOverride 1490 true; }; - warnings = lib.nixvim.mkWarnings "plugins.ltex-extra" { + warnings = lib.nixvim.mkWarnings "plugins.lspsaga" { # https://nvimdev.github.io/lspsaga/implement/#default-options when = (cfg.implement.enable == true) && (cfg.symbolInWinbar.enable == false);