elisp中有哪些字符不能用?

比如我要命名函数/变量或者文件名,那么有哪些特殊字符是不能用的?

我快变成伸手党了……

1jdskaldas1 这样数字开头的可以, dsahjdka121321 这种包含数字的也可以,纯数字不行。 #'dasn 'dads #dsa 这种带有 back quote 字符的不行。@ds@ 可以,\",前面有 \ 有特殊意义的字符的可以,| 可以随便用,括号都有特殊意义肯定不行。别的就算你全用中文都没关系,只要记得指定编码就万事 OK。

但是你要真写成上面这样,肯定会被打死。

标准情况只会用到 26 个字母和 - 来连词,偶尔可以用阿拉伯数字。比较宽松的情况用带注音的罗马字符,比如 äêúæ,是允许的。直接用汉字做变量名很少。有些用户会根据 CL 的标准用 namespace:func-name 这种命名方式来管理“意淫”出来的命名空间。

文件名都是字符串,只要记得转义就可以,具体哪些字符不能用视系统和存储文件格式而定。比如 macOS 有区分大小写和不区分两种。某些少见的系统(VMS之类)只支持5个以下字符之类的。

1 个赞

为啥会被打死? 还有必须得是全小写?因为我看到几乎所有的emacs配置都没人用驼峰之类的大小写混合命名法。

另外我看大部分常量都两端加*是啥意思?

因为这是命名标准。不然各种名称满天飞。

这个是 Commom Lisp 的标准,由于不少 Emacs 用户也是 CL 程序员,所以会沿用过来。

但是这一条不遵守也没关系。因为 Elisp 没有真正的常量

而且是不是为了保持整齐? 因为emacs的内置函数全是"字母 + ‘-’"命名的……

因为写 Emacs 的时候(或者应该说 Lisp 出现的时候?)很多操作系统是不分大小写的(准确说是终端只能显示大写字母),所以没法用驼峰,后来就变成了习惯。

那好吧…… 我自已以后就…… 自建的变量/函数用驼峰,但是也不去包装emacs的内置变量/函数……文件名区分大小写(除了init.el意外……) 总之我问这么个问题就是因为我真的很烦各种文件和文件名里有’-’ 和 '_'这俩符号而已…… 不为啥,就和有些人烦偶像一样………… 反正总之,我这配置还真没到可以拿出手的地步……

如果RMS教主出了什么建议或者强制性规范,我再遵守就是了。 在此之前,我遵守Swift那套东西……

不用教主建议……Emacs 自带的包就是教科书。

我想起了《小王子》里面那个土耳其天文学家,还有那个因为论文没有用 TeX 所以重大发现没受到重视的那个社会学家。

好像都可以,有些特殊(比如纯数字)的需要 Escape(在前面加个 \

A symbol name can contain any characters whatever.

Symbol Type (GNU Emacs Lisp Reference Manual)

中文字符、Emoji 什么的也可以

(defun 猫和老鼠 ()
  (let ((🐱 "Tom")
        (🐭 "Jerry")
        (\123 "123"))
    (message "%s and %s, %s" 🐱 🐭 \123)))

(猫和老鼠)
     => "Tom and Jerry, 123"

我的意思是……如果某天不能这么命名了,我就遵守官方的那一套

所以我想如果全用 Emoji 写 Elisp 岂不是很爽。

也可以。 Spacemacs 用的命名标准也是自己定的。