Tags: patch This bug is broadly related to bug#51969: 29.0.50; Add command for refilling ERC buffers Hi people, Newcomers to ERC are sometimes disappointed to discover that messages are "filled" in the traditional sense, meaning white space is permanently added and removed to produce "folded" lines as if M-q'd in an editing mode. Unfortunately, much of IRC involves dealing with preformatted messages sent by bots or a server (think "figlet" banners in MOTD bursts or /msg NickServ help). While it's always been possible to turn off filling everywhere (`fill' is global module, remember), doing so necessarily means surrendering any and all filling, whose very purpose is to make it easy to distinguish between speakers at a glance. This patch aims to offer a compromise of sorts, assuming users are willing to tolerate some opinionated choices. The first is that, for now, per-message lefty timestamps are out. If you want timestamps, they must go on the right (except for the occasional dateline break). Moreover, right-hand timestamps basically look awful unless you accept a new paradigm that places them all in the right margin. (This can be toggled off when space is tight.) Yet another catch involves `visual-line-mode' itself, which is managed for you. Basically, users of modal editing packages may suffer from basic navigation issues without taking extra care to cope with its idiosyncrasies. An ancillary goal of this patch is to have this mode double as a reference implementation for a certain flavor of local module, namely one that's "tunably persistent" per buffer. Also on display will be an added degree of versatility in terms of activation. While users can still add `fill-wrap' to `erc-modules' or enable it manually via minor-mode toggle, they can also elect to allow the global `fill' module to control it transparently, as a child module, simply by setting `erc-fill-function' to `erc-fill-wrap'. If you'd like to try this, do the following after applying these patches and before connecting: (setopt erc-fill-function #'erc-fill-wrap erc-timestamp-user-align-to 'margin) Screenshots to follow (possibly). Thanks, J.P. P.S. These patches come bundled with the so-called "edge" edition of ERC, an alpha-quality hodgepodge of WIP patches available as an ELPA package ("https://emacs-erc.gitlab.io/bugs/archive/"). In GNU Emacs 30.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.35, cairo version 1.17.6) of 2023-01-17 built on localhost Repository revision: 281f48f19ecad706a639d57cb937afb0b97eded7 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12014000 System Description: Fedora Linux 36 (Workstation Edition) Configured using: 'configure --enable-check-lisp-object-type --enable-checking=yes,glyphs 'CFLAGS=-O0 -g3' PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util text-property-search mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils erc iso8601 time-date auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map thingatpt pp format-spec cl-loaddefs cl-lib erc-backend erc-goodies erc-networks byte-opt gv bytecomp byte-compile erc-common erc-compat erc-loaddefs rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 64390 6319) (symbols 48 8639 0) (strings 32 23673 1623) (string-bytes 1 685926) (vectors 16 15259) (vector-slots 8 209777 7692) (floats 8 24 35) (intervals 56 232 0) (buffers 976 10))