在将SWIPL更新为8.0.1-1(然后更新为8.1.0)之后,PCE Emacs陷入了混乱(几乎没有用)

时间:2019-01-26 23:54:30

标签: windows installation prolog swi-prolog

我的困境,在坚果壳里

您好,我最近在 Windows 10上安装了64位版本的SWI-Prolog 8.0.1.1-1 (取代了我几年前安装的7.6.4)。 机器,从本质上讲,之后我打开PCE Emacs时,所有特定于语言的功能都被破坏了。意思是,我可以正常编辑和保存文件,但是语法高亮显示,源导航等命令不起作用 ......这意味着我也可以在“基本模式”下编辑所有内容。以前,我从未遇到过PCE Emacs的任何问题,并且在升级之前没有修改与SWIPL相关的任何内容。

由于SWI-Prolog似乎可以单独正常工作,只要图片中没有与GUI相关的内容,我强烈怀疑PCE库和/或XPCE已以某种方式损坏,或者出了点问题以及应该将SWIPL定向到正确的源文件和已编译文件的注册表和/或环境变量。不幸的是,我还没有足够的PCE向导(还!)知道如何确认(或使之无效)这种怀疑……即使事实证明我的直觉是正确的,我也不知道该怎么办。它。

我真的很想解决这个问题,因为当我是真正的GNU Emacs爱好者时,我喜欢能够快速编辑Prolog源文件并利用一些精美功能而无需充分发挥自己的功能的便利。每次都需要经过微调的Emacs小工具。

话虽这么说,我确实不想完全卸载并重新安装SWI-Prolog,尽管我相当有信心那可以解决问题。 (而且我当然也不必在整个计算机上都这样做,以防万一即使我竭尽全力从中清除所有SWIPL痕迹也无法满足要求...)

您以前是否曾遇到过此类问题(下面有更多信息),和/或您知道如何解决该问题?


简而言之...(其他背景)

在安装过程中遇到异常

用于8.0.1-1的安装程序未能将SWIPL添加到PATH中,原因是该错误与路径太长有关...我对此没有多大考虑,因为无论如何,我知道如何自己编辑系统变量。

我设法解决的问题(以及如何解决)

安装完成后,我打开了新安装的8.0.1-1,以查看是否有任何异常。我执行了一些简单的测试查询,一切似乎都很好……直到我决定尝试使用PCE Emacs编辑源文件。当我选择菜单项File > Edit...时,在SWI-Prolog崩溃之前终端中出现以下错误:

  

pce_error(no_home)

我立即输入了一个Google搜索,用引号引起了这个奇怪的词;几乎唯一相关的结果是Github上的PCE源代码。我查看了源代码,发现它似乎在寻找名为PCEHOME的系统环境变量。我添加了此环境变量,将其指向C:\Program Files\swipl\xpce\。我也将C:\Program Files\swipl\binC:\Program Files\swipl\xpce\添加到了PATH环境变量中,以达到很好的效果。

当我重新打开swipl-win.exe并选择File > Open时,PCE Emacs按预期打开了文件进行编辑。但是,很快我就意识到仍然存在着严重的错误。

我没有解决的问题

我注意到的第一件事是语法突出显示明显被破坏了。状态行显示了一些看起来很神秘的错误,以响应我在源代码周围单击。当我切换到CHR模式时,发生了一些语法高亮显示,但是大约一半的缓冲区在定界符(我相信是方括号)之后以洋红色背景高亮显示,并表明存在语法错误(尽管实际上,代码没有语法错误。

我在互联网上找不到关于PCE Emacs语法突出显示的信息。看来我是SWI-Prolog历史上唯一遇到这种问题的人...

看到我的困境开始与升级同时发生,我推测问题可能是8.0.1-1引入的错误。作为我具有远见的人,我认为尝试升级到最新的开发版本(8.1.0)而不是降级到7.6.4并没有什么坏处。

事物的当前状态

从该问题的原始发稿日期开始,奇异的语法突出显示行为已被完全缺少语法突出显示所取代。其他特定于语言的功能保持不变(也就是说,它们根本不起作用)。 简而言之,PCE Emacs仍然充满异常,我在下面列出了其中的几个。

我希望这是足够彻底的,但是如果我能提供更多信息,这些信息可能有助于诊断这些问题的原因和/或解决这些问题,请告诉我,我将尽力而为。在这里添加。


按菜单分组的各种菜单栏菜单项操作以及由此产生的错误/警告的一些示例:

文件:

  • 当包含某些CHR规则(除了普通的SWIPL代码)的缓冲区处于活动状态时,选择菜单项File > Mode > chr会使PCE Emacs至少突出显示匹配的配对对,但是仍然不突出显示语法。

  • 选择菜单项File > Shell将打开一个名为*shell* [exited]的空缓冲区,并使以下内容出现在PCE Emacs状态行中:

      

    sh:进程退出状态为-1

  • 选择菜单项File > Mode > prolog(如果尚未处于Prolog模式时)将导致(按预期)在PCE Emacs状态行中显示以下内容:

    切换到``序言''模式

    ...但是,没有激活语法突出显示或源交互功能,并且PCE Emacs的外观或功能没有改变。

浏览:

  • 选择菜单项Browse > Prolog Navigator不会执行任何操作。

  • 将鼠标悬停在菜单项Browse > Source file...上会在终端中显示以下内容:

      

    错误:[线程pce]未处理的异常:atomic_list_concat / 2:类型错误:预期为“文本”,找到了“序言/启动”(复合)
      错误:[线程pce]未处理的异常:atomic_list_concat / 2:类型错误:预期为“文本”,发现为“序言/启动”(复合)

  • 选择菜单项Browse > Find Definition...,然后在 Prolog谓词 字段中键入d,然后按< kbd> TAB 键触发完成,导致以下内容出现在终端中:

      

    错误:[线程pce]未处理的异常:sub_atom / 5:类型错误:预期为“ atom”,找到了“ C'dict”(一个reserved_symbol_reference)
      错误:[线程pce]未处理的异常:sub_atom / 5:类型错误:预期为“ atom”,找到了“ C'dict”(一个reserve_symbol_reference)

比较:

  • 选择菜单项Compile > Compile buffer将在PCE Emacs窗口底部的状态栏中显示以下内容:
      

    compile_buffer命令失败

PROLOG:

  • 选择菜单项Prolog > Check clause会使以下内容出现在PCE Emacs窗口底部的状态栏中:

      

    check_clause命令失败

  • 选择菜单项Prolog > Edit exceptions...会导致以下情况:

    • (按预期)“管理异常调试”对话框的外观。
    • 标题为 SWI-Prolog warnings 的对话框的外观,其中仅包含 Quit 按钮和一个可选的列表类型字段,其中包含以下项目:

        

      gui.pl:91:目标(指令)失败:prolog_gui:register_directives

      该项目链接到文件gui.pl中的第91行,单击该项目后,该文件将在PCE Emacs的新缓冲区中打开。

    • 以下终端的外观:
        

      错误:[线程pce]未处理的异常:sub_atom / 5:类型错误:预期为“ atom”,找到了“ C'dict”(一个reserved_symbol_reference)
        错误:[线程pce]未处理的异常:sub_atom / 5:类型错误:预期为“ atom”,找到了“ C'dict”(一个reserved_symbol_reference)
        警告:c:/程序文件/swipl/xpce/prolog/lib/trace/gui.pl:91:   目标(指令)失败:prolog_gui:register_directories
        %图形前端将用于后续跟踪

PCE:

  • 选择菜单项PCE > Editpce...,然后从 Behaviour | class 下拉菜单中选择emacs_prolog_mode,将导致PCE Emacs打开空白缓冲区(对于emacs_prolog_mode,标题为prolog_mode.pl的缓冲区)。我相当确定prolog_mode.pl(文件,而不是缓冲区)不能真正为空。

  • 选择菜单项Pce > Spypce...,然后从 行为|类 下拉菜单中选择emacs_mode

      

    错误:[线程pce]未处理的异常:emacs_fundamental_mode-> spypce:参数1(?):“行为*”,发现为“ @ emacs_mode_class / emacs_mode_class”

  • 选择菜单项Pce > Tracepce...,然后从 行为| class 下拉菜单中选择prolog_ide出现在终端中:

      

    错误:[线程pce]未处理的异常:emacs_fundamental_mode-> tracepce:参数1(?):“行为*”,发现为“ @ prolog_ide_class / class”

帮助:

  • 选择菜单项Help > Help on mode不会执行任何操作。

  • 选择菜单项Help > Help会导致以下情况:

    • (按预期)PCE帮助对话框的外观
    • 终端中以下内容的外观:
        

      [PCE警告:@ 142244788304 / hlp_buffer:插槽indent_tabs中的值非法:class_default]

  • 选择菜单项Help > Describe function...,然后从 Command 下拉菜单中选择colourise_buffer只会使以下内容变为出现在终端中:

      

    警告:[Thread pce] @ 142240619460 / send_method没有帮助。
      警告:[Thread pce]使用?-apropos(query)。寻找候选人。

MISC:

  • 我不记得是什么原因引起的,但是终端中也出现了以下错误:

      

    错误:[线程pce] @ 142240667182 /对话框:<-模式

    没有实现
  • 我刚才做了一个make.(在本次会议中我已经做过几次,但这是第一次这样的结果),并且在终端中出现了以下内容:< / p>

      

    库c:/ program files / swipl / library /
    的%更新索引   %设置已编译为trace_settings 0.00秒,0个子句
      %堆栈被编译为prolog_ide_stack 0.02秒,0个子句
      %viewterm编译为prolog_term_view 0.02秒,0个子句
      警告:c:/程序文件/swipl/xpce/prolog/lib/trace/gui.pl:91:
              目标(指令)失败:prolog_gui:register_directories
      %c:/程序文件/ swipl / xpce / prolog / lib / trace / gui编译成prolog_gui

    我猜想这与我通过Pce > Tracepce打开的文件有关,等等...但是我没有对任何文件进行任何更改。此外,即使我连续执行两次make,每次执行Updating index for library c:/program files/swipl/library/的时间也比预期的要长,并且总是显示make.

0 个答案:

没有答案