org-side-tree
org-side-tree copied to clipboard
Navigate Org-mode outlines in Emacs via side window
#+title: org-side-tree
[[https://melpa.org/#/org-side-tree][file:https://melpa.org/packages/org-side-tree-badge.svg]]
This package presents a navigable, interactive tree-structured outline of the current buffer's headings in a handy side window.
[[https://github.com/localauthor/org-side-tree/blob/main/images/screenshot1.jpg?raw=true]]
- Installation
The easiest way to install is from [[https://melpa.org/#/org-side-tree][MELPA]].
Add =org-side-tree.el= to your loadpath and include =(require 'org-side-tree)= in your init file.
Call =M-x org-side-tree= in any Org mode buffer.
- Some Customization Options
- =org-side-tree-persistent=
When non-nil, use a single buffer for all trees. When nil, each buffer will have its own tree-buffer.
- =org-side-tree-display-side=
Side of frame where tree-buffer will display.
- =org-side-tree-fontify=
When non-nil, tree-buffer headings are fontified to match base-buffer. When nil, headings are in `org-side-tree-heading-face'.
- =org-side-tree-enable-folding=
When non-nil, enable foldable headings in tree-buffers.
Note: This package simply turns on =outline-minor-mode=, it does not enable or alter any outline-related settings or keybindings. So, to use =TAB= for outline-visibility cycling, add the following to your config: =(setq outline-minor-mode-cycle t)=.
- Video Demo
- https://youtu.be/c3QLfl9_D5Y
- Support for non-Org files
This package is generally functional in buffers that use =outline-mode= or =outline-minor-mode=. However, the depth and quality of support/functionality in these modes is highly dependent on what the buffer-local value of =outline-regexp= is. Therefore, individual experience may vary. Use advisedly.
For example, in =emacs-lisp-mode=, consider setting =outline-regexp= as follows: #+begin_src elisp (setq-local outline-regexp ";;;\(;* [^ \t\n]\)") #+end_src
To set this automatically for every elisp buffer, add the following lines to your init file:
#+begin_src elisp (add-hook 'emacs-lisp-mode-hook (lambda () (setq-local outline-regexp ";;;\(;* [^ \t\n]\)"))) (add-hook 'emacs-lisp-mode-hook 'outline-minor-mode) #+end_src