¿Usar `emacsclient` como` git config core.editor` e invocar `git commit` como` shell-command` en Emacs?

Pregunta:

Estoy tratando de usar Emacs 25.1.1 (versión gráfica, Windows 10) como editor principal y editor para operaciones de git.

En mi flujo de trabajo, invoco git a través de Mx shell-command .

Probé las siguientes dos opciones hasta ahora:

  1. git config --global core.editor "emacs -Q"

    Con esto, Mx shell-command RET git commit funciona bien, ya que se usa una nueva instancia liviana de emacs.

    Desventaja: Completar con M-/ también dabbrev-expand como dabbrev-expand es menos útil de lo que podría ser.

  2. git config --global core.editor "emacsclient --no-wait --create-frame"

    Con esta configuración, intentar ejecutar git sincrónicamente como Mx shell-command RET git commit por otro lado hace que los procesos emacsclient y server emacs cuelguen indefinidamente, hasta que `emacsclient sea eliminado, mientras que la invocación asíncrona Mx shell-command RET git commit & funciona, pero esta configuración es demasiado frágil, ya que olvidar el & hace que Emacs casi se bloquee.

¿Hay alguna forma de usar emacsclient como editor de git, que sea compatible con el Mx shell-command ?

Respuesta:

Si ejecuta git dentro de un entorno posix (cygwin o msys, creo que git-bash usa msys), podría crear una función en su ~ / .profile:

function already_emacsing () {
   emacsclient --eval '(find-file-other-window $1)'
}
EDITOR="already_emacsing"

No puedo probarlo en su configuración en este momento, pero todas las partes individuales funcionan y no veo ninguna razón por la que no deberían encajar lo suficientemente bien. No puedo pensar en una forma de hacer lo mismo con la secuencia de comandos por lotes, pero es probable que pueda hacer la misma llamada emacsclient con una secuencia de comandos de PowerShell o algo así.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım