diff options
| author | awy <awy@awy.one> | 2025-10-14 18:27:29 +0300 | 
|---|---|---|
| committer | awy <awy@awy.one> | 2025-10-14 18:27:29 +0300 | 
| commit | de009fd679e10d053fdcc10785f91ad5317449ea (patch) | |
| tree | 60918a488b579588596cf4d509fde298dccbf15d /.config/nvim/lsp/ltex.lua | |
| parent | 9ea6cf81adb5d6abc59843de1db45913210f9320 (diff) | |
| download | hyprdots-de009fd679e10d053fdcc10785f91ad5317449ea.tar.gz | |
nvim revamp
Diffstat (limited to '.config/nvim/lsp/ltex.lua')
| -rw-r--r-- | .config/nvim/lsp/ltex.lua | 85 | 
1 files changed, 85 insertions, 0 deletions
diff --git a/.config/nvim/lsp/ltex.lua b/.config/nvim/lsp/ltex.lua new file mode 100644 index 0000000..9b3bb24 --- /dev/null +++ b/.config/nvim/lsp/ltex.lua @@ -0,0 +1,85 @@ +---@brief +--- +--- https://github.com/valentjn/ltex-ls +--- +--- LTeX Language Server: LSP language server for LanguageTool 🔍✔️ with support for LaTeX 🎓, Markdown 📝, and others +--- +--- To install, download the latest [release](https://github.com/valentjn/ltex-ls/releases) and ensure `ltex-ls` is on your path. +--- +--- This server accepts configuration via the `settings` key. +--- +--- ```lua +---   settings = { +--- 		ltex = { +--- 			language = "en-GB", +--- 		}, +--- 	}, +--- ``` +--- +--- To support org files or R sweave, users can define a custom filetype autocommand (or use a plugin which defines these filetypes): +--- +--- ```lua +--- vim.cmd [[ autocmd BufRead,BufNewFile *.org set filetype=org ]] +--- ``` + +local language_id_mapping = { +  bib = 'bibtex', +  plaintex = 'tex', +  rnoweb = 'rsweave', +  rst = 'restructuredtext', +  tex = 'latex', +  pandoc = 'markdown', +  text = 'plaintext', +} + +local filetypes = { +  'bib', +  'gitcommit', +  'markdown', +  'org', +  'plaintex', +  'rst', +  'rnoweb', +  'tex', +  'pandoc', +  'quarto', +  'rmd', +  'context', +  'html', +  'xhtml', +  'mail', +  'text', +} + +local function get_language_id(_, filetype) +  local language_id = language_id_mapping[filetype] +  if language_id then +    return language_id +  else +    return filetype +  end +end +local enabled_ids = {} +do +  local enabled_keys = {} +  for _, ft in ipairs(filetypes) do +    local id = get_language_id({}, ft) +    if not enabled_keys[id] then +      enabled_keys[id] = true +      table.insert(enabled_ids, id) +    end +  end +end + +---@type vim.lsp.Config +return { +  cmd = { 'ltex-ls' }, +  filetypes = filetypes, +  root_markers = { '.git' }, +  get_language_id = get_language_id, +  settings = { +    ltex = { +      enabled = enabled_ids, +    }, +  }, +}  |