【问题标题】:emacs - stop adding indentation to current and next line when pressing RETemacs - 按 RET 时停止向当前行和下一行添加缩进
【发布时间】:2014-12-08 22:03:53
【问题描述】:

我打开了一个名为 test.scss 的文件,当我在一行上按 RET 时,emacs 会在当前行添加 2 个空格,在下一行添加 4 个额外空格。

我用whitespace-mode 突出显示了文件的外观。

在按 RET 之前

按 RET 后

可以看到.my-element行自动缩进2个空格,新行缩进4个空格太多了。

我希望输出看起来像这样

想要的输出

我可以做些什么来让 emacs 产生我想要的输出?

这是describe-mode的输出:

Enabled minor modes: Auto-Composition Auto-Compression Auto-Encryption                 
Electric-Indent File-Name-Shadow Font-Lock Global-Eldoc                                
Global-Font-Lock Line-Number Menu-Bar Tooltip Whitespace                               

(Information about these minor modes follows the major mode info.)

SCSS mode defined in `css-mode.el':
Major mode to edit "Sassy CSS" files.

In addition to any hooks its parent mode `css-mode' might have run,
this mode runs the hook `scss-mode-hook', as the final step
during initialization.

虽然在这种情况下我处于 scss 模式,但我看到与我使用的大多数其他模式类似的行为,例如 ruby-modesgml-modejs.el 模式等。我想让行为与上面显示的期望输出相匹配。

【问题讨论】:

    标签: emacs indentation major-mode


    【解决方案1】:

    每种模式都可以以自己的方式处理缩进,您可能需要寻找特定于模式的设置才能让两格缩进在任何地方都能正常工作。

    对于初学者,你可以设置css-indent-offset,应该包括css-modescss-mode

    (setq css-indent-offset 2)
    

    您可以类似地设置许多其他模式的基本缩进。 ruby-mode 似乎使用ruby-indent-levelsgml-mode 使用sgml-basic-offset,而js-mode 使用js-indent-level

    【讨论】:

    • 谢谢。有没有办法将所有模式的缩进级别覆盖为 2?或者更好的是,自动检测文件的缩进并将其用作缩进级别?
    • @mark,一些类似的语言相互继承缩进设置。例如,具有类 C 语法的语言的许多模式都遵循 c-basic-offset。您可以尝试设置它并查看会发生什么;它可能适用于js-mode,但我不会为其他人打赌。一般来说,主要模式不需要遵守全局缩进设置,您可能需要单独配置它们。
    • 我找到了一个不错的小工具来检测缩进并为多种模式进行适当的设置github.com/jscheid/dtrt-indent
    • 由于(s)css-mode使用SMIE,所以可以使用M-x smie-config-guess
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    相关资源
    最近更新 更多