From d3483449381b6a7ee4e62e352c699c63ddaab33a Mon Sep 17 00:00:00 2001 From: Alex NeonXP Date: Sun, 18 Feb 2024 15:18:56 +0300 Subject: =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B8=20nvim?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nvim/lua/lsp.lua | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 nvim/lua/lsp.lua (limited to 'nvim/lua/lsp.lua') diff --git a/nvim/lua/lsp.lua b/nvim/lua/lsp.lua new file mode 100644 index 0000000..468ea71 --- /dev/null +++ b/nvim/lua/lsp.lua @@ -0,0 +1,65 @@ + +local cmp = require('cmp') + +local source_mapping = { + buffer = '[Buffer]', + nvim_lsp = '[LSP]', + nvim_lua = '[Lua]', + cmp_tabnine = '[TN]', + path = '[Path]', +} + +cmp.setup({ + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.confirm({ select = true }), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + }), + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + formatting = { + format = function(entry, vim_item) + local menu = source_mapping[entry.source.name] + vim_item.menu = menu + return vim_item + end + }, + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, { + { name = 'buffer' }, + }) +}) + +-- инициализация LSP для различных ЯП +local lspconfig = require('lspconfig') +local util = require('lspconfig/util') + +local function config(_config) + return vim.tbl_deep_extend('force', { + capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()), + }, _config or {}) +end + +-- иницализация gopls LSP для Go +-- https://github.com/golang/tools/blob/master/gopls/doc/vim.md#neovim-install +lspconfig.gopls.setup(config({ + on_attach = on_attach, + cmd = { 'gopls', 'serve' }, + filetypes = { 'go', 'go.mod' }, + root_dir = util.root_pattern('go.work', 'go.mod', '.git'), + settings = { + gopls = { + analyses = { + unusedparams = true, + shadow = true, + }, + staticcheck = true, + } + } +})) -- cgit v1.2.3