我已经写了一些附加到我的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会挂起。附加&amp;对shell-command
函数没有帮助。有人知道让shell-command-on-region
异步的方法吗?
提前致谢,
貂
答案 0 :(得分:0)
我使用compile
:M-x compile
,perl <file-name>
。第一次运行后,您可以使用重新编译来重新运行它。
稍微多一点时间来输入文件的名称,但你获得了许多好东西,当然它也是异步的。
编辑:Bonus helper函数在第一次自动使用编译然后重新编译:
(defun my-recompile ()
"Recompile if possible, otherwise compile current buffer."
(interactive)
;; If recompile exists do it, else compile
(if (fboundp 'recompile) (recompile)
(compile "make -k")))
并在适当的钩子绑定类似
的东西(local-set-key (kbd "<f5>") 'my-recompile)
(local-set-key (kbd "<C-f5>") 'compile)