From a9430e56a302a66d57fa3f7af80a74e6d037bd2c Mon Sep 17 00:00:00 2001 From: Ariel D'Alessandro Date: Sun, 13 Feb 2022 17:53:07 +0100 Subject: more refactor --- after/plugin/lsp.lua | 49 ++++++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 19 deletions(-) (limited to 'after/plugin') diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua index 40a56d6..53d9746 100644 --- a/after/plugin/lsp.lua +++ b/after/plugin/lsp.lua @@ -1,29 +1,40 @@ -local function on_attach() +local telescope_mapper = require "alpha.telescope.mappings" + +local filetype_attach = setmetatable({ + go = function(_) + vim.cmd [[ + augroup lsp_buf_format + au! BufWritePre + autocmd BufWritePre :lua vim.lsp.buf.formatting_sync() + augroup END + ]] + end, +}, { + __index = function() + return function() end + end, +}) + +local function on_attach(client) + local filetype = vim.api.nvim_buf_get_option(0, "filetype") -- keymaps for lsp - vim.api.nvim_set_keymap('n', 'K', ':lua vim.lsp.buf.hover()', {noremap = true}) - vim.api.nvim_set_keymap('n', 'vd', ':lua vim.lsp.buf.definition()', {noremap = true}) + vim.keymap.set("n", "K", vim.lsp.buf.hover, { buffer = 0 }) + vim.keymap.set("n", "", vim.lsp.buf.definition, { buffer = 0 }) + vim.keymap.set("n", "vrn", vim.lsp.buf.rename, { buffer = 0 }) + vim.keymap.set("n", "vf", vim.lsp.buf.formatting, { buffer = 0 }) + vim.keymap.set("n", "vn", vim.lsp.diagnostic.goto_next, { buffer = 0 }) + vim.keymap.set("n", "vp", vim.lsp.diagnostic.goto_prev, { buffer = 0 }) + telescope_mapper("gr", "lsp_references", nil, true) + telescope_mapper("pv", "find_symbol", nil, true) vim.api.nvim_set_keymap('n', 'vo', ':LspRestart', {noremap = true}) - -- diagnostics to move between info and errors - vim.api.nvim_set_keymap('n', 'vn', ':lua vim.lsp.diagnostic.goto_next()', {noremap = true}) - vim.api.nvim_set_keymap('n', 'vp', ':lua vim.lsp.diagnostic.goto_prev()', {noremap = true}) - - - vim.api.nvim_set_keymap('n', 'vca', ':lua vim.lsp.buf.code_action()', {noremap = true}) - vim.api.nvim_set_keymap('n', 'vf', ':lua vim.lsp.buf.formatting()', {noremap = true}) - - vim.api.nvim_set_keymap('n', 'vi', ':lua vim.lsp.buf.implementation()', {noremap = true}) - vim.api.nvim_set_keymap('n', 'vrn', ':lua vim.lsp.buf.rename()', {noremap = true}) - require "lsp_signature".on_attach() - vim.cmd [[au Filetype php setl omnifunc=v:lua.vim.lsp.omnifunc]] - vim.cmd [[autocmd FileType go setlocal omnifunc=v:lua.vim.lsp.omnifunc]] - - vim.g.completion_matching_strategy_list = { 'exact', 'substring', 'fuzzy' } - + vim.bo.omnifunc = "v:lua.vim.lsp.omnifunc" + -- Attach any filetype specific options to the client + filetype_attach[filetype](client) end local lsp_installer = require("nvim-lsp-installer") -- cgit v1.2.3