+ //GLib.debug("get hover %s %d %d", file.relpath, (int)line, (int)offset);
+ var ret = new Lsp.Hover();
+ //ret = null;
+ if (!this.isReady()) {
+ return ret;
+ }
+ if (this.getting_hover) {
+ return ret;
+ }
+
+ hover_call_count++;
+ var call_id = yield this.queuer(hover_call_count);
+
+ //GLib.debug("end hover call=%d count=%d", call_id, hover_call_count);
+ if (call_id != hover_call_count) {
+ //GLib.debug("get hover CANCELLED %s %d %d", file.relpath, (int)line, (int)offset);
+ return ret;
+ }
+
+ //GLib.debug("get hover RUN %s %d %d", file.relpath, (int)line, (int)offset);
+
+ this.getting_hover = true;
+
+ Variant? return_value;
+ try {
+ yield this.jsonrpc_client.call_async (
+ "textDocument/hover",
+ this.buildDict (
+
+ textDocument : this.buildDict ( ///TextDocumentItem;
+ uri: new GLib.Variant.string (file.to_url()),
+ version : new GLib.Variant.uint64 ( (uint64) file.version)
+ ),
+ position : this.buildDict (
+ line : new GLib.Variant.uint64 ( (uint) line) ,
+ character : new GLib.Variant.uint64 ( uint.max(0, (offset -1)))
+ )
+
+ ),
+ null,
+ out return_value
+ );
+ } catch(GLib.Error e) {
+ this.getting_hover = false;
+ throw e;
+ }
+ this.getting_hover = false;
+ GLib.debug ("LS hover replied with %s", Json.to_string (Json.gvariant_serialize (return_value), true));
+ if (return_value == null) {
+ return ret;
+ }
+
+ var json = Json.gvariant_serialize (return_value);
+ if (json.get_node_type() != Json.NodeType.OBJECT) {
+ return ret;
+ }
+
+
+ ret = Json.gobject_deserialize ( typeof (Lsp.Hover), json) as Lsp.Hover;
+
+ return ret;
+
+
+
+ }
+
+
+ static int doc_symbol_queue_call_count = 1;
+
+
+
+ public override void queueDocumentSymbols (JsRender.JsRender file)
+ {
+
+ this.documentSymbols.begin(file, (o, res) => {
+ var ret = documentSymbols.end(res);
+ file.navigation_tree_updated(ret);
+ });
+
+
+ }
+
+ bool getting_symbols = false;
+
+ public override async Gee.ArrayList<Lsp.DocumentSymbol> documentSymbols (JsRender.JsRender file) throws GLib.Error
+ {
+ /* partial_result_token , work_done_token context = null) */
+ GLib.debug("get documentSymbols %s", file.relpath);