From e59e3bd414e60165c398f1f3e43b941436856c02 Mon Sep 17 00:00:00 2001 From: Karl Goffin Date: Wed, 31 Oct 2018 23:52:20 -0400 Subject: [PATCH 1/3] #2063 only suggest exported member name at start of comment --- src/goSuggest.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/goSuggest.ts b/src/goSuggest.ts index 5a6696433..5ffe8f3ac 100644 --- a/src/goSuggest.ts +++ b/src/goSuggest.ts @@ -51,7 +51,7 @@ class ExtendedCompletionItem extends vscode.CompletionItem { fileName: string; } -const lineCommentRegex = /^\s*\/\/\s+/; +const lineCommentWithNoContentRegex = /^\s*\/\/\s+$/; const exportedMemberRegex = /(const|func|type|var)(\s+\(.*\))?\s+([A-Z]\w*)/; const gocodeNoSupportForgbMsgKey = 'dontshowNoSupportForgb'; @@ -133,8 +133,7 @@ export class GoCompletionItemProvider implements vscode.CompletionItemProvider { let autocompleteUnimportedPackages = config['autocompleteUnimportedPackages'] === true && !lineText.match(/^(\s)*(import|package)(\s)+/); // triggering completions in comments on exported members - if (lineCommentRegex.test(lineTillCurrentPosition) && position.line + 1 < document.lineCount) { - let nextLine = document.lineAt(position.line + 1).text.trim(); + if (lineCommentWithNoContentRegex.test(lineTillCurrentPosition) && position.line + 1 < document.lineCount) { let nextLine = document.lineAt(position.line + 1).text.trim(); let memberType = nextLine.match(exportedMemberRegex); let suggestionItem: vscode.CompletionItem; if (memberType && memberType.length === 4) { From 7d1e691fed7c62147575cfc04d22f9c6df44c9c2 Mon Sep 17 00:00:00 2001 From: Karl Goffin Date: Sun, 4 Nov 2018 01:17:49 -0500 Subject: [PATCH 2/3] #2063 still show Intellisense suggestion if first word matches --- src/goSuggest.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/goSuggest.ts b/src/goSuggest.ts index 5ffe8f3ac..92167db44 100644 --- a/src/goSuggest.ts +++ b/src/goSuggest.ts @@ -51,7 +51,7 @@ class ExtendedCompletionItem extends vscode.CompletionItem { fileName: string; } -const lineCommentWithNoContentRegex = /^\s*\/\/\s+$/; +const lineCommentFirstWordRegex = /^\s*\/\/\s+[\w_]*$/; const exportedMemberRegex = /(const|func|type|var)(\s+\(.*\))?\s+([A-Z]\w*)/; const gocodeNoSupportForgbMsgKey = 'dontshowNoSupportForgb'; @@ -133,10 +133,11 @@ export class GoCompletionItemProvider implements vscode.CompletionItemProvider { let autocompleteUnimportedPackages = config['autocompleteUnimportedPackages'] === true && !lineText.match(/^(\s)*(import|package)(\s)+/); // triggering completions in comments on exported members - if (lineCommentWithNoContentRegex.test(lineTillCurrentPosition) && position.line + 1 < document.lineCount) { let nextLine = document.lineAt(position.line + 1).text.trim(); + if (lineCommentFirstWordRegex.test(lineTillCurrentPosition) && position.line + 1 < document.lineCount) { let nextLine = document.lineAt(position.line + 1).text.trim(); let memberType = nextLine.match(exportedMemberRegex); let suggestionItem: vscode.CompletionItem; - if (memberType && memberType.length === 4) { + let firstWordOrEmptyString = (lineTillCurrentPosition.match(/[\w_]*/) || [''])[0]; + if (memberType && memberType.length === 4 && memberType[3].startsWith(firstWordOrEmptyString)) { suggestionItem = new vscode.CompletionItem(memberType[3], vscodeKindFromGoCodeClass(memberType[1], '')); } return resolve(suggestionItem ? [suggestionItem] : []); From 7d366c3fe04da6c0b0bc716c9d2ce034119959fe Mon Sep 17 00:00:00 2001 From: Karl Goffin Date: Sun, 11 Nov 2018 11:59:15 -0500 Subject: [PATCH 3/3] #2063 fixes from code review comments --- src/goSuggest.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/goSuggest.ts b/src/goSuggest.ts index 92167db44..0a6d0c82f 100644 --- a/src/goSuggest.ts +++ b/src/goSuggest.ts @@ -51,7 +51,7 @@ class ExtendedCompletionItem extends vscode.CompletionItem { fileName: string; } -const lineCommentFirstWordRegex = /^\s*\/\/\s+[\w_]*$/; +const lineCommentFirstWordRegex = /^\s*\/\/\s+[\S]*$/; const exportedMemberRegex = /(const|func|type|var)(\s+\(.*\))?\s+([A-Z]\w*)/; const gocodeNoSupportForgbMsgKey = 'dontshowNoSupportForgb'; @@ -133,15 +133,15 @@ export class GoCompletionItemProvider implements vscode.CompletionItemProvider { let autocompleteUnimportedPackages = config['autocompleteUnimportedPackages'] === true && !lineText.match(/^(\s)*(import|package)(\s)+/); // triggering completions in comments on exported members - if (lineCommentFirstWordRegex.test(lineTillCurrentPosition) && position.line + 1 < document.lineCount) { let nextLine = document.lineAt(position.line + 1).text.trim(); + if (lineCommentFirstWordRegex.test(lineTillCurrentPosition) && position.line + 1 < document.lineCount) { + let nextLine = document.lineAt(position.line + 1).text.trim(); let memberType = nextLine.match(exportedMemberRegex); let suggestionItem: vscode.CompletionItem; - let firstWordOrEmptyString = (lineTillCurrentPosition.match(/[\w_]*/) || [''])[0]; - if (memberType && memberType.length === 4 && memberType[3].startsWith(firstWordOrEmptyString)) { - suggestionItem = new vscode.CompletionItem(memberType[3], vscodeKindFromGoCodeClass(memberType[1], '')); + if (memberType && memberType.length === 4) { + suggestionItem = new vscode.CompletionItem(memberType[3], vscodeKindFromGoCodeClass(memberType[1], '')); + } + return resolve(suggestionItem ? [suggestionItem] : []); } - return resolve(suggestionItem ? [suggestionItem] : []); - } // prevent completion when typing in a line comment that doesnt start from the beginning of the line const commentIndex = lineText.indexOf('//'); if (commentIndex >= 0 && position.character > commentIndex) {