* etc/NEWS: Mention incompatible changes in 'outline-minor-mode-cycle-map'.

* lisp/outline.el (outline-minor-mode-cycle--bind):
Add docstring (bug#60426).
(outline-minor-mode-cycle--bind): Default 'map' to
'outline-minor-mode-cycle-map'.
(outline-minor-mode-cycle-map): Improve docstring.
(outline-minor-mode): Move margin-cycling keys to
'outline-minor-mode-cycle-map'.
This commit is contained in:
Juri Linkov 2023-01-11 21:37:33 +02:00
parent 384504edf3
commit 4a8891a462
2 changed files with 25 additions and 6 deletions

View file

@ -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 also means that 'TAB' on a button in an 'outline-minor-mode' heading
will move point instead of collapsing the outline. will move point instead of collapsing the outline.
---
** 'outline-minor-mode-cycle-map' is now parent of 'outline-minor-mode'.
Instead of adding 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' 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. ** 'Info-default-directory-list' is no longer populated at Emacs startup.
If you have code in your init file that removes directories from If you have code in your init file that removes directories from

View file

@ -209,8 +209,14 @@ This option is only in effect when `outline-minor-mode-cycle' is non-nil."
:version "28.1") :version "28.1")
(defvar outline-minor-mode-cycle) (defvar outline-minor-mode-cycle)
(defvar outline-minor-mode-cycle-map)
(defun outline-minor-mode-cycle--bind (map key binding &optional filter) (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 `(menu-item
"" ,binding "" ,binding
;; Filter out specific positions on the heading. ;; Filter out specific positions on the heading.
@ -227,8 +233,16 @@ This option is only in effect when `outline-minor-mode-cycle' is non-nil."
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
(outline-minor-mode-cycle--bind map (kbd "TAB") #'outline-cycle) (outline-minor-mode-cycle--bind map (kbd "TAB") #'outline-cycle)
(outline-minor-mode-cycle--bind map (kbd "<backtab>") #'outline-cycle-buffer) (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) 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 (defvar outline-mode-map
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
@ -518,10 +532,6 @@ See the command `outline-mode' for more information on this mode."
:keymap (define-keymap :keymap (define-keymap
:parent outline-minor-mode-cycle-map :parent outline-minor-mode-cycle-map
"<menu-bar>" outline-minor-mode-menu-bar-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) (key-description outline-minor-mode-prefix) outline-mode-prefix-map)
(if outline-minor-mode (if outline-minor-mode
(progn (progn