Emacs在Flex和Bison中处理自动缩进的能力很差。事实上,它似乎不支持flex模式。那么,emacs用户如何应对这些?我喜欢VIm,但我不想切换,因为我在Emacs中更快更舒服。
几个月前,我为Bison设立了第三方elisp模块,但当它的缩进破坏时,它永远不会被修复。简而言之,这是一个糟糕的黑客。或者有没有办法可以关闭.l和.y文件的自动缩进(所以按下会做一个缩进)?我如何仅为emacs更改此elisp设置?
elisp的简洁指南也非常有用。如果我有正确的文档,我不介意花几天时间编写我自己的flex和bison模式。
答案 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
(可能禁用了自动填充功能)。