From e199488bc7f8c37e14ea414fd7986272b50f40ff Mon Sep 17 00:00:00 2001 From: geequlim Date: Fri, 4 Oct 2019 20:53:40 +0800 Subject: Add custom api `textDocument/nativeSymbol` to allow inspect native symbols from LSP clients --- .../gdscript/language_server/gdscript_workspace.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'modules/gdscript/language_server/gdscript_workspace.cpp') diff --git a/modules/gdscript/language_server/gdscript_workspace.cpp b/modules/gdscript/language_server/gdscript_workspace.cpp index b42464aa8a..169f973246 100644 --- a/modules/gdscript/language_server/gdscript_workspace.cpp +++ b/modules/gdscript/language_server/gdscript_workspace.cpp @@ -475,6 +475,24 @@ void GDScriptWorkspace::resolve_related_symbols(const lsp::TextDocumentPositionP } } +const lsp::DocumentSymbol *GDScriptWorkspace::resolve_native_symbol(const lsp::NativeSymbolInspectParams &p_params) { + + if (Map::Element *E = native_symbols.find(p_params.native_class)) { + const lsp::DocumentSymbol &symbol = E->get(); + if (p_params.symbol_name.empty() || p_params.symbol_name == symbol.name) { + return &symbol; + } + + for (int i = 0; i < symbol.children.size(); ++i) { + if (symbol.children[i].name == p_params.symbol_name) { + return &(symbol.children[i]); + } + } + } + + return NULL; +} + void GDScriptWorkspace::resolve_document_links(const String &p_uri, List &r_list) { if (const ExtendGDScriptParser *parser = get_parse_successed_script(get_file_path(p_uri))) { const List &links = parser->get_document_links(); -- cgit v1.2.3