From 5f0c1dcd897b58f3c6ef00114d7b50dc577b228e Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Thu, 18 May 2017 11:03:17 -0700 Subject: [PATCH 1/3] Add default completion commit characters --- src/features/completionItemProvider.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/features/completionItemProvider.ts b/src/features/completionItemProvider.ts index 2958f337a..dfec97e34 100644 --- a/src/features/completionItemProvider.ts +++ b/src/features/completionItemProvider.ts @@ -14,6 +14,12 @@ import {CompletionItemProvider, CompletionItem, CompletionItemKind, Cancellation export default class OmniSharpCompletionItemProvider extends AbstractSupport implements CompletionItemProvider { + // copied from Roslyn here: https://github.com/dotnet/roslyn/blob/6e8f6d600b6c4bc0b92bc3d782a9e0b07e1c9f8e/src/Features/Core/Portable/Completion/CompletionRules.cs#L166-L169 + private static DefaultCommitCharacters = [ + ' ', '{', '}', '[', ']', '(', ')', '.', ',', ':', + ';', '+', '-', '*', '/', '%', '&', '|', '^', '!', + '~', '=', '<', '>', '?', '@', '#', '\'', '\"', '\\']; + public provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken): Promise { let wordToComplete = ''; @@ -49,6 +55,7 @@ export default class OmniSharpCompletionItemProvider extends AbstractSupport imp completion.documentation = extractSummaryText(response.Description); completion.kind = _kinds[response.Kind] || CompletionItemKind.Property; completion.insertText = response.CompletionText.replace(/<>/g, ''); + completion.commitCharacters = OmniSharpCompletionItemProvider.DefaultCommitCharacters; let array = completions[completion.label]; if (!array) { From 37255ef0551e3e4abce8b5cf14c9b565bc586e76 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Thu, 18 May 2017 14:22:44 -0700 Subject: [PATCH 2/3] Remove old keybindings for accepting completion --- package.json | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/package.json b/package.json index 186e9bf6d..30ca8b47e 100644 --- a/package.json +++ b/package.json @@ -553,21 +553,6 @@ "command": "o.showOutput", "key": "Ctrl+L L", "mac": "Cmd+L L" - }, - { - "key": "shift+0", - "command": "^acceptSelectedSuggestion", - "when": "editorTextFocus && suggestWidgetVisible && editorLangId == 'csharp' && suggestionSupportsAcceptOnKey" - }, - { - "key": "shift+9", - "command": "^acceptSelectedSuggestion", - "when": "editorTextFocus && suggestWidgetVisible && editorLangId == 'csharp' && suggestionSupportsAcceptOnKey" - }, - { - "key": ".", - "command": "^acceptSelectedSuggestion", - "when": "editorTextFocus && suggestWidgetVisible && editorLangId == 'csharp' && suggestionSupportsAcceptOnKey" } ], "snippets": [ From 6123fc7207d702939fc3030f92bc47cfa9387703 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Thu, 18 May 2017 15:39:40 -0700 Subject: [PATCH 3/3] A few tweaks that will work when OmniSharp is updated --- src/features/completionItemProvider.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/features/completionItemProvider.ts b/src/features/completionItemProvider.ts index dfec97e34..f2ce91996 100644 --- a/src/features/completionItemProvider.ts +++ b/src/features/completionItemProvider.ts @@ -46,7 +46,7 @@ export default class OmniSharpCompletionItemProvider extends AbstractSupport imp // transform AutoCompleteResponse to CompletionItem and // group by code snippet for (let response of responses) { - let completion = new CompletionItem(response.DisplayText); + let completion = new CompletionItem(response.CompletionText); completion.detail = response.ReturnType ? `${response.ReturnType} ${response.DisplayText}` @@ -105,11 +105,12 @@ _kinds['Parameter'] = CompletionItemKind.Variable; _kinds['RangeVariable'] = CompletionItemKind.Variable; // members +_kinds['Const'] = CompletionItemKind.Constant; _kinds['EnumMember'] = CompletionItemKind.EnumMember; _kinds['Event'] = CompletionItemKind.Event; _kinds['Field'] = CompletionItemKind.Field; -_kinds['Property'] = CompletionItemKind.Property; _kinds['Method'] = CompletionItemKind.Method; +_kinds['Property'] = CompletionItemKind.Property; // other stuff _kinds['Label'] = CompletionItemKind.Unit; // need a better option for this.