评估的Emacs Lisp命令行上的表达(Evaluate emacs lisp expressio

2019-07-30 10:27发布

我是Emacs的一个新手。 我与RedHat Linux上的emacs-24.1的工作,并试图评估一个elisp的表达。 我想要的emacs做的是不启动的emacs本身来评估elisp的表达。 我尝试不同的事情

emacs --eval '(+ 2 3)'

我不知道Emacs是计算表达式,但结果没有在控制台中显示和emacs窗口出现。 接下来,我想这

emacsclient --eval '(+ 2 3)'

Emacs的客户期待的服务器。 它无法找到服务器,并因此引发错误(找不到插座。启动服务器等)。 所以,我发起了一个服务器端(server-name是服务器),然后跑掉再次emacsclient

emacsclient --server-file=SERVER -e '(+ 2 3)'

此时,emacs的计算的表达式并打印在控制台的结果。 这是因为Emacs是使用现有的服务器来计算表达式。 现在,我的服务器没有运行时获得的一个问题。

emacsclient --server-file=ANOTHER_SERVER -e '(+ 2 3)' -a emacs

这一次,我没有得到在控制台上的任何错误。 Emacs的推出,因为-a的一个新的窗口,(我的.emacs中有(服务器启动)命令和服务器名称设置为ANOTHER_SERVER)。 但是emacs的则是试图编辑文件(2 + 3)。 它被示出在模式线。 我糊涂了。 emacsclient --help显示我这个

-e, --eval              Evaluate the FILE arguments as ELisp expressions

和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.

我不知道如何在此进行。 正如我所说的,我的目标是不启动的emacs来评估一个elisp的表达。 可能吗?

Answer 1:

有些测试看起来你可以使用后--batch有emacs的转储任何消息到标准。 然后就可以调用message要打印的东西到stderr在这里你就可以看到它们。 您的实例将变得emacs --batch --eval '(message (number-to-string (+ 2 3)))'和结果将被打印到stderr。

如果你想将输出重定向到一个文件,你需要使用重定向标准错误,而不是标准输出2>而不是仅仅>



Answer 2:

尝试

emacs --batch --eval '(print (+ 2 3))'


文章来源: Evaluate emacs lisp expression on command line