diff options
Diffstat (limited to 'after/plugin/lsp.lua')
| -rw-r--r-- | after/plugin/lsp.lua | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua deleted file mode 100644 index c806032..0000000 --- a/after/plugin/lsp.lua +++ /dev/null @@ -1,125 +0,0 @@ -local lsp = require('lsp-zero').preset({}) - --- @notes on Lsp and Cmp configs here: ---[[ - -# LSP -1. Renamed the keymaps to what I use -2. Added a custom handler for formatting files. - It checks the explicitly defined language servers passed and if they allow formatting, only then will it attempt - to format the buffer -3. Since python lsp does not come with formatting, we need to handle that separately - -## Formatting -1. This is handled in 2 ways: - a. By the lsp using vlf (for vl(LSP)f(Format)) - b. By some tool, then defined in the specific language server by using vcf (for vc(Custom)f(Format) - -# Complete -Completion is done by nvim-cmp. The setup for that does a few things. -1. Defines the sources to use for autocompletion: - a. LSP server - b. nvim-lua: only active in lua file I think - c. buffer: uses the current file for auto-completion (similar to default nvim behavior) -2. By default it pops up a list for auto-completion, we have that disabled. -3. When having auto-complete disabled, it takes extra steps to trigger autocomplete, due - to this we need to have it preselect the first item upon triggering autocomplete. -4. We define some custom mappings ---]] - -local function allow_format(servers) - return function(client) return vim.tbl_contains(servers, client.name) end -end - -lsp.on_attach(function(client, bufnr) - -- see :help lsp-zero-keybindings - -- to learn the available actions - local opts = {buffer = bufnr, remap = false} - vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) - vim.keymap.set("n", "gD", function() vim.lsp.buf.declaration() end, opts) - vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts) - vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts) - vim.keymap.set("n", "<leader>vd", function() vim.diagnostic.open_float() end, opts) - vim.keymap.set("n", "[d", function() vim.diagnostic.goto_prev() end, opts) - vim.keymap.set("n", "]d", function() vim.diagnostic.goto_next() end, opts) - vim.keymap.set("n", "<leader>vca", function() vim.lsp.buf.code_action() end, opts) - vim.keymap.set("n", "<leader>vrr", function() vim.lsp.buf.references() end, opts) - vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() end, opts) - vim.keymap.set("n", "<leader>vlf", function() - vim.lsp.buf.format({ - async = false, - timeout_ms = 10000, - filter = allow_format({'rust_analyzer', 'tsserver', 'gopls', 'clangd', 'html-lsp'}), - }) - end, opts) - vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts) -end) - - --- specific setup for python as it's lsp does not come with formatting -require('lspconfig').pyright.setup({ - single_file_support = false, - on_attach = function(_, bufnr) - local opts = {buffer = bufnr, remap = false} - vim.keymap.set({'n', 'x'}, '<leader>vcf', function() - local filename = GetCurrFileName() - vim.cmd(":silent !autopep8 -i " .. filename) - vim.cmd(":silent !isort " .. filename) - end, opts) - end, -}) - -require('lspconfig').lua_ls.setup({ - settings = { - Lua = { - diagnostics = { - globals = { 'vim' } - } - } - } -}) - -lsp.setup() - --- @todo: Look at luasnip and why I would require it - -local cmp = require('cmp') -local cmp_action = require('lsp-zero').cmp_action() - -cmp.setup({ - sources = { - { name = 'nvim_lsp' }, - { name = 'nvim_lua' }, - { name = 'buffer' }, - }, - preselect = 'item', - completion = { - autocomplete = false, - completeopt = 'menu,menuone,noinsert' - }, - mapping = cmp.mapping.preset.insert({ - -- Ctrl+Space to trigger completion menu - ['<C-Space>'] = cmp.mapping.complete(), - - -- Navigate between snippet placeholder - -- @note: don't know what this is - ['<C-f>'] = cmp_action.luasnip_jump_forward(), - ['<C-b>'] = cmp_action.luasnip_jump_backward(), - - -- Scroll up and down in the completion documentation - ['<C-u>'] = cmp.mapping.scroll_docs(-4), - ['<C-d>'] = cmp.mapping.scroll_docs(4), - }), - snippet = { - expand = function(args) - require('luasnip').lsp_expand(args.body) - end, - }, -}) - ---cmp.setup.filetype({ 'sql' }, { --- sources = { --- { name = 'vim-dadbod-completion' }, --- { name = 'buffer'}, --- }, ---}) |
