Parnassus Bookmarks & Navigator

Ever wanted to jump to the uses clause, to a class’s constructor, to a property definition? Navigator lets you move between any section of code quickly, easily, and without your fingers leaving the keyboard. There’s also a minimap – a miniature version of your code, showing the structure and letting you scroll just like a scrollbar.

Parnassus Bookmarks replaces the IDE’s inbuilt functionality with new, improved navigation. Place a marker with Ctrl+B – a number will be automatically assigned. Jump between bookmarks by pressing Ctrl+Alt+Left or Right Arrow. Never overwrite an existing bookmark accidentally. And the polished interface – suitable for a modern IDE – features elegant visual cues when you create, delete, or access a bookmark as well as succinct information about where in a unit the bookmark is.

How do you quickly navigate to a uses clause in plain Delphi? Perhaps you leave the keyboard, grab the mouse, move to the scrollbar, and drag it up or down until you find what you’re looking for. Or, perhaps you press Ctrl-F to search, type ‘uses’, press F3 F3 F3 to skip past all the times ‘uses’ is in a comment or method, cycle around to the top of the unit, press F3 again to skip the interface uses, and finally arrive at the implementation uses clause.

Navigation shouldn’t be like that.

Welcome to Parnassus Navigator.

Navigator brings all parts of your code to your fingertips, letting you move between methods, classes, types, or in fact unit sections or items of any kind quickly, without disturbing your workflow, and without leaving the keyboard.

Press Ctrl+G (G to go) and Navigator will show you a window with everything in your current unit. Start typing, and the results are filtered. Press Enter and bam! There you are, right at the place you need.

Navigator lists all unit sections (uses, interface, implements, type, const…), types (classes, records, interfaces, enums, sets…), methods, fields, and properties in each type, and standalone methods.* It even shows property getters and setters as you type the property name. It can be invoked by either mouse or keyboard, which means you can move somewhere in your code without breaking your workflow. It’s fast, efficient, and designed for real work.

What if you want an overview of your code? You want to see the structure? Get an overview? Scroll by clicking somewhere you can see, not by dragging a grey scrollbar thumb? Navigator includes a minimap: literally, a miniature version of your code.

The entire unit is shown in a narrow bar on the right-hand side of the code editor, next to the scrollbar. You can see the currently visible portion, and click or drag to scroll: this is a scrollbar the way a code editor should be. The preview is fully syntax-highlighted for both Delphi and C++. Mouse over, and a preview hint will appear showing you the code under the mouse cursor. Click/drag to scroll, or double-click to move the editor cursor straight to the specific line.

There’s more: when you search in the Go To window, matching lines and the currently selected item are highlighted in the minimap too.

Parnassus Navigator is written in modern Delphi style, with modern libraries, and supports modern IDEs. It is explicitly written to have high performance, avoiding common plugin techniques that can slow down the IDE, and it integrates perfectly with the IDE itself.

It’s configurable. Don’t want the minimap? Turn it off. Only interested in class methods, not properties? Turn only those on. Want a bigger / smaller map when you switch between your laptop and desk? Change its size.

The UI and the internals are polished. The Go To window highlights the matching search subset in bold, even when it’s only part of a word. Extra information to help you navigate is in quiet grey: readable but not in your way. The minimap uses a custom, threaded rendering and syntax highlighting engine, is low priority and smart-updating to save battery, and is antialiased right down to its progress bar. Does antialiasing matter? No, but it’s indicative of the effort and polish that has gone into the product.

You can use Parnassus Bookmarks just like the inbuilt bookmarks if you want, and the plugin adds all the expected stuff, such as an unlimited number of markers per file. (You might not use a thousand, but more than ten can be useful.) But the key is that it’s been designed for coders, with keyboard shortcuts, new features, and readability put first.

For example, have you ever overwritten bookmarks, trying to remember which ones of 0-9 are already set and which aren’t? No more: if you try to set one which already exists, you’ll see a small warning, and you can double-press the shortcut to overwrite. But there’s no need to even try to set a specific marker…

When you debug, you travel over a lot of code – across methods, classes, units, and sometimes even projects. Parnassus Bookmarks shows you all bookmarks you’ve dropped in all open files, as well as just in the current file, if you wish. It makes marking – and finding – key code much, much easier.

The docked window shows you intelligent information about where each bookmark is: not just the unit and line number, but the essential data about its location. If it’s in a procedure or function, you’ll see the method name. If it’s in a class, record or other type declaration, you can see which one.

Sometimes you don’t want a permanent marker; you just want a way to quickly navigate back to where you were. Press Ctrl+Shift+B to drop a temporary caret bookmark, and press Escape to jump back to it.

If you leave several, each time you press Escape you will go back in time to where you were at that moment. You can even repeatedly toggle between two locations with Shift-Escape.

Parnassus Bookmarks is written in modern Delphi style, with modern libraries, and supports modern IDEs. It is explicitly written to have high performance, avoiding common plugin techniques that can slow down the IDE, and it integrates perfectly with the IDE itself – better than the IDE’s own bookmarks implementation does. Even its icons should be easier to read.

There’s even a public API, allowing third-party (non-Parnassus) Delphi plugins to interoperate with Bookmarks.

Finally, it addresses or fixes eight different bookmark-related QC items. Make your IDE better.