This is a package to perform text folding like in Vim. It has the following features:
-
folding of active regions;
-
good visual feedback: it's obvious which part of text is folded;
-
create folds from regions between
{{{
}}}
automatically (marks are customizable); -
persistence by default: when you kill a buffer your folds don't disappear;
-
persistence scales well, you can work on hundreds of files with lots of folds without adverse effects;
-
it does not break indentation;
-
folds can be toggled from folded state to unfolded and back very easily;
-
quick navigation between existing folds;
-
you can use mouse to unfold folds (good for beginners and not only for them);
-
for fans of the
avy
package: you can useavy
to fold text with minimal number of key strokes!
If you would like to install the package manually, download or clone it and
put on Emacs' load-path
, then you can require it in your init file like
this:
(require 'vimish-fold)
It's available via MELPA, so you can just M-x package-install RET vimish-fold RET.
First of all, create global key bindings for most important functions:
vimish-fold
creates folds;vimish-fold-delete
deletes folds.
When point is inside of a fold you can toggle it with C-`, so usually you don't need to bind toggling functions.
Minimal code creating the keybindings might look like this:
(global-set-key (kbd "<menu> v f") #'vimish-fold)
(global-set-key (kbd "<menu> v v") #'vimish-fold-delete)
Of course you can choose different key bindings.
Other functions that constitute API of the package:
vimish-fold-unfold
vimish-fold-unfold-all
vimish-fold-refold
vimish-fold-refold-all
vimish-fold-delete-all
vimish-fold-toggle
vimish-fold-toggle-all
vimish-fold-avy
(requiresavy
package)vimish-fold-from-marks
To get persistent folds you need to enable a minor mode provided by the
package. You can turn vimish-fold-mode
selectively for modes where you
want to have persistent folding, or simply activate it everywhere:
(vimish-fold-global-mode 1)
There are a number of customization options that are available via M-x customize-group vimish-fold. Everything is carefully documented, as always.
This work is based on Magnar Sveen's fold-this
package to some extent, so
I think I should include him as an author, thanks Magnar!
Copyright © 2015–present Mark Karpov
Copyright © 2012–2013 Magnar Sveen
Distributed under GNU GPL, version 3.