From 68a8d1ffb12664af67cb856e59715d0e9958480c Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Tue, 14 Nov 2017 18:57:37 -0800 Subject: [PATCH] Show error in references codelens instead of 0 Fixes #1336 --- src/goReferences.ts | 19 +++++++++++-------- src/goReferencesCodelens.ts | 28 ++++++++++++++-------------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/goReferences.ts b/src/goReferences.ts index 221180bf1..a9c7d6658 100644 --- a/src/goReferences.ts +++ b/src/goReferences.ts @@ -19,30 +19,33 @@ export class GoReferenceProvider implements vscode.ReferenceProvider { private doFindReferences(document: vscode.TextDocument, position: vscode.Position, options: { includeDeclaration: boolean }, token: vscode.CancellationToken): Thenable { return new Promise((resolve, reject) => { - let filename = canonicalizeGOPATHPrefix(document.fileName); - let cwd = path.dirname(filename); - // get current word let wordRange = document.getWordRangeAtPosition(position); if (!wordRange) { return resolve([]); } + let goGuru = getBinPath('guru'); + if (!path.isAbsolute(goGuru)) { + promptForMissingTool('guru'); + return reject('Cannot find tool "guru" to find references.'); + } + + let filename = canonicalizeGOPATHPrefix(document.fileName); + let cwd = path.dirname(filename); let offset = byteOffsetAt(document, position); let env = getToolsEnvVars(); - let goGuru = getBinPath('guru'); let buildTags = '"' + vscode.workspace.getConfiguration('go', document.uri)['buildTags'] + '"'; - let process = cp.execFile(goGuru, ['-modified', '-tags', buildTags, 'referrers', `${filename}:#${offset.toString()}`], {env}, (err, stdout, stderr) => { + let process = cp.execFile(goGuru, ['-modified', '-tags', buildTags, 'referrers', `${filename}:#${offset.toString()}`], { env }, (err, stdout, stderr) => { try { if (err && (err).code === 'ENOENT') { promptForMissingTool('guru'); - return resolve([]); + return reject('Cannot find tool "guru" to find references.') } if (err && (err).killed !== true) { - console.log(err); - return resolve([]); + return reject(`Error running guru: ${err.message || stderr}`); } let lines = stdout.toString().split('\n'); diff --git a/src/goReferencesCodelens.ts b/src/goReferencesCodelens.ts index b0a44b354..d600281c7 100644 --- a/src/goReferencesCodelens.ts +++ b/src/goReferencesCodelens.ts @@ -56,20 +56,20 @@ export class GoReferencesCodeLensProvider extends GoBaseCodeLensProvider { }; let referenceProvider = new GoReferenceProvider(); return referenceProvider.provideReferences(codeLens.document, codeLens.range.start, options, token).then(references => { - if (references) { - codeLens.command = { - title: references.length === 1 - ? '1 reference' - : references.length + ' references', - command: 'editor.action.showReferences', - arguments: [codeLens.document.uri, codeLens.range.start, references] - }; - } else { - codeLens.command = { - title: 'No references found', - command: '' - }; - } + codeLens.command = { + title: references.length === 1 + ? '1 reference' + : references.length + ' references', + command: 'editor.action.showReferences', + arguments: [codeLens.document.uri, codeLens.range.start, references] + }; + return codeLens; + }, err => { + console.log(err); + codeLens.command = { + title: 'Error finding references', + command: '' + }; return codeLens; }); }