Skip to content

Commit

Permalink
xml.extension.jars to add LemMinX extension jars
Browse files Browse the repository at this point in the history
Adds a new setting `xml.extension.jars`, where you can list jars to contribute
to the LemMinX classpath. You can use this feature to test LemMinX
extensions in VSCode.

Closes redhat-developer#251

Signed-off-by: David Thompson <[email protected]>
  • Loading branch information
datho7561 committed Oct 6, 2020
1 parent b44ceb9 commit 690d469
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 7 deletions.
8 changes: 7 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,13 @@
"xml.symbols.showReferencedGrammars": {
"type": "boolean",
"default": true,
"markdownDescription": "Show referenced grammars in the Outline. Default is `true.",
"markdownDescription": "Show referenced grammars in the Outline. Default is `true`.",
"scope": "window"
},
"xml.extension.jars": {
"type": "array",
"default": [],
"markdownDescription": "An array of paths to JARs that should be contributed to the LemMinX classpath. This is intended to be used as a tool for developing extensions to vscode-xml.",
"scope": "window"
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import * as path from 'path';
import * as os from 'os';
import { activateTagClosing, AutoCloseResult } from './tagClosing';
import { Commands } from './commands';
import { onConfigurationChange, subscribeJDKChangeConfiguration } from './settings';
import { getXMLConfiguration, onConfigurationChange, subscribeJDKChangeConfiguration } from './settings';
import { collectXmlJavaExtensions, onExtensionChange } from './plugin';
import { markdownPreviewProvider } from "./markdownPreviewProvider";

Expand Down Expand Up @@ -203,7 +203,7 @@ export function activate(context: ExtensionContext) {
}
}

let serverOptions = prepareExecutable(requirements, collectXmlJavaExtensions(extensions.all), context);
let serverOptions = prepareExecutable(requirements, collectXmlJavaExtensions(extensions.all, getXMLConfiguration().get("extension.jars", [])), context);
languageClient = new LanguageClient('xml', 'XML Support', serverOptions, clientOptions);
let toDispose = context.subscriptions;
let disposable = languageClient.start();
Expand Down Expand Up @@ -245,7 +245,7 @@ export function activate(context: ExtensionContext) {

if (extensions.onDidChange) {// Theia doesn't support this API yet
context.subscriptions.push(extensions.onDidChange(() => {
onExtensionChange(extensions.all);
onExtensionChange(extensions.all, getXMLConfiguration().get("extension.jars", []));
}));
}

Expand Down
9 changes: 6 additions & 3 deletions src/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const glob = require('glob');

let existingExtensions: Array<string>;

export function collectXmlJavaExtensions(extensions: readonly vscode.Extension<any>[]): string[] {
export function collectXmlJavaExtensions(extensions: readonly vscode.Extension<any>[], jars: string[]): string[] {
const result = [];
if (extensions && extensions.length) {
for (const extension of extensions) {
Expand All @@ -22,17 +22,20 @@ export function collectXmlJavaExtensions(extensions: readonly vscode.Extension<a
}
}
}
for (const extension of jars) {
result.push(...glob.sync(extension));
}
// Make a copy of extensions:
existingExtensions = result.slice();
return result;
}

export function onExtensionChange(extensions: readonly vscode.Extension<any>[]) {
export function onExtensionChange(extensions: readonly vscode.Extension<any>[], jars: string[]) {
if (!existingExtensions) {
return;
}
const oldExtensions = new Set(existingExtensions.slice());
const newExtensions = collectXmlJavaExtensions(extensions);
const newExtensions = collectXmlJavaExtensions(extensions, jars);
let hasChanged = ( oldExtensions.size !== newExtensions.length);
if (!hasChanged) {
for (const newExtension of newExtensions) {
Expand Down

0 comments on commit 690d469

Please sign in to comment.