Flex和Bison的Emacs模式,或删除这些模式的自动缩进?

时间:2010-08-16 00:38:20

标签: emacs elisp indentation bison flex-lexer

Emacs在Flex和Bison中处理自动缩进的能力很差。事实上,它似乎不支持flex模式。那么,emacs用户如何应对这些?我喜欢VIm,但我不想切换,因为我在Emacs中更快更舒服。

几个月前,我为Bison设立了第三方elisp模块,但当它的缩进破坏时,它永远不会被修复。简而言之,这是一个糟糕的黑客。

或者有没有办法可以关闭.l和.y文件的自动缩进(所以按下会做一个缩进)?我如何仅为emacs更改此elisp设置?

elisp的简洁指南也非常有用。如果我有正确的文档,我不介意花几天时间编写我自己的flex和bison模式。

2 个答案:

答案 0 :(得分:3)

Emacs主要根据文件扩展名选择主要模式。 .l是一个有争议的扩展:有些人将其用于lex,其他人用于lisp(还有一些其他稀有用途)。 Emacs将.l与lisp关联,将.lex关联到lex(为其使用C模式)。

如果您使用的.l文件通常是lex而不是lisp,则可以更改.l中与以下行关联的.emacs个文件:

(add-to-list 'auto-mode-alist '("\\.l\\'" . c-mode))

您还可以在文件中声明Emacs在打开文件时要使用的模式。将以下代码段放在文件的第一行(通常在注释中):

-*-mode: c-mode-*-

这是一个更通用的功能,提供其他语法和其他可能性;有关详细信息,请参阅Emacs手册中的“文件变量”。


如果您想开始使用Emacs Lisp,请阅读Emacs Lisp intro(可能包含在您的Emacs或OS发行版中)。一旦你熟悉了该语言的基础知识,你可以转到Emacs Lisp参考手册中有关模式的章节。

答案 1 :(得分:1)

附加提示:您可能认为您想要的是Emacs的通用行为 - 当它没有任何特殊模式的文件格式时使用它。这在emacs术语中称为基本模式:因此您可以使用M-x fundamental-mode动态请求它,或者将-*- mode: fundamental -*-放在文件的第一行,或者自定义auto-mode-alist:

(add-to-list 'auto-mode-alist '("\\.l\\'" . fundamental-mode))

要尝试的另一件事可能是indented-text-mode(可能禁用了自动填充功能)。