Concretely
Navigate to concrete implementations of abstract classes and interfaces directly from your code — IntelliJ-style CodeLens for TypeScript and JavaScript.
Features
Usage-side CodeLens — When you call a method on an abstract/interface-typed property, a clickable lens appears at the start of the line:
// ↓ → CaradhrasP2PTransferService (go to implementation)
await this.p2pTransferService.transfer(transfer, listeners);
Definition-side CodeLens — On abstract method declarations, a lens lists all classes that implement or extend the method:
// ↓ → 2 implementations — click to choose
abstract transfer(transfer: P2PTransfer, listeners: P2PTransferListeners): Promise<void>;
Clicking a lens with multiple implementations opens a quick-pick menu to choose which one to navigate to.
How it works
- Uses the TypeScript language server for usage-side type resolution
- Falls back to workspace-wide regex scan when the language server returns no results
- Supports both
extends and implements patterns
- Excludes
node_modules and .d.ts files
Settings
| Setting |
Default |
Description |
concretely.enable |
true |
Enable/disable CodeLens |
concretely.showGutterIcon |
true |
Show gutter dot on matched lines |
Supported Languages
TypeScript, JavaScript, TSX, JSX