我最近从emacs 23升级到emacs 24.使用默认的js-mode使用JavaScript,我注意到emacs23与emacs24中的js-mode之间存在轻微但烦人的差异。为了确保它不是我的设置之一,我使用--no-init-file
选项启动了emacs23和emacs24,我看到同样的问题,即:
在js-mode的emacs23中,当你键入一个结束大括号}
时,它会暂时将光标跳回到匹配开口花括号,然后将右大括号缩进适当的缩进程度。
当我在emacs24中执行此操作时,临时光标跳转到匹配的开口大括号按预期发生,但是不缩进右大括号,让我点击Tab键完成作业
还有其他人看到这种差异吗?如果是这样,有关如何修复它的任何想法?是否在我的init.el中设置了一个很好的“缩进 - 收尾 - 卷曲”类型的变量?
我在Xubuntu Linux上使用emacs(我从源代码安装)。我还没有比较其他平台上的23和24。
注意:有人可能会建议使用Yegge的js2-mode,但我一般不喜欢使用它,并希望让js-mode正常工作。
答案 0 :(得分:10)
由于我找到了一个令人满意的答案而没有收到其他人的回复,我会发布我的答案并接受它,以防它帮助其他人。
我没有找到js-mode在emacs 23与emacs 24中表现不同的确切原因,但在.emacs或init.el中设置electric-indent-mode
会给出我想要的行为。有了它,它实际上在之前缩进你输入右括号,但这对我有用。这是emacs 24中的新设置。您的.emacs条目将是:
(electric-indent-mode t)
我遇到的一个问题是org-mode不喜欢电子缩进模式,所以你可以为javascript / java / c / etc专门设置电子缩进模式。模式或专门为组织模式取消设置。我选择了后者:
(defun my-org-mode-hooks ()
(electric-indent-mode -1))
(add-hook 'org-mode-hook 'my-org-mode-hooks)
答案 1 :(得分:0)
谢谢你,midpeter444。 (电动缩进模式t)就像一个魅力。 我google了,有人建议将js-auto-indent-flag设置为非零,它在我的Emacs 24.3上不起作用,即使有一个js-auto-indent-flag变量也可以通过'custom-来定制 - group js',它不起作用。我发现java.el不使用它,虽然它是在源代码中声明的。