从下一个shell运行emacs lisp命令
如何从低级shell以编程方式调用emacs lisp函数 例如,我所在的shell使用emacs识别的一些字符并尝试自动展开,因此我希望运行此命令从下一个shell运行emacs lisp命令,shell,emacs,command,elisp,Shell,Emacs,Command,Elisp,如何从低级shell以编程方式调用emacs lisp函数 例如,我所在的shell使用emacs识别的一些字符并尝试自动展开,因此我希望运行此命令(setq comint input autoexpand nil),将其应用于我所在的shell 现在,我可以通过在shell中输入命令文本并在其上运行类似于eval region的操作来实现这一点,但我希望我的shell能够调用此命令本身 感谢那些回应我的人,但我的问题似乎还不清楚。我可以通过输入一个elisp表达式,选择它并调用它的“eval
(setq comint input autoexpand nil)
,将其应用于我所在的shell
现在,我可以通过在shell中输入命令文本并在其上运行类似于eval region
的操作来实现这一点,但我希望我的shell能够调用此命令本身
感谢那些回应我的人,但我的问题似乎还不清楚。我可以通过输入一个elisp表达式,选择它并调用它的“eval region”来完成我想要的,但这需要手动输入。我想要的是一种自动化的方法,这样我的shell就可以向emacs发送一个命令来更改自己的设置 “EmacClient”的建议似乎方向正确,但我担心Windows不完全支持其选项,而且不清楚这样的命令是否会影响我调用它的缓冲区,因为我将通过外部“shell”命令来执行此操作
我想要的是某种转义序列,它向emacs发出信号“这个elisp表达式是给你的”。我猜可能有一种方法可以打开一个套接字到emacs,并以这种方式发送命令,但我仍然存在选择要应用命令的缓冲区的问题。同样,这在Windows中可能更加困难/不可能,因此我现在将依赖绑定到键序列的命令。听起来您正在寻找默认绑定为M-:(Alt+冒号,即Alt+Shift+分号)的
M-x eval表达式。当调用eval expression
时,表达式将在您所处的任何上下文中求值,因此如果表达式设置了缓冲区局部变量,则将为当前缓冲区设置该变量。您可以使用EmacClient来执行此操作。您需要将emacs作为服务器启动,或者使用.emacs
中的(服务器启动)
,或者使用--daemon
作为后台进程启动emacs
您可以在shell中计算elisp代码,如下所示:
emacsclient --eval '(setq comint-input-autoexpand nil)'
我不相信这会在所需的缓冲区中设置变量的缓冲区局部值,是吗?