关于git:如何从emacsclient将Emacs放入magit的提交编辑模式

How to put Emacs into magit's commit edit mode from emacsclient

我已将 Git\\'s "core.editor" 配置设置为 "emacsclient" 并在启动服务器的情况下运行 Emacs 会话。当我从终端运行"git commit"时,它会按预期在我的 Emacs 中打开一个新缓冲区,但该缓冲区始终处于"基本模式"。它曾经以 magit 用于编辑提交消息的任何模式打开,但这是一台新计算机,我只是不确定所有部分如何协同工作。我什至不清楚 magit 正在使用什么模式,因为它是次要模式的集合,而不是主要模式。所以我有点难过如何解决这个问题。

任何帮助表示赞赏!


我不确定 magit 使用什么,但 vc 应该使用 log-edit-mode 的变体。

1
2
3
(require 'log-edit)
(require 'vc-git)
(add-to-list 'auto-mode-alist '("COMMIT_EDITMSG\\\'" . vc-git-log-edit-mode))

我需要 require 真的很奇怪;要么是 Emacs 中的错误,要么我正在做一些奇怪的事情(尽管它对我来说似乎一点也不奇怪)。


作为@bingen 答案的扩展,如果您是 use-package 用户,

1
2
3
4
(use-package git-commit
  :init
  (global-git-commit-mode)
  )

即使开启延迟加载也能正常工作:

1
2
3
4
(setq
 use-package-always-defer t
 use-package-always-ensure t
 )

我遇到了同样的问题,在这里找到了解决方案:

https://emacs.stackexchange.com/a/17733/12560

其实我只需要添加

1
(global-git-commit-mode)

到我的 init 并且它起作用了。