lsp pls wörk

This commit is contained in:
Christoph J. Scherr 2024-07-04 12:41:35 +02:00
parent 113f8d4abd
commit 316cd28587
4 changed files with 243 additions and 5 deletions

View File

@ -0,0 +1,31 @@
local lspconfig = require "lspconfig"
local lspsettings = require "custom.plugins.configs.lspsettings"
-- these are using the defaults
local servers = {
"html",
"cssls",
"tsserver",
"clangd",
"bashls",
"cmake",
"yamlls",
"texlab",
"csharp_ls",
}
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup()
end
local server_with_settings = {
-- "textlsp",
"ltex",
"rust_analyzer",
"basedpyright",
}
for _, lsp in ipairs(server_with_settings) do
lspconfig[lsp].setup(lspsettings[lsp])
end

View File

@ -0,0 +1,202 @@
local M = {}
M.basedpyright = {
root_dir = vim.loop.cwd,
flags = { debounce_text_changes = 300 },
single_file_support = true,
settings = {
python = {
analysis = {
autoSearchPaths = true,
diagnosticMode = "openFilesOnly",
useLibraryCodeForTypes = true,
typeCheckingMode = "basic",
},
},
},
}
M.rust_analyzer = {
settings = {
["rust-analyzer"] = {
check = {
command = "clippy",
},
imports = {
granularity = {
group = "module",
},
prefix = "self",
},
cargo = {
buildScripts = {
enable = true,
},
},
procMacro = {
enable = true,
},
},
},
}
M.ltex = {
use_spellfile = false,
settings = {
ltex = {
checkFrequency = "save", -- shut up while i'm just editing, see <https://github.com/folke/noice.nvim/issues/166>
-- specific language (such as en-GB or de-DE is recommended, but I
-- want multilingual)
language = "auto",
enabled = {
"bibtex",
"tex",
"latex",
"gitcommit",
"markdown",
"org",
"restructuredtext",
"rsweave",
"quarto",
"rmd",
"context",
-- "html",
-- "xhtml",
},
additionalRules = {
enablePickyRules = true,
-- thats cool, but often adds diagnostics in
-- places where a german might confuse words that are similar
-- between english and german REGARDLESS of context. I seem to use the
-- english words only in the proper contexts, so leaving this on
-- just adds annoying hints like 'Hinweis: "list/NN.*" (English) bedeutet "Liste",
-- "Verzeichnis" (German). Meinten Sie vielleicht 'cunning', 'trick'?'
-- everytime I use the word "list". I liked that this makes the hints be
-- in german regardless of the language I'm working in through...
--motherTongue = "de",
},
-- load token and additional languagetool items later
},
},
}
M.textlsp = {
filetypes = {
"bibtex",
"tex",
"latex",
"gitcommit",
"markdown",
"org",
"restructuredtext",
"rsweave",
"quarto",
"rmd",
"context",
"html",
"xhtml",
},
settings = {
textLSP = {
analysers = {
languagetool = {
enabled = true,
check_text = {
on_open = true,
on_save = true,
on_change = false,
},
},
gramformer = {
-- gramformer dependency needs to be installed manually
enabled = true,
gpu = false,
check_text = {
on_open = false,
on_save = true,
on_change = false,
},
},
hf_checker = {
enabled = false,
gpu = false,
quantize = 32,
model = "pszemraj/flan-t5-large-grammar-synthesis",
min_length = 40,
check_text = {
on_open = false,
on_save = true,
on_change = false,
},
},
hf_instruction_checker = {
enabled = true,
gpu = false,
quantize = 32,
model = "grammarly/coedit-large",
min_length = 40,
check_text = {
on_open = false,
on_save = true,
on_change = false,
},
},
hf_completion = {
enabled = true,
gpu = false,
quantize = 32,
model = "bert-base-multilingual-cased",
topk = 5,
},
-- openai = {
-- enabled = false,
-- api_key = "<MY_API_KEY>",
-- check_text = {
-- on_open = false,
-- on_save = false,
-- on_change = false,
-- },
-- model = "gpt-3.5-turbo",
-- max_token = 16,
-- },
-- grammarbot = {
-- enabled = false,
-- api_key = "<MY_API_KEY>",
-- -- longer texts are split, this parameter sets the maximum number of splits per analysis
-- input_max_requests = 1,
-- check_text = {
-- on_open = false,
-- on_save = false,
-- on_change = false,
-- },
-- },
},
documents = {
-- org = {
-- org_todo_keywords = {
-- "TODO",
-- "IN_PROGRESS",
-- "DONE",
-- },
-- },
txt = {
parse = true,
},
},
},
},
}
-- load secrets
-- the secret module should just return a string with the token
local available, token = require("custom.utils").try_require "custom.secret.languagetool_token"
if available then
M.ltex.languageToolOrg = {
apiKey = token,
username = "accounts@cscherr.de",
languageToolHttpServerUrl = "https://api.languagetoolplus.com/v2/",
}
M.ltex.languageToolHttpServerUrl = "https://api.languagetoolplus.com/v2/"
end
return M

View File

@ -0,0 +1,8 @@
return {
{
'neovim/nvim-lspconfig',
config = function()
require "custom.plugins.configs.lsp"
end,
},
}

View File

@ -11,7 +11,6 @@ return {
{ '<leader>tf', '<cmd> NvimTreeToggle <cr>', desc = '[T]oggle [F]ile explorer' }, { '<leader>tf', '<cmd> NvimTreeToggle <cr>', desc = '[T]oggle [F]ile explorer' },
}, },
}, },
{ {
'ggandor/leap.nvim', 'ggandor/leap.nvim',
lazy = false, lazy = false,
@ -33,7 +32,6 @@ return {
}, },
{ {
'kdheepak/lazygit.nvim', 'kdheepak/lazygit.nvim',
lazy = false,
keys = { '<leader>gg' }, keys = { '<leader>gg' },
cmd = 'LazyGit', cmd = 'LazyGit',
-- optional for floating window border decoration -- optional for floating window border decoration
@ -48,12 +46,11 @@ return {
mode = { 'n', 'v' }, mode = { 'n', 'v' },
[';'] = { name = '+telescope' }, [';'] = { name = '+telescope' },
[';f'] = { name = '+find' }, [';f'] = { name = '+find' },
[';d'] = { name = '+lsp/todo' },
['g'] = { name = '+goto' }, ['g'] = { name = '+goto' },
[']'] = { name = '+next' }, [']'] = { name = '+next' },
['['] = { name = '+prev' }, ['['] = { name = '+prev' },
['<leader>x'] = { name = '+diagnostics/quickfix' }, ['<leader>d'] = { name = '+lsp/debug' },
['<leader>d'] = { name = '+debug' }, ['<leader>r'] = { name = '+diagnostics/quickfix' },
['<leader>c'] = { name = '+code' }, ['<leader>c'] = { name = '+code' },
['<leader>g'] = { name = '+git' }, ['<leader>g'] = { name = '+git' },
['<leader>t'] = { name = '+toggle/tools' }, ['<leader>t'] = { name = '+toggle/tools' },