[mod] outline
This commit is contained in:
parent
fc56a3d505
commit
559828340e
3 changed files with 28 additions and 16 deletions
|
|
@ -42,8 +42,8 @@ declare function syms:VarDecl($parse as element(VarDecl),$state as hnd:State )
|
|||
as hnd:State{
|
||||
let $name:=syms:localName($parse/VarNameAndType/EQName)
|
||||
let $length:=string($parse)=>string-length()
|
||||
let $range:=pos:range-from-ast($parse,$state?extras?text)=>trace("POSSSS")
|
||||
let $full-range:=$range
|
||||
let $range:=pos:range-from-ast($parse/VarNameAndType/EQName,$state?extras?text)
|
||||
let $full-range:=pos:range-from-ast($parse,$state?extras?text)
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('Variable'),$range,$full-range,"VAR")
|
||||
return $state
|
||||
=>map:put("result",($state?result,$sym))
|
||||
|
|
@ -55,8 +55,8 @@ declare function syms:FunctionDecl($parse as element(FunctionDecl),$state as hn
|
|||
as hnd:State{
|
||||
let $name:=syms:localName($parse/UnreservedFunctionEQName)
|
||||
let $prev:=$state?result[$name eq ?name]
|
||||
let $range:=pos:range-from-ast($parse,$state?extras?text)=>trace("POSSSS")
|
||||
let $full-range:=$range
|
||||
let $range:=pos:range-from-ast($parse/UnreservedFunctionEQName,$state?extras?text)
|
||||
let $full-range:=pos:range-from-ast($parse,$state?extras?text)
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('Method'),$range,$full-range,"FUN")
|
||||
return $state
|
||||
=>map:put("result",($state?result,$sym))
|
||||
|
|
@ -66,8 +66,8 @@ as hnd:State{
|
|||
declare function syms:NamedRecordTypeDecl($parse as element(NamedRecordTypeDecl), $state as hnd:State )
|
||||
as hnd:State{
|
||||
let $name:=syms:localName($parse/EQName)
|
||||
let $range:=pos:range-from-ast($parse,$state?extras?text)=>trace("POSSSS")
|
||||
let $full-range:=$range
|
||||
let $range:=pos:range-from-ast($parse/EQName,$state?extras?text)
|
||||
let $full-range:=pos:range-from-ast($parse,$state?extras?text)
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('TypeParameter'),$range,$full-range,"--RECORD")
|
||||
=>trace("RECORD")
|
||||
return $state
|
||||
|
|
|
|||
|
|
@ -143,7 +143,18 @@
|
|||
</details>
|
||||
|
||||
<details id="symPanel">
|
||||
<summary>OutLine <i class='codicon codicon-kebab-vertical' style="float:right"></i></summary>
|
||||
<summary>OutLine
|
||||
<quiet-dropdown id="dropdown__checkboxes" style="display:inline-block;float:right;">
|
||||
<quiet-icon name="dots-vertical" slot="trigger"></quiet-icon>
|
||||
<quiet-dropdown-item type="checkbox" value="canvas" checked>Follow cursor</quiet-dropdown-item>
|
||||
|
||||
<quiet-divider></quiet-divider>
|
||||
<quiet-dropdown-item type="checkbox" value="position" checked>sort by:
|
||||
Position</quiet-dropdown-item>
|
||||
<quiet-dropdown-item type="checkbox" value="name">sort by: Name</quiet-dropdown-item>
|
||||
<quiet-dropdown-item type="checkbox" value="category">sort by: Category</quiet-dropdown-item>
|
||||
</quiet-dropdown>
|
||||
</summary>
|
||||
<qd-list id="symList" style="flex-grow:1;"></qd-list>
|
||||
</details>
|
||||
|
||||
|
|
@ -165,7 +176,8 @@
|
|||
</select>
|
||||
<div>
|
||||
<label for="iFile">File:</label>
|
||||
<input id="iFile" type="url" value="file:///some/file.xqm" style="width:10em;display:inline-block;" />
|
||||
<input id="iFile" type="url" value="file:///some/file.xqm"
|
||||
style="width:10em;display:inline-block;" />
|
||||
|
||||
<label for="symbols">Symbols:</label>
|
||||
<select id="symbols" disabled="disabled" style="width:10em;display:inline-block;"></select>
|
||||
|
|
@ -180,8 +192,6 @@
|
|||
<quiet-dropdown-item type="checkbox" value="position" checked>sort by: Position</quiet-dropdown-item>
|
||||
<quiet-dropdown-item type="checkbox" value="name">sort by: Name</quiet-dropdown-item>
|
||||
<quiet-dropdown-item type="checkbox" value="category">sort by: Category</quiet-dropdown-item>
|
||||
|
||||
|
||||
</quiet-dropdown>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
|
||||
const view = new lsp.EditorView({
|
||||
extensions: lsp.baseExts,
|
||||
parent: document.getElementById("editor")
|
||||
});
|
||||
let doc = "xquery version '3.1';\n(:~ comment:)\nmodule namespace pdfbox='ns';\n";
|
||||
var client; // https://codemirror.net/docs/ref/#lsp-client
|
||||
var extLsp; // https://codemirror.net/docs/ref/#lsp-client.LSPPlugin
|
||||
|
||||
var workspace = {
|
||||
"file:///some/file.xqm": null
|
||||
};
|
||||
|
|
@ -68,14 +69,15 @@ $("cmdList").onclick = e => {
|
|||
});
|
||||
$("popHelpInfo").innerHTML = `<ul>${result}</ul>`
|
||||
$("popCmds").showPopover()
|
||||
|
||||
};
|
||||
|
||||
$("symList").addEventListener("itemSelected", e => {
|
||||
const sel = e.detail.selectionRange;
|
||||
const plugin=lsp.LSPPlugin.get(view)
|
||||
if(!plugin) return;
|
||||
const sel = e.detail.range // or selectionRange;
|
||||
console.log("SYM selection range", sel);
|
||||
const an = extLsp.fromPosition(sel.start)
|
||||
const hd = extLsp.fromPosition(sel.end)
|
||||
const an = plugin.fromPosition(sel.start)
|
||||
const hd = plugin.fromPosition(sel.end)
|
||||
view.dispatch({ selection: { anchor: an, head: hd}, scrollIntoView: true });
|
||||
});
|
||||
|
||||
|
|
@ -159,7 +161,7 @@ function connect() {
|
|||
client.connect(transport);
|
||||
$("popConnect").hidePopover();
|
||||
$("tConnect").checked=true;
|
||||
extLsp = client.plugin(file, "xquery");
|
||||
const extLsp = client.plugin(file, "xquery");
|
||||
|
||||
view.dispatch({
|
||||
effects: lsp.StateEffect.appendConfig.of(
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue