* Colourise text in a buffer using a list
@ 2024-09-13 1:21 Heime
2024-09-13 8:07 ` Stephen Berman
0 siblings, 1 reply; 2+ messages in thread
From: Heime @ 2024-09-13 1:21 UTC (permalink / raw)
To: Heime via Users list for the GNU Emacs text editor
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"))))))))
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Colourise text in a buffer using a list
2024-09-13 1:21 Colourise text in a buffer using a list Heime
@ 2024-09-13 8:07 ` Stephen Berman
0 siblings, 0 replies; 2+ messages in thread
From: Stephen Berman @ 2024-09-13 8:07 UTC (permalink / raw)
To: Heime; +Cc: Heime via Users list for the GNU Emacs text editor
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
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-09-13 8:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-13 1:21 Colourise text in a buffer using a list Heime
2024-09-13 8:07 ` Stephen Berman
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).