
"Claude Code today. Cursor AI tomorrow. Different shortcuts, different muscle memory."
RangeLink ends it. One keybinding. Any AI, any tool. Character-level precision. recipes/baking/chickenpie.ts#L3C14-L314C16
Why RangeLink?
Every AI coding assistant has its own way to share code — different shortcuts, different formats, different muscle memory. If you use multiple AI tools, you're constantly context-switching.
RangeLink unifies it:
- One keybinding —
Cmd+R Cmd+L works with Claude Code, Gemini Code Assist, Copilot, Cursor, terminal tools, text editors. Learn once, use everywhere.
- Better precision — Character-level ranges, not just lines. Share exactly what matters.
- Universal format — GitHub-style links work in PRs, Slack, docs. Not proprietary.
- AI-agnostic — Your workflow doesn't change when you switch AI tools. Bring your own — if it has a VS Code extension with a focus command, or runs in a terminal, RangeLink can paste into it.
For AI-Assisted Development
Using Claude Code, Gemini Code Assist, Cursor, Copilot, or any other AI tool — in an extension or terminal? RangeLink eliminates the context-sharing friction:
- Select code → Generate link (
Cmd+R Cmd+L)
- Destination handles delivery → Link appears where your AI can see it
- AI reads precise context → No manual copy/paste, no lost focus
- AI responds with links → Click to jump directly to code (Cmd+Click in terminal or editor)
Compete with built-in AI features by making external AI assistants feel integrated. You get:
- ⚡ Zero-friction AI context — Destinations auto-send links. No clipboard juggling.
- 🎯 Choice of AI tool — Claude Code, Gemini Code Assist, Copilot, Cursor, terminal CLI tools, anything. Not locked into one vendor or one interface.
- 📐 Full control over context — Character-level precision (
#L42C10), not just line-level.
- 🔗 Cross-file context — Generate links from multiple files, paste all in one prompt.
- 🌐 Universal compatibility — Works across editors (VSCode, Cursor) and in any text-based tool.
Perfect For
- 🤖 AI assistants — Claude Code (extension or terminal), Gemini Code Assist, Cursor AI, Copilot, plus any custom AI tool via settings — with exact context + clickable navigation
- 💻 Terminal AI tools — Claude Code CLI, gemini-cli, or any terminal-based AI workflow — links paste at your cursor and the terminal auto-focuses
- 💬 Code reviews — "The bug is in
api/routes.ts#L215C8-L223C45" (click to view)
- 👥 Team collaboration — Universal format everyone can use and navigate
Quick Start
Installation
- Open VSCode or Cursor
- Go to Extensions (
Ctrl+Shift+X / Cmd+Shift+X)
- Search for "RangeLink"
- Click Install
Basic Usage
- Select text in the editor (non-empty selection required)
- Press
Cmd+R Cmd+L (Mac) or Ctrl+R Ctrl+L (Windows/Linux)
- Link copied to clipboard!
Example output:
recipes/baking/chickenpie.ts#L3C14-L15C9
Note: R then L - the letters stand for Range Link.
Features
🎯 Destinations
The killer feature for AI-assisted workflows: Auto-send generated links to your preferred destination.
RangeLink's unified pattern: All destinations share the same seamless workflow—links paste exactly at your insertion point, the destination auto-focuses, and you immediately continue typing. No copy/paste friction, no manual clicking, no context switching. This is what makes RangeLink competitive with integrated AI assistants like Cursor's Cmd+L, but works across any destination and any AI.
Send more than links:
Cmd+R Cmd+V — Paste your selection as-is (perfect for quick code snippets)
Cmd+R Cmd+F — Paste current file's path (Shift for absolute)
No destination bound? A quick pick menu appears so you can choose and bind in one action.
Pro tip: Power users rebind destinations on the fly. Working with Claude Code? Bind there. Switching to debug in terminal? Rebind with a right-click. Your workflow, your rules.
Terminal
Bind a terminal to RangeLink, and all generated links auto-paste directly there — even if you switch to other terminals for work.
Perfect for terminal-based AI workflows (claude-code CLI): Links paste exactly at your insertion point in the terminal (not appended at the end), and the terminal auto-focuses so you can immediately continue typing your prompt.
How to use:
- Open integrated terminal
- Bind using either:
- Command Palette → "Bind to Terminal" → pick from your open terminals
- Right-click terminal tab or right-click inside terminal → "RangeLink: Bind Here"
- RangeLink Menu (
Cmd+R Cmd+M) → select a terminal from the inline list
- Select code → Generate link → Link pastes at insertion point + terminal focuses automatically
Terminal Picker: When binding via Command Palette or RangeLink Menu, a QuickPick shows your eligible terminals. The currently bound terminal is marked "bound" and sorted first, followed by the active terminal marked "active". When a terminal is both bound and active, it shows "bound · active". With many terminals, extras collapse into "More terminals..." (configurable via rangelink.terminalPicker.maxInline) — the bound terminal is always visible, never hidden behind the overflow.
Text Editor
Build AI prompts in any text document before sending to your AI assistant? Bind any text editor as your destination—works with untitled files, markdown, code files, notes, anything text-based.
Perfect for complex prompts: Links paste exactly at your insertion point in the bound editor, and the editor auto-focuses so you can immediately continue typing.
How to use:
- Open a scratchpad file: untitled (
Cmd+N / Ctrl+N) or any text file
- Bind using either:
- Command Palette → "Bind to Text Editor"
- Right-click inside editor → "RangeLink: Bind Here"
- Select code in another file → Generate links → They paste at insertion point + editor focuses automatically
Workflow:
- Draft complex prompts - Gather multiple code references in one place (any file type)
- Review context - See all links together, validate navigation (Cmd+Click to test)
- Iterate on prompts - Edit, rearrange, add notes around links before sending to AI
Requirements:
- Writable text files only - Binary files (images, PDFs) and read-only views (git diffs, output panels) are blocked
- Different source and destination - If you try to paste to the same file you're selecting from, RangeLink copies to clipboard and shows a message (use R-C for intentional clipboard-only links)
When you close the bound file, RangeLink auto-unbinds with a notification. If the bound file is hidden behind other tabs, RangeLink automatically brings it to the foreground during paste.
File Picker : In the destination picker and RangeLink Menu, open text editor files appear as individual items. The active (frontmost) file per tab group is shown inline; if you have more open files, they collapse into "More files..." which opens a secondary picker organized into "Active Files" and per-"Tab Group N" sections. The currently bound file is marked "bound" and sorted to the top.
Pro tip: Split your editor into two panes (side-by-side or vertical) for the smoothest workflow — browse code on one side, build your prompt on the other. No tab switching needed.
AI Assistants (Built-in + Custom)
One keybinding to rule them all. AI assistants have their own ways to share code — different shortcuts, different formats, and only work with their AI. RangeLink unifies it all: one keybinding (Cmd+R Cmd+L), character-level precision (not just lines), and works with any AI assistant.
The precision advantage: Most AI code-sharing tools work at line-level precision. RangeLink goes deeper with character-level ranges (#L3C14-L15C9), letting you highlight exactly the function signature, the problematic condition, or that one sneaky semicolon — not the whole block.
Built-in AI assistants:
Bring Your Own AI Assistant : Any VS Code extension that exposes a focus command or a text-insertion command can be integrated as a RangeLink destination via settings. Three delivery tiers are supported — from direct text injection to manual paste — so RangeLink adapts to each extension's capabilities. See Custom AI Assistant Settings for configuration details.
How it works:
- Bind your AI assistant: Command Palette → "Bind to..." or R-D picker
- Select code →
Cmd+R Cmd+L → Link auto-pastes into chat
- Review and send
One destination at a time: Bind to Claude Code, Gemini Code Assist, Cursor AI, a custom AI tool, terminal, OR text editor. Quick switching: Run a different "Bind to..." command or use the R-D picker to replace your current binding with confirmation—no need to unbind first.
🖱️ Link Navigation
Click RangeLinks anywhere to jump directly to code — the perfect complement to destinations.
Terminal Navigation
Any RangeLink in your terminal becomes clickable — whether from claude-code responses, your own links you're validating before sending, or references shared by teammates:
- Cmd+Click (Mac) or Ctrl+Click (Windows/Linux) to navigate
- Instant file opening with precise caret positioning
- Works with all formats: single-line, ranges, columns, rectangular selections
- Smart path resolution: workspace-relative and absolute paths supported
Example: AI suggests checking recipes/baking/chickenpie.ts#L3C14-L15C9 → Click → VSCode opens file at exact selection.
Editor Navigation
RangeLinks in editor files (markdown, text, code, untitled) are also clickable:
- Hover to see navigation details
- Cmd+Click to jump to code
- Perfect for scratchpads - Validate links before sending to claude-code
Plain File Path Navigation
Plain file paths (without #L suffix) are also clickable — anywhere RangeLinks are detected:
- Cmd+Click (Mac) or Ctrl+Click (Windows/Linux) opens the file directly
- Supported formats: absolute (
/path/to/file.ts), relative (./file.ts, ../file.ts), tilde (~/file.ts), and quoted paths with spaces ("/path/with spaces/file.ts")
- Validate on click: detection is instant; file existence is only checked when you click
Go to Link
Have a RangeLink but no clickable context? Paste or type it directly:
- Press
Cmd+R Cmd+G (Mac) or Ctrl+R Ctrl+G (Windows/Linux)
- Supports all link formats: full paths, ranges, columns (e.g.,
recipes/baking/chickenpie.ts#L3C14-L15C9)
- Jump instantly to that exact code location
Perfect for: Links from Slack, email, documentation, or AI responses you can't click directly.
Press Cmd+R Cmd+M (Mac) / Ctrl+R Ctrl+M (Win/Linux) or click the RangeLink item in the status bar to access quick actions:
- Jump to Bound Destination — Focus your currently bound destination
- Bind to a destination — When unbound, the menu shows available destinations inline (AI assistants, terminals, text editors) so you can bind directly from the menu
- Go to Link — Paste or type a RangeLink to go directly to that code location
- Show Version Info — Display extension version and build details
- Single line:
recipes/baking/chickenpie.ts#L42
- Line ranges:
recipes/baking/chickenpie.ts#L10-L25
- Column precision:
recipes/baking/chickenpie.ts#L3C14-L15C9
- Rectangular selections:
recipes/baking/chickenpie.ts##L10C5-L20C10 (double hash)
📦 Portable Links (BYOD)
Share code references with teammates who use different delimiter configurations. Portable links embed metadata so they work everywhere — no coordination needed.
path#L10C5-L20C10~#~L~-~C~
The ~ separator marks embedded delimiters that override recipient's local settings. No coordination needed — links just work.
Learn more: Monorepo docs → BYOD Guide
Commands
Command Palette
Access via Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux), then type "RangeLink".
| Command |
Shortcut (Mac) |
Shortcut (Win/Linux) |
Description |
| Open Menu |
Cmd+R Cmd+M |
Ctrl+R Ctrl+M |
Open the RangeLink menu |
| Send RangeLink |
Cmd+R Cmd+L |
Ctrl+R Ctrl+L |
Send link to bound destination |
| Send RangeLink (Absolute) |
Cmd+R Cmd+Shift+L |
Ctrl+R Ctrl+Shift+L |
Send absolute path link to bound destination |
| Send Portable Link |
Cmd+R Cmd+P |
Ctrl+R Ctrl+P |
Send BYOD portable link to bound destination |
| Send Portable Link (Absolute) |
Cmd+R Cmd+Shift+P |
Ctrl+R Ctrl+Shift+P |
Send BYOD portable link (absolute path) to bound destination |
| Copy RangeLink |
Cmd+R Cmd+C |
Ctrl+R Ctrl+C |
Copy link to clipboard (skip destination) |
| Copy RangeLink (Absolute) |
Cmd+R Cmd+Shift+C |
Ctrl+R Ctrl+Shift+C |
Copy absolute path link to clipboard (skip destination) |
| Send Selected Text |
Cmd+R Cmd+V |
Ctrl+R Ctrl+V |
Send selected text directly to bound destination |
| Send Current File Path |
Cmd+R Cmd+F |
Ctrl+R Ctrl+F |
Send active editor's path to bound destination |
| Send Current File Path (Absolute) |
Cmd+R Cmd+Shift+F |
Ctrl+R Ctrl+Shift+F |
Send active editor's absolute path to bound destination |
| Bind to Destination |
Cmd+R Cmd+D |
Ctrl+R Ctrl+D |
Open destination picker to select and bind a target |
| Bind to Claude Code |
— |
— |
Auto-send links to Claude Code chat |
| Bind to Gemini Code Assist |
— |
— |
Auto-send links to Gemini Code Assist chat |
| Bind to Cursor AI |
— |
— |
Auto-send links to Cursor AI chat |
| Bind to GitHub Copilot Chat |
— |
— |
Auto-send links to Copilot Chat |
| Bind to Terminal |
— |
— |
Auto-send links to integrated terminal for AI workflows |
| Bind to Text Editor |
— |
— |
Auto-paste links at insertion point in bound text editor |
| Jump to Bound Destination |
Cmd+R Cmd+J |
Ctrl+R Ctrl+J |
Focus your currently bound destination |
| Go to Link |
Cmd+R Cmd+G |
Ctrl+R Ctrl+G |
Paste/type a RangeLink to go to that code location |
| Unbind |
Cmd+R Cmd+U |
Ctrl+R Ctrl+U |
Stop auto-sending links to bound destination |
| Show Version Info |
— |
— |
Display version and build info |
Terminal-Aware Keybindings
When the terminal has focus with text selected, R-V sends the terminal selection to your bound destination. Other R-keybindings (R-L, R-C) gracefully guide you back to R-V instead of silently doing nothing.
| Keybinding |
Shortcut (Mac) |
Shortcut (Win/Linux) |
Description |
| Paste Terminal Selection (R-V) |
Cmd+R Cmd+V |
Ctrl+R Ctrl+V |
Copy terminal selection and send to bound destination |
Customizing Shortcuts: Press Cmd+K Cmd+S (Mac) or Ctrl+K Ctrl+S (Win/Linux) to open Keyboard Shortcuts, then search for "RangeLink".
RangeLink integrates directly into VSCode's right-click menus for fast, keyboard-free workflows. Items are positioned near related VSCode commands for discoverability.
Explorer (right-click on files)
Positioned after VSCode's "Copy Path" / "Copy Relative Path":
| Menu Item |
Visibility |
Action |
| RangeLink: Send File Path |
Always |
Send absolute path to bound destination |
| RangeLink: Send Relative File Path |
Always |
Send relative path to bound destination |
| RangeLink: Bind Here |
Files only |
Open file and bind as destination |
| RangeLink: Unbind |
When bound |
Unbind current destination |
Editor Tab (right-click on tabs)
| Menu Item |
Visibility |
Action |
| RangeLink: Send File Path |
Always |
Send absolute path to bound destination |
| RangeLink: Send Relative File Path |
Always |
Send relative path to bound destination |
| RangeLink: Bind Here |
File or untitled |
Bind this editor as destination |
| RangeLink: Unbind |
When bound |
Unbind current destination |
Editor Content (right-click inside editor)
| Menu Item |
Visibility |
Action |
| RangeLink: Send RangeLink |
Has selection |
Send link to bound destination |
| RangeLink: Send RangeLink (Absolute) |
Has selection |
Send absolute path link to destination |
| RangeLink: Send Portable Link |
Has selection |
Send BYOD portable link to destination |
| RangeLink: Send Portable Link (Absolute) |
Has selection |
Send BYOD portable link (absolute) |
| RangeLink: Send Selected Text |
Has selection |
Send selected text to bound destination |
| ─── separator ─── |
|
|
| RangeLink: Send This File's Path |
Always |
Send absolute path to bound destination |
| RangeLink: Send This File's Relative Path |
Always |
Send relative path to bound destination |
| RangeLink: Bind Here |
File or untitled |
Bind this editor as destination |
| RangeLink: Unbind |
When bound |
Unbind current destination |
Terminal Tab (right-click on tabs)
| Menu Item |
Visibility |
Action |
| RangeLink: Bind Here |
Always |
Bind this terminal as destination |
| RangeLink: Unbind |
When bound |
Unbind current destination |
Terminal Content (right-click inside terminal)
| Menu Item |
Visibility |
Action |
| RangeLink: Send Selected Text |
Text selected, terminal is not the bound destination |
Copy terminal selection and send to destination (opens picker if unbound) |
| RangeLink: Bind Here |
Always |
Bind this terminal as destination |
| RangeLink: Unbind |
When bound |
Unbind current destination |
Configuration
Customize settings in VSCode (Preferences > Settings > search "rangelink").
Custom AI Assistant Settings
| Setting |
Default |
Description |
rangelink.customAiAssistants |
[] |
Array of custom AI assistant definitions (see below) |
Define custom AI assistants to extend RangeLink beyond the four built-in AI tools. Each entry has two required fields and three optional command arrays:
| Field |
Type |
Required |
Description |
extensionId |
string |
Yes |
VS Code extension identifier (publisher.name) — used for availability check |
extensionName |
string |
Yes |
Display name shown in the destination picker |
insertCommands |
(string \| object)[] |
No |
Tier 1: Commands that accept text directly as an argument. Clipboard is never touched. |
focusAndPasteCommands |
string[] |
No |
Tier 2: Commands that focus the AI chat input where VS Code paste commands work. RangeLink auto-pastes via clipboard (clipboard preserved). |
focusCommands |
string[] |
No |
Tier 3: Commands that focus/reveal the AI panel. RangeLink copies the link to clipboard and shows a "paste now" toast — clipboard is intentionally left with the link so you can Cmd+V / Ctrl+V. |
At least one of the three command arrays must be present. RangeLink tries them in tier order (1 → 2 → 3) and uses the first tier whose commands are registered in VS Code. This is resolved once on first use and cached — not checked on every operation.
Example — webview-based assistant (focus only, user pastes manually):
{
"rangelink.customAiAssistants": [
{
"extensionId": "acme.spark-ai",
"extensionName": "Spark AI",
"focusCommands": ["sparkAi.chatView.focus"]
}
]
}
Example — assistant with direct insert + focus fallback:
{
"rangelink.customAiAssistants": [
{
"extensionId": "acme.spark-ai",
"extensionName": "Spark AI",
"insertCommands": ["sparkAi.insertText"],
"focusCommands": ["sparkAi.chatView.focus"]
}
]
}
When sparkAi.insertText is registered (extension supports it), RangeLink uses direct insertion — no clipboard involved. If the command isn't available (older extension version), RangeLink falls back to the focus + manual paste flow automatically.
Overriding built-in assistants: You can customize the built-in AI assistants (Claude Code, Gemini Code Assist, Cursor, Copilot) by adding an entry with the same extensionId. RangeLink merges your custom tiers with the built-in's hardcoded commands as a safety-net fallback. If your custom commands aren't registered (typo, extension not updated), the built-in behavior takes over automatically.
{
"rangelink.customAiAssistants": [
{
"extensionId": "github.copilot-chat",
"extensionName": "Copilot (Custom)",
"insertCommands": ["myPlugin.sendToCopilot"]
}
]
}
Here insertCommands is tried first (Tier 1). If myPlugin.sendToCopilot isn't registered, RangeLink falls back to Copilot's built-in focus + paste commands.
insertCommands argument format: Plain strings pass the link text as the first positional argument. For extensions that expect a different argument shape, use an object with ${content} interpolation:
"insertCommands": [
"sparkAi.insertText",
{ "command": "sparkAi.addContext", "args": [{ "text": "${content}", "source": "rangelink" }] }
]
How availability works: A custom assistant appears in the destination picker when either the extension is installed and active (matched by extensionId), or at least one command from any tier is registered as a VS Code command. Both conditions are checked — an extension that registers commands without activating still works.
Finding extension and command IDs: Open the Extensions panel, click on the extension, and find the identifier shown as publisher.name below the title (e.g., github.copilot-chat). To discover command IDs, check the extension's documentation or run Developer: Toggle Developer Tools and use await vscode.commands.getCommands(true) in the console.
Duplicate entries: If two entries use the same extensionId, only the first is used — duplicates are skipped with a warning in the RangeLink output channel.
Run Developer: Reload Window (or restart VS Code) after changing this setting.
Destination Settings — Claude Code
| Setting |
Default |
Description |
rangelink.destinations.claudeCode.coldStartDelayMs |
1500 |
Total duration (ms) RangeLink waits for the Claude Code panel to become ready on first use |
rangelink.destinations.claudeCode.coldRefocusIntervalMs |
300 |
Interval (ms) at which RangeLink re-sends the Claude Code focus signal during the cold-start wait |
On first use after binding, the Claude Code chat panel needs time to initialize. During the cold-start period, RangeLink periodically re-focuses the panel so it receives keyboard focus once ready. After the first successful paste, subsequent operations use a faster warm-start path. Increase coldStartDelayMs on slower machines; decrease coldRefocusIntervalMs for more aggressive re-focusing. coldStartDelayMs must be greater than coldRefocusIntervalMs — if violated, defaults are used.
Destination Settings — Gemini Code Assist
| Setting |
Default |
Description |
rangelink.destinations.gemini.coldStartDelayMs |
2500 |
Total duration (ms) RangeLink waits for the Gemini panel to become ready on first use |
rangelink.destinations.gemini.coldRefocusIntervalMs |
300 |
Interval (ms) at which RangeLink re-sends the Gemini focus signal during the cold-start wait |
On first use after binding, Gemini Code Assist's webview panel needs time to initialize. During the cold-start period, RangeLink periodically re-focuses the panel so it receives keyboard focus once ready. After the first successful paste, subsequent operations use a faster warm-start path. Increase coldStartDelayMs on slower machines; decrease coldRefocusIntervalMs for more aggressive re-focusing. coldStartDelayMs must be greater than coldRefocusIntervalMs — if violated, defaults are used.
Clipboard Settings
| Setting |
Default |
Description |
rangelink.clipboard.preserve |
"always" |
Save and restore clipboard around transport operations |
Available values:
"always" (default) — Before each operation that uses the clipboard as transport (R-L, R-V, R-F), your prior clipboard content is saved and restored afterward. Your clipboard is only permanently overwritten by R-C (Copy RangeLink), where the clipboard is the intended output.
"never" — Disables preservation. Your clipboard always contains the last RangeLink output, matching the behavior of versions before this setting was introduced.
Smart Padding Settings
| Setting |
Default |
Description |
rangelink.smartPadding.pasteLink |
"both" |
Padding around generated RangeLinks (R-L) |
rangelink.smartPadding.pasteContent |
"none" |
Padding around selected text (R-V) |
rangelink.smartPadding.pasteFilePath |
"both" |
Padding around file paths (R-F) |
Available values: "both" (space before and after), "before" (space before only), "after" (space after only), "none" (no padding).
Most paste commands default to "both" to prevent the pasted text from concatenating with surrounding content. The exception is pasteContent which defaults to "none" — selected text is pasted exactly as-is since it typically represents raw code or prose where extra whitespace would be unwanted.
Feedback & Warning Settings
| Setting |
Default |
Description |
rangelink.warnOnDirtyBuffer |
true |
Show warning when a file has unsaved changes (applies to R-L and R-F) |
rangelink.navigation.showNavigatedToast |
true |
Show info toast after successful navigation (e.g., "Navigated to recipes/baking/chickenpie.ts @ 3:14-314:16") |
rangelink.navigation.showClampingWarning |
true |
Show warning toast when navigation is clamped to file boundaries |
When warnOnDirtyBuffer is enabled and a file has unsaved changes, a dialog appears before proceeding. For R-L (Send RangeLink), the options are "Save & Generate" / "Generate Anyway" — this helps avoid creating links that may point to incorrect positions after the file is saved. For R-F (Send File Path), the options are "Save & Send" / "Send Anyway" — this ensures the AI tool reads the same content the user sees on screen, not stale content from disk.
Set the navigation settings to false for a quieter workflow. Navigation itself is unaffected — only the feedback toasts are suppressed. Error toasts (e.g., "Failed to navigate") always appear regardless of these settings.
Terminal Picker Settings
| Setting |
Default |
Description |
rangelink.terminalPicker.maxInline |
5 |
Maximum terminals shown inline in picker (extras in "More terminals...") |
When you have more terminals than this threshold, the destination picker shows a "More terminals..." option instead of listing all terminals individually.
Delimiter Settings
| Setting |
Default |
Description |
rangelink.delimiterHash |
"#" |
Separator between path and location |
rangelink.delimiterLine |
"L" |
Line number prefix |
rangelink.delimiterPosition |
"C" |
Column/character position prefix |
rangelink.delimiterRange |
"-" |
Range separator (start-end) |
Validation Rules:
- Delimiters cannot contain digits
- Delimiters cannot be empty
- All delimiters must be unique
- Reserved characters (
~, |, /, \, :, ,, @) cannot be used
Invalid configurations will fall back to defaults with a warning in the output channel (Cmd+Shift+U / Ctrl+Shift+U, select "RangeLink"). See DEVELOPMENT.md for details.
What's Next
RangeLink is under active development. See open issues for planned features and enhancement requests.
Requirements
- VSCode or Cursor version 1.49.0 or higher
Known Issues
If you find a bug, please report it.
When filing a bug report, please include:
- Extension version: Command Palette → "RangeLink: Show Version Info"
- IDE: VSCode or Cursor (with version number)
- Operating system: e.g., macOS 14.0, Windows 11, Ubuntu 22.04
- Extension logs: Open Output panel (
Cmd+Shift+U / Ctrl+Shift+U), select "RangeLink", copy relevant logs. More details →
Links
Featured In
The most recent posts are at the top.
About
RangeLink is a monorepo project with:
- rangelink-vscode-extension - This VSCode extension (you are here)
- rangelink-core-ts - Pure TypeScript core library (platform-agnostic)
- More plugins coming - Neovim, Sublime Text, and more
The extension is a thin wrapper around the core library, ensuring consistent behavior across all editor integrations.
Want to Learn More?
Curious about how RangeLink came to be or want to contribute?
License
MIT - see LICENSE file for details.
Made with ❤️ for developers who love precision