Update to lsp protocol v3

This commit is contained in:
Kris De Volder
2017-04-19 13:41:47 -07:00
parent 8af1d9f0c4
commit a83fbec945
18 changed files with 121 additions and 100 deletions

View File

@@ -8,7 +8,7 @@
"author": "Kris De Volder <kdevolder@pivotal.io>",
"engines": {
"node": ">=4.0.0",
"vscode": "^1.5.0"
"vscode": "^1.6.0"
},
"keywords": [
""
@@ -27,9 +27,9 @@
"portfinder": "^0.4.0"
},
"devDependencies": {
"typescript": "2.0.x",
"@types/node": "6.0.40",
"vscode": "^1.0.0",
"vscode-languageclient": "^2.6.2"
"typescript": "^2.3.0",
"@types/node": "^6.0.68",
"vscode": "^1.1.0",
"vscode-languageclient": "^3.2.0"
}
}

View File

@@ -12,10 +12,12 @@ import * as Net from 'net';
import * as ChildProcess from 'child_process';
import { RequestType, LanguageClient, LanguageClientOptions, SettingMonitor, ServerOptions, StreamInfo } from 'vscode-languageclient';
import { TextDocument, OutputChannel, Disposable, window } from 'vscode';
import { Trace } from 'vscode-jsonrpc';
import * as p2c from 'vscode-languageclient/lib/protocolConverter';
import { Trace, NotificationType } from 'vscode-jsonrpc';
import * as P2C from 'vscode-languageclient/lib/protocolConverter';
import {WorkspaceEdit} from 'vscode-languageserver-types';
let p2c = P2C.createConverter();
PortFinder.basePort = 45556;
const DEBUG_ARG = '-agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=y';
@@ -37,10 +39,10 @@ interface QuickfixRequest {
export function activate(options: ActivatorOptions, context: VSCode.ExtensionContext): Promise<LanguageClient> {
let clientPromise = _activate(options, context);
let commands = VSCode.commands
let commands = VSCode.commands;
commands.registerCommand("sts.quickfix."+options.extensionId, (fixType, fixParams) => {
return clientPromise.then(client => {
let type : RequestType<QuickfixRequest, WorkspaceEdit, void> = {method : "sts/quickfix"};
let type = new RequestType<QuickfixRequest, WorkspaceEdit, any, void>("sts/quickfix");
let params : QuickfixRequest = {type: fixType, params: fixParams};
return client.sendRequest(type, params)
.then(
@@ -137,7 +139,7 @@ function _activate(options: ActivatorOptions, context: VSCode.ExtensionContext):
});
}
return Promise.resolve(setupLanguageClient(context, createServer, options));
return setupLanguageClient(context, createServer, options);
});
}
}
@@ -156,10 +158,10 @@ function connectToLS(context: VSCode.ExtensionContext, options: ActivatorOptions
return Promise.resolve(result);
};
return Promise.resolve(setupLanguageClient(context, serverOptions, options));
return setupLanguageClient(context, serverOptions, options);
}
function setupLanguageClient(context: VSCode.ExtensionContext, createServer: ServerOptions, options: ActivatorOptions): LanguageClient {
function setupLanguageClient(context: VSCode.ExtensionContext, createServer: ServerOptions, options: ActivatorOptions): Promise<LanguageClient> {
// Create the language client and start the client.
let client = new LanguageClient(options.extensionId, options.extensionId,
createServer, options.clientOptions
@@ -168,20 +170,21 @@ function setupLanguageClient(context: VSCode.ExtensionContext, createServer: Ser
client.trace = Trace.Verbose;
}
let progressService = new ProgressService();
client.onNotification({ method: "sts/progress" }, (params: ProgressParams) => {
progressService.handle(params);
});
let progressNotification = new NotificationType<ProgressParams,void>("sts/progress");
let disposable = client.start();
// Push the disposable to the context's subscriptions so that the
// client can be deactivated on extension deactivation
let progressService = new ProgressService();
context.subscriptions.push(disposable);
context.subscriptions.push(progressService);
return client
return client.onReady().then(() => {
client.onNotification(progressNotification, (params: ProgressParams) => {
progressService.handle(params);
});
return client;
});
}
function isJava8(javaExecutablePath: string): Promise<boolean> {
return new Promise((resolve, reject) => {
let result = ChildProcess.execFile(javaExecutablePath, ['-version'], {}, (error, stdout, stderr) => {
@@ -255,5 +258,4 @@ class ProgressService {
}
this.status = null;
}
}

View File

@@ -12,7 +12,7 @@
"license": "EPL-1.0",
"engines": {
"npm": "^3.0.0",
"vscode": "^1.5.0"
"vscode": "^1.6.0"
},
"categories": [
"Languages",
@@ -35,13 +35,13 @@
"vsce-package": "vsce package"
},
"dependencies": {
"vscode-languageclient": "2.5.x",
"vscode-languageclient": "^3.2.0",
"commons-vscode": "^0.0.1"
},
"devDependencies": {
"vsce": "^1.17.0",
"typescript": "^2.0.x",
"@types/node": "^6.0.40",
"vscode": "^1.0.0"
"typescript": "^2.3.0",
"@types/node": "^6.0.68",
"vscode": "^1.1.0"
}
}

View File

@@ -36,13 +36,7 @@ export function activate(context: VSCode.ExtensionContext) {
// for application.yml files
<any> {language: 'yaml', pattern: '**/application*.yml'}
],
synchronize: {
// TODO: Remove textDocumentFilter property ones https://github.com/Microsoft/vscode-languageserver-node/issues/9 is resolved
textDocumentFilter: function(textDocument : TextDocument) : boolean {
return /^(.*\/)?application[^\s\\/]*.(yml|properties)$/i.test(textDocument.fileName);
}
}
]
}
};
commons.activate(options, context);

View File

@@ -12,7 +12,7 @@
"license": "EPL-1.0",
"engines": {
"npm": "^3.0.0",
"vscode": "^1.5.0"
"vscode": "^1.6.0"
},
"categories": [
"Languages",
@@ -37,13 +37,13 @@
"vsce-package": "vsce package"
},
"dependencies": {
"vscode-languageclient": "2.5.x",
"vscode-languageclient": "^3.2.0",
"commons-vscode": "^0.0.1"
},
"devDependencies": {
"vsce": "^1.17.0",
"typescript": "^2.0.x",
"@types/node": "^6.0.40",
"vscode": "^1.0.0"
"typescript": "^2.3.0",
"@types/node": "^6.0.68",
"vscode": "^1.1.0"
}
}

View File

@@ -37,14 +37,7 @@ export function activate(context: VSCode.ExtensionContext) {
fatJarFile: 'jars/language-server.jar',
jvmHeap: "48m",
clientOptions: {
documentSelector: [ PIPELINE_LANGUAGE_ID, TASK_LANGUAGE_ID ],
synchronize: {
// TODO: Remove textDocumentFilter property once https://github.com/Microsoft/vscode-languageserver-node/issues/9 is resolved
textDocumentFilter: function(textDocument : TextDocument) : boolean {
let languageId = textDocument.languageId;
return PIPELINE_LANGUAGE_ID===languageId || TASK_LANGUAGE_ID===languageId;
}
}
documentSelector: [ PIPELINE_LANGUAGE_ID, TASK_LANGUAGE_ID ]
}
};
let clientPromise = commons.activate(options, context);

View File

@@ -12,7 +12,7 @@
"license": "EPL-1.0",
"engines": {
"npm": "^3.0.0",
"vscode": "^1.5.0"
"vscode": "^1.6.0"
},
"categories": [
"Languages",
@@ -85,13 +85,13 @@
"vsce-package": "vsce package"
},
"dependencies": {
"vscode-languageclient": "2.5.x",
"vscode-languageclient": "^3.2.x",
"commons-vscode": "^0.0.1"
},
"devDependencies": {
"vsce": "^1.17.0",
"typescript": "^2.2.x",
"@types/node": "^6.0.40",
"vscode": "^1.0.0"
"typescript": "^2.3.0",
"@types/node": "^6.0.68",
"vscode": "^1.1.0"
}
}

View File

@@ -42,15 +42,7 @@ export function activate(context: VSCode.ExtensionContext) {
// events pass on to Language Server only for documents for which function passed via textDocumentFilter property return true
// TODO: Remove <any> cast ones https://github.com/Microsoft/vscode-languageserver-node/issues/9 is resolved
documentSelector: ["manifest-yaml"],
// documentSelector: [ <any> {language: 'yaml', pattern: '**/manifest*.yml'}],
synchronize: {
// TODO: Remove textDocumentFilter property once https://github.com/Microsoft/vscode-languageserver-node/issues/9 is resolved
textDocumentFilter: function(textDocument : TextDocument) : boolean {
let result : boolean = /^(.*\/)?manifest[^\s\\/]*.yml$/i.test(textDocument.fileName);
return result;
}
}
documentSelector: ["manifest-yaml"]
}
};
commons.activate(options, context);

View File

@@ -12,7 +12,7 @@
"license": "EPL-1.0",
"engines": {
"npm": "^3.0.0",
"vscode": "^1.5.0"
"vscode": "^1.6.0"
},
"categories": [
"Languages",
@@ -63,13 +63,13 @@
"vsce-package": "vsce package"
},
"dependencies": {
"vscode-languageclient": "2.5.x",
"vscode-languageclient": "^3.2.0",
"commons-vscode": "^0.0.1"
},
"devDependencies": {
"vsce": "^1.17.0",
"typescript": "^2.0.x",
"@types/node": "^6.0.40",
"vscode": "^1.0.0"
"typescript": "^2.3.0",
"@types/node": "^6.0.68",
"vscode": "^1.1.0"
}
}

View File

@@ -11,7 +11,7 @@
},
"license": "EPL",
"engines": {
"vscode": "*"
"vscode": "^1.6.0"
},
"categories": [
"Languages"