parent
b38a36923a
commit
4e8e887748
|
@ -41,6 +41,7 @@
|
||||||
#include "scene/resources/packed_scene.h"
|
#include "scene/resources/packed_scene.h"
|
||||||
|
|
||||||
void GDScriptWorkspace::_bind_methods() {
|
void GDScriptWorkspace::_bind_methods() {
|
||||||
|
ClassDB::bind_method(D_METHOD("didDeleteFiles"), &GDScriptWorkspace::did_delete_files);
|
||||||
ClassDB::bind_method(D_METHOD("symbol"), &GDScriptWorkspace::symbol);
|
ClassDB::bind_method(D_METHOD("symbol"), &GDScriptWorkspace::symbol);
|
||||||
ClassDB::bind_method(D_METHOD("parse_script", "path", "content"), &GDScriptWorkspace::parse_script);
|
ClassDB::bind_method(D_METHOD("parse_script", "path", "content"), &GDScriptWorkspace::parse_script);
|
||||||
ClassDB::bind_method(D_METHOD("parse_local_script", "path"), &GDScriptWorkspace::parse_local_script);
|
ClassDB::bind_method(D_METHOD("parse_local_script", "path"), &GDScriptWorkspace::parse_local_script);
|
||||||
|
@ -50,6 +51,16 @@ void GDScriptWorkspace::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("generate_script_api", "path"), &GDScriptWorkspace::generate_script_api);
|
ClassDB::bind_method(D_METHOD("generate_script_api", "path"), &GDScriptWorkspace::generate_script_api);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GDScriptWorkspace::did_delete_files(const Dictionary &p_params) {
|
||||||
|
Array files = p_params["files"];
|
||||||
|
for (int i = 0; i < files.size(); ++i) {
|
||||||
|
Dictionary file = files[i];
|
||||||
|
String uri = file["uri"];
|
||||||
|
String path = get_file_path(uri);
|
||||||
|
parse_script(path, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GDScriptWorkspace::remove_cache_parser(const String &p_path) {
|
void GDScriptWorkspace::remove_cache_parser(const String &p_path) {
|
||||||
Map<String, ExtendGDScriptParser *>::Element *parser = parse_results.find(p_path);
|
Map<String, ExtendGDScriptParser *>::Element *parser = parse_results.find(p_path);
|
||||||
Map<String, ExtendGDScriptParser *>::Element *script = scripts.find(p_path);
|
Map<String, ExtendGDScriptParser *>::Element *script = scripts.find(p_path);
|
||||||
|
|
|
@ -90,6 +90,8 @@ public:
|
||||||
Dictionary generate_script_api(const String &p_path);
|
Dictionary generate_script_api(const String &p_path);
|
||||||
Error resolve_signature(const lsp::TextDocumentPositionParams &p_doc_pos, lsp::SignatureHelp &r_signature);
|
Error resolve_signature(const lsp::TextDocumentPositionParams &p_doc_pos, lsp::SignatureHelp &r_signature);
|
||||||
|
|
||||||
|
void did_delete_files(const Dictionary &p_params);
|
||||||
|
|
||||||
GDScriptWorkspace();
|
GDScriptWorkspace();
|
||||||
~GDScriptWorkspace();
|
~GDScriptWorkspace();
|
||||||
};
|
};
|
||||||
|
|
|
@ -1514,6 +1514,114 @@ struct SignatureHelp {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A pattern to describe in which file operation requests or notifications
|
||||||
|
* the server is interested in.
|
||||||
|
*/
|
||||||
|
struct FileOperationPattern {
|
||||||
|
/**
|
||||||
|
* The glob pattern to match.
|
||||||
|
*/
|
||||||
|
String glob = "**/*.gd";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to match `file`s or `folder`s with this pattern.
|
||||||
|
*
|
||||||
|
* Matches both if undefined.
|
||||||
|
*/
|
||||||
|
String matches = "file";
|
||||||
|
|
||||||
|
Dictionary to_json() const {
|
||||||
|
Dictionary dict;
|
||||||
|
|
||||||
|
dict["glob"] = glob;
|
||||||
|
dict["matches"] = matches;
|
||||||
|
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A filter to describe in which file operation requests or notifications
|
||||||
|
* the server is interested in.
|
||||||
|
*/
|
||||||
|
struct FileOperationFilter {
|
||||||
|
/**
|
||||||
|
* The actual file operation pattern.
|
||||||
|
*/
|
||||||
|
FileOperationPattern pattern;
|
||||||
|
|
||||||
|
Dictionary to_json() const {
|
||||||
|
Dictionary dict;
|
||||||
|
|
||||||
|
dict["pattern"] = pattern.to_json();
|
||||||
|
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The options to register for file operations.
|
||||||
|
*/
|
||||||
|
struct FileOperationRegistrationOptions {
|
||||||
|
/**
|
||||||
|
* The actual filters.
|
||||||
|
*/
|
||||||
|
Vector<FileOperationFilter> filters;
|
||||||
|
|
||||||
|
FileOperationRegistrationOptions() {
|
||||||
|
filters.push_back(FileOperationFilter());
|
||||||
|
}
|
||||||
|
|
||||||
|
Dictionary to_json() const {
|
||||||
|
Dictionary dict;
|
||||||
|
|
||||||
|
Array filts;
|
||||||
|
for (int i = 0; i < filters.size(); i++) {
|
||||||
|
filts.push_back(filters[i].to_json());
|
||||||
|
}
|
||||||
|
dict["filters"] = filts;
|
||||||
|
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The server is interested in file notifications/requests.
|
||||||
|
*/
|
||||||
|
struct FileOperations {
|
||||||
|
/**
|
||||||
|
* The server is interested in receiving didDeleteFiles file notifications.
|
||||||
|
*/
|
||||||
|
FileOperationRegistrationOptions didDelete;
|
||||||
|
|
||||||
|
Dictionary to_json() const {
|
||||||
|
Dictionary dict;
|
||||||
|
|
||||||
|
dict["didDelete"] = didDelete.to_json();
|
||||||
|
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Workspace specific server capabilities
|
||||||
|
*/
|
||||||
|
struct Workspace {
|
||||||
|
/**
|
||||||
|
* The server is interested in file notifications/requests.
|
||||||
|
*/
|
||||||
|
FileOperations fileOperations;
|
||||||
|
|
||||||
|
Dictionary to_json() const {
|
||||||
|
Dictionary dict;
|
||||||
|
|
||||||
|
dict["fileOperations"] = fileOperations.to_json();
|
||||||
|
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct ServerCapabilities {
|
struct ServerCapabilities {
|
||||||
/**
|
/**
|
||||||
* Defines how text documents are synced. Is either a detailed structure defining each notification or
|
* Defines how text documents are synced. Is either a detailed structure defining each notification or
|
||||||
|
@ -1575,6 +1683,11 @@ struct ServerCapabilities {
|
||||||
*/
|
*/
|
||||||
bool workspaceSymbolProvider = true;
|
bool workspaceSymbolProvider = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The server supports workspace folder.
|
||||||
|
*/
|
||||||
|
Workspace workspace;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The server provides code actions. The `CodeActionOptions` return type is only
|
* The server provides code actions. The `CodeActionOptions` return type is only
|
||||||
* valid if the client signals code action literal support via the property
|
* valid if the client signals code action literal support via the property
|
||||||
|
@ -1662,6 +1775,7 @@ struct ServerCapabilities {
|
||||||
dict["documentHighlightProvider"] = documentHighlightProvider;
|
dict["documentHighlightProvider"] = documentHighlightProvider;
|
||||||
dict["documentSymbolProvider"] = documentSymbolProvider;
|
dict["documentSymbolProvider"] = documentSymbolProvider;
|
||||||
dict["workspaceSymbolProvider"] = workspaceSymbolProvider;
|
dict["workspaceSymbolProvider"] = workspaceSymbolProvider;
|
||||||
|
dict["workspace"] = workspace.to_json();
|
||||||
dict["codeActionProvider"] = codeActionProvider;
|
dict["codeActionProvider"] = codeActionProvider;
|
||||||
dict["documentFormattingProvider"] = documentFormattingProvider;
|
dict["documentFormattingProvider"] = documentFormattingProvider;
|
||||||
dict["documentRangeFormattingProvider"] = documentRangeFormattingProvider;
|
dict["documentRangeFormattingProvider"] = documentRangeFormattingProvider;
|
||||||
|
|
Loading…
Reference in New Issue