This addon allows NVDA users to navigate by indentation level of lines. While editing source code in many programming languages, it allows to jump between the lines of the same indentation level, as well as quickly find lines with greater or lesser indentation level.
Please note that tree navigation commands have been moved to TreeNav add-on.
Please install from NVDA add-on store
Builtin VSCode accessibility is very limited: as of 2024 it only exposes 500 lines of code through accessibility API, which makes IndentNav to work incorrectly in VSCode.
By default IndentNav won't work with VSCode and when you try to use it, you will need to select from two options:
IndentNav has known compatibility issues with Character Information add-on. It is currently impossible to configure both IndentNav and review cursor on numpad while this add-on is running. Please either uninstall this add-on, or use an alternative keystroke map in IndentNav.
IndentNav offers 3 builtin keystroke mappings:
alt+numLock
.Keystroke layout can be selected in IndentNav settings.
Action | Legacy layout | Alt+numpad layout |
Numpad layout | Description |
---|---|---|---|---|
Toggle IndentNav | alt+numLock |
alt+numLock |
alt+numLock |
This is useful when both NVDA and review cursor gestures are assigned to numPad. |
Jump to previous/next sibling | NVDA+Alt+up/downArrow |
alt+numPad8/numPad2 |
numPad8/numPad2 |
Sibling is defined as a line with the same indentation level. This command will not take cursor beyond current code block. |
Jump to previous/next sibling skipping over clutter | N/A | control+alt+numPad8/numPad2 |
control+numPad8/numPad2 |
You can configure clutter regular expression in settings. |
Jump to first/last sibling | NVDA+Alt+shift+up/downArrow |
alt+numPad4/numPad6 |
numPad4/numPad6 |
Sibling is defined as a line with the same indentation level. This command will not take cursor beyond current code block. |
Jump to previous/last sibling potentially outside of current block | NVDA+control+Alt+up/downArrow |
control+alt+numPad4/numPad6 |
control+numPad4/numPad6 |
This command allows you to jump to a sibling in another block. |
Jump to previous/next parent | NVDA+Alt+leftArrow ,NVDA+alt+control+leftArrow |
alt+numPad7/numPad1 |
numPad7/numPad1 |
Parent is defined as a line with lower indentation level. |
Jump to previous/next child | NVDA+Alt+control+rightArrow ,NVDA+alt+rightArrow |
alt+numPad9/numPad3 |
numPad9/numPad3 |
Child is defined as a line with greater indentation level. This command will not take cursor beyond current code block. |
Select current block | NVDA+control+i |
control+alt+numPad7 |
control+numPad7 |
Selects current line plus all following lines having strictly greater indentation level. Press repeatedly to select multiple blocks. |
Select current block and all following blocks on the same indentation level | NVDA+alt+i |
control+alt+numPad9 |
control+numPad9 |
Selects current line plus all following lines having greater or equal indentation level. |
Indent-paste | NVDA+v |
NVDA+v |
NVDA+v |
When you need to paste a block of code to a place with different indentation level, this command will adjust indentation level before pasting. |
Go back/forward in history | N/A | control+alt+numPad1/numPad3 |
control+numPad1/numPad3 |
IndentNav keeps a history of lines which you visited via IndentNav commands. |
Speak current line | N/A | alt+numPad5 |
numPad5 |
This is really a review cursor command remapped for convenience. |
Speak parent line | NVDA+i |
N/A | N/A |
IndentNav allows you to configure any number of bookmarks that you can easily jump to. A bookmark is defined by a regular expression and a custom keystroke to jump to a match. Press shift+
keystroke to find previous occurrence.
When jumping over many lines of code, IndentNav will try to quickly play indentation levels as tones of the lines skipped over. This feature is only enabled when report indentation as tones is turned on in NVDA settings. Crackling volume can be adjusted or disabled in IndentNav settings.
Source code is available at http://github.com/mltony/nvda-indent-nav.