【发布时间】:2014-10-25 05:13:14
【问题描述】:
我已经编写了一些附加到我的 F5 和 F6 键的函数,以便在按下时,这些函数会评估 perl 或 python 的缓冲区内容。
;; F5 = perlevaluatie
(defun perl-eval ()
"Run whole buffer as Perl code"
(interactive)
(shell-command-on-region (point-min) (point-max) "perl") ; feeds the region to perl on STDIN
)
(global-set-key (kbd "<f5>") 'perl-eval)
;; F6 = pythonevaluatie
(defun python-eval ()
"Run whole buffer as Python code"
(interactive)
(shell-command-on-region (point-min) (point-max) "python")
)
(global-set-key (kbd "<f6>") 'python-eval)
但是,当我将这些函数用于长时间运行的脚本时,emacs 会挂起。与 shell-command 函数一样,附加 & 并没有帮助。有人知道使shell-command-on-region 异步的方法吗?
提前致谢,
貂
【问题讨论】:
-
你看quickrun了吗?我发现在 emacs 上测试我的脚本非常方便。
-
您不能在 emacs 24.3.1 中异步使用
shell-command-on-region。在那里,shell 仅使用同步的命令call-process-region调用。要拥有异步命令,您需要start-process和观察启动进程执行的哨兵。一个有趣的问题是:如果在脚本运行期间修改了输入区域会发生什么?