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
This commit is contained in:
Kirens 2025-03-30 12:49:34 +02:00
parent 81b327ec5d
commit 0633c9d139

View file

@ -2,9 +2,13 @@
lib, lib,
helpers, helpers,
config, config,
options,
... ...
}: }:
with lib; with lib;
let
lspCfg = config.plugins.lsp;
in
lib.nixvim.plugins.mkNeovimPlugin { lib.nixvim.plugins.mkNeovimPlugin {
name = "ltex-extra"; name = "ltex-extra";
packPathName = "ltex_extra.nvim"; packPathName = "ltex_extra.nvim";
@ -12,6 +16,10 @@ lib.nixvim.plugins.mkNeovimPlugin {
maintainers = [ maintainers.loicreynier ]; 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; callSetup = false;
settingsOptions = { settingsOptions = {
@ -44,22 +52,63 @@ lib.nixvim.plugins.mkNeovimPlugin {
}; };
extraConfig = cfg: { extraConfig = cfg: {
warnings = lib.nixvim.mkWarnings "plugins.ltex-extra" { warnings = lib.nixvim.mkWarnings "plugins.ltex-extra" [
when = !config.plugins.lsp.enable; {
when = !lspCfg.enable;
message = '' message = ''
You have enabled `ltex-extra` but not the lsp (`plugins.lsp`). 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. 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 = { plugins.lsp =
servers.ltex = { let
# Enable the ltex language server attachLua = ''
enable = true;
onAttach.function = ''
require("ltex_extra").setup(${lib.nixvim.toLuaObject cfg.settings}) 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;
}; };
}; };
}; };