我最近从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正常工作.
解决方法
由于我找到了一个令人满意的答案而且没有其他人的回复,我会发布我的答案并接受它,以防它帮助其他任何人.
我没有找到js-mode在emacs 23和emacs 24中表现不同的确切原因,但在.emacs或init.el中设置电子缩进模式会给出我想要的行为.有了这个,它实际上在你输入右括号之前缩进,但这对我有用.这是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)