假设我正在默认Perl模式(Emacs 23.1.1附带的模式)下用Emacs编辑Perl文件或缓冲区
有没有一种方法可以直接将完整的文件(或缓冲区)发送到Perl解释器并查看结果(在单独的缓冲区上)?
有第三方模式用于运行较差的perl进程并与它们交互(例如inf-perl.el
),但emacs 23.1.1中没有包含任何模式。
然而,使用perl运行缓冲区的一种简单方法是使用shell-command-on-region
。例如,此函数将在缓冲区上运行perl,并在名为*Perl Output*
:的缓冲区中显示输出
(defun perl-on-buffer ()
(interactive)
(shell-command-on-region (point-min) (point-max) "perl" "*Perl Output*")
(display-buffer "*Perl Output*"))
使用M-x-perl-on-buffer在perl缓冲区中运行它,或者将它绑定到一个密钥上,如下所示:
(eval-after-load 'perl-mode
'(define-key perl-mode-map (kbd "C-c C-c") 'perl-on-buffer))
另一种选择是使用compile
/recompile
和perl <filename>
作为编译命令。这适用于文件内容而不是缓冲区内容,并具有使用C-x `
(next-error
)导航错误的额外优势。