From a6f03388c6cc7e3bc53929a46350d0c7e777f9c8 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Sat, 30 Mar 2024 14:40:45 +0100 Subject: dotfiles/vim-dev: integrate LTeX with 'spelllang' --- dotfiles/vim/lua/vim-dev.lua | 60 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'dotfiles/vim/lua/vim-dev.lua') diff --git a/dotfiles/vim/lua/vim-dev.lua b/dotfiles/vim/lua/vim-dev.lua index ccbd923..9dc1e57 100644 --- a/dotfiles/vim/lua/vim-dev.lua +++ b/dotfiles/vim/lua/vim-dev.lua @@ -124,3 +124,63 @@ require("actions-preview").setup() require("dapui").setup() require("nvim-dap-virtual-text").setup() require('telescope').load_extension('dap') + +-- LTex + +local function set_ltex_lang(lang) + local ltex = vim.lsp.get_active_clients({ name = "ltex" })[1] + if ltex == nil then + return + end + + if lang == nil then + lang = vim.opt_local.spelllang:get()[1] + end + + if lang == "en" then + lang = "en-US" + end + + ltex.config.settings.ltex.language = lang +end + +vim.api.nvim_create_user_command( + "LTeXSetLang", + function(opts) + local lang = opts.fargs[1] + set_ltex_lang(lang) + end, + { + nargs = 1, + complete = function() return { "en", "fr" } end, + } +) + +vim.api.nvim_create_autocmd("OptionSet", { + desc = "Set LTex language on spell change", + callback = function(ev) + if ev.match ~= "spelllang" then + return + end + set_ltex_lang() + end, +}) + +vim.api.nvim_create_autocmd("LspAttach", { + desc = "Set LTex language on attach", + callback = function(ev) + local client = vim.lsp.get_client_by_id(ev.data.client_id) + if client.config.name ~= "ltex" then + return + end + set_ltex_lang() + end, +}) + +-- TODO: implement custom client-side commands like: +-- +-- vim.lsp.commands["_ltex.addToDictionary"] = function(params) +-- print(vim.inspect(params)) +-- end +-- +-- See: https://valentjn.github.io/ltex/ltex-ls/server-usage.html#commands -- cgit v1.2.3