Emacs中高亮关键字
日常编码或者阅读其他代码时经常会使用或看到TODO/FIXME等关键字,之前是使用hl-todo来进行高亮,hl-todo中还提供了很多其它功能,我基本上只使用了高亮关键字的功能。
James Cherti介绍了Emacs内置功能实现关键字高亮的方法,核心实现是使用 font-lock-add-keywords
来增加高亮关键字,使用 font-lock-remove-keywords
来删除高亮关键字,这样就可以不使用hl-todo包了,这里我根据自己的需要设置颜色样式,配置成编程模式启动高亮关键字。
(defvar +highlight-keywords '(("\\<\\(TODO\\|FIXME\\|BUG\\)\\>" 1 'error prepend) ("\\<\\(NOTE\\|HACK\\|MAYBE\\)\\>" 1 'warning prepend))) (define-minor-mode +highlight-keywords-mode "Highlight keywords, like TODO, FIXME..." :global nil (if +highlight-keywords-mode (font-lock-add-keywords nil +highlight-keywords) (font-lock-remove-keywords nil +highlight-keywords)) ;; Fontify the current buffer (when (bound-and-true-p font-lock-mode) (if (fboundp 'font-lock-flush) (font-lock-flush) (with-no-warnings (font-lock-fontify-buffer))))) (add-hook 'prog-mode-hook #'+highlight-keywords-mode)