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: Colourise text in a buffer using a list
Date: Fri, 13 Sep 2024 10:07:09 +0200 [thread overview]
Message-ID: <87y13wf042.fsf@gmx.net> (raw)
In-Reply-To: <Ny_9lh_xzFVYQtg0BEaH1sIChl5oKz9oOuktxkKRgQBDyrqfj2JVFPl_La5jdYTqU9RtMsgZLh1P5sLOr4seNgkS05d1O6931oOXaFh1TQo=@protonmail.com> (Heime's message of "Fri, 13 Sep 2024 01:21:17 +0000")
On Fri, 13 Sep 2024 01:21:17 +0000 Heime <heimeborgia@protonmail.com> wrote:
> I have a buffer with text inserted from a list from a list.
>
> How can I print specific text form the list at INDEX by colouring
> that text it red ?
>
> (defun xiakos-check-red (lst index buffer)
> "Color the element at INDEX in LST red."
>
> (with-current-buffer buffer
>
> (let* ( (text (nth index lst))
> (start-pos nil)
> (end-pos nil) )
>
> (save-excursion
>
> ;; Find the start and end positions of the text
> (goto-char (point-min))
> (dotimes (i index)
> (forward-line)
> (when (re-search-forward
> (regexp-quote text) (line-end-position) t)
> (setq start-pos (match-beginning 0))
> (setq end-pos (match-end 0)))
> (unless start-pos
> (goto-char (point-min))))
>
> ;; Apply the red color to the found range
> (when (and start-pos end-pos)
> (add-text-properties start-pos end-pos
> '(face (:foreground "red"))))))))
I'm not sure whether "from a list from a list" is a typo, but IIUC what
you want, here's one way, with a test buffer and invocation:
(defun xiakos-check-red (lst index buffer)
"Color each INDEXth element of LST found in BUFFER red."
(with-current-buffer buffer
(let* ((text (nth index lst))
(start-pos nil)
(end-pos nil))
(save-excursion
;; Find the start and end positions of the text
(goto-char (point-min))
(while (re-search-forward (regexp-quote text) (point-max) t)
(setq start-pos (match-beginning 0))
(setq end-pos (match-end 0))
;; Apply the red color to the found range
(when (and start-pos end-pos)
(add-text-properties start-pos end-pos
'(face (:foreground "red")))))))))
-------------------- buffer "a" --------------------
This is a test.
This is not a test.
This is another test.
This is a third test.
This is not a test.
----------------------------------------------------
(xiakos-check-red '("is a") 0 "a")
Steve Berman
prev parent reply other threads:[~2024-09-13 8:07 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-13 1:21 Colourise text in a buffer using a list Heime
2024-09-13 8:07 ` 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=87y13wf042.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).