[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Colourise text in a buffer using a list
From: |
Stephen Berman |
Subject: |
Re: Colourise text in a buffer using a list |
Date: |
Fri, 13 Sep 2024 10:07:09 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
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