diff --git a/package.json b/package.json index 2c2f2b77..e4bd1208 100644 --- a/package.json +++ b/package.json @@ -538,11 +538,6 @@ } ], "editor/title": [ - { - "command": "vscode-objectscript.ccs.goToDefinition", - "group": "navigation@0", - "when": "editorTextFocus && editorLangId =~ /^objectscript/" - }, { "command": "-editor.action.revealDefinition", "group": "navigation@0", diff --git a/src/ccs/providers/DefinitionDocumentLinkProvider.ts b/src/ccs/providers/DefinitionDocumentLinkProvider.ts index 7fea9574..ed0cf332 100644 --- a/src/ccs/providers/DefinitionDocumentLinkProvider.ts +++ b/src/ccs/providers/DefinitionDocumentLinkProvider.ts @@ -48,7 +48,8 @@ export class DefinitionDocumentLinkProvider implements vscode.DocumentLinkProvid ); return queries.map((match) => { - const args = [document.uri.toString(), match.range.start.line, match.range.start.character]; + const targetPosition = this.getDefinitionPosition(match.range); + const args = [document.uri.toString(), targetPosition.line, targetPosition.character]; const commandUri = vscode.Uri.parse( `command:${followDefinitionLinkCommand}?${encodeURIComponent(JSON.stringify(args))}` ); @@ -58,6 +59,15 @@ export class DefinitionDocumentLinkProvider implements vscode.DocumentLinkProvid }); } + private getDefinitionPosition(range: vscode.Range): vscode.Position { + const { start, end } = range; + if (end.isAfter(start)) { + const character = Math.max(start.character, end.character - 1); + return new vscode.Position(start.line, character); + } + return start; + } + public dispose(): void { for (const timeout of this.refreshTimeouts.values()) { clearTimeout(timeout);