feat(lsp): add original LSP Location as item's user_data in locations_to_items (#23743)

This commit is contained in:
Tom Praschan 2023-09-07 10:12:02 +02:00 committed by GitHub
parent ec753cf40d
commit 131a1ee82d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 3 deletions

View File

@ -1751,6 +1751,9 @@ locations_to_items({locations}, {offset_encoding})
Returns the items with the byte position calculated correctly and in
sorted order, for display in quickfix and location lists.
The `user_data` field of each resulting item will contain the original
`Location` or `LocationLink` it was computed from.
The result can be passed to the {list} argument of |setqflist()| or
|setloclist()|.

View File

@ -162,6 +162,9 @@ The following new APIs and features were added.
• The |:terminal| command now accepts some |:command-modifiers| (specifically
|:horizontal| and those that affect splitting a window).
• |vim.lsp.util.locations_to_items()| sets the `user_data` of each item to the
original LSP `Location` or `LocationLink`.
==============================================================================
CHANGED FEATURES *news-changed*

View File

@ -1812,6 +1812,9 @@ end)
--- Returns the items with the byte position calculated correctly and in sorted
--- order, for display in quickfix and location lists.
---
--- The `user_data` field of each resulting item will contain the original
--- `Location` or `LocationLink` it was computed from.
---
--- The result can be passed to the {list} argument of |setqflist()| or
--- |setloclist()|.
---
@ -1840,7 +1843,7 @@ function M.locations_to_items(locations, offset_encoding)
-- locations may be Location or LocationLink
local uri = d.uri or d.targetUri
local range = d.range or d.targetSelectionRange
table.insert(grouped[uri], { start = range.start })
table.insert(grouped[uri], { start = range.start, location = d })
end
local keys = vim.tbl_keys(grouped)
@ -1872,6 +1875,7 @@ function M.locations_to_items(locations, offset_encoding)
lnum = row + 1,
col = col + 1,
text = line,
user_data = temp.location,
})
end
end

View File

@ -2387,7 +2387,14 @@ describe('LSP', function()
filename = '/fake/uri',
lnum = 1,
col = 3,
text = 'testing'
text = 'testing',
user_data = {
uri = 'file:///fake/uri',
range = {
start = { line = 0, character = 2 },
['end'] = { line = 0, character = 3 },
}
}
},
}
local actual = exec_lua [[
@ -2413,7 +2420,18 @@ describe('LSP', function()
filename = '/fake/uri',
lnum = 1,
col = 3,
text = 'testing'
text = 'testing',
user_data = {
targetUri = "file:///fake/uri",
targetRange = {
start = { line = 0, character = 2 },
['end'] = { line = 0, character = 3 },
},
targetSelectionRange = {
start = { line = 0, character = 2 },
['end'] = { line = 0, character = 3 },
}
}
},
}
local actual = exec_lua [[