Package: emacs;
Reported by: Rah Guzar <rahguzar <at> zohomail.eu>
Date: Fri, 30 Dec 2022 11:34:01 UTC
Severity: normal
Found in version 29.0.60
To reply to this bug, email your comments to 60426 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#60426
; Package emacs
.
(Fri, 30 Dec 2022 11:34:02 GMT) Full text and rfc822 format available.Rah Guzar <rahguzar <at> zohomail.eu>
:bug-gnu-emacs <at> gnu.org
.
(Fri, 30 Dec 2022 11:34:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Rah Guzar <rahguzar <at> zohomail.eu> To: bug-gnu-emacs <at> gnu.org Subject: 29.0.60; Binding to outline-minor-mode-cycle-map correctly is unintuitive and hard Date: Fri, 30 Dec 2022 12:12:15 +0100
Dear Emacs maintainers, I have been using `outline-minor-mode` with `outline-minor-mode-cycle` set to true. But to make it work I needed to bind `outline-cycle` to `<tab>` in addition to `TAB` on `outline-minor-mode-cycle-map`. By default it is only bound to `TAB`. This worked great in Emacs 28 but when I moved to Emacs 29 this resulted in `outline-cycle` bound to `<tab>` everywhere and not just on outline headings. Looking around I found that it was because the implementation had changed, it no longer used `outline-minor-mode-cycle-map` as the value of keymap text property on headings but rather used an extended menu item. After looking through the source I finally figured that the way to achieve what I wanted was to bind `(menu-item "" outline-cycle :filter ,(lambda (cmd) (when (outline-on-heading-p) cmd)))` to `<tab>`. I think this is very confusing and is going to lead to some head scratching for people who might have other keys bound on `outline-minor-mode-cycle-map` since that map is now the parent of `outline-minor-mode-map`. I think with the current approach it will be better to entirely remove `outline-minor-mode-cycle-map` and bind the extended menu items directly on `outline-minor-mode-map` (the bindings are actually already on the `outline-minor-mode-map`). Another way can be to not make `outline-minor-mode-cycle-map` make a parent of `outline-minor-mode-map`, obsolete it and add to its docstring a description of how to achieve the same effect using extended menu items. In GNU Emacs 29.0.60 (build 1, x86_64-suse-linux-gnu, GTK+ Version 3.24.35, cairo version 1.17.6) of 2022-12-28 built on cloud106 System Description: openSUSE Tumbleweed Configured using: 'configure --host=x86_64-suse-linux-gnu --build=x86_64-suse-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-pgtk --with-native-compilation=aot --with-cairo --with-libotf --with-jpeg --with-tiff --with-gif --with-png --with-rsvg --with-xft --with-xml2 --with-dbus --with-sound --with-json --with-mailutils --with-gnutls --with-tree-sitter --enable-locallisppath=/usr/share/emacs/29.0.60/site-lisp:/usr/share/emacs/site-lisp 'CFLAGS=-O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto' LDFLAGS=-Wl,-O2' Configured features: CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER XIM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: mu4e-headers Minor modes in effect: global-anzu-mode: t anzu-mode: t global-evil-surround-mode: t evil-surround-mode: t eros-mode: t delete-selection-mode: t projectile-mode: t recentf-mode: t save-place-mode: t global-so-long-mode: t which-key-mode: t savehist-mode: t better-jumper-mode: t better-jumper-local-mode: t global-company-mode: t company-mode: t vertico-mode: t all-the-icons-completion-mode: t marginalia-mode: t evil-goggles-mode: t evil-escape-mode: t evil-snipe-override-mode: t evil-snipe-mode: t server-mode: t gcmh-mode: t winner-mode: t smartparens-global-mode: t ws-butler-global-mode: t global-undo-fu-session-mode: t undo-fu-mode: t persp-mode: t mu4e-search-minor-mode: t global-hl-line-mode: t hl-line-mode: t mu4e-update-minor-mode: t mu4e-context-minor-mode: t dirvish-override-dired-mode: t solaire-global-mode: t solaire-mode: t shell-dirtrack-mode: t evil-mode: t evil-local-mode: t windmove-mode: t +popup-mode: t +modeline-global-mode: t +modeline-mode: t override-global-mode: t general-override-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t window-divider-mode: t buffer-read-only: t size-indication-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t abbrev-mode: t Load-path shadows: /home/azeem/.emacs.d/.local/straight/build-29.0.60/transient/transient hides /usr/share/emacs/29.0.60/lisp/transient /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-html hides /usr/share/emacs/29.0.60/lisp/org/ox-html /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org hides /usr/share/emacs/29.0.60/lisp/org/org /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-version hides /usr/share/emacs/29.0.60/lisp/org/org-version /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-persist hides /usr/share/emacs/29.0.60/lisp/org/org-persist /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-loaddefs hides /usr/share/emacs/29.0.60/lisp/org/org-loaddefs /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-fold-core hides /usr/share/emacs/29.0.60/lisp/org/org-fold-core /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-faces hides /usr/share/emacs/29.0.60/lisp/org/org-faces /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-element hides /usr/share/emacs/29.0.60/lisp/org/org-element /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/oc-basic hides /usr/share/emacs/29.0.60/lisp/org/oc-basic /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-tangle hides /usr/share/emacs/29.0.60/lisp/org/ob-tangle /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-core hides /usr/share/emacs/29.0.60/lisp/org/ob-core /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox hides /usr/share/emacs/29.0.60/lisp/org/ox /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-texinfo hides /usr/share/emacs/29.0.60/lisp/org/ox-texinfo /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-publish hides /usr/share/emacs/29.0.60/lisp/org/ox-publish /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-org hides /usr/share/emacs/29.0.60/lisp/org/ox-org /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-odt hides /usr/share/emacs/29.0.60/lisp/org/ox-odt /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-md hides /usr/share/emacs/29.0.60/lisp/org/ox-md /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-man hides /usr/share/emacs/29.0.60/lisp/org/ox-man /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-latex hides /usr/share/emacs/29.0.60/lisp/org/ox-latex /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-koma-letter hides /usr/share/emacs/29.0.60/lisp/org/ox-koma-letter /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-icalendar hides /usr/share/emacs/29.0.60/lisp/org/ox-icalendar /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-beamer hides /usr/share/emacs/29.0.60/lisp/org/ox-beamer /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ox-ascii hides /usr/share/emacs/29.0.60/lisp/org/ox-ascii /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-timer hides /usr/share/emacs/29.0.60/lisp/org/org-timer /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-tempo hides /usr/share/emacs/29.0.60/lisp/org/org-tempo /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-table hides /usr/share/emacs/29.0.60/lisp/org/org-table /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-src hides /usr/share/emacs/29.0.60/lisp/org/org-src /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-refile hides /usr/share/emacs/29.0.60/lisp/org/org-refile /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-protocol hides /usr/share/emacs/29.0.60/lisp/org/org-protocol /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-plot hides /usr/share/emacs/29.0.60/lisp/org/org-plot /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-pcomplete hides /usr/share/emacs/29.0.60/lisp/org/org-pcomplete /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-num hides /usr/share/emacs/29.0.60/lisp/org/org-num /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-mouse hides /usr/share/emacs/29.0.60/lisp/org/org-mouse /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-mobile hides /usr/share/emacs/29.0.60/lisp/org/org-mobile /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-macs hides /usr/share/emacs/29.0.60/lisp/org/org-macs /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-macro hides /usr/share/emacs/29.0.60/lisp/org/org-macro /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-list hides /usr/share/emacs/29.0.60/lisp/org/org-list /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-lint hides /usr/share/emacs/29.0.60/lisp/org/org-lint /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-keys hides /usr/share/emacs/29.0.60/lisp/org/org-keys /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-inlinetask hides /usr/share/emacs/29.0.60/lisp/org/org-inlinetask /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-indent hides /usr/share/emacs/29.0.60/lisp/org/org-indent /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-id hides /usr/share/emacs/29.0.60/lisp/org/org-id /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-habit hides /usr/share/emacs/29.0.60/lisp/org/org-habit /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-goto hides /usr/share/emacs/29.0.60/lisp/org/org-goto /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-footnote hides /usr/share/emacs/29.0.60/lisp/org/org-footnote /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-fold hides /usr/share/emacs/29.0.60/lisp/org/org-fold /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-feed hides /usr/share/emacs/29.0.60/lisp/org/org-feed /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-entities hides /usr/share/emacs/29.0.60/lisp/org/org-entities /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-duration hides /usr/share/emacs/29.0.60/lisp/org/org-duration /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-datetree hides /usr/share/emacs/29.0.60/lisp/org/org-datetree /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-cycle hides /usr/share/emacs/29.0.60/lisp/org/org-cycle /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-ctags hides /usr/share/emacs/29.0.60/lisp/org/org-ctags /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-crypt hides /usr/share/emacs/29.0.60/lisp/org/org-crypt /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-compat hides /usr/share/emacs/29.0.60/lisp/org/org-compat /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-colview hides /usr/share/emacs/29.0.60/lisp/org/org-colview /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-clock hides /usr/share/emacs/29.0.60/lisp/org/org-clock /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-capture hides /usr/share/emacs/29.0.60/lisp/org/org-capture /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-attach hides /usr/share/emacs/29.0.60/lisp/org/org-attach /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-attach-git hides /usr/share/emacs/29.0.60/lisp/org/org-attach-git /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-archive hides /usr/share/emacs/29.0.60/lisp/org/org-archive /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/org-agenda hides /usr/share/emacs/29.0.60/lisp/org/org-agenda /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol hides /usr/share/emacs/29.0.60/lisp/org/ol /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-w3m hides /usr/share/emacs/29.0.60/lisp/org/ol-w3m /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-rmail hides /usr/share/emacs/29.0.60/lisp/org/ol-rmail /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-mhe hides /usr/share/emacs/29.0.60/lisp/org/ol-mhe /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-man hides /usr/share/emacs/29.0.60/lisp/org/ol-man /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-irc hides /usr/share/emacs/29.0.60/lisp/org/ol-irc /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-info hides /usr/share/emacs/29.0.60/lisp/org/ol-info /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-gnus hides /usr/share/emacs/29.0.60/lisp/org/ol-gnus /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-eww hides /usr/share/emacs/29.0.60/lisp/org/ol-eww /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-eshell hides /usr/share/emacs/29.0.60/lisp/org/ol-eshell /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-doi hides /usr/share/emacs/29.0.60/lisp/org/ol-doi /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-docview hides /usr/share/emacs/29.0.60/lisp/org/ol-docview /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-bibtex hides /usr/share/emacs/29.0.60/lisp/org/ol-bibtex /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ol-bbdb hides /usr/share/emacs/29.0.60/lisp/org/ol-bbdb /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/oc hides /usr/share/emacs/29.0.60/lisp/org/oc /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/oc-natbib hides /usr/share/emacs/29.0.60/lisp/org/oc-natbib /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/oc-csl hides /usr/share/emacs/29.0.60/lisp/org/oc-csl /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/oc-bibtex hides /usr/share/emacs/29.0.60/lisp/org/oc-bibtex /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/oc-biblatex hides /usr/share/emacs/29.0.60/lisp/org/oc-biblatex /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob hides /usr/share/emacs/29.0.60/lisp/org/ob /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-table hides /usr/share/emacs/29.0.60/lisp/org/ob-table /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-sqlite hides /usr/share/emacs/29.0.60/lisp/org/ob-sqlite /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-sql hides /usr/share/emacs/29.0.60/lisp/org/ob-sql /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-shell hides /usr/share/emacs/29.0.60/lisp/org/ob-shell /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-sed hides /usr/share/emacs/29.0.60/lisp/org/ob-sed /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-screen hides /usr/share/emacs/29.0.60/lisp/org/ob-screen /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-scheme hides /usr/share/emacs/29.0.60/lisp/org/ob-scheme /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-sass hides /usr/share/emacs/29.0.60/lisp/org/ob-sass /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-ruby hides /usr/share/emacs/29.0.60/lisp/org/ob-ruby /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-ref hides /usr/share/emacs/29.0.60/lisp/org/ob-ref /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-python hides /usr/share/emacs/29.0.60/lisp/org/ob-python /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-processing hides /usr/share/emacs/29.0.60/lisp/org/ob-processing /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-plantuml hides /usr/share/emacs/29.0.60/lisp/org/ob-plantuml /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-perl hides /usr/share/emacs/29.0.60/lisp/org/ob-perl /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-org hides /usr/share/emacs/29.0.60/lisp/org/ob-org /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-octave hides /usr/share/emacs/29.0.60/lisp/org/ob-octave /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-ocaml hides /usr/share/emacs/29.0.60/lisp/org/ob-ocaml /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-maxima hides /usr/share/emacs/29.0.60/lisp/org/ob-maxima /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-matlab hides /usr/share/emacs/29.0.60/lisp/org/ob-matlab /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-makefile hides /usr/share/emacs/29.0.60/lisp/org/ob-makefile /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-lua hides /usr/share/emacs/29.0.60/lisp/org/ob-lua /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-lob hides /usr/share/emacs/29.0.60/lisp/org/ob-lob /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-lisp hides /usr/share/emacs/29.0.60/lisp/org/ob-lisp /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-lilypond hides /usr/share/emacs/29.0.60/lisp/org/ob-lilypond /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-latex hides /usr/share/emacs/29.0.60/lisp/org/ob-latex /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-julia hides /usr/share/emacs/29.0.60/lisp/org/ob-julia /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-js hides /usr/share/emacs/29.0.60/lisp/org/ob-js /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-java hides /usr/share/emacs/29.0.60/lisp/org/ob-java /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-haskell hides /usr/share/emacs/29.0.60/lisp/org/ob-haskell /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-groovy hides /usr/share/emacs/29.0.60/lisp/org/ob-groovy /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-gnuplot hides /usr/share/emacs/29.0.60/lisp/org/ob-gnuplot /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-fortran hides /usr/share/emacs/29.0.60/lisp/org/ob-fortran /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-forth hides /usr/share/emacs/29.0.60/lisp/org/ob-forth /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-exp hides /usr/share/emacs/29.0.60/lisp/org/ob-exp /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-eval hides /usr/share/emacs/29.0.60/lisp/org/ob-eval /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-eshell hides /usr/share/emacs/29.0.60/lisp/org/ob-eshell /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-emacs-lisp hides /usr/share/emacs/29.0.60/lisp/org/ob-emacs-lisp /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-dot hides /usr/share/emacs/29.0.60/lisp/org/ob-dot /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-ditaa hides /usr/share/emacs/29.0.60/lisp/org/ob-ditaa /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-css hides /usr/share/emacs/29.0.60/lisp/org/ob-css /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-comint hides /usr/share/emacs/29.0.60/lisp/org/ob-comint /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-clojure hides /usr/share/emacs/29.0.60/lisp/org/ob-clojure /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-calc hides /usr/share/emacs/29.0.60/lisp/org/ob-calc /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-awk hides /usr/share/emacs/29.0.60/lisp/org/ob-awk /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-R hides /usr/share/emacs/29.0.60/lisp/org/ob-R /home/azeem/.emacs.d/.local/straight/build-29.0.60/org/ob-C hides /usr/share/emacs/29.0.60/lisp/org/ob-C Features: (evil-collection-embark embark-org embark-consult embark ffap evil-collection-xref xref evil-anzu anzu evil-collection-vc-git vc-git evil-collection-diff-mode diff-mode vc-dispatcher vc-svn project evil-collection-consult consult-vertico consult compat-28 elisp-demos evil-collection-indent jka-compr bicycle hideshow outline-minor-faces evil-embrace evil-surround embrace expand-region text-mode-expansions the-org-mode-expansions er-basic-expansions expand-region-core expand-region-custom eros highlight-quoted rainbow-delimiters highlight-numbers parent-mode hl-todo evil-collection-elisp-mode elisp-mode vertico-directory evil-collection-helpful helpful evil-collection-imenu imenu trace evil-collection-edebug edebug evil-collection-debug debug backtrace info-look evil-collection-info info help-fns radix-tree evil-collection-elisp-refs elisp-refs evil-textobj-anyblock company-ispell company-yasnippet company-dabbrev hide-mode-line evil-collection-help shadow disp-table whitespace delsel display-line-numbers adaptive-wrap spell-fu ispell auto-minor-mode projectile lisp-mnt evil-collection-grep grep ibuffer-vc ibuf-ext evil-collection-ibuffer ibuffer ibuffer-loaddefs recentf tree-widget saveplace evil-collection-so-long so-long emacsbug shr-color cursor-sensor vertico-repeat sort gnus-cite smiley qp mm-archive mail-extr textsec uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check evil-collection-which-key which-key savehist better-jumper company-capf company evil-collection-vertico vertico orderless all-the-icons-completion marginalia evil-goggles pulse color evil-easymotion evil-escape evil-snipe server autorevert filenotify gcmh winner smartparens-config smartparens-rst smartparens-markdown smartparens-text smartparens ws-butler undo-fu-session undo-fu persp-mode evil-collection-mu4e mu4e mu4e-org oc-natbib oc-csl citeproc citeproc-itemgetters citeproc-biblatex citeproc-bibtex parsebib ol-bibtex evil-collection-org smartparens-org org-yt org-element org-persist xdg org-id org-refile avl-tree generator org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete org-list org-faces org-entities noutline outline ob-emacs-lisp org-table ol org-keys citeproc-cite citeproc-subbibs citeproc-sort citeproc-name citeproc-formatters citeproc-number rst evil-collection-compile compile citeproc-proc citeproc-disamb citeproc-itemdata citeproc-generic-elements citeproc-macro citeproc-choose citeproc-date citeproc-context citeproc-prange citeproc-style citeproc-locale citeproc-term f f-shortdoc citeproc-rt citeproc-lib citeproc-s s queue dash bibtex oc-biblatex oc find-func mu4e-main mu4e-view gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum gnus-group gnus-undo gnus-start gnus-dbus dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time iso8601 gnus-spec gnus-int gnus-range gnus-win evil-collection-gnus gnus nnheader range evil-collection-calendar cal-menu calendar cal-loaddefs mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message shr pixel-fill kinsoku url-file svg xml dom browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util url-parse auth-source json map url-vars flow-fill mule-util hl-line mu4e-contacts mu4e-update mu4e-folders mu4e-server mu4e-context mu4e-vars mu4e-helpers mu4e-config evil-collection-bookmark bookmark ido message sendmail mailcap yank-media puny dirvish transient eieio eieio-core compat evil-collection-dired dired dired-loaddefs rfc822 mml mml-sec password-cache evil-collection-epa evil-collection-custom cus-edit cus-start cus-load wid-edit evil-collection-comint evil-collection annalist epa epg rfc6068 epg-config gnus-util text-property-search time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader dtrt-indent doom-themes-ext-org solaire-mode face-remap doom-earl-grey-theme doom-themes doom-themes-base html2text ob-core org-cycle org-fold org-fold-core org-compat ob-eval org-version org-macs format-spec ibuf-macs evil evil-integration evil-maps evil-commands reveal flyspell evil-jumps evil-command-window evil-search shell pcomplete comint ansi-osc ansi-color evil-types evil-macros evil-repeat evil-states evil-core comp comp-cstr warnings icons byte-opt advice evil-common windmove calc calc-loaddefs calc-macs thingatpt rect evil-digraphs evil-vars ring all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons let-alist derived edmacro kmacro use-package-bind-key bind-key rx doom-editor doom-projects doom-ui easy-mmode doom-keybinds pp cl-extra help-mode use-package-core bytecomp byte-compile general tex-site doom-start doom-modules cl-seq doom doom-lib cl-macs cl-loaddefs cl-lib pcase gv jansson dynamic-modules subr-x rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/pgtk-win pgtk-win term/common-win pgtk-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 dynamic-setting system-font-setting font-render-setting cairo gtk pgtk multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 965790 352457) (symbols 48 47806 68) (strings 32 314775 20025) (string-bytes 1 6948100) (vectors 16 109484) (vector-slots 8 3372525 140268) (floats 8 1584 1574) (intervals 56 6655 1972) (buffers 984 27))
bug-gnu-emacs <at> gnu.org
:bug#60426
; Package emacs
.
(Thu, 05 Jan 2023 17:57:03 GMT) Full text and rfc822 format available.Message #8 received at 60426 <at> debbugs.gnu.org (full text, mbox):
From: Juri Linkov <juri <at> linkov.net> To: Rah Guzar <rahguzar <at> zohomail.eu> Cc: 60426 <at> debbugs.gnu.org Subject: Re: bug#60426: 29.0.60; Binding to outline-minor-mode-cycle-map correctly is unintuitive and hard Date: Thu, 05 Jan 2023 19:45:37 +0200
> Looking around I found that it was because the implementation had > changed, it no longer used `outline-minor-mode-cycle-map` as > the value of keymap text property on headings but rather used an > extended menu item. After looking through the source I finally > figured that the way to achieve what I wanted was to bind > > `(menu-item "" outline-cycle :filter ,(lambda (cmd) (when (outline-on-heading-p) cmd)))` > > to `<tab>`. > > I think this is very confusing and is going to lead to some head > scratching for people who might have other keys bound on > `outline-minor-mode-cycle-map` since that map is now the parent > of `outline-minor-mode-map`. I think with the current approach it > will be better to entirely remove `outline-minor-mode-cycle-map` > and bind the extended menu items directly on `outline-minor-mode-map` > (the bindings are actually already on the `outline-minor-mode-map`). > Another way can be to not make `outline-minor-mode-cycle-map` make > a parent of `outline-minor-mode-map`, obsolete it and add to its > docstring a description of how to achieve the same effect using > extended menu items. We expected this change to be backwards-compatible assuming that users would define keys in outline-minor-mode-cycle-map using the same helper as is seen in the default definition: (outline-minor-mode-cycle--bind map (kbd "TAB") #'outline-cycle) Maybe this requirement should be documented in the docstring and mentioned in NEWS?
bug-gnu-emacs <at> gnu.org
:bug#60426
; Package emacs
.
(Thu, 05 Jan 2023 19:05:02 GMT) Full text and rfc822 format available.Message #11 received at 60426 <at> debbugs.gnu.org (full text, mbox):
From: Rah Guzar <rahguzar <at> zohomail.eu> To: Juri Linkov <juri <at> linkov.net> Cc: Rah Guzar <rahguzar <at> zohomail.eu>, 60426 <at> debbugs.gnu.org Subject: Re: bug#60426: 29.0.60; Binding to outline-minor-mode-cycle-map correctly is unintuitive and hard Date: Thu, 05 Jan 2023 19:28:38 +0100
Juri Linkov <juri <at> linkov.net> writes: > We expected this change to be backwards-compatible assuming > that users would define keys in outline-minor-mode-cycle-map > using the same helper as is seen in the default definition: > > (outline-minor-mode-cycle--bind map (kbd "TAB") #'outline-cycle) > > Maybe this requirement should be documented in the docstring > and mentioned in NEWS? I think this is a good idea since people who have already keys bound on outline-minor-mode-cycle-map are likely to be as surprised as I was. But I also think that it is more important to mention this in the docstring for outline-minor-mode-cycle-map. Since its current docstring "Keymap used by outline-minor-mode-cycle." is misleading in my opinion, especially since any key there is going to be active if outline-minor-mode is on, regardless of the value of `outline-minor-mode-cycle`. Also I was confused by the two hyphens in the name outline-minor-mode-cycle--bind and thought that it was a private function even though in retrospect they are in the wrong place for it to be private. By the way I also think that the MAP argument outline-minor-mode-cycle--bind of should be optional. Thanks!
bug-gnu-emacs <at> gnu.org
:bug#60426
; Package emacs
.
(Tue, 10 Jan 2023 19:24:01 GMT) Full text and rfc822 format available.Message #14 received at 60426 <at> debbugs.gnu.org (full text, mbox):
From: Juri Linkov <juri <at> linkov.net> To: Rah Guzar <rahguzar <at> zohomail.eu> Cc: 60426 <at> debbugs.gnu.org Subject: Re: bug#60426: 29.0.60; Binding to outline-minor-mode-cycle-map correctly is unintuitive and hard Date: Tue, 10 Jan 2023 20:59:55 +0200
[Message part 1 (text/plain, inline)]
>> (outline-minor-mode-cycle--bind map (kbd "TAB") #'outline-cycle) >> >> Maybe this requirement should be documented in the docstring >> and mentioned in NEWS? > > I think this is a good idea since people who have already keys bound > on outline-minor-mode-cycle-map are likely to be as surprised as I was. > > But I also think that it is more important to mention this in the > docstring for outline-minor-mode-cycle-map. Since its current > docstring "Keymap used by outline-minor-mode-cycle." is misleading in > my opinion, especially since any key there is going to be active > if outline-minor-mode is on, regardless of the value of > `outline-minor-mode-cycle`. Thanks for suggestions. The following patch addresses all the points that have been raised, except obsoleting `outline-minor-mode-cycle-map`. It's more convenient to bind keys in this map since `outline-minor-mode-map` is not explicitly defined unlike `outline-mode-map`. > Also I was confused by the two hyphens in the name > outline-minor-mode-cycle--bind and thought that it was a private > function even though in retrospect they are in the wrong place > for it to be private. Two hyphens in the name rather indicated that the implementation is subject to change without notice - an assumption that is true for internal functions. So now I'm not sure if adding an alias without two hyphens is worth to do.
[outline-minor-mode-cycle--bind.patch (text/x-diff, inline)]
diff --git a/etc/NEWS b/etc/NEWS index a28f5c9a65a..6ae79e6cebc 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -350,6 +350,15 @@ next button, even if the mode has bound it to something else. This also means that 'TAB' on a button in an 'outline-minor-mode' heading will move point instead of collapsing the outline. +--- +** 'outline-minor-mode-cycle-map' is now parent of 'outline-minor-mode'. +Instead of adding font-lock text property 'keymap' with +'outline-minor-mode-cycle' on outline headings in 'outline-minor-mode', +the keymap 'outline-minor-mode-cycle' is now active in the whole buffer. +But keybindings in 'outline-minor-mode-cycle' are still take effect +only on outline headings because they are bound with the help of +'outline-minor-mode-cycle--bind' that checks if point is on a heading. + --- ** 'Info-default-directory-list' is no longer populated at Emacs startup. If you have code in your init file that removes directories from diff --git a/lisp/outline.el b/lisp/outline.el index 91f6040687b..26e41735a01 100644 --- a/lisp/outline.el +++ b/lisp/outline.el @@ -210,7 +210,12 @@ outline-minor-mode-cycle-filter (defvar outline-minor-mode-cycle) (defun outline-minor-mode-cycle--bind (map key binding &optional filter) - (define-key map key + "Define KEY as BINDING in MAP using FILTER. +The key takes effect only on the following conditions: +`outline-minor-mode-cycle' is non-nil, point is located on the heading line, +FILTER or `outline-minor-mode-cycle-filter' is nil or returns non-nil. +The argument MAP is optional and defaults to `outline-minor-mode-cycle-map'." + (define-key (or map outline-minor-mode-cycle-map) key `(menu-item "" ,binding ;; Filter out specific positions on the heading. @@ -227,8 +232,16 @@ outline-minor-mode-cycle-map (let ((map (make-sparse-keymap))) (outline-minor-mode-cycle--bind map (kbd "TAB") #'outline-cycle) (outline-minor-mode-cycle--bind map (kbd "<backtab>") #'outline-cycle-buffer) + (keymap-set map "<left-margin> <mouse-1>" 'outline-cycle) + (keymap-set map "<right-margin> <mouse-1>" 'outline-cycle) + (keymap-set map "<left-margin> S-<mouse-1>" 'outline-cycle-buffer) + (keymap-set map "<right-margin> S-<mouse-1>" 'outline-cycle-buffer) map) - "Keymap used by `outline-minor-mode-cycle'.") + "Keymap used as a parent of the `outline-minor-mode' keymap. +It contains key bindings that can be used to cycle visibility. +The recommended way to bind keys is with `outline-minor-mode-cycle--bind' +when the key should be enabled only when `outline-minor-mode-cycle' is +non-nil and point is located on the heading line.") (defvar outline-mode-map (let ((map (make-sparse-keymap))) @@ -518,10 +532,6 @@ outline-minor-mode :keymap (define-keymap :parent outline-minor-mode-cycle-map "<menu-bar>" outline-minor-mode-menu-bar-map - "<left-margin> <mouse-1>" 'outline-cycle - "<right-margin> <mouse-1>" 'outline-cycle - "<left-margin> S-<mouse-1>" 'outline-cycle-buffer - "<right-margin> S-<mouse-1>" 'outline-cycle-buffer (key-description outline-minor-mode-prefix) outline-mode-prefix-map) (if outline-minor-mode (progn
bug-gnu-emacs <at> gnu.org
:bug#60426
; Package emacs
.
(Wed, 11 Jan 2023 16:39:02 GMT) Full text and rfc822 format available.Message #17 received at 60426 <at> debbugs.gnu.org (full text, mbox):
From: Rah Guzar <rahguzar <at> zohomail.eu> To: Juri Linkov <juri <at> linkov.net> Cc: 60426 <at> debbugs.gnu.org Subject: Re: bug#60426: 29.0.60; Binding to outline-minor-mode-cycle-map correctly is unintuitive and hard Date: Wed, 11 Jan 2023 17:29:22 +0100
Thanks a lot! The patch look good to me. Minor quibbles: 1. I think in the NEWS entry, "font-lock text property 'keymap'" should probably just be "text property 'keymap'" i.e. why mention font-lock? 2. Since the implementation of `outline-minor-mode-cycle--bind` can change, it is better to change the order of arguments and make `map` an actual third argument. It is awkward to pass `nil` as the first argument and I think that way the actual map key is bound to can be treated as an implementation detail with `outline-minor-mode-cycle--bind` the official way of binding keys on headings. Thanks again! Juri Linkov <juri <at> linkov.net> writes: >>> (outline-minor-mode-cycle--bind map (kbd "TAB") #'outline-cycle) >>> >>> Maybe this requirement should be documented in the docstring >>> and mentioned in NEWS? >> >> I think this is a good idea since people who have already keys bound >> on outline-minor-mode-cycle-map are likely to be as surprised as I was. >> >> But I also think that it is more important to mention this in the >> docstring for outline-minor-mode-cycle-map. Since its current >> docstring "Keymap used by outline-minor-mode-cycle." is misleading in >> my opinion, especially since any key there is going to be active >> if outline-minor-mode is on, regardless of the value of >> `outline-minor-mode-cycle`. > > Thanks for suggestions. The following patch addresses all the points > that have been raised, except obsoleting `outline-minor-mode-cycle-map`. > It's more convenient to bind keys in this map since `outline-minor-mode-map` > is not explicitly defined unlike `outline-mode-map`. > >> Also I was confused by the two hyphens in the name >> outline-minor-mode-cycle--bind and thought that it was a private >> function even though in retrospect they are in the wrong place >> for it to be private. > > Two hyphens in the name rather indicated that the implementation > is subject to change without notice - an assumption that is true > for internal functions. So now I'm not sure if adding an alias > without two hyphens is worth to do. > > [2. text/x-diff; outline-minor-mode-cycle--bind.patch] > diff --git a/etc/NEWS b/etc/NEWS > index a28f5c9a65a..6ae79e6cebc 100644 > --- a/etc/NEWS > +++ b/etc/NEWS > @@ -350,6 +350,15 @@ next button, even if the mode has bound it to something else. This > also means that 'TAB' on a button in an 'outline-minor-mode' heading > will move point instead of collapsing the outline. > > +--- > +** 'outline-minor-mode-cycle-map' is now parent of 'outline-minor-mode'. > +Instead of adding font-lock text property 'keymap' with > +'outline-minor-mode-cycle' on outline headings in 'outline-minor-mode', > +the keymap 'outline-minor-mode-cycle' is now active in the whole buffer. > +But keybindings in 'outline-minor-mode-cycle' are still take effect > +only on outline headings because they are bound with the help of > +'outline-minor-mode-cycle--bind' that checks if point is on a heading. > + > --- > ** 'Info-default-directory-list' is no longer populated at Emacs startup. > If you have code in your init file that removes directories from > diff --git a/lisp/outline.el b/lisp/outline.el > index 91f6040687b..26e41735a01 100644 > --- a/lisp/outline.el > +++ b/lisp/outline.el > @@ -210,7 +210,12 @@ outline-minor-mode-cycle-filter > > (defvar outline-minor-mode-cycle) > (defun outline-minor-mode-cycle--bind (map key binding &optional filter) > - (define-key map key > + "Define KEY as BINDING in MAP using FILTER. > +The key takes effect only on the following conditions: > +`outline-minor-mode-cycle' is non-nil, point is located on the heading line, > +FILTER or `outline-minor-mode-cycle-filter' is nil or returns non-nil. > +The argument MAP is optional and defaults to `outline-minor-mode-cycle-map'." > + (define-key (or map outline-minor-mode-cycle-map) key > `(menu-item > "" ,binding > ;; Filter out specific positions on the heading. > @@ -227,8 +232,16 @@ outline-minor-mode-cycle-map > (let ((map (make-sparse-keymap))) > (outline-minor-mode-cycle--bind map (kbd "TAB") #'outline-cycle) > (outline-minor-mode-cycle--bind map (kbd "<backtab>") #'outline-cycle-buffer) > + (keymap-set map "<left-margin> <mouse-1>" 'outline-cycle) > + (keymap-set map "<right-margin> <mouse-1>" 'outline-cycle) > + (keymap-set map "<left-margin> S-<mouse-1>" 'outline-cycle-buffer) > + (keymap-set map "<right-margin> S-<mouse-1>" 'outline-cycle-buffer) > map) > - "Keymap used by `outline-minor-mode-cycle'.") > + "Keymap used as a parent of the `outline-minor-mode' keymap. > +It contains key bindings that can be used to cycle visibility. > +The recommended way to bind keys is with `outline-minor-mode-cycle--bind' > +when the key should be enabled only when `outline-minor-mode-cycle' is > +non-nil and point is located on the heading line.") > > (defvar outline-mode-map > (let ((map (make-sparse-keymap))) > @@ -518,10 +532,6 @@ outline-minor-mode > :keymap (define-keymap > :parent outline-minor-mode-cycle-map > "<menu-bar>" outline-minor-mode-menu-bar-map > - "<left-margin> <mouse-1>" 'outline-cycle > - "<right-margin> <mouse-1>" 'outline-cycle > - "<left-margin> S-<mouse-1>" 'outline-cycle-buffer > - "<right-margin> S-<mouse-1>" 'outline-cycle-buffer > (key-description outline-minor-mode-prefix) outline-mode-prefix-map) > (if outline-minor-mode > (progn
bug-gnu-emacs <at> gnu.org
:bug#60426
; Package emacs
.
(Wed, 11 Jan 2023 19:40:01 GMT) Full text and rfc822 format available.Message #20 received at 60426 <at> debbugs.gnu.org (full text, mbox):
From: Juri Linkov <juri <at> linkov.net> To: Rah Guzar <rahguzar <at> zohomail.eu> Cc: 60426 <at> debbugs.gnu.org Subject: Re: bug#60426: 29.0.60; Binding to outline-minor-mode-cycle-map correctly is unintuitive and hard Date: Wed, 11 Jan 2023 21:38:05 +0200
> 1. I think in the NEWS entry, "font-lock text property 'keymap'" should > probably just be "text property 'keymap'" i.e. why mention font-lock? Thanks, now pushed to the emacs-29 branch with these corrections. > 2. Since the implementation of `outline-minor-mode-cycle--bind` can change, > it is better to change the order of arguments and make `map` an actual > third argument. It is awkward to pass `nil` as the first argument and I > think that way the actual map key is bound to can be treated as an > implementation detail with `outline-minor-mode-cycle--bind` the official > way of binding keys on headings. Even though it's like an "internal" function, I still hesitate to reorder its arguments to not break user configs. I'd rather add a new function without two hyphens as the official way to use it in personal customization: (defun outline-minor-mode-cycle-bind (key binding &optional filter map) (outline-minor-mode-cycle--bind map key binding &optional filter) and declare `outline-minor-mode-cycle--bind` obsolete.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.