refactor config

This commit is contained in:
Alexander Navarro 2023-02-13 01:53:52 -03:00
commit 4f0e213f4a
155 changed files with 13983 additions and 0 deletions

View file

@ -0,0 +1,160 @@
--[[
LSP Server: code completition, references for variables and other stuff.
Linter: Code rules for consistency.
Formatter: Code style for eye candy.
Debugger: well... a debugger...
--]]
-- FIXME: Refactor this code so it's more readable
local function setup()
local lsp = require("lsp-zero")
local cmp = require("cmp")
local null_ls = require("null-ls")
-- local mason_null_ls = require("mason-null-ls")
lsp.preset("recommended")
lsp.nvim_workspace({
library = vim.api.nvim_get_runtime_file("", true),
})
local cmp_select = { behavior = cmp.SelectBehavior.Select }
lsp.setup_nvim_cmp({
mapping = lsp.defaults.cmp_mappings({
["<C-p>"] = cmp.mapping.select_prev_item(cmp_select),
["<C-n>"] = cmp.mapping.select_next_item(cmp_select),
}),
sources = {
{ name = "path" },
{ name = "nvim_lsp", keyword_length = 3 },
{ name = "luasnip", keyword_length = 2 },
},
})
lsp.set_preferences({
set_lsp_keymaps = false,
})
vim.keymap.set("n", "K", function()
vim.lsp.buf.hover()
end, { desc = "Show lsp info of the symbol under the cursor", silent = true })
vim.keymap.set("n", "gd", function()
vim.lsp.buf.definition()
end, { desc = "Go to definition", silent = true })
vim.keymap.set("n", "gD", function()
vim.lsp.buf.declaration()
end, { desc = "Go to declaration", silent = true })
vim.keymap.set("n", "gi", function()
vim.lsp.buf.implementation()
end, { desc = "Go to implementation", silent = true })
vim.keymap.set("n", "go", function()
vim.lsp.buf.type_definition()
end, { desc = "Go to definition of the type", silent = true })
vim.keymap.set("n", "gr", function()
vim.lsp.buf.references()
end, { desc = "List references in quickfix window", silent = true })
vim.keymap.set("n", "K", function()
vim.lsp.buf.signature_help()
end, { desc = "Show signature", silent = true })
vim.keymap.set("n", "<Leader>lr", function()
vim.lsp.buf.rename()
end, { desc = "Rename all references", silent = true })
vim.keymap.set("n", "<Leader>la", function()
vim.lsp.buf.code_action()
end, { desc = "Code action", silent = true })
vim.keymap.set("n", "<Leader>lj", function()
vim.diagnostic.goto_next()
end, { desc = "Go to next diagnostics", silent = true })
vim.keymap.set("n", "<Leader>lk", function()
vim.diagnostic.goto_prev()
end, { desc = "Go to prev diagnostics", silent = true })
lsp.setup()
local null_linters = null_ls.builtins.diagnostics
local null_formatters = null_ls.builtins.formatting
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
local lsp_formatting = function(bufnr)
vim.lsp.buf.format({
filter = function(client)
-- apply whatever logic you want (in this example, we'll only use null-ls)
return client.name == "null-ls"
end,
bufnr = bufnr,
})
end
null_ls.setup({
on_attach = function(client, bufnr)
if 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()
-- TODO: use this when neovim 8.0 comes out
lsp_formatting(bufnr)
-- vim.lsp.buf.formatting_sync()
end,
})
end
end,
sources = {
-- Linters --
null_linters.eslint_d,
null_linters.gitlint,
null_linters.luacheck,
null_linters.markdownlint,
null_linters.shellcheck,
null_linters.yamllint,
null_linters.todo_comments,
-- Formatters --
null_formatters.blade_formatter,
null_formatters.blue,
null_formatters.fixjson,
null_formatters.phpcsfixer,
null_formatters.prettierd,
null_formatters.shfmt,
null_formatters.sql_formatter,
null_formatters.stylua,
null_formatters.yamlfmt,
},
})
end
return {
"VonHeikemen/lsp-zero.nvim",
config = setup,
requires = {
-- LSP Support
{ "neovim/nvim-lspconfig" },
{ "williamboman/mason.nvim" },
{ "williamboman/mason-lspconfig.nvim" },
-- Autocompletion
{ "hrsh7th/nvim-cmp" },
{ "hrsh7th/cmp-buffer" },
{ "hrsh7th/cmp-path" },
{ "saadparwaiz1/cmp_luasnip" },
{ "hrsh7th/cmp-nvim-lsp" },
{ "hrsh7th/cmp-nvim-lua" },
-- Snippets
{ "L3MON4D3/LuaSnip" },
{ "rafamadriz/friendly-snippets" },
-- Linters and Formatters
{ "jose-elias-alvarez/null-ls.nvim" },
-- { "jayp0521/mason-null-ls.nvim" },
{ "nvim-lua/plenary.nvim" },
},
}