我在 docker 内运行 emacs24.5.1(基本映像是 Ubuntu)。我通过 apt-get 安装了 emacs。此外,我通过 melpa 安装了 magit(magit 版本 magit-20170702.858),它很棒。但是,当我尝试提交某些内容时,magit 会遇到以下错误:
1 git ? commit --
/usr/bin/emacsclient.emacs24: connect: Connection refused
/usr/bin/emacsclient.emacs24: error executing alternate editor
"sh -c 'echo "WITH-EDITOR: $$ OPEN $0"; sleep 604800 & sleep=$!; trap "kill $sleep; exit 0" USR1; trap "kill $sleep; exit 1" USR2; wait $sleep'"
error: There was a problem with the editor
'/usr/bin/emacsclient.emacs24 --socket-name=/root/.emacs.d/server/server'.
Please supply the message using either -m or -F option.
当我尝试手动启动 emacsclient 时,emacsclient 出现错误:
/usr/bin/emacsclient.emacs24 --socket-name=/root/.emacs.d/server/server tmp.make
/usr/bin/emacsclient.emacs24: connect: Connection refused
/usr/bin/emacsclient.emacs24: error accessing socket "/root/.emacs.d/server/server"
这表明这不是真正的 magit 错误,而是 emacsclient 错误,实际上它可能正在发生,因为我在 docker 中运行,尽管我对此不确定。
有没有人知道如何启动 emacsclient 或绕过 magit 中 emacsclient 的要求。曾经有一个插件模式可以绕过 magit 中的 emacsclient,但不久前它已被弃用并从 melpa 中删除,所以我不太热衷于尝试它。
更新
emacs --daemon
在 docker 内开始时没有问题,但 magit commit 仍然不起作用,所以也许这毕竟不是 docker 问题?
emacs --daemon
Warning: due to a long standing Gtk+ bug
http://bugzilla.gnome.org/show_bug.cgi?id=85715
Emacs might crash when run in daemon mode and the X11 connection is unexpectedly lost.
Using an Emacs configured with --with-x-toolkit=lucid does not have this problem.
Loading 00debian-vars...
Loading 00debian-vars...done
Loading /etc/emacs/site-start.d/50cmake-data.el (source)...
Loading /etc/emacs/site-start.d/50cmake-data.el (source)...done
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...
Loading debian-ispell...
Loading /var/cache/dictionaries-common/emacsen-ispell-default.el (source)...
Loading /var/cache/dictionaries-common/emacsen-ispell-default.el (source)...done
Loading debian-ispell...done
Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...
Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...done
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...done
Loading /root/.emacs.d/init_func.el (source)...
Loading /root/.emacs.d/init_func.el (source)...done
Loading flymake...
Loading flymake...done
Loading company...
Loading company...done
Loading linum...
Loading linum...done
[yas] Prepared just-in-time loading of snippets successfully.
Loading /root/.emacs.d/recentf...
Loading /root/.emacs.d/recentf...done
Cleaning up the recentf list...
Cleaning up the recentf list...done (0 removed)
Starting Emacs daemon.