erlang.el
erlang.el
模块
erlang.el
模块摘要
Emacs的Erlang模式
描述
可能为程序员设计的编辑器最重要的特性是能够根据编程语言的结构缩进一行代码。Erlang模式确实提供了这个功能。使用的布局基于该语言的常用用法。该模式还提供了语法突出显示,电子命令,模块名称验证,包括段落填充在内的评论支持,框架,标签支持等。
在下面的描述中,使用单词Point
意味着:“Point
可以看作是光标的位置,更确切地说,该点是当光标绘制在字符后面的两个字符之间的位置”。
缩进
以下命令可直接用于缩进。
TAB
(erlang-indent-command
) - 缩进当前的代码行。
M-C-\
(indent-region
) - 缩进区域中的所有行。
M-l
(indent-for-comment
) - 将注释字符插入行上代码的右侧(如果有的话)。
包含注释的行根据使用的%字符的数量而有所不同:
- 带有一个%-character的行缩进到代码的右侧。该列由变量指定
comment-column
,默认使用列48。
- 具有两个%字符的行将被缩进到与代码在相同情况下相同的深度。
- 具有三个以上%字符的行将缩进左边距。
C-c C-q
(erlang-indent-function
) - 缩进当前的Erlang函数。
M-x erlang-indent-clause RET
-缩进目前的Erlang条款。
M-x erlang-indent-current-buffer RET
- 缩进整个缓冲区。
C-a M-a
(erlang-beginning-of-function
) - 将该点移动到当前或之前的Erlang函数的开始位置。通过数值参数(exC-u 2 C-a M-a
),函数向后跳过许多Erlang函数。如果参数是负数,则将该点移到当前函数下面的函数的开头。
M-C-a
(erlang-beginning-of-clause
) - 如上所述,但是移动到当前或之前的Erlang子句的开始处。
C-a M-e
(erlang-end-of-function
) - 移至当前或以后的Erlang函数的末尾。通过数值参数(exC-u 2 C-a M-e
),函数向后跳过许多Erlang函数。如果参数为负数,则将该点移至当前函数下方的函数末尾。
M-C-e
(erlang-end-of-clause
) - 如上所述,但移动到当前或之后的Erlang子句的末尾。
编辑标记
C-c M-h
(erlang-mark-function
) - 把区域放在当前的Erlang函数中。该点位于函数的开始位置,标记位于函数的末尾。
M-C-h
(erlang-mark-clause
)把该区域放在当前的Erlang子句中。该点位于函数的开始位置,标记位于函数的末尾。
编辑-函数头命令
C-c C-j
(erlang-generate-new-clause
) - 在当前的Erlang函数中创建一个新的子句。该点位于参数列表的括号之间。
C-c C-y
(erlang-clone-arguments
) - 复制前面的Erlang子句的函数参数。当定义一个与前面几乎相同的参数的新子句时,该命令很有用。
编辑-箭头
- C-c C-a(erlang-align-arrows) - 在区域内的子句之后对齐箭头。例如:sum(L) - > sum(L,0)。sum(H | T,Sum) - > sum(T,Sum + H); sum([],Sum) - > Sum。成为:sum(L)→sum(L,0)。sum(H | T,Sum) - > sum(T,Sum + H); sum([],Sum) - > Sum.Syntax突出显示可以从Erlang菜单中激活语法突出显示。有四种不同的选择:
- 关闭:普通黑白显示。
- 第1级:函数头、保留字、注释、字符串、引号原子和字符常量将被着色。
- 等级2:上面的属性,Erlang bif:s,警卫以及用单引号括起来的注释中的单词将被着色。
- 级别3:上面的变量,记录和宏将被着色。(这个级别也被称为圣诞树级别。)
标签
为了使标签命令起作用,它需要你已经生成了一个标签文件。看到Erlang mode users guide
M-.
(find-tag
) - 查找函数定义。默认值是该点下的函数名称。
- 查找标记(
erlang-find-tag
) - 与Elisp函数find-tag'. Capable of retrieving Erlang modules. Tags can be given on the forms
标记一样,module:',
module:tag'。
M-+
(erlang-find-next-tag
) - 查找下一次出现的标签。
M-TAB
(erlang-complete-tag
) - 对标签搜索中输入的标签执行完成。完成到当前标记表中列出的一组名称。
- 标签aprops(
tags-apropos
) - 显示标签表REGEXP匹配中所有标签的列表。
C-x t s
(tags-search
) - 搜索标记表中列出的所有文件以获得REGEXP的匹配。当找到匹配时停止。
骨架
骨架是可以插入缓冲区的一段预先编写的代码。Erlang模式带有一组预定义的骨架。可以从命名的Erlang菜单中访问骨架tempo-template-erlang-*
,因为骨架是使用标准Emacs包“节奏”定义的。下面简要描述可用的骨架:
- 简单的骨架:如果,案例,接收,接收后,接收循环-基本代码构造。
- 标题元素:模块,作者 - 这些命令在表单
-module(
xxx).
和中插入行-author('my@home').
。它们可以直接使用,但也可以用作下面描述的完整标题的一部分。
- 完整标题:小(最低要求),中等(有关模块基本信息的字段)和大标题(带有一些额外布局结构的中等标题)。
- 小型服务器 - 不使用OTP的简单服务器的骨架。
- 应用程序-OTP应用程序行为的框架
- OTP主管行为的框架
- 监督桥-OTP监控程序桥行为的框架
- gen_server - OTP gen_server行为的框架
- gen_event - OTP gen_event行为的框架
- gen_fsm - 用于OTP gen_fsm行为的框架
- gen_statem(StateName/3) - 使用状态名称函数的OTP gen_statem行为的框架
- gen_statem(handle_event/4) - 使用一个状态函数的OTP gen_statem行为的框架
- 库模块 - 不执行进程的模块的骨架。
- 回调曲线 - 曲线回调模块的骨架。
- Erlang测试套件 - erlang测试服务器的回调模块的骨架。
Shell
- 新shell(
erlang-shell
) - 启动一个新的Erlang shell。
C-c C-z,
(erlang-shell-display
) - 显示一个Erlang shell,或者如果没有启动shell,则启动一个新的。
编译
C-c C-k,
(erlang-compile
) - 在当前缓冲区中编译Erlang模块。您也可以使用C-u C-c C-k
调试编译与调试选项的模块debug_info
和export_all
。
C-c C-l,
(erlang-compile-display
) - 显示编译输出。
C-u C-x`开始
解析编译器输出。该命令会将该点放置在发现第一个错误的行上。
C-x`(erla
ng-next-error) - 将点移动到下一个错误。显示编译错误的缓冲区将被更新,以便当前错误可见。
Man
在unix上,您可以查看emacs中的手册页。为了查找手册页面,应该将变量erlang-root-dir绑定到包含Erlang安装目录的名称。该名称不应包含最终斜线。实际上,您应该在以下表单中添加一行到〜/ .emacs中的行,
(setq erlang-root-dir "/the/erlang/root/dir/goes/here")
启动IMenu
M-x imenu-add-to-menubar RET
- 该命令将创建包含当前缓冲区中所有功能的IMenu菜单。该命令将要求您为菜单指定一个合适的名称。不支持Xemacs.Version
M-x erlang-version RET
- 该命令显示Erlang编辑模式的版本号。请记住在提问有关Erlang模式的问题时始终提供版本号。