(Tenga en cuenta que, a título de lo contrario, esta cuestión no es la misma que Cómo iniciar en modo demonio y suprimir diálogos interactivos? , Ya que esa pregunta fue "respondió" por el presentador de la eliminación de lo que estaba causando una determinada pronta a aparecer.)
Me gustaría saber si hay una forma general de evitar que se emacs --daemon
cuelgue para siempre esperando una respuesta a un mensaje que se muestra en un minibúfer que aún no existe.
Es imposible conectarse con un cliente de emacs para responder estas preguntas, porque el servidor no se inicia hasta que Emacs finaliza la secuencia de inicio. (Esto significa que si tiene ALTERNATE_EDITOR configurado en la cadena vacía, lo que hace emacsclient
que un servidor que no puede encontrar inicie un nuevo demonio, puede terminar con varios demonios de Emacs todos atascados y esperando). Tengo que killall emacs
solucionar el problema. Antes de continuar.
Puedo jugar whack-a-mole con cada cosa que causa un mensaje de inicio cuando lo identifico (iniciando Emacs en modo no demonio y viendo lo que está pidiendo), pero no es una solución porque no puede detener el próximo demonio de colgar en el inicio por una nueva razón.
Para dar un ejemplo: una razón común por la que se colgaría fue después de un reinicio del sistema o un bloqueo de Emacs, cuando el primer Emacs posterior al reinicio quería saber si estaba bien robar archivos de bloqueo de los Emacs desaparecidos. Podría arreglar eso creando consejos para hacer que ese mensaje siempre responda "sí" sin interacción. Pero luego, uno de los archivos que estaba abierto en la sesión anterior fue un archivo TRAMP que requería una contraseña sudo o SSH, por lo que el demonio está atascado esperando una solicitud de contraseña. Así que lo arreglo editando manualmente el archivo de sesión (con vi
o emacs -q
!) Para eliminar los archivos ofensivos, pero eso no evita que suceda la próxima vez.
Entonces, puedo dejar de cargar mi sesión automáticamente al inicio y cambiarlo a un comando que debo ejecutar manualmente desde mi primer cliente de correo electrónico. Pero si no está cargando mi sesión en segundo plano para que esté lista para cuando esté lista para usarla, ¡se pierde todo el propósito del demonio!
Entonces, lo que me gustaría es:
- (Mejor) Alguna forma de diferir las indicaciones del minibúfer hasta que abra un cliente de correo electrónico, mientras sigo completando el resto de la inicialización.
- (OK) Alguna forma de hacer todas las solicitudes de minibúfer que no he aconsejado de otra manera, como se describió anteriormente, solo devuelve a
no
menos que se esté ejecutando un cliente de correo electrónico. Puedo vivir con mis buffers TRAMP con errores, siempre y cuando funcione principalmente.
¿Hay alguna forma de lograr alguno de estos objetivos?
(read-desktop)
, luego, antes de ejecutarlo emacs --daemon
, cree un archivo de bloqueo falso colocando un número entero en .emacs.desktop.lock (dónde colocar ese archivo, desafortunadamente, depende de su configuración , pero probablemente sea tu homedir o ~ / .emacs.d / .