From 18f3f309c7369586c3845ba7f96b58bc9fd3f467 Mon Sep 17 00:00:00 2001 From: Andy Bunce Date: Thu, 28 Aug 2025 16:44:48 +0100 Subject: [PATCH] [fix] server diags --- webapp/lsp/lsp-diags.xqm | 4 ++-- webapp/static/clients/codemirror/script.js | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/webapp/lsp/lsp-diags.xqm b/webapp/lsp/lsp-diags.xqm index 53dacab..2c2ff5d 100644 --- a/webapp/lsp/lsp-diags.xqm +++ b/webapp/lsp/lsp-diags.xqm @@ -52,7 +52,7 @@ declare function lsp-diags:parse-error($text as xs:string, $xml as element(ERROR as map(*)*{ if(string-length($text) gt 0) - then let $last:= string-length($text) + then let $last:= string-length($text)-1 let $dmesg:=$xml/string()=>trace("parse-error") let $dmesg:=translate($dmesg," ",";") let $b:=number($xml/@b)-1 @@ -60,7 +60,7 @@ as map(*)*{ return ( (: mark error :) lsp-diags:nostic(pos:Range(pos:toPosition($text, $b), - pos:toPosition($text, min(($e,$last)))), + pos:toPosition($text, $e)), 1, $dmesg,'XPST0003'), diff --git a/webapp/static/clients/codemirror/script.js b/webapp/static/clients/codemirror/script.js index bf535da..5ffe813 100644 --- a/webapp/static/clients/codemirror/script.js +++ b/webapp/static/clients/codemirror/script.js @@ -64,13 +64,20 @@ function connect() { .then(transport => { transport.socket.onclose = (event) => connectStatus(false); transport.socket.oneror = (event) => $("msg").innerText = "sock error!"; - + transport.subscribe(incoming); client = new lsp.LSPClient({extensions: lsp.languageServerExtensions()}); client.connect(transport); $("popConnect").hidePopover(); connectStatus(true); let extLsp =client.plugin( file, "xquery"); - view.dispatch({ effects: lsp.StateEffect.appendConfig.of(extLsp) }) + let up=lsp.debouncedChangeListener({ + delay: 750, + onChange: (content, state) => { + console.log('Debounced change detected:'+content); + client.sync(); + }}) + + view.dispatch({ effects: lsp.StateEffect.appendConfig.of([...extLsp,up]) }) }) .catch(r => { connectStatus(false); alert("connection failed: " + server) }); @@ -86,12 +93,20 @@ function connectStatus(bool) { } }; +function incoming(msg) { + const rpc = JSON.parse(msg); + log(rpc); + +}; + function log(rpc) { + console.log("<-",rpc) if (rpc.id) return const text = rpc.method; const li = document.createElement("li"); - li.appendChild(document.createTextNode(text)); + const n=$("traffic").childElementCount + " "; + li.appendChild(document.createTextNode(n + text)); $("traffic").insertBefore(li, $("traffic").firstChild) };