用于flex和bison的Emacs模式,还是删除这些模式的自动缩进?
Emacs在Flex和Bison中对自动缩进的处理很差。 实际上,它似乎不支持flex模式。 那么,emacs用户如何应对这些? 我喜欢VIm,但我不想切换,因为我在Emacs中更快,更舒适。
几个月前,我为Bison建立了第三方elisp模块,但当它的缩进破裂时,它永远不会被修复。 总之,这是一个糟糕的黑客攻击。
或者有什么办法可以关闭.l和.y文件的自动缩进(所以按下会做一个缩进)? 我怎样才能改变这个只是emacs的elisp设置?
elisp的一个很好和简明的指南也会很有帮助。 如果我有正确的文档,我不介意花几天时间写我自己的flex和bison模式。
Emacs主要根据文件扩展名选择主要模式。 .l
是一个有争议的扩展:有些人将它用于lex,其他人用于lisp(还有一些其他用途较少)。 Emacs将.l
与lisp关联,并将.lex
与lex关联(为此使用C模式)。
如果您使用的.l
文件比lisp更经常使用lex,则可以更改.l
文件与.emacs
的以下行相关联的内容:
(add-to-list 'auto-mode-alist '(".l'" . c-mode))
您也可以在文件内声明Emacs在打开文件时使用的模式。 将下面的代码片段放在文件的第一行(通常在注释中):
-*-mode: c-mode-*-
这是一个更通用的功能,提供其他语法和其他可能性; 有关更多信息,请参阅Emacs手册中的“文件变量”。
如果您想开始使用Emacs Lisp,请阅读Emacs Lisp介绍(可能包含在您的Emacs或OS发行版中)。 一旦你熟练掌握了这门语言的基础知识,你可以参考Emacs Lisp参考手册中关于模式的章节。
附加提示:您可能会决定您需要的是Emacs的通用行为 - 当它没有任何特殊的文件格式模式时它会使用什么。 这就是所谓的emacs lingo中的基本模式:所以你可以在Mx fundamental-mode
,或者在文件的第一行放置-*- mode: fundamental -*-
或者自定义自动模式alist :
(add-to-list 'auto-mode-alist '(".l'" . fundamental-mode))
另一个尝试可能是indented-text-mode
(可能禁用自动填充)。
上一篇: Emacs modes for flex and bison, or removing auto indent for these modes?