如何在Emacs中更改特定字符串的颜色?

时间:2019-09-22 22:40:49

标签: emacs font-lock

假设我希望所有“坏”字都为红色(#ff0000)。

我应该在init.el中添加什么,以便字符串/单词“ bad”的颜色在所有模式下都变成红色,无论是org模式还是其他模式:

' Copy Range To Clipboard
    CopyRange = "B100:E105"
    Worksheets(ActiveSheet.Name).Range(CopyRange).CopyPicture xlScreen, xlBitmap

我想在我打开的每个文件中都这样做,并且如果可能的话,应该是实时的,而无需任何人工评估等。

是否可以在Emacs中实现而无需安装任何插件?

2 个答案:

答案 0 :(得分:2)

您可以定义一个全局的次要模式,例如,可以很容易地在所有缓冲区中激活。

(defconst my-font-lock-keywords '(("\\_<bad\\_>" . font-lock-warning-face)))

(define-minor-mode my-font-lock-mode ""
  :init-value nil
  :lighter ""
  (if my-font-lock-mode
      (font-lock-add-keywords nil my-font-lock-keywords)
    (font-lock-remove-keywords nil my-font-lock-keywords))
  (font-lock-flush))

(define-global-minor-mode my-font-lock-global-mode my-font-lock-mode
  (lambda () (my-font-lock-mode)))

然后,用 M-x my-font-lock-global-mode(或在您的init中)激活它

答案 1 :(得分:1)

已经有一个名为hl-todohttps://github.com/tarsius/hl-todo)的软件包。您可以使用hl-todo-keyword-faces配置突出显示的关键字和显示的颜色。您可以使用模式挂钩或hl-todo-activate-in-modes来配置它在哪些模式下处于活动状态。