Je suis un novice en matière d'emacs. Je travaille avec emacs-24.1 sur redhat linux, et j'essaie d'évaluer une expression elisp. Ce que je veux qu'emacs fasse, c'est évaluer l'expression elisp sans lancer emacs lui-même. J'essaie plusieurs choses
emacs --eval '(+ 2 3)'
Je ne sais pas si emacs évalue l'expression, mais le résultat n'est pas affiché sur la console et la fenêtre emacs s'affiche. J'ai ensuite essayé ceci
emacsclient --eval '(+ 2 3)'
Le client Emacs attend un serveur. Il n'a pas pu trouver le serveur et a donc lancé une erreur (can't find socket. start server etc). J'ai donc lancé un serveur (le nom du serveur est SERVER) et j'ai relancé emacsclient.
emacsclient --server-file=SERVER -e '(+ 2 3)'
Cette fois, emacs a évalué l'expression et a imprimé le résultat sur la console. C'est parce qu'emacs utilise le serveur existant pour évaluer l'expression. Maintenant, j'ai un problème lorsque le serveur n'est pas en cours d'exécution.
emacsclient --server-file=ANOTHER_SERVER -e '(+ 2 3)' -a emacs
Cette fois, je n'obtiens aucune erreur sur la console. Emacs lance une nouvelle fenêtre, à cause de -a (mon .emacs contient la commande (server-start) et le nom du serveur est ANOTHER_SERVER). Mais emacs essaie ensuite d'éditer le fichier (+ 2 3). Cela apparaît sur la ligne de mode. Je suis confus. emacsclient --help m'a montré ceci
-e, --eval Evaluate the FILE arguments as ELisp expressions
et c'est ce que dit le manuel d'emacs.
'-e'
'--eval'
Tell Emacs to evaluate some Emacs Lisp code, instead of visiting some files.
When this option is given, the arguments to emacsclient are interpreted as a
list of expressions to evaluate, not as a list of files to visit.
Je ne sais pas comment procéder. Comme je l'ai dit, mon but est d'évaluer une expression elisp sans lancer emacs. Est-ce possible ?