是否有Emacs的规范?

是否有Emacs的规范?,emacs,elisp,compatibility,specifications,Emacs,Elisp,Compatibility,Specifications,我想实施另一个Emacs,使用和作为一个爱好项目,只是为了我自己的学习。但是我不确定是否有“Emacs的官方规范”这样的东西,以便我可以遵循它来确保与其他实现的最大兼容性,比如GNU Emacs?软件和规范 某些软件由标准定义,并有许多实现(例如,通用LISP、方案、C、C++和C),一些软件是由其独特的实现定义的,文档仅次于它(例如Emacs、Python、Ruby、Perl)。Java有一个中间案例,它是由一个不断发展的标准定义的,并且有一个参考实现,由其他一些人跟踪 Emacs 没有“Em

我想实施另一个
Emacs
,使用和作为一个爱好项目,只是为了我自己的学习。但是我不确定是否有“Emacs的官方规范”这样的东西,以便我可以遵循它来确保与其他实现的最大兼容性,比如GNU Emacs?

软件和规范

某些软件由标准定义,并有许多实现(例如,通用LISP、方案、C、C++和C),一些软件是由其独特的实现定义的,文档仅次于它(例如Emacs、Python、Ruby、Perl)。Java有一个中间案例,它是由一个不断发展的标准定义的,并且有一个参考实现,由其他一些人跟踪

Emacs 没有“Emacs的官方规范”-它是由实现定义的(还有其他Emacsen,一些更兼容,一些更少;一些更活跃,一些更少)。 还有大量关于Emacs编辑器和Emacs Lisp语言的手册,您应该阅读它们(从C-h C-h开始)。但是,文档不是规范:如果有疑问,请参考来源,而不是文档。如果您发现两者之间存在分歧,修复方法通常是更改文档,而不是更改代码

CL&Emacs 我建议你从页面开始-你不认为你是第一个在CL中想到Emacs的人,是吗已经有相当多的类似项目

无耻的插件:15年前,我写了一篇文章,让你可以在公共Lisp中运行“任意”的Emacs Lisp代码。当然,它不适用于依赖于Emacs编辑器功能(如缓冲区)的代码,但您可以加载Emacs日历并将日期从公历转换为玛雅历

计划
如果您决定从头开始实现CL Emacs,我建议您采用大型Emacs Lisp项目(例如Gnus、Calc、Org mode&c),并确保您的编辑器完美地支持它。然后你知道你有一些对其他人有用的东西。

据我所知,没有这样的规范存在(这是公认的非常有限的)。请记住,Emacs基本上只是一个相当奇特的lisp VM,它恰好用于编辑文本。任何不立即绑定一串键、自定义功能以及通常“搞乱”任何现有规范的Emacs用户,可能都不会使用Emacs,因为他们喜欢它。Emacs一直被认为是一个中间状态,是你想要的任何东西的起点

也就是说,并不是所有的东西都丢了。首先,有一个例子,这个例子既很有说服力,也很容易解析(一般来说)。不幸的是,本手册的大部分内容都涉及Emacs Lisp,虽然它是Emacs的核心,但对您的项目并不重要


但是!我们忘记了:Emacs哲学的核心支柱之一是
自我文档
。Emacs通过它的帮助系统(是的,帮助系统记录了它自己)记录了它自己行为的几乎每个方面。一些有用的命令

  • Control+h k(又名
    描述键
    )为您提供绑定到所按键的功能的文档。相应地,Control+hk,Control+hk为您提供:
C-hk运行命令descripe key,这是一个交互式编译键 “help.el”中的Lisp函数

它与C-hk,k,k结合,

(描述键和可选键未翻译的UP-EVENT)

显示键调用的函数的文档。 密钥可以是任何类型的密钥序列;它可以包括键盘事件, 鼠标事件和/或菜单事件。从程序调用时, 将键作为字符串或向量传递。

  • Control+HF(又名
    描述函数
    )为您提供了Emacs中任何函数的文档。因此,Control+h f描述函数呈现:
描述函数是一个交互式自动加载的编译Lisp函数 在“help fns.el”中

它与C-hf,f,f结合,

(描述功能)

显示功能的完整文档(符号)

  • Control+HB(又名
    描述函数
    )提供所有键绑定及其相应命令的列表。在命令上键入Return可转到该命令的说明(a la
    descripe function
这只是冰山一角。键入Alt+x descripe-Tab,并在Emacs文档系统的强大威力中获得荣耀


Emacs是它自己的规范,与旧UNIX存在的方式相同,并且这些规范是从它们中删除的,而不是相反的方式。希望这足以满足您的需求


祝你的项目好运。:)

真的,这恐怕不是很有帮助。@PythonNut:什么是没有帮助的?@PythonNut:不同意:一个权威的答案,即没有针对emacs的官方规范,对于寻找emacs的人来说是非常有帮助的,正如指出存在其他CL-etc实现工作一样+1@kjhughes好的,第一个版本说“你不认为你是第一个在CL中想到Emacs的人吗?”还有一些关于被它的实现定义的东西。这个版本更好。我没有从第一个版本中删除一个单词。为了好玩,它可能也值得一看。