如何在emacs中自动运行elisp代码?

如何在emacs中自动运行elisp代码?,emacs,elisp,Emacs,Elisp,我有一个针对特定应用程序的调试/监控系统。我希望允许从emacs会话进行监视/调试,并让它自动运行 有没有办法让emacs执行以下代码而不在命令行上传递任何内容或强制用户运行命令?我不想把它放到emacs init文件中,因为我不想在用户不运行应用程序时运行无用的调试监视器 (defun filter-output (process output) (eval (read output))) (defun doit () (let ((myproc (start-process "my-

我有一个针对特定应用程序的调试/监控系统。我希望允许从emacs会话进行监视/调试,并让它自动运行

有没有办法让emacs执行以下代码而不在命令行上传递任何内容或强制用户运行命令?我不想把它放到emacs init文件中,因为我不想在用户不运行应用程序时运行无用的调试监视器

(defun filter-output (process output)
  (eval (read output)))

(defun doit ()
 (let ((myproc (start-process "my-process" "*My DebugMonitor*" "/tmp/myProcess.py")))
      (set-process-query-on-exit-flag myproc nil)
      (set-process-filter myproc 'filter-output)))

如果自动表示您将在Emacs会话创建时运行一次,并且不希望它在命令行上(例如调用OS命令的启动脚本的一部分),并且不希望它在用户的init文件中,则考虑将其放置在<代码>默认。EL 或<代码>站点启动。EL < /代码>。请参阅Emacs手册,节点

Init文件


如果“自动”的意思是它应该定期运行,或者在某个事件触发它时运行,那么从计时器调用它。请参阅Elisp手册,节点
计时器

不清楚您的要求,但听起来您希望它由外部事件执行。试一试

emacsclient -e doit
当然,您仍然需要将该代码放在init文件中,这样它就知道什么是
doit

您可以调用
emacs--eval“(some code)”
,让它在启动时执行额外的代码,如果您正在寻找的话。您可能还对
EmacClient
感兴趣,但使用Emacs听起来真的很奇怪。典型的Emacs用户会在几个月内重新启动它一次,如果不是更少的话。。。因此,让用户重新启动编辑器以使其开始与其他程序通信似乎很奇怪。因为这似乎是某种解释器,所以您可能需要研究Pymacs代码w/r,了解它是如何实现的。