diff --git a/lua/config/cmp.lua b/lua/config/cmp.lua new file mode 100644 index 0000000..7651025 --- /dev/null +++ b/lua/config/cmp.lua @@ -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 ???? + [""] = 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"} + }) +} + +return M + diff --git a/lua/config/lspconfig.lua b/lua/config/lspconfig.lua index 8ba0281..b700cb9 100644 --- a/lua/config/lspconfig.lua +++ b/lua/config/lspconfig.lua @@ -1,56 +1,22 @@ -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 mason = require("mason") +local mason_lspconfig = require("mason-lspconfig") +local lspconfig = require("lspconfig") +local cmp_cap = require("config.cmp").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 = ' ' -} +mason.setup() -require("fidget").setup({}) -require("mason").setup() -require("mason-lspconfig").setup({ - automatic_enable = true, +mason_lspconfig.setup({ ensure_installed = { - "lua_ls", "rust_analyzer", "jdtls", "yamlls", "ts_ls", "tailwindcss", - "html", "cssls" + "rust_analyzer", "jdtls", "yamlls", "ts_ls", "tailwindcss", "html", + "cssls" }, handlers = { - function(server_name) -- default handler (optional) - require("lspconfig")[server_name].setup { - capabilities = capabilities - } + function(server_name) + lspconfig[server_name].setup({capabilities = cmp_cap}) end, - zls = function() - local lspconfig = require("lspconfig") lspconfig.zls.setup({ - capabilities = capabilities, + capabilities = cmp_cap, root_dir = lspconfig.util.root_pattern(".git", "build.zig", "zls.json"), settings = { @@ -63,80 +29,30 @@ require("mason-lspconfig").setup({ }) 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"} - }) -} +lspconfig.lua_ls.setup({ + capabilities = cmp_cap, + settings = { + Lua = { + runtime = {version = "LuaJIT"}, + diagnostics = { + globals = { + "vim", "bit", "it", "describe", "before_each", "after_each" + } + }, + workspace = { + checkThirdParty = false, + library = {vim.env.VIMRUNTIME} + }, + telemetry = {enable = false} + } + } +}) vim.diagnostic.config({ - -- update_in_insert = true, virtual_text = true, float = { focusable = false, @@ -152,10 +68,3 @@ 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 diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua index b5fb4f4..53a1340 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -7,7 +7,7 @@ return { "sbdchd/neoformat", init = function() vim.cmd("source" .. vim.fn.stdpath "config" .. - "/lua/config/neoformat.vim") + "/lua/config/neoformat.vim") end }, { "rachartier/tiny-inline-diagnostic.nvim",