6

我最近从 emacs 23 升级到 emacs 24。使用默认的 js-mode 使用 JavaScript,我注意到 emacs23 与 emacs24 中的 js-mode 之间存在细微但令人讨厌的差异。为了确保它不是我的设置之一,我使用该--no-init-file选项启动了 emacs23 和 emacs24,我看到了同样的问题,即:

在 js 模式下的 emacs23 中,当您键入右大括号时},它会暂时将光标跳回到匹配的左大括号,然后将右大括号缩进到适当的缩进级别。

当我在 emacs24 中执行此操作时,临时光标会按预期跳转到匹配的左大括号,但它不会缩进右大括号,这让我按了 Tab 键来完成工作。

有其他人看到这种差异吗?如果是这样,关于如何解决它的任何想法?在我的 init.el 中的某个位置是否有很好的“缩进闭合卷曲”类型的变量?

我在 Xubuntu Linux 上使用 emacs(我从源代码安装)。我还没有在其他平台上比较 23 和 24。

注意:有人可能会建议改用 Yegge 的 js2-mode,但我通常不喜欢使用它,希望让 js-mode 正常工作。

4

2 回答 2

11

由于我找到了令人满意的答案并且没有收到其他人的消息,因此我将发布我的答案并接受它,以防它对其他人有所帮助。

我没有找到 js-mode 在 emacs 23 和 emacs 24 中表现不同的确切原因,但是electric-indent-mode在你的 .emacs 或 init.el 中设置会给出我想要的行为。有了这个,它实际上会在你输入右大括号之前缩进,但这对我有用。这是 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)
于 2012-07-08T12:44:58.927 回答
0

谢谢你,midpeter444。(electric-indent-mode t) 就像一个魅力。我用谷歌搜索过,有人建议将 js-auto-indent-flag 设置为非 nil,它在我的 Emacs 24.3 上不起作用,即使确实有一个 js-auto-indent-flag 变量可以通过'customize-组js',它没有效果。我发现 java.el 没有使用它,尽管它是在源代码中声明的。

于 2013-11-20T06:13:29.900 回答