🔖 BullseyeMark
One entry called Bookmark in every right-click menu VS Code has, and it is smart: press it on a line, a selection, a file, a folder, a search hit, a problem, a change, a comment, a stack frame, an extension or a page, and it bookmarks exactly that β press it again on the same place and it takes the bookmark away. One click on the bookmark gets you back there.
β¨ What it does
- A panel that shows your bookmarked files. The Bookmarks activity-bar view lists every file you marked, with its marked places underneath, a count badge and a status-bar counter. Folders you bookmark become the top of the tree, so a bookmark lives where you put it.
- One press, one smart outcome. The entry reads what you right-clicked: a bookmark already on that exact place is removed, a line or a selection becomes a line or range bookmark, and anything else with an address β a file, a folder, a search hit, a problem, a change, a comment, a stack frame, an extension β is bookmarked as itself. Clicking one opens the file and selects and centres exactly that range; a file bookmark opens at the top; a folder bookmark reveals it in the Explorer; a page bookmark brings VS Code's own browser up on that address. An expander appears only on a row that has children, and every row opens in one click.
- A page is bookmarked from its address. VS Code does not tell an extension which page a browser tab is showing β the built-in browser hands over its view type and nothing else β so Bookmark a URL takes the address you selected in an editor, else the one you copied out of the browser, else asks you for it. Right-clicking inside the page offers exactly that, so the address you copied is one press away.
- A Bookmark entry in every right-click surface that survives a reload. The editor (both sides of a diff editor included), a gutter line number, an editor tab, a file or folder or multi-selection in the Explorer, a source-control change, a search result, a Problems entry, the Outline, a timeline item, a comment thread and a comment title, a debug stack frame, a notebook cell's title, a test item, an extension, and β for a page β its address. Surfaces with nothing a click could bring back carry no entry at all: the terminal, the debuggerβs Variables and Watch lists, a whole group of changed files in Source Control, and the merge editor. Every menu VS Code offers is audited, one by one, in
docs/context-menus.md, which ships inside this package.
- It keeps up with your edits. Insert or delete lines above a bookmark and the bookmark moves with its place instead of drifting β including the line and the character of a range that an edit lands on. Rename a file or its parent folder and the bookmarks follow. A file that is gone is still a row in the panel, saying
missing β never a silent disappearance.
β¨οΈ Commands
| Command |
Default key |
| Bookmark (the line, the selection or the file in front of you) |
Ctrl+Alt+B |
| Bookmark a URL (the selected link, the copied address, or one you type) |
β |
| Show Bookmarks |
β |
Everything else β open, rename, remove, clear all, copy link, copy path, cycle sort, refresh β is in the Command Palette and on a bookmark's own right-click menu under Bookmarks.
🧭 How it works
Bookmarks are stored per workspace in VS Code's own workspace state (key bullseyeMark.state.v1) β nothing is written into your repository. Places are stored 0-based; edits are applied to every open document so a bookmark tracks its own line as the file above it changes. The tree is rebuilt from that one store; there is no second copy anywhere.
🛠οΈ Building and releasing
cd vscode-extension
npm install
npm run compile # tsc -p .
./release.sh # bump, build, package, publish, install here β via BullseyeShared
The release contract lives in BullseyeShared; this repo only ever holds a thin release.sh shim.
🎯 Better together: BullseyeUber
BullseyeMark works on its own and is designed to sit beside FleetView, BullseyeBacklog, DeepAgent, BullseyeSync and BullseyeNotify in the BullseyeUber tab.
| |