107 lines
8.8 KiB
Org Mode
107 lines
8.8 KiB
Org Mode
|
#+TITLE: Treemacs layer
|
||
|
|
||
|
* Table of Contents :TOC_4_gh:noexport:
|
||
|
- [[#description][Description]]
|
||
|
- [[#features][Features:]]
|
||
|
- [[#installation][Installation]]
|
||
|
- [[#configuration][Configuration]]
|
||
|
- [[#key-bindings][Key Bindings]]
|
||
|
- [[#global][Global]]
|
||
|
- [[#inside-treemacs][Inside Treemacs]]
|
||
|
|
||
|
* Description
|
||
|
This layer brings in [[https://github.com/Alexander-Miller/treemacs][Treemacs]] to replace Neotree as the default file and project explorer:
|
||
|
|
||
|
[[file:img/treemacs.png]]
|
||
|
|
||
|
** Features:
|
||
|
An detailed overview over Treemacs' available features is available in [[https://github.com/Alexander-Miller/treemacs#detailed-feature-list][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:
|
||
|
|
||
|
#+BEGIN_SRC emacs-lisp
|
||
|
(treemacs
|
||
|
:variables
|
||
|
treemacs-use-follow-mode t
|
||
|
treemacs-use-filewatch-mode t
|
||
|
treemacs-use-collapsed-directories 3)
|
||
|
#+END_SRC
|
||
|
|
||
|
* Configuration
|
||
|
A detailed list of all possible configuration options can be found in [[https://github.com/Alexander-Miller/treemacs#configuration][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. |
|