Mercurial > dotfiles
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 = {} |