rnkn/olivetti
{ "createdAt": "2014-04-10T09:35:34Z", "defaultBranch": "master", "description": "Emacs minor mode to automatically balance window margins", "fullName": "rnkn/olivetti", "homepage": "", "language": "Emacs Lisp", "name": "olivetti", "pushedAt": "2024-10-30T05:42:48Z", "stargazersCount": 1189, "topics": [ "emacs", "emacs-lisp", "prose", "writing" ], "updatedAt": "2025-11-25T23:40:51Z", "url": "https://github.com/rnkn/olivetti"}Olivetti
Section titled “Olivetti”[][1]
[
][2]
A simple Emacs minor mode for a nice writing environment.
![olivetti screenshot]!(screenshot.png)
Features
Section titled “Features”- 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), a fraction of
the window width (a float between 0.0 and 1.0), or
nilwhich uses the value offill-column+2. - Interactively change body width with:
olivetti-shrink C-c { { { ...
olivetti-expand C-c } } } ...
olivetti-set-width C-c | - If
olivetti-body-widthis an integer, the text body width will scale with use of text-scale-mode, whereas if a fraction (float) then the text body width will remain at that fraction. - Change the way the text body margins look with option
olivetti-style: use margins, fringes, or both for a fancy “page” look. - Customize
olivetti-fringeface to affect only Olivetti buffers. - Optionally remember the state of
visual-line-modeon entry and recall its state on exit.
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.
Requirements
Section titled “Requirements”- Emacs 24.4
Installation
Section titled “Installation”The latest stable release of Olivetti is available via [MELPA-stable][1]. First, add MELPA-stable to your package archives:
M-x customize-option RET package-archives RETInsert an entry named melpa-stable with URL:
https://stable.melpa.org/packages/
You can then find the latest stable version of olivetti in the
list returned by:
M-x list-packages RETIf you prefer the latest but perhaps unstable version, do the above using [MELPA][2].
Advanced Installation
Section titled “Advanced Installation”Download the latest tagged release, move this file into your load-path
and add to your init.el file:
(require 'olivetti)If you wish to contribute to or alter Olivetti’s code, clone the repository into your load-path and require as above:
git clone https://github.com/rnkn/olivetti.gitBugs and Feature Requests
Section titled “Bugs and Feature Requests”Use GitHub issues or send me an email (address in the package header). For bugs, please ensure you can reproduce with:
$ emacs -Q -l olivetti.elAlternatives
Section titled “Alternatives”For those looking for a hardcore distraction-free writing mode with a much larger scope, I recommend Writeroom Mode.
[1] !: https://stable.melpa.org/#/olivetti [2] !: https://melpa.org/#/olivetti
Donations
Section titled “Donations”Donations are graciously accepted via [Github][3], or [Liberapay][4].
[3] !: https://github.com/sponsors/rnkn [4] !: https://liberapay.com/rnkn/