From 2e1b65aafe55776c8109bbd5edd77f24ba21c295 Mon Sep 17 00:00:00 2001 From: Ravi Chande Date: Wed, 4 Oct 2017 14:52:04 -0700 Subject: [PATCH 1/2] Consume the completion trigger character API Also take a dependency on version 1.17 where it was added --- package.json | 30 +++++++++++++++++++------- src/features/completionItemProvider.ts | 8 +++++-- src/omnisharp/extension.ts | 2 +- src/omnisharp/protocol.ts | 1 + 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 1dee52f4c..0c428602b 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "tslint-microsoft-contrib": "^2.0.12", "typescript": "^2.0.3", "vsce": "^1.7.0", - "vscode": "^1.0.3" + "vscode": "^1.1.5" }, "runtimeDependencies": [ { @@ -190,7 +190,7 @@ } ], "engines": { - "vscode": "^1.12.0" + "vscode": "^1.17.0" }, "activationEvents": [ "onLanguage:csharp", @@ -444,13 +444,11 @@ "razor" ] }, - "runtime": "node", "runtimeArgs": [], "variables": { "pickProcess": "csharp.listProcess", "pickRemoteProcess": "csharp.listRemoteProcess" }, - "program": "./out/src/coreclr-debug/proxy.js", "aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217", "configurationAttributes": { "launch": { @@ -1360,7 +1358,16 @@ "request": "attach", "processId": "${command:pickProcess}" } - ] + ], + "windows": { + "program": "./.debugger/vsdbg-ui.exe" + }, + "osx": { + "program": "./.debugger/vsdbg-ui" + }, + "linux": { + "program": "./.debugger/vsdbg-ui" + } }, { "type": "clr", @@ -1371,13 +1378,11 @@ "razor" ] }, - "runtime": "node", "runtimeArgs": [], "variables": { "pickProcess": "csharp.listProcess", "pickRemoteProcess": "csharp.listRemoteProcess" }, - "program": "./out/src/coreclr-debug/proxy.js", "aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217", "configurationAttributes": { "launch": { @@ -2140,8 +2145,17 @@ } } } + }, + "windows": { + "program": "./.debugger/vsdbg-ui.exe" + }, + "osx": { + "program": "./.debugger/vsdbg-ui" + }, + "linux": { + "program": "./.debugger/vsdbg-ui" } } ] } -} +} \ No newline at end of file diff --git a/src/features/completionItemProvider.ts b/src/features/completionItemProvider.ts index c2187f671..c1a79d1b0 100644 --- a/src/features/completionItemProvider.ts +++ b/src/features/completionItemProvider.ts @@ -10,7 +10,7 @@ import AbstractSupport from './abstractProvider'; import * as protocol from '../omnisharp/protocol'; import * as serverUtils from '../omnisharp/utils'; import {createRequest} from '../omnisharp/typeConvertion'; -import {CompletionItemProvider, CompletionItem, CompletionItemKind, CancellationToken, TextDocument, Range, Position} from 'vscode'; +import {CompletionItemProvider, CompletionItem, CompletionItemKind, CompletionContext, CompletionTriggerKind, CancellationToken, TextDocument, Range, Position} from 'vscode'; export default class OmniSharpCompletionItemProvider extends AbstractSupport implements CompletionItemProvider { @@ -25,7 +25,7 @@ export default class OmniSharpCompletionItemProvider extends AbstractSupport imp ';', '+', '-', '*', '/', '%', '&', '|', '^', '!', '~', '=', '<', '>', '?', '@', '#', '\'', '\"', '\\']; - public provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken): Promise { + public provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken, context: CompletionContext): Promise { let wordToComplete = ''; let range = document.getWordRangeAtPosition(position); @@ -38,6 +38,10 @@ export default class OmniSharpCompletionItemProvider extends AbstractSupport imp req.WantDocumentationForEveryCompletionResult = true; req.WantKind = true; req.WantReturnType = true; + if (context.triggerKind == CompletionTriggerKind.TriggerCharacter) + { + req.TriggerCharacter = context.triggerCharacter; + } return serverUtils.autoComplete(this._server, req).then(responses => { diff --git a/src/omnisharp/extension.ts b/src/omnisharp/extension.ts index f1df05371..012edf2ab 100644 --- a/src/omnisharp/extension.ts +++ b/src/omnisharp/extension.ts @@ -66,7 +66,7 @@ export function activate(context: vscode.ExtensionContext, reporter: TelemetryRe localDisposables.push(vscode.languages.registerDocumentRangeFormattingEditProvider(documentSelector, new FormatProvider(server, reporter))); localDisposables.push(vscode.languages.registerOnTypeFormattingEditProvider(documentSelector, new FormatProvider(server, reporter), '}', ';')); } - localDisposables.push(vscode.languages.registerCompletionItemProvider(documentSelector, new CompletionItemProvider(server, reporter), '.')); + localDisposables.push(vscode.languages.registerCompletionItemProvider(documentSelector, new CompletionItemProvider(server, reporter), '.', ' ')); localDisposables.push(vscode.languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider(server, reporter))); localDisposables.push(vscode.languages.registerSignatureHelpProvider(documentSelector, new SignatureHelpProvider(server, reporter), '(', ',')); const codeActionProvider = new CodeActionProvider(server, reporter); diff --git a/src/omnisharp/protocol.ts b/src/omnisharp/protocol.ts index 629a3d728..e54c61b3d 100644 --- a/src/omnisharp/protocol.ts +++ b/src/omnisharp/protocol.ts @@ -256,6 +256,7 @@ export interface AutoCompleteRequest extends Request { WantSnippet?: boolean; WantReturnType?: boolean; WantKind?: boolean; + TriggerCharacter?: string; } export interface AutoCompleteResponse { From 51ac521651f51f260fb81df4835665267ce85cc4 Mon Sep 17 00:00:00 2001 From: Ravi Chande Date: Wed, 4 Oct 2017 15:38:14 -0700 Subject: [PATCH 2/2] Remove spurious package.json changes --- package.json | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 0c428602b..676c619c3 100644 --- a/package.json +++ b/package.json @@ -444,11 +444,13 @@ "razor" ] }, + "runtime": "node", "runtimeArgs": [], "variables": { "pickProcess": "csharp.listProcess", "pickRemoteProcess": "csharp.listRemoteProcess" }, + "program": "./out/src/coreclr-debug/proxy.js", "aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217", "configurationAttributes": { "launch": { @@ -1358,16 +1360,7 @@ "request": "attach", "processId": "${command:pickProcess}" } - ], - "windows": { - "program": "./.debugger/vsdbg-ui.exe" - }, - "osx": { - "program": "./.debugger/vsdbg-ui" - }, - "linux": { - "program": "./.debugger/vsdbg-ui" - } + ] }, { "type": "clr", @@ -1378,11 +1371,13 @@ "razor" ] }, + "runtime": "node", "runtimeArgs": [], "variables": { "pickProcess": "csharp.listProcess", "pickRemoteProcess": "csharp.listRemoteProcess" }, + "program": "./out/src/coreclr-debug/proxy.js", "aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217", "configurationAttributes": { "launch": { @@ -2145,15 +2140,6 @@ } } } - }, - "windows": { - "program": "./.debugger/vsdbg-ui.exe" - }, - "osx": { - "program": "./.debugger/vsdbg-ui" - }, - "linux": { - "program": "./.debugger/vsdbg-ui" } } ]