emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 14ffab8 1/4: Add a new function `button-buttonize'


From: Lars Ingebrigtsen
Subject: master 14ffab8 1/4: Add a new function `button-buttonize'
Date: Fri, 11 Dec 2020 08:53:21 -0500 (EST)

branch: master
commit 14ffab8263eb219fe0c49ad4e0a3476316c542c0
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Add a new function `button-buttonize'
    
    * doc/lispref/display.texi (Manipulating Buttons): Document it.
    
    * lisp/button.el (button-buttonize): Implement it.
---
 doc/lispref/display.texi | 10 ++++++++++
 etc/NEWS                 | 22 +++++++++++++++-------
 lisp/button.el           | 12 ++++++++++++
 3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index ed26ae8..590b546 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -6881,6 +6881,16 @@ This inserts a button with the label @var{label} at 
point, using text
 properties.
 @end defun
 
+@defun button-buttonize string callback &optional data
+Sometimes it's more convenient to make a string into a button without
+inserting it into a buffer immediately, for instance when creating
+data structures that may then, later, be inserted into a buffer.  This
+function makes @var{string} into such a string, and @var{callback}
+will be called when the user clicks on the button.  The optional
+@var{data} parameter will be used as the parameter when @var{callback}
+is called.  If @code{nil}, the button is used as the parameter instead.
+@end defun
+
 @node Manipulating Buttons
 @subsection Manipulating Buttons
 @cindex manipulating buttons
diff --git a/etc/NEWS b/etc/NEWS
index 83fe7a3..f277284 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1368,6 +1368,21 @@ This face is used for error messages from 'diff'.
 *** New command 'diff-refresh-hunk'.
 This new command (bound to 'C-c C-l') regenerates the current hunk.
 
+** Buttons
+
++++
+*** New minor mode 'button-mode'.
+This minor mode does nothing else than install 'button-buffer-map' as
+a minor mode map (which binds the 'TAB' / 'S-TAB' key bindings to navigate
+to buttons), and can be used in any view-mode-like buffer that has
+buttons in it.
+
++++
+*** New utility function 'button-buttonize'.
+This function takes a string and returns a string propertized in a way
+that makes it a valid button.
+
+
 ** Miscellaneous
 
 ---
@@ -1480,13 +1495,6 @@ both modes are on).
 This works like 'report-emacs-bug', but is more geared towards sending
 patches to the Emacs issue tracker.
 
-+++
-*** New minor mode 'button-mode'.
-This minor mode does nothing else than install 'button-buffer-map' as
-a minor mode map (which binds the 'TAB' / 'S-TAB' key bindings to navigate
-to buttons), and can be used in any view-mode-like buffer that has
-buttons in it.
-
 ---
 *** 'icomplete-show-matches-on-no-input' behavior change.
 Previously, choosing a different completion with commands like 'C-.'
diff --git a/lisp/button.el b/lisp/button.el
index ba06823..8dbb763 100644
--- a/lisp/button.el
+++ b/lisp/button.el
@@ -613,6 +613,18 @@ button at point is the button to describe."
       (button--describe props)
       t)))
 
+(defun button-buttonize (string callback &optional data)
+  "Make STRING into a button and return it.
+When clicked, CALLBACK will be called with the optional DATA parameter."
+  (propertize string
+              'face 'button
+              'button t
+              'follow-link t
+              'category t
+              'button-data data
+              'keymap button-map
+              'action callback))
+
 (provide 'button)
 
 ;;; button.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]