emacs-erc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#60936: 30.0.50; ERC >5.5: Add erc-fill style based on visual-line-mo


From: J.P.
Subject: bug#60936: 30.0.50; ERC >5.5: Add erc-fill style based on visual-line-mode
Date: Wed, 18 Jan 2023 06:53:48 -0800
User-agent: Gnus/5.13 (Gnus v5.13)

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))

Attachment: 0001-5.6-Adjust-some-old-text-properties-in-ERC-buffers.patch
Description: Text Data

Attachment: 0002-5.6-Leverage-display-properties-better-in-erc-stamp.patch
Description: Text Data

Attachment: 0003-5.6-Convert-erc-fill-minor-mode-into-a-proper-module.patch
Description: Text Data

Attachment: 0004-5.6-Add-erc-fill-style-based-on-visual-line-mode.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]