cireu
2019 年8 月 15 日 08:29
1
Emacs对Elisp mode默认的语法高亮有点少,只有macro和special form,以及函数定义的语法高亮。
很久以前从doom-emacs抄到了 doomemacs/autoload.el at develop · doomemacs/doomemacs · GitHub 这个函数,让emacs和高亮函数调用和全局变量。
昨天整理配置的时候,把这段函数拿出来重构了一下,理清了逻辑,做成elispfl这个单独的package。
使用方式
(with-eval-after-load 'elisp-mode
(require 'elispfl)
(elispfl-mode))
Have fun!
9 个赞
cireu
2019 年8 月 15 日 08:38
4
伸手:elispfl和highlight-function-calls哪个更好一点?
dolist is a Lisp macro in ‘subr.el’.
cond is a special form in ‘src/eval.c’.
这两种东西有区别吗,c源码的叫special form,lisp的叫macro?
cireu
2019 年8 月 20 日 03:20
6
都差不多的。只是我个人觉得elispfl的代码比较简洁,不过不支持Emacs24。
macro默认对所有参数都不求值,要手动求值。special form是对部分参数求值的(比如setq form就要对value进行求值。当然也可以理解成从C里手动求值)。还有就是从C定义和从Lisp定义的区别
1 个赞
special form 是有只能通过编译器/解释器特殊处理实現的 primitive 功能,不能用 macro 实现的。
1 个赞
这个把大部分default-face的都变成function face了,好像没什么用。。
cireu
2019 年8 月 20 日 13:35
10
有的special form纯粹是为了性能or可读性。
;; NOTE: We treat symbol after left round bracket as subroutine.
;; May trigger false positive in list literal e.g. '(foo bar),
;; but it's suitable for most cases.
那这里只要有个'
就不要把foo
亮起来?
LdBeth
2019 年8 月 23 日 11:40
12
实际上自定义的复杂 macro 不用 compiler component 是没法处理的。
cireu
2019 年8 月 23 日 13:03
13
可以用
'(
foo
bar)
加量qouted form里的内容也有写macro方面的考虑
QiangF
2019 年8 月 24 日 00:24
15
能不能和highlight-defined比较一下,哪个好呢
报个bug,关键字在 require 后面的时候不要高亮,比如 (require 'display-line-numbers)
cireu
2019 年10 月 7 日 03:09
19
我也不知道这个他为什么会这样高亮,等我回学校研究一下