[add] window/logMessage

This commit is contained in:
Andy Bunce 2025-08-03 17:53:47 +01:00
parent 7369f33b5e
commit ab88b9139e
7 changed files with 62 additions and 9 deletions

View file

@ -26,13 +26,13 @@ as map(*)?
"contents": [
{
"language": "markdown",
"value": `this is **bold** markdown
a link (here)[http://google.com]
The last line`
"value": `markdown: this is **bold**
a [link](http://google.com)
The last line.`
},
{
"language": "plaintext",
"value": "A hover for " || json:serialize($json)
"value": "plaintext: A hover for " || json:serialize($json?params?position)
}]
}
}
@ -56,8 +56,13 @@ function lsp-text:didOpen($json as map(*))
as map(*)?
{
let $textDoc:=$json?params?textDocument
let $text:=$textDoc?text=>trace("TXT")
return ()
let $x:=job:eval(xs:anyURI("parse.xq"),
{"textDocument":$textDoc,"webSocket":ws:id()},
{ 'cache': true() }
)
return ws:set(ws:id(),$textDoc?uri,$textDoc)
};
(:~ unknown method response :)

24
webapp/lsp/parse.xq Normal file
View file

@ -0,0 +1,24 @@
(: parse a didOpen :)
import module namespace p="xq4" at "xq4.xqm";
declare variable $textDocument external;
declare variable $webSocket as xs:string external;
let $text as xs:string:=$textDocument?text
let $uri:=$textDocument?uri
let $files:=ws:get($webSocket,"files",{})
let $files:=if(map:contains($files,$uri))
then $files
else map:put($files,$uri,{"textDocument":random:uuid(),"parse":random:uuid() })
let $keys:=$files($uri)
let $xml:=p:parse-Module($text)
return (
ws:set($webSocket,"files",$files),
ws:set($webSocket,$keys?textDocument,$textDocument),
ws:set($webSocket,$keys?parse,$xml),
ws:send({"jsonrpc": "2.0","method":"window/logMessage",
"params":{"type":1,"message":"TODO"}},$webSocket)
)

4
webapp/lsp/smoke.xq Normal file
View file

@ -0,0 +1,4 @@
job:eval(xs:anyURI("parse.xq"),
{"textDocument":"2+3","webSocket":ws:id()},
{ 'cache': true() }
)