lua_ls works on NixOS now

This commit is contained in:
Aram Markarov
2026-01-26 23:49:31 +01:00
parent 089c0040ce
commit 8e409e0535
3 changed files with 122 additions and 121 deletions
+92
View File
@@ -0,0 +1,92 @@
local cmp = require("cmp")
local cmp_lsp = require("cmp_nvim_lsp")
local M = {}
M.capabilities = vim.tbl_deep_extend(
"force",
{},
vim.lsp.protocol.make_client_capabilities(),
cmp_lsp.default_capabilities()
)
local cmp_kinds = {
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 = ''
}
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"}
})
}
return M
+27 -118
View File
@@ -1,56 +1,22 @@
local cmp = require("cmp") local mason = require("mason")
local cmp_lsp = require("cmp_nvim_lsp") local mason_lspconfig = require("mason-lspconfig")
local capabilities = vim.tbl_deep_extend("force", {}, vim.lsp.protocol local lspconfig = require("lspconfig")
.make_client_capabilities(), local cmp_cap = require("config.cmp").capabilities
cmp_lsp.default_capabilities())
local cmp_kinds = { -- change later mason.setup()
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({}) mason_lspconfig.setup({
require("mason").setup()
require("mason-lspconfig").setup({
automatic_enable = true,
ensure_installed = { ensure_installed = {
"lua_ls", "rust_analyzer", "jdtls", "yamlls", "ts_ls", "tailwindcss", "rust_analyzer", "jdtls", "yamlls", "ts_ls", "tailwindcss", "html",
"html", "cssls" "cssls"
}, },
handlers = { handlers = {
function(server_name) -- default handler (optional) function(server_name)
require("lspconfig")[server_name].setup { lspconfig[server_name].setup({capabilities = cmp_cap})
capabilities = capabilities
}
end, end,
zls = function() zls = function()
local lspconfig = require("lspconfig")
lspconfig.zls.setup({ lspconfig.zls.setup({
capabilities = capabilities, capabilities = cmp_cap,
root_dir = lspconfig.util.root_pattern(".git", "build.zig", root_dir = lspconfig.util.root_pattern(".git", "build.zig",
"zls.json"), "zls.json"),
settings = { settings = {
@@ -63,80 +29,30 @@ require("mason-lspconfig").setup({
}) })
vim.g.zig_fmt_parse_errors = 0 vim.g.zig_fmt_parse_errors = 0
vim.g.zig_fmt_autosave = 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 end
} }
}) })
cmp.setup { lspconfig.lua_ls.setup({
formatting = { capabilities = cmp_cap,
fields = {'kind', 'abbr'}, settings = {
format = function(entry, vim_item) Lua = {
vim_item.kind = cmp_kinds[vim_item.kind] or '' runtime = {version = "LuaJIT"},
if entry.completion_item.detail then diagnostics = {
vim_item.menu = entry.completion_item.detail globals = {
end "vim", "bit", "it", "describe", "before_each", "after_each"
return vim_item }
end
}, },
completion = {completeopt = "menu,menuone"}, workspace = {
snippet = { checkThirdParty = false,
expand = function(args) require("luasnip").lsp_expand(args.body) end library = {vim.env.VIMRUNTIME}
}, },
mapping = { -- change later zach is ???? telemetry = {enable = false}
["<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({ vim.diagnostic.config({
-- update_in_insert = true,
virtual_text = true, virtual_text = true,
float = { float = {
focusable = false, focusable = false,
@@ -152,10 +68,3 @@ vim.api.nvim_set_keymap("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>",
{noremap = true, silent = true}) {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", vim.api.nvim_set_keymap("n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>",
{noremap = true, silent = true}) {noremap = true, silent = true})
local lspconfig = require "lspconfig"
-- EXAMPLE
local servers = {}
for _, server in ipairs(servers) do lspconfig[server].setup {} end