From d71ee07852f15738b63d5cd9c5ccecd88a84a35a Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Sat, 16 Apr 2022 15:39:03 +0200 Subject: [PATCH] Add new function buttonize-region * lisp/button.el (buttonize-region): New function. (button--properties): Factored out. (buttonize): Use it. --- etc/NEWS | 4 ++++ lisp/button.el | 33 +++++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 6913f159c08..c9f8ae46303 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1377,6 +1377,10 @@ functions. * 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. diff --git a/lisp/button.el b/lisp/button.el index 8a7751d00da..86cf4a9ae5e 100644 --- a/lisp/button.el +++ b/lisp/button.el @@ -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) -- 2.39.5