【问题标题】:How do you color specific letters in emacs?你如何在emacs中为特定字母着色?
【发布时间】:2013-01-25 06:49:33
【问题描述】:

在一个新的并且希望非常简单的 emacs 模式中,我希望“a”的每个实例都为 #0000FF,而“b”的每个实例都为 #DF0101。到目前为止,尽管进行了很多谷歌搜索,但我还没有找到一种方法来做到这一点。理想情况下,它会在您键入时实时发生。

http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/emacs/Highlight-Interactively.html

http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/emacs/Font-Lock.html#Font-Lock

【问题讨论】:

  • 我只是好奇,但有什么具体的理由这样做吗?
  • 有一个很好的理由.. 这是一个简单的例子。如果问题得到解答,我将发布最终模式,谢谢!
  • 如果你知道 elisp 为什么不为按键添加一个钩子并在匹配时简单地设置当前字符的颜色?
  • 我认为您建议将“a”转换为“插入蓝色 a”的命令,也许我可以弄清楚。我会报告的,谢谢。
  • 绑定ainsert-blue-a的问题是a在打开文件的时候不会是蓝色的,只有插入新的时候才会出现

标签: emacs elisp


【解决方案1】:

我将它用于我的 Navi 次要模式:

;; Adding Navi to the syntax highlighting of emacs mode.

首先用他们的颜色制作新面孔,在我的例子中,绿色代表字母“t”的成功字体,青色代表“Navi”和“navi”。

如果需要,请阅读font-lock

(make-face 'font-lock-Navi-face)
(set-face-foreground 'font-lock-Navi-face "cyan")

(make-face 'font-lock-success-face)
(set-face-attribute 'font-lock-success-face nil :foreground "green")

现在添加要附加的“关键字”(regexp):

(defun add-custom-keywords()
  "adds a few keywords for emacs mode"
  ;
  (font-lock-add-keywords nil
                     '(
                       ("Navi\\|navi" . 'font-lock-Navi-face)

 ;; here you can see that I highlight the letter "t" in " t " when spaced, 
 ;; or with a parenthesis\newline around it

                       ("\\s-t\\s-\\|\\s-t)\\|\\s-t\n" . 'font-lock-success-face)
                       )
                     )
)

您可以用简单的字母“a”或“b”替换 Navi(“或”在这里是 "\\|")或 navi,所以 "a\\|b" 然后给它头像。

; This is the hook to activate when the mode is triggered
(add-hook 'emacs-lisp-mode-hook 'add-custom-keywords)

最后一部分确保此字体将是“实时的”,并且每次打开文件时。

【讨论】:

    【解决方案2】:

    add-font-lock-keywords 主要用于用户自定义。如果您自己编写模式,最好将font-lock-defaults 设置为适当的值。

    查看 emacswiki 上的 sample-mode 以获取一些示例。

    【讨论】:

    • 是的,我必须同意你的看法。我认为这会提供更大的灵活性,但是即使在次要模式中定义了字体锁,也不会妨碍您以后进行更改。你得到了我的投票。
    • 其实,既然你提到了,add-font-lock-keywords 也确实适用于 minor 模式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多