Merge pull request #32671 from GodotExplorer/lsp-send-godot-class-tree
lsp: Send godot class tree to clients
This commit is contained in:
commit
55ef6a0f25
|
@ -134,6 +134,22 @@ Dictionary GDScriptLanguageProtocol::initialize(const Dictionary &p_params) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void GDScriptLanguageProtocol::initialized(const Variant &p_params) {
|
void GDScriptLanguageProtocol::initialized(const Variant &p_params) {
|
||||||
|
|
||||||
|
lsp::GodotCapabilities capabilities;
|
||||||
|
|
||||||
|
DocData *doc = EditorHelp::get_doc_data();
|
||||||
|
for (Map<String, DocData::ClassDoc>::Element *E = doc->class_list.front(); E; E = E->next()) {
|
||||||
|
|
||||||
|
lsp::GodotNativeClassInfo gdclass;
|
||||||
|
gdclass.name = E->get().name;
|
||||||
|
gdclass.class_doc = &(E->get());
|
||||||
|
if (ClassDB::ClassInfo *ptr = ClassDB::classes.getptr(StringName(E->get().name))) {
|
||||||
|
gdclass.class_info = ptr;
|
||||||
|
}
|
||||||
|
capabilities.native_classes.push_back(gdclass);
|
||||||
|
}
|
||||||
|
|
||||||
|
notify_client("gdscript/capabilities", capabilities.to_json());
|
||||||
}
|
}
|
||||||
|
|
||||||
void GDScriptLanguageProtocol::poll() {
|
void GDScriptLanguageProtocol::poll() {
|
||||||
|
|
|
@ -31,7 +31,9 @@
|
||||||
#ifndef GODOT_LSP_H
|
#ifndef GODOT_LSP_H
|
||||||
#define GODOT_LSP_H
|
#define GODOT_LSP_H
|
||||||
|
|
||||||
#include "core/variant.h"
|
#include "core/class_db.h"
|
||||||
|
#include "core/list.h"
|
||||||
|
#include "editor/doc/doc_data.h"
|
||||||
|
|
||||||
namespace lsp {
|
namespace lsp {
|
||||||
|
|
||||||
|
@ -1567,6 +1569,39 @@ struct InitializeResult {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct GodotNativeClassInfo {
|
||||||
|
|
||||||
|
String name;
|
||||||
|
const DocData::ClassDoc *class_doc = NULL;
|
||||||
|
const ClassDB::ClassInfo *class_info = NULL;
|
||||||
|
|
||||||
|
Dictionary to_json() {
|
||||||
|
Dictionary dict;
|
||||||
|
dict["name"] = name;
|
||||||
|
dict["inherits"] = class_doc->inherits;
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Features not included in the standart lsp specifications */
|
||||||
|
struct GodotCapabilities {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Native class list
|
||||||
|
*/
|
||||||
|
List<GodotNativeClassInfo> native_classes;
|
||||||
|
|
||||||
|
Dictionary to_json() {
|
||||||
|
Dictionary dict;
|
||||||
|
Array classes;
|
||||||
|
for (List<GodotNativeClassInfo>::Element *E = native_classes.front(); E; E = E->next()) {
|
||||||
|
classes.push_back(E->get().to_json());
|
||||||
|
}
|
||||||
|
dict["native_classes"] = classes;
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/** Format BBCode documentation from DocData to markdown */
|
/** Format BBCode documentation from DocData to markdown */
|
||||||
static String marked_documentation(const String &p_bbcode) {
|
static String marked_documentation(const String &p_bbcode) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue