Dada a informação adicional, eu acho que o seu emacsclient está se conectando ao servidor emacs "errado". (Ou melhor, o primeiro que foi iniciado: invocações subseqüentes de emacs --daemon
falharão ao iniciar o servidor já que o soquete de comunicação já está em uso). Se o daemon do emacs foi iniciado em uma sessão X anterior, ele está usando o erro errado. credenciais para se conectar ao display X e, assim, falhar.
Você pode descobrir qual processo do emacs está executando o servidor conectando-se a ele no modo não-gráfico / tty; execute o emacsclient em um terminal com a opção -nw
:
emacsclient -nw
Você pode matar um emacs em execução fazendo com que ele execute o código LISP através do emacsclient:
emacsclient -t --eval '(progn (server-save-buffers-kill-terminal 1) (save-buffers-kill-emacs 1))'
onde:
- a opção
-t
(alias para-nw
ou--tty
) é para evitar que o Emacs se conecte à exibição X; - o
server-save-buffers-kill-terminal
desanexa o emacsclient antes de você informar ao Emacs para parar (caso contrário, ele emitirá um prompt de confirmação); - a função
save-buffers-kill-emacs
é normalmente invocada porC-x C-c
, o argumento1
diz ao Emacs para não solicitar confirmação.
Além disso, eu acho que a razão pela qual você está tendo tantos emacs --daemon
em execução é que você invoca o emacsclient com a opção --alternate-editor=""
: o página do manual emacsclient (1) afirma que:
If the value of (the alternate) EDITOR is the empty string, then Emacs is started in daemon mode and emacsclient will try to connect to it.
Pode ser uma opção melhor para iniciar emacs --daemon
do seu script de inicialização do X session (por exemplo, .gnomerc
ou a configuração de sessão do GNOME) para que o gerenciador de sessão mate o daemon do emacs quando a sessão terminar.