如何修复 emacs 24 中的 javascript 模式更改?
Posted
技术标签:
【中文标题】如何修复 emacs 24 中的 javascript 模式更改?【英文标题】:How can I fix a javascript-mode change in emacs 24? 【发布时间】:2012-07-05 01:36:27 【问题描述】:我最近从 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 正常工作。
【问题讨论】:
【参考方案1】:由于我找到了一个令人满意的答案并且没有收到任何其他人的消息,我将发布我的答案并接受它以防它帮助其他人。
我没有找到 js-mode 在 emacs 23 和 emacs 24 中表现不同的确切原因,但是在 .emacs 或 init.el 中设置 electric-indent-mode
会给出我想要的行为。有了这个,它实际上会在您键入右大括号之前缩进 ,但这对我有用。这是 emacs 24 中的新设置。您的 .emacs 条目将是:
(electric-indent-mode t)
我遇到的一个问题是org-mode不喜欢electric-indent-mode,所以你可以专门为javascript/java/c/etc设置electric-indent-mode。模式或专门为组织模式取消设置。我选择了后者:
(defun my-org-mode-hooks ()
(electric-indent-mode -1))
(add-hook 'org-mode-hook 'my-org-mode-hooks)
【讨论】:
【参考方案2】:谢谢你,midpeter444。 (electric-indent-mode t) 就像一个魅力。 我用谷歌搜索过,有人建议将 js-auto-indent-flag 设置为非 nil,它在我的 Emacs 24.3 上不起作用,即使确实有一个 js-auto-indent-flag 变量可以通过'customize-组js',它没有效果。我发现 java.el 并没有使用它,虽然它是在源代码中声明的。
【讨论】:
以上是关于如何修复 emacs 24 中的 javascript 模式更改?的主要内容,如果未能解决你的问题,请参考以下文章