Restricting language services to local files

This commit is contained in:
Jonathan Carter 2018-04-11 14:10:59 -07:00
parent c828608867
commit 1e0128fd33
2 changed files with 16 additions and 9 deletions

View file

@ -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)

View file

@ -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 [];
} }