首页 文章

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

提问于
浏览
7

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

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

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

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

2 回答

  • 3

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

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

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

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

    -*-mode: c-mode-*-
    

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


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

  • 1

    附加提示:您可能认为您想要的是Emacs ' generic behavior -- what it uses when it doesn' t对文件格式有任何特殊模式 . 这在emacs术语中称为基本模式:因此您可以使用 M-x fundamental-mode 动态请求它,或者将 -*- mode: fundamental -*- 放在文件的第一行,或者像这样自定义auto-mode-alist:

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

    另一件事可能是 indented-text-mode (可能禁用了自动填充) .

相关问题