Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>Outline++ (Regions & Colors)New to Visual Studio Code? Get it now.
Outline++ (Regions & Colors)

Outline++ (Regions & Colors)

David Bookstaber

|
1 install
| (0) | Free
Code outline and region navigation with color-coded modifier icons.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Outline++

VS Code Marketplace Version VS Code Marketplace Installs VS Code Marketplace Rating

A Visual Studio Code extension for navigating, visualizing, and managing code regions and document outlines.

QuickStart

⚡️ Features

  • 📁 Regions View – Interactive tree for viewing and navigating regions.
  • 🏛 Full Outline View – Like VSCode's builtin Outline view, but incorporates regions.
  • 🎨 Modifier-Aware Icons – Color-coded icons showing visibility and member modifiers for C++, C#, Java, TypeScript, Python, and more.
  • 🐇 Quick Navigation – Jump, search, and select regions with commands and keyboard shortcuts.
  • ⚠️ Diagnostics – Detects unmatched region boundaries.
  • 🔄 Refresh & Debug – Manual refresh buttons and built-in debug logging for diagnosing issues.

Outline++ Demo

📖 Table of Contents

  1. ⚡️ Features
  2. 📖 Table of Contents
  3. 🔬 Detailed Features
    1. 📂 Regions View
    2. 🏛 Full Outline View
    3. 🎨 Modifier-Aware Icons
    4. ⚠️ Region Diagnostics
    5. 🔍 Go to Region...
    6. 🐇 Go to Region Boundary
    7. ⏭ Go to Next / Previous Region
    8. 🎯 Select Current Region
  4. ⚙️ Settings
    1. 🙈 Show/Hide Views
    2. 🔄 Toggling Auto-Highlighting in Views
    3. 🎨 Modifier Display Settings
    4. 🔧 Custom Region Patterns
  5. 🛠 Troubleshooting
    1. 🔄 Manual Refresh
    2. 🐛 Debug Logging
  6. 📡 Extension API
  7. 🚧 Known Limitations

🔬 Detailed Features

📂 Regions View

  • Displays a structured tree view of all regions in the current file.
  • Automatically reveals and highlights the cursor’s active region (this can be toggled on/off with commands/settings).
  • Click a region to instantly navigate to it.

Regions View Demo

🏛 Full Outline View

  • Combines all regions and language symbols (classes, methods, variables, etc) into a unified tree view for the current file.
  • Just like the Regions View, the cursor's active region/symbol is automatically revealed and highlighted, and this behavior can be toggled on/off.
  • Click any item to instantly navigate to it.

Full Outline View Demo

🎨 Modifier-Aware Icons

The Full Outline view can display color-coded icons that indicate the visibility and characteristics of symbols — similar to Visual Studio's Document Outline.

Custom SVG overlay icons are provided for common combinations (e.g., a private static method shows a distinct icon). When overlay icons aren't available, the standard VS Code symbol icon is tinted with a color representing the symbol's visibility.

Supported Languages

Language Visibility Modifiers Member Modifiers
C# public, private, protected, internal, protected internal, private protected static, readonly, const, abstract, virtual, override, async, sealed, extern, volatile, new
Java public, private, protected static, final, abstract, volatile, sealed
Kotlin public, private, protected, internal const, val, abstract, override, sealed
TypeScript/JavaScript public, private, protected static, readonly, const, abstract, async, override
C/C++ public, private, protected static, const, constexpr, virtual, override, volatile, extern
Python (via naming conventions: _name = protected, __name = private) @staticmethod, @classmethod, @abstractmethod, async

Color Legend

Color Meaning
🟢 Green public
🔴 Red private
🟡 Yellow protected
🔵 Blue internal / package
🟠 Orange protected internal
🟣 Purple private protected

Display Modes

Controlled by outlinePlus.fullOutlineView.modifierDisplay:

Mode Behavior
"off" Standard VS Code symbol icons only
"colorOnly" Icon colors reflect visibility
"colorAndBadge" Colors + emoji badge prefixes on labels (default)
"colorAndSvgOverlay" Colors + custom SVG overlay icons for methods/fields/properties
"colorAndDescription" Colors + text descriptions to the right of symbol names (e.g., "static", "readonly")

Tooltips are always enhanced to show [modifier list] SymbolName: line range, regardless of display mode.

For technical details on the icon system, see OUTLINE_MODIFIER_ICONS.md.

⚠️ Region Diagnostics

  • Detects unmatched region boundaries and adds warnings in both the editor (blue squiggles) and the Problems panel, helping you catch incomplete or misplaced regions quickly.

Region Diagnostics Demo

🔍 Go to Region...

  • Like VSCode’s built-in "Go to Symbol...", but for regions:
    • Opens a fuzzy-searchable dropdown to jump to any region in the current file.
  • 📌 Default Keybinding:
    • Windows/Linux: Ctrl + Shift + R
    • Mac: Cmd + Shift + R

Go to Region Demo

🐇 Go to Region Boundary

  • Like VSCode’s built-in "Go to Bracket", but for regions:
    • Jumps between matching start and end region boundaries.
    • Jumps to the next region if the cursor is not already inside a region.
  • 📌 Default Keybinding: Alt + M

Go to Region Boundary Demo

⏭ Go to Next / Previous Region

  • Jumps to the next or previous region in the file.
  • 📌 Default Keybindings:
    • Next Region: Ctrl + Alt + N
    • Previous Region: Ctrl + Alt + P

Go to Next / Previous Region Demo

🎯 Select Current Region

  • Selects the entire active region containing the cursor.
  • 📌 Default Keybinding: Alt + Shift + M

Select Current Region Demo

⚙️ Settings

🙈 Show/Hide Views

To quickly show or hide the Regions or Full Outline views, you can use the following commands and associated settings:

  • Show/Hide Region View
    • Commands: Show Regions View / Hide Regions View
    • Setting: outlinePlus.regionsView.isVisible
  • Show/Hide Full Outline View
    • Commands: Show Full Outline View / Hide Full Outline View
    • Setting: outlinePlus.fullOutlineView.isVisible

🔄 Toggling Auto-Highlighting/Revealing in Tree Views

  • By default, the Regions and Full Outline views will automatically reveal and highlight the cursor's active region or symbol as you navigate the editor.
  • If you ever want to disable this auto-revealing behavior (e.g. for a more stable scroll position), you can use the {Stop/Start} Auto-Highlighting Active {Region/Item} commands, or click the tree view's title bar action (the sync icon) to toggle it on/off.

🎨 Modifier Display Settings

Settings under outlinePlus.fullOutlineView:

Setting Type Default Description
modifierDisplay string "colorAndBadge" Controls how modifiers are displayed. Values: "off", "colorOnly", "colorAndBadge", "colorAndSvgOverlay", "colorAndDescription"
useDistinctModifierColors boolean true Use distinct colors (green=public, red=private, yellow=protected) vs subtle symbol-themed colors

🔧 Custom Region Patterns

  • Supports 50 languages out of the box, including:
    • C, C++, C#, Java, Python, JavaScript, JSX, TypeScript, TSX, PHP, Ruby, Swift, Go, Rust, HTML, XML, Markdown, JSON/JSONC, YAML, SQL, and more.
  • Define your own custom region patterns, or adjust the existing default patterns, to customize how regions are parsed.
    • Setting: outlinePlus.regionBoundaryPatternByLanguageId
      • Note: you may need to restart the extension after changing this setting for it to take effect.

🛠 Troubleshooting

🔄 Manual Refresh

Both the Regions and Full Outline views have a Refresh button (↻) in the view's title bar. Click it to force a complete re-fetch of all data, bypassing any caching or change-detection. You can also run the commands from the Command Palette:

  • Outline++: Refresh Regions View
  • Outline++: Refresh Full Outline

🐛 Debug Logging

If the outline gets stuck or stops updating, you can capture diagnostic information:

  1. Enable debug logging: Open Settings (Ctrl+,) → search for outlinePlus.enableDebugLogging → set to true.
  2. Reproduce the problem.
  3. Dump diagnostic state: Open the Command Palette (Ctrl+Shift+P) → run Outline++: Dump Diagnostic State. This opens the "Outline++" Output channel with a snapshot of all internal store state.
  4. Show the debug log: Run Outline++: Show Debug Log to review the full timeline of state transitions.

The log captures editor switches, symbol fetches, discarded stale fetches, and version mismatches — all the data needed to diagnose refresh issues.

📡 Extension API

Outline++ provides an API for accessing parsed code regions and full outline symbols programmatically. You can use it to build your own VS Code extension without worrying about writing a region parser from scratch!

See the full API documentation for details and examples.

🚧 Known Limitations

  • 🔍 Go to Region... only supports camelCase matching (not full fuzzy search) due to a VSCode API limitation.
  • The 📁 Regions and 🏛 Full Outline tree views always highlight the cursor's last active item, even when outside any region/symbol (another VSCode API limitation).
  • 🎨 Modifier extraction relies on parsing the document text to match language-specific keyword patterns. It does not use the Language Server Protocol's symbol tags (which are not yet widely supported). This means modifier detection may be imperfect for complex or unusual code patterns.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft