mirror of
https://github.com/godotengine/godot.git
synced 2025-10-20 08:23:29 +00:00
LSP: Fix spec violations that break the VSCode outline
This commit is contained in:
parent
98ddec4b8b
commit
2f620db1d8
3 changed files with 43 additions and 1 deletions
|
@ -57,6 +57,12 @@ lsp::Position GodotPosition::to_lsp(const Vector<String> &p_lines) const {
|
|||
return res;
|
||||
}
|
||||
res.line = line - 1;
|
||||
|
||||
// Special case: `column = 0` -> Starts at beginning of line.
|
||||
if (column <= 0) {
|
||||
return res;
|
||||
}
|
||||
|
||||
// Note: character outside of `pos_line.length()-1` is valid.
|
||||
res.character = column - 1;
|
||||
|
||||
|
@ -238,9 +244,12 @@ void ExtendGDScriptParser::parse_class_symbol(const GDScriptParser::ClassNode *p
|
|||
r_symbol.kind = lsp::SymbolKind::Class;
|
||||
r_symbol.deprecated = false;
|
||||
r_symbol.range = range_of_node(p_class);
|
||||
r_symbol.range.start.line = MAX(r_symbol.range.start.line, 0);
|
||||
if (p_class->identifier) {
|
||||
r_symbol.selectionRange = range_of_node(p_class->identifier);
|
||||
} else {
|
||||
// No meaningful `selectionRange`, but we must ensure that it is inside of `range`.
|
||||
r_symbol.selectionRange.start = r_symbol.range.start;
|
||||
r_symbol.selectionRange.end = r_symbol.range.start;
|
||||
}
|
||||
r_symbol.detail = "class " + r_symbol.name;
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue