[add] lsp manager
This commit is contained in:
parent
38a1909570
commit
c4f92f0402
39 changed files with 3481 additions and 25 deletions
|
|
@ -2,13 +2,15 @@ module namespace comp = 'lsp-completions';
|
|||
import module namespace lspt = 'lsp-typedefs' at "../lsp-typedefs.xqm";
|
||||
import module namespace ctx="lsp/context" at "../context.xqm";
|
||||
|
||||
declare variable $comp:snippet-source:="../etc/snippets.json";
|
||||
declare variable $comp:snippets:=json:doc($comp:snippet-source,{"format":"w3"});
|
||||
|
||||
(: (:{"triggerCharacter":":","triggerKind":2.0e0}:):)
|
||||
declare function comp:list($context as map(*))
|
||||
as lspt:CompletionItem*
|
||||
{
|
||||
message($context,"context: "),
|
||||
ctx:functions("fn")!ctx:map(.)=>trace("aaa")
|
||||
ctx:functions("fn")!ctx:map(.)
|
||||
};
|
||||
|
||||
declare function comp:dummy($context as map(*))
|
||||
|
|
|
|||
|
|
@ -5,17 +5,18 @@ import module namespace hnd="lsp/handlers" at "../handlers.xqm";
|
|||
import module namespace lspt = 'lsp-typedefs' at "../lsp-typedefs.xqm";
|
||||
import module namespace pos="lsp/position" at "../position.xqm";
|
||||
|
||||
declare function syms:list($parse as element(),$text as xs:string)
|
||||
as lspt:DocumentSymbol*{
|
||||
let $actions as hnd:actionMap :={
|
||||
declare variable $syms:actions as hnd:actionMap :={
|
||||
"ContextValueDecl": syms:action#2,
|
||||
"VarDecl": syms:VarDecl#2,
|
||||
"FunctionDecl": syms:FunctionDecl#2,
|
||||
"ItemTypeDecl": syms:action#2,
|
||||
"NamedRecordTypeDecl": syms:action#2
|
||||
}
|
||||
"NamedRecordTypeDecl": syms:NamedRecordTypeDecl#2
|
||||
};
|
||||
|
||||
declare function syms:list($parse as element(),$text as xs:string)
|
||||
as lspt:DocumentSymbol*{
|
||||
let $state:= hnd:Result(())
|
||||
let $result:= hnd:walk($parse,$actions,$state)
|
||||
let $result:= hnd:walk($parse,$syms:actions,$state)
|
||||
return $result?result
|
||||
};
|
||||
|
||||
|
|
@ -42,7 +43,7 @@ as hnd:Result{
|
|||
let $name:=syms:localName($parse/VarNameAndType/EQName)
|
||||
let $length:=string($parse)=>string-length()
|
||||
let $range:=lspt:Range(lspt:Position(0,0),lspt:Position(0,3))
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('Variable'),$range,$range,"TODO")
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('Variable'),$range,$range,"VAR")
|
||||
return ($state?result,$sym)=>hnd:Result(true())
|
||||
};
|
||||
|
||||
|
|
@ -50,7 +51,16 @@ declare function syms:FunctionDecl($parse as element(FunctionDecl),$state as hn
|
|||
as hnd:Result{
|
||||
let $name:=syms:localName($parse/UnreservedFunctionEQName)
|
||||
let $range:=lspt:Range(lspt:Position(0,0),lspt:Position(0,3))
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('Method'),$range,$range,"TODO")
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('Method'),$range,$range,"FUN")
|
||||
return ($state?result,$sym)=>hnd:Result(true())
|
||||
};
|
||||
|
||||
declare function syms:NamedRecordTypeDecl($parse as element(NamedRecordTypeDecl), $state as hnd:Result )
|
||||
as hnd:Result{
|
||||
let $name:=syms:localName($parse/EQName)
|
||||
let $range:=lspt:Range(lspt:Position(0,0),lspt:Position(0,3))
|
||||
let $sym:=lspt:DocumentSymbol($name,$lspt:SymbolKindMap('TypeParameter'),$range,$range,"--RECORD")
|
||||
=>trace("RECORD")
|
||||
return ($state?result,$sym)=>hnd:Result(true())
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue