Skip to content

Commit ec7e863

Browse files
committed
make find references a generic go to "definition" command like other symbol navigation commands
1 parent 7fcda49 commit ec7e863

5 files changed

Lines changed: 179 additions & 153 deletions

File tree

src/vs/editor/contrib/goToDefinition/goToDefinition.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { onUnexpectedExternalError } from 'vs/base/common/errors';
99
import { registerDefaultLanguageCommand } from 'vs/editor/browser/editorExtensions';
1010
import { Position } from 'vs/editor/common/core/position';
1111
import { ITextModel } from 'vs/editor/common/model';
12-
import { LocationLink, DefinitionProviderRegistry, ImplementationProviderRegistry, TypeDefinitionProviderRegistry, DeclarationProviderRegistry, ProviderResult } from 'vs/editor/common/modes';
12+
import { LocationLink, DefinitionProviderRegistry, ImplementationProviderRegistry, TypeDefinitionProviderRegistry, DeclarationProviderRegistry, ProviderResult, ReferenceProviderRegistry } from 'vs/editor/common/modes';
1313
import { LanguageFeatureRegistry } from 'vs/editor/common/modes/languageFeatureRegistry';
1414

1515

@@ -58,7 +58,14 @@ export function getTypeDefinitionsAtPosition(model: ITextModel, position: Positi
5858
});
5959
}
6060

61+
export function getReferencesAtPosition(model: ITextModel, position: Position, token: CancellationToken): Promise<LocationLink[]> {
62+
return getLocationLinks(model, position, ReferenceProviderRegistry, (provider, model, position) => {
63+
return provider.provideReferences(model, position, { includeDeclaration: true }, token);
64+
});
65+
}
66+
6167
registerDefaultLanguageCommand('_executeDefinitionProvider', (model, position) => getDefinitionsAtPosition(model, position, CancellationToken.None));
6268
registerDefaultLanguageCommand('_executeDeclarationProvider', (model, position) => getDeclarationsAtPosition(model, position, CancellationToken.None));
6369
registerDefaultLanguageCommand('_executeImplementationProvider', (model, position) => getImplementationsAtPosition(model, position, CancellationToken.None));
6470
registerDefaultLanguageCommand('_executeTypeDefinitionProvider', (model, position) => getTypeDefinitionsAtPosition(model, position, CancellationToken.None));
71+
registerDefaultLanguageCommand('_executeReferenceProvider', (model, position) => getReferencesAtPosition(model, position, CancellationToken.None));

src/vs/editor/contrib/goToDefinition/goToDefinitionAtPosition.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { ITextModelService } from 'vs/editor/common/services/resolverService';
2121
import { registerThemingParticipant } from 'vs/platform/theme/common/themeService';
2222
import { editorActiveLinkForeground } from 'vs/platform/theme/common/colorRegistry';
2323
import { EditorState, CodeEditorStateFlag } from 'vs/editor/browser/core/editorState';
24-
import { DefinitionAction, SymbolNavigationActionConfig } from './goToDefinitionCommands';
24+
import { DefinitionAction } from './goToDefinitionCommands';
2525
import { ClickLinkGesture, ClickLinkMouseEvent, ClickLinkKeyboardEvent } from 'vs/editor/contrib/goToDefinition/clickLinkGesture';
2626
import { IWordAtPosition, IModelDeltaDecoration, ITextModel, IFoundBracket } from 'vs/editor/common/model';
2727
import { Position } from 'vs/editor/common/core/position';
@@ -332,9 +332,9 @@ export class GotoDefinitionAtPositionEditorContribution implements editorCommon.
332332
return getDefinitionsAtPosition(model, position, token);
333333
}
334334

335-
private gotoDefinition(position: Position, sideBySide: boolean): Promise<any> {
335+
private gotoDefinition(position: Position, openToSide: boolean): Promise<any> {
336336
this.editor.setPosition(position);
337-
const action = new DefinitionAction(new SymbolNavigationActionConfig(sideBySide, false, true, false), { alias: '', label: '', id: '', precondition: undefined });
337+
const action = new DefinitionAction({ openToSide, openInPeek: false, muteMessage: true }, { alias: '', label: '', id: '', precondition: undefined });
338338
return this.editor.invokeWithinContext(accessor => action.run(accessor, this.editor));
339339
}
340340

0 commit comments

Comments
 (0)