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
avypackage: you can useavyto 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-foldcreates folds;vimish-fold-deletedeletes 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-unfoldvimish-fold-unfold-allvimish-fold-unfold-all-othersvimish-fold-refoldvimish-fold-refold-allvimish-fold-refold-all-othersvimish-fold-delete-allvimish-fold-delete-all-othersvimish-fold-togglevimish-fold-toggle-allvimish-fold-toggle-all-othersvimish-fold-avy(requiresavypackage)vimish-fold-from-marksvimish-fold-narrow-to-fold
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.
