Skip to content

Instantly share code, notes, and snippets.

@terranpro
Last active December 19, 2015 22:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save terranpro/3175bb9f3ed00b3a145c to your computer and use it in GitHub Desktop.
Save terranpro/3175bb9f3ed00b3a145c to your computer and use it in GitHub Desktop.
A silly example of coloring sentences/paragraphs for use with multilingual, aligned texts.
(defun brian-rotate (list)
(append (cdr list) (list (car list))))
(defvar-local brian-stupid-buf-overlays nil)
(defun brian-color-remove-overlays ()
(interactive)
(while (not (null brian-stupid-buf-overlays))
(delete-overlay (pop brian-stupid-buf-overlays))))
(defun brian-color-next-paragraph (color)
(let ((startpt (point))
endpt this-overlay)
(save-excursion
(when (eq (forward-paragraph) 0)
(setq endpt (point))
(setq this-overlay (make-overlay startpt endpt))
(overlay-put this-overlay 'face `(:background ,color))
(setq brian-stupid-buf-overlays
(add-to-list 'brian-stupid-buf-overlays this-overlay)))
endpt)))
(defun brian-color-next-sentence (color limit)
(let (startpt this-overlay endpt)
(when (< (forward-sentence) limit)
(setq endpt (point)
startpt (backward-sentence))
(forward-sentence)
(setq this-overlay (make-overlay startpt endpt))
(overlay-put this-overlay 'face `(:background ,color :weight bold))
(setq brian-stupid-buf-overlays
(add-to-list 'brian-stupid-buf-overlays this-overlay)))
endpt))
(defun brian-stupid-colors ()
(interactive)
(let ((colors '("lightgreen" "yellow"))
(par-colors '("white"))
this-overlay parend)
(brian-color-remove-overlays)
(save-excursion
(goto-char (point-min))
(while (setq parend (brian-color-next-paragraph (car par-colors)))
(let ((local-colors colors))
(while (and parend
(< (or (brian-color-next-sentence (car local-colors)
parend)
(point-max)) parend))
(setq local-colors (brian-rotate local-colors)))
(setq par-colors (brian-rotate par-colors)))
(goto-char parend)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment