unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
@ 2024-08-03 13:14 Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 17+ messages in thread
From: Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-08-03 13:14 UTC (permalink / raw)
  To: 72442


Gnus doesn't handle international message reply prefixes as opposed
to Re: or it's variants.

An example would be `gnus-simpliy-subject-re' which threats English
subject prefixes.

Message.el doesn't do so either (by default) I don't think it makes
sense to open a separate bug about this but please reply that should be
done.

The message manual also judges users for using localized variants of
"Re: " by calling them "nincompoops" for using these "abominations"
which it says are "meaningless and evil".

The offending text can be found in the documentation for
`message-subject-re-regexp' in the chapter "3.1 Message Headers".

Steps to reproduce:
1. Enable any of the functions which thread subjects such as
`gnus-simpliy-subject-re'
2. Receive a message which contains a subject prefix for a reply
   that isn't the Latin or English "Re: " such as "Aw" or "Sv: "
3. See result.


In GNU Emacs 31.0.50 (build 1, x86_64-suse-linux-gnu, GTK+ Version
3.24.43, cairo version 1.18.0)
Windowing system distributor 'The X.Org Foundation', version 11.0.12101012
System Description: openSUSE Tumbleweed

Configured using:
 'configure --disable-build-details --without-pop --with-mailutils
 --without-hesiod --with-gameuser=:games --with-kerberos
 --with-kerberos5 --with-file-notification=inotify --with-modules
 --enable-autodepend --enable-link-time-optimization --prefix=/usr
 --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share
 --localstatedir=/var --sharedstatedir=/var/lib
 --libexecdir=/usr/libexec --with-file-notification=yes
 --libdir=/usr/lib64 --with-native-compilation=aot
 --enable-locallisppath=/usr/share/emacs/31.0.50/site-lisp:/usr/share/emacs/site-lisp
 --with-x --with-xim --with-sound --with-xpm --with-jpeg --with-tiff
 --with-gif --with-png --with-rsvg --with-dbus --with-xft --without-gpm
 --with-tree-sitter --with-x-toolkit=gtk --without-pgtk
 --with-toolkit-scroll-bars --x-includes=/usr/include
 --x-libraries=/usr/lib64 --with-libotf --with-m17n-flt --with-cairo
 --with-xwidgets --build=x86_64-suse-linux --with-dumping=pdumper
 build_alias=x86_64-suse-linux 'CC=sccache cc' 'CFLAGS=-O2 -Wall
 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong
 -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection
 -Werror=return-type -flto=auto -march=znver3 -mmmx -mpopcnt -msse
 -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -msse4a -mno-fma4
 -mno-xop -mfma -mno-avx512f -mbmi -mbmi2 -maes -mpclmul -mno-avx512vl
 -mno-avx512bw -mno-avx512dq -mno-avx512cd -mno-avx512er -mno-avx512pf
 -mno-avx512vbmi -mno-avx512ifma -mno-avx5124vnniw -mno-avx5124fmaps
 -mno-avx512vpopcntdq -mno-avx512vbmi2 -mno-gfni -mvpclmulqdq
 -mno-avx512vnni -mno-avx512bitalg -mno-avx512bf16
 -mno-avx512vp2intersect -mno-3dnow -madx -mabm -mno-cldemote
 -mclflushopt -mclwb -mclzero -mcx16 -mno-enqcmd -mf16c -mfsgsbase
 -mfxsr -mno-hle -msahf -mno-lwp -mlzcnt -mmovbe -mno-movdir64b
 -mno-movdiri -mmwaitx -mno-pconfig -mpku -mno-prefetchwt1 -mprfchw
 -mno-ptwrite -mrdpid -mrdrnd -mrdseed -mno-rtm -mno-serialize -mno-sgx
 -msha -mshstk -mno-tbm -mno-tsxldtrk -mvaes -mno-waitpkg -mwbnoinvd
 -mxsave -mxsavec -mxsaveopt -mxsaves -mno-amx-tile -mno-amx-int8
 -mno-amx-bf16 -mno-uintr -mno-hreset -mno-kl -mno-widekl -mno-avxvnni
 -mno-avx512fp16 -mno-avxifma -mno-avxvnniint8 -mno-avxneconvert
 -mno-cmpccxadd -mno-amx-fp16 -mno-prefetchi -mno-raoint
 -mno-amx-complex --param l1-cache-size=32 --param l1-cache-line-size=64
 --param l2-cache-size=512 -mtune=znver3 -fno-optimize-sibling-calls -g
 -D_GNU_SOURCE -DGDK_DISABLE_DEPRECATION_WARNINGS
 -DGLIB_DISABLE_DEPRECATION_WARNINGS -pipe -Wno-pointer-sign
 -Wno-unused-variable -Wno-unused-label -DPDMP_BASE='\''"emacs-gtk"'\'''
 LDFLAGS=-Wl,-O2 'CXX=sccache c++'
 PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP
NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS
GTK3 ZLIB

Important settings:
  value of $LC_MONETARY: fi_FI.UTF-8
  value of $LC_NUMERIC: POSIX
  value of $LANG: en_GB.UTF-8
  value of $XMODIFIERS: @im=local
  locale-coding-system: utf-8-unix

Major mode: Info

Minor modes in effect:
  dap-tooltip-mode: t
  dap-ui-many-windows-mode: t
  dap-ui-controls-mode: t
  dap-ui-mode: t
  dap-auto-configure-mode: t
  dap-mode: t
  lsp-treemacs-sync-mode: t
  treemacs-filewatch-mode: t
  treemacs-git-mode: t
  treemacs-fringe-indicator-mode: t
  circe-lagmon-mode: t
  magit-wip-initial-backup-mode: t
  magit-wip-before-change-mode: t
  magit-wip-after-apply-mode: t
  magit-wip-after-save-mode: t
  magit-wip-mode: t
  magit-auto-revert-mode: t
  pdf-occur-global-minor-mode: t
  pdf-virtual-global-minor-mode: t
  global-atomic-chrome-edit-mode: t
  minions-mode: t
  back-button-mode: t
  recentf-mode: t
  global-auto-revert-mode: t
  savehist-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  gnus-desktop-notify-mode: t
  tracking-mode: t
  org-super-agenda-mode: t
  global-git-commit-mode: t
  projectile-mode: t
  global-company-mode: t
  company-mode: t
  electric-pair-mode: t
  editorconfig-mode: t
  frames-only-mode: t
  windmove-mode: t
  marginalia-mode: t
  which-key-mode: t
  dirvish-override-dired-mode: t
  dired-async-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  global-so-long-mode: t
  global-emojify-mode: t
  emojify-mode: t
  change-cursor-mode: t
  doom-modeline-mode: t
  server-mode: t
  helm-autoresize-mode: t
  desktop-save-mode: t
  Info-persist-history-mode: t
  save-place-mode: t
  delete-selection-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  undelete-frame-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-koma-letter hides /home/bidar/.local/etc/emacs/lib/lisp/ox-koma-letter
/home/bidar/.local/etc/emacs/lib/org-contrib/lisp/ox-groff hides /home/bidar/.local/etc/emacs/lib/lisp/ox-groff
/home/bidar/.local/etc/emacs/lib/vim-modeline/vim-modeline hides /home/bidar/.local/etc/emacs/lib/lisp/vim-modeline
/home/bidar/.local/etc/emacs/lib/lisp/htmlize hides /home/bidar/.local/etc/emacs/lib/htmlize/htmlize
/home/bidar/.local/etc/emacs/lib/lisp/cursor-chg hides /home/bidar/.local/etc/emacs/lib/cursor-chg/cursor-chg
/home/bidar/.local/etc/emacs/lib/cmake-mode/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
/home/bidar/.local/etc/emacs/lib/async/dired-async hides /usr/share/emacs/site-lisp/dired-async
/home/bidar/.local/etc/emacs/lib/async/async-bytecomp hides /usr/share/emacs/site-lisp/async-bytecomp
/home/bidar/.local/etc/emacs/lib/async/async-autoloads hides /usr/share/emacs/site-lisp/async-autoloads
/home/bidar/.local/etc/emacs/lib/async/smtpmail-async hides /usr/share/emacs/site-lisp/smtpmail-async
/home/bidar/.local/etc/emacs/lib/async/async hides /usr/share/emacs/site-lisp/async
/home/bidar/.local/etc/emacs/lib/compat/compat hides /usr/share/emacs/site-lisp/compat
/home/bidar/.local/etc/emacs/lib/compat/compat-29 hides /usr/share/emacs/site-lisp/compat-29
/home/bidar/.local/etc/emacs/lib/compat/compat-28 hides /usr/share/emacs/site-lisp/compat-28
/home/bidar/.local/etc/emacs/lib/compat/compat-27 hides /usr/share/emacs/site-lisp/compat-27
/home/bidar/.local/etc/emacs/lib/compat/compat-26 hides /usr/share/emacs/site-lisp/compat-26
/home/bidar/.local/etc/emacs/lib/compat/compat-25 hides /usr/share/emacs/site-lisp/compat-25
/home/bidar/.local/etc/emacs/lib/which-key/which-key hides /usr/share/emacs/31.0.50/lisp/which-key
/home/bidar/.local/etc/emacs/lib/transient/lisp/transient hides /usr/share/emacs/31.0.50/lisp/transient
/home/bidar/.local/etc/emacs/lib/editorconfig/editorconfig hides /usr/share/emacs/31.0.50/lisp/editorconfig
/home/bidar/.local/etc/emacs/lib/use-package/bind-key hides /usr/share/emacs/31.0.50/lisp/bind-key
/home/bidar/.local/etc/emacs/lib/editorconfig/editorconfig-tools hides /usr/share/emacs/31.0.50/lisp/editorconfig-tools
/home/bidar/.local/etc/emacs/lib/editorconfig/editorconfig-fnmatch hides /usr/share/emacs/31.0.50/lisp/editorconfig-fnmatch
/home/bidar/.local/etc/emacs/lib/editorconfig/editorconfig-core hides /usr/share/emacs/31.0.50/lisp/editorconfig-core
/home/bidar/.local/etc/emacs/lib/editorconfig/editorconfig-core-handle hides /usr/share/emacs/31.0.50/lisp/editorconfig-core-handle
/home/bidar/.local/etc/emacs/lib/editorconfig/editorconfig-conf-mode hides /usr/share/emacs/31.0.50/lisp/editorconfig-conf-mode
/home/bidar/.local/etc/emacs/lib/modus-themes/theme-loaddefs hides /usr/share/emacs/31.0.50/lisp/theme-loaddefs
/home/bidar/.local/etc/emacs/lib/use-package/use-package hides /usr/share/emacs/31.0.50/lisp/use-package/use-package
/home/bidar/.local/etc/emacs/lib/use-package/use-package-lint hides /usr/share/emacs/31.0.50/lisp/use-package/use-package-lint
/home/bidar/.local/etc/emacs/lib/use-package/use-package-jump hides /usr/share/emacs/31.0.50/lisp/use-package/use-package-jump
/home/bidar/.local/etc/emacs/lib/use-package/use-package-ensure hides /usr/share/emacs/31.0.50/lisp/use-package/use-package-ensure
/home/bidar/.local/etc/emacs/lib/use-package/use-package-ensure-system-package hides /usr/share/emacs/31.0.50/lisp/use-package/use-package-ensure-system-package
/home/bidar/.local/etc/emacs/lib/use-package/use-package-diminish hides /usr/share/emacs/31.0.50/lisp/use-package/use-package-diminish
/home/bidar/.local/etc/emacs/lib/use-package/use-package-delight hides /usr/share/emacs/31.0.50/lisp/use-package/use-package-delight
/home/bidar/.local/etc/emacs/lib/use-package/use-package-core hides /usr/share/emacs/31.0.50/lisp/use-package/use-package-core
/home/bidar/.local/etc/emacs/lib/use-package/use-package-bind-key hides /usr/share/emacs/31.0.50/lisp/use-package/use-package-bind-key
/home/bidar/.local/etc/emacs/lib/org/lisp/org-list hides /usr/share/emacs/31.0.50/lisp/org/org-list
/home/bidar/.local/etc/emacs/lib/org/lisp/org-refile hides /usr/share/emacs/31.0.50/lisp/org/org-refile
/home/bidar/.local/etc/emacs/lib/org/lisp/org-loaddefs hides /usr/share/emacs/31.0.50/lisp/org/org-loaddefs
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-lilypond hides /usr/share/emacs/31.0.50/lisp/org/ob-lilypond
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-core hides /usr/share/emacs/31.0.50/lisp/org/ob-core
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-beamer hides /usr/share/emacs/31.0.50/lisp/org/ox-beamer
/home/bidar/.local/etc/emacs/lib/org/lisp/org hides /usr/share/emacs/31.0.50/lisp/org/org
/home/bidar/.local/etc/emacs/lib/org/lisp/org-table hides /usr/share/emacs/31.0.50/lisp/org/org-table
/home/bidar/.local/etc/emacs/lib/org/lisp/org-src hides /usr/share/emacs/31.0.50/lisp/org/org-src
/home/bidar/.local/etc/emacs/lib/org/lisp/org-num hides /usr/share/emacs/31.0.50/lisp/org/org-num
/home/bidar/.local/etc/emacs/lib/org/lisp/org-indent hides /usr/share/emacs/31.0.50/lisp/org/org-indent
/home/bidar/.local/etc/emacs/lib/org/lisp/org-capture hides /usr/share/emacs/31.0.50/lisp/org/org-capture
/home/bidar/.local/etc/emacs/lib/org/lisp/org-persist hides /usr/share/emacs/31.0.50/lisp/org/org-persist
/home/bidar/.local/etc/emacs/lib/org/lisp/org-element hides /usr/share/emacs/31.0.50/lisp/org/org-element
/home/bidar/.local/etc/emacs/lib/org/lisp/org-element-ast hides /usr/share/emacs/31.0.50/lisp/org/org-element-ast
/home/bidar/.local/etc/emacs/lib/org/lisp/org-colview hides /usr/share/emacs/31.0.50/lisp/org/org-colview
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-shell hides /usr/share/emacs/31.0.50/lisp/org/ob-shell
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-python hides /usr/share/emacs/31.0.50/lisp/org/ob-python
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-R hides /usr/share/emacs/31.0.50/lisp/org/ob-R
/home/bidar/.local/etc/emacs/lib/org/lisp/org-version hides /usr/share/emacs/31.0.50/lisp/org/org-version
/home/bidar/.local/etc/emacs/lib/org/lisp/ox hides /usr/share/emacs/31.0.50/lisp/org/ox
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-texinfo hides /usr/share/emacs/31.0.50/lisp/org/ox-texinfo
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-publish hides /usr/share/emacs/31.0.50/lisp/org/ox-publish
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-org hides /usr/share/emacs/31.0.50/lisp/org/ox-org
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-odt hides /usr/share/emacs/31.0.50/lisp/org/ox-odt
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-md hides /usr/share/emacs/31.0.50/lisp/org/ox-md
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-man hides /usr/share/emacs/31.0.50/lisp/org/ox-man
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-latex hides /usr/share/emacs/31.0.50/lisp/org/ox-latex
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-koma-letter hides /usr/share/emacs/31.0.50/lisp/org/ox-koma-letter
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-icalendar hides /usr/share/emacs/31.0.50/lisp/org/ox-icalendar
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-html hides /usr/share/emacs/31.0.50/lisp/org/ox-html
/home/bidar/.local/etc/emacs/lib/org/lisp/ox-ascii hides /usr/share/emacs/31.0.50/lisp/org/ox-ascii
/home/bidar/.local/etc/emacs/lib/org/lisp/org-timer hides /usr/share/emacs/31.0.50/lisp/org/org-timer
/home/bidar/.local/etc/emacs/lib/org/lisp/org-tempo hides /usr/share/emacs/31.0.50/lisp/org/org-tempo
/home/bidar/.local/etc/emacs/lib/org/lisp/org-protocol hides /usr/share/emacs/31.0.50/lisp/org/org-protocol
/home/bidar/.local/etc/emacs/lib/org/lisp/org-plot hides /usr/share/emacs/31.0.50/lisp/org/org-plot
/home/bidar/.local/etc/emacs/lib/org/lisp/org-pcomplete hides /usr/share/emacs/31.0.50/lisp/org/org-pcomplete
/home/bidar/.local/etc/emacs/lib/org/lisp/org-mouse hides /usr/share/emacs/31.0.50/lisp/org/org-mouse
/home/bidar/.local/etc/emacs/lib/org/lisp/org-mobile hides /usr/share/emacs/31.0.50/lisp/org/org-mobile
/home/bidar/.local/etc/emacs/lib/org/lisp/org-macs hides /usr/share/emacs/31.0.50/lisp/org/org-macs
/home/bidar/.local/etc/emacs/lib/org/lisp/org-macro hides /usr/share/emacs/31.0.50/lisp/org/org-macro
/home/bidar/.local/etc/emacs/lib/org/lisp/org-lint hides /usr/share/emacs/31.0.50/lisp/org/org-lint
/home/bidar/.local/etc/emacs/lib/org/lisp/org-keys hides /usr/share/emacs/31.0.50/lisp/org/org-keys
/home/bidar/.local/etc/emacs/lib/org/lisp/org-inlinetask hides /usr/share/emacs/31.0.50/lisp/org/org-inlinetask
/home/bidar/.local/etc/emacs/lib/org/lisp/org-id hides /usr/share/emacs/31.0.50/lisp/org/org-id
/home/bidar/.local/etc/emacs/lib/org/lisp/org-habit hides /usr/share/emacs/31.0.50/lisp/org/org-habit
/home/bidar/.local/etc/emacs/lib/org/lisp/org-goto hides /usr/share/emacs/31.0.50/lisp/org/org-goto
/home/bidar/.local/etc/emacs/lib/org/lisp/org-footnote hides /usr/share/emacs/31.0.50/lisp/org/org-footnote
/home/bidar/.local/etc/emacs/lib/org/lisp/org-fold hides /usr/share/emacs/31.0.50/lisp/org/org-fold
/home/bidar/.local/etc/emacs/lib/org/lisp/org-fold-core hides /usr/share/emacs/31.0.50/lisp/org/org-fold-core
/home/bidar/.local/etc/emacs/lib/org/lisp/org-feed hides /usr/share/emacs/31.0.50/lisp/org/org-feed
/home/bidar/.local/etc/emacs/lib/org/lisp/org-faces hides /usr/share/emacs/31.0.50/lisp/org/org-faces
/home/bidar/.local/etc/emacs/lib/org/lisp/org-entities hides /usr/share/emacs/31.0.50/lisp/org/org-entities
/home/bidar/.local/etc/emacs/lib/org/lisp/org-duration hides /usr/share/emacs/31.0.50/lisp/org/org-duration
/home/bidar/.local/etc/emacs/lib/org/lisp/org-datetree hides /usr/share/emacs/31.0.50/lisp/org/org-datetree
/home/bidar/.local/etc/emacs/lib/org/lisp/org-cycle hides /usr/share/emacs/31.0.50/lisp/org/org-cycle
/home/bidar/.local/etc/emacs/lib/org/lisp/org-ctags hides /usr/share/emacs/31.0.50/lisp/org/org-ctags
/home/bidar/.local/etc/emacs/lib/org/lisp/org-crypt hides /usr/share/emacs/31.0.50/lisp/org/org-crypt
/home/bidar/.local/etc/emacs/lib/org/lisp/org-compat hides /usr/share/emacs/31.0.50/lisp/org/org-compat
/home/bidar/.local/etc/emacs/lib/org/lisp/org-clock hides /usr/share/emacs/31.0.50/lisp/org/org-clock
/home/bidar/.local/etc/emacs/lib/org/lisp/org-attach hides /usr/share/emacs/31.0.50/lisp/org/org-attach
/home/bidar/.local/etc/emacs/lib/org/lisp/org-attach-git hides /usr/share/emacs/31.0.50/lisp/org/org-attach-git
/home/bidar/.local/etc/emacs/lib/org/lisp/org-archive hides /usr/share/emacs/31.0.50/lisp/org/org-archive
/home/bidar/.local/etc/emacs/lib/org/lisp/org-agenda hides /usr/share/emacs/31.0.50/lisp/org/org-agenda
/home/bidar/.local/etc/emacs/lib/org/lisp/ol hides /usr/share/emacs/31.0.50/lisp/org/ol
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-w3m hides /usr/share/emacs/31.0.50/lisp/org/ol-w3m
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-rmail hides /usr/share/emacs/31.0.50/lisp/org/ol-rmail
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-mhe hides /usr/share/emacs/31.0.50/lisp/org/ol-mhe
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-man hides /usr/share/emacs/31.0.50/lisp/org/ol-man
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-irc hides /usr/share/emacs/31.0.50/lisp/org/ol-irc
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-info hides /usr/share/emacs/31.0.50/lisp/org/ol-info
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-gnus hides /usr/share/emacs/31.0.50/lisp/org/ol-gnus
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-eww hides /usr/share/emacs/31.0.50/lisp/org/ol-eww
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-eshell hides /usr/share/emacs/31.0.50/lisp/org/ol-eshell
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-doi hides /usr/share/emacs/31.0.50/lisp/org/ol-doi
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-docview hides /usr/share/emacs/31.0.50/lisp/org/ol-docview
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-bibtex hides /usr/share/emacs/31.0.50/lisp/org/ol-bibtex
/home/bidar/.local/etc/emacs/lib/org/lisp/ol-bbdb hides /usr/share/emacs/31.0.50/lisp/org/ol-bbdb
/home/bidar/.local/etc/emacs/lib/org/lisp/oc hides /usr/share/emacs/31.0.50/lisp/org/oc
/home/bidar/.local/etc/emacs/lib/org/lisp/oc-natbib hides /usr/share/emacs/31.0.50/lisp/org/oc-natbib
/home/bidar/.local/etc/emacs/lib/org/lisp/oc-csl hides /usr/share/emacs/31.0.50/lisp/org/oc-csl
/home/bidar/.local/etc/emacs/lib/org/lisp/oc-bibtex hides /usr/share/emacs/31.0.50/lisp/org/oc-bibtex
/home/bidar/.local/etc/emacs/lib/org/lisp/oc-biblatex hides /usr/share/emacs/31.0.50/lisp/org/oc-biblatex
/home/bidar/.local/etc/emacs/lib/org/lisp/oc-basic hides /usr/share/emacs/31.0.50/lisp/org/oc-basic
/home/bidar/.local/etc/emacs/lib/org/lisp/ob hides /usr/share/emacs/31.0.50/lisp/org/ob
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-tangle hides /usr/share/emacs/31.0.50/lisp/org/ob-tangle
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-table hides /usr/share/emacs/31.0.50/lisp/org/ob-table
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-sqlite hides /usr/share/emacs/31.0.50/lisp/org/ob-sqlite
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-sql hides /usr/share/emacs/31.0.50/lisp/org/ob-sql
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-sed hides /usr/share/emacs/31.0.50/lisp/org/ob-sed
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-screen hides /usr/share/emacs/31.0.50/lisp/org/ob-screen
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-scheme hides /usr/share/emacs/31.0.50/lisp/org/ob-scheme
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-sass hides /usr/share/emacs/31.0.50/lisp/org/ob-sass
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-ruby hides /usr/share/emacs/31.0.50/lisp/org/ob-ruby
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-ref hides /usr/share/emacs/31.0.50/lisp/org/ob-ref
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-processing hides /usr/share/emacs/31.0.50/lisp/org/ob-processing
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-plantuml hides /usr/share/emacs/31.0.50/lisp/org/ob-plantuml
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-perl hides /usr/share/emacs/31.0.50/lisp/org/ob-perl
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-org hides /usr/share/emacs/31.0.50/lisp/org/ob-org
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-octave hides /usr/share/emacs/31.0.50/lisp/org/ob-octave
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-ocaml hides /usr/share/emacs/31.0.50/lisp/org/ob-ocaml
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-maxima hides /usr/share/emacs/31.0.50/lisp/org/ob-maxima
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-matlab hides /usr/share/emacs/31.0.50/lisp/org/ob-matlab
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-makefile hides /usr/share/emacs/31.0.50/lisp/org/ob-makefile
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-lua hides /usr/share/emacs/31.0.50/lisp/org/ob-lua
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-lob hides /usr/share/emacs/31.0.50/lisp/org/ob-lob
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-lisp hides /usr/share/emacs/31.0.50/lisp/org/ob-lisp
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-latex hides /usr/share/emacs/31.0.50/lisp/org/ob-latex
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-julia hides /usr/share/emacs/31.0.50/lisp/org/ob-julia
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-js hides /usr/share/emacs/31.0.50/lisp/org/ob-js
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-java hides /usr/share/emacs/31.0.50/lisp/org/ob-java
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-haskell hides /usr/share/emacs/31.0.50/lisp/org/ob-haskell
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-groovy hides /usr/share/emacs/31.0.50/lisp/org/ob-groovy
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-gnuplot hides /usr/share/emacs/31.0.50/lisp/org/ob-gnuplot
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-fortran hides /usr/share/emacs/31.0.50/lisp/org/ob-fortran
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-forth hides /usr/share/emacs/31.0.50/lisp/org/ob-forth
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-exp hides /usr/share/emacs/31.0.50/lisp/org/ob-exp
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-eval hides /usr/share/emacs/31.0.50/lisp/org/ob-eval
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-eshell hides /usr/share/emacs/31.0.50/lisp/org/ob-eshell
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-emacs-lisp hides /usr/share/emacs/31.0.50/lisp/org/ob-emacs-lisp
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-dot hides /usr/share/emacs/31.0.50/lisp/org/ob-dot
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-ditaa hides /usr/share/emacs/31.0.50/lisp/org/ob-ditaa
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-css hides /usr/share/emacs/31.0.50/lisp/org/ob-css
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-comint hides /usr/share/emacs/31.0.50/lisp/org/ob-comint
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-clojure hides /usr/share/emacs/31.0.50/lisp/org/ob-clojure
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-calc hides /usr/share/emacs/31.0.50/lisp/org/ob-calc
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-awk hides /usr/share/emacs/31.0.50/lisp/org/ob-awk
/home/bidar/.local/etc/emacs/lib/org/lisp/ob-C hides /usr/share/emacs/31.0.50/lisp/org/ob-C
/home/bidar/.local/etc/emacs/lib/compat/compat hides /usr/share/emacs/31.0.50/lisp/emacs-lisp/compat

Features:
(descr-text tmm avy dumb-jump popup lsp-completion lsp-diagnostics
lsp-modeline dap-mouse lsp-ui lsp-ui-flycheck lsp-ui-doc xwidget
lsp-ui-imenu lsp-ui-peek lsp-ui-sideline lsp-ui-util dap-lldb dap-ui
gdb-mi gud bui bui-list bui-info bui-entry bui-core bui-history
bui-button bui-utils lsp-lens dap-mode dap-tasks dap-launch lsp-docker
posframe dap-overlays ccls ccls-member-hierarchy
ccls-inheritance-hierarchy ccls-call-hierarchy ccls-tree ccls-code-lens
ccls-semantic-highlight ccls-common lsp-treemacs lsp-treemacs-generic
lsp-treemacs-themes treemacs-treelib treemacs-nerd-icons treemacs-magit
treemacs treemacs-header-line treemacs-compatibility treemacs-mode
treemacs-bookmarks treemacs-tags treemacs-interface treemacs-persistence
treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering
treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom
treemacs-visuals treemacs-fringe-indicator treemacs-macros yasnippet
lsp-mode lsp-protocol spinner cmake-font-lock cmake-mode elfeed-link
helm-ring shadow emacsbug em-unix em-term em-script em-prompt em-pred
em-ls em-hist em-glob em-extpipe em-cmpl em-dirs em-basic em-banner
em-alias esh-mode esh-var eshell esh-cmd esh-ext esh-opt esh-proc esh-io
esh-arg esh-module esh-module-loaddefs esh-util make-mode move-text
goto-chg whitespace gitignore-mode dired-open helm-ls-git help-macro
tabify gnus-search eieio-opt speedbar ezimage dframe finder-inf
gnus-delay gnus-draft gitattributes-mode vc-dir two-column
helm-descbinds mailalias bbdb-pgp message-attachment-reminder
bbdb-message gnus-alias autocrypt-message git-rebase magit-extras
shortdoc cl-print adaptive-wrap adaptive-wrap-autoloads gitconfig-mode
help-fns emacsql-sqlite-builtin sqlite org-indent crux smart-region
multiple-cursors mc-separate-operations rectangular-region-mode
mc-mark-pop mc-edit-lines mc-hide-unmatched-lines-mode mc-mark-more
html-mode-expansions sgml-mode mc-cycle-cursors multiple-cursors-core
rect expand-region yaml-mode-expansions subword-mode-expansions
cperl-mode-expansions text-mode-expansions cc-mode-expansions
the-org-mode-expansions python-el-fgallina-expansions
er-basic-expansions expand-region-core expand-region-custom char-fold
helm-org-rifle misearch multi-isearch orgit-forge orgit doctor
helm-command org-clock-helpers flow-fill mastodon-notifications
mastodon-media mastodon-profile mastodon-auth mastodon-client plstore
mastodon mastodon-search mastodon-toot persist mastodon-http request
circe-lagmon ietf-drums-date gnus-gravatar gnus-cite message-view-patch
forge-repos forge-tablist forge-topics forge-commands forge-semi
forge-bitbucket buck forge-gogs gogs forge-gitea gtea forge-gitlab glab
forge-github ghub-graphql treepy gsexp ghub forge-notify forge-revnote
forge-pullreq forge-issue forge-topic yaml eieio-custom forge-post
markdown-mode forge-repo forge forge-core forge-db magit-popup
magit-bookmark magit-submodule magit-blame magit-stash magit-reflog
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit-status
magit magit-repos magit-apply magit-wip magit-log magit-diff smerge-mode
diff magit-core magit-autorevert magit-margin magit-transient
magit-process magit-mode w3m-form w3m-symbol w3m w3m-hist bookmark-w3m
w3m-ems w3m-favicon w3m-image w3m-fb tab-line w3m-proc w3m-util
mm-archive mail-extr textsec uni-scripts idna-mapping ucs-normalize
uni-confusable textsec-check gnus-async gnus-bcklg bbdb-gnus-aux qp
gnus-ml gnus-demon autocrypt-gnus nndraft nnmh gnus-topic utf-7 epa-file
nnfolder bbdb-gnus bbdb-mua nnnil hydra lv winner tramp-archive
tramp-gvfs zeroconf helm-x-files helm-for-files helm-external
network-stream pulse image-file image-converter company-shell
rpm-spec-mode company-anaconda highlight-indent-guides cap-words
superword subword anaconda-mode pythonic tramp-cache time-stamp tramp-sh
dired-collapse dirvish-yank dirvish-subtree dirvish-collapse
dirvish-icons dirvish-vc dirvish-widgets pdf-history pdf-outline
pdf-links pdf-annot pdf-sync pdf-occur tablist tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local cedet pdf-isearch pdf-misc pdf-virtual
whole-line-or-region pdf-tools package pdf-view pdf-cache pdf-info
pdf-util pdf-macs generic-x skeleton generic atomic-chrome websocket
minions back-button smartrep helm-projectile recentf tree-widget
autorevert cus-start savehist org-edit-indirect edit-indirect org-bug
bug-search bug-comment-mode bug-backend-bz-rpc bug-list-mode bug-mode
bug-format bug-rpc bug-debug bug-search-common bug-common-functions
bug-persistent-data bug-custom yeetube yeetube-mpv socks elfeed-autotag
elfeed-score elfeed-score-maint elfeed-score-scoring elfeed-score-serde
elfeed-score-rule-stats elfeed-score-rules elfeed-score-log elfeed-tube
elfeed-tube-utils aio elfeed-protocol-owncloud elfeed-protocol
elfeed-protocol-common elfeed-show elfeed-search rainbow-delimiters
ligature symbol-overlay hideshow vc-hg vc-bzr vc-src vc-sccs vc-svn
vc-cvs vc-rcs log-view bug-reference elfeed-csv elfeed elfeed-curl
elfeed-log elfeed-db elfeed-lib xml-query emms-i18n emms-history
emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks
emms-cue emms-mode-line-icon emms-browser sort emms-volume
emms-volume-sndioctl emms-volume-mixerctl emms-volume-pulse
emms-volume-amixer emms-playlist-sort emms-last-played emms-player-mpd
emms-playing-time emms-lyrics emms-url emms-player-simple emms-streams
emms-show-all emms-tag-editor emms-tag-tracktag emms-info-mp3info
emms-mark emms-mode-line emms-cache emms-playlist-mode emms-info-native
emms-info-native-spc emms-info-native-mp3 emms-info-native-ogg
emms-info-native-opus emms-info-native-flac emms-info-native-vorbis
emms-info-libtag emms-info emms-later-do emms-source-playlist
emms-source-file locate emms emms-compat khardel gravatar dns smiley
autocrypt gnus-icalendar org-capture smtpmail-async smtpmail gnus-agent
gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp gnus-cache
gnus-desktop-notify bbdb-vcard bbdb-com bbdb-vcard-vcard21 bbdb
bbdb-site timezone mastodon-async mastodon-tl url-cache mpv tq
mastodon-iso lui-track company-emoji company-emoji-list helm-circe
circe-notifications circe-display-images circe-color-nicks circe
lui-irc-colors irc lcs lui-logging lui-format lui tracking shorten
flyspell circe-compat ical2org org-modern org-caldav icalendar url-dav
url-http url-auth url-gw nsm url-handlers ox-koma-letter ox-extra
org-pomodoro alert notifications org-timer org-expiry ol-man org-clock
org-protocol ob-sqlite ob-sql ob-shell ob-python python ob-plantuml
ob-org ob-octave ob-lua ob-js ob-gnuplot ox-odt rng-loc rng-uri
rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns
nxml-enc xmltok nxml-util ox-latex ox-icalendar org-super-agenda ts
org-habit org-duration cdlatex reftex reftex-loaddefs reftex-vars
texmathp org-appear ws-butler selected jinx oc-basic ol-eww eww
url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr
pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start
gnus-dbus dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec
gnus-int gnus-range gnus-win gnus nnheader range ol-docview doc-view
ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi goto-addr view
mule-util cal-china cal-bahai cal-islam cal-hebrew holidays
holiday-loaddefs cal-iso cal-julian lunar solar cal-dst vim-modeline
appt org-agenda ox-html table ox-ascii ox-publish ox org-element
org-persist org-id org-refile org-element-ast avl-tree ob-dot ob-ditaa
ob-clojure ob-C outshine outshine-org-cmds outorg smartparens-org
smartparens-text smartparens loadhist org-archive-subtree-hierarchy
org-archive org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-src ob-comint org-pcomplete org-list org-footnote org-faces
org-entities ob-emacs-lisp ob-core ob-eval org-cycle org-table ol
org-fold org-fold-core org-keys oc org-loaddefs org-version org-compat
org-macs noutline outline salt-mode rst mmm-jinja2 yaml-mode
perl-completion woman man ffap dabbrev cperl-mode facemenu helm-elisp
helm-eval edebug debug backtrace cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs ggtags ewoc
flycheck-color-mode-line flycheck jka-compr let-alist meson-mode
bitbake-modes bitbake autoinsert conf-bitbake-mode conf-mode bitbake-ff
find-file bitbake-mmm sh-script smie treesit executable mmm-mode
mmm-univ mmm-class mmm-region mmm-auto mmm-vars mmm-utils mmm-compat
bitbake-functions bitbake-compat xterm-color vc-osc vc magit-libgit
libgit libegit2 git-commit magit-git magit-base which-func imenu vc-git
diff-mode track-changes vc-dispatcher magit-section benchmark
cursor-sensor crm log-edit message sendmail yank-media puny rfc822 mml
mml-sec epa epg rfc6068 epg-config gnus-util mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log
diary-lib diary-loaddefs cal-menu calendar cal-loaddefs midnight
vlf-setup multi-vterm company-yasnippet vterm face-remap color term
disp-table ehelp vterm-module term/xterm xterm projectile ibuf-ext
ibuffer ibuffer-loaddefs company-oddmuse company-keywords company-etags
etags fileloop generator xref project company-gtags company-dabbrev-code
company-dabbrev company-files company-clang company-capf company-cmake
company-semantic company-template company-bbdb company elec-pair
editorconfig editorconfig-core editorconfig-core-handle
editorconfig-fnmatch wgrep-ag frames-only-mode windmove i3-integration
i3 bindat marginalia which-key dirvish transient helm-dired-history
dired-ranger dired-avfs dired-rainbow dired-filter dired-hacks-utils
dired-x dired-async dired-du find-dired wdired dired-aux helm-icons
treemacs-icons treemacs-scope treemacs-themes treemacs-core-utils
treemacs-logging treemacs-customization pfuture inline hl-line
treemacs-faces helm-bookmark helm-net browse-url xml url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util mailcap helm-adaptive helm-info bookmark helm-mode helm-misc
helm-files image-dired image-dired-tags image-dired-external
image-dired-util image-mode dired dired-loaddefs exif filenotify tramp
trampver tramp-integration files-x tramp-message tramp-compat xdg
parse-time iso8601 time-date tramp-loaddefs helm-buffers all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons helm-occur helm-tags
helm-locate helm-grep wgrep-helm wgrep grep compile text-property-search
helm-regexp format-spec helm-utils helm-help helm-types so-long emojify
apropos tar-mode arc-mode archive-mode ht cursor-chg doom-modeline
doom-modeline-segments doom-modeline-env doom-modeline-core shrink-path
f s dash nerd-icons nerd-icons-faces nerd-icons-data
nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon
nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon
nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon
nerd-icons-data-pomicon nerd-icons-data-ipsicon modus-vivendi-theme
modus-themes helm-pass password-store with-editor shell pcomplete comint
ansi-osc ansi-color ring server helm helm-global-bindings helm-easymenu
edmacro kmacro helm-core async-bytecomp helm-source helm-multi-match
helm-lib async auth-source-pass url-parse url-vars auth-source
password-cache printing ps-print ps-print-loaddefs lpr desktop frameset
derived advice info+ thingatpt cl saveplace delsel no-littering
epkg-elpa json map epkg-utils epkg-list epkg-desc find-func epkg closql
emacsql-sqlite-common emacsql emacsql-compiler eieio-base eieio byte-opt
eieio-core cl-macs llama comp-run compat use-package use-package-ensure
use-package-delight use-package-diminish use-package-bind-key bind-key
easy-mmode use-package-core zop-to-char-autoloads yeetube-autoloads
yasnippet-autoloads yaml-mode-autoloads yaml-autoloads
xterm-color-autoloads ws-butler-autoloads with-editor-autoloads
whole-line-or-region-autoloads which-key-autoloads wgrep-autoloads
websocket-autoloads web-mode-autoloads w3m-autoloads vlf-autoloads
visual-regexp-autoloads vim-modeline-autoloads vc-osc-autoloads
uuidgen-autoloads use-package-autoloads ts-autoloads treepy-autoloads
treemacs-nerd-icons-autoloads treemacs-autoloads transient-autoloads
toml-mode-autoloads systemd-autoloads symbol-overlay-autoloads
swiper-helm-autoloads ssh-config-mode-autoloads spinner-autoloads
smartrep-autoloads smartparens-autoloads smart-region-autoloads
skewer-mode-autoloads simple-httpd-autoloads shrink-path-autoloads
selected-autoloads salt-mode-autoloads s-autoloads
rpm-spec-mode-autoloads rich-minority-autoloads request-autoloads
rainbow-delimiters-autoloads qt-pro-mode-autoloads qml-mode-autoloads
pythonic-autoloads projectile-autoloads posframe-autoloads
pos-tip-autoloads popup-autoloads plantuml-mode-autoloads
pkgbuild-mode-autoloads piper-autoloads pfuture-autoloads
perspective-autoloads persp-mode-autoloads persist-autoloads
password-store-autoloads pass-autoloads outshine-autoloads
outorg-autoloads orgit-forge-autoloads orgit-autoloads
org-vcard-autoloads org-tree-slide-autoloads org-super-agenda-autoloads
org-pomodoro-autoloads org-modern-autoloads org-edit-indirect-autoloads
org-contrib-autoloads org-contacts-autoloads org-clock-helpers-autoloads
org-caldav-autoloads org-appear-autoloads org-autoloads
no-littering-autoloads nginx-mode-autoloads nerd-icons-ibuffer-autoloads
nerd-icons-autoloads navi-mode-autoloads multiple-cursors-autoloads
multi-vterm-autoloads mpv-autoloads move-text-autoloads
modus-themes-autoloads mode-icons-autoloads mmm-mode-autoloads
mmm-jinja2-autoloads minions-autoloads message-x-autoloads
message-view-patch-autoloads message-attachment-reminder-autoloads
meson-mode-autoloads mastodon-autoloads markdown-mode-autoloads
marginalia-autoloads magit-popup-autoloads magit-autoloads
lua-mode-autoloads lsp-ui-autoloads lsp-treemacs-autoloads
lsp-mode-autoloads lsp-docker-autoloads logview-autoloads
llama-autoloads lisp-autoloads link-hint-autoloads ligature-autoloads
levenshtein-autoloads khardel-autoloads js2-mode-autoloads
journalctl-autoloads jira-markup-mode-autoloads ivy-autoloads
irony-autoloads ir-black-theme-autoloads info+-autoloads iedit-autoloads
ical2org-autoloads ibuffer-projectile-autoloads
i3wm-config-mode-autoloads i3-autoloads hydra-autoloads
htmlize-autoloads ht-autoloads highlight-indent-guides-autoloads
helm-projectile-autoloads helm-pass-autoloads helm-org-rifle-autoloads
helm-make-autoloads helm-ls-git-autoloads helm-icons-autoloads
helm-ext-autoloads helm-emms-autoloads helm-dired-history-autoloads
helm-descbinds-autoloads helm-circe-autoloads helm-autoloads
guess-language-autoloads grep-context-autoloads goto-chg-autoloads
gnus-recent-autoloads gnus-notes-autoloads gnus-desktop-notify-autoloads
gnus-alias-autoloads gitconfig-autoloads git-modes-autoloads
ghub-autoloads ggtags-autoloads frames-only-mode-autoloads
forge-autoloads flycheck-color-mode-line-autoloads flycheck-autoloads
fedi-autoloads f-autoloads extmap-autoloads expand-region-autoloads
evil-multiedit-autoloads evil-autoloads emojify-autoloads
emacsql-autoloads elixir-mode-autoloads elfeed-tube-autoloads
elfeed-summary-autoloads elfeed-score-autoloads
elfeed-protocol-autoloads elfeed-autotag-autoloads elfeed-autoloads
el-mock-autoloads eimp-autoloads editorconfig-autoloads
edit-indirect-autoloads dumb-jump-autoloads doom-modeline-autoloads
docbook-autoloads dirvish-autoloads dired-rsync-autoloads
dired-hacks-autoloads dired-du-autoloads devhelp-autoloads
deferred-autoloads default-text-scale-autoloads debbugs-autoloads
datetime-autoloads dash-autoloads dap-mode-autoloads
cursor-chg-autoloads crux-autoloads copy-as-format-autoloads
compat-autoloads company-shell-autoloads company-quickhelp-autoloads
company-nginx-autoloads company-lua-autoloads company-irony-autoloads
company-emoji-autoloads company-anaconda-autoloads company-autoloads
code-review-autoloads cmake-mode-autoloads cmake-font-lock-autoloads
closql-autoloads circe-notifications-autoloads circe-autoloads
cdlatex-autoloads ccls-autoloads buttercup-autoloads bui-autoloads
bug-mode-autoloads bitbake-modes-autoloads bbdb-vcard-autoloads
bbdb-loaddefs back-button-autoloads avy-autoloads autocrypt-autoloads
auto-compile-autoloads atomic-chrome-autoloads async-autoloads
anaconda-mode-autoloads all-the-icons-autoloads alert-autoloads
aio-autoloads ag-autoloads ace-window-autoloads ace-link-autoloads
a-autoloads 2048-game-autoloads borg loaddefs-gen generate-lisp-file
lisp-mnt radix-tree info cus-edit pp pcase cus-load wid-edit comp cl-seq
comp-cstr cl-extra help-mode comp-common warnings icons subr-x rx gv
cl-loaddefs cl-lib bytecomp byte-compile preview-latex auctex tex-site
ispell 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 touch-screen 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 xwidget-internal dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting cairo gtk x-toolkit xinput2 x
multi-tty move-toolbar make-network-process native-compile emacs)

Memory information:
((conses 16 9249983 2256064) (symbols 48 128499 400)
 (strings 32 2188961 332207) (string-bytes 1 198462873)
 (vectors 16 425459) (vector-slots 8 7748112 2162063)
 (floats 8 9274 46200) (intervals 56 577147 42148) (buffers 992 505))





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
       [not found] <87o769n3y8.fsf@>
@ 2024-08-03 15:43 ` Eli Zaretskii
  2024-08-03 16:58   ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
       [not found]   ` <87ed75lf09.fsf@>
  0 siblings, 2 replies; 17+ messages in thread
From: Eli Zaretskii @ 2024-08-03 15:43 UTC (permalink / raw)
  To: Björn Bidar; +Cc: 72442

> Date: Sat, 03 Aug 2024 16:14:39 +0300
> From:  Björn Bidar via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> 
> Gnus doesn't handle international message reply prefixes as opposed
> to Re: or it's variants.
> 
> An example would be `gnus-simpliy-subject-re' which threats English
> subject prefixes.
> 
> Message.el doesn't do so either (by default) I don't think it makes
> sense to open a separate bug about this but please reply that should be
> done.
> 
> The message manual also judges users for using localized variants of
> "Re: " by calling them "nincompoops" for using these "abominations"
> which it says are "meaningless and evil".
> 
> The offending text can be found in the documentation for
> `message-subject-re-regexp' in the chapter "3.1 Message Headers".

FWIW, Rmail does support the various ways of saying "Re:", so the code
could be lifted from there.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-03 15:43 ` bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users Eli Zaretskii
@ 2024-08-03 16:58   ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
       [not found]   ` <87ed75lf09.fsf@>
  1 sibling, 0 replies; 17+ messages in thread
From: Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-08-03 16:58 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 72442

Eli Zaretskii <eliz@gnu.org> writes:

>> Date: Sat, 03 Aug 2024 16:14:39 +0300
>> From:  Björn Bidar via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>> 
>> 
>> Gnus doesn't handle international message reply prefixes as opposed
>> to Re: or it's variants.
>> 
>> An example would be `gnus-simpliy-subject-re' which threats English
>> subject prefixes.
>> 
>> Message.el doesn't do so either (by default) I don't think it makes
>> sense to open a separate bug about this but please reply that should be
>> done.
>> 
>> The message manual also judges users for using localized variants of
>> "Re: " by calling them "nincompoops" for using these "abominations"
>> which it says are "meaningless and evil".
>> 
>> The offending text can be found in the documentation for
>> `message-subject-re-regexp' in the chapter "3.1 Message Headers".
>
> FWIW, Rmail does support the various ways of saying "Re:", so the code
> could be lifted from there.

Would it make sense to move regexp and intermittent variable to
message.el or mail-utils.el?

I would assume the latter.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
       [not found]   ` <87ed75lf09.fsf@>
@ 2024-08-03 17:19     ` Eli Zaretskii
  2024-08-20  9:46       ` Robert Pluim
  0 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2024-08-03 17:19 UTC (permalink / raw)
  To: Björn Bidar; +Cc: 72442

> From: Björn Bidar <bjorn.bidar@thaodan.de>
> Cc: 72442@debbugs.gnu.org
> Date: Sat, 03 Aug 2024 19:58:46 +0300
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > FWIW, Rmail does support the various ways of saying "Re:", so the code
> > could be lifted from there.
> 
> Would it make sense to move regexp and intermittent variable to
> message.el or mail-utils.el?
> 
> I would assume the latter.

The latter, yes.  But note that Rmail does that for 2 different
purposes and in 2 different functions AFAIR.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-03 17:19     ` Eli Zaretskii
@ 2024-08-20  9:46       ` Robert Pluim
  2024-08-20 12:20         ` Eli Zaretskii
  0 siblings, 1 reply; 17+ messages in thread
From: Robert Pluim @ 2024-08-20  9:46 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 72442, Björn Bidar

>>>>> On Sat, 03 Aug 2024 20:19:48 +0300, Eli Zaretskii <eliz@gnu.org> said:

    >> From: Björn Bidar <bjorn.bidar@thaodan.de>
    >> Cc: 72442@debbugs.gnu.org
    >> Date: Sat, 03 Aug 2024 19:58:46 +0300
    >> 
    >> Eli Zaretskii <eliz@gnu.org> writes:
    >> 
    >> > FWIW, Rmail does support the various ways of saying "Re:", so the code
    >> > could be lifted from there.

So does message, you just have to configure
`message-subject-re-regexp'. The message manual contains an
appropriate setting.

    >> 
    >> Would it make sense to move regexp and intermittent variable to
    >> message.el or mail-utils.el?
    >> 
    >> I would assume the latter.

    Eli> The latter, yes.  But note that Rmail does that for 2 different
    Eli> purposes and in 2 different functions AFAIR.

We could just add the example from the manual to the `defcustom' for
`message-subject-re-regexp' (and also align it with whatever Rmail
does).


Robert
-- 





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-20  9:46       ` Robert Pluim
@ 2024-08-20 12:20         ` Eli Zaretskii
  2024-08-20 13:56           ` Robert Pluim
  0 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2024-08-20 12:20 UTC (permalink / raw)
  To: Robert Pluim; +Cc: 72442, bjorn.bidar

> From: Robert Pluim <rpluim@gmail.com>
> Cc: Björn Bidar <bjorn.bidar@thaodan.de>,
>   72442@debbugs.gnu.org
> Date: Tue, 20 Aug 2024 11:46:26 +0200
> 
> >>>>> On Sat, 03 Aug 2024 20:19:48 +0300, Eli Zaretskii <eliz@gnu.org> said:
> 
>     >> From: Björn Bidar <bjorn.bidar@thaodan.de>
>     >> Cc: 72442@debbugs.gnu.org
>     >> Date: Sat, 03 Aug 2024 19:58:46 +0300
>     >> 
>     >> Eli Zaretskii <eliz@gnu.org> writes:
>     >> 
>     >> > FWIW, Rmail does support the various ways of saying "Re:", so the code
>     >> > could be lifted from there.
> 
> So does message, you just have to configure
> `message-subject-re-regexp'. The message manual contains an
> appropriate setting.

I wouldn't expect users to know how to do that in advance of getting
the various "Re:" variants out there.  Should we perhaps improve the
default value to be less English-centric?

> We could just add the example from the manual to the `defcustom' for
> `message-subject-re-regexp' (and also align it with whatever Rmail
> does).

I think good defaults here win big time.  This corner is notoriously
dark and most users will not know how to make it better.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-20 12:20         ` Eli Zaretskii
@ 2024-08-20 13:56           ` Robert Pluim
  2024-08-21 10:21             ` Francesco Potortì
  2024-08-22 11:37             ` Robert Pluim
  0 siblings, 2 replies; 17+ messages in thread
From: Robert Pluim @ 2024-08-20 13:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 72442, bjorn.bidar

>>>>> On Tue, 20 Aug 2024 15:20:54 +0300, Eli Zaretskii <eliz@gnu.org> said:

    >> From: Robert Pluim <rpluim@gmail.com>
    >> Cc: Björn Bidar <bjorn.bidar@thaodan.de>,
    >> 72442@debbugs.gnu.org
    >> Date: Tue, 20 Aug 2024 11:46:26 +0200
    >> 
    >> >>>>> On Sat, 03 Aug 2024 20:19:48 +0300, Eli Zaretskii <eliz@gnu.org> said:
    >> 
    >> >> From: Björn Bidar <bjorn.bidar@thaodan.de>
    >> >> Cc: 72442@debbugs.gnu.org
    >> >> Date: Sat, 03 Aug 2024 19:58:46 +0300
    >> >> 
    >> >> Eli Zaretskii <eliz@gnu.org> writes:
    >> >> 
    >> >> > FWIW, Rmail does support the various ways of saying "Re:", so the code
    >> >> > could be lifted from there.
    >> 
    >> So does message, you just have to configure
    >> `message-subject-re-regexp'. The message manual contains an
    >> appropriate setting.

    Eli> I wouldn't expect users to know how to do that in advance of getting
    Eli> the various "Re:" variants out there.  Should we perhaps improve the
    Eli> default value to be less English-centric?

Yes, we should.

    >> We could just add the example from the manual to the `defcustom' for
    >> `message-subject-re-regexp' (and also align it with whatever Rmail
    >> does).

    Eli> I think good defaults here win big time.  This corner is notoriously
    Eli> dark and most users will not know how to make it better.

The first is easy. The second is a bit more difficult, since the two
donʼt cover exactly the same cases, and message matches
case-sensitively, unlike rmail, so weʼd need to either adapt eg "ΣΧΕΤ" to
"[Σσ][Χχ][Εε][Ττ]" or make the breaking change of binding
`case-fold-search' in message. Personally Iʼd prefer the latter.

(are there really mailers that prefix the subject with "R:"?)


Robert
-- 





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-20 13:56           ` Robert Pluim
@ 2024-08-21 10:21             ` Francesco Potortì
  2024-08-22 11:37             ` Robert Pluim
  1 sibling, 0 replies; 17+ messages in thread
From: Francesco Potortì @ 2024-08-21 10:21 UTC (permalink / raw)
  To: Robert Pluim; +Cc: 72442, bjorn.bidar, Eli Zaretskii

>(are there really mailers that prefix the subject with "R:"?)

Yes, I have seen them regularly in the past years.  I have just grepped my personal email backups for July and August and I found 3 different emails with "R:". Ok, it's 3 over some thousands, but anyway...






^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-20 13:56           ` Robert Pluim
  2024-08-21 10:21             ` Francesco Potortì
@ 2024-08-22 11:37             ` Robert Pluim
  2024-08-22 12:04               ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
                                 ` (2 more replies)
  1 sibling, 3 replies; 17+ messages in thread
From: Robert Pluim @ 2024-08-22 11:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 72442, bjorn.bidar

>>>>> On Tue, 20 Aug 2024 15:56:24 +0200, Robert Pluim <rpluim@gmail.com> said:

    Robert> The first is easy. The second is a bit more difficult, since the two
    Robert> donʼt cover exactly the same cases, and message matches
    Robert> case-sensitively, unlike rmail, so weʼd need to either adapt eg "ΣΧΕΤ" to
    Robert> "[Σσ][Χχ][Εε][Ττ]" or make the breaking change of binding
    Robert> `case-fold-search' in message. Personally Iʼd prefer the latter.

    Robert> (are there really mailers that prefix the subject with "R:"?)

The current setting for rmail is more complete than the suggestion in
the Gnus manual, except itʼs missing:

- "RÉ"
- an optional "." after "Antw"
- an optional space between the "RE" string and the ":"
- "FW"/"FWD"

The first 3 seem obvious. Adding the last might annoy people :-)

I can add those to `rmail-re-abbrevs', but perhaps itʼs better to have a
new defcustom that both rmail and message would use? Something like
'mail-re-regexps' in "mail-utils.el" perhaps? Plus some appropriate
editing of the manual.

Robert
-- 





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-22 11:37             ` Robert Pluim
@ 2024-08-22 12:04               ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-08-22 12:15               ` Eli Zaretskii
       [not found]               ` <66c7296a.a70a0220.2590d7.c939SMTPIN_ADDED_BROKEN@mx.google.com>
  2 siblings, 0 replies; 17+ messages in thread
From: Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-08-22 12:04 UTC (permalink / raw)
  To: Robert Pluim; +Cc: 72442, Eli Zaretskii

Robert Pluim <rpluim@gmail.com> writes:

>>>>>> On Tue, 20 Aug 2024 15:56:24 +0200, Robert Pluim <rpluim@gmail.com> said:
>
>     Robert> The first is easy. The second is a bit more difficult, since the two
>     Robert> donʼt cover exactly the same cases, and message matches
>     Robert> case-sensitively, unlike rmail, so weʼd need to either adapt eg "ΣΧΕΤ" to
>     Robert> "[Σσ][Χχ][Εε][Ττ]" or make the breaking change of binding
>     Robert> `case-fold-search' in message. Personally Iʼd prefer the latter.
>
>     Robert> (are there really mailers that prefix the subject with "R:"?)
>
> The current setting for rmail is more complete than the suggestion in
> the Gnus manual, except itʼs missing:
>
> - "RÉ"
> - an optional "." after "Antw"
> - an optional space between the "RE" string and the ":"
> - "FW"/"FWD"
>
> The first 3 seem obvious. Adding the last might annoy people :-)
>
> I can add those to `rmail-re-abbrevs', but perhaps itʼs better to have a
> new defcustom that both rmail and message would use? Something like
> 'mail-re-regexps' in "mail-utils.el" perhaps? Plus some appropriate
> editing of the manual.

If there would be an easy way to new prefix to the ignore list that
would work. Can't expect (avarage) users to build their regular
expression especially when multiple languages are involved.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-22 11:37             ` Robert Pluim
  2024-08-22 12:04               ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-08-22 12:15               ` Eli Zaretskii
  2024-08-27 15:50                 ` Robert Pluim
       [not found]               ` <66c7296a.a70a0220.2590d7.c939SMTPIN_ADDED_BROKEN@mx.google.com>
  2 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2024-08-22 12:15 UTC (permalink / raw)
  To: Robert Pluim; +Cc: 72442, bjorn.bidar

> From: Robert Pluim <rpluim@gmail.com>
> Cc: bjorn.bidar@thaodan.de,  72442@debbugs.gnu.org
> Date: Thu, 22 Aug 2024 13:37:15 +0200
> 
> The current setting for rmail is more complete than the suggestion in
> the Gnus manual, except itʼs missing:
> 
> - "RÉ"
> - an optional "." after "Antw"
> - an optional space between the "RE" string and the ":"
> - "FW"/"FWD"
> 
> The first 3 seem obvious. Adding the last might annoy people :-)
> 
> I can add those to `rmail-re-abbrevs', but perhaps itʼs better to have a
> new defcustom that both rmail and message would use? Something like
> 'mail-re-regexps' in "mail-utils.el" perhaps? Plus some appropriate
> editing of the manual.

Sounds like a good plan to me, thanks.

For backward compatibility, let's leave rmail-re-abbrevs in place, and
just initialize it from that new defcustom.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
       [not found]               ` <66c7296a.a70a0220.2590d7.c939SMTPIN_ADDED_BROKEN@mx.google.com>
@ 2024-08-22 13:14                 ` Robert Pluim
  2024-08-23  5:39                   ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
       [not found]                   ` <66c8208e.050a0220.16a63b.3a8cSMTPIN_ADDED_BROKEN@mx.google.com>
  0 siblings, 2 replies; 17+ messages in thread
From: Robert Pluim @ 2024-08-22 13:14 UTC (permalink / raw)
  To: Björn Bidar; +Cc: 72442, Eli Zaretskii

>>>>> On Thu, 22 Aug 2024 15:04:56 +0300, Björn Bidar <bjorn.bidar@thaodan.de> said:

    Björn> Robert Pluim <rpluim@gmail.com> writes:
    >>>>>>> On Tue, 20 Aug 2024 15:56:24 +0200, Robert Pluim <rpluim@gmail.com> said:
    >> 
    Robert> The first is easy. The second is a bit more difficult, since the two
    Robert> donʼt cover exactly the same cases, and message matches
    Robert> case-sensitively, unlike rmail, so weʼd need to either adapt eg "ΣΧΕΤ" to
    Robert> "[Σσ][Χχ][Εε][Ττ]" or make the breaking change of binding
    Robert> `case-fold-search' in message. Personally Iʼd prefer the latter.
    >> 
    Robert> (are there really mailers that prefix the subject with "R:"?)
    >> 
    >> The current setting for rmail is more complete than the suggestion in
    >> the Gnus manual, except itʼs missing:
    >> 
    >> - "RÉ"
    >> - an optional "." after "Antw"
    >> - an optional space between the "RE" string and the ":"
    >> - "FW"/"FWD"
    >> 
    >> The first 3 seem obvious. Adding the last might annoy people :-)
    >> 
    >> I can add those to `rmail-re-abbrevs', but perhaps itʼs better to have a
    >> new defcustom that both rmail and message would use? Something like
    >> 'mail-re-regexps' in "mail-utils.el" perhaps? Plus some appropriate
    >> editing of the manual.

    Björn> If there would be an easy way to new prefix to the ignore list that
    Björn> would work. Can't expect (avarage) users to build their regular
    Björn> expression especially when multiple languages are involved.

The new defcustom could be a list of regexps, ie

  ("RE" "R\u00c9\\.?" "FWD?" "رد" "回复" "回覆" "SV" "Antw\\.?"
  "VS" "REF" "AW" ΑΠ" "ΣΧΕΤ" "השב" "Vá" "R" "RIF" "BLS" "RES"
  "Odp" "YNT" "ATB")

which weʼd concatenate with "\\|" to get the real regexp. That would
be quite easy to edit in custom.

Robert
-- 





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-22 13:14                 ` Robert Pluim
@ 2024-08-23  5:39                   ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
       [not found]                   ` <66c8208e.050a0220.16a63b.3a8cSMTPIN_ADDED_BROKEN@mx.google.com>
  1 sibling, 0 replies; 17+ messages in thread
From: Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-08-23  5:39 UTC (permalink / raw)
  To: Robert Pluim; +Cc: 72442, Eli Zaretskii

Robert Pluim <rpluim@gmail.com> writes:

>>>>>> On Thu, 22 Aug 2024 15:04:56 +0300, Björn Bidar <bjorn.bidar@thaodan.de> said:
>
>     Björn> Robert Pluim <rpluim@gmail.com> writes:
>     >>>>>>> On Tue, 20 Aug 2024 15:56:24 +0200, Robert Pluim <rpluim@gmail.com> said:
>     >> 
>     Robert> The first is easy. The second is a bit more difficult, since the two
>     Robert> donʼt cover exactly the same cases, and message matches
>     Robert> case-sensitively, unlike rmail, so weʼd need to either adapt eg "ΣΧΕΤ" to
>     Robert> "[Σσ][Χχ][Εε][Ττ]" or make the breaking change of binding
>     Robert> `case-fold-search' in message. Personally Iʼd prefer the latter.
>     >> 
>     Robert> (are there really mailers that prefix the subject with "R:"?)
>     >> 
>     >> The current setting for rmail is more complete than the suggestion in
>     >> the Gnus manual, except itʼs missing:
>     >> 
>     >> - "RÉ"
>     >> - an optional "." after "Antw"
>     >> - an optional space between the "RE" string and the ":"
>     >> - "FW"/"FWD"
>     >> 
>     >> The first 3 seem obvious. Adding the last might annoy people :-)
>     >> 
>     >> I can add those to `rmail-re-abbrevs', but perhaps itʼs better to have a
>     >> new defcustom that both rmail and message would use? Something like
>     >> 'mail-re-regexps' in "mail-utils.el" perhaps? Plus some appropriate
>     >> editing of the manual.
>
>     Björn> If there would be an easy way to new prefix to the ignore list that
>     Björn> would work. Can't expect (avarage) users to build their regular
>     Björn> expression especially when multiple languages are involved.
>
> The new defcustom could be a list of regexps, ie
>
>   ("RE" "R\u00c9\\.?" "FWD?" "رد" "回复" "回覆" "SV" "Antw\\.?"
>   "VS" "REF" "AW" ΑΠ" "ΣΧΕΤ" "השב" "Vá" "R" "RIF" "BLS" "RES"
>   "Odp" "YNT" "ATB")
>
> which weʼd concatenate with "\\|" to get the real regexp. That would
> be quite easy to edit in custom.

Does it make sense to build the regexp using regexp-search-word or
regexp-opt after the user has entered the words to filter in defcustom?





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: : bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
       [not found]                   ` <66c8208e.050a0220.16a63b.3a8cSMTPIN_ADDED_BROKEN@mx.google.com>
@ 2024-08-23  8:00                     ` Robert Pluim
  0 siblings, 0 replies; 17+ messages in thread
From: Robert Pluim @ 2024-08-23  8:00 UTC (permalink / raw)
  To: Björn Bidar; +Cc: 72442, Eli Zaretskii

>>>>> On Fri, 23 Aug 2024 08:39:25 +0300, Björn Bidar <bjorn.bidar@thaodan.de> said:

    Björn> Does it make sense to build the regexp using regexp-search-word or
    Björn> regexp-opt after the user has entered the words to filter in defcustom?

Not really. `regexp-opt' only works with fixed strings, and the
components here are regexps. I donʼt know what `regexp-search-word' is.

Robert
-- 





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-22 12:15               ` Eli Zaretskii
@ 2024-08-27 15:50                 ` Robert Pluim
  2024-08-27 16:39                   ` Eli Zaretskii
  0 siblings, 1 reply; 17+ messages in thread
From: Robert Pluim @ 2024-08-27 15:50 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 72442, bjorn.bidar

[-- Attachment #1: Type: text/plain, Size: 379 bytes --]

>>>>> On Thu, 22 Aug 2024 15:15:03 +0300, Eli Zaretskii <eliz@gnu.org> said:

    Eli> For backward compatibility, let's leave rmail-re-abbrevs in place, and
    Eli> just initialize it from that new defcustom.

Patch attached. Works for gnus for me, and manual testing of the rmail
regexp works. Did you want me to obsolote the rmail and message
variables as well?

Robert
-- 


[-- Attachment #2: 0001-Teach-gnus-message-about-international-Re-variants.patch --]
[-- Type: text/x-diff, Size: 9823 bytes --]

From ae84c547234ab28cc50ae2bb288bd401978ec293 Mon Sep 17 00:00:00 2001
From: Robert Pluim <rpluim@gmail.com>
Date: Thu, 22 Aug 2024 18:49:12 +0200
Subject: [PATCH] Teach gnus/message about international Re: variants
To: emacs-devel@gnu.org

Bug#72442

* lisp/mail/mail-utils.el (mail-re-regexps): New defcustom, contains the
components used to construct 'rmail-re-abbrevs' and
'message-subject-re-regexp'.
* lisp/gnus/message.el (message-subject-re-regexp): Derive from
'mail-re-regexps'.
(message-strip-subject-re): Make the match case-insensitive.
* lisp/mail/rmail.el (rmail-re-abbrevs): Derive from 'mail-re-regexps'.
Update 'rmail-reply-regexp' when it changes.
(rmail-reply-regexp): Set to nil, 'rmail-re-abbrevs' will set it.

* doc/emacs/rmail.texi (Rmail Reply): Describe 'mail-re-regexps'.
* doc/misc/message.texi (Message Headers): Describe 'mail-re-regexps'.
---
 doc/emacs/rmail.texi    |  8 ++++++++
 doc/misc/message.texi   | 13 ++++++++++++-
 etc/NEWS                | 26 ++++++++++++++++++++++++++
 lisp/gnus/message.el    | 29 ++++++++++++++++++++++-------
 lisp/mail/mail-utils.el | 19 +++++++++++++++++++
 lisp/mail/rmail.el      | 31 ++++++++++++++++++++-----------
 6 files changed, 107 insertions(+), 19 deletions(-)

diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi
index 9c20d30c442..e090ec6fe76 100644
--- a/doc/emacs/rmail.texi
+++ b/doc/emacs/rmail.texi
@@ -776,6 +776,14 @@ Rmail Reply
 sent the message you received, and the @samp{CC} field starts out with
 all the other recipients of that message.
 
+@vindex rmail-re-abbrevs
+@vindex rmail-reply-prefix
+@vindex mail-re-regexps
+The @samp{Subject} header field may contain one or more instances of
+@samp{Re:} or localized variants thereof.  These are removed if they
+match @code{rmail-re-abbrevs} (which is initialized from
+@code{mail-re-regexps}), and @code{rmail-reply-prefix} is prepended.
+
 @vindex mail-dont-reply-to-names
   You can exclude certain recipients from being included automatically
 in replies, using the variable @code{mail-dont-reply-to-names}.  Its
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index 468bf81599d..f5399aecee1 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -1693,13 +1693,14 @@ Message Headers
 
 @item message-subject-re-regexp
 @vindex message-subject-re-regexp
+@vindex mail-re-regexps
 @cindex Aw
 @cindex Sv
 @cindex Re
 Responses to messages have subjects that start with @samp{Re: }.  This
 is @emph{not} an abbreviation of the English word ``response'', but it
 comes from the Latin ``res'', and means ``in the matter of''.  Some
-illiterate nincompoops have failed to grasp this fact, and have
+standards-challenged companies have failed to grasp this fact, and have
 ``internationalized'' their software to use abominations like
 @samp{Aw: } (``antwort'') or @samp{Sv: } (``svar'') instead, which is
 meaningless and evil.  However, you may have to deal with users that
@@ -1731,6 +1732,16 @@ Message Headers
        ))
 @end lisp
 
+You shouldn't need to do this, since the default value of
+@code{message-subject-re-regexp} is initialized based on
+@code{mail-re-regexps}, which covers most known cases of such
+internationalization, and is a lot easier to customize.  Customizing
+@code{mail-re-regexps} updates @code{message-subject-re-regexp} to
+match.
+
+Note that the regexp is matched case-insensitively against the
+@samp{Subject} header contents.
+
 @item message-subject-trailing-was-query
 @vindex message-subject-trailing-was-query
 @vindex message-subject-trailing-was-ask-regexp
diff --git a/etc/NEWS b/etc/NEWS
index 07d1cce0966..82c0eac4e5c 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -162,6 +162,32 @@ By passing '-t' or '--timeout', you can specify a maximum time to wait
 for the processes to exit.  Additionally, you can now wait for external
 processes by passing their PIDs.
 
++++
+** Mail-util
+
+*** New user option 'mail-re-regexps'.
+This contains the list of regular expressions used to match "Re:" and
+international variants of it when modifying the Subject field in
+replies.
+
++++
+** Rmail
+
+*** 'rmail-re-abbrevs' default value is now derived from 'mail-re-regexps'.
+'mail-re-regexps' is a new user option that is easier to customize than
+'rmail-re-abbrevs'.  'rmail-re-abbrevs' is still honored if it was
+already set.
+
++++
+** Message
+
+*** 'message-subject-re-regexp' default value is now derived from 'mail-re-regexps'.
+'mail-re-regexps' is a new user option that is easier to customize than
+'message-subject-re-regexp'.  'message-subject-re-regexp' is still
+honored if it was already set.
+
+*** 'message-strip-subject-re' now matches case-insensitively.
+
 ** SHR
 
 +++
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 98f63571389..081c6986a66 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -305,11 +305,24 @@ message-ignored-supersedes-headers
 		 regexp))
 
 (defcustom message-subject-re-regexp
-  "^[ \t]*\\([Rr][Ee]\\(\\[[0-9]*\\]\\)* ?:[ \t]*\\)*[ \t]*"
-  "Regexp matching \"Re: \" in the subject line."
+  (concat "^[ \t]*"
+          "\\("
+          "\\("
+          (string-join mail-re-regexps "\\|")
+          "\\)"
+          "\\(\\[[0-9]*\\]\\)*"
+          " ?\u00a0*[::][ \t]*"
+          "\\)"
+          "*[ \t]*")
+  "Regexp matching \"Re: \" in the subject line.
+Matching is done case-insensitively.
+Initialized from the value of `mail-re-regexps', which is easier to
+customize."
   :group 'message-various
   :link '(custom-manual "(message)Message Headers")
-  :type 'regexp)
+  :type 'regexp
+  :set-after '(mail-re-regexps)
+  :version "31.1")
 
 (defcustom message-screenshot-command '("import" "png:-")
   "Command to take a screenshot.
@@ -2257,10 +2270,12 @@ message-strip-list-identifiers
       subject)))
 
 (defun message-strip-subject-re (subject)
-  "Remove \"Re:\" from subject lines in string SUBJECT."
-  (if (string-match message-subject-re-regexp subject)
-      (substring subject (match-end 0))
-    subject))
+  "Remove \"Re:\" from subject lines in string SUBJECT.
+This uses `mail-re-regexps, matching is done case-insensitively."
+  (let ((case-fold-search t))
+    (if (string-match message-subject-re-regexp subject)
+        (substring subject (match-end 0))
+      subject)))
 
 (defcustom message-replacement-char "."
   "Replacement character used instead of unprintable or not decodable chars."
diff --git a/lisp/mail/mail-utils.el b/lisp/mail/mail-utils.el
index c9e4d0b3812..a04092b5727 100644
--- a/lisp/mail/mail-utils.el
+++ b/lisp/mail/mail-utils.el
@@ -46,6 +46,25 @@ mail-dont-reply-to-names
   :type '(choice regexp (const :tag "Your Name" nil))
   :group 'mail)
 
+;;;###autoload
+(defcustom mail-re-regexps
+  '("RE" "R\u00c9\\.?" "FWD?" "رد" "回复" "回覆" "SV" "Antw\\.?"
+  "VS" "REF" "AW" "ΑΠ" "ΣΧΕΤ" "השב" "Vá" "R" "RIF" "BLS" "RES"
+  "Odp" "YNT" "ATB")
+  "List of localized \"Re:\" abbreviations in various languages.
+Each component can be a regular expression or a simple string.  Matching
+is done case-insensitively.  Used to initialize the legacy
+`rmail-re-abbrevs' and `message-subject-re-regexp' user options."
+  :type '(repeat regexp)
+  :set (lambda (sym val)
+         (custom-set-default sym val)
+         (dolist (sym '(rmail-re-abbrevs
+                        message-subject-re-regexp))
+           (when (get sym 'standard-value)
+             (custom-reevaluate-setting sym))))
+  :group 'mail
+  :version "31.1")
+
 (defvar epa-inhibit)
 ;; Returns t if file FILE is an Rmail file.
 ;;;###autoload
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index e38ab12fae6..4965907916c 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -527,23 +527,32 @@ rmail-automatic-folder-directives
 (defvar rmail-reply-prefix "Re: "
   "String to prepend to Subject line when replying to a message.")
 
-;; Note: this is matched with case-fold-search bound to t.
-(defcustom rmail-re-abbrevs
-  "\\(RE\\|رد\\|回复\\|回覆\\|SV\\|Antw\\|VS\\|REF\\|AW\\|ΑΠ\\|ΣΧΕΤ\\|השב\\|Vá\\|R\\|RIF\\|BLS\\|RES\\|Odp\\|YNT\\|ATB\\)"
-  "Regexp with localized \"Re:\" abbreviations in various languages."
-  :version "28.1"
-  :type 'regexp)
-
 ;; Some mailers use "Re(2):" or "Re^2:" or "Re: Re:" or "Re[2]:".
 ;; This pattern should catch all the common variants.
 ;; rms: I deleted the change to delete tags in square brackets
 ;; because they mess up RT tags.
-(defvar rmail-reply-regexp
-  (concat "\\`\\("
-          rmail-re-abbrevs
-          "\\(([0-9]+)\\|\\[[0-9]+\\]\\|\\^[0-9]+\\)?\u00a0*[::] *\\)*")
+(defvar rmail-reply-regexp nil ;; set by `rmail-re-abbrevs
   "Regexp to delete from Subject line before inserting `rmail-reply-prefix'.")
 
+;; Note: this is matched with case-fold-search bound to t.
+(defcustom rmail-re-abbrevs
+  (concat "\\("
+          (string-join mail-re-regexps "\\|")
+          "\\)")
+  "Regexp with localized \"Re:\" abbreviations in various languages.
+Matching is done case-insensitively.
+Initialized from `mail-re-regexps', which is easier to customize."
+  :set-after '(mail-re-regexps)
+  :set (lambda (sym val)
+         (custom-set-default sym val)
+         (setq rmail-reply-regexp
+               (concat "\\`[ \t]*\\("
+                       val
+                       "\\(([0-9]+)\\|\\[[0-9]+\\]\\|\\^[0-9]+\\)?"
+                       " ?\u00a0*[::][ \t]*\\)*[ \t]*")))
+  :type 'regexp
+  :version "31.1")
+
 (defcustom rmail-display-summary nil
   "If non-nil, Rmail always displays the summary buffer."
   :group 'rmail-summary
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-27 15:50                 ` Robert Pluim
@ 2024-08-27 16:39                   ` Eli Zaretskii
  2024-09-19 14:52                     ` Robert Pluim
  0 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2024-08-27 16:39 UTC (permalink / raw)
  To: Robert Pluim; +Cc: 72442, bjorn.bidar

> From: Robert Pluim <rpluim@gmail.com>
> Cc: bjorn.bidar@thaodan.de,  72442@debbugs.gnu.org
> Date: Tue, 27 Aug 2024 17:50:41 +0200
> 
> >>>>> On Thu, 22 Aug 2024 15:15:03 +0300, Eli Zaretskii <eliz@gnu.org> said:
> 
>     Eli> For backward compatibility, let's leave rmail-re-abbrevs in place, and
>     Eli> just initialize it from that new defcustom.
> 
> Patch attached. Works for gnus for me, and manual testing of the rmail
> regexp works.

Thanks.

> Did you want me to obsolote the rmail and message variables as well?

I see no reason to obsolete them.

> +          "\\(\\[[0-9]*\\]\\)*"
> +          " ?\u00a0*[::][ \t]*"

These two parts could use a comment that explains what they handle.

> +                       "\\(([0-9]+)\\|\\[[0-9]+\\]\\|\\^[0-9]+\\)?"
> +                       " ?\u00a0*[::][ \t]*\\)*[ \t]*")))

Same here.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users
  2024-08-27 16:39                   ` Eli Zaretskii
@ 2024-09-19 14:52                     ` Robert Pluim
  0 siblings, 0 replies; 17+ messages in thread
From: Robert Pluim @ 2024-09-19 14:52 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 72442, bjorn.bidar

[-- Attachment #1: Type: text/plain, Size: 1103 bytes --]

>>>>> Robert Pluim <rpluim@gmail.com> said:

>>>>> On Tue, 27 Aug 2024 19:39:28 +0300, Eli Zaretskii <eliz@gnu.org> said:
    >>> From: Robert Pluim <rpluim@gmail.com>
    >>> Cc: bjorn.bidar@thaodan.de,  72442@debbugs.gnu.org
    >>> Date: Tue, 27 Aug 2024 17:50:41 +0200
    >>> 
    >>> >>>>> On Thu, 22 Aug 2024 15:15:03 +0300, Eli Zaretskii <eliz@gnu.org> said:
    >>> 
    Eli> For backward compatibility, let's leave rmail-re-abbrevs in place, and
    Eli> just initialize it from that new defcustom.
    >>>

OK
    >>> +          "\\(\\[[0-9]*\\]\\)*"
    >>> +          " ?\u00a0*[::][ \t]*"

    Eli> These two parts could use a comment that explains what they handle.

    >>> +                       "\\(([0-9]+)\\|\\[[0-9]+\\]\\|\\^[0-9]+\\)?"
    >>> +                       " ?\u00a0*[::][ \t]*\\)*[ \t]*")))

    Eli> Same here.

Done. The rmail and gnus code now use exactly the same final regexp
derived from the new user option. Patch attached, itʼs been working
fine for me in Gnus, but somebody who uses rmail should give it a go.

Robert
-- 


[-- Attachment #2: 0001-Teach-gnus-message-about-international-Re-variants.patch --]
[-- Type: text/x-diff, Size: 9951 bytes --]

From 2452929bc2a615a93a626c06ac8b70e726789fed Mon Sep 17 00:00:00 2001
From: Robert Pluim <rpluim@gmail.com>
Date: Thu, 22 Aug 2024 18:49:12 +0200
Subject: [PATCH] Teach gnus/message about international Re: variants
To: emacs-devel@gnu.org

Bug#72442

* lisp/mail/mail-utils.el (mail-re-regexps): New defcustom, contains the
components used to construct 'rmail-re-abbrevs' and
'message-subject-re-regexp'.
* lisp/gnus/message.el (message-subject-re-regexp): Derive from
'mail-re-regexps'.
(message-strip-subject-re): Make the match case-insensitive.
* lisp/mail/rmail.el (rmail-re-abbrevs): Derive from 'mail-re-regexps'.
Update 'rmail-reply-regexp' when it changes.
(rmail-reply-regexp): Set to nil, 'rmail-re-abbrevs' will set it.

* doc/emacs/rmail.texi (Rmail Reply): Describe 'mail-re-regexps'.
* doc/misc/message.texi (Message Headers): Describe 'mail-re-regexps'.
---
 doc/emacs/rmail.texi    |  8 ++++++++
 doc/misc/message.texi   | 13 ++++++++++++-
 etc/NEWS                | 26 ++++++++++++++++++++++++++
 lisp/gnus/message.el    | 25 ++++++++++++++++++-------
 lisp/mail/mail-utils.el | 31 +++++++++++++++++++++++++++++++
 lisp/mail/rmail.el      | 27 ++++++++++++++++-----------
 6 files changed, 111 insertions(+), 19 deletions(-)

diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi
index 9c20d30c442..e090ec6fe76 100644
--- a/doc/emacs/rmail.texi
+++ b/doc/emacs/rmail.texi
@@ -776,6 +776,14 @@ Rmail Reply
 sent the message you received, and the @samp{CC} field starts out with
 all the other recipients of that message.
 
+@vindex rmail-re-abbrevs
+@vindex rmail-reply-prefix
+@vindex mail-re-regexps
+The @samp{Subject} header field may contain one or more instances of
+@samp{Re:} or localized variants thereof.  These are removed if they
+match @code{rmail-re-abbrevs} (which is initialized from
+@code{mail-re-regexps}), and @code{rmail-reply-prefix} is prepended.
+
 @vindex mail-dont-reply-to-names
   You can exclude certain recipients from being included automatically
 in replies, using the variable @code{mail-dont-reply-to-names}.  Its
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index 468bf81599d..f5399aecee1 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -1693,13 +1693,14 @@ Message Headers
 
 @item message-subject-re-regexp
 @vindex message-subject-re-regexp
+@vindex mail-re-regexps
 @cindex Aw
 @cindex Sv
 @cindex Re
 Responses to messages have subjects that start with @samp{Re: }.  This
 is @emph{not} an abbreviation of the English word ``response'', but it
 comes from the Latin ``res'', and means ``in the matter of''.  Some
-illiterate nincompoops have failed to grasp this fact, and have
+standards-challenged companies have failed to grasp this fact, and have
 ``internationalized'' their software to use abominations like
 @samp{Aw: } (``antwort'') or @samp{Sv: } (``svar'') instead, which is
 meaningless and evil.  However, you may have to deal with users that
@@ -1731,6 +1732,16 @@ Message Headers
        ))
 @end lisp
 
+You shouldn't need to do this, since the default value of
+@code{message-subject-re-regexp} is initialized based on
+@code{mail-re-regexps}, which covers most known cases of such
+internationalization, and is a lot easier to customize.  Customizing
+@code{mail-re-regexps} updates @code{message-subject-re-regexp} to
+match.
+
+Note that the regexp is matched case-insensitively against the
+@samp{Subject} header contents.
+
 @item message-subject-trailing-was-query
 @vindex message-subject-trailing-was-query
 @vindex message-subject-trailing-was-ask-regexp
diff --git a/etc/NEWS b/etc/NEWS
index 8bd5c7c9515..35de85224d9 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -194,6 +194,32 @@ By passing '-t' or '--timeout', you can specify a maximum time to wait
 for the processes to exit.  Additionally, you can now wait for external
 processes by passing their PIDs.
 
++++
+** Mail-util
+
+*** New user option 'mail-re-regexps'.
+This contains the list of regular expressions used to match "Re:" and
+international variants of it when modifying the Subject field in
+replies.
+
++++
+** Rmail
+
+*** 'rmail-re-abbrevs' default value is now derived from 'mail-re-regexps'.
+'mail-re-regexps' is a new user option that is easier to customize than
+'rmail-re-abbrevs'.  'rmail-re-abbrevs' is still honored if it was
+already set.
+
++++
+** Message
+
+*** 'message-subject-re-regexp' default value is now derived from 'mail-re-regexps'.
+'mail-re-regexps' is a new user option that is easier to customize than
+'message-subject-re-regexp'.  'message-subject-re-regexp' is still
+honored if it was already set.
+
+*** 'message-strip-subject-re' now matches case-insensitively.
+
 ** SHR
 
 +++
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index d52ed9662a7..ad0c4d1f3f8 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -305,11 +305,20 @@ message-ignored-supersedes-headers
 		 regexp))
 
 (defcustom message-subject-re-regexp
-  "^[ \t]*\\([Rr][Ee]\\(\\[[0-9]*\\]\\)* ?:[ \t]*\\)*[ \t]*"
-  "Regexp matching \"Re: \" in the subject line."
+  (mail--wrap-re-regexp
+   (concat
+    "\\("
+    (string-join mail-re-regexps "\\|")
+    "\\)"))
+  "Regexp matching \"Re: \" in the subject line.
+Matching is done case-insensitively.
+Initialized from the value of `mail-re-regexps', which is easier to
+customize."
   :group 'message-various
   :link '(custom-manual "(message)Message Headers")
-  :type 'regexp)
+  :type 'regexp
+  :set-after '(mail-re-regexps)
+  :version "31.1")
 
 (defcustom message-screenshot-command '("import" "png:-")
   "Command to take a screenshot.
@@ -2257,10 +2266,12 @@ message-strip-list-identifiers
       subject)))
 
 (defun message-strip-subject-re (subject)
-  "Remove \"Re:\" from subject lines in string SUBJECT."
-  (if (string-match message-subject-re-regexp subject)
-      (substring subject (match-end 0))
-    subject))
+  "Remove \"Re:\" from subject lines in string SUBJECT.
+This uses `mail-re-regexps, matching is done case-insensitively."
+  (let ((case-fold-search t))
+    (if (string-match message-subject-re-regexp subject)
+        (substring subject (match-end 0))
+      subject)))
 
 (defcustom message-replacement-char "."
   "Replacement character used instead of unprintable or not decodable chars."
diff --git a/lisp/mail/mail-utils.el b/lisp/mail/mail-utils.el
index c9e4d0b3812..cfac56c0125 100644
--- a/lisp/mail/mail-utils.el
+++ b/lisp/mail/mail-utils.el
@@ -46,6 +46,37 @@ mail-dont-reply-to-names
   :type '(choice regexp (const :tag "Your Name" nil))
   :group 'mail)
 
+(defun mail--wrap-re-regexp (re)
+  (concat "\\`[ \t]*"
+          "\\("
+          re
+          ; Re(1) or Re[1] or Re^1
+          "\\(([0-9]+)\\|\\[[0-9]+\\]\\|\\^[0-9]+\\)?"
+          ; SPC/NBSP followed by colon and TAB/SPC
+          " ?\u00a0*[::][ \t]*"
+          ; Handle repetition, eg "Re[1]: Re[2]:"
+          "\\)*"
+          "[ \t]*"))
+
+;;;###autoload
+(defcustom mail-re-regexps
+  '("RE" "R\u00c9\\.?" "FWD?" "رد" "回复" "回覆" "SV" "Antw\\.?"
+  "VS" "REF" "AW" "ΑΠ" "ΣΧΕΤ" "השב" "Vá" "R" "RIF" "BLS" "RES"
+  "Odp" "YNT" "ATB")
+  "List of localized \"Re:\" abbreviations in various languages.
+Each component can be a regular expression or a simple string.  Matching
+is done case-insensitively.  Used to initialize the legacy
+`rmail-re-abbrevs' and `message-subject-re-regexp' user options."
+  :type '(repeat regexp)
+  :set (lambda (sym val)
+         (custom-set-default sym val)
+         (dolist (sym '(rmail-re-abbrevs
+                        message-subject-re-regexp))
+           (when (get sym 'standard-value)
+             (custom-reevaluate-setting sym))))
+  :group 'mail
+  :version "31.1")
+
 (defvar epa-inhibit)
 ;; Returns t if file FILE is an Rmail file.
 ;;;###autoload
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index e38ab12fae6..7fc5363f30c 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -527,22 +527,27 @@ rmail-automatic-folder-directives
 (defvar rmail-reply-prefix "Re: "
   "String to prepend to Subject line when replying to a message.")
 
-;; Note: this is matched with case-fold-search bound to t.
-(defcustom rmail-re-abbrevs
-  "\\(RE\\|رد\\|回复\\|回覆\\|SV\\|Antw\\|VS\\|REF\\|AW\\|ΑΠ\\|ΣΧΕΤ\\|השב\\|Vá\\|R\\|RIF\\|BLS\\|RES\\|Odp\\|YNT\\|ATB\\)"
-  "Regexp with localized \"Re:\" abbreviations in various languages."
-  :version "28.1"
-  :type 'regexp)
+(defvar rmail-reply-regexp nil ;; set by `rmail-re-abbrevs
+  "Regexp to delete from Subject line before inserting `rmail-reply-prefix'.")
 
 ;; Some mailers use "Re(2):" or "Re^2:" or "Re: Re:" or "Re[2]:".
 ;; This pattern should catch all the common variants.
 ;; rms: I deleted the change to delete tags in square brackets
 ;; because they mess up RT tags.
-(defvar rmail-reply-regexp
-  (concat "\\`\\("
-          rmail-re-abbrevs
-          "\\(([0-9]+)\\|\\[[0-9]+\\]\\|\\^[0-9]+\\)?\u00a0*[::] *\\)*")
-  "Regexp to delete from Subject line before inserting `rmail-reply-prefix'.")
+;; Note: this is matched with case-fold-search bound to t.
+(defcustom rmail-re-abbrevs
+  (concat "\\("
+          (string-join mail-re-regexps "\\|")
+          "\\)")
+  "Regexp with localized \"Re:\" abbreviations in various languages.
+Matching is done case-insensitively.
+Initialized from `mail-re-regexps', which is easier to customize."
+  :set-after '(mail-re-regexps)
+  :set (lambda (sym val)
+         (custom-set-default sym val)
+         (setq rmail-reply-regexp (mail--wrap-re-regexp val)))
+  :type 'regexp
+  :version "31.1")
 
 (defcustom rmail-display-summary nil
   "If non-nil, Rmail always displays the summary buffer."
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2024-09-19 14:52 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <87o769n3y8.fsf@>
2024-08-03 15:43 ` bug#72442: 31.0.50; Gnus or message.el doesn't handle international message reply subject prefixes and insults users Eli Zaretskii
2024-08-03 16:58   ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
     [not found]   ` <87ed75lf09.fsf@>
2024-08-03 17:19     ` Eli Zaretskii
2024-08-20  9:46       ` Robert Pluim
2024-08-20 12:20         ` Eli Zaretskii
2024-08-20 13:56           ` Robert Pluim
2024-08-21 10:21             ` Francesco Potortì
2024-08-22 11:37             ` Robert Pluim
2024-08-22 12:04               ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-22 12:15               ` Eli Zaretskii
2024-08-27 15:50                 ` Robert Pluim
2024-08-27 16:39                   ` Eli Zaretskii
2024-09-19 14:52                     ` Robert Pluim
     [not found]               ` <66c7296a.a70a0220.2590d7.c939SMTPIN_ADDED_BROKEN@mx.google.com>
2024-08-22 13:14                 ` Robert Pluim
2024-08-23  5:39                   ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
     [not found]                   ` <66c8208e.050a0220.16a63b.3a8cSMTPIN_ADDED_BROKEN@mx.google.com>
2024-08-23  8:00                     ` bug#72442: : " Robert Pluim
2024-08-03 13:14 Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).