Some language servers include local symbols (e.g., local variables, parameters) in workspace symbol results. Without the `containerName` information, these symbols lack context information, making it difficult to distinguish them from top-level definitions and hindering efficient symbol lookup. This change exposes the `container_name` field from LSP [`SymbolInformation`](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#symbolInformation) to the extension API, allowing language server extensions to access `symbol.container_name` in `label_for_symbol` and provide meaningful context when rendering symbol labels. Note: The `container_name `field is added to all extension API versions because they seem to share the same underlying Rust types via wasmtime bindgen. The field is optional, so existing extensions would remain compatible as far as I understand. Closes #ISSUE Release Notes: - Added `container_name` field to `lsp::Symbol`, accessible via the extension API's `label_for_symbol` function --------- Co-authored-by: MrSubidubi <finn@zed.dev>
92 lines
1.8 KiB
Plaintext
92 lines
1.8 KiB
Plaintext
interface lsp {
|
|
/// An LSP completion.
|
|
record completion {
|
|
label: string,
|
|
label-details: option<completion-label-details>,
|
|
detail: option<string>,
|
|
kind: option<completion-kind>,
|
|
insert-text-format: option<insert-text-format>,
|
|
}
|
|
|
|
/// The kind of an LSP completion.
|
|
variant completion-kind {
|
|
text,
|
|
method,
|
|
function,
|
|
%constructor,
|
|
field,
|
|
variable,
|
|
class,
|
|
%interface,
|
|
module,
|
|
property,
|
|
unit,
|
|
value,
|
|
%enum,
|
|
keyword,
|
|
snippet,
|
|
color,
|
|
file,
|
|
reference,
|
|
folder,
|
|
enum-member,
|
|
constant,
|
|
struct,
|
|
event,
|
|
operator,
|
|
type-parameter,
|
|
other(s32),
|
|
}
|
|
|
|
/// Label details for an LSP completion.
|
|
record completion-label-details {
|
|
detail: option<string>,
|
|
description: option<string>,
|
|
}
|
|
|
|
/// Defines how to interpret the insert text in a completion item.
|
|
variant insert-text-format {
|
|
plain-text,
|
|
snippet,
|
|
other(s32),
|
|
}
|
|
|
|
/// An LSP symbol.
|
|
record symbol {
|
|
kind: symbol-kind,
|
|
name: string,
|
|
container-name: option<string>,
|
|
}
|
|
|
|
/// The kind of an LSP symbol.
|
|
variant symbol-kind {
|
|
file,
|
|
module,
|
|
namespace,
|
|
%package,
|
|
class,
|
|
method,
|
|
property,
|
|
field,
|
|
%constructor,
|
|
%enum,
|
|
%interface,
|
|
function,
|
|
variable,
|
|
constant,
|
|
%string,
|
|
number,
|
|
boolean,
|
|
array,
|
|
object,
|
|
key,
|
|
null,
|
|
enum-member,
|
|
struct,
|
|
event,
|
|
operator,
|
|
type-parameter,
|
|
other(s32),
|
|
}
|
|
}
|