【问题标题】:Using prolog with emacs在 emacs 中使用 prolog
【发布时间】:2011-07-14 08:48:50
【问题描述】:
GNU Emacs 23.2.1
Fedora xfce 14

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

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

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

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

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

我做了一个 yum 搜索序言并得到了这些结果,那么在所有这些选择中,我需要哪一个?:

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 文件?

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

【问题讨论】:

  • 附带说明:我不确定您对内置 prolog-mode 的印象从何而来。也许你读过一些关于非常旧版本的 Emacs 的内容。在当前版本中,它确实支持语法高亮和缩进。您可能会发现您下载的备用包实际上可能已经过时,并且内置模式已经变得比现在更好。

标签: emacs prolog emacs23


【解决方案1】:

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

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

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

(add-to-list 'load-path "~/.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 的更多信息,请参阅 Using SWI-Prolog with GNU Emacs.

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      另一个不错的 emacs 模式是Ciao

      【讨论】:

        【解决方案4】:

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

        如果您安装 pl.x86_64: 您还可以使用名为 PceEmacs 的 SWI Prolog 内置编辑器,请参见此处:The SWI-Prolog builtin editor: PceEmacs SWI Prolog 非常完整,除了图形调试器 The graphical tracer 和它自己的 GUI 系统 The XPCE GUI system for Prolog 外,还包括一个基于文本的调试器的图书馆。这是一个伟大的探索序言。如果你想在 emacs 中使用 SWI Prolog,这里是设置 Using SWI-Prolog with GNU-Emacs

        【讨论】:

        • 你好,我想我现在差不多了。但是,我不确定如何让 prolog.pl 文件在 emacs 下编译和运行?我已经用新信息更新了问题。谢谢。
        【解决方案5】:
        1. 仔细阅读 prolog.pl 的安装说明 -- http://bruda.ca/emacs-prolog/install.html

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

          (add-to-list 'load-path "~/.emacs.d/site-lisp/prolog/")

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

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

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

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

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

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

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

            简单而有效。

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

            【讨论】:

            • 感谢您的提示,我也使用 Fedora 15。
            【解决方案8】:

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

            emacs.
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多