summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/language_server/lsp.hpp
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2021-09-25 20:43:17 +0200
committerGitHub <noreply@github.com>2021-09-25 20:43:17 +0200
commit14dcb97556f08b8b8d0f94a9ae64a445a4096652 (patch)
tree1cf29cd9047e24d4027d8b3d17b9ba512a84c6ba /modules/gdscript/language_server/lsp.hpp
parentff2f1f54a9de0cc7351cb4810dcdc506ec173338 (diff)
parent9a8421aa058437ce01bc67244bb8dcd0f15fc9e6 (diff)
downloadredot-engine-14dcb97556f08b8b8d0f94a9ae64a445a4096652.tar.gz
Merge pull request #50378 from Razoric480/apply-edit-40
Diffstat (limited to 'modules/gdscript/language_server/lsp.hpp')
-rw-r--r--modules/gdscript/language_server/lsp.hpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/modules/gdscript/language_server/lsp.hpp b/modules/gdscript/language_server/lsp.hpp
index 9ac6c6bd4e..4e2c55026f 100644
--- a/modules/gdscript/language_server/lsp.hpp
+++ b/modules/gdscript/language_server/lsp.hpp
@@ -1322,6 +1322,58 @@ struct DocumentSymbol {
}
};
+struct WorkspaceEdit {
+ HashMap<String, List<TextEdit>> changes;
+
+ void add_edit(String uri, TextEdit edit) {
+ if (changes.has(uri)) {
+ changes[uri].push_back(edit);
+ } else {
+ List<TextEdit> edits;
+ edits.push_back(edit);
+ changes[uri] = edits;
+ }
+ }
+
+ Dictionary to_json() {
+ Dictionary dict;
+
+ Dictionary changes_dict;
+
+ List<String> key_list;
+ changes.get_key_list(&key_list);
+ for (int i = 0; i < key_list.size(); ++i) {
+ String uri = key_list[i];
+
+ List<TextEdit> edits = changes[key_list[i]];
+ Array changes_arr;
+ for (int l = 0; l < edits.size(); ++l) {
+ Dictionary change_dict;
+ change_dict["newText"] = edits[l].newText;
+ change_dict["range"] = edits[l].range.to_json();
+ changes_arr.push_back(change_dict);
+ }
+ changes_dict[uri] = changes_arr;
+ }
+
+ dict["changes"] = changes_dict;
+
+ return dict;
+ }
+};
+
+struct ApplyWorkspaceEditParams {
+ WorkspaceEdit edit;
+
+ Dictionary to_json() {
+ Dictionary dict;
+
+ dict["edit"] = edit.to_json();
+
+ return dict;
+ }
+};
+
struct NativeSymbolInspectParams {
String native_class;
String symbol_name;