From: Robert Pluim Date: Wed, 25 Sep 2024 13:49:53 +0000 (+0200) Subject: Add unbuttonize-region X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=79a08c6a184e6432444cb13ff38468bcc6b7c8d4;p=emacs.git Add unbuttonize-region * doc/lispref/display.texi (Making Buttons): Document it. * lisp/button.el (unbuttonize-region): New function, removes all buttons in the specified region. (cherry picked from commit 08ee074a6f140a82e327fba446c05c96fe64932c) --- diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 1362806fee7..4ce7a93a6f0 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -7992,6 +7992,11 @@ between @var{start} and @var{end} into a button. Arguments @code{help-echo} property of the button. @end defun +@defun unbuttonize-region start end +This function removes all buttons between @var{start} and @var{end} in +the current buffer (both overlay and text-property based ones). +@end defun + @node Manipulating Buttons @subsection Manipulating Buttons @cindex manipulating buttons diff --git a/etc/NEWS b/etc/NEWS index 7bb4d60ac06..4ae09f2f1bb 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -174,6 +174,12 @@ When called with a prefix argument, accepting, declining, or tentatively accepting an icalendar event will prompt for a comment to add to the response. +** Button + ++++ +*** New function 'unbuttonize-region'. +It removes all the buttons in the specified region. + ** Eshell --- diff --git a/lisp/button.el b/lisp/button.el index c0584729172..de6ea8d966c 100644 --- a/lisp/button.el +++ b/lisp/button.el @@ -663,10 +663,22 @@ itself will be used instead as the function argument. If HELP-ECHO, use that as the `help-echo' property. -Also see `buttonize'." +Also see `buttonize' and `unbuttonize-region'." (add-text-properties start end (button--properties callback data help-echo)) (add-face-text-property start end 'button t)) +(defun unbuttonize-region (start end) + "Remove all the buttons between START and END. +This removes both text-property and overlay based buttons." + (dolist (o (overlays-in start end)) + (when (overlay-get o 'button) + (delete-overlay o))) + (with-silent-modifications + (remove-text-properties start end + (button--properties nil nil nil)) + (add-face-text-property start end + 'button nil))) + (provide 'button) ;;; button.el ends here