diff --git a/CHANGELOG.md b/CHANGELOG.md index 74bb3e675..0fc16000c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ Changes to Calva. ## [Unreleased] +- Fix: ["Go to definition" command fails](https://github.com/BetterThanTomorrow/calva/issues/636) - Fix: [Weird expand selection behavior near an anonymous function](https://github.com/BetterThanTomorrow/calva/issues/600) - Fix: [Backspace is not working properly in the output window](https://github.com/BetterThanTomorrow/calva/issues/700) diff --git a/src/extension.ts b/src/extension.ts index 890431870..d97f65246 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -166,7 +166,7 @@ function activate(context: vscode.ExtensionContext) { })); // Initial set of the provided contexts - vscode.commands.executeCommand("setContext", "calva:outputWindowActive", false); + outputWindow.setContextForOutputWindowActive(false); vscode.commands.executeCommand("setContext", "calva:launching", false); vscode.commands.executeCommand("setContext", "calva:connected", false); vscode.commands.executeCommand("setContext", "calva:connecting", false); @@ -205,6 +205,16 @@ function activate(context: vscode.ExtensionContext) { context.subscriptions.push(vscode.window.onDidChangeTextEditorSelection(event => { replHistory.setReplHistoryCommandsActiveContext(event.textEditor); })); + context.subscriptions.push(vscode.workspace.onDidCloseTextDocument(document => { + if (outputWindow.isResultsDoc(document)) { + outputWindow.setContextForOutputWindowActive(false); + } + })); + context.subscriptions.push(vscode.window.onDidChangeVisibleTextEditors(editors => { + if (!editors.some(editor => outputWindow.isResultsDoc(editor.document))) { + outputWindow.setContextForOutputWindowActive(false); + } + })); // Clojure debug adapter setup const provider = new debug.CalvaDebugConfigurationProvider(); diff --git a/src/providers/definition.ts b/src/providers/definition.ts index 714534c1b..02106c4b9 100644 --- a/src/providers/definition.ts +++ b/src/providers/definition.ts @@ -18,7 +18,7 @@ export class ClojureDefinitionProvider implements vscode.DefinitionProvider { const client = namespace.getSession(util.getFileType(document)); const info = await client.info(namespace.getNamespace(document), text); if (info.file && info.file.length > 0) { - const pos = new vscode.Position(info.line - 1, info.column); + const pos = new vscode.Position(info.line - 1, info.column || 0); try { return new vscode.Location(vscode.Uri.parse(info.file, true), pos); } catch(e) { /* ignore */ } diff --git a/src/results-output/results-doc.ts b/src/results-output/results-doc.ts index 1f4d4cc1d..dcda9bc9a 100644 --- a/src/results-output/results-doc.ts +++ b/src/results-output/results-doc.ts @@ -294,4 +294,5 @@ export function printStacktrace(trace: StackTrace): void { export { OnResultAppendedCallback, + setContextForOutputWindowActive };