comparison dot_config/nvim/config.lua @ 368:72e8dd5a4ab5

Clean up LSP peek functions
author Zeger Van de Vannet <zegervdv@me.com>
date Tue, 30 Mar 2021 21:36:24 +0200
parents f0a89299e854
children 5ffb0fd7b98d
comparison
equal deleted inserted replaced
367:f0a89299e854 368:72e8dd5a4ab5
86 'zegervdv/nrpattern.nvim', 86 'zegervdv/nrpattern.nvim',
87 requires = 'tpope/vim-repeat', 87 requires = 'tpope/vim-repeat',
88 config = function () 88 config = function ()
89 local nrpattern = require"nrpattern" 89 local nrpattern = require"nrpattern"
90 local defaults = require"nrpattern.default" 90 local defaults = require"nrpattern.default"
91
92 defaults[{"input", "output"}] = {
93 priority = 12,
94 filetypes = {"verilog", "systemverilog"},
95 }
96 defaults[{"'1", "'0"}] = {
97 priority = 9,
98 filetypes = {"verilog", "systemverilog"},
99 }
91 100
92 nrpattern.setup(defaults) 101 nrpattern.setup(defaults)
93 end, 102 end,
94 } 103 }
95 104
120 documentation = true; 129 documentation = true;
121 130
122 source = { 131 source = {
123 path = true; 132 path = true;
124 buffer = true; 133 buffer = true;
125 calc = true;
126 nvim_lsp = true; 134 nvim_lsp = true;
127 nvim_lua = true; 135 nvim_lua = true;
128 spell = true; 136 spell = true;
129 ultisnips = true; 137 ultisnips = true;
130 -- TODO add vsnip for LSP snippets 138 -- TODO add vsnip for LSP snippets
294 direction = 'horizontal', 302 direction = 'horizontal',
295 } 303 }
296 end, 304 end,
297 } 305 }
298 306
307 -- Filetypes
308 use {'Glench/Vim-Jinja2-Syntax'}
309
299 end) 310 end)
300 end 311 end
301 312
302 -- This came from https://github.com/tjdevries/config_manager/blob/master/xdg_config/nvim/lua/lsp_config.lua 313 -- This came from https://github.com/tjdevries/config_manager/blob/master/xdg_config/nvim/lua/lsp_config.lua
303 local mapper = function(mode, key, result, noremap) 314 local mapper = function(mode, key, result, noremap)
365 disable = {}, 376 disable = {},
366 updatetime = 25, 377 updatetime = 25,
367 persist_queries = false 378 persist_queries = false
368 } 379 }
369 } 380 }
370
371 local chain_complete_list = {
372 default = {
373 default = {
374 {complete_items = {'lsp'}},
375 {complete_items = {'lsp', 'snippet', 'ts', 'buffer'}},
376 {complete_items = {'path'}, triggered_only = {'/'}},
377 {complete_items = {'ts'}},
378 },
379 string = {
380 {complete_items = {'path'}, triggered_only = {'/'}},
381 },
382 comment = {},
383 }
384 }
385
386 -- Copied and modified from https://github.com/chengzeyi/.vim_runtime/blob/8a47981c81d31f88d1138211908e58fd58e4decc/lua/lsp_ext.lua
387
388 function preview_location(location, context, before_context)
389 -- location may be LocationLink or Location (more useful for the former)
390 context = context or 15
391 before_context = before_context or 0
392 local uri = location.targetUri or location.uri
393 if uri == nil then
394 return
395 end
396 local bufnr = vim.uri_to_bufnr(uri)
397 if not vim.api.nvim_buf_is_loaded(bufnr) then
398 vim.fn.bufload(bufnr)
399 end
400 local range = location.targetRange or location.range
401 local contents =
402 vim.api.nvim_buf_get_lines(bufnr, range.start.line - before_context, range['end'].line + 1 + context, false)
403 local filetype = vim.api.nvim_buf_get_option(bufnr, 'filetype')
404 return vim.lsp.util.open_floating_preview(contents, filetype)
405 end
406
407 function preview_location_callback(_, method, result)
408 local context = 15
409 if result == nil or vim.tbl_isempty(result) then
410 return nil
411 end
412 if vim.tbl_islist(result) then
413 preview_location(result[1], context, 5)
414 else
415 preview_location(result, context, 5)
416 end
417 end
418
419 function peek_declaration()
420 local params = vim.lsp.util.make_position_params()
421 return vim.lsp.buf_request(0, 'textDocument/declaration', params, preview_location_callback)
422 end
423
424 function peek_definition()
425 local params = vim.lsp.util.make_position_params()
426 return vim.lsp.buf_request(0, 'textDocument/definition', params, preview_location_callback)
427 end
428
429 function peek_type_definition()
430 local params = vim.lsp.util.make_position_params()
431 return vim.lsp.buf_request(0, 'textDocument/typeDefinition', params, preview_location_callback)
432 end
433
434 function peek_implementation()
435 local params = vim.lsp.util.make_position_params()
436 return vim.lsp.buf_request(0, 'textDocument/implementation', params, preview_location_callback)
437 end
438 381
439 local on_attach = function(client) 382 local on_attach = function(client)
440 mapper('n', '<CR>', '<cmd>lua require"lspsaga.diagnostic".show_line_diagnostics()<CR>') 383 mapper('n', '<CR>', '<cmd>lua require"lspsaga.diagnostic".show_line_diagnostics()<CR>')
441 mapper('n', 'gd', '<cmd>lua vim.lsp.buf.declaration()<CR>') 384 mapper('n', 'gd', '<cmd>lua vim.lsp.buf.declaration()<CR>')
442 mapper('n', '<c-]>', '<cmd>lua vim.lsp.buf.definition()<CR>') 385 mapper('n', '<c-]>', '<cmd>lua vim.lsp.buf.definition()<CR>')
447 mapper('n', 'tgr', "<cmd>lua require'telescope.builtin'.lsp_references()<CR>") 390 mapper('n', 'tgr', "<cmd>lua require'telescope.builtin'.lsp_references()<CR>")
448 mapper('n', 'g0', '<cmd>lua vim.lsp.buf.document_symbol()<CR>') 391 mapper('n', 'g0', '<cmd>lua vim.lsp.buf.document_symbol()<CR>')
449 mapper('i', '<c-l>', '<cmd>lua vim.lsp.buf.signature_help()<CR>') 392 mapper('i', '<c-l>', '<cmd>lua vim.lsp.buf.signature_help()<CR>')
450 mapper('n', '<leader>f', '<cmd>lua vim.lsp.buf.code_action()<CR>') 393 mapper('n', '<leader>f', '<cmd>lua vim.lsp.buf.code_action()<CR>')
451 mapper('n', '<c-p>', '<cmd>lua vim.lsp.buf.formatting()<CR>') 394 mapper('n', '<c-p>', '<cmd>lua vim.lsp.buf.formatting()<CR>')
452 mapper("n", "gp", "<cmd>lua peek_definition()<CR>") 395 mapper("n", "gp", "<cmd>lua require'lspsaga.provider'.preview_definition()<CR>")
453 -- mapper("n", "gp", "<cmd>lua require'lspsaga.provider'.preview_definition()<CR>")
454 end 396 end
455 397
456 398
457 vim.lsp.handlers["textDocument/formatting"] = function(err, _, result, _, bufnr) 399 vim.lsp.handlers["textDocument/formatting"] = function(err, _, result, _, bufnr)
458 if err ~= nil or result == nil then 400 if err ~= nil or result == nil then
480 422
481 if (vim.fn.executable('efm-langserver') == 1) then 423 if (vim.fn.executable('efm-langserver') == 1) then
482 require 'efm/python' 424 require 'efm/python'
483 425
484 -- May not be installed, use pcall to handle errors 426 -- May not be installed, use pcall to handle errors
485 pcall(require, 'efm/systemverilog') 427 -- pcall(require, 'efm/systemverilog')
486 pcall(require, 'efm/flp') 428 pcall(require, 'efm/flp')
487 429
488 local language_cfg = require'efm/languages' 430 local language_cfg = require'efm/languages'
489 431
490 local filetypes = {} 432 local filetypes = {}