使网络模式始终缩进空格


10

我正在使用emacs web-mode,而JS文件中的制表符表现得很奇怪。

我将制表符设置为缩进2个空格,但是当缩进达到8个空格时,Web模式将它们转换为制表符,然后继续制表2个空格,直到in达到另一个8,并将其转换为另一个制表符,依此类推。

我可以阻止这种情况发生,并告诉emacs / web-mode仅缩进空格吗?

编辑:

这是一个简短的嵌套函数示例:

(function() {
  function() {
    function() {
      function() {
    function() {
      // Indenting problem.
    }
      }
    }
  }
})()

它在Emacs中显然显示得很好,但是您可以在此处看到缩进问题。

我会在这里指出,这也发生在javascript模式下。


1
这是特定于网络模式的吗?还是发生在任何地方?
马拉巴巴

这仅在网络模式下发生,其他所有制表符都可以无限使用空格。
dieuwe 2014年

抱歉,javascript模式也做同样的事情。但这只是那两个。
dieuwe 2014年

javascript-mode您正在使用哪个内置的?另外,在缩进html时会发生这种情况web-mode吗?
dgtized

请发布您的init文件的内容。Emacs默认情况下使用8个空格的选项卡,因此在大多数模式下,您的init文件中必须有将其关闭的选项。
吉尔(Gilles)'所以

Answers:


10

通常,如果您希望缩进仅使用空格,则建议自定义:

(setq-default indent-tabs-mode nil)

这将强制缩进使用空格并且不使用制表符。我不确定是否web-mode使用常规方法进行缩进,因此它可能不尊重这一点。

您可以举一个示例文件进行演示吗?


3
向问题添加了一个示例。增加(setq indent-tabs-mode nil)似乎并没有改变任何东西都web-modejavascript-mode
dieuwe 2014年

3
我认为您应该使用,setq-default因为它indent-tabs-mode是本地缓冲区。
nperson325681 2014年

@progo好的,可以。非常感谢。
dieuwe 2014年

1
是否可以仅使用制表符缩进?我尝试了不同的设置,但仅使用混合的制表符/空格进行缩进。
Dfr

1
@Dfr您应该(setq-default indent-tabs-mode t).emacs
fxbois中

3

请尝试在您的emacs配置文件中使用此代码以强制Web模式缩进。我从网络模式主页上引用了它

(require 'web-mode)
(defun my-web-mode-hook ()
  "Hooks for Web mode."
  (setq web-mode-markup-indent-offset 2)
)
(add-hook 'web-mode-hook  'my-web-mode-hook)

这也行吗?(add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
Andrew Lamarra
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.