Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Highlight TODO and similar keywords in comments and strings

To highlight keywords turn on hl-todo-mode in individual buffers or use the global variant global-hl-todo-mode.

You can customize the keywords that are recognized by customizing hl-todo-keyword-faces either through the customization interface or by setting the variable directly in your init file, for example:

(setq hl-todo-keyword-faces
      '(("TODO"   . "#FF0000")
        ("FIXME"  . "#FF0000")
        ("DEBUG"  . "#A020F0")
        ("GOTCHA" . "#FF4500")
        ("STUB"   . "#1E90FF")))

This package also provides commands for moving to the next or previous keyword, to invoke occur with a regexp that matches all known keywords, and to insert a keyword. If you want to use these commands, then you should bind them in hl-todo-mode-map, e.g.:

(keymap-set hl-todo-mode-map "C-c p" #'hl-todo-previous)
(keymap-set hl-todo-mode-map "C-c n" #'hl-todo-next)
(keymap-set hl-todo-mode-map "C-c o" #'hl-todo-occur)
(keymap-set hl-todo-mode-map "C-c i" #'hl-todo-insert)

See this list on the Emacswiki for other packages that implement the same basic features, but which might also provide additional features that you might like, but which I don’t deem necessary.

See FAQ and Common Issues if something isn’t working as expected.

Compile MELPA Stable MELPA