[mod] symbols
This commit is contained in:
parent
9dd58b2b70
commit
e945532956
12 changed files with 272 additions and 203 deletions
45
src/symbols/symbols.ts
Normal file
45
src/symbols/symbols.ts
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
import { XQLint } from '@quodatum/xqlint';
|
||||
import * as vscode from 'vscode';
|
||||
import { channel } from "../common/logger";
|
||||
//
|
||||
// This class handles Symbols
|
||||
//
|
||||
function makeSymbol (name :string,desc :string,icon :vscode.SymbolKind,pos :any) {
|
||||
const spos = new vscode.Position(pos.sl, pos.sc);
|
||||
const epos = new vscode.Position(pos.el, pos.ec);
|
||||
const fullrange=new vscode.Range(spos,epos);
|
||||
const selrange=new vscode.Range(spos,spos);
|
||||
return new vscode.DocumentSymbol(name,"var", vscode.SymbolKind.Variable, fullrange, selrange);
|
||||
}
|
||||
|
||||
export class Symbols implements vscode.DocumentSymbolProvider {
|
||||
|
||||
provideDocumentSymbols = async (
|
||||
document: vscode.TextDocument,
|
||||
token: vscode.CancellationToken
|
||||
): Promise<vscode.DocumentSymbol[]> => {
|
||||
channel.log("Symbols: " + document.uri);
|
||||
const symbols: vscode.DocumentSymbol[] = [];
|
||||
const text = document.getText();
|
||||
const linter = new (XQLint as any)(text, { "styleCheck": false });
|
||||
const xqdoc= linter.getXQDoc();
|
||||
channel.log(xqdoc.variables);
|
||||
// type: type,
|
||||
// pos: pos,
|
||||
// qname: qname,
|
||||
// annotations: {}
|
||||
xqdoc.variables.forEach(v => {
|
||||
const name = v.name;
|
||||
const info =makeSymbol(name,"var", vscode.SymbolKind.Variable,v.pos)
|
||||
symbols.push(info);
|
||||
});
|
||||
xqdoc.functions.forEach(v => {
|
||||
const name = v.name;
|
||||
const info =makeSymbol(name,"Fu", vscode.SymbolKind.Function,v.pos)
|
||||
symbols.push(info);
|
||||
});
|
||||
channel.log("Symbols done" + document.uri);
|
||||
return symbols;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue