Restricting language services to local files
This commit is contained in:
parent
c828608867
commit
1e0128fd33
2 changed files with 16 additions and 9 deletions
|
@ -8,9 +8,16 @@ import { XmlTreeViewDataProvider } from "./providers/XmlTreeView";
|
||||||
export var GlobalState: vsc.Memento;
|
export var GlobalState: vsc.Memento;
|
||||||
export var WorkspaceState: vsc.Memento;
|
export var WorkspaceState: vsc.Memento;
|
||||||
|
|
||||||
const LANG_XML: string = "xml";
|
function createSelector(language: string): vsc.DocumentFilter[] {
|
||||||
const LANG_XSL: string = "xsl";
|
return [
|
||||||
const LANG_XQUERY: string = "xquery;"
|
{ language, scheme: "file" },
|
||||||
|
{ language, scheme: "untitled" },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
const SELECTOR_XML_XSL: vsc.DocumentSelector = [...createSelector("xml"), ...createSelector("xsl")];
|
||||||
|
const SELECTOR_XQUERY: vsc.DocumentSelector = createSelector("xquery");
|
||||||
|
|
||||||
const MEM_QUERY_HISTORY: string = "xpathQueryHistory";
|
const MEM_QUERY_HISTORY: string = "xpathQueryHistory";
|
||||||
|
|
||||||
export function activate(ctx: vsc.ExtensionContext) {
|
export function activate(ctx: vsc.ExtensionContext) {
|
||||||
|
@ -29,10 +36,10 @@ export function activate(ctx: vsc.ExtensionContext) {
|
||||||
|
|
||||||
// register language feature providers
|
// register language feature providers
|
||||||
ctx.subscriptions.push(
|
ctx.subscriptions.push(
|
||||||
vsc.languages.registerDocumentFormattingEditProvider([LANG_XML, LANG_XSL], new XmlFormattingEditProvider()),
|
vsc.languages.registerDocumentFormattingEditProvider(SELECTOR_XML_XSL, new XmlFormattingEditProvider()),
|
||||||
vsc.languages.registerDocumentRangeFormattingEditProvider([LANG_XML, LANG_XSL], new XmlFormattingEditProvider()),
|
vsc.languages.registerDocumentRangeFormattingEditProvider(SELECTOR_XML_XSL, new XmlFormattingEditProvider()),
|
||||||
|
|
||||||
vsc.languages.registerCompletionItemProvider(LANG_XQUERY, new XQueryCompletionItemProvider(), ":", "$")
|
vsc.languages.registerCompletionItemProvider(SELECTOR_XQUERY, new XQueryCompletionItemProvider(), ":", "$")
|
||||||
);
|
);
|
||||||
|
|
||||||
// listen to editor events (for linting)
|
// listen to editor events (for linting)
|
||||||
|
|
|
@ -23,7 +23,7 @@ export class XmlTreeViewDataProvider implements vsc.TreeDataProvider<Node> {
|
||||||
return vsc.window.activeTextEditor || null;
|
return vsc.window.activeTextEditor || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
getChildren(element?: Node): Node[] {
|
getChildren(element?: Element): Node[] {
|
||||||
if (!this._xmlDocument) {
|
if (!this._xmlDocument) {
|
||||||
this._refreshTree();
|
this._refreshTree();
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ export class XmlTreeViewDataProvider implements vsc.TreeDataProvider<Node> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getTreeItem(element: Node): vsc.TreeItem {
|
getTreeItem(element: Element): vsc.TreeItem {
|
||||||
let treeItem = new vsc.TreeItem(element.localName);
|
let treeItem = new vsc.TreeItem(element.localName);
|
||||||
|
|
||||||
if (this._getChildAttributeArray(element).length > 0) {
|
if (this._getChildAttributeArray(element).length > 0) {
|
||||||
|
@ -66,7 +66,7 @@ export class XmlTreeViewDataProvider implements vsc.TreeDataProvider<Node> {
|
||||||
return treeItem;
|
return treeItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _getChildAttributeArray(node: Node): Node[] {
|
private _getChildAttributeArray(node: Element): Node[] {
|
||||||
if (!node.attributes) {
|
if (!node.attributes) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue