Dado que emacsclient puede manejar el largo tiempo de carga de paquetes de manera correcta, realmente quiero mantener al menos un proceso de emacs, y la mayoría de las veces solo un proceso de emacs , abrir como proceso en segundo plano y ocultar mejor la GUI.
En este momento definí la siguiente función en .bashrc:
emc ()
{
if [[ $# -eq 0 ]]; then
emacs --eval "(suspend-frame)" &
return
fi
args=($*);
setsid emacsclient -c -e "(find-file \"${args[*]}\")"
}
Y también tiene la siguiente línea en .bashrc:
emc
Entonces, cada vez que abro un shell, terminaré teniendo un nuevo proceso de emacs.
El problema es que tendré muchos procesos emacs innecesarios adicionales después de abrir muchos shells. Sin embargo, solo quiero mantener un solo proceso de emacs todo el tiempo desde el inicio para ocultar mejor la GUI .
emacsclient
gui
coleccionables
fuente
fuente

emacs --eval "(suspend-frame)"lugar deemacs --daemon( emacswiki.org/emacs/EmacsAsDaemon ). ¿Hay alguna razón por la que eliges no invocar a emacs como demonio? Podría usar algo comopgrep -U `whoami` emacs || emacs --daemon ¶ asegurarse de que se está ejecutando.Respuestas:
Lo hago iniciando un demonio emacs cuando inicio sesión. El lugar donde coloca este comando depende de su administrador de escritorio. Yo uso
i3, que está configurado para ejecutar un script en el inicio de sesión que incluye lo siguiente:Con eso, emacs siempre se ejecuta en segundo plano, y abro un nuevo cliente con
emacsclient -c -n, vinculado a una combinación de teclas conveniente en el administrador de ventanas. Si está trabajando en una terminal, solo necesita un alias simple comoalias emc='emacsclient', posiblemente con-n,-co-targumentos, dependiendo de cómo lo use.Verifique las opciones para emacsclient en el manual: ( (emacs) Opciones de emacsclient , accesibles desde Emacs por
C-h r m emacsclient options <enter>). Puede utilizar la-abandera para iniciar automáticamente una emacs demonio si este no está en ejecución y,-co-tpara abrir un nuevo marco o cliente de terminal, en lugar de la reutilización de una existente (en la misma sesión):'-un comando' '--alternate-editor = COMMAND' Especifique un comando para ejecutar si 'emacsclient' no puede contactar con Emacs. Esto es útil cuando se ejecuta 'emacsclient' en un script. Como excepción especial, si COMMAND es la cadena vacía, entonces 'emacsclient' inicia Emacs en modo daemon (como 'emacs --daemon') y luego intenta conectarse de nuevo. '-C' '--create-frame' Cree un nuevo "marco de cliente" gráfico, en lugar de utilizar uno existente Marco Emacs. Consulte a continuación el comportamiento especial de 'Cx C-c' en un marco del cliente Si Emacs no puede crear un nuevo marco gráfico (por ejemplo, si no puede conectarse al servidor X), intenta crear un texto marco del cliente terminal, como si hubiera proporcionado la opción '-t' en lugar. '-t' '--tty' '-noroeste' Cree un nuevo marco de cliente en el terminal de texto actual, en lugar de utilizando un marco Emacs existente. Esto se comporta como el '-c' opción, descrita anteriormente, excepto que crea un terminal de texto marco (* nota Terminales sin ventana: :).fuente
Si está utilizando un sistema operativo que utiliza el administrador de servicios systemd (que actualmente incluye la mayoría de las distribuciones de GNU / Linux), entonces la mejor solución podría ser utilizar systemd para iniciar su demonio Emacs en el arranque. Puede hacer esto creando un archivo
$HOME/.config/systemd/user/emacs.servicecon el siguiente contenido:Luego, debe iniciar el servicio y configurarlo para que se inicie automáticamente para todas las botas futuras:
Ahora puede usar
emacsclientcomo de costumbre. Si suele ejecutar con los-n,-co-tlas opciones, se puede establecer un alias en su concha. También es posible que desee establecer las variables de entornoEDITORy / oVISUALpara que se ejecuten deemacsclientla manera que desee. Por ejemplo, en Bash, puede agregar lo siguiente a su.bashrcarchivo:Si alguna vez necesita detener el demonio Emacs, puede hacerlo de la siguiente manera:
Y si quieres evitar que se ejecute permanentemente en el arranque:
fuente
La forma en que lo hago es bastante similar a una respuesta anterior, al tener un alias definido en mi .bashrc para
emacs --daemonAparte de esto, tengo un atajo de teclado
ctrl-alt-Econfigurado enemacsclient -c. Cuando quiero comenzar a trabajar en emacs, abro un terminal y escribodsy llamo cada instancia de emacsclient con mi acceso directo.Espero que esto ayude a alguien.
fuente