Added nvim config

This commit is contained in:
2023-11-22 15:57:19 +01:00
parent bb149aea3a
commit fce1a21447
24 changed files with 556 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
return {
"neovim/nvim-lspconfig",
dependencies = {
"hrsh7th/cmp-nvim-lsp",
"onsails/lspkind.nvim",
},
config = function()
local lspconfig = require("lspconfig")
local cmp_nvim_lsp = require("cmp_nvim_lsp")
local wk = require("which-key")
local capabilities = cmp_nvim_lsp.default_capabilities()
lspconfig["lua_ls"].setup({
capabilities = capabilities,
settings = { -- custom settings for lua
Lua = {
-- make the language server recognize "vim" global
diagnostics = {
globals = { "vim" },
},
workspace = {
-- make language server aware of runtime files
library = {
[vim.fn.expand("$VIMRUNTIME/lua")] = true,
[vim.fn.stdpath("config") .. "/lua"] = true,
},
},
},
},
})
lspconfig["pyright"].setup({
capabilities = capabilities,
filetypes = { "python" },
})
lspconfig["clangd"].setup({
capabilities = capabilities,
})
lspconfig["marksman"].setup({
capabilities = capabilities,
})
lspconfig["texlab"].setup({
capabilities = capabilities,
})
wk.register({
l = {
name = "lsp",
r = { "<cmd>Telescope lsp_references<CR>", "Show references" },
D = { "<cmd>lua vim.lsp.buf.defenition()<CR>", "Show defenition" },
c = { "<cmd>lua vim.lsp.buf.code_action()<CR>", "Code actions" },
R = { "<cmd>lua vim.lsp.buf.rename()<CR>", "Smart rename" },
d = { "<cmd>Telescope diagnostics bufnr=0<CR>", "Diagnostics" },
l = { "<cmd>lua vim.lsp.buf.open_float()<CR>", "Line Diagnostics" },
n = { "<cmd>lua vim.diagnostics.goto_next()<CR>", "Go to next Diagnostic" },
p = { "<cmd>lua vim.diagnostics.goto_prev()<CR>", "Go to previous Diagnostic" },
i = { "<cmd>lua vim.lsp.buf.hover()<CR>", "Show documentation" },
L = { "<cmd>LspRestart<CR>", "Restart LSP" },
},
}, { prefix = "<leader>" })
end,
}

View File

@@ -0,0 +1,37 @@
return {
"williamboman/mason.nvim",
dependencies = {
"williamboman/mason-lspconfig.nvim",
"WhoIsSethDaniel/mason-tool-installer.nvim",
},
config = function()
local mason = require("mason")
local mason_lspconfig = require("mason-lspconfig")
local mason_tool_installer = require("mason-tool-installer")
mason.setup()
mason_lspconfig.setup({
ensure_installed = {
"lua_ls",
"pyright",
"clangd",
"marksman",
"texlab",
},
})
mason_tool_installer.setup({
ensure_installed = {
"mypy",
"ruff",
"black",
"clang-format",
"stylua",
"prettier",
"vale",
"latexindent",
},
})
end,
}

View File

@@ -0,0 +1,52 @@
return {
"nvimtools/none-ls.nvim",
dependencies = {
"jay-babu/mason-null-ls.nvim",
},
config = function()
local mason_null_ls = require("mason-null-ls")
local null_ls = require("null-ls")
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
local formatting = null_ls.builtins.formatting
local diagnostics = null_ls.builtins.diagnostics
mason_null_ls.setup()
null_ls.setup({
debug = true,
sources = {
formatting.stylua,
formatting.black,
formatting.clang_format,
formatting.prettier,
formatting.latexindent,
diagnostics.mypy.with({
extra_args = function()
local virtual = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX") or "/usr"
return { "--python-executable", virtual .. "/bin/python3" }
end,
}),
diagnostics.ruff,
diagnostics.vale,
},
on_attach = function(current_client, bufnr)
if current_client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr,
callback = function()
vim.lsp.buf.format({
filter = function(client)
-- only use null-ls for formatting instead of lsp server
return client.name == "null-ls"
end,
bufnr = bufnr,
})
end,
})
end
end,
})
end,
}