Étant donné qu'emacsclient peut gérer correctement le long temps de chargement des paquets, je veux vraiment garder au moins un processus emacs, et la plupart du temps un seul processus emacs , ouvert en tant que processus d'arrière-plan et mieux masquer l'interface graphique.
En ce moment, j'ai défini la fonction suivante dans .bashrc:
emc ()
{
if [[ $# -eq 0 ]]; then
emacs --eval "(suspend-frame)" &
return
fi
args=($*);
setsid emacsclient -c -e "(find-file \"${args[*]}\")"
}
Et aussi avoir la ligne suivante dans .bashrc:
emc
Donc, chaque fois que j'ouvre un shell, je vais finir par avoir un nouveau processus emacs.
Le problème est que j'aurai de nombreux processus emacs inutiles supplémentaires après avoir ouvert de nombreux shells. Cependant, je veux seulement maintenir un seul processus emacs tout le temps depuis le démarrage pour mieux masquer l'interface graphique .
emacsclient
gui
phonycollectibles
la source
la source
emacs --eval "(suspend-frame)"
plutôt queemacs --daemon
( emacswiki.org/emacs/EmacsAsDaemon ). Y a-t-il une raison pour laquelle vous choisissez de ne pas invoquer emacs en tant que démon? Vous pouvez utiliser quelque chose commepgrep -U `whoami` emacs || emacs --daemon &
pour vous assurer qu'il fonctionne.Réponses:
Je le fais en démarrant un démon emacs lorsque je me connecte. L'endroit où vous placez cette commande dépend de votre gestionnaire de bureau. J'utilise
i3
, qui est configuré pour exécuter un script à la connexion qui comprend les éléments suivants:Avec cela, emacs s'exécute toujours en arrière-plan, et j'ouvre un nouveau client avec
emacsclient -c -n
, lié à un raccourci clavier pratique dans le gestionnaire de fenêtres. Si vous travaillez dans un terminal, vous n'avez besoin que d'un simple alias commealias emc='emacsclient'
, éventuellement avec-n
,-c
ou des-t
arguments, selon la façon dont vous l'utilisez.Consultez les options pour emacsclient dans le manuel: ( (emacs) emacsclient Options , accessible depuis Emacs par
C-h r m emacsclient options <enter>
). Vous pouvez utiliser l'-a
indicateur pour démarrer automatiquement un démon emacs s'il n'est pas déjà en cours d'exécution,-c
ou-t
pour ouvrir un nouveau cadre ou client terminal, plutôt que de réutiliser un existant (dans la même session):la source
Si vous utilisez un système d'exploitation qui utilise le gestionnaire de services systemd (qui inclut de nos jours la plupart des distributions GNU / Linux), la meilleure solution pourrait être d'utiliser systemd pour démarrer votre démon Emacs au démarrage. Vous pouvez le faire en créant un fichier
$HOME/.config/systemd/user/emacs.service
avec le contenu suivant:Ensuite, vous devez démarrer le service et le configurer pour qu'il démarre automatiquement pour tous les futurs démarrages:
Vous pouvez maintenant utiliser
emacsclient
comme d'habitude. Si vous exécutez normalement avec les-n
,-c
ou les-t
options, vous pouvez définir un alias dans votre shell. Vous pouvez également définir les variables d'environnementEDITOR
et / ou pour qu'ellesVISUAL
s'exécutentemacsclient
comme vous l'aimez. Par exemple, dans Bash, vous pouvez ajouter les éléments suivants à votre.bashrc
fichier:Si jamais vous avez besoin d'arrêter le démon Emacs, vous pouvez le faire comme suit:
Et si vous voulez l'empêcher définitivement de s'exécuter au démarrage:
la source
La façon dont je le fais est assez similaire à une réponse précédente, en ayant un alias défini dans mon .bashrc pour
emacs --daemon
En dehors de cela, j'ai un raccourci clavier
ctrl-alt-E
défini suremacsclient -c
. Lorsque je veux commencer à travailler sur emacs, j'ouvre un terminal etds
saisis et appelle chaque instance emacsclient avec mon raccourci.J'espère que cela aide quelqu'un.
la source