summaryrefslogtreecommitdiff
path: root/itches/emacs/form-feed.md
diff options
context:
space:
mode:
Diffstat (limited to 'itches/emacs/form-feed.md')
-rw-r--r--itches/emacs/form-feed.md56
1 files changed, 56 insertions, 0 deletions
diff --git a/itches/emacs/form-feed.md b/itches/emacs/form-feed.md
new file mode 100644
index 0000000..61fd48b
--- /dev/null
+++ b/itches/emacs/form-feed.md
@@ -0,0 +1,56 @@
+# Better out-of-the-box display for FORM FEED
+
+By default, FORM FEED is displayed as a dumb `^L` glyph. This is
+surprising considering it shows up in so many places:
+
+- Emacs source files (C and Elisp),
+- help buffers:
+ - `describe-mode`,
+ - `describe-bindings`,
+ - `view-emacs-news`,
+- log buffers:
+ - `*Compile-Log*`,
+ - `*Dired log*`,
+- …
+
+You can even see it in source files of other GNU projects, like GCC.
+
+"Pages" are important enough to have their own navigation and
+narrowing commands, yet their default delimiter is displayed as an
+unassuming control character.
+
+I like the way form feeds are displayed with [`page-break-lines`];
+magit's `show-lines` blaming style achieves a similar look.
+
+Having this kind of display by default would make it more obvious that
+this character has actual navigation semantics; as it stands, it looks
+no different from some stray CARRIAGE RETURN.
+
+This hypothetical thin-line display could be re-used by e.g.:
+
+- `describe-symbol`, which uses the following method to visually break
+ up multiple symbol definitions:
+
+ ``` lisp
+ (insert "\n\n"
+ (eval-when-compile
+ (propertize "\n" 'face '(:height 0.1 :inverse-video t)))
+ "\n")
+ ```
+
+- Custom buffers, where sections are delimited visually with a
+ 999-character wide underlined space.
+
+(See [emacs-devel][emacs-devel-thin-line] for a use-case recap.)
+
+Full disclosure
+: This reflection started because moving over this underlined space
+ with `truncate-lines` on causes the screen to jump horizontally.
+ This specific problem should be fixable without dragging FORM FEED
+ display into the discussion, but I feel like the latter is the
+ more interesting issue ([who on Earth] enables `truncate-lines` by
+ default anyway).
+
+[`page-break-lines`]: https://github.com/purcell/page-break-lines
+[emacs-devel-thin-line]: https://lists.gnu.org/archive/html/emacs-devel/2019-05/msg00268.html
+[who on Earth]: https://gitlab.com/peniblec/dotfiles/blob/master/.emacs-custom.el