From 36fbad0d9cb52bde2d5818f0c2946c56d6399cd6 Mon Sep 17 00:00:00 2001 From: Aram Markarov Date: Sat, 30 Aug 2025 20:14:23 +0200 Subject: [PATCH] lspconfig setup --- coc-settings.json | 11 --- lazy-lock.json | 12 ++- lua/config/autopairs.lua | 16 +--- lua/config/lspconfig.lua | 166 +++++++++++++++++++++++++++++++++ lua/plugins/init.lua | 22 ++++- pack/nvim/start/nvim-lspconfig | 1 - 6 files changed, 196 insertions(+), 32 deletions(-) delete mode 100644 coc-settings.json create mode 100644 lua/config/lspconfig.lua delete mode 160000 pack/nvim/start/nvim-lspconfig diff --git a/coc-settings.json b/coc-settings.json deleted file mode 100644 index c7b7285..0000000 --- a/coc-settings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "languageserver": { - "hyprlang": { - "command": "hyprls", - "filetypes": ["hyprlang"] - } - }, - "git.addedSign.hlGroup": "GitGutterAdd", - "git.changedSign.hlGroup": "GitGutterChange", - "git.removedSign.hlGroup": "GitGutterDelete", -} diff --git a/lazy-lock.json b/lazy-lock.json index 4eb2b98..7ae2871 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,18 +1,28 @@ { + "LuaSnip": { "branch": "master", "commit": "de10d8414235b0a8cabfeba60d07c24304e71f5c" }, "auto-session": { "branch": "main", "commit": "3b5d8947cf16ac582ef00443ede4cdd3dfa23af9" }, "base46-colors": { "branch": "main", "commit": "131ca742f6e8d1eb4c938a2519a94840ba129c2f" }, "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, - "coc.nvim": { "branch": "release", "commit": "89425920ef943a20e56072665f4be33d8f320ddf" }, + "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, + "cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" }, + "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, + "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, "copilot.lua": { "branch": "master", "commit": "e73fe7c43c68aeb84fbeed12ee6cc60a29e78fbb" }, "cord.nvim": { "branch": "master", "commit": "7b53b161caaed7a9ee19a68838c9db5f4c8ebc39" }, + "fidget.nvim": { "branch": "main", "commit": "4d5858bd4c471c895060e1b9f3575f1551184dc5" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, "lightline-gruvbox.vim": { "branch": "master", "commit": "d233416d566e61f879bd19d9d498b01b1b7e336c" }, "lua-utils.nvim": { "branch": "main", "commit": "e565749421f4bbb5d2e85e37c3cef9d56553d8bd" }, "lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "5e085efe67fccb13372d54331d849219662a7e93" }, + "mason.nvim": { "branch": "main", "commit": "7dc4facca9702f95353d5a1f87daf23d78e31c2a" }, "neorg": { "branch": "main", "commit": "e206c9642f4a115cd836e76c98ef785623d335bc" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" }, + "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, "nvim-dap": { "branch": "master", "commit": "7891b01beedc37cef4eaf2e92563bd0a5b6e9c58" }, + "nvim-lspconfig": { "branch": "master", "commit": "408cf07b97535825cca6f1afa908d98348712ba6" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, "nvim-notify": { "branch": "master", "commit": "397c7c1184745fca649e5104de659e6392ef5a4d" }, "nvim-tree.lua": { "branch": "master", "commit": "fefa335f1c8f690eb668a1efd18ee4fc6d64cd3e" }, diff --git a/lua/config/autopairs.lua b/lua/config/autopairs.lua index c84fbfa..7d73a0a 100644 --- a/lua/config/autopairs.lua +++ b/lua/config/autopairs.lua @@ -1,17 +1,3 @@ -local remap = vim.api.nvim_set_keymap local npairs = require('nvim-autopairs') -npairs.setup({map_cr=false}) - --- skip it, if you use another global object -_G.MUtils= {} - -MUtils.completion_confirm=function() - if vim.fn["coc#pum#visible"]() ~= 0 then - return vim.fn["coc#pum#confirm"]() - else - return npairs.autopairs_cr() - end -end - -remap('i' , '','v:lua.MUtils.completion_confirm()', {expr = true , noremap = true}) +npairs.setup({}) diff --git a/lua/config/lspconfig.lua b/lua/config/lspconfig.lua new file mode 100644 index 0000000..c06cb43 --- /dev/null +++ b/lua/config/lspconfig.lua @@ -0,0 +1,166 @@ +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", + "gopls", + }, + 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 = "", + }, +}) + +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 c174b68..eeb4dda 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -1,4 +1,22 @@ return { + { + "neovim/nvim-lspconfig", + dependencies = { + "williamboman/mason.nvim", + "williamboman/mason-lspconfig.nvim", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "hrsh7th/cmp-cmdline", + "hrsh7th/nvim-cmp", + "L3MON4D3/LuaSnip", + "saadparwaiz1/cmp_luasnip", + "j-hui/fidget.nvim", + }, + config = function() + require("config.lspconfig") + end, + }, { "nvim-neorg/neorg", lazy = false, @@ -24,10 +42,6 @@ return { require("config.autosession") end, }, - { - "neoclide/coc.nvim", - branch = 'release', - }, { "olimorris/onedarkpro.nvim", config = function() diff --git a/pack/nvim/start/nvim-lspconfig b/pack/nvim/start/nvim-lspconfig deleted file mode 160000 index 408cf07..0000000 --- a/pack/nvim/start/nvim-lspconfig +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 408cf07b97535825cca6f1afa908d98348712ba6