-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkeymaps.lua
More file actions
109 lines (101 loc) · 2.78 KB
/
Copy pathkeymaps.lua
File metadata and controls
109 lines (101 loc) · 2.78 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
local M = {}
---@param what vim.fn.setqflist.what
local function on_list(what)
vim.list.unique(what.items, function(item)
return (":%s:%d:%s"):format(item.filename, item.lnum, item.text)
end)
if #what.items == 1 then
local item = what.items[1]
local item_bufnr = item.bufnr or vim.fn.bufadd(item.filename)
-- Save position in jumplist.
vim.cmd.normal { "m'", bang = true }
local winid = vim.api.nvim_get_current_win()
local curpos = vim.api.nvim_win_get_cursor(winid)
curpos[1] = item_bufnr
vim.fn.settagstack(winid, {
items = {
{
bufnr = item_bufnr,
from = curpos,
tagname = vim.fn.expand "<cword>",
},
},
}, "t")
vim.bo[item_bufnr].buflisted = true
vim.api.nvim_win_set_buf(winid, item_bufnr)
vim.api.nvim_win_set_cursor(winid, { item.lnum, item.col - 1 })
else
vim.fn.setqflist({}, " ", what)
vim.cmd "bo cope"
end
end
---@param bufnr integer
function M.set(bufnr)
lib.set_keymaps {
{
"n",
"gd",
function()
vim.lsp.buf.definition { on_list = on_list }
end,
{ buf = bufnr, desc = "Definition" },
},
{
"n",
"gD",
function()
vim.lsp.buf.type_definition { on_list = on_list }
end,
{ buf = bufnr, desc = "Type Definition" },
},
{
"n",
"gr",
function()
vim.lsp.buf.references(nil, { on_list = on_list })
end,
{ buf = bufnr, desc = "References", nowait = true },
},
{
"n",
"gi",
function()
vim.lsp.buf.implementation { on_list = on_list }
end,
{ buf = bufnr, desc = "Implementation" },
},
{
"n",
"gl",
function()
vim.diagnostic.open_float { bufnr = bufnr }
end,
{ buf = bufnr, desc = "Line Diagnostics" },
},
{
"n",
"gw",
function()
vim.diagnostic.setqflist()
end,
{ buf = bufnr, desc = "Workspace Diagnostics" },
},
{
"n",
"gn",
function()
vim.lsp.buf.rename(nil, { bufnr = bufnr })
end,
{ buf = bufnr, desc = "Rename" },
},
{
{ "n", "v" },
"ga",
function()
vim.lsp.buf.code_action()
end,
{ buf = bufnr, desc = "Code Action" },
},
}
end
return M