]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new function buttonize-region
authorLars Ingebrigtsen <larsi@gnus.org>
Sat, 16 Apr 2022 13:39:03 +0000 (15:39 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sat, 16 Apr 2022 13:42:10 +0000 (15:42 +0200)
* lisp/button.el (buttonize-region): New function.
(button--properties): Factored out.
(buttonize): Use it.

etc/NEWS
lisp/button.el

index 6913f159c0862cce6080b2c2371edcb211d6eff3..c9f8ae46303cce2d21bf64b6e944d0093b099540 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1377,6 +1377,10 @@ functions.
 \f
 * Lisp Changes in Emacs 29.1
 
++++
+** New convenience function 'buttonize-region'.
+This works like 'buttonize', but for a region instead of a string.
+
 +++
 ** 'macroexp-let2*' can omit 'test' arg and use single-var bindings.
 
index 8a7751d00da341164f4f8383d1f00f1c4d3aa29a..86cf4a9ae5e05c6e53a17b7168b79624e92954d0 100644 (file)
@@ -626,16 +626,29 @@ function argument.  If DATA isn't present (or is nil), the button
 itself will be used instead as the function argument.
 
 If HELP-ECHO, use that as the `help-echo' property."
-  (propertize string
-              'face 'button
-              'mouse-face 'highlight
-              'help-echo help-echo
-              'button t
-              'follow-link t
-              'category t
-              'button-data data
-              'keymap button-map
-              'action callback))
+  (apply #'propertize string
+         (button--properties callback data help-echo)))
+
+(defun button--properties (callback data help-echo)
+  (list 'face 'button
+        'font-lock-face 'button
+        'mouse-face 'highlight
+        'help-echo help-echo
+        'button t
+        'follow-link t
+        'category t
+        'button-data data
+        'keymap button-map
+        'action callback))
+
+(defun buttonize-region (start end callback &optional data help-echo)
+  "Make the region between START and END into a button.
+When clicked, CALLBACK will be called with the DATA as the
+function argument.  If DATA isn't present (or is nil), the button
+itself will be used instead as the function argument.
+
+If HELP-ECHO, use that as the `help-echo' property."
+  (add-text-properties start end (button--properties callback data help-echo)))
 
 (provide 'button)