feat(nvim): add mini plugins, smart open and formatting

This commit is contained in:
fbachus
2025-01-10 02:00:20 +01:00
parent 6e9dd516f1
commit 77cb47e4b5
15 changed files with 418 additions and 277 deletions

View File

@@ -1,63 +1,64 @@
local lsp_zero = require('lsp-zero')
lsp_zero.extend_lspconfig()
------------
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev)
-- integrated by default now?
-- vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
-- vim.keymap.set('n', "]d", vim.diagnostic.goto_next)
-- vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
--vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
--vim.keymap.set('n', '<leader>K', vim.lsp.buf.hover, opts)
--
--vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts)
--vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts)
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
callback = function(ev)
-- Enable completion triggered by <c-x><c-o>
vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
vim.keymap.set('n', "]d", vim.diagnostic.goto_next)
vim.keymap.set('n', '<leader>le', vim.diagnostic.open_float)
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
vim.keymap.set('n', '<leader>rr', vim.lsp.buf.rename, opts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
vim.keymap.set('n', '<leader>K', vim.lsp.buf.hover, opts)
vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts)
vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts)
vim.keymap.set('n', '<leader>i', function()
vim.lsp.buf.format { async = true }
end, opts)
end,
})
-----------------
lsp_zero.on_attach(function(client, bufnr)
-- see :help lsp-zero-keybindings
-- to learn the available actions
lsp_zero.default_keymaps({buffer = bufnr})
end)
require('lspconfig').lua_ls.setup(lsp_zero.nvim_lua_ls())
require('lspconfig').rust_analyzer.setup{
settings = {
['rust-analyzer'] = {
imports = {
granularity = {
group = "module",
},
prefix = "self",
},
cargo = {
buildScripts = {
enable = true,
},
},
procMacro = {
enable = true
},
},
},
}
require('mason').setup({})
require('mason-lspconfig').setup({
-- Replace the language servers listed here
-- with the ones you want to install
ensure_installed = {'rust_analyzer', 'ruff', 'quick_lint_js',
'html', 'cssls', 'lua_ls', 'vimls'},
handlers = {
lsp_zero.default_setup,
},
-- vim.keymap.set("n", "<leader>rr", vim.lsp.buf.rename, opts)
-- vim.keymap.set("n", "<leader>le", vim.diagnostic.open_float)
-- vim.keymap.set("n", "<leader>i", function()
-- require("conform").format({ async = true })
-- -- vim.lsp.buf.format { async = true } -- fallback if without conform
-- end, opts)
end,
})
require("lspconfig").rust_analyzer.setup({
settings = {
["rust-analyzer"] = {
imports = {
granularity = {
group = "module",
},
prefix = "self",
},
cargo = {
buildScripts = {
enable = true,
},
},
procMacro = {
enable = true,
},
},
},
})
require("mason").setup({})
require("mason-lspconfig").setup({
-- Replace the language servers listed here
-- with the ones you want to install
ensure_installed = { "rust_analyzer", "ruff", "quick_lint_js", "html", "cssls", "lua_ls", "vimls" },
})
require("lint").linters_by_ft = {
cpp = { "cpplint" },
gdscript = { "gdtoolkit" },
gitcommit = { "commitlint" },
markdown = {},
python = { "ruff" },
}
require("lint").config = function()
local lint = require("lint")
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
callback = function()
lint.try_lint()
end,
})
end