可以从shell启动emacs并告诉它执行lisp函数,例如
emacs -f some-lisp-function my_file.py
但是,我想通过参数传递lisp函数,比如
emacs -f "(goto-line 10)" my_file.py
# --> not working
并且在最好的世界中,传递更复杂的包含多个函数调用的lisp代码,例如
emacs -f "(goto-line 10) (some-other-func some-arg)" my_file.py
# --> not working
有人知道怎么做?
编辑:为了澄清这一点,我需要一种方法来评估文件自己的缓冲区中的lisp代码,在打开它之后。
(顺便说一句。我知道goto-line问题可以在不使用-f
的情况下以不同的方式解决,但这只是我一般问题的一个例子)
答案 0 :(得分:6)
试试emacs my_file.py --eval '(progn (goto-line 10) (some-other-func some-arg))'
。另请注意,将{Emacs调用为emacs +10 my_file.py
将在第十行打开文件。
答案 1 :(得分:2)
您可以访问调用Emacs的命令行。您可以添加代码来处理自己的命令行开关。根据您的需要,这可能比--eval
更清晰。请参阅http://www.gnu.org/software/emacs/manual/html_node/elisp/Command_002dLine-Arguments.html和Emacs custom command line argument。