From 9d961b31070cf34bf63c7dde9f54864b11ef80ea Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Wed, 13 Dec 2023 22:45:06 -0800 Subject: [PATCH] Demote erc-fill-line-spacing to a normal variable * etc/ERC-NEWS: Remove section from 5.6 announcing user option `erc-fill-line-spacing'. * lisp/erc/erc-fill.el (erc-fill-line-spacing): Change from an option to a variable and note unfortunate UX hiccups. (erc-fill-wrap-merge, erc-fill-wrap-merge-indicator, fill-wrap): Remove mention of the option, now variable, `erc-fill-line-spacing'. (Bug#60936) --- etc/ERC-NEWS | 7 ------ lisp/erc/erc-fill.el | 60 ++++++++++++++++++++++++-------------------- 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index ed3634614a0..b38ebfe208c 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -131,13 +131,6 @@ connectivity before attempting to reconnect in earnest. See option 'erc-server-reconnect-function' and new local module 'services-regain' (also experimental) to get started. -** Module 'fill' can add a bit of space between messages. -On graphical displays, it's now possible to add some breathing room -around certain messages via the new option 'erc-fill-line-spacing'. -This is especially handy when using the option 'erc-fill-wrap-merge' -to omit repeated speaker tags, which can make message boundaries less -detectable by tired eyes. - ** Modules rather than their libraries set major-mode keybindings. To put it another way, simply loading a built-in module's library no longer modifies 'erc-mode-map'. Instead, modifications occur during diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el index b17f571d3c0..16ae5bae8d5 100644 --- a/lisp/erc/erc-fill.el +++ b/lisp/erc/erc-fill.el @@ -144,12 +144,14 @@ user-defined functions." :package-version '(ERC . "5.6") :type 'boolean) -(defcustom erc-fill-line-spacing nil +(defvar erc-fill-line-spacing nil "Extra space between messages on graphical displays. -Its value should be larger than that of the variable -`line-spacing', if set. When unsure, start with 0.5." - :package-version '(ERC . "5.6") - :type '(choice (const nil) number)) +Its value should probably be larger than that of the variable +`line-spacing', if non-nil. When unsure, start with 1.0. Note +that as of ERC 5.6, this feature doesn't combine well with the +`scrolltobottom' module, which is de facto required when using +the `fill-wrap' filling style. Users should therefore regard +this variable as experimental for the time being.") (defvar-local erc-fill--function nil "Internal copy of `erc-fill-function'. @@ -261,9 +263,7 @@ the value of `erc-fill-wrap-visual-keys'." "Whether to consolidate consecutive messages from the same speaker. When non-nil, ERC omits redundant speaker labels for subsequent messages less than a day apart. To help distinguish between -merged messages, see related options `erc-fill-line-spacing', for -graphical displays, and `erc-fill-wrap-merge-indicator' for text -terminals." +merged messages, see option `erc-fill-wrap-merge-indicator'." :package-version '(ERC . "5.6") :type 'boolean) @@ -281,19 +281,25 @@ Only matters when the option `erc-fill-wrap-merge' is enabled. If the first element is the symbol `pre', ERC uses this option to generate a replacement for the speaker's name tag. If the first element is `post', ERC affixes a short string to the end of the -previous message. (Note that the latter variant nullifies any -intervening padding supplied by `erc-fill-line-spacing' and is -meant to supplant that option in text terminals.) In either -case, the second element should be a character, like ?>, and the -last element a valid face. In special cases, you may also -specify a cons of `pre'/`post' and a string, which tells ERC you -know what you're doing and not to manage the process for you. If -unsure, try either of the first two presets, both of which -replace a continued speaker's name with a dot-product-like glyph -in `shadow' face. Note that this option is still experimental, -and changing its value mid-session is not yet supported (though, -if you must, make sure to run \\[erc-fill-wrap-refill-buffer] -afterward)." +previous message. In either case, the second element should be a +character, like ?>, and the last element a valid face. In +special cases, you may also specify a cons of either +aforementioned symbol and a string, which tells ERC not to manage +the process for you. If unsure, try either of the first two +presets, both of which replace a continued speaker's name with a +dot-product-like character in a `shadow'-like face. + +Note that as of ERC 5.6, this option is still experimental, and +changing its value mid-session is not yet supported (though, if +you must, make sure to run \\[erc-fill-wrap-refill-buffer] +afterward). Also note that users on versions of Emacs older than +29.2 may experience a \"glitching\" effect when point resides on +a \"merged\" message occupying the first or last line in a +window. If that happens, try replacing `top' with the integer 1 +in the option `recenter-positions' while also maybe adjusting +`scroll-margin' and/or `scroll-preserve-screen-position' to avoid +\"dragging\" point when issuing a `scroll-up' or `scroll-down' +command." :package-version '(ERC . "5.6") :type '(choice (const nil) @@ -468,12 +474,12 @@ cycling between logical- and screen-line oriented command movement. Similarly, use \\[erc-fill-wrap-refill-buffer] to fix alignment problems after running certain commands, like `text-scale-adjust'. Also see related stylistic options -`erc-fill-line-spacing', `erc-fill-wrap-merge', and -`erc-fill-wrap-merge-indicator'. Hint: in narrow windows, where -is space tight, try setting `erc-fill-static-center' to 1. And -if you also use the option `erc-fill-wrap-merge-indicator', set -that to value-menu item \"Leading MIDDLE DOT (U+00B7) sans gap\" -or one of the various \"trailing\" items. +`erc-fill-wrap-merge', and `erc-fill-wrap-merge-indicator'. +\(Hint: in narrow windows, where is space tight, try setting +`erc-fill-static-center' to 1. And if you also use the option +`erc-fill-wrap-merge-indicator', set that to value-menu item +\"Leading MIDDLE DOT sans gap\" or one of the various +\"trailing\" items.) This module imposes various restrictions on the appearance of timestamps. Most notably, it insists on displaying them in the -- 2.39.2