---
name: Library/joekrill/silverbullet-treeview
tags: meta/library
files:
- treeview.plug.js
share.uri: "https://github.com/joekrill/silverbullet-treeview/blob/main/PLUG.md"
share.hash: 07f5ccca
share.mode: pull
---
# SilverBullet TreeView plug

This plugs adds a tree view that allows you to navigate your SilverBullet pages hierarchically.

Dragging-and-dropping files and folders is supported but requires SilverBullet v0.7.2 or greater. If running < v0.7.2, this feature will be automatically disabled (regardless of [configuration](#configuration)).
## Configuration

The treeview plug supports both SilverBullet v1 and v2, with the configuration being slightly different depending on
which version you are using.

In SilverBullet v2, this plug can be configured using the `config` object in your `CONFIG` page (default values shown):

```lua
config.set {
  plugs = {
    "github:joekrill/silverbullet-treeview/treeview.plug.js"
  },

  -- The treeview plug configuration
  treeview = {
    -- Determines where the panel is displayed:
    -- - "lhs" - left hand side
    -- - "rhs" - right hand side
    -- - "bhs" - bottom
    -- - "modal" - in a modal
    position = "lhs",

    -- Must be > 0.
    -- position = "lhs" | "rhs": determines the width of the panel.
    -- position = "modal": sets the margin around the modal window.
    -- position = "bhs": No effect
    size=0.5,

    dragAndDrop = {
      -- Set to false to disable drag-and-drop
      enabled = true,

      -- Set to false to disable the confirmation prompt shown when dragging and
      -- dropping pages that causes them to be renamed/moved.
      confirmOnRename = true
    },

    -- An array of exclusion rules that will exclude pages from being
    -- displayed in the sidebar.
    exclusions = {
      {
        -- Filter by regular expression:
        type = "regex",
        -- Regular Expression string to exclude pages from the tree
        -- Examples:
        -- - Any page that is all-caps: "^[A-Z]+$"
        -- - A specific set of pages: "^(?:CONFIG|Library|index).*$"
        -- - Any path containing Hidden (e.g. test/Hidden/page1): "Hidden"
        rule="^(?:CONFIG|Library|index).*$",
        -- Optional: set to true to negate the rule, only showing pages that match this regex.
        negate= false,
      },
      {
        -- Filter by page tags:
        type = "tags",
        tags = {"meta"},
        -- Optional: set to true to negate the rule, only showing pages that include any of the tags.
        negate = false
      }
    }
  }
}
```

Note: space functions are not supported in SilverBullet v2 yet, so the `space-function` exclusion type is not available.

### Adding a top bar toggle icon

![Screenshot](screenshot-action-button.png)

You can also add add a button to the top bar that will toggle the tree view.

This is done by adding the following `actionButton.define` in your `CONFIG` page:

```lua
actionButton.define {
  icon = "sidebar",
  description = "Toggle Tree View",
  run = function()
    editor.invokeCommand("Tree View: Toggle")
  end
}
```
