代码之家  ›  专栏  ›  技术社区  ›  Dave Lawrence

如何根据起始字符设置emacs线条颜色

  •  2
  • Dave Lawrence  · 技术社区  · 8 年前

    我每天都用emacs,但我不是lisp专家。如何定义一个简单的模式来根据第一个字符给缓冲区中的行上色?

    e、 g.如果是“p”,则文本为绿色;如果是“i”,则文本为红色。... 我有大约六条规则要定义。

    这种模式只适用于一个非常具体的文本文件,我显然不需要在其他情况下的功能!

    谢谢,

    1 回复  |  直到 8 年前
        1
  •  1
  •   Dave Lawrence    8 年前

    多亏了aartist,这就是我的结局

    (defface mymode-q '((t :foreground "red" )) "" )
    (defface mymode-p '((t :foreground "green" )) "" )
    (defface mymode-i '((t :foreground "yellow" )) "" )
    (defface mymode-r '((t :foreground "blue" )) "" )
    (defface mymode-c '((t :foreground "orange" )) "" )
    (defface mymode-x '((t :foreground "grey50" )) "" )
    
    (setq mymode-highlights '(
        ("^q .*$" . 'mymode-q)
        ("^p .*$" . 'mymode-p)
        ("^i .*$" . 'mymode-i)
        ("^r .*$" . 'mymode-r)
        ("^c .*$" . 'mymode-c)
        ("^x .*$" . 'mymode-x)
        ))
    
    (define-derived-mode mymode-mode text-mode "mymode" "major mode mymode."
        (setq font-lock-defaults '(mymode-highlights)))