2010-02-16 3 views
5

J'ai un alias dans bash qui lance emacsclient si emacs daemon est déjà en cours d'exécution et démarre emacs sinon. Cependant, dans le cas où une nouvelle instance d'emacs est lancée, puis-je la faire fonctionner en arrière-plan pour que je puisse toujours utiliser ce terminal (ou le fermer)? Dans mon profil bash, jecréer un alias emacs qui commence en arrière-plan?

alias ec="/usr/bin/emacsclient.emacs-snapshot -n -c -a /usr/bin/emacs-snapshot" 

Et je pourrais être au terminal et tapez

$ ec newfile 

Si le démon emacs est pas déjà en cours d'exécution, est-il un alias que je peux créer pour rendre la ligne ci-dessus faire l'équivalent de

$ emacs newfile & 

au lieu de

$ emacs newfile 

(Je devrais aussi mentionner que j'utilise Linux Ubuntu et qu'emacs-snapshot est assigné à l'alias, 'emacs').

Merci beaucoup!

Répondre

4

Au lieu d'appeler directement /usr/bin/emacs-snapshot, écrire un script qui appelle /usr/bin/emacs-snapshot en arrière-plan, puis retourne:

#!/bin/sh 
case $# in 
    0) /usr/bin/emacs-snapshot & 
    *) /usr/bin/emacs-snapshot "[email protected]" & 
esac 

Puis invoquez le script de la manière ordinaire; il lancera un processus d'arrière-plan emacs et reviendra immédiatement.

Si vous voulez obtenir la fantaisie, vous pouvez utiliser /bin/bash et disown le processus après la esac (obtenir le pid avec $!).

+1

Pourquoi la 'case'? Juste en utilisant 'myscript" $ @ "' fonctionnera de la même manière que 'myscript' quand $ # est o. – dubiousjim

+1

@profjim: peut-être dans bash mais pas dans les anciennes versions de '/ bin/sh'. Le 'case' garantit la portabilité. Dans les anciennes versions, 'myscript '$ @" 'se comporte comme' myscript' "' quand '$ #' est 0. Quand vous êtes aussi vieux que moi, vous apprenez à conserver la "compatibilité bug-for-bug". –

+0

bon à savoir, merci! – dubiousjim

2

Bien que ce ne soit pas la réponse directe à votre question, c'est la façon la plus élégante de "démarrer emacs deamon ou d'exécuter emacsclient autrement". Créez l'alias suivant: alias emacs=emacsclient -c -a "". A partir de man emacsclient:

-a, --alternate-éditeur = EDITOR ... Si la valeur de EDITOR est la chaîne vide, exécutez `emacs --daemon » pour démarrer Emacs en mode démon, et essayez de vous y connecter.

Questions connexes