Olivetti is a simple Emacs minor mode for a nice writing environment.
Pictured: Big Fish by John August using text body width of 66 (top, also using Fountain Mode), lorem ipsum text using text body width of 80 (bottom)
- Set a desired text body width to automatically resize window margins to keep the text comfortably in the middle of the window.
- Text body width can be the number of characters (an integer) or a fraction of the window width (a float between 0.0 and 1.0).
- Interactively change body width with:
olivetti-shrink
C-c [ [ [ ...
olivetti-expand
C-c ] ] ] ...
olivetti-set-width
C-c \ - If
olivetti-body-width
is an integer, the text body width will scale with use oftext-scale-mode
, whereas if a fraction (float) then the text body width will remain at that fraction. - Optionally remember the state of
visual-line-mode
on entry and recall its state on exit. - Optionally hide the mode-line for distraction-free writing.
Olivetti keeps everything it does buffer-local, so you can write prose in one buffer and code in another, side-by-side in the same frame. Or, by hiding the mode-line and using a single window in a fullscreen frame, Olivetti provides a nice distraction-free environment. For those looking for a hardcore distraction-free writing mode with a much larger scope, I recommend writeroom-mode.
- Emacs 24.4
Olivetti is available through MELPA and MELPA-stable. I encourage installing the stable version.
Alternately, download the latest release and put it in your
load-path
.
linum-mode
in Emacs versions earlier than 26.1 has a bug that overwrites margin settings, making it incompatible with modes that work with margins. More information here: https://debbugs.gnu.org/20674.
Please report bugs on GitHub Issues page.
See Releases.
To always use a different width for a specific file, set a File Variable
specifying olivetti-body-width
:
M-x add-file-local-variable RET olivetti-body-width RET 66 RET