GNU bug report logs - #68852
29.2; Woman + grep fails

Previous Next

Package: emacs;

Reported by: Thierry Volpiatto <thievol <at> posteo.net>

Date: Wed, 31 Jan 2024 13:55:02 UTC

Severity: normal

Found in version 29.2

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 68852 in the body.
You can then email your comments to 68852 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#68852; Package emacs. (Wed, 31 Jan 2024 13:55:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Thierry Volpiatto <thievol <at> posteo.net>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 31 Jan 2024 13:55:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.2; Woman + grep fails
Date: Wed, 31 Jan 2024 13:54:16 +0000
To reproduce:

M-x woman RET grep RET

Debugger entered--Lisp error: (search-failed "\\(\\\\{\\|el[ \11]*\\\\}\\)\\|\\(\n[.']\\)?[ \11]*\\\\}[ \11]*")
  re-search-forward("\\(\\\\{\\|el[ \11]*\\\\}\\)\\|\\(\n[.']\\)?[ \11]*\\\\}[ \11]*")
  (and (re-search-forward "\\(\\\\{\\|el[ \11]*\\\\}\\)\\|\\(\n[.']\\)?[ \11]*\\\\}[ \11]*") (match-beginning 1))
  (while (and (re-search-forward "\\(\\\\{\\|el[ \11]*\\\\}\\)\\|\\(\n[.']\\)?[ \11]*\\\\}[ \11]*") (match-beginning 1)) (re-search-forward "\\\\}"))
  (let ((from (point))) (woman-delete-match 0) (while (and (re-search-forward "\\(\\\\{\\|el[ \11]*\\\\}\\)\\|\\(\n[.']\\)?[ \11]*\\\\}[ \11]*") (match-beginning 1)) (re-search-forward "\\\\}")) (delete-region (if delete from (match-beginning 0)) (point)) (if (looking-at "^$") (delete-char 1)))
  (cond ((looking-at "[^{\n]*\\(\\\\\n\\)*\\\\{\\s *\\(\\\\\n\\)*") (let ((from (point))) (woman-delete-match 0) (while (and (re-search-forward "\\(\\\\{\\|el[ \11]*\\\\}\\)\\|\\(\n[.']\\)?[ \11]*\\\\}[ \11]*") (match-beginning 1)) (re-search-forward "\\\\}")) (delete-region (if delete from (match-beginning 0)) (point)) (if (looking-at "^$") (delete-char 1)))) (delete (woman-delete-line 1)))
  (let ((from (point))) (if to (delete-region (point) to)) (delete-horizontal-space) (cond ((looking-at "[^{\n]*\\(\\\\\n\\)*\\\\{\\s *\\(\\\\\n\\)*") (let ((from (point))) (woman-delete-match 0) (while (and (re-search-forward "\\(\\\\{\\|el[ \11]*\\\\}\\)\\|\\(\n[.']\\)?[ \11]*\\\\}[ \11]*") (match-beginning 1)) (re-search-forward "\\\\}")) (delete-region (if delete from (match-beginning 0)) (point)) (if (looking-at "^$") (delete-char 1)))) (delete (woman-delete-line 1))) (cond ((string= request "ie") (cond ((re-search-forward "^[.'][ \11]*el[ \11]*" nil t) (woman-delete-match 0) (woman-if-body "el" nil (not delete)))))) (goto-char from))
  woman-if-body("ie" #<marker (moves after insertion) at 29338 in *WoMan 1 grep*> t)
[...]

I could reproduce also on Emacs-30.0.50

Calling re-search-forward with the NOERROR arg in the while loop of
woman-if-body seems to fix the problem:

diff --git a/lisp/woman.el b/lisp/woman.el
index a9af46fa387..2357ba6b132 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -2566,7 +2566,8 @@ If DELETE is non-nil then delete from point."
 		       ;; "\\(\\\\{\\)\\|\\(\n[.']\\)?[ \t]*\\\\}[ \t]*"
 		       ;; Interpret bogus `el \}' as `el \{',
 		       ;; especially for Tcl/Tk man pages:
-		       "\\(\\\\{\\|el[ \t]*\\\\}\\)\\|\\(\n[.']\\)?[ \t]*\\\\}[ \t]*")
+		       "\\(\\\\{\\|el[ \t]*\\\\}\\)\\|\\(\n[.']\\)?[ \t]*\\\\}[ \t]*"
+                       nil t)
 		      (match-beginning 1))
 	       (re-search-forward "\\\\}"))
 	     (delete-region (if delete from (match-beginning 0)) (point))




In GNU Emacs 29.2 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.16.0, Xaw3d scroll bars) of 2024-01-18 built on IPad-S340
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Linux Mint 21.3

Configured using:
 'configure --bindir=/usr/local/sbin/emacs-29.1 --with-cairo
 --with-x-toolkit=lucid --with-modules --without-tree-sitter
 --without-native-compilation'

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

Important settings:
  value of $LANG: fr_FR.UTF-8
  locale-coding-system: utf-8-unix

Major mode: 

Minor modes in effect:
  emms-mode-line-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  bug-reference-prog-mode: t
  server-mode: t
  psession-mode: t
  psession-savehist-mode: t
  register-preview-mode: t
  global-git-gutter-mode: t
  git-gutter-mode: t
  display-time-mode: t
  winner-mode: t
  tv-save-place-mode: t
  helm-epa-mode: t
  helm-descbinds-mode: t
  helm-top-poll-mode: t
  helm-adaptive-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  helm-ff-icon-mode: t
  shell-dirtrack-mode: t
  helm-popup-tip-mode: t
  async-bytecomp-package-mode: t
  dired-async-mode: t
  minibuffer-depth-indicate-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow epa-mail face-remap emacsbug vc-annotate whitespace cl-indent
etags fileloop xref cl-print tabify helm-man tramp-adb tramp-sh isl view
jka-compr woman man bash-completion em-unix em-term term ehelp em-script
em-prompt em-ls em-hist em-pred em-glob em-extpipe em-cmpl em-dirs
esh-var em-basic em-banner em-alias esh-mode esh-toggle helm-firefox
smerge-mode diff gnus-async gnus-bcklg gnus-ml disp-table nndraft nnmh
nnfolder epa-file network-stream nsm gnus-agent gnus-srvr gnus-score
score-mode nnvirtual gnus-msg nntp gnus-cache smiley gnus-cite qp
mm-archive mail-extr textsec uni-scripts idna-mapping ucs-normalize
uni-confusable textsec-check addressbook-bookmark tv-mu4e-config
config-w3m mu4e-contrib mu4e-patch mu4e mu4e-org mu4e-notification
notifications mu4e-main smtpmail mu4e-view mu4e-mime-parts gnus-art
mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum gnus-group
gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7
nnoo gnus-spec gnus-int gnus-range gnus-win gnus mu4e-headers
mu4e-thread mu4e-actions mu4e-compose nnheader range mu4e-search
mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message flow-fill hl-line
mu4e-contacts mu4e-update mu4e-folders mu4e-context mu4e-query-items
mu4e-server mu4e-modeline mu4e-vars mu4e-helpers mu4e-config mu4e-window
ido message sendmail yank-media rfc822 mml mml-sec 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
mu4e-obsolete helm-skitour shr pixel-fill kinsoku url-file puny svg dom
rect cl-extra helm-command wfnames helm-ring helm-elisp helm-eval edebug
debug backtrace helm-x-files helm-for-files helm-bookmark helm-info
bookmark image-file image-converter char-fold emms-config emms-mpris
emms-librefm-stream emms-librefm-scrobbler emms-playlist-limit 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-xine
emms-player-mpd tq emms-lyrics emms-url emms-streams emms-show-all
emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line emms-cache
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 bindat emms-info-exiftool emms-info-tinytag
emms-info-metaflac emms-info-opusinfo emms-info-ogginfo
emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mpv
emms-playing-time emms-info emms-later-do emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat emms-auto helm-external helm-net
tramp-archive tramp-gvfs tramp-cache time-stamp zeroconf dbus xml ffap
helm-ls-git vc-git diff-mode vc vc-dispatcher make-mode
flymake-shellcheck cus-start flymake-proc flymake project warnings
thingatpt sh-script smie treesit executable conf-mode ledger-mode
ledger-check ledger-texi ledger-test ledger-sort ledger-report
ledger-reconcile ledger-occur ledger-fonts ledger-fontify ledger-state
ledger-complete ledger-schedule ledger-init ledger-xact ledger-post
ledger-exec ledger-navigate eshell esh-cmd generator esh-ext esh-opt
esh-proc esh-io esh-arg esh-module esh-groups esh-util ledger-context
ledger-commodities org-config ob-gnuplot org-crypt org-protocol 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 find-func org-version org-compat org-macs ledger-regex
texinfo texinfo-loaddefs emacs-news-mode noutline outline bug-reference
naquadah-theme solar cal-dst holidays holiday-loaddefs appt diary-lib
diary-loaddefs cal-menu calendar cal-loaddefs server imenu psession
frameset register-preview pcase git-gutter mule-util dired-extension
time winner describe-variable help-fns radix-tree help-mode tv-utils
tv-save-place.el advice init-helm epa derived epg rfc6068 epg-config
helm-epa helm-descbinds cus-edit pp icons wid-edit helm-sys popup
helm-adaptive helm-mode helm-misc helm-files image-dired
image-dired-tags image-dired-external image-dired-util xdg image-mode
exif filenotify tramp tramp-loaddefs trampver tramp-integration files-x
tramp-compat rx shell pcomplete parse-time iso8601 time-date
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 comint ansi-osc ring helm-regexp
format-spec ansi-color helm-utils helm-help helm-types
helm-extensions-autoloads helm-autoloads helm helm-global-bindings
helm-easymenu edmacro kmacro helm-core easy-mmode async-bytecomp
helm-source helm-multi-match helm-lib dired-async async dired-aux dired
dired-loaddefs mb-depth avoid cus-load all-the-icons-autoloads
ledger-mode-autoloads markdown-mode-autoloads info sly-autoloads
w3m-load w3m-autoloads yaml-mode-autoloads package browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo x-toolkit xinput2 x multi-tty
make-network-process emacs)

Memory information:
((conses 16 2099878 213964)
 (symbols 48 40659 6)
 (strings 32 351591 50200)
 (string-bytes 1 13471136)
 (vectors 16 114511)
 (vector-slots 8 2389109 161782)
 (floats 8 5503 7195)
 (intervals 56 369971 11081)
 (buffers 976 170))
<#secure method=pgpmime mode=sign>

-- 
Thierry




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Thu, 01 Feb 2024 10:39:02 GMT) Full text and rfc822 format available.

Notification sent to Thierry Volpiatto <thievol <at> posteo.net>:
bug acknowledged by developer. (Thu, 01 Feb 2024 10:39:02 GMT) Full text and rfc822 format available.

Message #10 received at 68852-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Thierry Volpiatto <thievol <at> posteo.net>
Cc: 68852-done <at> debbugs.gnu.org
Subject: Re: bug#68852: 29.2; Woman + grep fails
Date: Thu, 01 Feb 2024 12:37:43 +0200
> From: Thierry Volpiatto <thievol <at> posteo.net>
> Date: Wed, 31 Jan 2024 13:54:16 +0000
> 
> 
> To reproduce:
> 
> M-x woman RET grep RET
> 
> Debugger entered--Lisp error: (search-failed "\\(\\\\{\\|el[ \11]*\\\\}\\)\\|\\(\n[.']\\)?[ \11]*\\\\}[ \11]*")
>   re-search-forward("\\(\\\\{\\|el[ \11]*\\\\}\\)\\|\\(\n[.']\\)?[ \11]*\\\\}[ \11]*")
> [...]
> 
> I could reproduce also on Emacs-30.0.50
> 
> Calling re-search-forward with the NOERROR arg in the while loop of
> woman-if-body seems to fix the problem:

Hmm... I wonder how this worked until now.  But I guess your fix is as
good as any, so I installed it on master, and I'm now closing this
bug.

Thanks.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 29 Feb 2024 12:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 107 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.