在Emacs中直接运行Perl代码

5
在学校的 PC 上,我们可以使用“F5”运行选定的 Perl 代码片段。然而,在家里尝试这样做时失败了。我已经在我的 Windows7 机器上安装了 Emacs 和 Activeperl。
每当我尝试运行一段代码时,都会收到“F5 未定义”的错误。然而,当我查看 .Emacs 文件时,我发现 F5 功能键已正确绑定到函数 perl-eval。今天下午,通过将 (defalias 'perl-mode 'cperl-mode) 放入我的 .Emacs 文件中,它可以工作,但当我今晚尝试编写代码时,我再次收到了“F5 未定义”的错误。
有人能帮我解决这个问题吗?我知道我可以使用 cmd 工具运行 Perl 代码,但直接从 Emacs 运行要容易得多:)
3个回答

3

看起来你的.emacs是有效的,但它可能放错了位置。

要检查.emacs应该放在哪里,请执行以下操作:

M-x getenv RET HOME RET

这将显示类似于以下内容:(Windows XP)

C:\Documents and Settings\YourName\Application Data\

(或者Windows 7)

C:\Users\YourName\Application Data\

如果它与.emacs位于同一位置,则在您的.emacs文件末尾添加一个调试消息。例如:
(message " >------------< This is the one >------------< ") 

重新启动Emacs并查看*messages*缓冲区。

如果显示调试信息,则键绑定应该可用,请使用C-h k F5检查它。

请告诉我们这些测试的结果。


非常感谢。实际上,.emacs文件必须位于C:\Users\Name\Application Data\Roaming目录下,现在该文件已被加载,我可以使用F5键运行Perl代码。他们真的应该将这个信息放在README文件中,因为原始的.emacs文件位于c:\emacs\目录下。您真是我的救星;) - Najdo
Emacs用户中使用Windows的并不多,甚至使用Windows7的更少,而且那些使用Windows的用户也没有更新Emacs README或EmacsWiki.org。幸运的是,在这里你可以得到很多关于Emacs的帮助。 - ocodo

2

您可以在两个Emacs实例中都执行C-h k F5。它会告诉您F5键绑定到哪个命令,因此您可以看到区别。在知道如何调用之后,在本地计算机上绑定该键,请使用类似以下内容的内容:

(add-hook 'perl-mode-hook '(lambda () (local-set-key  [f7] 'compile)))

我已经尝试了C-h k F5,但是它也显示“F5未定义”。但如果我查看我的.Emacs文件,我会看到以下命令:'(global-set-key (kbd "<f5>") 'perl-eval)'。 - Najdo
这很奇怪,因为看起来完全合法。你确定你的.emacs已经加载了吗?顺便说一下:你写的是.Emacs,但它必须命名为.emacs(小写e),这可能是错误的原因。在Emacs中执行C-x f ~/.emacs,并确保它加载了正确的文件。 - fschmitt
正如您所看到的,正确答案已经给出。但还是感谢您的帮助。 - Najdo

2

在您的 .emacs 文件中

(defun perl-eval () "将所选区域作为Perl代码运行" (interactive)
   (shell-command-on-region (mark) (point) "perl "))
(global-set-key (kbd "<f5>") 'perl-eval)

我正在看这个,想知道为什么函数的输出会到达底部的状态栏?(不确定底部的那个栏实际上叫什么) - Shantanu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接