我有一个针对特定应用程序的调试/监控系统。我想允许从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)))
答案 0 :(得分:2)
如果通过自动,则意味着它将在创建Emacs会话时运行一次,并且您不希望它在命令行上(例如,启动脚本的一部分调用操作系统命令),并且您不希望它位于用户的init文件中,然后考虑将其放在default.el
或site-start.el
中。请参阅Emacs手册,节点Init File
。
如果通过自动表示它应该定期运行或在某个事件触发它时运行,则从计时器调用它。请参阅Elisp手册,节点Timers
。
答案 1 :(得分:0)
不清楚你在问什么,但听起来你希望它被外部事件执行。尝试
emacsclient -e doit
但是当然你仍然必须将该代码放在init文件中,因此它知道doit
是。