Added nvim config
This commit is contained in:
60
.config/nvim/lua/jirr02/plugins/lsp/lspconfig.lua
Normal file
60
.config/nvim/lua/jirr02/plugins/lsp/lspconfig.lua
Normal 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,
|
||||
}
|
||||
37
.config/nvim/lua/jirr02/plugins/lsp/mason.lua
Normal file
37
.config/nvim/lua/jirr02/plugins/lsp/mason.lua
Normal 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,
|
||||
}
|
||||
52
.config/nvim/lua/jirr02/plugins/lsp/none-ls.lua
Normal file
52
.config/nvim/lua/jirr02/plugins/lsp/none-ls.lua
Normal 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,
|
||||
}
|
||||
Reference in New Issue
Block a user