summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/language_server/gdscript_extend_parser.h
diff options
context:
space:
mode:
authorGeequlim <geequlim@gmail.com>2019-06-24 18:25:12 +0800
committergeequlim <geequlim@gmail.com>2019-08-11 13:30:15 +0800
commit76c9e4ceb73b02bd95ab0512e27229516208dc60 (patch)
treeb145ae3a4a837a109943f654bf433e704b7eac74 /modules/gdscript/language_server/gdscript_extend_parser.h
parentfa6d6a329c93224b5454b17603284913da0472a3 (diff)
downloadredot-engine-76c9e4ceb73b02bd95ab0512e27229516208dc60.tar.gz
Improved performance for completion and symbol resolvation.
Improved uri and workspace path translatation on windows platform. The smart resolvation is much faster than builtin's in the server side. The smart resolve mode is still disabled as default as the clients might be slow with a planty of completion items.
Diffstat (limited to 'modules/gdscript/language_server/gdscript_extend_parser.h')
-rw-r--r--modules/gdscript/language_server/gdscript_extend_parser.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/modules/gdscript/language_server/gdscript_extend_parser.h b/modules/gdscript/language_server/gdscript_extend_parser.h
index a7e5130e2c..d20dca59cf 100644
--- a/modules/gdscript/language_server/gdscript_extend_parser.h
+++ b/modules/gdscript/language_server/gdscript_extend_parser.h
@@ -43,29 +43,36 @@
#define JOIN_SYMBOLS(p_path, name) ((p_path) + "." + (name))
#endif
+typedef HashMap<String, const lsp::DocumentSymbol *> ClassMembers;
+
class ExtendGDScriptParser : public GDScriptParser {
+
String path;
String code;
Vector<String> lines;
lsp::DocumentSymbol class_symbol;
Vector<lsp::Diagnostic> diagnostics;
+ ClassMembers members;
void update_diagnostics();
- void update_symbols();
+ void update_symbols();
void parse_class_symbol(const GDScriptParser::ClassNode *p_class, lsp::DocumentSymbol &r_symbol);
void parse_function_symbol(const GDScriptParser::FunctionNode *p_func, lsp::DocumentSymbol &r_symbol);
- String parse_documentation(int p_line);
+ String parse_documentation(int p_line);
const lsp::DocumentSymbol *search_symbol_defined_at_line(int p_line, const lsp::DocumentSymbol &p_parent) const;
+ Array member_completions;
+
public:
_FORCE_INLINE_ const String &get_path() const { return path; }
_FORCE_INLINE_ const String &get_code() const { return code; }
_FORCE_INLINE_ const Vector<String> &get_lines() const { return lines; }
_FORCE_INLINE_ const lsp::DocumentSymbol &get_symbols() const { return class_symbol; }
_FORCE_INLINE_ const Vector<lsp::Diagnostic> &get_diagnostics() const { return diagnostics; }
+ _FORCE_INLINE_ const ClassMembers &get_members() const { return members; }
String get_text_for_completion(const lsp::Position &p_cursor) const;
String get_text_for_lookup_symbol(const lsp::Position &p_cursor, const String &p_symbol = "", bool p_func_requred = false) const;
@@ -74,7 +81,8 @@ public:
const lsp::DocumentSymbol *get_symbol_defined_at_line(int p_line) const;
const lsp::DocumentSymbol *get_member_symbol(const String &p_name) const;
- void dump_member_symbols(Map<String, const lsp::DocumentSymbol *> &r_symbols);
+
+ const Array &get_member_completions();
Error parse(const String &p_code, const String &p_path);
};