I use Emacs to write documentation, and a lot of times my files end up with some internal markup that looks like this: [TK: Where is the event handler defined?] in-line with the text. (“TK” is writer speak for “to come”, since the only common English words that have ‘tk’ in them are “pocketknife” and “hotkey”, and case sensitivity matters.)

I added “TK” to hl-todo-keyword-faces, but I discovered that hl-todo uses a regexp like (^|\s)(<keyword>), so the opening bracket confuses hl-todo, and it doesn’t show up in the todo lists.

I wrote a quick perl script to place a space before the bracket, and it worked, and now the magit-status buffer says my documentation folder has 59 TODOs over 41 markdown files – which is great! – but it won’t list them like it does in source code, which is not great.


  1. Remembering to write the space in [ TK: ...] is a pain in the neck, and looks terrible. Is there a way to modify the regexp such that the opening bracket is a legal character to hl-todo without hacking hl-todo’s source in the Elpa folder?

2. Has anyone seen this where Magit-todo won’t list the TODOs? What do I do? I’m not the world’s greatest Elisp hacker, and it’s always good to task first before trying to figure out for myself. Nevermind, this was just me not understanding the configuration.

1 Answer 1


The space issue is an inconsistency in the way magit-todos and hl-todos generate their regular expressions. I have submitted a pull request.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.