Ich bin ein Neuling für Emacs. Ich arbeite mit emacs-24.1 auf redhat linux und versuche einen elisp-Ausdruck auszuwerten. Was ich Emacs tun soll, ist, den elisp-Ausdruck zu bewerten, ohne Emacs selbst zu starten. Ich probiere verschiedene Sachen aus
%Vor%Ich weiß nicht, ob Emacs den Ausdruck auswertet, aber das Ergebnis wird nicht auf der Konsole angezeigt, und das Emacs-Fenster erscheint. Als nächstes habe ich das versucht
%Vor%Emacs-Client erwartet einen Server. Es konnte den Server nicht finden und daher einen Fehler werfen (Socket nicht finden. Server starten etc). Also habe ich einen Server gestartet (server-name ist SERVER) und habe den emacsclient erneut gestartet.
%Vor%Diesmal hat emacs den Ausdruck ausgewertet und das Ergebnis auf der Konsole ausgedruckt. Das liegt daran, dass Emacs den vorhandenen Server zum Auswerten des Ausdrucks verwendet. Jetzt bekomme ich ein Problem, wenn der Server nicht läuft.
%Vor%Dieses Mal erhalte ich keinen Fehler auf der Konsole. Emacs startet ein neues Fenster wegen -a (mein .emacs hat (server-start) -Befehl darin und Servername ist auf ANOTHER_SERVER gesetzt). Aber Emacs versucht dann, die Datei zu bearbeiten (+ 2 3). Es wird in der Moduszeile angezeigt. Ich bin verwirrt. emacsclient --help hat mir das gezeigt.
%Vor%und emacs Handbuch sagt das.
%Vor%Ich weiß nicht, wie ich weitermachen soll. Wie gesagt, mein Ziel ist es, einen elisp Ausdruck auszuwerten, ohne Emacs zu starten. Ist es möglich?
Nach ein paar Tests sieht es so aus, als könnten Sie --batch
verwenden, damit emacs alle Nachrichten an stderr ausgibt. Dann können Sie message
aufrufen, um Dinge in stderr zu drucken, wo Sie sie sehen können. Ihr Beispiel würde emacs --batch --eval '(message (number-to-string (+ 2 3)))'
und das Ergebnis würde nach stderr gedruckt werden.
Wenn Sie versuchen, die Ausgabe in eine Datei umzuleiten, müssen Sie stderr anstelle von stdout umleiten, indem Sie 2>
anstelle von nur >
verwenden.
Tags und Links emacs elisp emacsclient