From: Stephen Berman <stephen.berman@gmx.net>
To: Heime <heimeborgia@protonmail.com>
Cc: Heime via Users list for the GNU Emacs text editor
<help-gnu-emacs@gnu.org>
Subject: Re: Highlighting text next to button
Date: Mon, 01 Jul 2024 11:26:02 +0200 [thread overview]
Message-ID: <877ce5bh05.fsf@gmx.net> (raw)
In-Reply-To: <G-lU243LCLHGXZJif5dCYJEe6REIVHYzT5Wb9pEIR4TBsdZ_qbh9vSnvmn9ZapxcfIcm2dRdFEZIAWE0vVeNlwZSvccD3-unN80W4bB1-oM=@protonmail.com> (Heime's message of "Mon, 01 Jul 2024 08:52:34 +0000")
On Mon, 01 Jul 2024 08:52:34 +0000 Heime <heimeborgia@protonmail.com> wrote:
> On Monday, July 1st, 2024 at 7:53 AM, Stephen Berman <stephen.berman@gmx.net> wrote:
>
>> On Sun, 30 Jun 2024 22:32:24 +0000 Heime heimeborgia@protonmail.com wrote:
>>
>> > On Sunday, June 30th, 2024 at 10:11 PM, Stephen Berman
>> > stephen.berman@gmx.net wrote:
>> >
>> > > On Sun, 30 Jun 2024 21:52:12 +0000 Heime heimeborgia@protonmail.com wrote:
>> > >
>> > > > On Sunday, June 30th, 2024 at 8:00 PM, Heime
>> > > > heimeborgia@protonmail.com wrote:
>> > > >
>> > > > > I have the function monde that displays some buttons with associated text
>> > > > > describing what the button does.
>> > > > >
>> > > > > I would like to highlight the description text corresponding to the button
>> > > > > that was pressed, with NORM being the default when calling the function.
>> > > > > What can I do ?
>> > > > >
>> > > > > (defun spaz (w)
>> > > > > "Make a string of width W made of spaces."
>> > > > > (make-string w ?\s))
>> > > > >
>> > > > > (defun mondu ()
>> > > > >
>> > > > > (interactive)
>> > > > >
>> > > > > (with-current-buffer (get-buffer-create "Mondu")
>> > > > >
>> > > > > (insert " MAIN PANEL DU \n\n")
>> > > > >
>> > > > > (insert " ")
>> > > > > (insert-button "[-]" 'action 'mondu-outbd)
>> > > > > (insert " OUTBD ")
>> > > > >
>> > > > > (insert-button "[-]" 'action 'mondu-norm)
>> > > > > (insert " NORM ")
>> > > > >
>> > > > > ;;------------------------------------------------------------
>> > > > >
>> > > > > (insert-button "[-]" 'action 'mondu-inbd-eng-pri)
>> > > > > (insert " INBD ENG PRI \n")
>> > > > >
>> > > > > (insert (spaz 24))
>> > > > > (insert-button "[-]" 'action 'mondu-inbd-pfd)
>> > > > > (insert " INBD PFD \n")
>> > > > >
>> > > > > (insert (spaz 24))
>> > > > > (insert-button "[-]" 'action 'mondu-inbd-hfd)
>> > > > > (insert " INBD HFD \n") )
>> > > > >
>> > > > > (pop-to-buffer "Mondu") )
>> > > >
>> > > > Have made the following. But I also have to activate the text that is printed
>> > > > to the help buffer when pressing the button.
>> > > >
>> > > > (defun mondu-color-text (text color)
>> > > > "Color TEXT in the specified COLOR in the Mondu buffer."
>> > > >
>> > > > (with-current-buffer "Mondu"
>> > > > (save-excursion
>> > > > (goto-char (point-min))
>> > > > (when (search-forward text nil t)
>> > > > (let ((start (match-beginning 0))
>> > > > (end (match-end 0)))
>> > > > (add-text-properties start end `(face (:foreground ,color))))))))
>> > > >
>> > > > (defun mondu ()
>> > > > "Set up the Mondu buffer with buttons and text."
>> > > >
>> > > > (interactive)
>> > > >
>> > > > (with-current-buffer (get-buffer-create "Mondu")
>> > > >
>> > > > (erase-buffer) ;; Clear the buffer to avoid repeated content on multiple
>> > > > invocations
>> > > >
>> > > > (insert " MAIN PANEL DU \n\n")
>> > > >
>> > > > (insert " ")
>> > > > (insert-button "[-]"
>> > > > 'action (lambda (_) (mondu-color-text " OUTBD " "red")))
>> > > > (insert " OUTBD ")
>> > > >
>> > > > (insert-button "[-]"
>> > > > 'action (lambda (_) (mondu-color-text " NORM " "red")))
>> > > > (montejura-insert-colorat " NORM " "red")
>> > > >
>> > > > (insert-button "[-]"
>> > > > 'action (lambda (_) (mondu-color-text " INBD ENG PRI " "red")))
>> > > > (insert " INBD ENG PRI \n")
>> > > >
>> > > > (insert (espz 24))
>> > > > (insert-button "[-]"
>> > > > 'action (lambda (_) (mondu-color-text " INBD PFD " "red")))
>> > > > (insert " INBD PFD \n")
>> > > >
>> > > > (insert (espz 24))
>> > > > (insert-button "[-]"
>> > > > 'action (lambda (_) (mondu-color-text " INBD HFD " "red")))
>> > > > (insert " INBD HFD \n"))
>> > > >
>> > > > (pop-to-buffer "Mondu"))
>> > >
>> > > Perhaps this (based on the first version):
>> > >
>> > > (defun mondu ()
>> > > (interactive)
>> > > (with-current-buffer (get-buffer-create "Mondu")
>> > > (let ((make-desc (lambda (&optional description)
>> > > (insert (propertize (or description " NORM ")
>> > > 'face '( :weight bold
>> > > :slant italic
>> > > :background "lightgray"))))))
>> > > (insert " MAIN PANEL DU \n\n")
>> > > (insert " ")
>> > > (insert-button "[-]" 'action 'mondu-outbd)
>> > > (funcall make-desc " OUTBD ")
>> > > (insert-button "[-]" 'action 'mondu-norm)
>> > > (funcall make-desc)
>> > > ;;------------------------------------------------------------
>> > > (insert-button "[-]" 'action 'mondu-inbd-eng-pri)
>> > > (funcall make-desc " INBD ENG PRI \n")
>> > > (insert (spaz 24))
>> > > (insert-button "[-]" 'action 'mondu-inbd-pfd)
>> > > (funcall make-desc " INBD PFD \n")
>> > > (insert (spaz 24))
>> > > (insert-button "[-]" 'action 'mondu-inbd-hfd)
>> > > (funcall make-desc" INBD HFD \n")))
>> > > (pop-to-buffer "Mondu"))
>> > >
>> > > Steve Berman
>> >
>> > Steve, your function highlights everything, not only the text next to
>> > where the button was pressed.
>>
>>
>> Do you mean the background color? That was just an example; if you
>> don't want it, then just don't include it in the value of the `face'
>> property. E.g., if you just want the text next to the button to be
>> red, just use '(:foreground "red") as the value of the` face' property.
>>
>> Steve Berman
>
> It is more complicated. When one presses the button "OUTBD", only the
> word "OUTBD" gets coloured red. The other string are reset with no color.
> Meaning that the highlight is only applied to the text to which the key
> was pressed.
I guess you're talking not about the code I posted but about your second
version that uses the function `mondu-color-text'. With that code what
I see is that the text next to the pressed button turns red and the text
next to the other buttons is left alone, i.e., if it is already red, it
remains red, does not get reset. (However, since you didn't supply the
code for `montejura-insert-colorat', I just replaced that with `insert',
so maybe that's why I don't see what you describe.) If that's not what
you want, you should explain more precisely what you want. (I thought
you just wanted the text next to each button fontified to begin with
(i.e, not just upon pressing the associated button), which is what the
code I posted does, but it seems you want something else.)
Steve Berman
prev parent reply other threads:[~2024-07-01 9:26 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-30 20:00 Highlighting text next to button Heime
2024-06-30 21:52 ` Heime
2024-06-30 22:11 ` Stephen Berman
2024-06-30 22:32 ` Heime
2024-07-01 7:53 ` Stephen Berman
2024-07-01 8:52 ` Heime
2024-07-01 9:26 ` Stephen Berman [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877ce5bh05.fsf@gmx.net \
--to=stephen.berman@gmx.net \
--cc=heimeborgia@protonmail.com \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).