En général, je démarre emacs avec l'interface graphique et je démarre immédiatement un serveur avec (server-start)
. Maintenant, je peux facilement ouvrir des documents dans ma session emacs existante depuis le terminal via emacsclient -n <file>
ou depuis le navigateur de fichiers.
De temps en temps, cependant, je veux exécuter emacs dans mon terminal en utilisant emacsclient -t
. Cela se produit le plus souvent lors de l'écriture de journaux de validation git ou lors de l'exécution de très petites tâches. Dans ces cas, le fait que mon fichier init ait été chargé dans une instance GUI d'emacs signifie que je n'obtiens aucune de mes personnalisations spécifiques aux emacs TTY.
Je sais que je peux courir
emacs -nw -q -l "some-custom-init-file.el"
mais cela rechargera tous les packages à chaque fois. Puis-je avoir le meilleur des deux mondes? Existe-t-il un moyen de configurer un "démon TTY" afin que je puisse utiliser des personnalisations distinctes pour exécuter à l'intérieur du terminal par rapport à la visite du fichier dans une fenêtre emacs existante?
(setq linum-format "%d ")
dans le fichier de personnalisation TTY. De plus, mon thème de couleur semble toujours étrange en mode TTY, donc je vais certainement choisir un thème différent pour le TTY. En fait, je n'ai pas beaucoup de différences pour le moment, mais maintenant que je sais que je peux avoir différents serveurs, la liste peut s'allonger.M-x report-emacs-bug
et demande de nouvelles fonctionnalités telles que la possibilité d'avoir différents thèmes de visage dans les cadres TTY et GUI (en fait, un thème peut spécifier des couleurs complètement différentes pour ces différents types de cadres, vous pouvez donc également ajuster votre thème) . L'utilisation de plusieurs démons pour ces cas distincts n'est qu'une solution de contournement pour un manque de fonctionnalités correspondantes dans Emacs.Réponses:
Permet
emacs --daemon=your-server-name -l "custom-init-file"
de démarrer un nouveau serveur et deemacsclient -nw -s your-server-name
s'y connecter à partir du terminal lui-même. La section sur l'utilisation d'Emacs comme serveur dans le manuel contient plus d'options d'initialisation.la source
-q
commutateur pour empêcher moninit.el
exécution par défaut de s'exécuter avant le fichier d'initialisation personnalisé.)emacsclient -s your-server-name -e "(kill-emacs)"
ce que vous voulez? Ce qui précède appelle juste emacsclient et evals(kill-emacs)
. Vous pouvez également remplacer(kill-emacs)
par(save-buffers-kill-emacs)
.-q
En plus de la réponse de @ Vamsi, vous pouvez bénéficier des mêmes avantages tout en n'exécutant qu'un seul serveur en joignant des conseils à
make-frame-command
.Par exemple, lors de l'exécution dans le terminal, je veux que la couleur d'arrière-plan soit
black
(qui correspond à#202020
) mais je veux l'utiliser#202020
en mode graphique. J'ai implémenté cela avec:Vous pouvez obtenir beaucoup de kilométrage de cette utilisation
make-variable-frame-local
(set-background-color
dans ce qui précède est déjà cadre local).Je ne sais pas si c'est le meilleur modèle, mais si vous avez relativement peu de différences entre Emacs en mode TTY et en mode X, cela peut faciliter la gestion de la configuration.
Le code ci - dessus a été tiré de mon .emacs.d .
la source
(display-graphic-p)
donnet
si le cadre courant est graphique,nil
sinon. Étant donné que les images ne peuvent pas être déplacées entre graphiques et non (afaik), le fait d'attacher des conseils à la création d'images garantit que l'état souhaité est atteint pour l'image donnée.Vous n'avez pas besoin de conseils pour modifier les paramètres de différentes images exécutées dans le même démon emacs. Utilisez simplement le crochet
after-make-frame-functions
comme çaLe définir de cette façon a l'avantage supplémentaire, car il définit la configuration de trame souhaitée même si vous ne démarrez pas en mode démon.
Malheureusement, le cadre
load-theme
n'est pas local et les autres cadres sont également colorés si vous utilisez vraiment des thèmes différents pour le texte et les cadres graphiques.Informations bonus: configurez vos terminaux avec au moins 256 couleurs pour obtenir la vraie sensation du thème que vous avez sélectionné. Utilisez un paramètre comme celui-ci dans l'un de vos fichiers de démarrage du shell:
la source