Elisp: Overlay Highlighting

By Xah Lee. Date: . Last updated: .

Here's example of using overlay mechanism to highlight text.

(defun xah-make-overlay-bold-region (@begin @end)
  "make the region bold, using overlay.
Version 2016-11-01"
  (interactive "r")
    (overlay-put (make-overlay @begin @end) 'face 'bold)
    (setq mark-active nil )))

(defun xah-remove-overlays-region (@begin @end)
  "Remove overlays.
Version 2016-11-01"
  (interactive "r")
  (remove-overlays @begin @end))

Emacs has 2 mechanisms for coloring:

  1. text property: a region of text can have a property list, and this properly list specifies the color, font, size, etc.
  2. text overlay: create an “overlay” object, and this overlay can be placed on a region of text. You can think of it as a covering layer.

Vast majority of coloring in emacs are done with text properties. This is faster, and suitable for lots of coloring, such as syntax coloring of a programing language. When text are copied by user or in elisp, the text properties come with it by default. Font Lock mode stores coloring info in text properties, and vast majority of programing language modes use font lock mode to color text.

[see Elisp: Text Properties]

[see Elisp: Font Lock Mode Basics]

Overlay is useful for smaller number of coloring, or on and off coloring, such as temporary highlight of words.

(info "(elisp) Overlays")

Elisp, Writing Major Mode

  1. Syntax Coloring
  2. Font Lock Mode
  3. Define Face
  4. Color Comment
  5. Comment Command
  6. Your Own Comment Command
  7. Keyword Completion Command
  8. Create Keymap
  9. Abbrev/Template
  10. Text Properties
  11. Overlay Highlighting
  12. Lookup Doc
  13. Syntax Table

  1. How to Name Your Major Mode
  2. provide, require, features
  3. load, load-file, autoload

If you have a question, put $5 at patreon and message me.
Or Buy Xah Emacs Tutorial
Or buy a nice keyboard: Best Keyboards for Emacs


Emacs Lisp