Defina VISUAL
como emacsclient -c
(ou alguma outra variação sem -n
).
A opção -n
faz emacsclient
com que retorne assim que entrar em contato com a instância do Emacs em execução para solicitar a edição do arquivo. O programa que chama o editor (aqui, zsh, mas isso se aplica igualmente a qualquer outro programa que chama $VISUAL
) sabe que você terminou de editar porque o programa que ele chamou saiu, o que, com -n
, acontece essencialmente imediatamente.
Você precisa organizar o programa invocado VISUAL
para sair quando terminar de editar, ou seja, quando você fechar o buffer no Emacs. Isso é exatamente o que emacsclient
sem -n
faz: ele contata a instância Emacs correndo para dizer-lhe para abrir o arquivo, em seguida, fica em torno de até Emacs responde a dizer emacsclient que a sessão de edição é concluída. A maneira normal de terminar uma sessão de edição é pressionar C-x #
( server-edit
). Isso notifica o emacsclient e fecha o buffer, bem como o quadro quando ele foi aberto emacsclient -c
. Fechar o buffer também notifica o processo emacsclient de que a sessão está concluída, mas você recebe um aviso ("O buffer ... ainda tem clientes, mata-o?"), Que pode ser desativado substituindo a função server-kill-buffer-query-function
(o RMS acha que é perigoso). Em um quadro aberto poremacsclient -c
, pressionar C-x C-c
( save-buffers-kill-terminal
) salva o arquivo, fecha e fecha o quadro.
-n
também impedirá o emacsclient de trabalhar como editor para o git.