Defina VISUALcomo emacsclient -c(ou alguma outra variação sem -n).
A opção -nfaz emacsclientcom 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 VISUALpara sair quando terminar de editar, ou seja, quando você fechar o buffer no Emacs. Isso é exatamente o que emacsclientsem -nfaz: 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.
-ntambém impedirá o emacsclient de trabalhar como editor para o git.