0

我在做什么

我目前正在创建一个 SWI-Prolog 模块,该模块将制表符完成功能添加到 swipl-win 窗口。到目前为止,我实际上已经将它带到了一次读取单个字符的位置,而无需停止/返回任何内容,直到键入制表符为止。我还编写了一个谓词,它通过对当前术语列表使用子字符串匹配(通过current_functor/2current_arithmetic_function/1current_predicate/2等获得[所使用的谓词最终将基于上下文])来返回不完整类型术语的所有可能完成。

如果您想查看我的代码,它就在这里……请记住,我还不是 Prolog 大师(非常欢迎友好的提示)。


我在想什么

我早就放弃了使用 XPCE 在 swipl-win 窗口中进行弹出下拉完成的任何努力(我最终会尝试将其放入 Pce-Emacs [它不会像 Visual Studio 那样完美——图片更像是 Python 的 IDLE],但我不知道这是否真的实用,因为我现在开始更多地使用实际的 Emacs),但是有没有办法在 swipl-win 窗口中修改输出颜色? 我知道语法高亮已经在其他 Prolog 系统的命令提示窗口中实现了,但我真的只是想拥有它,以便当 tabber.pl 建议完成时,它也显示了 arity(可能还有部分的其余部分 -键入的术语)的建议术语浅灰色我知道系统已经有颜色输出(比如启动时),但我不知道如何连接到输出内容来自己控制它。(显然,我可能会定义print/1但是......)我知道我可以编写自己的 SWI-Prolog 控制台,就像一个人用 C# 完成的那样,但我真的想要它,这样人们(包括我)就可以在某处加载 tabber 模块在他们的配置文件中并继续使用 swipl-win 窗口,而不是让它成为一个完全不同的可执行文件......我是否必须使用某种 C API?

注意: 实际的实现可能会受到我对这个问题的回答的影响,因为我将根据在这个项目中使用字符串和/或原子的决定来做出决定。


我在问什么

有没有办法或什么东西(即使它真的很低级)我可以实现在 swipl-win 窗口中对输出进行着色?

4

1 回答 1

0

AFAIU 你必须处理的问题是避免像普通缓冲区那样每秒钟调用一次 fontify 函数。即在输出到达时只调用一次,并将字体化限制为缓冲区中的前一个提示。

于 2013-06-30T06:52:35.490 回答