1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Merge pull request #105087 from HolonProduction/lsp-annotations

LSP: Extract annotations from `EditorHelp`
This commit is contained in:
Thaddeus Crews
2025-07-03 12:21:28 -05:00

View File

@@ -156,7 +156,12 @@ const LSP::DocumentSymbol *GDScriptWorkspace::get_native_symbol(const String &p_
}
}
}
class_name = ClassDB::get_parent_class(class_name);
// Might contain pseudo classes like @GDScript that only exist in documentation.
if (ClassDB::class_exists(class_name)) {
class_name = ClassDB::get_parent_class(class_name);
} else {
break;
}
}
return nullptr;
@@ -343,20 +348,32 @@ Error GDScriptWorkspace::initialize() {
class_symbol.children.push_back(symbol);
}
Vector<DocData::MethodDoc> methods_signals;
methods_signals.append_array(class_data.constructors);
methods_signals.append_array(class_data.methods);
methods_signals.append_array(class_data.operators);
const int signal_start_idx = methods_signals.size();
methods_signals.append_array(class_data.signals);
Vector<DocData::MethodDoc> method_likes;
method_likes.append_array(class_data.methods);
method_likes.append_array(class_data.annotations);
const int constructors_start_idx = method_likes.size();
method_likes.append_array(class_data.constructors);
const int operator_start_idx = method_likes.size();
method_likes.append_array(class_data.operators);
const int signal_start_idx = method_likes.size();
method_likes.append_array(class_data.signals);
for (int i = 0; i < methods_signals.size(); i++) {
const DocData::MethodDoc &data = methods_signals[i];
for (int i = 0; i < method_likes.size(); i++) {
const DocData::MethodDoc &data = method_likes[i];
LSP::DocumentSymbol symbol;
symbol.name = data.name;
symbol.native_class = class_name;
symbol.kind = i >= signal_start_idx ? LSP::SymbolKind::Event : LSP::SymbolKind::Method;
if (i >= signal_start_idx) {
symbol.kind = LSP::SymbolKind::Event;
} else if (i >= operator_start_idx) {
symbol.kind = LSP::SymbolKind::Operator;
} else if (i >= constructors_start_idx) {
symbol.kind = LSP::SymbolKind::Constructor;
} else {
symbol.kind = LSP::SymbolKind::Method;
}
String params = "";
bool arg_default_value_started = false;