Skip to content
This repository was archived by the owner on Jul 7, 2022. It is now read-only.

Commit 1497330

Browse files
committed
fix: neovim changed APIs
1 parent 6f97186 commit 1497330

File tree

3 files changed

+69
-2
lines changed

3 files changed

+69
-2
lines changed

lua/lsp_extensions/init.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ local extensions = {}
2121
local inlay_hints = require('lsp_extensions.inlay_hints')
2222

2323
extensions.inlay_hints = function(opts)
24-
vim.lsp.buf_request(0, 'rust-analyzer/inlayHints', inlay_hints.get_params(), inlay_hints.get_callback(opts))
24+
vim.lsp.buf_request(0, 'rust-analyzer/inlayHints', inlay_hints.get_params(), inlay_hints.get_callback(opts))
2525
end
2626

2727
return extensions

lua/lsp_extensions/inlay_hints.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ inlay_hints.get_callback = function(opts)
7878

7979
-- Check for any existing / more important virtual text on the line.
8080
-- TODO: Figure out how stackable virtual text works? What happens if there is more than one??
81-
local existing_virt_text = vim.api.nvim_buf_get_virtual_text(bufnr, end_line)
81+
local existing_virt_text = vim.api.nvim_buf_get_extmarks(bufnr, inlay_hints_ns, {end_line, 0}, {end_line, 0}, {})
8282
if not vim.tbl_isempty(existing_virt_text) then
8383
return
8484
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
2+
require('plenary.reload').reload_module('telescope')
3+
4+
local ok, telescope = pcall(require, 'telescope')
5+
if not ok then
6+
return {}
7+
end
8+
9+
local telescope_references = {}
10+
11+
telescope_references.request = function(opts)
12+
vim.lsp.buf_request(0, 'textDocument/references', telescope_references.get_params(), telescope_references.get_callback(opts))
13+
end
14+
15+
telescope_references.get_callback = function(opts)
16+
opts = opts or {}
17+
18+
return function(_, _, result, _, bufnr)
19+
if not result then
20+
print("[lsp_extensions.telescope_references] No references found")
21+
return
22+
end
23+
24+
local items = vim.lsp.util.locations_to_items(result)
25+
-- print(vim.inspect(items))
26+
27+
local finder_items = {}
28+
for _, v in ipairs(items) do
29+
table.insert(finder_items, string.format("%s:%s:%s:%s",
30+
v.filename,
31+
v.lnum,
32+
v.col,
33+
v.text
34+
))
35+
end
36+
37+
local file_finder = telescope.finders.new { results = finder_items }
38+
local file_previewer = telescope.previewers.vim_buffer
39+
40+
local file_picker = telescope.pickers.new {
41+
previewer = file_previewer
42+
}
43+
44+
-- local file_sorter = telescope.sorters.get_ngram_sorter()
45+
-- local file_sorter = require('telescope.sorters').get_levenshtein_sorter()
46+
local file_sorter = telescope.sorters.get_norcalli_sorter()
47+
48+
file_picker:find {
49+
prompt = 'LSP References',
50+
finder = file_finder,
51+
sorter = file_sorter,
52+
}
53+
end
54+
end
55+
56+
telescope_references.get_params = function()
57+
local params = vim.lsp.util.make_position_params()
58+
59+
params.context = {
60+
includeDeclaration = true
61+
}
62+
63+
-- params[vim.type_idx] = vim.types.dictionary
64+
return params
65+
end
66+
67+
return telescope_references

0 commit comments

Comments
 (0)