(Notez que, au contraire, cette question n'est pas la même que Comment démarrer en mode démon et supprimer les dialogues interactifs?, Car cette question a été "répondue" par le demandeur en éliminant ce qui provoquait l'apparition d'une invite particulière.)
Je voudrais savoir s'il existe un moyen général d'éviter emacs --daemon
de suspendre indéfiniment une réponse à une invite affichée dans un mini-tampon qui n'existe pas encore.
Il est impossible de se connecter avec un emacsclient pour répondre à ces invites, car le serveur ne démarre pas tant qu'Emacs n'a pas terminé la séquence de démarrage. (Cela signifie que si ALTERNATE_EDITOR est défini sur la chaîne vide, ce qui fait emacsclient
qu'un serveur introuvable ne démarre pas un nouveau démon, vous pouvez vous retrouver avec plusieurs démons Emacs tous bloqués et en attente.) Je dois killall emacs
résoudre le problème et le résoudre avant de continuer.
Je peux jouer whack-a-mole avec chaque chose provoquant une invite au démarrage lorsque je l'identifie (en démarrant Emacs en mode non démon et en voyant ce qu'il demande), mais ce n'est pas une solution car il ne peut pas arrêter le prochain démon de se bloquer au démarrage pour une nouvelle raison.
Pour donner un exemple: une raison courante pour laquelle il se bloque était après un redémarrage du système ou un crash Emacs, lorsque le premier Emacs après le redémarrage voulait savoir s'il était correct de voler des fichiers de verrouillage des Emacs disparus. Je pourrais résoudre ce problème en créant des conseils pour que cette invite réponde toujours «oui» sans interaction. Mais ensuite, l'un des fichiers ouverts lors de la sauvegarde de la session précédente était un fichier TRAMP nécessitant un mot de passe sudo ou SSH, donc le démon est coincé en attente d'une invite de mot de passe. Je corrige donc cela en modifiant manuellement le fichier de session (avec vi
ou emacs -q
!) Pour supprimer les fichiers incriminés, mais cela ne l'empêche pas de se produire la prochaine fois.
Ainsi, je peux arrêter de charger ma session automatiquement au démarrage et la changer en une commande que je dois exécuter manuellement à partir de mon premier emacsclient. Mais s'il ne charge pas ma session en arrière-plan, il est donc prêt au moment où je suis prêt à l'utiliser, tout le but du démon est perdu!
Donc ce que j'aimerais, c'est:
- (Meilleur) Un moyen de différer les invites du mini-tampon jusqu'à ce que j'ouvre un emacsclient, tout en terminant le reste de l'initialisation.
- (OK) Un moyen de faire toutes les invites du
no
mini-tampon que je n'ai pas déjà conseillé autrement, comme décrit ci-dessus, revenez à moins qu'un emacsclient ne soit en cours d'exécution. Je peux vivre avec mes tampons TRAMP en erreur tant que cela fonctionne principalement.
Existe-t-il un moyen d'atteindre l'un de ces objectifs?
(read-desktop)
, puis, avant d'exécuter emacs --daemon
, de créer un faux fichier de verrouillage en mettant un entier dans .emacs.desktop.lock (où placer ce fichier, malheureusement, dépend de votre configuration , mais probablement votre homedir ou ~ / .emacs.d / .