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

时间:2013-11-17 03:15:20

标签: emacs elisp

我有一个针对特定应用程序的调试/监控系统。我想允许从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)))

2 个答案:

答案 0 :(得分:2)

如果通过自动,则意味着它将在创建Emacs会话时运行一次,并且您不希望它在命令行上(例如,启动脚本的一部分调用操作系统命令),并且您不希望它位于用户的init文件中,然后考虑将其放在default.elsite-start.el中。请参阅Emacs手册,节点Init File

如果通过自动表示它应该定期运行或在某个事件触发它时运行,则从计时器调用它。请参阅Elisp手册,节点Timers

答案 1 :(得分:0)

不清楚你在问什么,但听起来你希望它被外部事件执行。尝试

emacsclient -e doit

但是当然你仍然必须将该代码放在init文件中,因此它知道doit