.. | ||
img | ||
config.el | ||
funcs.el | ||
layers.el | ||
packages.el | ||
README.org |
Treemacs layer
Description
This layer sets up a file navigation and project explorer side-window via Treemacs.
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.
- Display of multiple file trees organized as projects residing in a workspace.
- Ability to show tags contained in files. Tags are provided by imenu, so nearly every filetype is supported.
- Mouse interface for single and double left clicks in line with modern GUI standards. (Clicking on an icon will also display a file's tags)
- Locational awareness: commands like
find-file
ormagit-status
will use the location of the node at point (with $HOME as fallback) - 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 or tag. - Optional
filewatch-mode
to automatically refresh the view after (and only after) changes to the shown filesystem.
Install
To use this layer, add treemacs
to the existing
dotspacemacs-configuration-layers
in your dotspacemacs
file.
Configuration
Follow mode
To have Treemacs automatically sync with your current:
- Buffer's file, set the layer variable
treemacs-use-follow-mode
tot
. - Tag, set the layer variable
treemacs-use-follow-mode
totag
.
(setq-default dotspacemacs-configuration-layers '(
(treemacs :variables treemacs-use-follow-mode 'tag)))
Default is t
.
File watch
To automatically refresh the Treemacs buffer when there is a change in the
part of the file system shown by treemacs set the layer variable
treemacs-use-filewatch-mode
to non-nil.
(setq-default dotspacemacs-configuration-layers '(
(treemacs :variables treemacs-use-filewatch-mode t)))
Default is t
.
Git mode
To enable Treemacs to check for files’ and directories’ git status information
and highlight them accordingly, set the layer variable treemacs-use-git-mode
to simple
, extended
, or deferred
. See the Treemacs doc for a more detailed
explanation.
(setq-default dotspacemacs-configuration-layers '(
(treemacs :variables treemacs-use-git-mode 'deferred)))
Default is nil
.
Collapsed directories
This feature requires python to be installed.
Treemacs tries to collapse empty directory names into one name. It is possible
to control how deep Treemacs will search for empty directories by settings the
layer variable treemacs-use-collapsed-directories
to a positive number.
(setq-default dotspacemacs-configuration-layers '(
(treemacs :variables treemacs-use-collapsed-directories 3)))
Default is 3 (or 0 when python is not installed).
Locking width
To have the width of the treemacs window locked by default, meaning not manually
resizable, set the variable treemacs-lock-width
to non-nil. It will still be
resizable through Treemacs commands and key bindings.
(setq-default dotspacemacs-configuration-layers '(
(treemacs :variables treemacs-lock-width t)))
Default is nil
.
Key bindings
Global
Key binding | Description |
---|---|
M-0 |
Selected the treemacs window. Actually selects window #10, which is always assigned to treemacs. |
SPC 0 |
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 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 t |
Hide/show existing treemacs buffer. Create one for the current directory if no buffer exists. |
SPC f T |
Manually focus the treemacs view on the currently selected file. Not needed when treemacs-follow-mode is enabled. |
SPC f M-t |
Manually focus the treemacs view on the currently selected file and tag. |
SPC p t |
Hide/show existing treemacs buffer. Add the current project to treemacs if not already added. |
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. |
M-j/M-n |
Select next node at the same depth as currently selected node, if possible. |
j/n |
Goto next line. |
k/p |
Goto previous line. |
M-J/N |
Go to the next line in next-window . |
M-K/P |
Go to the previous line in next-window .. |
M-j/M-n |
Select next node at the same depth as currently selected node, if possible. |
M-k/M-p |
Select previous node at the same depth as currently selected node, if possible. |
C-c C-p a |
Select a new project to add to the treemacs workspace. |
C-c C-p p |
Select a projectile project to add to the workspace. |
C-c C-p d |
Remove project at point from the workspace. |
C-c C-p r |
Rename project at point. |
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 |
Set a new value for the width of the treemacs window. |
TAB |
Do what I mean (as defined in treemacs-TAB-actions-config ). Prefers expanding nodes by default. |
RET |
Do what I mean (as defined in treemacs-RET-actions-config ). Prefers visiting nodes by default. |
mouse1 |
Move point to clicked line |
2x mouse1 |
Do what I mean (as defined in treemacs-doubleclick-actions-config ). Behaves like RET by default. |
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 directories. |
u |
Select parent of selected node, if possible. |
q |
Hide/show an existing treemacs buffer. |
Q |
Kill the treemacs buffer. |
ov |
Open current file or tag by vertically splitting next-window . |
oh |
Open current file or tag by horizontally splitting next-window . |
oo |
Open current file or tag, performing no split and using next-window directly. |
oaa |
Open current file or tag, using ace-window to decide which window to open the file in. |
oah |
Open current file or tag by horizontally splitting a window selected by ace-window. |
oav |
Open current file or tag by vertically splitting a window selected by ace-window. |
ox |
Open current file according to its mime type in an external application. Linux, Windows and macOS are supported. |
ta |
Toggle treemacs-filewatch-mode . |
tf |
Toggle treemacs-follow-mode . |
th |
Toggle the hiding and displaying of dotfiles. |
tw |
Toggle whether the treemacs buffer should have a fixed width. |
yr |
Copy the absolute path of the nearest project node at point. |
yy |
Copy the absolute path of the node at point. |