{ plugins = { lsp-format = { enable = false; # Enable it if you want lsp-format integration for none-ls }; lsp = { enable = true; capabilities = "offsetEncoding = 'utf-16'"; servers = { texlab = { enable = true; # cmd = ["texlab"]; # filetypes = ["tex" "plaintex" "bib"]; # extraOptions = { # settings = { # texlab = { # auxDirectory = "tex_aux_output"; # rootDirectory = nil; # build = { # # -- forwardSearchAfter = true, # executable = "latexmk"; # args = [ # "-xelatex" # "-verbose" # # -- "-outdir=%f_output", # # -- "-auxdir=%f_aux", # "-outdir=tex_aux_output" # "-file-line-error" # "-synctex=1" # "-interaction=nonstopmode" # "-pv" # "%f" # ]; # isContinuous = false; # # -- "onSave = true" failed to work properly with large files like moderncv # # -- it would not build properly until you delete all the intermediate files # # -- onSave = true # }; # # -------------------------------- # # -- END texlab main config # # -- if used with texmagic, disable this # # -------------------------------- # # --https://github.com/latex-lsp/texlab/wiki/Previewing # # -- https://github.com/f3fora/nvim-texlabconfig # forwardSearch = { # executable = "zathura"; # args = [ # # -- This is for moving lines in nvim # "--synctex-editor-command" # # -- I don't know why but after switching to lazy.vim, need %%% to escape the % character, so "pgrep zathura -a" can see the % sign # "[[nvim-texlabconfig -file '%%%{input}' -line %%%{line} -server ]] .. vim.v.servername" # "--synctex-forward" # "%l:1:%f" # "%p" # ]; # }; # diagnosticsDelay = 300; # }; # }; # }; }; clangd = {enable = true;}; lua-ls = { enable = true; extraOptions = { settings = { Lua = { completion = { callSnippet = "Replace"; }; telemetry = { enabled = false; }; hint = {enable = true;}; }; }; }; }; nil_ls = {enable = true;}; tsserver = { enable = false; filetypes = ["javascript" "javascriptreact" "typescript" "typescriptreact"]; extraOptions = { settings = { javascript = { inlayHints = { includeInlayEnumMemberValueHints = true; includeInlayFunctionLikeReturnTypeHints = true; includeInlayFunctionParameterTypeHints = true; includeInlayParameterNameHints = "all"; includeInlayParameterNameHintsWhenArgumentMatchesName = true; includeInlayPropertyDeclarationTypeHints = true; includeInlayVariableTypeHints = true; }; }; typescript = { inlayHints = { includeInlayEnumMemberValueHints = true; includeInlayFunctionLikeReturnTypeHints = true; includeInlayFunctionParameterTypeHints = true; includeInlayParameterNameHints = "all"; includeInlayParameterNameHintsWhenArgumentMatchesName = true; includeInlayPropertyDeclarationTypeHints = true; includeInlayVariableTypeHints = true; }; }; }; }; }; eslint = {enable = true;}; pyright = {enable = true;}; ruff-lsp = {enable = true;}; rust-analyzer = { enable = true; installCargo = true; installRustc = true; settings = { checkOnSave = true; check = { command = "clippy"; }; # inlayHints = { # enable = true; # showParameterNames = true; # parameterHintsPrefix = "<- "; # otherHintsPrefix = "=> "; # }; procMacro = { enable = true; }; }; }; }; # keymaps = { # silent = true; # lspBuf = { # gd = { # action = "definition"; # desc = "Goto Definition"; # }; # gr = { # action = "references"; # desc = "Goto References"; # }; # gD = { # action = "declaration"; # desc = "Goto Declaration"; # }; # gI = { # action = "implementation"; # desc = "Goto Implementation"; # }; # gT = { # action = "type_definition"; # desc = "Type Definition"; # }; # K = { # action = "hover"; # desc = "Hover"; # }; # "cw" = { # action = "workspace_symbol"; # desc = "Workspace Symbol"; # }; # "cr" = { # action = "rename"; # desc = "Rename"; # }; # "ca" = { # action = "code_action"; # desc = "Code Action"; # }; # "" = { # action = "signature_help"; # desc = "Signature Help"; # }; # }; # diagnostic = { # "cd" = { # action = "open_float"; # desc = "Line Diagnostics"; # }; # "[d" = { # action = "goto_next"; # desc = "Next Diagnostic"; # }; # "]d" = { # action = "goto_prev"; # desc = "Previous Diagnostic"; # }; # }; # }; }; }; extraConfigLua = '' local _border = "rounded" vim.lsp.handlers["textDocument/hover"] = vim.lsp.with( vim.lsp.handlers.hover, { border = _border } ) vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( vim.lsp.handlers.signature_help, { border = _border } ) vim.diagnostic.config{ float={border=_border} }; require('lspconfig.ui.windows').default_options = { border = _border } ------------------------------ -- START texmagic, texlab ------------------------------ -- Below this one line is for texmagic only -- vim.g['tex_flavor'] = 'latex' require('lspconfig').texlab.setup{ cmd = {"texlab"}, filetypes = {"tex", "plaintex", "bib"}, single_file_support = true, settings = { -- https://github.com/latex-lsp/texlab/wiki/Configuration texlab = { ---------------------------------- -- START for texmagic only ---------------------------------- -- ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ -- build = _G.TeXMagicBuildConfig, -- ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ---------------------------------- -- END for texmagic only ---------------------------------- -------------------------------- -- START texlab main config -- if used with texmagic, disable this -------------------------------- auxDirectory = "tex_aux_output", rootDirectory = nil, build = { -- forwardSearchAfter = true, executable = "latexmk", args = { "-xelatex", "-verbose", -- "-outdir=%f_output", -- "-auxdir=%f_aux", "-outdir=tex_aux_output", "-file-line-error", "-synctex=1", "-interaction=nonstopmode", "-pv", "%f", }, isContinuous = false, -- "onSave = true" failed to work properly with large files like moderncv -- it would not build properly until you delete all the intermediate files -- onSave = true }, -------------------------------- -- END texlab main config -- if used with texmagic, disable this -------------------------------- --https://github.com/latex-lsp/texlab/wiki/Previewing -- https://github.com/f3fora/nvim-texlabconfig forwardSearch = { executable = "zathura", args = { -- This is for moving lines in nvim '--synctex-editor-command', -- I don't know why but after switching to lazy.vim, need %%% to escape the % character, so "pgrep zathura -a" can see the % sign [[nvim-texlabconfig -file '%%%{input}' -line %%%{line} -server ]] .. vim.v.servername, '--synctex-forward', '%l:1:%f', '%p', }, }, diagnosticsDelay = 300, } } } -- compile laTeX keymap vim.keymap.set('n', 'l', ':TexlabBuild' ) -- forwardSearch vim.keymap.set('n', 'k', ':TexlabForward' ) -- if lsp failed to start, start manually vim.keymap.set('n', 'j', ':LspStart' ) ------------------------------ -- END texmagic, texlab ------------------------------ ''; }