Add new function buttonize-region

* lisp/button.el (buttonize-region): New function.
(button--properties): Factored out.
(buttonize): Use it.
This commit is contained in:
Lars Ingebrigtsen 2022-04-16 15:39:03 +02:00
parent 5ad6a08a2e
commit d71ee07852
2 changed files with 27 additions and 10 deletions

View file

@ -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.

View 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)