From 3332489a02f773dc1a0bcb49e678ed3ad083d1f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Av=C3=A9?= Date: Sat, 29 Apr 2023 12:01:29 +0200 Subject: [PATCH] Switch language in Ltex --- nvim/lua/lsp_config.lua | 2 +- nvim/lua/ltex_extra/init.lua | 19 ++++++++++++++ nvim/lua/ltex_extra/src/commands-lsp.lua | 25 ++++++++++++++++++- nvim/lua/mappings.lua | 2 ++ .../spell/ltex.hiddenFalsePositives.en-GB.txt | 1 + 5 files changed, 47 insertions(+), 2 deletions(-) diff --git a/nvim/lua/lsp_config.lua b/nvim/lua/lsp_config.lua index d2b6772..63f3c61 100644 --- a/nvim/lua/lsp_config.lua +++ b/nvim/lua/lsp_config.lua @@ -107,7 +107,7 @@ require('lspconfig').clangd.setup { capabilities = capabilities, -- root_dir = function() -- return require('lspconfig').util.root_pattern({'.clang-format', 'build/', 'compile_flags.txt'}) - -- end + -- end, cmd = { "clangd", "--background-index", diff --git a/nvim/lua/ltex_extra/init.lua b/nvim/lua/ltex_extra/init.lua index 2511b92..7f1b59d 100644 --- a/nvim/lua/ltex_extra/init.lua +++ b/nvim/lua/ltex_extra/init.lua @@ -9,6 +9,24 @@ local default_opts = { M.opts = {} +local ltex_languages = { + "en-GB", + "nl-BE", + "en-US", + "fr", + "auto", +} + +local register_user_cmds = function() + vim.api.nvim_create_user_command("LtexSwitchLang", function() + vim.ui.select(ltex_languages, { + prompt = "Select language:", + }, function(choice) + require("ltex_extra.src.commands-lsp").switchLanguage(choice) + end) + end, { desc = "ltex_extra.nvim: Switch sever language" }) +end + M.setup = function(opts) log.trace("Merge options") M.opts = opts or default_opts @@ -19,6 +37,7 @@ M.setup = function(opts) end log.trace("Add commands to lsp") + register_user_cmds() vim.lsp.commands['_ltex.addToDictionary'] = require("ltex_extra.src.commands-lsp").addToDictionary vim.lsp.commands['_ltex.hideFalsePositives'] = require("ltex_extra.src.commands-lsp").hideFalsePositives vim.lsp.commands['_ltex.disableRules'] = require("ltex_extra.src.commands-lsp").disableRules diff --git a/nvim/lua/ltex_extra/src/commands-lsp.lua b/nvim/lua/ltex_extra/src/commands-lsp.lua index cfe1aec..8777a87 100644 --- a/nvim/lua/ltex_extra/src/commands-lsp.lua +++ b/nvim/lua/ltex_extra/src/commands-lsp.lua @@ -7,7 +7,8 @@ local loadFile = require("ltex_extra.src.utils").readFile local types = { ["dict"] = "dictionary", ["dRules"] = "disabledRules", - ["hRules"] = "hiddenFalsePositives" + ["hRules"] = "hiddenFalsePositives", + ["language"] = "language" } local function catch_ltex() @@ -20,6 +21,16 @@ local function catch_ltex() return client end +local function update_language(client, lang) + log.trace("update_language") + if not client.config.settings.ltex.language then + client.config.settings.ltex.language = {} + end + client.config.settings.ltex.language = lang + log.debug(vim.inspect(client.config.settings.ltex.language)) + return client.notify("workspace/didChangeConfiguration", client.config.settings) +end + local function update_dictionary(client, lang) log.trace("update_dictionary") if not client.config.settings.ltex.dictionary then @@ -62,6 +73,8 @@ M.updateConfig = function(configtype, lang) update_disabledRules(client, lang) elseif configtype == types.hRules then update_hiddenFalsePositive(client, lang) + elseif configtype == types.language then + update_language(client, lang) else log.fmt_error("Config type unknown") return vim.notify("Config type unknown") @@ -113,4 +126,14 @@ M.hideFalsePositives = function(command) end end +function M.switchLanguage(lang) + log.trace("language") + local client = catch_ltex() + if client then + M.updateConfig(types.language, lang) + else + return error("Error catching ltex client", 1) + end +end + return M diff --git a/nvim/lua/mappings.lua b/nvim/lua/mappings.lua index 496a590..05fd8e8 100644 --- a/nvim/lua/mappings.lua +++ b/nvim/lua/mappings.lua @@ -4,6 +4,8 @@ vim.api.nvim_set_keymap("n", "k", "gk", {}) vim.api.nvim_set_keymap("n", "", "", {}) vim.api.nvim_set_keymap("n", "", "", { noremap = true }) vim.api.nvim_set_keymap("n", "", "", { noremap = true }) +vim.api.nvim_set_keymap("n", "", "", { noremap = true }) +vim.api.nvim_set_keymap("n", "", "", { noremap = true }) vim.api.nvim_set_keymap("n", "", ":noh", { noremap = true, silent = true }) vim.api.nvim_set_keymap("n", "gn", ":n", { noremap = true, silent = true }) vim.api.nvim_set_keymap("n", "d", ":TroubleToggle", { noremap = true, silent = true }) diff --git a/nvim/spell/ltex.hiddenFalsePositives.en-GB.txt b/nvim/spell/ltex.hiddenFalsePositives.en-GB.txt index 1cc804a..1a81b59 100644 --- a/nvim/spell/ltex.hiddenFalsePositives.en-GB.txt +++ b/nvim/spell/ltex.hiddenFalsePositives.en-GB.txt @@ -7,3 +7,4 @@ {"rule":"MORFOLOGIK_RULE_EN_GB","sentence":"^\\Q2 Conv.\\E$"} {"rule":"ALLOW_TO","sentence":"^\\QA footnote says that in theory certain intelligent monstrosities could also train to become more powerful and throw off the bindings of age.\\E$"} {"rule":"MORFOLOGIK_RULE_EN_GB","sentence":"^\\QA quest: Book with golden hard-cover, located in a tower between Pan's village and Weathar.\\E$"} +{"rule":"EN_COMPOUNDS","sentence":"^\\Q\\E(?:Dummy|Ina|Jimmy-)[0-9]+\\Q take this approach for a multi-task policy distillation, where a single agent is trained based on several teachers that are each specialized in a single task, with the goal of training a single student that is able to perform all tasks.\\E$"}