From: Alan Knowles Date: Sun, 28 Jan 2024 03:51:55 +0000 (+0800) Subject: change document_save and document_change_real to async X-Git-Tag: release-5.0.2~26 X-Git-Url: http://git.roojs.org/?p=roobuilder;a=commitdiff_plain;h=dfef4ee4051aadf69fa6689f224aaa628ac82b01 change document_save and document_change_real to async --- diff --git a/src/Application.vala b/src/Application.vala index a6638b881..93bf147e4 100644 --- a/src/Application.vala +++ b/src/Application.vala @@ -535,7 +535,9 @@ // it's ready.. ls.document_open(file); - ls.document_save(file); + ls.document_save.begin( file, (o,res) => { + ls.document_save.end(res); + }); //ls.syntax.begin(file, (obj,res) => { // ls.syntax.end(res); diff --git a/src/Builder4/Editor.bjs b/src/Builder4/Editor.bjs index 16e7df708..9b3979cd9 100644 --- a/src/Builder4/Editor.bjs +++ b/src/Builder4/Editor.bjs @@ -285,8 +285,9 @@ " // assume it's gtk...", " var oldcode =_this.file.toSource();", " _this.file.setSource(str);", - " _this.file.getLanguageServer().document_change(_this.file);", "\t BuilderApplication.showSpinner(\"appointment soon\",\"document change pending\");", + " \t_this.file.getLanguageServer().document_change(_this.file);", + "", " _this.file.setSource(oldcode);", " ", "\t\t ", diff --git a/src/Builder4/Editor.vala b/src/Builder4/Editor.vala index 2b47e9135..6a3b20e9c 100644 --- a/src/Builder4/Editor.vala +++ b/src/Builder4/Editor.vala @@ -861,8 +861,9 @@ public class Editor : Object // assume it's gtk... var oldcode =_this.file.toSource(); _this.file.setSource(str); - _this.file.getLanguageServer().document_change(_this.file); BuilderApplication.showSpinner("appointment soon","document change pending"); + _this.file.getLanguageServer().document_change(_this.file); + _this.file.setSource(oldcode); diff --git a/src/JsRender/Gtk.vala b/src/JsRender/Gtk.vala index 2a3451c1b..4301fb7c0 100644 --- a/src/JsRender/Gtk.vala +++ b/src/JsRender/Gtk.vala @@ -183,7 +183,9 @@ namespace JsRender { this.saveVala(); - this.getLanguageServer().document_save(this); + this.getLanguageServer().document_save.begin(this, (obj, res) => { + this.getLanguageServer().document_save.end(res); + }); BuilderApplication.showSpinner("spinner", "document save send"); } // ignore these calls. diff --git a/src/Palete/CompletionProvider.vala b/src/Palete/CompletionProvider.vala index 06259d4af..5d8a29cf4 100644 --- a/src/Palete/CompletionProvider.vala +++ b/src/Palete/CompletionProvider.vala @@ -208,7 +208,7 @@ namespace Palete { } } - this.file.getLanguageServer().document_change_force(this.file, this.editor.tempFileContents()); + yield this.file.getLanguageServer().document_change_force(this.file, this.editor.tempFileContents()); try { GLib.debug("sending request to language server %s", this.file.getLanguageServer().get_type().name()); diff --git a/src/Palete/LanguageClient.vala b/src/Palete/LanguageClient.vala index a2dee4c32..0a07c84e8 100644 --- a/src/Palete/LanguageClient.vala +++ b/src/Palete/LanguageClient.vala @@ -80,10 +80,10 @@ namespace Palete { public abstract void document_open (JsRender.JsRender file) ; - public abstract void document_save (JsRender.JsRender file); + public abstract async void document_save (JsRender.JsRender file); public abstract void document_close (JsRender.JsRender file); - public abstract void document_change (JsRender.JsRender file ); - public abstract void document_change_force (JsRender.JsRender file, string contents ); + public abstract void document_change (JsRender.JsRender file ); + public abstract async void document_change_force (JsRender.JsRender file, string contents ); public abstract void exit () throws GLib.Error; public abstract async void shutdown () throws GLib.Error; public abstract async Lsp.CompletionList? completion(JsRender.JsRender file, int line, int offset , int triggerType = 1) throws GLib.Error; diff --git a/src/Palete/LanguageClientDummy.vala b/src/Palete/LanguageClientDummy.vala index 4d4a53d3c..b22131aa6 100644 --- a/src/Palete/LanguageClientDummy.vala +++ b/src/Palete/LanguageClientDummy.vala @@ -14,9 +14,9 @@ namespace Palete { GLib.debug("initialize dummy server"); } public override void document_open (JsRender.JsRender file) {} - public override void document_save (JsRender.JsRender file) {} + public override async void document_save (JsRender.JsRender file) {} public override void document_change (JsRender.JsRender file ) {} - public override void document_change_force (JsRender.JsRender file, string contents ) {} + public override async void document_change_force (JsRender.JsRender file, string contents ) {} public override void document_close (JsRender.JsRender file) {} public override void exit () throws GLib.Error { } public override async void shutdown () throws GLib.Error { } diff --git a/src/Palete/LanguageClientJavascript.vala b/src/Palete/LanguageClientJavascript.vala index 8f8b35745..7f43fdde4 100644 --- a/src/Palete/LanguageClientJavascript.vala +++ b/src/Palete/LanguageClientJavascript.vala @@ -17,9 +17,6 @@ namespace Palete { } - - - public override void document_open (JsRender.JsRender file) { this.file_contents.set(file.path, file.toSourceCode()); @@ -27,7 +24,7 @@ namespace Palete { BuilderApplication.updateCompileResults(); } - public override void document_save (JsRender.JsRender file) + public override async void document_save (JsRender.JsRender file) { this.file_contents.set(file.path, file.toSourceCode()); @@ -35,15 +32,17 @@ namespace Palete { Javascript.singleton().validate(file.toSourceCode(), file ); BuilderApplication.updateCompileResults(); } - public override void document_change_force (JsRender.JsRender file, string contents ) { + public override async void document_change_force (JsRender.JsRender file, string contents ) { this.file_contents.set(file.path, contents); GLib.debug("set file %s : %d chars", file.path, this.file_contents.get(file.path).length); Javascript.singleton().validate(contents, file ); BuilderApplication.updateCompileResults(); } - public override void document_change (JsRender.JsRender file ) + public override void document_change (JsRender.JsRender file ) { - this.document_change_force( file, file.toSourceCode()); + this.document_change_force.begin( file, file.toSourceCode(), (obj, res) => { + this.document_change_force.end(res); + });; } public override void document_close (JsRender.JsRender file) {} public override void exit () throws GLib.Error { } diff --git a/src/Palete/LanguageClientVala.vala b/src/Palete/LanguageClientVala.vala index fc6d25b32..a7b9146fc 100644 --- a/src/Palete/LanguageClientVala.vala +++ b/src/Palete/LanguageClientVala.vala @@ -50,7 +50,9 @@ namespace Palete { } this.countdown--; if (this.countdown < 0){ - this.document_change_force(this.change_queue_file, this.change_queue_file_source); + this.document_change_force.begin(this.change_queue_file, this.change_queue_file_source, (o, res) => { + this.document_change_force.end(res); + }); this.change_queue_file = null; } @@ -309,14 +311,14 @@ namespace Palete { } - public override void document_save (JsRender.JsRender file) + public override async void document_save (JsRender.JsRender file) { if (!this.isReady()) { return; } // save only really flags the file on the server - to actually force a change update - we need to // flag it as changed. - this.document_change_force(file, file.toSource()); + yield this.document_change_force(file, file.toSource()); this.change_queue_file = null; GLib.debug ("LS send save"); @@ -383,7 +385,9 @@ namespace Palete { public override void document_change (JsRender.JsRender file ) { if (this.change_queue_file != null && this.change_queue_file.path != file.path) { - this.document_change_force(this.change_queue_file, this.change_queue_file_source); + this.document_change_force.begin(this.change_queue_file, this.change_queue_file_source, (o, res) => { + this.document_change_force.end(res); + }); } this.countdown = 3; @@ -394,7 +398,7 @@ namespace Palete { } - public override void document_change_force (JsRender.JsRender file, string contents) + public override async void document_change_force (JsRender.JsRender file, string contents) { if (!this.isReady()) { return; @@ -410,7 +414,7 @@ namespace Palete { node.set_array(ar); this.log(LanguageClientAction.CHANGE, file.path); try { - this.jsonrpc_client.send_notification ( + yield this.jsonrpc_client.send_notification_async ( "textDocument/didChange", this.buildDict ( textDocument : this.buildDict ( ///TextDocumentItem;