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 &
para 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
,-c
o-t
argumentos, 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-a
bandera para iniciar automáticamente una emacs demonio si este no está en ejecución y,-c
o-t
para abrir un nuevo marco o cliente de terminal, en lugar de la reutilización de una existente (en la misma sesión):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.service
con el siguiente contenido:Luego, debe iniciar el servicio y configurarlo para que se inicie automáticamente para todas las botas futuras:
Ahora puede usar
emacsclient
como de costumbre. Si suele ejecutar con los-n
,-c
o-t
las opciones, se puede establecer un alias en su concha. También es posible que desee establecer las variables de entornoEDITOR
y / oVISUAL
para que se ejecuten deemacsclient
la manera que desee. Por ejemplo, en Bash, puede agregar lo siguiente a su.bashrc
archivo: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 --daemon
Aparte de esto, tengo un atajo de teclado
ctrl-alt-E
configurado enemacsclient -c
. Cuando quiero comenzar a trabajar en emacs, abro un terminal y escribods
y llamo cada instancia de emacsclient con mi acceso directo.Espero que esto ayude a alguien.
fuente