[fix] severities

This commit is contained in:
Andy Bunce 2025-08-17 19:52:52 +01:00
parent 99a77cd5bf
commit 2d99af9389
5 changed files with 38 additions and 11 deletions

View file

@ -6,7 +6,7 @@
"triggerCharacters": [ "\"", ":" ],
"documentSelector": [{ "language": "xquery" }]
},
"hoverProvider": false,
"hoverProvider": true,
"documentSymbolProvider": false,
"documentRangeFormattingProvider": false,
"colorProvider": {},

View file

@ -21,9 +21,9 @@ declare record lsp-diags:nostic(
declare variable $lsp-diags:severities:={
'error':1,
'hint':2,
'hint':4,
'info':3,
'warning':4
'warning':2
};
declare function lsp-diags:publish(
@ -33,7 +33,7 @@ declare function lsp-diags:publish(
as map(*){
let $diagnostics:=if($xml/self::ERROR)
then array{lsp-diags:parse-error($text, $xml)}
else []
else array{lsp-diags:parse-xquery($text,$xml)}
return {"jsonrpc": "2.0",
"method":"textDocument/publishDiagnostics",
@ -47,13 +47,29 @@ as map(*){
declare function lsp-diags:parse-error($text as xs:string, $xml as element(ERROR))
as map(*)*{
lsp-diags:nostic(pos:Range(pos:toPosition($text=>trace("EXML "), $xml/@b),
lsp-diags:nostic(pos:Range(pos:toPosition($text, $xml/@b),
pos:toPosition($text, $xml/@e)),
1,
$lsp-diags:severities('error'),
$xml/string()),
lsp-diags:nostic(pos:Range(pos:toPosition($text, $xml/@e +1 ),
pos:toPosition($text, string-length($text)-1)),
2,
$lsp-diags:severities('warning'),
"Previous parse error")
};
};
(: test data :)
declare function lsp-diags:parse-xquery($text as xs:string, $xml as element(Module))
as map(*)*{
lsp-diags:nostic(pos:Range(pos:Position(0,0), pos:Position(0, 5)),
$lsp-diags:severities('error'),"111"),
lsp-diags:nostic(pos:Range(pos:Position(1,0), pos:Position(1,5)),
$lsp-diags:severities('warning'),"2222"),
lsp-diags:nostic(pos:Range(pos:Position(2,0), pos:Position(2, 5)),
$lsp-diags:severities('info'),"333"),
lsp-diags:nostic(pos:Range(pos:Position(3,0), pos:Position(3, 12)),
$lsp-diags:severities('hint'), "44")
};

View file

@ -9,7 +9,7 @@ var editor = ace.edit("editor", {
useWorker: false // Disable web worker for this simple demo
});
//ace.require('ace/ext/settings_menu');
ace.require('ace/ext/settings_menu');
editor.setTheme("ace/theme/github");
//editor.session.setMode("ace/mode/html");
editor.commands.addCommands([

View file

@ -61,6 +61,9 @@
</optgroup>
</select>
<label for="symbols">Symbols:</label><select id="symbols" disabled="disabled"></select>
<ul id="msg" style="overflow: scroll;">
<li>-</li>
</ul>
</div>
<div class="col flex-grow-1" style="overflow: auto;">

View file

@ -76,7 +76,8 @@ function connect() {
};
function incoming(msg) {
const rpc=JSON.parse(msg)
const rpc=JSON.parse(msg);
log(rpc.method);
switch (rpc.method) {
case "textDocument/publishDiagnostics":
diags(rpc.params);
@ -87,10 +88,17 @@ function incoming(msg) {
}
};
function log(msg){
const li = document.createElement("li");
li.appendChild(document.createTextNode(msg));
const ol=document.getElementById("msg");
ol.insertBefore(li,ol.firstChild)
};
function diags(params){
console.log("--",params)
let plugin= lsp.LSPPlugin.get(view);
const severities=["error" , "hint" ,"info" ,"warning"]
const severities=["error","warning" ,"info","hint" ]
//
const diagnostics = params.diagnostics
.map(({ range, message, severity }) => ({