通过Prolog.el在Emacs中选择这样或那样的Prolog系统
Thierry Martinez更改了prolog.el,并提供了一个可以在微型缓冲区中获取prolog系统菜单的程序。有人向我建议(见下文),通过和,可以将这样或那样的Prolog系统的选择与给定的目录相关联。不幸的是,我没有成功地编写一个.dir-locals.el来选择目录中的SWI Prolog,并选择另一个,例如Jekejeke Prolog或GNU Prolog。因此,我回到了马丁内斯给出的解决方案。但我很高兴了解,在这种情况下,我们如何与合作伙伴合作。欢迎帮助。您的问题不再是蒂埃里·马丁内斯了吗?通过Prolog.el在Emacs中选择这样或那样的Prolog系统,emacs,prolog,Emacs,Prolog,Thierry Martinez更改了prolog.el,并提供了一个可以在微型缓冲区中获取prolog系统菜单的程序。有人向我建议(见下文),通过和,可以将这样或那样的Prolog系统的选择与给定的目录相关联。不幸的是,我没有成功地编写一个.dir-locals.el来选择目录中的SWI Prolog,并选择另一个,例如Jekejeke Prolog或GNU Prolog。因此,我回到了马丁内斯给出的解决方案。但我很高兴了解,在这种情况下,我们如何与合作伙伴合作。欢迎帮助。您的问题不再是蒂埃里
对于蒂埃里·马丁内斯,我想你只需要改变一下:
(setq auto-mode-alist (append '(
("\\.pro$" . prolog-mode)
("\\.pl$" . prolog-or-perl-mode)
("\\.chr$" . chr-mode)
)
auto-mode-alist))
下面是一个示例,但我假设我的序言系统由“jekejeke”而非“jekeprolog”标识: 我指的是Thierry Martinez的原始文件:
;; prolog-mode loader
;; Thierry.Martinez@inria.fr
;; under GPLv3
警告,我没有测试 如果要更改每个文件的prolog系统,可以在文件开头添加以下行
%% -*- prolog-system: swi -*-
用支持的任何系统替换swi
eclipse - Eclipse Prolog
mercury - Mercury
sicstus - SICStus Prolog
swi - SWI Prolog
gnu - GNU Prolog
现在,在使用多个prolog系统时存在一些问题:
模式名称
不会改变。因此,如果以前是Prolog[GNU]
,即使Prolog系统的当前缓冲区本地值是swi
,模式名称将更改为Prolog[swi]
prolog系统
的缓冲区本地值是什么,当您执行运行prolog
或键入C-C-l
时,启动的prolog过程似乎是全局prolog系统
值的过程。这是一个bug(有望解决)
prolog.el
不支持同时运行不同的解释器。要运行gprolog
,必须停止swipl
,反之亦然。他们都在为控制缓冲区而斗争(定义派生模式gnupolog模式prolog模式“GNU prolog”
“这只是‘prolog模式’。”
(setq本地prolog系统的gnu)
(prolog模式变量)
(添加到列表“自动模式列表”(“gnu\\.pl”.gnuprolog mode))
在这里,任何带有gnu.pl
后缀的文件都将在我们的gnuplog模式下打开,这只是一种prolog模式,由您选择prolog系统启动
警告:
在这段代码中,由于prolog.el
(最近出现)中的错误,语法高亮显示可能无法正常工作(取决于emacs的当前状态)
由于仍然存在错误,启动的解释器可能不正确
一个建议:(可选地)代替文件名,使用封闭目录名来选择系统之间的补充这个好的建议,我刚刚看到这个网页:你也可以考虑在这里问:谢谢。您对我的理解是正确的:我的问题不再是关于马丁内斯的设置是否确实运行良好。现在,在emacs中学习目录局部变量是一个问题。谢谢。因此,我理解,在不同的prolog系统中使用prolog.el最方便的方法可能是Martinez。我说的对吗?目前,Emacs自己的prolog模式
将不支持您的用例。因此,这可能是您唯一的选择(它看起来像是emacsprolog模式的一个旧变体,所以我不知道它的工作情况如何)。我使用%-*-prolog系统:swi-*-
在同一个*prolog*
缓冲区中在swi、gnu之间切换,并在gnu-prolog和swi-prolog之间切换,以查看我的查询对两者的效果是否相同。
eclipse - Eclipse Prolog
mercury - Mercury
sicstus - SICStus Prolog
swi - SWI Prolog
gnu - GNU Prolog