在线文档教程

3. The Erlang mode for Emacs

3 Emacs的Erlang模式

3.1目的

本用户指南的目的是向您介绍Emacs的Erlang模式,并提供一些相关的功能和功能背景信息。另请参见Erlang mode reference manualErlang模式本身的目的是促进Erlang程序员的开发过程。

3.2先决条件

Emacs和Erlang/OTP基础知识。

3.3 ELISP

Emacs的工具包中包含了两个ELISP模块。有erlang.el定义了实际的Erlang模式,还有Erlang-start.el进行了一些很好的初始化。

3.4安装在UNIX上

要在UNIX系统上设置ErlangEmacs模式,请编辑/创建该文件.emacs在你的主目录里。

下面是一个完整的示例,说明如果.emacs在目录中安装了OTP ,应向用户添加什么内容/usr/local/otp

(setq load-path (cons "/usr/local/otp/lib/tools-<ToolsVer>/emacs" load-path)) (setq erlang-root-dir "/usr/local/otp") (setq exec-path (cons "/usr/local/otp/bin" exec-path)) (require 'erlang-start)

3.5安装在Windows上

要在Windows系统上设置Erlang Emacs模式,编辑/创建文件.emacs,文件的位置取决于系统的配置。如果设置了HOME环境变量,Emacs将.emacsHOME变量指示的目录中查找文件。如果没有设置HOME,Emacs将会查找.emacs文件C:\

下面是一个完整的示例,说明如果.emacs在目录中安装了OTP ,应向用户添加什么内容C:\Program Files\erl<Ver>:

(setq load-path (cons "C:/Program Files/erl<Ver>/lib/tools-<ToolsVer>/emacs" load-path)) (setq erlang-root-dir "C:/Program Files/erl<Ver>") (setq exec-path (cons "C:/Program Files/erl<Ver>/bin" exec-path)) (require 'erlang-start)

在.emacs中,斜杠字符“/”可以用作路径分隔符。但是,如果您决定使用反斜杠字符“\”,请不要使用双反斜杠,因为它们被Emacs视为转义字符。

3.6缩进

“牛津高级学习者当代英语词典”对“缩进”一词进行了如下说明:

“开始(一行印刷或写作)比其他人更远离边缘”。

Erlang模式确实提供了这个功能。使用的布局基于该语言的常用用法。

强烈建议使用此功能并避免以非标准方式缩进行。一些动机是:

  • 使用相同布局的代码易于阅读和维护。

  • 由于Erlang模式的几个功能基于标准布局,因此如果使用非标准布局,它们可能无法正常工作。

缩进特性可用于增强文件的大段。如果一些行使用非标准缩进,它们将被恢复。

3.7编辑

  • M-x erlang-mode RET - 该命令激活当前缓冲区的Erlang主模式。当该模式处于活动状态时,模式行包含单词“Erlang”。当Erlang模式正确安装时,当Emac中打开.erl.hrl打开的文件时,它会自动激活。当文件被保存时,-module().行中的名称被选中反对文件名称。如果它们不匹配Emacs可以更改模块说明符,以便它匹配文件名。默认情况下,在执行更改之前询问用户。“电”命令是除插入字符之外还执行某种操作的字符。例如“;” 字符是在结束函数子句的情况下输入一个新的函数头部的。电气指令如下:

  • erlang-electric-comma-插入逗号字符,并可能插入新的缩进行。

  • erlang-electric-semicolon-在下一行插入分号字符,并可能插入原型。

  • erlang-electric-gt - “插入'>' - 符号并可能有一个新的缩进行。

禁用所有电子命令将变量erlang-electric-commands设置为空列表。简而言之,将以下行放在您的.emacs-file文件中:

(setq erlang-electric-commands '())

3.8句法突出显示

Emacs可能在显示缓冲区时使用颜色。通过“语法突出显示”,我们的意思是语法组件,例如关键字和函数名称,将被着色。

语法突出显示的基本思想是使程序的结构更加清晰。例如,突出显示可以更容易地发现简单的错误。你有没有写过一个只有小写字母的变量?使用语法高亮显示变量时会着色,而原子将以正常文本颜色显示。

3.9标签

标签是一个标准的Emacs软件包,用于在大型开发项目中记录有关源文件的信息。除了列出项目的文件之外,标签文件通常还包含有关定义的所有函数和变量的信息。到目前为止,标签系统最有用的命令是它能够在项目中的任何文件中找到函数的定义。然而,标签系统并不仅限于此功能,例如,可以在项目中的所有文件中执行文本搜索,或执行项目范围的搜索和替换。

为了使用标签系统,TAGS必须创建一个名为的文件。该文件可以被视为项目中所有文件中所有函数,记录和宏的数据库。该TAGS文件可以使用Erlang的两种不同的方法创建。第一个是标准的Emacs实用程序“etags”,第二个是使用Erlang模块tags

3.10 eTAGS

etags是Emacs发行版的一部分程序。它通常通过命令行执行,比如Unixshell或DOS框。

etagsEmacs中的相当现代的版本和XEmacs的方案有Erlang的原生支持。要检查您的版本是否包含此支持,请etags --help在命令行提示符处发出该命令。在帮助文本末尾有一个支持的语言列表。除非Erlang是这个列表的成员,否则我建议你应该升级到更新版本的Emacs。

从帮助文本中可以看出 - 除非你还没有升级你的Emacs(好吧,你在这里等着什么?你离开并升级!) - etags关联文件扩展名.erl.hrlErlang。

基本上,etags实用程序使用以下形式运行:

etags file1.erl file2.erl

这将创建一个名为TAGS在当前目录中。

etags实用程序还可以通过提供单个破折号代替文件名来读取其标准输入中的文件列表。当项目包含大量文件时,此功能非常有用。标准的UNIX命令find可以用来生成文件列表,例如:

find . -name "*.[he]rl" -print | etags -

上面的行将创建一个TAGS文件覆盖当前目录和下面子目录中的所有Erlang源文件。

有关更多信息,请参阅GNU Emacs手册和etags手册页。

3.11外壳

Emacs中Erlang外壳的外观应该和普通的Erlang外壳相同。只有一个主要区别,光标键实际上会移动光标,就像在任何普通的Emacs缓冲区中一样。命令行历史记录可以通过以下命令访问:

  • C-upM-pcomint-previous-input) - 移至输入历史记录中的上一行。

  • C-downM-ncomint-next-input) - 移至输入历史记录中的下一行。

如果Erlang shell缓冲区被终止,那么命令行历史记录将被保存到一个文件中。当一个新的Erlang shell启动时,命令行历史会自动检索。

3.12汇编

Erlang的经典编辑 - 错误修复循环是在编辑器中编辑源文件,将其保存到文件并切换到Erlang外壳。在shell中给出了编译命令。如果编译失败,你必须带出编辑器并找到正确的行。

使用Erlang编辑模式,可以在不离开Emacs的情况下执行整个编辑 - 错误修复循环。Emacs可以命令Erlang编译一个文件,它可以解析错误消息,自动将点放在错误的行上。