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 ???? [""] = cmp.mapping.scroll_docs(-4), [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping.complete(), [""] = cmp.mapping.close(), [""] = cmp.mapping.confirm { behavior = cmp.ConfirmBehavior.Insert, select = true }, [""] = 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"}), [""] = 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", "lua vim.lsp.buf.definition()", {noremap = true, silent = true}) vim.api.nvim_set_keymap("n", "gD", "lua vim.lsp.buf.declaration()", {noremap = true, silent = true}) local lspconfig = require "lspconfig" -- EXAMPLE local servers = {} for _, server in ipairs(servers) do lspconfig[server].setup {} end