Subject: bug#74785: 27.1; Fill-paragraph in RST mode does not respect line blocks

From: Richard Brooksby <[email-masked]>
Date: Wed, 11 Dec 2024 10:37:01 +0000

Fill-paragraph (M-Q) in a reStructuredText document that is formatted
using "Line Blocks"
<https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#line-blocks>
such as:

   | In Xanadu did Kubla Khan
   | A stately pleasure-dome decree:
   | Where Alph, the sacred river, ran
   | Through caverns measureless to man
   | Down to a sunless sea.

results in this:

   | In Xanadu did Kubla Khan | A stately pleasure-dome decree: | Where
   Alph, the sacred river, ran | Through caverns measureless to man |
   Down to a sunless sea.

but in this case it should leave the line breaks intact.  The code
should probably treat the vertical bars something like list bullets,
since continuation lines are possible, e.g.

   | This is the all the first line
     of output even though it's two lines
     of input.
   | This is second line in the output.
   | And this is the third.

(I searched <https://debbugs.gnu.org/cgi/pkgreport.cgi?package=emacs>
for a similar report.  Apologies if I was not thorough enough.)

In GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll 
bars)
  of 2024-09-17, modified by Debian built on lcy02-amd64-079
Windowing system distributor 'The X.Org Foundation', version 11.0.12201001
System Description: Ubuntu 22.04.5 LTS

Recent messages:
uncompressing rst.el.gz...done
Note: file is write protected
Mark set [3 times]
Making completion list...
delete-backward-char: Text is read-only
Quit [2 times]
Type C-x 1 to remove help window.  Type "q" in help window to restore 
its previous buffer.
You can run the command ‘info-emacs-bug’ with M-x inf-b RET
Making completion list...

Configured using:
  'configure --build x86_64-linux-gnu --prefix=/usr
  --sharedstatedir=/var/lib --libexecdir=/usr/lib
  --localstatedir=/var/lib --infodir=/usr/share/info
  --mandir=/usr/share/man --enable-libsystemd --with-pop=yes
  --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/27.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/27.1/site-lisp:/usr/share/emacs/site-lisp
  --with-sound=alsa --without-gconf --with-mailutils --build
  x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
  --libexecdir=/usr/lib --localstatedir=/var/lib
  --infodir=/usr/share/info --mandir=/usr/share/man --enable-libsystemd
  --with-pop=yes
  --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/27.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/27.1/site-lisp:/usr/share/emacs/site-lisp
  --with-sound=alsa --without-gconf --with-mailutils --with-x=yes
  --with-x-toolkit=lucid --with-toolkit-scroll-bars --without-gsettings
  'CFLAGS=-g -O2
  -ffile-prefix-map=/build/emacs-vPr175/emacs-27.1+1=. 
-fstack-protector-strong
  -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
  -D_FORTIFY_SOURCE=2' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro''

Configured features:
XAW3D XPM JPEG TIFF GIF PNG RSVG SOUND GPM DBUS GLIB NOTIFY INOTIFY ACL
LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS LUCID X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON
PDUMPER LCMS2 GMP

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

Major mode: ReST

Minor modes in effect:
   shell-dirtrack-mode: t
   tooltip-mode: t
   global-eldoc-mode: t
   electric-indent-mode: t
   mouse-wheel-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   blink-cursor-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t
   line-number-mode: t
   auto-fill-function: do-auto-fill
   transient-mark-mode: t

Load-path shadows:
/home/rb/.emacs.d/elpa/magit-20210117.2011/magit-section hides 
/home/rb/.emacs.d/elpa/magit-section-20241122.1431/magit-section
/usr/share/emacs/site-lisp/llvm-14/emacs hides 
/usr/share/emacs/site-lisp/llvm-15/emacs
/usr/share/emacs/site-lisp/llvm-14/tablegen-mode hides 
/usr/share/emacs/site-lisp/llvm-15/tablegen-mode
/usr/share/emacs/site-lisp/llvm-14/llvm-mode hides 
/usr/share/emacs/site-lisp/llvm-15/llvm-mode
/home/rb/.emacs.d/elpa/map-3.3.1/map hides 
/usr/share/emacs/27.1/lisp/emacs-lisp/map
/home/rb/.emacs.d/elpa/seq-2.24/seq hides 
/usr/share/emacs/27.1/lisp/emacs-lisp/seq

Features:
(shadow sort mail-extr emacsbug sendmail magit-utils crm eieio-opt
speedbar sb-image ezimage dframe apropos man jka-compr find-func
misearch multi-isearch cl-extra help-fns radix-tree help-mode mule-util
log-edit message rmc puny rfc822 mml mml-sec epa derived epg epg-config
gnus-util rmail rmail-loaddefs text-property-search 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
flyspell ispell rst compile vc-git diff-mode easy-mmode vc-bzr vc-src
vc-sccs vc-svn vc-cvs vc-rcs vc-dir ewoc vc vc-dispatcher dired-aux
iso-transl dired dired-loaddefs cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs cus-edit cus-start
cus-load wid-edit solarized-dark-theme solarized color dash lxd-tramp
tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat
shell pcomplete comint ansi-color ring parse-time iso8601 time-date
ls-lisp format-spec todotxt-mode edmacro kmacro server finder-inf info
package easymenu browse-url url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map
url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
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 elisp-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core term/tty-colors frame minibuffer cl-generic 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 charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting font-render-setting x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 445178 33251)
  (symbols 48 25380 2)
  (strings 32 133208 16553)
  (string-bytes 1 3430629)
  (vectors 16 36796)
  (vector-slots 8 838518 57172)
  (floats 8 299 280)
  (intervals 56 8211 530)
  (buffers 1000 36))