以前我们写define-minor-mode
都这么写:
(define-minor-mode foo-mode
"Foo."
nil " foo-mode" foo-mode-map
(foo))
而我发现现在都这么写:
(define-minor-mode foo-mode
"Foo."
:lighter " foo-mode"
:keymap foo-mode-map
(foo))
这两种写法有啥区别吗?
谢谢。
以前我们写define-minor-mode
都这么写:
(define-minor-mode foo-mode
"Foo."
nil " foo-mode" foo-mode-map
(foo))
而我发现现在都这么写:
(define-minor-mode foo-mode
"Foo."
:lighter " foo-mode"
:keymap foo-mode-map
(foo))
这两种写法有啥区别吗?
谢谢。
看 define-minor-mode
定义:
(defmacro define-minor-mode (mode
doc
&optional init-value lighter keymap
&rest body)
...)
一旦末尾参数写了,按照写法1,中间 &optional
几个可选参数就必须按顺序全部写上。如果按照写法2,用命名参数(keyword),就可以少写,并且可以不按顺序。
结果并没有不同,但是书写便利,防止出错。
那么新的写法里,值为nil的keyword是不是就不用写?
因为我看到有些人的明确地写明了:global
和:init-value
为nil,而有些人就省略了……
C-h f define-minor-mode
你看或不看 源码就在那里 不+不-
你想或不想 逻辑就在那里 不正不反
我就是看了才不明白……按理说不用的keyword是不用写的,但是为啥会有人写……
注释 也 没用
另一个是可读性问题。第一种写法不查看define-minor-mode
的文档鬼知道 " foo-mode"
这个参数是干什么的?