From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: "Basil L. Contovounesios" Newsgroups: gmane.emacs.bugs Subject: bug#28998: 27.0.50; Man--sections is in reverse order Date: Wed, 25 Oct 2017 17:35:35 +0100 Message-ID: <87zi8f18yw.fsf@gmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1508950473 8491 195.159.176.226 (25 Oct 2017 16:54:33 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 25 Oct 2017 16:54:33 +0000 (UTC) To: 28998@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Oct 25 18:54:27 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e7OwV-0008Av-NX for geb-bug-gnu-emacs@m.gmane.org; Wed, 25 Oct 2017 18:54:12 +0200 Original-Received: from localhost ([::1]:49280 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7OwZ-0004Qy-2p for geb-bug-gnu-emacs@m.gmane.org; Wed, 25 Oct 2017 12:54:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:58080) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7OwR-0004Qr-Cd for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 12:54:09 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e7OwO-00089T-5k for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 12:54:07 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:53150) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e7OwN-00088q-VS for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 12:54:04 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1e7OwN-0005OO-JF for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 12:54:03 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "Basil L. Contovounesios" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 25 Oct 2017 16:54:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 28998 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.150895042220694 (code B ref -1); Wed, 25 Oct 2017 16:54:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 25 Oct 2017 16:53:42 +0000 Original-Received: from localhost ([127.0.0.1]:33598 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e7Ow2-0005Nh-70 for submit@debbugs.gnu.org; Wed, 25 Oct 2017 12:53:42 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:35371) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e7Oes-0004uJ-TC for submit@debbugs.gnu.org; Wed, 25 Oct 2017 12:35:59 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e7Oel-0007gq-LS for submit@debbugs.gnu.org; Wed, 25 Oct 2017 12:35:53 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:45194) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e7Oel-0007gK-HR for submit@debbugs.gnu.org; Wed, 25 Oct 2017 12:35:51 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54572) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7Oej-0001h4-5J for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 12:35:51 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e7Oed-0007Zr-V8 for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 12:35:49 -0400 Original-Received: from mail-wr0-x236.google.com ([2a00:1450:400c:c0c::236]:55079) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e7Oed-0007Yn-G8 for bug-gnu-emacs@gnu.org; Wed, 25 Oct 2017 12:35:43 -0400 Original-Received: by mail-wr0-x236.google.com with SMTP id o44so584687wrf.11 for ; Wed, 25 Oct 2017 09:35:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tcd-ie.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version; bh=onwpNDS1boQ3OFyv02uTxyWIqvxJilgX6YWC8d5sOzM=; b=lXhogiDempAoFEtchfHK2f3d2aTa2CCWdblJ7o0o5wPEx0/35PHzoiu4JpQz1NbcBf 3v+8++lkwqq0oegyhwlhAcuEjrae1YjCYE2u9hqdBogt22aw1Rtx4nsuxTgl+CIiHA1l +wQULUxi+DcGUdvzxDCkDw010r1zhpaBzZMdcGEbLQIa67KTIWIHgTFwqMvz7Ev4T7te ihdvagdN4iHgvxZ+yooTe2jokRDs9KK86PX+IpL2YsQQo+CxIejN+lP+A+wghog0VE0p ZS/Wy9iIh4GjmXpIZJ4F+fodzOmJn3WnsT0KeefINa2NyUCU9MRbfazFBpp9So+XopiV Ahqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=onwpNDS1boQ3OFyv02uTxyWIqvxJilgX6YWC8d5sOzM=; b=K9oHmOWUhTYISOKF1q4glDzKSnfO/ocyrl1szNdqlfiMzlgBXG3oqXeEZvkD474mHZ cgnjbrt9kpvYMFKfOvihd/JltaCTU7hpBGsffym4x5EnJsA6weY+iZ7RbjPprpMpud9X fDFT0gHRuJE1XwWWMryZcvQ88jeJnuMKCt73Kds2+C6bV7eozT7KqdtfWnUElFMfVcaZ wqRrRtsvoD6UO0t1UD5K+/3QRW7z6A6/GulMsggxrRW95OAPEUvUk7m1D1iVR86mUDGa fFeJqENwo5C0+DEtNcfYl9cikN1rWGPZMCH/8sIjJsRoZLeJMG6LRO1p/zfYXsoy3Ypd Kj1Q== X-Gm-Message-State: AMCzsaXi+Sm35qVwdEk/pYWyBKPwrOBejW/y4Hmt0q6ZWwf5ASVagAJ0 ccnjy1I/H7Xani/JwJJFCWFfXPwu X-Google-Smtp-Source: ABhQp+QZ38G8qNLUkxek+zK1AjneD2tCegHOLXuhC3QNfCv5tUp+CYHmfCYkaa97XjH4vjpPtd3R6w== X-Received: by 10.223.191.8 with SMTP id p8mr3019179wrh.69.1508949341581; Wed, 25 Oct 2017 09:35:41 -0700 (PDT) Original-Received: from localhost ([134.226.214.245]) by smtp.gmail.com with ESMTPSA id v8sm3128243wrg.80.2017.10.25.09.35.40 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 25 Oct 2017 09:35:40 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Mailman-Approved-At: Wed, 25 Oct 2017 12:53:40 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:138978 Archived-At: --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-lisp-man.el-Man-build-section-alist-Reverse-sections.patch >From 824ff332efebc69b436e4893626a68125af20cd5 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Wed, 25 Oct 2017 16:57:43 +0100 Subject: [PATCH 1/2] * lisp/man.el (Man-build-section-alist): Reverse sections --- lisp/man.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/man.el b/lisp/man.el index 7a892c6e88..f7b1609c92 100644 --- a/lisp/man.el +++ b/lisp/man.el @@ -1522,7 +1522,8 @@ Man-build-section-alist (let ((section (match-string 1))) (unless (member section Man--sections) (push section Man--sections))) - (forward-line 1)))) + (forward-line 1))) + (setq Man--sections (nreverse Man--sections))) (defsubst Man-build-references-alist () "Build the list of references (in the SEE ALSO section)." -- 2.14.2 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0002-Rename-Man-build-section-alist.patch >From ecbe8f2d076cbfb61d447ab0faca8e581864d459 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Wed, 25 Oct 2017 17:03:12 +0100 Subject: [PATCH 2/2] Rename Man-build-section-alist Man--sections is a list of strings, so rename inline function to Man-build-section-list. * lisp/man.el (Man-build-section-alist): Do it and reduce syntax. (Man-goto-page): * lisp/woman.el (woman-find-file): Use it. --- lisp/man.el | 12 ++++++------ lisp/woman.el | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lisp/man.el b/lisp/man.el index f7b1609c92..2ff25344fe 100644 --- a/lisp/man.el +++ b/lisp/man.el @@ -1513,16 +1513,16 @@ Man-mode (set (make-local-variable 'bookmark-make-record-function) 'Man-bookmark-make-record)) -(defsubst Man-build-section-alist () +(defsubst Man-build-section-list () "Build the list of manpage sections." - (setq Man--sections nil) + (setq Man--sections ()) (goto-char (point-min)) - (let ((case-fold-search nil)) - (while (re-search-forward Man-heading-regexp (point-max) t) + (let (case-fold-search) + (while (re-search-forward Man-heading-regexp nil t) (let ((section (match-string 1))) (unless (member section Man--sections) (push section Man--sections))) - (forward-line 1))) + (forward-line))) (setq Man--sections (nreverse Man--sections))) (defsubst Man-build-references-alist () @@ -1803,7 +1803,7 @@ Man-goto-page (widen) (goto-char page-start) (narrow-to-region page-start page-end) - (Man-build-section-alist) + (Man-build-section-list) (Man-build-references-alist) (goto-char (point-min))))) diff --git a/lisp/woman.el b/lisp/woman.el index 111086e362..1edf6e34c3 100644 --- a/lisp/woman.el +++ b/lisp/woman.el @@ -1619,7 +1619,7 @@ woman-find-file (setq woman-buffer-alist (cons (cons file-name bufname) woman-buffer-alist) woman-buffer-number 0))))) - (Man-build-section-alist) + (Man-build-section-list) (Man-build-references-alist) (goto-char (point-min))) -- 2.14.2 --=-=-= Content-Type: text/plain # Current behaviour The inline function Man-build-section-alist in lisp/man.el populates the buffer-local list Man--sections with the section names of the current manpage in reverse natural order (i.e. the common section headers NAME and SEE ALSO end up somewhere near the end and beginning of Man--sections, respectively). # Discussion In the function Man-goto-section, Man--sections is passed as a collection to completing-read. The order of candidates is irrelevant in a default Emacs configuration, as the minibuffer help buffer sorts candidates lexicographically by default. There is, however, at least one completion frontend (in my case, ivy.el[1] from ELPA) which displays candidates in the received order. AFAICT there is no purpose or benefit to keeping Man--sections reversed, other than avoiding a call to nreverse, which AFAIK is quite an efficient operation. Conversely, keeping the sections in their natural order (i.e. from (point-min) to (point-max)) both seems more natural and is more convenient for users of completion frontends like ivy.el. Footnotes: [1] https://github.com/abo-abo/swiper # Patch I attach two patches. The first patch implements my suggested reversing of the reversed Man--sections at the end of Man-build-section-alist. The second patch is purely aesthetic in removing some redundant syntax from Man-build-section-alist and renaming it to the more apt Man-build-section-list, seeing as Man--sections is never a list of cons cells. # Environment In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of 2017-10-25 built on thunk Repository revision: 090f4f157eea6f0d0d13963520f5e05706de142f Windowing system distributor 'The X.Org Foundation', version 11.0.11905000 System Description: Debian GNU/Linux testing (buster) Configured using: 'configure --prefix=/home/blc/.local --enable-locallisppath= --with-mailutils --with-sound=yes --with-x-toolkit=lucid --with-xpm --with-jpeg --with-tiff --with-gif --with-png --with-rsvg --with-libsystemd --with-xml2 --with-imagemagick --with-xft --with-libotf --with-m17n-flt --with-toolkit-scroll-bars --with-xaw3d --with-xim --with-gpm --with-dbus --with-gsettings --with-selinux --with-gnutls --with-zlib --with-modules --with-threads --with-file-notification=yes --with-x --without-gconf --with-lcms2 'CFLAGS=-flto -fomit-frame-pointer -march=native -maes -mavx -mcrc32 -mf16c -mfpmath=sse -mfsgsbase -mfxsr -minline-all-stringops -mmmx -mpclmul -mpopcnt -msahf -msse4.2 -mxsave -mxsaveopt -mvzeroupper -O3 -pipe' LDFLAGS=-flto' Configured features: XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS LUCID X11 MODULES LIBSYSTEMD LCMS2 Important settings: value of $LANG: en_IE.UTF-8 locale-coding-system: utf-8-unix Major mode: IBuffer Minor modes in effect: projectile-mode: t ibuffer-auto-mode: t hl-line-mode: t magit-wip-before-change-mode: t magit-wip-after-apply-mode: t magit-wip-after-save-mode: t magit-auto-revert-mode: t async-bytecomp-package-mode: t diff-auto-refine-mode: t recentf-mode: t ace-window-display-mode: t shell-dirtrack-mode: t counsel-mode: t global-paren-face-mode: t xterm-mouse-mode: t winner-mode: t global-whitespace-mode: t display-time-mode: t global-subword-mode: t subword-mode: t save-place-mode: t global-hi-lock-mode: t hi-lock-mode: t engine-mode: t delete-selection-mode: t display-battery-mode: t override-global-mode: t blc-dropbox-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t window-divider-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t transient-mark-mode: t auto-save-visited-mode: t Features: (dabbrev counsel-projectile projectile grep compile ibuf-ext ibuffer ibuffer-loaddefs view hl-line git-rebase magit-bookmark magit-obsolete magit-blame magit-stash magit-bisect magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-branch magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log magit-diff smerge-mode magit-core magit-autorevert autorevert filenotify magit-process magit-margin magit-mode magit-git magit-section magit-popup git-commit magit-utils log-edit pcvs-util add-log with-editor async-bytecomp async dash unfill executable tramp tramp-compat tramp-loaddefs trampver ucs-normalize vc-git diff-mode recentf tree-widget bookmark pp shadow sort footnote face-remap mail-extr gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig mailcap gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source tls gnutls utf7 netrc nnoo parse-time gnus-spec gnus-int gnus-range gnus-win gnus nnheader emacsbug eudcb-bbdb bbdb-com crm bbdb bbdb-site timezone eudc eudc-options-file cus-edit eudc-vars wid-edit message rmc puny git-annex dired-x dired dired-loaddefs format-spec rfc822 mml mml-sec epa derived epg gnus-util rmail rmail-loaddefs xdg mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils ace-window avy cl-print debug shell pcomplete comint ansi-color cus-start cus-load colir color counsel jka-compr esh-util etags xref project swiper ivy flx ivy-overlay ffap thingatpt server bug-reference fic-mode fill-column-indicator paren-face elec-pair xt-mouse winner ring disp-table whitespace time cap-words superword subword saveplace paren ibuf-macs highlight-escape-sequences hi-lock time-date engine-mode delsel battery edmacro kmacro cl-extra help-mode delight advice zenburn-theme browse-url use-package diminish bind-key finder-inf tex-site info package easymenu epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars blc-macs blc-lib easy-mmode rx pcase thunk subr-x map seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib realpath mule-util 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 menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame 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 minibuffer 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 dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 545111 235884) (symbols 48 46611 7) (miscs 40 3990 14356) (strings 32 124523 28431) (string-bytes 1 3875163) (vectors 16 75843) (vector-slots 8 2064942 434084) (floats 8 566 2272) (intervals 56 2459 2469) (buffers 992 55)) Thanks, -- Basil --=-=-=--