从劣质shell运行emacs lisp命令

时间:2013-01-23 00:13:28

标签: shell emacs command elisp

如何从劣质shell以编程方式调用emacs lisp函数?

例如,我在shell中使用了emacs识别并试图自动扩展的一些字符,所以我想运行这个命令(setq comint-input-autoexpand nil)将它应用到我所在的shell中。

我现在可以通过在shell中输入命令文本并在其上运行类似eval-region的内容来执行此操作,但我希望我的shell能够自己调用此命令。


感谢回复的人,但似乎我的问题不明确。我可以通过输入一个elisp表达式,选择它并在其上调用'eval-region'来完成我想要的但是这需要手动输入。我想要的是一种自动化的方法,以便我的shell可以发送emacs命令来更改自己的设置。

“emacsclient”建议似乎是朝着正确的方向但是我担心Windows不完全支持它的选项而且不清楚这样的命令会影响我调用它的缓冲区,因为我会这样做一个外部的“shell”命令。

我想要的是某种逃避序列,它表示emacs“这个elisp表达式适合你”。我猜可能有办法打开一个套接字到emacs并以这种方式发送命令,但我仍然有选择要应用命令的缓冲区的问题。同样,在Windows中这可能更难/不可能,所以我现在依赖于绑定到键序列的命令。

2 个答案:

答案 0 :(得分:2)

听起来你正在寻找M-x eval-expression,默认绑定到M- :( Alt + Colon,即Alt + Shift +分号)。表达式在调用eval-expression时的任何上下文中进行计算,因此如果表达式设置了缓冲区局部变量,则将为当前缓冲区设置该变量。

答案 1 :(得分:2)

您可以使用emacsclient来执行此操作。您需要使用(server-start)中的.emacs或者使用--daemon作为后台进程启动emacs,将emacs作为服务器启动。

您可以像下面这样评估shell中的elisp代码:

emacsclient --eval '(setq comint-input-autoexpand nil)'