spacemacs/layers/+tools/treemacs/README.org

8.8 KiB

Treemacs layer

Description

This layer brings in Treemacs to replace Neotree as the default file and project explorer:

/TakeV/spacemacs/media/commit/403b246212c3b86f1927f0f509cc7556deb6312c/layers/+tools/treemacs/img/treemacs.png

Features:

An detailed overview over Treemacs' available features is available in its readme. In a short summary Treemacs offers the following:

  • Simple and powerful navigation and ability to detail exactly how and where a file should be opened
  • Good looking png icons.
  • Ability to show tags contained in files. Tags are provided by imenu, so nearly every filetype is supported.
  • Optionally fontifying files based on their git status.
  • Optionally collapsing single-dir-child directories into one.
  • Doing both asynchronously for an imperceptible performance cost.
  • Optional follow-mode to automatically focus the currently selected file.
  • Optional filewatch-mode to automatically refresh the view after (and only after) changes to the shown filesystem.

Installation

To use this layer, add treemacs to the existing dotspacemacs-configuration-layers in your dotspacemacs file. In addition you can also specify the following configuration variables:

  • treemacs-use-follow-mode When t treemacs-follow-mode will be enabled. Default value: t
  • treemacs-use-filewatch-mode When t treemacs-filewatch-mode will be enabled. Default value: t
  • treemacs-use-collapsed-directories Maximum number of single-dir-child directories Treemacs will collapse into one. Default value: 3

Using all 3 options the dotspacemacs-configuration-layers will look like this:

  (treemacs
   :variables
   treemacs-use-follow-mode t
   treemacs-use-filewatch-mode t
   treemacs-use-collapsed-directories 3)

Configuration

A detailed list of all possible configuration options can be found in Treemacs' readme. You can also look at M-x customize-group treemacs.

Key Bindings

Global

Key Binding Description
SPC f t Hide/show existing treemacs buffer. Create one for the current directory if no buffer exists.
SPC f T Open treemacs in the current directory. When not visiting a file use $HOME as fallback. With a prefix arg manually select the root instead.
SPC f p Same as SPC f t, but when creating a new buffer open it in the current project's root.
SPC f P Open treemacs in the current project's root. With a prefix arg manually select the project instead.
SPC f B Find and select a bookmark. If it cannot be found rebuild view with the bookmark's location as root. Also open the bookmark with a prefix arg.
SPC f C-t Manually focus the treemacs view on the currently selected file. Not needed when treemacs-follow-mode is enabled.
M-0 Selected the treemacs window. Actually selects window #10, which is always assigned to treemacs.

Inside Treemacs

Treemacs will use either j/k or n/p to go to the next/previous line, depending on whether vim/hybrid editing style is used. Likewise refresh is only bound to g when emacs editing style is used, since under vim g is a prefix for many other commands.

Key Binding Description
? Summon the helpful hydra to show you the treemacs keymap.
j/n Goto next/prev line.
h Switch treemacs' root directory to current root's parent, if possible.
l Use currently selected directory as new root. Do nothing for files.
M-j/M-n Select next node at the same depth as currently selected node, if possible.
th Toggle the hiding and displaying of dotfiles.
tw Toggle whether the treemacs buffer should have a fixed width.
tf Toggle treemacs-follow-mode.
ta treemacs-filewatch-mode.
w Reset the width of the treemacs buffer to its default. With a prefix arg set a new default first.
TAB Push the button in the current line to open/close the selected node.
mouse1 Do the same as TAB when mouse1 clicking on an icon. Clicking anywhere other than an icon does nothing.
g/r/gr Refresh and rebuild the treemacs buffer.
d Delete node at point. A delete action must always be confirmed. Directories are deleted recursively.
cf Create a file.
cd Create a directory.
R Rename the currently selected node. Reload buffers visiting renamed files or files in renamed direcotries.
u Select parent of selected node, if possible.
q Hide/show an existing treemacs buffer.
Q Kill the treemacs buffer.
RET Do what I mean. (Run the action defined in treemacs-default-actions for the current button.)
ov Open current file or tag by vertically splitting next-window. Stay in current window with a prefix argument.
oh Open current file or tag by horizontally splitting next-window. Stay in current window with a prefix argument.
oo/RET Open current file or tag, performing no split and using next-window directly. Stay in current window with a prefix argument.
oaa Open current file or tag, using ace-window to decide which buffer to open the file in. Stay in current window with a prefix argument.
oah Open current file or tag by horizontally splitting a buffer selected by ace-window. Stay in current window with a prefix argument.
oav Open current file or tag by vertically splitting a buffer selected by ace-window. Stay in current window with a prefix argument.
ox Open current file or dir, using the xdg-open shell-command.
yy Copy the absolute path of the node at point.
yr Copy the absolute path of the current treemacs root.