Comment ouvrir un fichier dans un processus emacs existant à partir de la ligne de commande?


14

J'ai plusieurs scripts qui lanceront toutes les applications et fichiers liés à un projet spécifique. Mais, il lancera plusieurs instances emacs, plutôt que de simplement ouvrir les fichiers emacs actuels. Je préfère que les emacs actuels ouvrent simplement les fichiers texte du projet dans un nouveau tampon.

Des idées comment je peux faire ça?


Jetez un oeil à ma réponse stackoverflow.com/a/38655619/2450748 Bien que 5 ans plus tard :)
nexayq

Réponses:


21

M-x server-startà l'intérieur de la session Emacs, puis utilisez emacsclient -n file1 file2 ...pour ajouter des fichiers aux Emacs existants. Il existe des options supplémentaires que vous voudrez peut-être utiliser, par exemple -cpour ouvrir les fichiers dans une nouvelle fenêtre (cadre).


merci dood. Voilà ce que je dois savoir. Je ne vérifie pas encore la «bonne réponse», car j'ai entendu que vous devriez toujours la garder ouverte un peu pour donner aux autres une chance de contribuer. Mais j'ai déjà mis votre réponse dans certains scripts.
bev

Normalement, vous voudriez mettre (server-start)votre fichier .emacs, plutôt que de démarrer le serveur manuellement. J'utilise (and window-system (server-start))pour éviter de démarrer le serveur si j'utilise emacs dans un terminal.
cjm

Dans Emacs moderne, il est tout aussi utile dans un terminal; voir l' -toption.
geekosaur

@cjm - en fait, je démarre le serveur dans mon fichier .emacs. Je ne l'ai tout simplement pas utilisé :-)
bev

5

Mettez (server-start)votre .emacsdossier.

Ajoutez ceci à ~/.bashrc

alias myedit='emacsclient --alternate-editor="" --no-wait $*' #quotes intentionaly left blank

puis utilisez myeditcomme éditeur. Vous devrez utiliser l' -coption pour afficher une fenêtre.

Vous pouvez donc faire ceci:

myedit -c a-file
run-script #that uses myedit

ou

run-script #that uses myedit
myedit -c

Richard, merci pour la contribution. Je suis encore perplexe à propos de votre script. Tout d'abord, comme emacsclient n'a pas d'option -c, je suppose que c'est une chose bash, mais je ne sais pas. Deuxièmement, pourquoi ne pas mettre emacs comme éditeur alternatif? Merci
bev

# $ emacsclient --help .... Les OPTIONS suivantes sont acceptées: ... -c, --create-frame Créez un nouveau cadre au lieu d'essayer d'utiliser le cadre Emacs actuel ... -a EDITOR, --alternate -editor = EDITOR Editor vers lequel se tourner si le serveur ne fonctionne pas Si EDITOR est la chaîne vide, démarrez Emacs en mode démon et essayez de vous
reconnecter

Vous n'avez pas besoin (et, en fait, vous ne voulez probablement pas) d'utiliser des paramètres de position dans la définition d'un alias. Considérez comment se alias foo='echo bar $*'développe set quux; foo baz. Si vous souhaitez utiliser les paramètres de position, essayez-le comme une fonction shell:myedit() { emacsclient … "$@"; }
Chris Johnsen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.