Package: emacs;
Reported by: Sven Joachim <svenjoac <at> gmx.de>
Date: Tue, 16 Mar 2010 08:20:03 UTC
Severity: normal
Done: Chong Yidong <cyd <at> stupidchicken.com>
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 5729 in the body.
You can then email your comments to 5729 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
owner <at> debbugs.gnu.org, svenjoac <at> gmx.de, bug-gnu-emacs <at> gnu.org
:bug#5729
; Package emacs
.
(Tue, 16 Mar 2010 08:20:03 GMT) Full text and rfc822 format available.Sven Joachim <svenjoac <at> gmx.de>
:svenjoac <at> gmx.de, bug-gnu-emacs <at> gnu.org
.
(Tue, 16 Mar 2010 08:20:03 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Sven Joachim <svenjoac <at> gmx.de> To: bug-gnu-emacs <at> gnu.org Subject: 23.1.94; WoMan regression: Invalid search bound (wrong side of point) Date: Tue, 16 Mar 2010 09:19:00 +0100
[Message part 1 (text/plain, inline)]
Running WoMan on the attached rsync manpage fails: ,---- | Debugger entered--Lisp error: (error "Invalid search bound (wrong side of point)") | re-search-forward("\\(^\\s *$\\)\\|\\(^\\s +\\)" #<marker (moves after insertion) at 13657 in *WoMan 1 rsync*> 1) | woman2-format-paragraphs(#<marker (moves after insertion) at 13657 in *WoMan 1 rsync*> 5) | woman2-PP(#<marker (moves after insertion) at 13657 in *WoMan 1 rsync*>) | woman2-roff-buffer() | woman-decode-region(1 159742) | woman-decode-buffer() | woman-process-buffer() | woman-really-find-file("/usr/share/man/man1/rsync.1.gz" t "*WoMan 1 rsync*") | woman-find-file("/usr/share/man/man1/rsync.1.gz") | woman(nil nil) | call-interactively(woman nil nil) `---- This is a regression from Emacs 23.1 which displays the manpage just fine. In GNU Emacs 23.1.94.1 (i486-pc-linux-gnu, GTK+ Version 2.18.7) of 2010-03-12 on turtle, modified by Debian Windowing system distributor `The X.Org Foundation', version 11.0.10705000 configured using `configure '--build' 'i486-linux-gnu' '--host' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/23.1.94/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.1.94/site-lisp:/usr/share/emacs/site-lisp' '--with-x=yes' '--with-x-toolkit=gtk' 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g -Wl,--as-needed' 'CPPFLAGS='' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: C value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: de_DE.UTF-8 value of $XMODIFIERS: nil locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Debugger Minor modes in effect: shell-dirtrack-mode: t diff-auto-refine-mode: t display-time-mode: t auto-image-file-mode: t show-paren-mode: t tooltip-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-encryption-mode: t auto-compression-mode: t temp-buffer-resize-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Recent input: <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <down> <down> <down> <down> <down> <down> <down> <down> <down> v C-s d i e C-l <C-f1> <return> q q <C-f1> r s y n <tab> <return> C-x k <return> C-c l r s y n c . 1 <return> <return> C-x C-j <C-f1> b z r <return> C-x 1 C-s b i s <return> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <f7> <down> <down> <down> <down> <down> <up> <return> g g C-x d <M-backspace> <M-backspace> <M-backspace> <M-backspace> <M-backspace> <M-backspace> <M-backspace> e m <tab> / e m <tab> <return> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <up> <up> <up> <down> <down> <down> <down> <down> <down> <down> <up> <up> <up> <up> <up> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> <up> <return> <f5> . / e m <tab> SPC & <return> <f7> <up> <up> <up> <return> M-x g n u s <return> <f10> <menu-bar> <options> <debug-on-error> M-x m a n <return> r <backspace> r s y n c <return> <f10> <menu-bar> <options> <debug-on-error> C-x k <return> M-x <up> <return> <up> <return> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> <next> q C-c l <up> <return> W C-x k <return> C-u <C-f1> <up> <return> C-x k <return> <f10> <help-echo> <menu-bar> <options> <debug-on-error> <C-f1> <up> <return> M-x r e p o r t - e m <tab> b u <tab> <return> Recent messages: Building completion list of all manual topics... Saving file /home/sven/.emacs.d/.woman-cache.el... Wrote /home/sven/.emacs.d/.woman-cache.el uncompressing rsync.1.gz...done WoMan formatting buffer... woman2-format-paragraphs: Invalid search bound (wrong side of point) Debug on Error enabled globally uncompressing rsync.1.gz...done WoMan formatting buffer... Entering debugger... Load-path shadows: ~/elisp/po-mode hides /usr/share/emacs-snapshot/site-lisp/gettext/po-mode ~/elisp/debian-bts-control hides /usr/share/emacs-snapshot/site-lisp/dpkg-dev-el/debian-bts-control /usr/share/emacs/23.1.94/site-lisp/auctex/tex-fptex hides /usr/share/emacs/site-lisp/auctex/tex-fptex /usr/share/emacs/23.1.94/site-lisp/auctex/tex hides /usr/share/emacs/site-lisp/auctex/tex /usr/share/emacs/23.1.94/site-lisp/auctex/latex hides /usr/share/emacs/site-lisp/auctex/latex /usr/share/emacs/23.1.94/site-lisp/auctex/tex-fold hides /usr/share/emacs/site-lisp/auctex/tex-fold /usr/share/emacs/23.1.94/site-lisp/auctex/texmathp hides /usr/share/emacs/site-lisp/auctex/texmathp /usr/share/emacs/23.1.94/site-lisp/auctex/tex-bar hides /usr/share/emacs/site-lisp/auctex/tex-bar /usr/share/emacs/23.1.94/site-lisp/auctex/tex-mik hides /usr/share/emacs/site-lisp/auctex/tex-mik /usr/share/emacs/23.1.94/site-lisp/auctex/context hides /usr/share/emacs/site-lisp/auctex/context /usr/share/emacs/23.1.94/site-lisp/auctex/context-nl hides /usr/share/emacs/site-lisp/auctex/context-nl /usr/share/emacs/23.1.94/site-lisp/auctex/bib-cite hides /usr/share/emacs/site-lisp/auctex/bib-cite /usr/share/emacs/23.1.94/site-lisp/auctex/multi-prompt hides /usr/share/emacs/site-lisp/auctex/multi-prompt /usr/share/emacs/23.1.94/site-lisp/auctex/tex-buf hides /usr/share/emacs/site-lisp/auctex/tex-buf /usr/share/emacs/23.1.94/site-lisp/auctex/tex-jp hides /usr/share/emacs/site-lisp/auctex/tex-jp /usr/share/emacs/23.1.94/site-lisp/auctex/context-en hides /usr/share/emacs/site-lisp/auctex/context-en /usr/share/emacs/23.1.94/site-lisp/auctex/tex-font hides /usr/share/emacs/site-lisp/auctex/tex-font /usr/share/emacs/23.1.94/site-lisp/auctex/toolbar-x hides /usr/share/emacs/site-lisp/auctex/toolbar-x /usr/share/emacs/23.1.94/site-lisp/auctex/tex-style hides /usr/share/emacs/site-lisp/auctex/tex-style /usr/share/emacs/23.1.94/site-lisp/auctex/font-latex hides /usr/share/emacs/site-lisp/auctex/font-latex /usr/share/emacs/23.1.94/site-lisp/auctex/tex-info hides /usr/share/emacs/site-lisp/auctex/tex-info /usr/share/emacs-snapshot/site-lisp/bbdb/bbdb-pilot-jwz hides /usr/share/emacs/site-lisp/bbdb/bbdb-pilot-jwz ~/elisp/po-mode hides /usr/share/emacs/site-lisp/gettext/po-mode /usr/share/emacs-snapshot/site-lisp/gettext/po-compat hides /usr/share/emacs/site-lisp/gettext/po-compat /usr/share/emacs-snapshot/site-lisp/gnuplot-mode/gnuplot hides /usr/share/emacs/site-lisp/gnuplot-mode/gnuplot /usr/share/emacs-snapshot/site-lisp/gnuplot-mode/info-look.20.3 hides /usr/share/emacs/site-lisp/gnuplot-mode/info-look.20.3 /usr/share/emacs-snapshot/site-lisp/gnuplot-mode/gnuplot-gui hides /usr/share/emacs/site-lisp/gnuplot-mode/gnuplot-gui /usr/share/emacs/23.1.94/site-lisp/cmake/cmake-mode hides /usr/share/emacs/23.1.94/site-lisp/cmake-data/cmake-mode /usr/share/emacs/23.1.94/site-lisp/cmake/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode /usr/share/emacs/23.1.94/site-lisp/debian-startup hides /usr/share/emacs/site-lisp/debian-startup /usr/share/emacs/23.1.94/site-lisp/magit hides /usr/share/emacs/site-lisp/magit /usr/share/emacs-snapshot/site-lisp/w3m/w3m-util hides /usr/share/emacs/site-lisp/w3m/w3m-util /usr/share/emacs-snapshot/site-lisp/w3m/w3m-dtree hides /usr/share/emacs/site-lisp/w3m/w3m-dtree /usr/share/emacs-snapshot/site-lisp/w3m/w3m-hist hides /usr/share/emacs/site-lisp/w3m/w3m-hist /usr/share/emacs-snapshot/site-lisp/w3m/w3m-weather hides /usr/share/emacs/site-lisp/w3m/w3m-weather /usr/share/emacs-snapshot/site-lisp/w3m/w3m-rss hides /usr/share/emacs/site-lisp/w3m/w3m-rss /usr/share/emacs-snapshot/site-lisp/w3m/mew-w3m hides /usr/share/emacs/site-lisp/w3m/mew-w3m /usr/share/emacs-snapshot/site-lisp/w3m/w3m-filter hides /usr/share/emacs/site-lisp/w3m/w3m-filter /usr/share/emacs-snapshot/site-lisp/w3m/w3m-session hides /usr/share/emacs/site-lisp/w3m/w3m-session /usr/share/emacs-snapshot/site-lisp/w3m/w3mhack hides /usr/share/emacs/site-lisp/w3m/w3mhack /usr/share/emacs-snapshot/site-lisp/w3m/w3m-search hides /usr/share/emacs/site-lisp/w3m/w3m-search /usr/share/emacs-snapshot/site-lisp/w3m/w3m-lnum hides /usr/share/emacs/site-lisp/w3m/w3m-lnum /usr/share/emacs-snapshot/site-lisp/w3m/w3m-proc hides /usr/share/emacs/site-lisp/w3m/w3m-proc /usr/share/emacs-snapshot/site-lisp/w3m/w3m-fb hides /usr/share/emacs/site-lisp/w3m/w3m-fb /usr/share/emacs-snapshot/site-lisp/w3m/w3m-favicon hides /usr/share/emacs/site-lisp/w3m/w3m-favicon /usr/share/emacs-snapshot/site-lisp/w3m/w3m-bug hides /usr/share/emacs/site-lisp/w3m/w3m-bug /usr/share/emacs-snapshot/site-lisp/w3m/w3m-perldoc hides /usr/share/emacs/site-lisp/w3m/w3m-perldoc /usr/share/emacs-snapshot/site-lisp/w3m/mime-w3m hides /usr/share/emacs/site-lisp/w3m/mime-w3m /usr/share/emacs-snapshot/site-lisp/w3m/w3m-bookmark hides /usr/share/emacs/site-lisp/w3m/w3m-bookmark /usr/share/emacs-snapshot/site-lisp/w3m/octet hides /usr/share/emacs/site-lisp/w3m/octet /usr/share/emacs-snapshot/site-lisp/w3m/w3m-ems hides /usr/share/emacs/site-lisp/w3m/w3m-ems /usr/share/emacs-snapshot/site-lisp/w3m/w3m hides /usr/share/emacs/site-lisp/w3m/w3m /usr/share/emacs-snapshot/site-lisp/w3m/w3m-ccl hides /usr/share/emacs/site-lisp/w3m/w3m-ccl /usr/share/emacs-snapshot/site-lisp/w3m/w3m-mail hides /usr/share/emacs/site-lisp/w3m/w3m-mail /usr/share/emacs-snapshot/site-lisp/w3m/w3m-cookie hides /usr/share/emacs/site-lisp/w3m/w3m-cookie /usr/share/emacs-snapshot/site-lisp/w3m/w3m-image hides /usr/share/emacs/site-lisp/w3m/w3m-image /usr/share/emacs-snapshot/site-lisp/w3m/w3m-form hides /usr/share/emacs/site-lisp/w3m/w3m-form /usr/share/emacs-snapshot/site-lisp/w3m/w3m-antenna hides /usr/share/emacs/site-lisp/w3m/w3m-antenna /usr/share/emacs-snapshot/site-lisp/w3m/w3m-symbol hides /usr/share/emacs/site-lisp/w3m/w3m-symbol /usr/share/emacs-snapshot/site-lisp/w3m/w3m-tabmenu hides /usr/share/emacs/site-lisp/w3m/w3m-tabmenu /usr/share/emacs-snapshot/site-lisp/w3m/w3m-namazu hides /usr/share/emacs/site-lisp/w3m/w3m-namazu Features: (shadow ispell emacsbug debug tabify cus-start cus-load shell comint ring nroff-mode locate woman man assoc autoconf autoconf-mode diff-mode easy-mmode multi-isearch w3m-bookmark w3m-tabmenu w3m-session help-mode view kmacro vc-git bookmark pp nndoc url-cache url-http tls url-gw url-auth url url-proxy url-privacy url-expand url-methods url-history url-cookie url-util url-handlers url-parse url-vars thingatpt thai-util thai-word mule-util macros w3m-form w3m browse-url doc-view jka-compr dired-x dired-aux dired image-mode w3m-hist w3m-fb w3m-ems w3m-ccl ccl w3m-favicon w3m-image w3m-proc w3m-util compface gnus-fun sort flow-fill gnus-cite smiley ansi-color mail-extr gnus-async gnus-bcklg gnus-ml disp-table parse-time timezone byte-opt bytecomp byte-compile nnfolder nndraft nnmh auth-source gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 epg-config mm-view smime dig nntp gnus-cache gnus-sum nnoo gnus-group gnus-undo nnmail mail-source format-spec gnus-start gnus-spec gnus-int gnus-range message idna sendmail ecomplete rfc822 mml easymenu mml-sec password-cache mm-decode mm-bodies mm-encode mailcap mail-parse rfc2231 rfc2047 rfc2045 qp ietf-drums mailabbrev gmm-utils mailheader canlock sha1 hex-util hashcash gnus-win gnus gnus-ems nnheader gnus-util netrc time-date mail-utils mm-util mail-prsvr wid-edit time server uniquify advice help-fns advice-preload po generic-x regexp-opt image-file paren add-ons bitmap bitmap-ci poem poem-e20 poem-e20_3 pces pces-e20 pces-20 broken pcustom poe pym static apel-ver product debian-el debian-el-loaddefs w3m-load emacs-goodies-el emacs-goodies-custom emacs-goodies-loaddefs dpkg-dev-el dpkg-dev-el-loaddefs bbdb-autoloads preview-latex tex-site auto-loads tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd font-setting tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mldrag mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev loaddefs button minibuffer faces cus-face files text-properties overlay md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind font-render-setting gtk x-toolkit x multi-tty emacs)
[rsync.1.gz (application/octet-stream, attachment)]
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#5729
; Package emacs
.
(Tue, 16 Mar 2010 09:31:02 GMT) Full text and rfc822 format available.Message #8 received at 5729 <at> debbugs.gnu.org (full text, mbox):
From: Sven Joachim <svenjoac <at> gmx.de> To: 5729 <at> debbugs.gnu.org Cc: Chong Yidong <cyd <at> stupidchicken.com> Subject: Re: bug#5729: 23.1.94; WoMan regression: Invalid search bound (wrong side of point) Date: Tue, 16 Mar 2010 10:30:01 +0100
On 2010-03-16 09:19 +0100, Sven Joachim wrote: > Running WoMan on the attached rsync manpage fails: > > ,---- > | Debugger entered--Lisp error: (error "Invalid search bound (wrong side of point)") > | re-search-forward("\\(^\\s *$\\)\\|\\(^\\s +\\)" #<marker (moves after insertion) at 13657 in *WoMan 1 rsync*> 1) > | woman2-format-paragraphs(#<marker (moves after insertion) at 13657 in *WoMan 1 rsync*> 5) > | woman2-PP(#<marker (moves after insertion) at 13657 in *WoMan 1 rsync*>) > | woman2-roff-buffer() > | woman-decode-region(1 159742) > | woman-decode-buffer() > | woman-process-buffer() > | woman-really-find-file("/usr/share/man/man1/rsync.1.gz" t "*WoMan 1 rsync*") > | woman-find-file("/usr/share/man/man1/rsync.1.gz") > | woman(nil nil) > | call-interactively(woman nil nil) > `---- > > This is a regression from Emacs 23.1 which displays the manpage just > fine. I bisected the problem, and the first bad commit is revision 96401: revno: 96401 committer: Chong Yidong <cyd <at> stupidchicken.com> timestamp: Mon 2009-07-06 02:17:31 +0000 message: * woman.el: Remove stand-alone closing parentheses. (woman-file-name, woman2-format-paragraphs) (woman-leave-blank-lines): Code cleanup. (woman-use-own-frame): Change default to nil. (woman-italic, woman-bold, woman-unknown, woman-addition): Change defaults to inherit from default faces. (woman2-process-escapes): Consume the newline after a stand-alone filler character (Bug#3651). === modified file 'lisp/woman.el' --- lisp/woman.el 2009-03-07 15:28:58 +0000 +++ lisp/woman.el 2009-07-06 02:17:31 +0000 @@ -860,9 +860,7 @@ :set 'set-woman-file-regexp :group 'woman-interface) -(defcustom woman-use-own-frame ; window-system - (or (and (fboundp 'display-graphic-p) (display-graphic-p)) ; Emacs 21 - (memq window-system '(x w32 ns))) ; Emacs 20 +(defcustom woman-use-own-frame nil "If non-nil then use a dedicated frame for displaying WoMan windows. Only useful when run on a graphic display such as X or MS-Windows." :type 'boolean @@ -944,45 +942,28 @@ :type 'boolean :group 'woman-faces) -;; This is overkill! Troff uses just italic; Nroff uses just underline. -;; You should probably select either italic or underline as you prefer, but -;; not both, although italic and underline work together perfectly well! (defface woman-italic - `((((min-colors 88) (background light)) - (:slant italic :underline t :foreground "red1")) - (((background light)) (:slant italic :underline t :foreground "red")) - (((background dark)) (:slant italic :underline t))) + '((t :inherit italic)) "Face for italic font in man pages." :group 'woman-faces) -;; backward-compatibility alias (put 'woman-italic-face 'face-alias 'woman-italic) (defface woman-bold - '((((min-colors 88) (background light)) (:weight bold :foreground "blue1")) - (((background light)) (:weight bold :foreground "blue")) - (((background dark)) (:weight bold :foreground "green2"))) + '((t :inherit bold)) "Face for bold font in man pages." :group 'woman-faces) -;; backward-compatibility alias (put 'woman-bold-face 'face-alias 'woman-bold) -;; Brown is a good compromise: it is distinguishable from the default -;; but not enough so to make font errors look terrible. (Files that use -;; non-standard fonts seem to do so badly or in idiosyncratic ways!) (defface woman-unknown - '((((background light)) (:foreground "brown")) - (((min-colors 88) (background dark)) (:foreground "cyan1")) - (((background dark)) (:foreground "cyan"))) + '((t :inherit font-lock-warning-face)) "Face for all unknown fonts in man pages." :group 'woman-faces) -;; backward-compatibility alias (put 'woman-unknown-face 'face-alias 'woman-unknown) (defface woman-addition - '((t (:foreground "orange"))) + '((t :inherit font-lock-builtin-face)) "Face for all WoMan additions to man pages." :group 'woman-faces) -;; backward-compatibility alias (put 'woman-addition-face 'face-alias 'woman-addition) (defun woman-default-faces () @@ -1212,11 +1193,9 @@ (woman-find-file file-name) (message "WoMan Error: No matching manual files found in search path") - (ding)) - ) + (ding))) (message "WoMan Error: No topic specified in non-interactive call") - (ding)) - ) + (ding))) ;; Allow WoMan to be called via the standard Help menu: (define-key-after menu-bar-manuals-menu [woman] @@ -1287,11 +1266,10 @@ be found. Optional argument RE-CACHE, if non-nil, forces the cache to be re-read." ;; Handle the caching of the directory and topic lists: - (if (and (not re-cache) - (or - (and woman-expanded-directory-path woman-topic-all-completions) - (woman-read-directory-cache))) - () + (unless (and (not re-cache) + (or + (and woman-expanded-directory-path woman-topic-all-completions) + (woman-read-directory-cache))) (message "Building list of manual directory expansions...") (setq woman-expanded-directory-path (woman-expand-directory-path woman-manpath woman-path)) @@ -1328,8 +1306,7 @@ 'woman-topic-history default)))) ;; Note that completing-read always returns a string. - (if (= (length topic) 0) - nil ; no topic, so no file! + (unless (= (length topic) 0) (cond ((setq files (woman-file-name-all-completions topic))) ;; Complete topic more carefully, i.e. use the completion @@ -1366,8 +1343,7 @@ (not (member (car cdr_list) (cdr cdr_list))) (funcall predicate (car cdr_list))) (setq list cdr_list) - (setcdr list (cdr cdr_list))) - ) + (setcdr list (cdr cdr_list)))) newlist))) (defun woman-file-readable-p (dir) @@ -1560,10 +1536,8 @@ path (cdr path)) (if (woman-not-member dir path) ; use each directory only once! (setq files (nconc files - (directory-files dir t topic-regexp)))) - )) - (mapcar 'list files) - )) + (directory-files dir t topic-regexp)))))) + (mapcar 'list files))) ;;; dired support @@ -1668,8 +1642,7 @@ (or exists (setq woman-buffer-alist (cons (cons file-name bufname) woman-buffer-alist) - woman-buffer-number 0)) - ))) + woman-buffer-number 0))))) (Man-build-section-alist) (Man-build-references-alist) (goto-char (point-min))) @@ -1785,8 +1758,7 @@ (goto-char (point-min)) (forward-line) (while (re-search-forward "^\\( \\)?\\([A-Z].*\\)" nil t) - (woman-set-face (match-beginning 2) (match-end 2) 'woman-bold)))) - ) + (woman-set-face (match-beginning 2) (match-end 2) 'woman-bold))))) (defun woman-insert-file-contents (filename compressed) "Insert file FILENAME into the current buffer. @@ -1811,9 +1783,7 @@ (file-error ;; Run find-file-not-found-hooks until one returns non-nil. ;; (run-hook-with-args-until-success 'find-file-not-found-hooks) - (insert "\n***** File " filename " not found! *****\n\n") - ))) - ))) + (insert "\n***** File " filename " not found! *****\n\n"))))))) ;;; Major mode (Man) interface: @@ -1991,8 +1961,7 @@ (interactive) (setq woman-fill-frame (not woman-fill-frame)) (message "Woman fill column set to %s." - (if woman-fill-frame "frame width" woman-fill-column) - )) + (if woman-fill-frame "frame width" woman-fill-column))) (defun woman-mini-help () "Display WoMan commands and user options in an `apropos' buffer." @@ -2119,8 +2088,7 @@ (setcdr prev-ptr (cdr (cdr prev-ptr))) (if (>= woman-buffer-number (length woman-buffer-alist)) (setq woman-buffer-number 0)) - nil) - ))) + nil)))) ;;; Syntax and display tables: @@ -2406,52 +2374,7 @@ (woman-delete-match 0) (WoMan-warn "Terminal vertical motion escape \\%s ignored!" esc))) - (setq first (not first)) - ))) - -; ;; \h'+/-N' local horizontal motion. -; ;; N may include width escape \w'...' -; ;; Implement arbitrary forward motion and non-overlapping backward -; ;; motion. -; (goto-char from) -; (while (re-search-forward -; ;; Delimiter can be a special char escape sequence \(.. or -; ;; a single normal char (usually '): -; "\\\\h\\(\\\\(..\\|.\\)\\(|\\)?" -; nil t) -; (let ((from (match-beginning 0)) -; (delim (regexp-quote (match-string 1))) -; (absolute (match-string 2)) ; absolute position? -; (N (woman-parse-numeric-arg)) ; distance -; to -; msg) ; for warning -; (if (not (looking-at delim)) -; ;; Warn but leave escape in buffer unprocessed: -; (WoMan-warn -; "Local horizontal motion (%s) delimiter error!" -; (buffer-substring from (1+ (point)))) ; point at end of arg -; (setq to (match-end 0) -; ;; For possible warning -- save before deleting: -; msg (buffer-substring from to)) -; (delete-region from to) -; (if absolute ; make relative -; (setq N (- N (current-column)))) -; (if (>= N 0) -; ;; Move forward by inserting hard spaces: -; (insert-char woman-unpadded-space-char N) -; ;; Move backwards by deleting space, -; ;; first backwards then forwards: -; (while (and -; (<= (setq N (1+ N)) 0) -; (cond ((memq (preceding-char) '(?\ ?\t)) -; (delete-backward-char 1) t) -; ((memq (following-char) '(?\ ?\t)) -; (delete-char 1) t) -; (t nil)))) -; (if (<= N 0) -; (WoMan-warn -; "Negative horizontal motion (%s) would overwrite!" msg)))) -; )) + (setq first (not first))))) ;; Process formatting macros (goto-char from) @@ -2472,8 +2395,7 @@ (delete-char -1) (insert ?\\)) (goto-char from) (while (search-forward woman-unpadded-space-string nil t) - (delete-char -1) (insert ?\ )) - )) + (delete-char -1) (insert ?\ )))) ;; Must return the new end of file if used in format-alist. (point-max))) @@ -2521,8 +2443,7 @@ (t nil)))) (if (<= N 0) (WoMan-warn - "Negative horizontal motion (%s) would overwrite!" msg)))) - )) + "Negative horizontal motion (%s) would overwrite!" msg)))))) (goto-char from))) @@ -2582,8 +2503,7 @@ (delete-region from (point)) (WoMan-warn "ig request ignored -- terminator `.%s' not found!" yy) - (woman-delete-line 1)) - )) + (woman-delete-line 1)))) (defsubst woman0-process-escapes (from to) "Process escapes within an if/ie condition between FROM and TO." @@ -2641,12 +2561,10 @@ (woman0-process-escapes from woman0-if-to) (woman-parse-numeric-arg)))) (setq c (> n 0)) - (goto-char from)) - ) + (goto-char from))) (if (eq c 0) (woman-if-ignore woman0-if-to request) ; ERROR! - (woman-if-body request woman0-if-to (eq c negated))) - )) + (woman-if-body request woman0-if-to (eq c negated))))) (defun woman-if-body (request to delete) ; should be reversed as `accept'? "Process if-body, including \\{ ... \\}. @@ -2676,10 +2594,9 @@ (delete-region (if delete from (match-beginning 0)) (point)) (if (looking-at "^$") (delete-char 1)) )) - (delete (woman-delete-line 1)) ; single-line - ) + (delete (woman-delete-line 1))) ; single-line ;; Process matching .el anything: - (cond ((string= request "ie") + (cond ((string= request "ie") ;; Discard unless previous .ie c `evaluated to false'. (cond ((re-search-forward "^[.'][ \t]*el[ \t]*" nil t) (woman-delete-match 0) @@ -2689,10 +2606,8 @@ ((string= request "el") (cond ((re-search-forward "^[.'][ \t]*el[ \t]*" nil t) (woman-delete-match 0) - (woman-if-body "el" nil t)))) - ) - (goto-char from) - )) + (woman-if-body "el" nil t))))) + (goto-char from))) (defun woman0-el () "Isolated .el request -- should not happen!" @@ -2746,8 +2661,7 @@ (to (copy-marker (+ from length) t))) (woman-pre-process-region from to) (set-marker to nil) - (goto-char from) - ))) + (goto-char from)))) ;;; Process macro definitions: @@ -2767,8 +2681,7 @@ (setq beg (point) end (progn (woman-forward-arg 'unquote) (point)) new (buffer-substring beg end) - woman0-rename-alist (cons (cons new old) woman0-rename-alist))) - )) + woman0-rename-alist (cons (cons new old) woman0-rename-alist))))) (woman-delete-whole-line)) (defun woman0-rename () @@ -2836,8 +2749,7 @@ (setq woman0-macro-alist (cons macro woman0-macro-alist)) (forward-line) (delete-region from (point)) - (backward-char) ; return to end of .de/am line - )) + (backward-char))) ; return to end of .de/am line (beginning-of-line) ; delete .de/am line (woman-delete-line 1)) @@ -2872,8 +2784,7 @@ ;; Replace formal arg with actual arg: (setq start nil) (while (setq start (string-match formal-arg macro start)) - (setq macro (replace-match actual-arg t t macro))) - ) + (setq macro (replace-match actual-arg t t macro)))) ;; Delete any remaining formal arguments: (setq start nil) (while @@ -2957,11 +2868,7 @@ (delete-region beg (point)) (setq woman-string-alist (cons (cons stringname "") - woman-string-alist)))) - )) - )) - )) - )) + woman-string-alist)))))))))))) ;;; Process special character escapes \(xx: @@ -3047,8 +2954,7 @@ (WoMan-warn (concat "Special character " (if (match-beginning 1) "\\(%s" "\\[%s]") " not interpolated!") name) - (if woman-ignore (woman-delete-match 0)))) - )) + (if woman-ignore (woman-delete-match 0)))))) (defun woman-display-extended-fonts () "Display table of glyphs of graphic characters and their octal codes. @@ -3066,8 +2972,7 @@ (insert " ") (setq i (1+ i)) (when (= i 128) (setq i 160) (insert "\n")) - (if (zerop (% i 8)) (insert "\n"))) - )) + (if (zerop (% i 8)) (insert "\n"))))) (print-help-return-message))) @@ -3089,8 +2994,7 @@ (setq in-quote (not in-quote)) )) (if in-quote - (WoMan-warn "Unpaired \" in .%s arguments." request)) - )) + (WoMan-warn "Unpaired \" in .%s arguments." request)))) (defsubst woman-unquote-args () "Delete any double-quote characters up to the end of the line." @@ -3124,9 +3028,7 @@ (funcall fn) ;; Hide leading control character in quoted argument (only): (if (and unquote (memq (following-char) '(?. ?'))) - (insert "\\&")) - ) - ))))) + (insert "\\&")))))))) ;;; Font-changing macros: @@ -3198,8 +3100,7 @@ (insert (car fonts)) (setq fonts (cdr fonts)) (woman-forward-arg unquote 'concat)) ; unquote is bound above - (insert "\\fR") - )) + (insert "\\fR"))) (defun woman-forward-arg (&optional unquote concat) "Move forward over one ?roff argument, optionally unquoting and/or joining. @@ -3215,14 +3116,12 @@ (re-search-forward "\"\\|$")) (if (eq (preceding-char) ?\") (if unquote (delete-backward-char 1)) - (WoMan-warn "Unpaired \" in .%s arguments." request) - )) + (WoMan-warn "Unpaired \" in .%s arguments." request))) ;; (re-search-forward "[^\\\n] \\|$") ; inconsistent (skip-syntax-forward "^ ")) (cond ((null concat) (skip-chars-forward " \t")) ; don't skip eol! ((eq concat 'noskip)) ; do not skip following whitespace - (t (woman-delete-following-space))) - ) + (t (woman-delete-following-space)))) ;; The following requests are not explicit font-change requests and @@ -3247,8 +3146,7 @@ (woman-delete-whole-line) (insert ".ft I\n") (forward-line N) - (insert ".ft R\n") - )) + (insert ".ft R\n"))) ;;; Other non-breaking requests: @@ -3279,8 +3177,7 @@ (save-excursion (while (and (re-search-forward c nil t) (match-beginning 1)) - (delete-char -1))) - )) + (delete-char -1))))) (put 'woman1-hw 'notfont t) (defun woman1-hw () @@ -3372,8 +3269,7 @@ fescape t) (woman-match-name)) (t (setq notfont t))) - (if notfont - () + (unless notfont ;; Get font name: (or font (let ((fontstring (match-string 0))) @@ -3411,8 +3307,7 @@ (setq current-font font) ))) ;; Set font after last request up to eob: - (woman-set-face previous-pos (point) current-font) - )) + (woman-set-face previous-pos (point) current-font))) (defun woman-set-face (from to face) "Set the face of the text from FROM to TO to face FACE. @@ -3431,8 +3326,7 @@ (put-text-property from (point) 'face face-no-ul) (setq from (point)) ))) - (put-text-property from to 'face face)) - )) + (put-text-property from to 'face face)))) ;;; Output translation: @@ -3482,8 +3376,7 @@ (concat "[" matches)) translations (cons matches alist)) ;; Format any following text: - (woman2-format-paragraphs to) - )) + (woman2-format-paragraphs to))) (defsubst woman-translate (to) "Translate up to marker TO. Do this last of all transformations." @@ -3498,8 +3391,7 @@ (buffer-substring-no-properties (match-beginning 0) (match-end 0)) alist))) - (woman-delete-match 0)) - ))) + (woman-delete-match 0))))) ;;; Registers: @@ -3689,8 +3581,7 @@ (if (re-search-forward delim nil t) ;; Return width of string: (- (match-beginning 0) from) - (WoMan-warn "Width escape delimiter error!")))) - ))) + (WoMan-warn "Width escape delimiter error!"))))))) (if (null n) ;; ERROR -- should handle this better! (progn @@ -3714,8 +3605,7 @@ ;; in which case do nothing and return nil. ) (goto-char (match-end 0))) - (if (numberp n) (round n) n)) - ))) + (if (numberp n) (round n) n))))) ;;; VERTICAL FORMATTING -- Formatting macros that cause a break: @@ -3824,11 +3714,7 @@ (defsubst woman-interparagraph-space () "Set variable `woman-leave-blank-lines' from `woman-interparagraph-distance'." -; (if (> woman-interparagraph-distance 0) -; (forward-line 1) ; leave 1 blank line -; (woman-delete-line 1)) ; do not leave blank line - (setq woman-leave-blank-lines woman-interparagraph-distance) - ) + (setq woman-leave-blank-lines woman-interparagraph-distance)) (defun woman2-TH (to) ".TH n c x v m -- Begin a man page. Format paragraphs upto TO. @@ -3842,9 +3728,7 @@ (let ((start (point)) here) (while (not (eolp)) (cond ((looking-at "\"\"[ \t]") - (delete-char 2) - ;; (delete-horizontal-space) - )) + (delete-char 2))) (delete-horizontal-space) (setq here (point)) (insert " -- ") @@ -3975,9 +3859,7 @@ "Character(s) overwritten by negative vertical spacing in line %d" (count-lines 1 (point)))) (delete-char 1) (insert (substring overlap i (1+ i))))) - (setq i (1+ i)) - )) - ))) + (setq i (1+ i))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -3992,8 +3874,9 @@ ;; The first two cases below could be merged (maybe)! (let ((from (point))) ;; Discard zero width filler character used to hide leading dots - ;; and zero width characters \|, \^: - (while (re-search-forward "\\\\[&|^]" to t) + ;; and zero width characters. If on a line by itself, consume the + ;; newline as well, as this may interfere with (Bug#3651). + (while (re-search-forward "\\\\[&|^]\n?" to t) (woman-delete-match 0)) (goto-char from) ;; Interrupt text processing -- CONTINUE current text with the @@ -4020,7 +3903,7 @@ (delete-char 1) (insert ?`)))) ((eq c ?\( )) ; uninterpreted special character - ; \(.. -- do nothing + ; \(.. -- do nothing ((eq c ?t) ; non-interpreted tab \t (delete-char 1) (delete-char -1) @@ -4065,8 +3948,7 @@ (c (if (< (point) to) (following-char) ?_))) (delete-region from to) (delete-char 1) - (insert (make-string N c)) - )) + (insert (make-string N c)))) ;;; 4. Text Filling, Adjusting, and Centering @@ -4089,7 +3971,7 @@ (defun woman2-nf (to) ".nf -- Nofill. Subsequent lines are neither filled nor adjusted. Input text lines are copied directly to output lines without regard -for the current line length. Format paragraphs upto TO." +for the current line length. Format paragraphs up to TO." (setq woman-nofill t) (woman-delete-line 1) ; ignore any arguments (woman2-format-paragraphs to)) @@ -4140,15 +4022,12 @@ (progn (skip-syntax-forward " ") (beginning-of-line) (point))) - (if woman-nospace - () + (unless woman-nospace (if (or (null leave) (eq leave 0)) ;; output any `pending' vertical space ... (setq leave woman-leave-blank-lines)) - (if (and leave (> leave 0)) (insert-before-markers ?\n)) - ) - (setq woman-leave-blank-lines nil) - ) + (if (and leave (> leave 0)) (insert-before-markers ?\n))) + (setq woman-leave-blank-lines nil)) ;; `fill-region-as-paragraph' in `fill.el' appears to be the principal ;; text filling function, so that is what I use here. @@ -4167,28 +4046,20 @@ (skip-syntax-forward " ") ;; Successive control lines are sufficiently common to be worth a ;; special case (maybe): - (if (>= (point) to) ; >= as a precaution! - () - ;; (woman-leave-blank-lines) + (unless (>= (point) to) (woman-reset-nospace) - ;; (woman2-process-escapes to) ; 7 October 1999 (woman2-process-escapes to 'numeric) (if woman-nofill ;; Indent without filling or adjusting ... (progn (woman-leave-blank-lines) - (cond (woman-temp-indent - (indent-to woman-temp-indent) - (forward-line))) + (when woman-temp-indent + (indent-to woman-temp-indent) + (forward-line)) (indent-rigidly (point) to left-margin) - (woman-horizontal-escapes to)) ; 7 October 1999 + (woman-horizontal-escapes to)) ;; Fill and justify ... ;; Blank lines and initial spaces cause a break. -; (cond ((and (= (point) to) (not (looking-at ".nf"))) ; Yuk!!! -; ;; No text after a request that caused a break, so delete -; ;; any spurious blank line left: -; (forward-line -1) -; (if (looking-at "^\\s *$") (kill-line) (forward-line)))) (while (< (point) to) (woman-leave-blank-lines) (let ((from (point))) @@ -4197,13 +4068,6 @@ (woman-horizontal-escapes to) ; 7 October 1999 ;; Find the beginning of the next paragraph: (forward-line) -; (if (re-search-forward "\\(^\\s *$\\)\\|\\(^\\s +\\)" to 1) -; ;; A blank line should leave a space like .sp 1 (p. 14). -; (if (eolp) -; (progn -; (skip-syntax-forward " ") -; (setq woman-leave-blank-lines 1)) -; (setq woman-leave-blank-lines nil))) (and (re-search-forward "\\(^\\s *$\\)\\|\\(^\\s +\\)" to 1) ;; A blank line should leave a space like .sp 1 (p. 14). (eolp) @@ -4217,35 +4081,21 @@ ;; If a single short line then just leave it. ;; This is necessary to preserve some table layouts. ;; PROBABLY NOT NECESSARY WITH SQUEEZE MODIFICATION !!!!! - (if (or (> (count-lines from (point)) 1) + (when (or (> (count-lines from (point)) 1) + (save-excursion + (backward-char) + (> (current-column) fill-column))) + ;; NOSQUEEZE has no effect if JUSTIFY is full, so redefine + ;; canonically-space-region, see above. + (if (and woman-temp-indent (< woman-temp-indent left-margin)) + (let ((left-margin woman-temp-indent)) + (fill-region-as-paragraph from (point) woman-justify) (save-excursion - (backward-char) - (> (current-column) fill-column))) - ;; ?roff does not squeeze multiple spaces - ;; (fill-region-as-paragraph from (point) woman-justify t) - ;; NOSQUEEZE has no effect if JUSTIFY is full, so - ;; redefine canonically-space-region, see above. - (progn - ;; Needs a re-write of the paragraph formatter to - ;; avoid this nonsense to handle temporary indents! - (if (and woman-temp-indent (< woman-temp-indent left-margin)) - (let ((left-margin woman-temp-indent)) - (fill-region-as-paragraph from (point) woman-justify) - (save-excursion - (goto-char from) - (forward-line) - (setq from (point))))) - (fill-region-as-paragraph from (point) woman-justify)) - ) - ;; A blank line should leave a space like .sp 1 (p. 14). - ;; Delete all but 1 trailing blank lines: - ;;(woman-leave-blank-lines 1) - )) - ) - (setq woman-temp-indent nil) - ;; Non-white-space text has been processed, so ... - ;;(setq woman-leave-blank-lines nil) - )) + (goto-char from) + (forward-line) + (setq from (point))))) + (fill-region-as-paragraph from (point) woman-justify))))) + (setq woman-temp-indent nil))) ;;; Tagged, indented and hanging paragraphs: @@ -4317,8 +4167,7 @@ (if (string= (match-string 1) "ta") ; for GetInt.3 (woman2-ta to) (woman-set-interparagraph-distance))) - (set-marker to (woman-find-next-control-line-carefully)) - )) + (set-marker to (woman-find-next-control-line-carefully)))) (let ((tag (point))) (woman-reset-nospace) @@ -4352,9 +4201,7 @@ ;; Cannot simply delete (current-column) whitespace ;; characters because some may be tabs! (insert-char ?\s i))) - (goto-char to) ; necessary ??? - )) - )) + (goto-char to))))) (defun woman2-HP (to) ".HP i -- Set prevailing indent to i. Format paragraphs upto TO. @@ -4362,8 +4209,7 @@ (let ((i (woman2-get-prevailing-indent))) (woman-interparagraph-space) (setq woman-temp-indent woman-left-margin) - (woman2-format-paragraphs to (+ woman-left-margin i)) - )) + (woman2-format-paragraphs to (+ woman-left-margin i)))) (defun woman2-get-prevailing-indent (&optional leave-eol) "Set prevailing indent to integer argument at point, and return it. @@ -4548,9 +4394,7 @@ (insert-before-markers woman-unpadded-space-char) (subst-char-in-region (match-beginning 0) (match-end 0) - pad woman-unpadded-space-char t) - )) - )) + pad woman-unpadded-space-char t))))) (woman2-format-paragraphs to)) @@ -4617,8 +4461,7 @@ (concat "file " WoMan-current-file) (concat "buffer " WoMan-current-buffer)) " at " (current-time-string) "\n") - (setq WoMan-Log-header-point-max (point-max)) - ))) + (setq WoMan-Log-header-point-max (point-max))))) (defun WoMan-log (format &rest args) "Log a message out of FORMAT control string and optional ARGS." @@ -4664,8 +4507,7 @@ (cond (WoMan-Log-header-point-max (goto-char WoMan-Log-header-point-max) (forward-line -1) - (recenter 0))) - ))))) + (recenter 0)))))))) nil) ; for woman-file-readable-p etc. (provide 'woman)
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#5729
; Package emacs
.
(Tue, 16 Mar 2010 17:26:01 GMT) Full text and rfc822 format available.Message #11 received at 5729 <at> debbugs.gnu.org (full text, mbox):
From: Chong Yidong <cyd <at> stupidchicken.com> To: Sven Joachim <svenjoac <at> gmx.de> Cc: 5729 <at> debbugs.gnu.org Subject: Re: bug#5729: 23.1.94; WoMan regression: Invalid search bound (wrong side of point) Date: Tue, 16 Mar 2010 13:24:57 -0400
>> Running WoMan on the attached rsync manpage fails: >> >> ,---- >> | Debugger entered--Lisp error: (error "Invalid search bound (wrong side of point)") >> | re-search-forward("\\(^\\s *$\\)\\|\\(^\\s +\\)" #<marker (moves after insertion) at 13657 in *WoMan 1 rsync*> 1) >> | woman2-format-paragraphs(#<marker (moves after insertion) at 13657 in *WoMan 1 rsync*> 5) >> | woman2-PP(#<marker (moves after insertion) at 13657 in *WoMan 1 rsync*>) >> | woman2-roff-buffer() >> | woman-decode-region(1 159742) >> | woman-decode-buffer() >> | woman-process-buffer() >> | woman-really-find-file("/usr/share/man/man1/rsync.1.gz" t "*WoMan 1 rsync*") >> | woman-find-file("/usr/share/man/man1/rsync.1.gz") >> | woman(nil nil) >> | call-interactively(woman nil nil) >> `---- >> >> This is a regression from Emacs 23.1 which displays the manpage just >> fine. > > I bisected the problem, and the first bad commit is revision 96401: I've checked in a fix. Thanks.
Chong Yidong <cyd <at> stupidchicken.com>
to control <at> debbugs.gnu.org
.
(Tue, 16 Mar 2010 17:26:02 GMT) Full text and rfc822 format available.Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Wed, 14 Apr 2010 11:24:03 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.