Files
nvim/lua/config/lspconfig.lua
T
Aram Markarov c18e540835 formatted
2025-12-11 00:21:33 +01:00

162 lines
4.8 KiB
Lua

local cmp = require("cmp")
local cmp_lsp = require("cmp_nvim_lsp")
local capabilities = vim.tbl_deep_extend("force", {}, vim.lsp.protocol
.make_client_capabilities(),
cmp_lsp.default_capabilities())
local cmp_kinds = { -- change later
Text = '',
Method = '',
Function = '',
Constructor = '',
Field = '',
Variable = '',
Class = '',
Interface = '',
Module = '',
Property = '',
Unit = '',
Value = '',
Enum = '',
Keyword = '',
Snippet = '',
Color = '',
File = '',
Reference = '',
Folder = '',
EnumMember = '',
Constant = '',
Struct = '',
Event = '',
Operator = '',
TypeParameter = ''
}
require("fidget").setup({})
require("mason").setup()
require("mason-lspconfig").setup({
automatic_enable = true,
ensure_installed = {
"lua_ls", "rust_analyzer", "jdtls", "yamlls", "ts_ls", "tailwindcss",
"html", "cssls"
},
handlers = {
function(server_name) -- default handler (optional)
require("lspconfig")[server_name].setup {
capabilities = capabilities
}
end,
zls = function()
local lspconfig = require("lspconfig")
lspconfig.zls.setup({
capabilities = capabilities,
root_dir = lspconfig.util.root_pattern(".git", "build.zig",
"zls.json"),
settings = {
zls = {
enable_inlay_hints = true,
enable_snippets = true,
warn_style = true
}
}
})
vim.g.zig_fmt_parse_errors = 0
vim.g.zig_fmt_autosave = 0
end,
["lua_ls"] = function()
local lspconfig = require("lspconfig")
lspconfig.lua_ls.setup {
capabilities = capabilities,
settings = {
Lua = {
runtime = {version = "Lua 5.1"},
diagnostics = {
globals = {
"bit", "vim", "it", "describe", "before_each",
"after_each"
}
}
}
}
}
end
}
})
cmp.setup {
formatting = {
fields = {'kind', 'abbr'},
format = function(entry, vim_item)
vim_item.kind = cmp_kinds[vim_item.kind] or ''
if entry.completion_item.detail then
vim_item.menu = entry.completion_item.detail
end
return vim_item
end
},
completion = {completeopt = "menu,menuone"},
snippet = {
expand = function(args) require("luasnip").lsp_expand(args.body) end
},
mapping = { -- change later zach is ????
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Insert,
select = true
},
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif require("luasnip").expand_or_jumpable() then
require("luasnip").expand_or_jump()
else
fallback()
end
end, {"i", "s"}),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif require("luasnip").jumpable(-1) then
require("luasnip").jump(-1)
else
fallback()
end
end, {"i", "s"})
},
sources = cmp.config.sources({
{name = "path"}, {name = "nvim_lsp"}, {name = "luasnip"}, -- snip snip
{name = "buffer"}, {name = "nvim_lua"}
})
}
vim.diagnostic.config({
-- update_in_insert = true,
virtual_text = true,
float = {
focusable = false,
style = "minimal",
border = "rounded",
source = "always",
header = "",
prefix = ""
}
})
vim.api.nvim_set_keymap("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>",
{noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>",
{noremap = true, silent = true})
local lspconfig = require "lspconfig"
-- EXAMPLE
local servers = {}
for _, server in ipairs(servers) do lspconfig[server].setup {} end