diff --git a/lisp/ansi-osc.el b/lisp/ansi-osc.el index 1facd9aa205..77b1f7b393d 100644 --- a/lisp/ansi-osc.el +++ b/lisp/ansi-osc.el @@ -146,7 +146,7 @@ and `shell-dirtrack-mode'." (defvar-keymap ansi-osc-hyperlink-map :doc "Keymap used by OSC 8 hyperlink buttons." - "RET" (read-only-keymap-bind #'browse-url-button-open) + "RET" (keymap-read-only-bind #'browse-url-button-open) "C-c RET" #'browse-url-button-open "" #'browse-url-button-open "" 'mouse-face) diff --git a/lisp/keymap.el b/lisp/keymap.el index 98b4a026fd3..b418d157619 100644 --- a/lisp/keymap.el +++ b/lisp/keymap.el @@ -801,16 +801,19 @@ in the echo area. -(defun read-only-keymap-filter (cmd) +(defun keymap--read-only-filter (cmd) "Return CMD if `browse-url' and similar button bindings should be active. They are considered active only in read-only buffers." (when buffer-read-only cmd)) -(defun read-only-keymap-bind (binding) - "Use BINDING according to `read-only-keymap-filter'." +(defun keymap-read-only-bind (binding) + "Behave like BINDING, but only when the buffer is read-only. +BINDING should be a command to pput in a keymap. +Return an element that can be added in a keymap with `keymap-set', such that +it is active only when the current buffer is read-only." `(menu-item "" ,binding - :filter ,#'read-only-keymap-filter)) + :filter ,#'keymap--read-only-filter)) (provide 'keymap) diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index cd0a88b1a16..2b8964d1ece 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -1761,7 +1761,7 @@ from `browse-url-elinks-wrapper'." (defvar-keymap browse-url-button-map :doc "The keymap used for `browse-url' buttons." - "RET" (read-only-keymap-bind #'browse-url-button-open) + "RET" (keymap-read-only-bind #'browse-url-button-open) "C-c RET" #'browse-url-button-open "" #'browse-url-button-open "w" #'browse-url-button-copy) diff --git a/lisp/net/goto-addr.el b/lisp/net/goto-addr.el index c1f8b72f137..fa346a5d944 100644 --- a/lisp/net/goto-addr.el +++ b/lisp/net/goto-addr.el @@ -121,7 +121,7 @@ will have no effect.") (defvar-keymap goto-address-highlight-keymap :doc "Keymap to hold goto-addr's mouse key defs under highlighted URLs." "" #'goto-address-at-point - "RET" (read-only-keymap-bind #'goto-address-at-point) + "RET" (keymap-read-only-bind #'goto-address-at-point) "C-c RET" #'goto-address-at-point) (defun goto-address-context-menu (menu click) diff --git a/lisp/progmodes/bug-reference.el b/lisp/progmodes/bug-reference.el index 0b5c36d0ed2..b6ce135be3e 100644 --- a/lisp/progmodes/bug-reference.el +++ b/lisp/progmodes/bug-reference.el @@ -45,7 +45,7 @@ (defvar-keymap bug-reference-map :doc "Keymap used by bug reference buttons." "" #'bug-reference-push-button - "RET" (read-only-keymap-bind #'bug-reference-push-button) + "RET" (keymap-read-only-bind #'bug-reference-push-button) "C-c RET" #'bug-reference-push-button) ;; E.g., "https://gcc.gnu.org/PR%s"