all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Using buttons
@ 2024-06-28 21:45 Heime
  2024-06-28 22:46 ` Stephen Berman
  0 siblings, 1 reply; 5+ messages in thread
From: Heime @ 2024-06-28 21:45 UTC (permalink / raw)
  To: Heime via Users list for the GNU Emacs text editor

Have noticed that when using a button I have to define a unique function
to associate with the specific button.  I cannot just use a single function,
then update the string (skrpad in this case).

Also does the button label got to be unique, or is it just to give the button 
some text to display on the button ?

(defvar skrpad "TODO-0")

(defun montext (button)
  (with-help-window (help-buffer)
    (insert skrpad)))


(defun mondu ()

  (interactive)

  (with-current-buffer (get-buffer-create "Mondu")

    (setq mon-skrpad "TODO-1")

    (insert-button "[1]" 'action 'montext)

    (setq mon-skrpad "TODO-2")

    (insert-button "[2]" 'action 'montext)))







^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Using buttons
  2024-06-28 21:45 Using buttons Heime
@ 2024-06-28 22:46 ` Stephen Berman
  2024-06-28 23:17   ` Heime
  0 siblings, 1 reply; 5+ messages in thread
From: Stephen Berman @ 2024-06-28 22:46 UTC (permalink / raw)
  To: Heime; +Cc: Heime via Users list for the GNU Emacs text editor

On Fri, 28 Jun 2024 21:45:32 +0000 Heime <heimeborgia@protonmail.com> wrote:

> Have noticed that when using a button I have to define a unique function
> to associate with the specific button.  I cannot just use a single function,
> then update the string (skrpad in this case).
>
> Also does the button label got to be unique, or is it just to give the button
> some text to display on the button ?
>
> (defvar skrpad "TODO-0")
>
> (defun montext (button)
>   (with-help-window (help-buffer)
>     (insert skrpad)))
>
>
> (defun mondu ()
>
>   (interactive)
>
>   (with-current-buffer (get-buffer-create "Mondu")
>
>     (setq mon-skrpad "TODO-1")
>
>     (insert-button "[1]" 'action 'montext)
>
>     (setq mon-skrpad "TODO-2")
>
>     (insert-button "[2]" 'action 'montext)))

Try this:

(defun mondu ()
  (interactive)
  (let* ((skrpad (list "TODO-1" "TODO-2"))
	 (montext (lambda (button)
		    (with-help-window (help-buffer)
		      (insert (pop skrpad))))))
    (with-current-buffer (get-buffer-create "Mondu")
      (insert-button "[1]" 'action (lambda (b) (funcall montext b)))
      (insert-button "[2]" 'action (lambda (b) (funcall montext b))))))

Steve Berman



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Using buttons
  2024-06-28 22:46 ` Stephen Berman
@ 2024-06-28 23:17   ` Heime
  2024-06-29  6:59     ` Stephen Berman
  0 siblings, 1 reply; 5+ messages in thread
From: Heime @ 2024-06-28 23:17 UTC (permalink / raw)
  To: Stephen Berman; +Cc: Heime via Users list for the GNU Emacs text editor






Sent with Proton Mail secure email.

On Friday, June 28th, 2024 at 10:46 PM, Stephen Berman <stephen.berman@gmx.net> wrote:

> On Fri, 28 Jun 2024 21:45:32 +0000 Heime heimeborgia@protonmail.com wrote:
> 
> > Have noticed that when using a button I have to define a unique function
> > to associate with the specific button. I cannot just use a single function,
> > then update the string (skrpad in this case).
> > 
> > Also does the button label got to be unique, or is it just to give the button
> > some text to display on the button ?
> > 
> > (defvar skrpad "TODO-0")
> > 
> > (defun montext (button)
> > (with-help-window (help-buffer)
> > (insert skrpad)))
> > 
> > (defun mondu ()
> > 
> > (interactive)
> > 
> > (with-current-buffer (get-buffer-create "Mondu")
> > 
> > (setq mon-skrpad "TODO-1")
> > 
> > (insert-button "[1]" 'action 'montext)
> > 
> > (setq mon-skrpad "TODO-2")
> > 
> > (insert-button "[2]" 'action 'montext)))
> 
> 
> Try this:
> 
> (defun mondu ()
> (interactive)
> (let* ((skrpad (list "TODO-1" "TODO-2"))
> (montext (lambda (button)
> (with-help-window (help-buffer)
> (insert (pop skrpad))))))
> (with-current-buffer (get-buffer-create "Mondu")
> (insert-button "[1]" 'action (lambda (b) (funcall montext b)))
> (insert-button "[2]" 'action (lambda (b) (funcall montext b))))))
> 
> Steve Berman

It is a good implementation.

I wanted to print the n-th entry in the list upon pressing 
the n-th button without removing items from the list. 

So I did this change.  To the lambda function I added n to specify
the n-th entry in the list.  What do you think of this ?

(defun mondu ()
  (interactive)
  (let* ( (skrpad (list "mon-lw" "mon-kk"))
          (montext (lambda (button n)
                     (with-help-window (help-buffer)
                       (insert (nth n skrpad))))) )
    (with-current-buffer (get-buffer-create "Mondu")
      (insert-button "[1]" 'action (lambda (b) (funcall montext b 0)))
      (insert "\n")
      (insert-button "[2]" 'action (lambda (b) (funcall montext b 1))))))







^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Using buttons
  2024-06-28 23:17   ` Heime
@ 2024-06-29  6:59     ` Stephen Berman
  2024-06-30 12:01       ` Heime
  0 siblings, 1 reply; 5+ messages in thread
From: Stephen Berman @ 2024-06-29  6:59 UTC (permalink / raw)
  To: Heime; +Cc: Heime via Users list for the GNU Emacs text editor

On Fri, 28 Jun 2024 23:17:48 +0000 Heime <heimeborgia@protonmail.com> wrote:

> Sent with Proton Mail secure email.
>
> On Friday, June 28th, 2024 at 10:46 PM, Stephen Berman
> <stephen.berman@gmx.net> wrote:
>
>> On Fri, 28 Jun 2024 21:45:32 +0000 Heime heimeborgia@protonmail.com wrote:
>>
>> > Have noticed that when using a button I have to define a unique function
>> > to associate with the specific button. I cannot just use a single function,
>> > then update the string (skrpad in this case).
>> >
>> > Also does the button label got to be unique, or is it just to give the button
>> > some text to display on the button ?
>> >
>> > (defvar skrpad "TODO-0")
>> >
>> > (defun montext (button)
>> > (with-help-window (help-buffer)
>> > (insert skrpad)))
>> >
>> > (defun mondu ()
>> >
>> > (interactive)
>> >
>> > (with-current-buffer (get-buffer-create "Mondu")
>> >
>> > (setq mon-skrpad "TODO-1")
>> >
>> > (insert-button "[1]" 'action 'montext)
>> >
>> > (setq mon-skrpad "TODO-2")
>> >
>> > (insert-button "[2]" 'action 'montext)))
>>
>>
>> Try this:
>>
>> (defun mondu ()
>> (interactive)
>> (let* ((skrpad (list "TODO-1" "TODO-2"))
>> (montext (lambda (button)
>> (with-help-window (help-buffer)
>> (insert (pop skrpad))))))
>> (with-current-buffer (get-buffer-create "Mondu")
>> (insert-button "[1]" 'action (lambda (b) (funcall montext b)))
>> (insert-button "[2]" 'action (lambda (b) (funcall montext b))))))
>>
>> Steve Berman
>
> It is a good implementation.
>
> I wanted to print the n-th entry in the list upon pressing
> the n-th button without removing items from the list.
>
> So I did this change.  To the lambda function I added n to specify
> the n-th entry in the list.  What do you think of this ?
>
> (defun mondu ()
>   (interactive)
>   (let* ( (skrpad (list "mon-lw" "mon-kk"))
>           (montext (lambda (button n)
>                      (with-help-window (help-buffer)
>                        (insert (nth n skrpad))))) )
>     (with-current-buffer (get-buffer-create "Mondu")
>       (insert-button "[1]" 'action (lambda (b) (funcall montext b 0)))
>       (insert "\n")
>       (insert-button "[2]" 'action (lambda (b) (funcall montext b 1))))))

Yes, this is certainly better.  (I realized after posting that using
`pop' was a poor choice, but it was too late for me to follow up.)

Steve Berman



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Using buttons
  2024-06-29  6:59     ` Stephen Berman
@ 2024-06-30 12:01       ` Heime
  0 siblings, 0 replies; 5+ messages in thread
From: Heime @ 2024-06-30 12:01 UTC (permalink / raw)
  To: Stephen Berman; +Cc: Heime via Users list for the GNU Emacs text editor






Sent with Proton Mail secure email.

On Saturday, June 29th, 2024 at 6:59 AM, Stephen Berman <stephen.berman@gmx.net> wrote:

> On Fri, 28 Jun 2024 23:17:48 +0000 Heime heimeborgia@protonmail.com wrote:
> 
> > Sent with Proton Mail secure email.
> > 
> > On Friday, June 28th, 2024 at 10:46 PM, Stephen Berman
> > stephen.berman@gmx.net wrote:
> > 
> > > On Fri, 28 Jun 2024 21:45:32 +0000 Heime heimeborgia@protonmail.com wrote:
> > > 
> > > > Have noticed that when using a button I have to define a unique function
> > > > to associate with the specific button. I cannot just use a single function,
> > > > then update the string (skrpad in this case).
> > > > 
> > > > Also does the button label got to be unique, or is it just to give the button
> > > > some text to display on the button ?
> > > > 
> > > > (defvar skrpad "TODO-0")
> > > > 
> > > > (defun montext (button)
> > > > (with-help-window (help-buffer)
> > > > (insert skrpad)))
> > > > 
> > > > (defun mondu ()
> > > > 
> > > > (interactive)
> > > > 
> > > > (with-current-buffer (get-buffer-create "Mondu")
> > > > 
> > > > (setq mon-skrpad "TODO-1")
> > > > 
> > > > (insert-button "[1]" 'action 'montext)
> > > > 
> > > > (setq mon-skrpad "TODO-2")
> > > > 
> > > > (insert-button "[2]" 'action 'montext)))
> > > 
> > > Try this:
> > > 
> > > (defun mondu ()
> > > (interactive)
> > > (let* ((skrpad (list "TODO-1" "TODO-2"))
> > > (montext (lambda (button)
> > > (with-help-window (help-buffer)
> > > (insert (pop skrpad))))))
> > > (with-current-buffer (get-buffer-create "Mondu")
> > > (insert-button "[1]" 'action (lambda (b) (funcall montext b)))
> > > (insert-button "[2]" 'action (lambda (b) (funcall montext b))))))
> > > 
> > > Steve Berman
> > 
> > It is a good implementation.
> > 
> > I wanted to print the n-th entry in the list upon pressing
> > the n-th button without removing items from the list.
> > 
> > So I did this change. To the lambda function I added n to specify
> > the n-th entry in the list. What do you think of this ?
> > 
> > (defun mondu ()
> > (interactive)
> > (let* ( (skrpad (list "mon-lw" "mon-kk"))
> > (montext (lambda (button n)
> > (with-help-window (help-buffer)
> > (insert (nth n skrpad))))) )
> > (with-current-buffer (get-buffer-create "Mondu")
> > (insert-button "[1]" 'action (lambda (b) (funcall montext b 0)))
> > (insert "\n")
> > (insert-button "[2]" 'action (lambda (b) (funcall montext b 1))))))
> 
> 
> Yes, this is certainly better. (I realized after posting that using
> `pop' was a poor choice, but it was too late for me to follow up.)
> 
> Steve Berman


Do the button labels have to be unique ("[1]", "[2]") or can they use the same 
text such as ("[-]", "[-]") 




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-06-30 12:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-28 21:45 Using buttons Heime
2024-06-28 22:46 ` Stephen Berman
2024-06-28 23:17   ` Heime
2024-06-29  6:59     ` Stephen Berman
2024-06-30 12:01       ` Heime

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.