summaryrefslogtreecommitdiff
path: root/docs/plans/2026-04-10-olivetti-org-design.md
blob: 863ca65a5dcc3a844520a27ab9fd1ed4db60b035 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Olivetti Org Design

## Context

The configuration is modular:

- `lisp/ss-ui.el` owns visual packages and interface defaults.
- `lisp/ss-org.el` owns Org-specific setup and hooks.
- `init.el` composes modules centrally through `ss-enabled-features`.

The requested behavior is to add `olivetti-mode` to the configuration and
enable it automatically for Org buffers in both GUI Emacs and `emacs -nw`.

## Options Considered

### 1. Recommended: split package ownership and activation by module

- Declare and configure `olivetti` in `lisp/ss-ui.el`.
- Enable `olivetti-mode` from `org-mode-hook` in `lisp/ss-org.el`.

This matches the repository boundaries: visual package ownership remains in the
UI module, while Org-specific behavior remains in the Org module.

### 2. Put everything in `lisp/ss-org.el`

- Add the package declaration and the hook together in the Org module.

This is workable but muddies module boundaries by making the Org module own a
general presentation package.

### 3. Add a new writing-focused module

- Introduce a dedicated module for prose layout and writing helpers.

This is clean only if more writing-mode features are expected soon. For a
single package addition, it adds unnecessary structure.

## Chosen Design

Use option 1.

- Add `olivetti` in `lisp/ss-ui.el` with a modest body width that works in GUI
  and terminal frames.
- Enable `olivetti-mode` automatically in Org buffers from `lisp/ss-org.el`.
- Do not enable it globally or for non-Org buffers.
- Keep startup order unchanged.

## Verification

- Run `emacs --batch -Q --load ./init.el` from the repository root.
- Run an actual terminal Emacs startup check with `emacs -nw` loading this
  configuration, since batch mode alone will not catch tty regressions.

## Documentation Impact

`README.md` should be updated so the package list and Org behavior describe the
new default truthfully.