假设我在默认的Perl模式(Emacs 23.1.1附带的模式)中编辑Emacs中的Perl文件或缓冲区。
有没有办法直接将完整文件(或缓冲区)发送到Perl解释器并查看结果(在单独的缓冲区中)?
答案 0 :(得分:3)
有第三方模式可以运行劣质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
)导航错误的附加优势。