Cobinja / CobiSymbolOutline

A symbol outline tree provider for VSCode
MIT License
4 stars 0 forks source link
outline symbol-tree-provider symbols visual-studio vscode

CobiSymbolOutline -- A symbol tree provider for Visual Studio Code

This is a fork of the deprecated and unpublished Visual Studio Code extension vscode-code-outline by https://github.com/patrys

Features

Displays a symbol outline tree accessible via the activity bar.

Language Support

For the outline to work, the language support plugins need to support symbol information.

For the outline to form a tree structure, the language support plugins need to report the entire definition range as part of the symbol.

See VS Code issue #34968 and language server protocol issue #132 for a discussion.

Here is a list of languages known to work with CobiSymbolOutline:

Language/Format Extension
C C/C++
C++ C/C++, cquery
Docker Docker
HTML Comes with VS Code
Go Go
Java Language Support for Java(TM) by Red Hat
JavaScript Comes with VS Code
JSON Comes with VS Code
Markdown Comes with VS Code
Perl Perl
PHP PHP Symbols
Powershell PowerShell
Python Python
Rust Rust (rls)
TypeScript Comes with VS Code
YAML YAML Support by Red Hat

Please report any missing extensions and I'll update the list.

Extension Settings

Default settings:

{
  "cobiSymbolOutline.expandableNodes": {
    "type": "array",
    "default": [
      "File",
      "Module",
      "Namespace",
      "Package",
      "Class",
      "Enum",
      "Interface",
      "Object",
      "Struct"
    ],
    "description": "Kinds of nodes that show their children."
  },
  "cobiSymbolOutline.sortOrder": {
    "type": "array",
    "default": [
      "Class",
      "Module",
      "Constant",
      "Interface",
      "*",
      "Constructor",
      "Function",
      "Method"
    ],
    "description": "Order to sort symbols in. * is placeholder for all symbols not explicitly listed."
  },
  "cobiSymbolOutline.topLevel": {
    "type": "array",
    "default": [
      "*"
    ],
    "description": "Which symbols to include at the topmost level. * includes everything."
  },
  "cobiSymbolOutline.hiddenNodes": {
      "type": "array",
      "default": [],
      "description": "Defines which symbols are hidden.",
      "scope": "language-overridable"
  },
  "cobiSymbolOutline.sortBy": {
      "type": "string",
      "enum": [
          "Kind",
          "Name",
          "Position"
      ],
      "default": "Kind",
      "description": "Defines by which property symbols are sorted.\nIf \"Kind\" is used, symbols are sorted according to the \"Sort Order\" setting.\nIf a property other than \"Name\" is used, symbols with matching properties are also sorted by name.",
      "scope": "language-overridable"
  },
  "cobiSymbolOutline.fallbackLoadDelay": {
      "type": "integer",
      "minimum": 0,
      "default": 1000,
      "description": "Defines the delay in milliseconds of the second load if the first one fails. Set to\"-1\" to disable the second load",
      "scope": "language-overridable"
  }
}

Known Issues

In some cases the symbol list may initially return an empty list. Use the "Refresh" button next to the title to fix this.