Discussion:
bug#31061: 27.0.50; next-page of page-ext non-functional in dired
(too old to reply)
Marco Wahl
2018-04-04 14:24:39 UTC
Permalink
Precondition:

- Have a dired with several subdirectories open.

Action:

- C-x C-p C-n

Expectation:

- The dired buffer narrows to the next subdirectory.

Observation:

- The dired buffer narrows to the current subdirectory.


Proposition for a fix should be attached.


Thanks.





In GNU Emacs 27.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version 3.22.29)
of 2018-03-28 built on tm6592
Repository revision: 4b3f1a95567127ee39a7a3e4704bb1faa34b5282
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Arch Linux

Recent messages:
Retrieving newsgroup: nntp+news.gwene.org:gmane.emacs.devel...
Opening nntp server on news.gwene.org...done
Fetching headers for nntp+news.gwene.org:gmane.emacs.devel...done
Sorting threads...done
Generating summary...done
No more unread newsgroups
Auto-saving...done
Quit
Making completion list... [2 times]
C-x C-g is undefined

Configured using:
'configure PKG_CONFIG_PATH=/usr/lib/imagemagick6/pkgconfig'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11 THREADS LIBSYSTEMD JSON LCMS2

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

Major mode: Group

Minor modes in effect:
semantic-minor-modes-format: ((:eval (if (or semantic-highlight-edits-mode semantic-show-unmatched-syntax-mode) S)))
gnus-agent-group-mode: t
beacon-mode: t
gnus-undo-mode: t
zen-reward-mode: t
pause-indication-mode: t
keystrokes-mode: t
global-pretty-mode: t
pcre-mode: t
csv-field-index-mode: t
nyan-mode: t
diff-auto-refine-mode: t
magit-auto-revert-mode: t
global-git-commit-mode: t
async-bytecomp-package-mode: t
on-screen-global-mode: t
wrap-region-global-mode: t
wrap-region-mode: t
keyfreq-autosave-mode: t
keyfreq-mode: t
dired-async-mode: t
global-company-mode: t
company-mode: t
ido-everywhere: t
override-global-mode: t
shell-dirtrack-mode: t
winner-mode: t
timeclock-mode-line-display: t
show-paren-mode: t
display-time-mode: t
auto-insert-mode: t
global-eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
jit-lock-debug-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
buffer-read-only: t
line-number-mode: t
transient-mark-mode: t
abbrev-mode: t

Load-path shadows:
Error during checking
Features:
(emacsbug whitespace hide-common-indent-test hide-common-indent
hide-first-level-indent-test hide-first-level-indent repeat rfc2104
canlock bbdb-message mailalias em-unix em-term term ehelp em-script
em-prompt em-ls em-hist em-pred em-glob em-dirs em-cmpl em-basic
em-banner em-alias url-cache cal-move cal-iso org-duration bug-reference
ein-org ein-notebooklist ein-file ein-connect gited flow-fill hippie-exp
slime-tests wdired ox-koma-letter ox-texinfo ox-org ox-odt rng-loc
rng-uri rng-parse rng-match rng-pttrn nxml-parse nxml-ns nxml-enc xmltok
nxml-util ox-md ox-icalendar ox-html table ox-beamer ox-latex ox-ascii
ox-publish ox go-up artist reporter mmm-cmds gnus-dired paredit misearch
multi-isearch ob-ein ein-shared-output ein-notebook eieio-opt
ein-inspector ein-traceback ein-pytools ein-pager ein-completer
ein-subpackages ein-notification ein-scratchsheet ein-worksheet
ein-kill-ring ein-cell-output ein-cell-edit ein-cell ein-hy ein-skewer
ein-output-area ein-kernelinfo ein-kernel ein-ipdb ein-events
ein-websocket ein-contents-api ein-query ein-node ein-log ein-classes
ein-core ein-utils org-archive org-capture org-colview org-indent
ace-window shr-color smiley gnus-cite qp mm-archive mail-extr gnus-async
gnus-bcklg gnus-kill gnus-ml nndraft nnmh nndoc utf-7 epa-file
network-stream starttls nnfolder bbdb-gnus nnnil gnus-agent gnus-srvr
gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view
mml-smime smime dig gnus-cache gnus-demon nntp smtpmail sendmail beacon
reverse-theme checkdoc view page-ext battery cal-china lunar cal-islam
cal-hebrew bbdb-anniv appt emacsshot org-timer org-clock disp-table
org-velocity org-learn org-invoice org-elisp-symbol org-depend org-w3m
org-tempo tempo org-rmail org-mhe org-irc org-inlinetask org-info
org-habit org-agenda org-gnus nnir gnus-sum gnus-group gnus-undo
gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo
gnus-spec gnus-int gnus-range gnus-win org-eww org-docview org-crypt
org-bibtex org-bbdb jl-encrypt maxima maxima-font-lock
org-section-numbers org-structure-as-dirs-and-files org-bullets
carry-region cursor-color-mode ariadne-marks mw-mark txr-mode
reverse-words logbook-sorter hide-parts auxies-eww hacks auxies-rest
org-supplements little-helpers bbdb-mua bbdb-com bbdb bbdb-site
bbdb-loaddefs emms-librefm-stream emms-librefm-scrobbler
emms-playlist-limit emms-volume emms-volume-amixer emms-i18n
emms-history emms-score emms-stream-info emms-metaplaylist-mode
emms-bookmarks emms-cue emms-mode-line-icon emms-browser
emms-playlist-sort emms-last-played emms-player-xine emms-player-mpd
emms-playing-time emms-lyrics emms-url emms-streams emms-show-all
emms-tag-editor emms-mark emms-mode-line emms-cache emms-info-ogginfo
emms-info-mp3info emms-info later-do emms-playlist-mode emms-player-vlc
emms-player-mplayer emms-player-simple emms-source-playlist
emms-source-file locate emms-setup emms emms-compat foldout
fit-text-scale face-remap org-copy-headlines-only
org-insert-context-dependent major-mode-stack keystrokes ztree
ztree-diff ztree-diff-model ztree-dir ztree-view ztree-util
ztree-autoloads zone-nyan zone-nyan-autoloads yaml-mode
yaml-mode-autoloads yalinum yalinum-autoloads xref-js2 vc vc-dispatcher
xref-js2-autoloads xelb wgrep wgrep-autoloads web time-stamp
web-autoloads wcheck-mode wcheck-mode-autoloads volume volume-autoloads
vlf vlf-base vlf-tune vlf-autoloads visual-regexp
visual-regexp-autoloads vdiff vdiff-autoloads typit typit-autoloads
typing typing-autoloads twittering-mode twittering-mode-autoloads trr
trr-sess trr-graphs trr-menus trr-files trr-mesg picture gamegrid
trr-autoloads transmission diary-lib diary-loaddefs calc-bin
transmission-autoloads tldr tldr-autoloads tablist tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent sx
sx-autoloads suggest suggest-autoloads ssh-tunnels ssh-tunnels-autoloads
speed-type speed-type-autoloads soap-client rng-xsd rng-dt rng-util
xsd-regexp skewer-mode cache-table sicp sibilant-mode
sibilant-mode-autoloads showkey showkey-autoloads shadow screenshot
screenshot-autoloads rust-mode rust-mode-autoloads rudel rudel-loaddefs
rudel-icons rudel-interactive rudel-hooks rudel-operators rudel-overlay
rudel-operations rudel-session-initiation rudel-backend rudel-util
rudel-errors eieio-speedbar eieio-custom rudel-autoloads ripgrep
ripgrep-autoloads reverse-theme-autoloads restclient
restclient-autoloads request-deferred rectangle-utils
rectangle-utils-autoloads rainbow-delimiters
rainbow-delimiters-autoloads quack cmuscheme emr-scheme scheme
quack-autoloads pt pt-autoloads psgml psgml-vars psgml-autoloads
pretty-mode pretty-mode-autoloads ponylang-mode ponylang-mode-autoloads
pomodoro pomodoro-autoloads php-mode php-project speedbar sb-image
ezimage dframe cc-langs php-mode-autoloads pdf-tools pdf-view
magit-bookmark bookmark pdf-cache pdf-info pdf-util pdf-tools-autoloads
tablist-autoloads pcre2el rxt re-builder pcre2el-autoloads
password-store-otp pass password-store pass-autoloads
password-store-otp-autoloads password-store-autoloads
package-recipe-mode package-build-badges package-build
package-build-autoloads ov ov-autoloads org-board find-lisp
org-board-autoloads org-attach-screenshot org-attach org-id
org-attach-screenshot-autoloads noccur noccur-autoloads nginx-mode
nginx-mode-autoloads navi-mode outshine outshine-org-cmds outorg
navi-mode-autoloads outshine-autoloads outorg-autoloads names multishell
multishell-autoloads multiple-cursors mc-hide-unmatched-lines-mode
mc-separate-operations rectangular-region-mode mc-mark-pop mc-mark-more
mc-cycle-cursors mc-edit-lines move-text move-text-autoloads
mode-line-in-header mode-line-in-header-autoloads mmt mmt-autoloads
message-x message-x-autoloads markdown-mode markdown-mode-autoloads
lyrics lyrics-autoloads linum-relative linum display-line-numbers
linum-relative-autoloads lib-requires loadhist lib-requires-autoloads
lfe-mode lfe-mode-autoloads ledger-mode ledger-check ledger-texi
ledger-test ledger-sort ledger-report ledger-reconcile ledger-occur
ledger-fontify ledger-state ledger-fonts ledger-complete ledger-schedule
ledger-init ledger-xact ledger-post ledger-exec ledger-navigate
ledger-context ledger-commodities esh-var esh-cmd esh-opt esh-io esh-ext
esh-proc esh-groups eshell esh-module esh-mode esh-arg ledger-regex
ledger-mode-autoloads julia-shell julia-shell-autoloads julia-mode
julia-mode-autoloads emr-js js2-refactor js2r-paredit js2r-conveniences
js2r-conditionals js2r-wrapping js2r-functions yasnippet elec-pair
js2r-vars multiple-cursors-core js2r-iife js2r-formatting js2r-helpers
js2-refactor-autoloads yasnippet-autoloads multiple-cursors-autoloads
j-mode j-help j-console j-font-lock j-mode-autoloads ivy-hydra
ivy-hydra-autoloads io-mode-inf io-mode-inf-autoloads io-mode
io-mode-autoloads indium indium-list-scripts indium-scratch
indium-nodejs indium-chrome indium-v8 indium-debugger
indium-debugger-locals indium-debugger-frames indium-interaction
indium-breakpoint indium-script indium-sourcemap indium-workspace
indium-inspector indium-repl indium-backend indium-structs
indium-debugger-litable indium-render indium-seq-fix indium-faces
js2-mode-expansions js2-mode js-mode-expansions js html-mode-expansions
sgml-mode websocket bindat indium-autoloads impatient-mode simple-httpd
impatient-mode-autoloads htmlize html5-schema html5-schema-autoloads
hledger-mode hledger-webservice hledger-mail hledger-reports
hledger-navigate hledger-defuns hledger-core hledger-mode-autoloads
htmlize-autoloads hide-region hide-region-autoloads helpful trace
shut-up helpful-autoloads shut-up-autoloads helm-unicode helm-utils
helm-help helm-unicode-autoloads haskell-mode haskell-cabal
haskell-utils haskell-font-lock haskell-indentation haskell-string
haskell-sort-imports haskell-lexeme haskell-align-imports haskell-compat
haskell-complete-module haskell-ghc-support flymake-proc flymake dabbrev
haskell-customize haskell-mode-autoloads haskell-emacs
haskell-emacs-autoloads hack-time-mode hack-time-mode-autoloads
gscholar-bibtex gscholar-bibtex-autoloads goto-last-change
goto-last-change-autoloads goto-chg gnu-apl-mode gnu-apl-osx-workaround
gnu-apl-documentation gnu-apl-refdocs-bsd-license gnu-apl-follow
gnu-apl-plot gnu-apl-spreadsheet ses unsafep gnu-apl-editor
gnu-apl-interactive gnu-apl-input gnu-apl-symbols gnu-apl-finnapl
gnu-apl-network gnu-apl-util gnu-apl-mode-autoloads git-messenger
git-messenger-autoloads ggtags ggtags-autoloads fsm fsm-autoloads focus
focus-autoloads flyspell-lazy flyspell-lazy-autoloads flylisp
flylisp-autoloads flycheck-package package-lint finder lisp-mnt
flycheck-package-autoloads package-lint-autoloads flycheck-elm
flycheck-elm-autoloads flycheck flycheck-autoloads fliptext quail
fliptext-autoloads fancy-narrow fancy-narrow-autoloads fabric
fabric-autoloads exwm exwm-input xcb-keysyms xcb-xkb exwm-manage
exwm-floating xcb-cursor xcb-render exwm-layout exwm-workspace exwm-core
xcb-ewmh xcb-icccm xcb xcb-xproto xcb-types exwm-autoloads
xelb-autoloads eww-lnum eww eww-lnum-autoloads evil evil-integration
undo-tree diff evil-maps evil-commands reveal evil-jumps
evil-command-window evil-types evil-search evil-ex evil-macros
evil-repeat evil-states evil-core evil-common windmove evil-digraphs
evil-vars evil-autoloads goto-chg-autoloads undo-tree-autoloads esxml
esxml-autoloads espuds epoch-view epoch-view-autoloads epkg-melpa
epkg-gelpa epkg-utils epkg-list epkg-desc epkg epkg-autoloads elisp-refs
loop elisp-refs-autoloads loop-autoloads el-search stream-x stream thunk
cl-print el-search-autoloads stream-autoloads el-mock el-mock-autoloads
ein ein-autoloads skewer-mode-autoloads js2-mode-autoloads
simple-httpd-autoloads request-deferred-autoloads websocket-autoloads
eimp eimp-autoloads ecukes ecukes-load ecukes-project ecukes-run
ecukes-reporter ecukes-template ecukes-core ecukes-hooks ecukes-helpers
ecukes-stats ecukes-steps ecukes-parse ecukes-def ecukes-autoloads
espuds-autoloads ebib ebib-reading-list ebib-notes ebib-filters
ebib-keywords ebib-utils ebib-db parsebib ebib-autoloads
parsebib-autoloads downplay-mode downplay-mode-autoloads discover makey
discover-autoloads makey-autoloads dired-quick-sort savehist ls-lisp
dired-quick-sort-autoloads dired-filter dired-x dired-filter-autoloads
dired-collapse dired-collapse-autoloads dictionary link
dictionary-autoloads link-autoloads deft deft-autoloads dash-functional
dash-functional-autoloads darkroom darkroom-autoloads csv-mode sort
csv-mode-autoloads counsel-projectile counsel-projectile-autoloads
counsel esh-util counsel-autoloads connection connection-autoloads
conkeror-minor-mode conkeror-minor-mode-autoloads concurrent deferred
concurrent-autoloads deferred-autoloads company-web web-completion-data
company-web-autoloads web-completion-data-autoloads company-emoji
company-emoji-list company-emoji-autoloads company-anaconda
company-anaconda-autoloads commander commander-autoloads
command-log-mode command-log-mode-autoloads closql emacsql-sqlite
emacsql emacsql-compiler closql-autoloads emacsql-sqlite-autoloads
emacsql-autoloads cider cider-repl-history pulse cider-debug
cider-browse-ns cider-inspector cider-mode cider-profile
cider-interaction cider-repl cider-resolve cider-test cider-overlays
cider-stacktrace cider-doc cider-browse-spec org-table cider-grimoire
cider-popup cider-eldoc cider-client cider-common cider-util
clojure-mode-expansions clojure-mode align color nrepl-client queue
nrepl-dict cider-compat spinner cider-autoloads spinner-autoloads
queue-autoloads clojure-mode-autoloads cask-mode cask-mode-autoloads
caps-lock caps-lock-autoloads camcorder camcorder-autoloads
names-autoloads calfw holidays hol-loaddefs calfw-autoloads buttercup
buttercup-compat buttercup-autoloads boxquote rect boxquote-autoloads
biblio biblio-download biblio-dissemin biblio-hal biblio-dblp
biblio-crossref biblio-arxiv timezone biblio-doi biblio-core url-queue
hl-line bibtex biblio-autoloads biblio-core-autoloads babel mm-url gnus
nnheader babel-autoloads ascii-art-to-unicode
ascii-art-to-unicode-autoloads arduino-mode arduino-mode-autoloads apu
apu-autoloads ansi ansi-autoloads anaconda-mode pythonic
python-el-fgallina-expansions python tramp-sh anaconda-mode-autoloads
pythonic-autoloads all all-autoloads ag vc-svn find-dired ag-autoloads
ack ack-autoloads ace-jump-mode ace-jump-mode-autoloads ace-jump-buffer
projectile grep ibuf-ext ibuffer ibuffer-loaddefs recentf tree-widget bs
ace-jump-buffer-autoloads ace-isearch ace-isearch-autoloads ace-flyspell
flyspell ispell ace-flyspell-autoloads ac-emoji ac-emoji-data
auto-complete ac-emoji-autoloads auto-complete-autoloads 4clojure
request 4clojure-autoloads request-autoloads refine git-timemachine
vc-git git-timemachine-autoloads elmacro elmacro-autoloads
beacon-autoloads emr-c emr-elisp emr-lisp list-utils emr-iedit
which-func emr-prog emr popup emr-autoloads clang-format-autoloads
projectile-autoloads pkg-info-autoloads epl-autoloads redshank-autoloads
list-utils-autoloads git-auto-commit-mode git-auto-commit-mode-autoloads
nyan-mode nyan-mode-autoloads sotlisp skeleton sotlisp-autoloads gnuplot
info-look gnuplot-autoloads helm helm-source eieio-compat
helm-multi-match helm-lib helm-autoloads helm-core-autoloads
popup-autoloads aurel url-http tls gnutls url-auth url-gw nsm bui
bui-list bui-info bui-entry bui-core bui-history bui-button bui-utils
cus-edit wid-edit aurel-autoloads bui-autoloads rase solar cal-dst
rase-autoloads smartparens smartparens-autoloads lispy hydra lv swiper
ivy ivy-overlay ffap iedit iedit-lib lispy-inline semantic/db eieio-base
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local cedet ediff-merg ediff-wind ediff-diff ediff-mult
ediff-help ediff-init ediff-util ediff edebug help-fns radix-tree
lispy-tags lispy-autoloads zoutline-autoloads hydra-autoloads
iedit-autoloads ace-window-autoloads paredit-autoloads key-chord
key-chord-autoloads company-oddmuse company-keywords company-etags
company-gtags company-dabbrev-code company-dabbrev company-files
company-capf company-cmake company-xcode company-clang company-semantic
company-eclim company-template company-css company-nxml company-bbdb
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 diff-mode magit-core
magit-autorevert autorevert filenotify magit-process magit-margin
magit-mode magit-git magit-section magit-popup git-commit magit-utils
crm log-edit message rmc puny rfc822 mml mml-sec epa epg gnus-util rmail
rmail-loaddefs 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 with-editor async-bytecomp server
magit-autoloads magit-popup-autoloads git-commit-autoloads
with-editor-autoloads ido-hacks ido-hacks-autoloads expand-region
text-mode-expansions cc-mode-expansions the-org-mode-expansions
er-basic-expansions expand-region-core expand-region-custom
expand-region-autoloads browse-kill-ring derived
browse-kill-ring-autoloads form-feed form-feed-autoloads
page-break-lines page-break-lines-autoloads on-screen
on-screen-autoloads avy-zap-autoloads wrap-region wrap-region-autoloads
keyfreq keyfreq-autoloads stumpwm-mode stumpwm-mode-autoloads
dired-narrow delsel dired-hacks-utils dired-narrow-autoloads
dired-hacks-utils-autoloads swiper-autoloads ivy-autoloads chronos
notifications dbus chronos-autoloads evil-numbers-autoloads ace-link avy
ace-link-autoloads avy-autoloads dired-async dired-aux async
async-autoloads interleave doc-view jka-compr image-mode dired
dired-loaddefs interleave-autoloads elm-mode elm-interactive url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap elm-font-lock elm-indent elm-imenu
elm-format elm-tags elm-util let-alist f dash elm-mode-autoloads
f-autoloads dash-autoloads seclusion-mode seclusion-mode-autoloads
slime-company company pcase slime-company-autoloads company-autoloads
slime etags xref project arc-mode archive-mode hyperspec slime-autoloads
macrostep-autoloads hungry-delete hungry-delete-autoloads
go-up-autoloads herald-the-mode-line herald-the-mode-line-autoloads
underline-with-char underline-with-char-autoloads rope-read-mode
rope-read-mode-autoloads racket-mode racket-bug-report racket-collection
tq racket-logger racket-profile racket-imenu imenu racket-edit hideshow
racket-complete s shr svg xml dom browse-url racket-repl edmacro kmacro
compile ido racket-common racket-indent racket-font-lock racket-util
racket-ppss racket-keywords-and-builtins thingatpt racket-custom
sh-script smie executable rx racket-mode-autoloads s-autoloads
faceup-autoloads mmm-mode mmm-univ mmm-class mmm-region mmm-auto
mmm-vars mmm-utils mmm-compat mmm-mode-autoloads use-package diminish
bind-key use-package-autoloads diminish-autoloads bind-key-autoloads
mastodon-autoloads gited-autoloads folding-isearch folding cl warnings
straight-autoloads cl-extra straight subr-x org-protocol org-element
avl-tree generator org org-macro org-footnote org-pcomplete org-list
org-faces org-entities noutline outline easy-mmode org-version ob-sed
ob-octave ob-makefile ob-forth ob-R ob-haskell ob-maxima ob-java
ob-plantuml ob-sqlite ob-sql ob-screen ob-J ob-io ob-shell ob-clojure
ob-scheme ob-gnuplot ob-dot ob-ditaa ob-lisp ob-css ob-js ob-org
ob-ledger ob-latex ob-calc calc-store calc-trail calc-ext calc
calc-loaddefs calc-macs ob-C cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs ob-python ob-awk
ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp
ob-comint ob-core ob-eval org-compat org-macs org-loaddefs cal-menu
calendar cal-loaddefs ert help-mode pp find-func ewoc debug
.emacs-custom tramp trampver tramp-compat tramp-loaddefs ucs-normalize
shell pcomplete comint ansi-color parse-time format-spec advice
time-date winner ring timeclock paren avoid image-file icomplete time
desktop frameset autoinsert cus-start cus-load mule-util tex-site info
finder-inf package easymenu epg-config url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json 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
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 move-toolbar gtk
x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 2287798 636932)
(symbols 48 143152 73)
(miscs 40 44460 59052)
(strings 32 594479 17616)
(string-bytes 1 54059379)
(vectors 16 230711)
(vector-slots 8 4524869 241486)
(floats 8 2857 4500)
(intervals 56 85091 778)
(buffers 992 225))
Noam Postavsky
2018-04-25 01:51:16 UTC
Permalink
Post by Marco Wahl
- Have a dired with several subdirectories open.
Also, M-x load-lib RET page-ext RET
Post by Marco Wahl
- C-x C-p C-n
- The dired buffer narrows to the next subdirectory.
- The dired buffer narrows to the current subdirectory.
* lisp/textmodes/page-ext.el (next-page): Jump ahead page-delimiter if
at such before narrow. This fixes the command for dired.
I think the problem is rather that next-page is going an extra page
backwards even when COUNT was positive, so the fix should be more like
this (inline version with whitespace changes ignored, full version
attached):

--- a/lisp/textmodes/page-ext.el
+++ b/lisp/textmodes/page-ext.el
@@ -304,6 +304,7 @@ next-page
(or count (setq count 1))
(widen)
;; Cannot use forward-page because of problems at page boundaries.
+ (if (>= count 0)
(while (and (> count 0) (not (eobp)))
(if (re-search-forward page-delimiter nil t)
nil
@@ -316,7 +317,7 @@ next-page
(if (re-search-backward page-delimiter nil t)
(goto-char (match-beginning 0))
(goto-char (point-min)))
- (setq count (1+ count)))
+ (setq count (1+ count))))
(narrow-to-page)
(goto-char (point-min))
(recenter 0))
Marco Wahl
2018-04-27 11:50:08 UTC
Permalink
Post by Noam Postavsky
Post by Marco Wahl
- Have a dired with several subdirectories open.
Also, M-x load-lib RET page-ext RET
Yes, thanks.
Post by Noam Postavsky
Post by Marco Wahl
- C-x C-p C-n
- The dired buffer narrows to the next subdirectory.
- The dired buffer narrows to the current subdirectory.
* lisp/textmodes/page-ext.el (next-page): Jump ahead page-delimiter if
at such before narrow. This fixes the command for dired.
I think the problem is rather that next-page is going an extra page
backwards even when COUNT was positive, so the fix should be more like
this (inline version with whitespace changes ignored, full version
--- a/lisp/textmodes/page-ext.el
+++ b/lisp/textmodes/page-ext.el
@@ -304,6 +304,7 @@ next-page
(or count (setq count 1))
(widen)
;; Cannot use forward-page because of problems at page boundaries.
+ (if (>= count 0)
(while (and (> count 0) (not (eobp)))
(if (re-search-forward page-delimiter nil t)
nil
@@ -316,7 +317,7 @@ next-page
(if (re-search-backward page-delimiter nil t)
(goto-char (match-beginning 0))
(goto-char (point-min)))
- (setq count (1+ count)))
+ (setq count (1+ count))))
(narrow-to-page)
(goto-char (point-min))
(recenter 0))
I think this is a good idea to separate the cases clearly.

I found that with your suggestion next-page with negative argument goes
back one page too much in a dired buffer, though.

I further think that the core of the irritation is that `narrow-to-page'
does not narrow to the following page when on the start of the '\n\n'
page-separator (unlike for the usual '^^L' separator).

Starting with your fix I propose this modification of the else part:

(while (and (< count 1) (not (bobp)))
(if (re-search-backward page-delimiter nil t)
(when (= count 0)
(goto-char (match-end 0)))
(goto-char (point-min)))
(setq count (1+ count)))

This is: go to the end of the delimiter when the final page has been
reached.

Below a diff to make the suggested change perfectly clear, hopefully.

diff --git a/lisp/textmodes/page-ext.el b/lisp/textmodes/page-ext.el
index fbdae5892a..4990fde65a 100644
--- a/lisp/textmodes/page-ext.el
+++ b/lisp/textmodes/page-ext.el
@@ -304,19 +304,21 @@ next-page
(or count (setq count 1))
(widen)
;; Cannot use forward-page because of problems at page boundaries.
- (while (and (> count 0) (not (eobp)))
- (if (re-search-forward page-delimiter nil t)
- nil
- (goto-char (point-max)))
- (setq count (1- count)))
- ;; If COUNT is negative, we want to go back -COUNT + 1 page boundaries.
- ;; The first page boundary we reach is the top of the current page,
- ;; which doesn't count.
- (while (and (< count 1) (not (bobp)))
- (if (re-search-backward page-delimiter nil t)
- (goto-char (match-beginning 0))
- (goto-char (point-min)))
- (setq count (1+ count)))
+ (if (>= count 0)
+ (while (and (> count 0) (not (eobp)))
+ (if (re-search-forward page-delimiter nil t)
+ nil
+ (goto-char (point-max)))
+ (setq count (1- count)))
+ ;; If COUNT is negative, we want to go back -COUNT + 1 page boundaries.
+ ;; The first page boundary we reach is the top of the current page,
+ ;; which doesn't count.
+ (while (and (< count 1) (not (bobp)))
+ (if (re-search-backward page-delimiter nil t)
+ (when (= count 0)
+ (goto-char (match-end 0)))
+ (goto-char (point-min)))
+ (setq count (1+ count))))
(narrow-to-page)
(goto-char (point-min))
(recenter 0))
Noam Postavsky
2018-04-29 00:13:51 UTC
Permalink
Post by Marco Wahl
I found that with your suggestion next-page with negative argument goes
back one page too much in a dired buffer, though.
I further think that the core of the irritation is that `narrow-to-page'
does not narrow to the following page when on the start of the '\n\n'
page-separator (unlike for the usual '^^L' separator).
As far as I can tell, narrow-to-page still has the same problem with the
default "\n\f" separator as the "\n\n" one. It's just that the problem
is more visually obvious in the dired case. Using thingatpt seems to
work better (but this doesn't handle the COUNT argument for
narrow-to-page):

(let ((bounds (bounds-of-thing-at-point 'page)))
(narrow-to-region (car bounds) (cdr bounds)))

Though I guess it might be arguable whether the page separator should
count as part of the page or not. The above expression (and
`mark-page') treat the separator as part of the preceding page,
`narrow-to-page' seems to exclude the separator from the page.
Post by Marco Wahl
(while (and (< count 1) (not (bobp)))
(if (re-search-backward page-delimiter nil t)
(when (= count 0)
(goto-char (match-end 0)))
(goto-char (point-min)))
(setq count (1+ count)))
This is: go to the end of the delimiter when the final page has been
reached.
Yeah, that works.
Marco Wahl
2018-04-29 20:23:13 UTC
Permalink
Post by Noam Postavsky
Post by Marco Wahl
I found that with your suggestion next-page with negative argument goes
back one page too much in a dired buffer, though.
I further think that the core of the irritation is that `narrow-to-page'
does not narrow to the following page when on the start of the '\n\n'
page-separator (unlike for the usual '^^L' separator).
As far as I can tell, narrow-to-page still has the same problem with the
default "\n\f" separator as the "\n\n" one. It's just that the problem
is more visually obvious in the dired case. Using thingatpt seems to
work better (but this doesn't handle the COUNT argument for
(let ((bounds (bounds-of-thing-at-point 'page)))
(narrow-to-region (car bounds) (cdr bounds)))
Though I guess it might be arguable whether the page separator should
count as part of the page or not. The above expression (and
`mark-page') treat the separator as part of the preceding page,
`narrow-to-page' seems to exclude the separator from the page.
I fully agree that one might like the separator to be part of the page.
This might help e.g. for killing and yanking.

Actually I tend towards excluding any separator when narrowing to a
page. I see a document as sequence like

<content><separator><content><separator>...<separator><content>

and the content is all I'd expect when narrowing to a page.
Post by Noam Postavsky
Post by Marco Wahl
(while (and (< count 1) (not (bobp)))
(if (re-search-backward page-delimiter nil t)
(when (= count 0)
(goto-char (match-end 0)))
(goto-char (point-min)))
(setq count (1+ count)))
This is: go to the end of the delimiter when the final page has been
reached.
Yeah, that works.
Cool.

Best regards!
Noam Postavsky
2018-05-03 00:36:33 UTC
Permalink
tags 31061 fixed
close 31061 27.1
quit
Post by Marco Wahl
Post by Noam Postavsky
Yeah, that works.
Cool.
Best regards!
Okay, pushed to master.

[1: 8a6521260d]: 2018-05-02 20:35:20 -0400
Fix next-page for dired (Bug#31061)
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=8a6521260dc650b4b713ea8bc71348cbe730f6e4
Loading...