Emacs在Flex和Bison中对自动缩进的处理很差 . 事实上,它似乎不支持flex模式 . 那么,emacs用户如何应对这些?我喜欢VIm,但我不想切换,因为我在Emacs中更快更舒服 .
几个月前,我为Bison设立了第三方elisp模块,但当它的缩进破坏时,它永远不会被修复 . 简而言之,这是一个糟糕的黑客 .
或者有没有办法可以关闭.l和.y文件的自动缩进(所以按下会做一个缩进)?我如何仅为emacs更改此elisp设置?
一个简洁的elisp指南也非常有用 . 如果我有正确的文档,我不介意花几天时间编写自己的flex和bison模式 .
2 回答
Emacs主要根据文件扩展名选择主要模式 .
.l
是一个有争议的扩展:有些人将它用于lex,其他用于lisp(还有一些其他稀有用途) . Emacs将.l
与lisp相关联,并将.lex
与lex相关联(为此它使用C模式) .如果您使用的
.l
文件通常是lex而不是lisp,则可以更改.emacs
中与以下行关联的.l
文件:您还可以在文件中声明Emacs在打开文件时要使用的模式 . 将以下代码段放在文件的第一行(通常在注释中):
这是一个更通用的功能,提供其他语法和其他可能性;有关详细信息,请参阅Emacs手册中的“文件变量” .
如果您想开始使用Emacs Lisp,请阅读Emacs Lisp intro(可能包含在您的Emacs或OS发行版中) . 一旦您熟悉了该语言的基础知识,您可以转到Emacs Lisp参考手册中有关模式的章节 .
附加提示:您可能认为您想要的是Emacs ' generic behavior -- what it uses when it doesn' t对文件格式有任何特殊模式 . 这在emacs术语中称为基本模式:因此您可以使用
M-x fundamental-mode
动态请求它,或者将-*- mode: fundamental -*-
放在文件的第一行,或者像这样自定义auto-mode-alist:另一件事可能是
indented-text-mode
(可能禁用了自动填充) .