From ab3a1303514ec34149ec9086760f58de72e2279b Mon Sep 17 00:00:00 2001 From: Rokas Puzonas Date: Mon, 1 Nov 2021 18:23:39 +0200 Subject: [PATCH] feat: add nvim-lsputils --- lua/config/cmp.lua | 2 +- lua/config/fugitive.lua | 2 +- lua/config/lspsignature.lua | 3 ++- lua/config/lsputils.lua | 43 +++++++++++++++++++++++++++++++++++++ lua/plugins.lua | 9 +++++++- 5 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 lua/config/lsputils.lua diff --git a/lua/config/cmp.lua b/lua/config/cmp.lua index cf582ce..24df2b6 100644 --- a/lua/config/cmp.lua +++ b/lua/config/cmp.lua @@ -5,7 +5,7 @@ lspkind.init() local cmp = require('cmp') local luasnip = require("luasnip") -local has_words_before = function() +local function has_words_before() local line, col = unpack(vim.api.nvim_win_get_cursor(0)) return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil end diff --git a/lua/config/fugitive.lua b/lua/config/fugitive.lua index 1a502bb..da0ce8d 100644 --- a/lua/config/fugitive.lua +++ b/lua/config/fugitive.lua @@ -1,3 +1,3 @@ local map = require 'utils.map' -map('n', 'g', ':G', { silent = true }) +map('n', 'gg', ':G', { silent = true }) diff --git a/lua/config/lspsignature.lua b/lua/config/lspsignature.lua index 7f05ca4..122669c 100644 --- a/lua/config/lspsignature.lua +++ b/lua/config/lspsignature.lua @@ -1,3 +1,4 @@ require "lsp_signature".setup{ - hint_enable = false + hint_enable = false, + toggle_key = '' } diff --git a/lua/config/lsputils.lua b/lua/config/lsputils.lua new file mode 100644 index 0000000..dc91e60 --- /dev/null +++ b/lua/config/lsputils.lua @@ -0,0 +1,43 @@ +if vim.fn.has('nvim-0.5.1') == 1 then + vim.lsp.handlers['textDocument/codeAction'] = require'lsputil.codeAction'.code_action_handler + vim.lsp.handlers['textDocument/references'] = require'lsputil.locations'.references_handler + vim.lsp.handlers['textDocument/definition'] = require'lsputil.locations'.definition_handler + vim.lsp.handlers['textDocument/declaration'] = require'lsputil.locations'.declaration_handler + vim.lsp.handlers['textDocument/typeDefinition'] = require'lsputil.locations'.typeDefinition_handler + vim.lsp.handlers['textDocument/implementation'] = require'lsputil.locations'.implementation_handler + vim.lsp.handlers['textDocument/documentSymbol'] = require'lsputil.symbols'.document_handler + vim.lsp.handlers['workspace/symbol'] = require'lsputil.symbols'.workspace_handler +else + local bufnr = vim.api.nvim_buf_get_number(0) + vim.lsp.handlers['textDocument/codeAction'] = function(_, _, actions) + require('lsputil.codeAction').code_action_handler(nil, actions, nil, nil, nil) + end + + vim.lsp.handlers['textDocument/references'] = function(_, _, result) + require('lsputil.locations').references_handler(nil, result, { bufnr = bufnr }, nil) + end + + vim.lsp.handlers['textDocument/definition'] = function(_, method, result) + require('lsputil.locations').definition_handler(nil, result, { bufnr = bufnr, method = method }, nil) + end + + vim.lsp.handlers['textDocument/declaration'] = function(_, method, result) + require('lsputil.locations').declaration_handler(nil, result, { bufnr = bufnr, method = method }, nil) + end + + vim.lsp.handlers['textDocument/typeDefinition'] = function(_, method, result) + require('lsputil.locations').typeDefinition_handler(nil, result, { bufnr = bufnr, method = method }, nil) + end + + vim.lsp.handlers['textDocument/implementation'] = function(_, method, result) + require('lsputil.locations').implementation_handler(nil, result, { bufnr = bufnr, method = method }, nil) + end + + vim.lsp.handlers['textDocument/documentSymbol'] = function(_, _, result, _, bufn) + require('lsputil.symbols').document_handler(nil, result, { bufnr = bufn }, nil) + end + + vim.lsp.handlers['textDocument/symbol'] = function(_, _, result, _, bufn) + require('lsputil.symbols').workspace_handler(nil, result, { bufnr = bufn }, nil) + end +end diff --git a/lua/plugins.lua b/lua/plugins.lua index f70f939..2fa3c3b 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -80,7 +80,7 @@ local function usePlugins(use, use_rocks) -- Movement utilities use 'tpope/vim-unimpaired' - -- LSP config + -- LSP use { 'neovim/nvim-lspconfig', config = [[require 'config.lspconfig']], @@ -91,6 +91,13 @@ local function usePlugins(use, use_rocks) config = [[require 'config.lspinstaller']] } + -- LSP utils + use { + 'RishabhRD/nvim-lsputils', + config = [[require 'config.lsputils']], + requires = 'RishabhRD/popfix' + } + -- Completion use { 'onsails/lspkind-nvim' } use {