Skip to content

Instantly share code, notes, and snippets.

@spoof
Created May 23, 2020 20:15
Show Gist options
  • Select an option

  • Save spoof/79ef8d3d808587ae24aa3de0bb190bfd to your computer and use it in GitHub Desktop.

Select an option

Save spoof/79ef8d3d808587ae24aa3de0bb190bfd to your computer and use it in GitHub Desktop.
lua << EOF
local nvim_lsp = require'nvim_lsp'
local log = require'vim.lsp.log'
nvim_lsp.rust_analyzer.setup{}
nvim_lsp.gopls.setup{}
function lsp_go_to_definition(cmd)
local params = vim.lsp.util.make_position_params()
return vim.lsp.buf_request(0, 'textDocument/definition', params, function(_, method, result)
if result == nil or vim.tbl_isempty(result) then
local _ = log.info() and log.info(method, 'No definitions found')
return nil
end
local loc = vim.tbl_islist(result) and result[1] or result
local _ = cmd and vim.cmd(cmd)
vim.lsp.util.jump_to_location(loc)
end)
end
EOF
nnoremap <silent> <leader>d <cmd>lua lsp_go_to_definition()<CR>
nnoremap <silent> <leader>ds <cmd>lua lsp_go_to_definition('split')<CR>
nnoremap <silent> <leader>dv <cmd>lua lsp_go_to_definition('vsplit')<CR>
nnoremap <silent> <leader>dt <cmd>lua lsp_go_to_definition('tabe')<CR>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment