如何根据行数设置major mode的face

elisp

#1

例如第一行我想高亮,第二行另外一种face。请问这种是怎么写的


#2

:eval ?(注意会让 Emacs 明显变慢)

(define-minor-mode foo-mode
  "Foo mode."
  :lighter
  (:eval (propertize
          mode-name
          'face (if (cl-oddp (line-number-at-pos)) 'default 'error))))

#3

能帮忙解释下这句话的作用吗。 我看global-git-commit-mode是用正则实现的。不过正则语句特别复杂。


#4

不明白什么意思,「这句话」指哪句?


#5

应该是你楼上贴的码子


#6

是的,就是解释一下代码什么意思。emacs 的face文档看起来好吃力


#7

propertize 用来给字符串加上属性,如 face 属性。defaulterror 是两个自带的 Face。Face 感觉跟变量类似,你也可以自己定义新的 Face。

M-x list-faces-display 可以看到当前 Emacs 定义的 Face。