12
GNU Emacs 23.2.1
Fedora xfce 14

我开始接触 Prolog,我想使用我的 emacs 作为在 Prolog 中编程的 IDE。

目前我将 emacs 用于 c/c++。但不确定如何开始使用 Prolog。我知道 emacs 有一个用于在 emacs 中编程的内置库。然而,我研究并发现它的功能较少,即没有语法高亮、缩进等。

所以我下载了emacs prackage Prolog.el。我已经使用M-X Load-library.

但是,我不确定在那之后该怎么做。如何编译我的序言文件?在 emacs IDE 的菜单中,Prolog 没有任何内容。

我是否还需要为 Prolog 下载一些解释器或编译器?是否有用于编译的 emacs 命令?我通常在编译 c 代码时在 emacs 中使用 make。

我做了一个 yum search prolog 并得到了这些结果,所以有了所有这些选择,我需要哪一个?:

gprolog.x86_64 : GNU Prolog is a free Prolog compiler
pl.x86_64 : SWI-Prolog - Edinburgh compatible Prolog compiler
pl-static.x86_64 : Static library for SWI Prolog
ppl-gprolog.x86_64 : The GNU Prolog interface of the Parma Polyhedra Library
ppl-gprolog-static.x86_64 : The static archive for the GNU Prolog interface of the Parma Polyhedra Library
ppl-swiprolog.x86_64 : The SWI-Prolog interface of the Parma Polyhedra Library
ppl-swiprolog-static.x86_64 : The static archive for the SWI-Prolog interface of the Parma Polyhedra Library
ppl-yap.x86_64 : The YAP Prolog interface of the Parma Polyhedra Library
yap.i686 : High-performance Prolog Compiler
yap.x86_64 : High-performance Prolog Compiler

非常感谢您的任何建议,

================== 编辑=====================

我已经安装了以下pl.x86_64

我已经下载了 prolog.el 并将其放在以下目录中:

~/.emacs.d/site-lisp/prolog/prolog.el

我已经使用以下配置了我的emacs:

;;; Prolog mode
(setq load-path (cons "~/.emacs.d/site-lisp/prolog/prolog.el" load-path))
(autoload 'run-prolog "prolog" "Start a Prolog sub-process." t)
(autoload 'prolog-mode "prolog" "Major mode for editing prolog programs." t)
(setq prolog-system 'swi) ; prolog-system below for possible values
(setq auto-mode-alist (append '(("\\.pl$" . prolog-mode))
                              auto-mode-alist))

因此,当我将文件另存为 *.pl 时,我会看到 prolog 菜单选项。

所以我写了一些序言代码,然后从序言菜单中选择Run interactive prolog session

我打开了第二个空白缓冲区,上面写着(Inferior Prolog:run Shell-Compile)

但是,我不确定在这个阶段我需要做什么。如何编译和运行 prolog 文件?

非常感谢您的进一步支持。

4

8 回答 8

12

您没有使用预期的 advanced prolog.el,因为您的加载路径错误。它应该是:

(setq load-path (cons "~/.emacs.d/site-lisp/prolog/" load-path))

请注意,我prolog.el从路径的尽头删除了。实际上,它应该更好地阅读:

(添加到列表'加载路径“〜/ .emacs.d/site-lisp/prolog/”)

然后再次启动 Emacs,它应该会为您提供一个包含更多选项的菜单。(试一下C-h v prolog-mode-version,它只适用于高级模式,并显示其版本号。)

然后您可以尝试C-c C-b查阅缓冲区等。还可以考虑使用ediprolog,您可以使用它直接在 Emacs 缓冲区中评估查询。另请注意,在最近的 Emacs 版本中,高级 Prolog 模式的变体是新的默认模式,但不幸的是,它带有严重的回归和缺陷,因此我推荐由 Stefan Bruda 维护的原始版本:

https://bruda.ca/emacs/prolog_mode_for_emacs

有关 Prolog 和 Emacs 的更多信息,请参阅 将 SWI-Prolog 与 GNU Emacs 一起使用

于 2011-03-20T20:14:00.733 回答
8

您需要一个 Prolog 环境,例如 SWI-Prolog、GNU-Prolog 或 YAP。我认为SWI很常用,但我不知道它是否比其他更好。您无需编译 Prolog 文件即可运行它们 - Prolog 可以用作解释器(在某些情况下为交互式编译器)。要将文件加载到 Prolog 环境中,您需要查阅它。在 Prolog 模式下,emacs 可以使用C-c C-f. 您也可以直接从 Prolog shell 键入consult(File)

于 2011-03-13T08:54:10.593 回答
3

另一种具有良好 emacs 模式的替代方案是Ciao

于 2011-03-24T21:45:04.360 回答
2

可以在此处找到更完整的 prolog 模式:(X)Emacs 的 Prolog 模式 如果您在 .el 文件中搜索字符串 prolog-mode-keybindings 或在 prolog 模式下执行 Ch b,您可以看到可用的内容。

如果您安装 pl.x86_64:您还可以使用名为 PceEmacs 的 SWI Prolog 内置编辑器,请参见此处:SWI-Prolog 内置编辑器:PceEmacs SWI Prolog 非常完整,除了图形调试器外,还包括基于文本的调试器图形tracer和它自己的 GUI 系统Prolog 的 XPCE GUI 系统加上很多库。这是一个伟大的探索序言。如果您想将 SWI Prolog 与 emacs 一起使用,这里是使用 SWI-Prolog 与 GNU-Emacs的设置

于 2011-03-13T11:42:16.877 回答
2
  1. 仔细阅读 prolog.pl 的安装说明 -- http://bruda.ca/emacs-prolog/install.html

  2. 与 'mat' 在 3 月 20 日所写的内容相呼应,使用 `add-to-list' 而不是 `setq':

    (添加到列表'加载路径“〜/ .emacs.d/site-lisp/prolog/”)

    这是“现代”用法,对你来说应该比 `setq' 结构更清楚一些。

  3. 我没有仔细阅读 bruda.ca 的 prolog.el 代码,但它看起来确实有点过时了。但是,它看起来也比 GNU Emacs 包含的代码具有更多的功能。我不知道附加功能是否会超过代码的陈旧性。如 bruda.ca 代码中的注释所述,bruda.ca 代码似乎源自早期版本的 GNU Emacs prolog.el。

  4. 一旦你更正了 `load-path' 变量的值(它类似于 PATH 环境变量),prolog.el 应该会正确加载。因为 prolog.el 没有文档文件,所以这里有一些 Emacs 命令可以用来开始探索 prolog 模式:

    Ch m - 这将显示帮助列出已为 prolog-mode 定义的键绑定,以及您可能具有的任何其他次要模式。

    Ch a prolog -- 这将显示帮助以列出由 prolog-mode (prolog.el) 定义的(交互式)命令。

    如果您没有关闭菜单,那么只要您在 prolog 模式下打开文件,prolog 的菜单项就应该可用。

  5. 最后,总是阅读 prolog.el(至少是文件顶部的描述性注释)。(该文件的后半部分被列为实验代码。)如果它可以被更新并添加到包含在 GNU Emacs 中的 prolog.el 中,那就太好了。

于 2011-03-26T19:21:19.350 回答
1

您需要 Prolog 的编译器,因此您必须安装列出的编译器之一。然后,我假设您编写了一个 Makefile 并通过M-x compile.

于 2011-03-13T07:44:28.250 回答
1

如果您使用的是 Emacs 包管理器,您可以键入M-x package-install RET prolog,然后重新加载 Emacs。

简单而有效。

我使用 Fedora 15,但 Emacs 是它自己的操作系统。

于 2011-08-01T02:35:13.690 回答
0

进入 swi-prolog 命令行并输入:

emacs.
于 2016-11-06T11:53:18.357 回答