一般我们都会定义一个const/function来判断操作系统类型:
(defconst IS-MAC (eq system-type 'darwin))
类似这种函数/const怎么命名比较好?我现在能看到的有以下几种
Spacemacs:
spacemacs/system-is-mac
doom-emacs:
IS-MAC
还有 @seagle0128 的:
sys/macp
谢谢各位,虽然我的强迫症似乎永远治不好了……
一般我们都会定义一个const/function来判断操作系统类型:
(defconst IS-MAC (eq system-type 'darwin))
类似这种函数/const怎么命名比较好?我现在能看到的有以下几种
Spacemacs:
spacemacs/system-is-mac
doom-emacs:
IS-MAC
还有 @seagle0128 的:
sys/macp
谢谢各位,虽然我的强迫症似乎永远治不好了……
*is-a-mac*
这是purcell的……
是的,后来我就一直在用这个了…
要是有一个Emacs配置传承学,从这个变量的命名可以看出来不少东西啊
自己有统一的规范就好,我用sys/macp
这个好多年了,还比较符合emacs规范也就一直用下去了。
Doom那种大写的感觉和Linux不搭,不过内部统一也无妨。
按照Emacs的规范,判断函数确实是单单词后面加p,多单词后面加-p.
问题是很多单词后面加个p真不好看……
而且我有个疑惑,如果是(defconst xxx (eq system-type 'darwin)
的形式的话,那个xxx到底算不算predicate method ?
我有在init-const
中的几个变量加了p,不算多。
平时写注释的吗
最好的注释是什么呢?
我觉得是没有注释。
对你的问题也一样。
直接用system-type岂不是更好
有时候比较麻烦,需要自己包装下。比如:判断系统是mac,并且在图形界面下而不是终端模式。
还有一个问题……就是写那么一长溜东西很容易写错……
我发现有个挺重要的原因是Emacs Lisp的命名并无什么硬性/成为世界公认标准的规定。
比如如果这是Java的方法名,我就肯定写is-macOS
……
至于我现在用的,是macOSp
这有一个社区维护的。
我现在突然偏向Spacemacs的方案,因为我觉得它更能清楚地表达“操作系统是mac”的意思。而macOSp更觉得像是“这是 Mac 吗?”的意思
这两个不是一个意思么
……很明显不是一个意思好吧……
你看,从软件层面来说,mac == macOS。 而且,你觉得不一样可能是因为表达的方式不一样:一个是陈述,另一个是疑问。
如果都换成疑问:
操作系统是mac吗? <—> 这是mac吗?
如果都换成陈述:
操作系统是mac <—> 这是mac
我感觉是一样的。
不是……可能我的表达有误,也可能我是个习惯过度解读的人。
sys/macp – system/mac predicate – 系统/Mac判定
macOSp – macOS predicate – macOS判定
这里含有“是否”的意思。
system-is-mac – 系统-是-mac
这里只有“是”的意思。
而那个变量存储的虽然是boolean,但是就其字面上来说((eq system-type 'darwin)
)还是“是”更准确点。
我并未纠结于mac还是macOS……而是觉得其他几种如果直译总给人一种不知所云的感觉。虽然其实意译都差不多。
就服你,六个字
然而我又突然想到,如果是function的话,那么sys/macp
就合适了。因为此时它是一个动作,而不是状态了。