diff options
| author | William Boman <william@redwill.se> | 2021-10-30 13:37:18 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-30 13:37:18 +0200 |
| commit | 0f637612c71581c07f0b4ce5213b7b737b76eda9 (patch) | |
| tree | 85b4527d71999a4a070596c777863f94215c5674 | |
| parent | more error logging (diff) | |
| download | mason-0f637612c71581c07f0b4ce5213b7b737b76eda9.tar mason-0f637612c71581c07f0b4ce5213b7b737b76eda9.tar.gz mason-0f637612c71581c07f0b4ce5213b7b737b76eda9.tar.bz2 mason-0f637612c71581c07f0b4ce5213b7b737b76eda9.tar.lz mason-0f637612c71581c07f0b4ce5213b7b737b76eda9.tar.xz mason-0f637612c71581c07f0b4ce5213b7b737b76eda9.tar.zst mason-0f637612c71581c07f0b4ce5213b7b737b76eda9.zip | |
ltex: apply upstream changes to server config (#218)
| -rw-r--r-- | lua/nvim-lsp-installer/servers/ltex/configure.lua | 190 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/ltex/init.lua | 19 |
2 files changed, 16 insertions, 193 deletions
diff --git a/lua/nvim-lsp-installer/servers/ltex/configure.lua b/lua/nvim-lsp-installer/servers/ltex/configure.lua deleted file mode 100644 index 78cfdcdb..00000000 --- a/lua/nvim-lsp-installer/servers/ltex/configure.lua +++ /dev/null @@ -1,190 +0,0 @@ --- This is taken directly from https://github.com/neovim/nvim-lspconfig/pull/863. - -local configs = require "lspconfig/configs" -local util = require "lspconfig/util" - -if configs.ltex then - return -end - -local function readFiles(files) - local dict = {} - for _, file in pairs(files) do - local f = io.open(file, "r") - for l in f:lines() do - table.insert(dict, l) - end - end - return dict -end - -local function findLtexLang() - local buf_clients = vim.lsp.buf_get_clients() - for _, client in pairs(buf_clients) do - if client.name == "ltex" then - return client.config.settings.ltex.language - end - end -end - -local function findLtexFiles(filetype, value) - local buf_clients = vim.lsp.buf_get_clients() - for _, client in pairs(buf_clients) do - if client.name == "ltex" then - local files = nil - if filetype == "dictionary" then - files = client.config.dictionary_files[value or findLtexLang()] - elseif filetype == "disable" then - files = client.config.disabledrules_files[value or findLtexLang()] - elseif filetype == "falsePositive" then - files = client.config.falsepositive_files[value or findLtexLang()] - end - - if files then - return files - else - return nil - end - end - end -end - -local function updateConfig(lang, configtype) - local buf_clients = vim.lsp.buf_get_clients() - local client = nil - for _, lsp in pairs(buf_clients) do - if lsp.name == "ltex" then - client = lsp - end - end - - if client then - if configtype == "dictionary" then - -- if client.config.settings.ltex.dictionary then - client.config.settings.ltex.dictionary = { - [lang] = readFiles(client.config.dictionary_files[lang]), - } - return client.notify("workspace/didChangeConfiguration", client.config.settings) - -- else - -- return vim.notify("Error when reading dictionary config, check it") - -- end - elseif configtype == "disable" then - if client.config.settings.ltex.disabledRules then - client.config.settings.ltex.disabledRules = { - [lang] = readFiles(client.config.disabledrules_files[lang]), - } - return client.notify("workspace/didChangeConfiguration", client.config.settings) - else - return vim.notify "Error when reading disabledRules config, check it" - end - elseif configtype == "falsePositive" then - if client.config.settings.ltex.hiddenFalsePositives then - client.config.settings.ltex.hiddenFalsePositives = { - [lang] = readFiles(client.config.falsepositive_files[lang]), - } - return client.notify("workspace/didChangeConfiguration", client.config.settings) - else - return vim.notify "Error when reading hiddenFalsePositives config, check it" - end - end - else - return nil - end -end - -local function addToFile(filetype, lang, file, value) - file = io.open(file[#file - 0], "a+") -- add only to last file defined. - if file then - file:write(value .. "\n") - file:close() - else - return print("Failed insert %q", value) - end - if filetype == "dictionary" then - return updateConfig(lang, "dictionary") - elseif filetype == "disable" then - return updateConfig(lang, "disable") - elseif filetype == "falsePositive" then - return updateConfig(lang, "falsePositive") - end -end - -local function addTo(filetype, lang, file, value) - local dict = readFiles(file) - for _, v in ipairs(dict) do - if v == value then - return nil - end - end - return addToFile(filetype, lang, file, value) -end - -configs.ltex = { - default_config = { - cmd = { "ltex-ls" }, - filetypes = { "tex", "bib", "markdown" }, - root_dir = function(filename) - return util.path.dirname(filename) - end, - dictionary_files = { ["en"] = { vim.fn.getcwd() .. "dictionary.ltex" } }, - disabledrules_files = { ["en"] = { vim.fn.getcwd() .. "disable.ltex" } }, - falsepositive_files = { ["en"] = { vim.fn.getcwd() .. "false.ltex" } }, - settings = { - ltex = { - enabled = { "latex", "tex", "bib", "markdown" }, - checkFrequency = "save", - language = "en", - diagnosticSeverity = "information", - setenceCacheSize = 2000, - additionalRules = { - enablePickyRules = true, - motherTongue = "en", - }, - dictionary = {}, - disabledRules = {}, - hiddenFalsePositives = {}, - }, - }, - on_attach = function(client) - -- local lang = client.config.settings.ltex.language - for lang, _ in ipairs(client.config.dictionary_files) do -- - updateConfig(lang, "dictionary") - updateConfig(lang, "disable") - updateConfig(lang, "falsePositive") - end - end, - }, -} --- --- https://github.com/neovim/nvim-lspconfig/issues/858 can't intercept, --- override it then. -local orig_execute_command = vim.lsp.buf.execute_command -vim.lsp.buf.execute_command = function(command) - if command.command == "_ltex.addToDictionary" then - local arg = command.arguments[1].words -- can I really access like this? - for lang, words in pairs(arg) do - for _, word in ipairs(words) do - local filetype = "dictionary" - addTo(filetype, lang, findLtexFiles(filetype, lang), word) - end - end - elseif command.command == "_ltex.disableRules" then - local arg = command.arguments[1].ruleIds -- can I really access like this? - for lang, rules in pairs(arg) do - for _, rule in ipairs(rules) do - local filetype = "disable" - addTo(filetype, lang, findLtexFiles(filetype, lang), rule) - end - end - elseif command.command == "_ltex.hideFalsePositives" then - local arg = command.arguments[1].falsePositives -- can I really access like this? - for lang, rules in pairs(arg) do - for _, rule in ipairs(rules) do - local filetype = "falsePositive" - addTo(filetype, lang, findLtexFiles(filetype, lang), rule) - end - end - else - orig_execute_command(command) - end -end diff --git a/lua/nvim-lsp-installer/servers/ltex/init.lua b/lua/nvim-lsp-installer/servers/ltex/init.lua index 216fb1b6..1c24ec4b 100644 --- a/lua/nvim-lsp-installer/servers/ltex/init.lua +++ b/lua/nvim-lsp-installer/servers/ltex/init.lua @@ -48,12 +48,25 @@ return function(name, root_dir) end), std.chmod("+x", { "ltex-ls" }), }, - pre_setup = function() - require "nvim-lsp-installer.servers.ltex.configure" - end, default_options = { filetypes = { "tex", "bib", "markdown" }, cmd = { path.concat { root_dir, script_name } }, + settings = { + ltex = { + enabled = { "latex", "tex", "bib", "markdown" }, + checkFrequency = "edit", + language = "en", + diagnosticSeverity = "information", + setenceCacheSize = 2000, + additionalRules = { + enablePickyRules = true, + motherTongue = "en", + }, + dictionary = {}, + disabledRules = {}, + hiddenFalsePositives = {}, + }, + }, }, } end |
