forked from rafi/vim-config
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontextmenu.lua
More file actions
68 lines (55 loc) · 2.1 KB
/
contextmenu.lua
File metadata and controls
68 lines (55 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
-- rafi context-menu
-- https://github.com/rafi/vim-config
local M = {}
local function exec(input)
vim.api.nvim_exec(input, true)
end
local function supports_method(method, clients)
for _, client in pairs(clients) do
if client.supports_method(method) then
return true
end
end
return false
end
M.show = function()
if vim.fn.has('nvim-0.8') ~= 1 then
print('You must be running Neovim ≥8.0')
return
end
local cword = vim.fn.expand('<cword>')
local clients = vim.lsp.get_active_clients()
pcall(function() exec('aunmenu Context') end)
if cword == '' then
-- Cursor is on blank character.
exec('nmenu Context.Select\\ All ggVG')
exec('nmenu Context.-1- <Nop>')
else
-- Add LSP methods, only if one of the servers support it.
if supports_method('textDocument/declaration', clients) then
exec('nmenu Context.Declaration <cmd>lua vim.lsp.buf.declaration()<CR>')
end
if supports_method('textDocument/definition', clients) then
exec('nmenu Context.&Definition <cmd>lua vim.lsp.buf.definition()<CR>')
end
if supports_method('textDocument/references', clients) then
exec('nmenu Context.&References… <cmd>lua vim.lsp.buf.references()<CR>')
end
if supports_method('textDocument/implementation', clients) then
exec('nmenu Context.Implementation <cmd>lua vim.lsp.buf.implementation()<CR>')
end
exec('nmenu Context.-1- <Nop>')
exec('nmenu Context.Find\\ symbol… <cmd>lua require("plugins.telescope").pickers.lsp_workspace_symbols_cursor()<CR>')
exec('nmenu Context.Grep… <cmd>lua require("plugins.telescope").pickers.grep_string_cursor()<CR>')
exec('nmenu Context.Jump… <cmd>AnyJump<CR>')
exec('nmenu Context.-2- <Nop>')
end
exec('nmenu Context.Diagnostics <cmd>Trouble<CR>')
exec('nmenu Context.Bookmark m;')
exec('nmenu Context.TODO <cmd>TodoTrouble<CR>')
exec('nmenu Context.Git\\ diff <cmd>Gina compare<CR>')
exec('nmenu Context.Unsaved\\ diff <cmd>DiffOrig<CR>')
exec('nmenu Context.Open\\ in\\ browser <cmd>Gina browse<CR>')
exec('popup Context')
end
return M