swipl-win(SWI-Prolog)窗口中的彩色输出

时间:2013-06-29 16:55:47

标签: syntax-highlighting swi-prolog tab-completion

我在做什么

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

如果你想查看我的代码,那就是here ...请记住,我不是一个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?

注意: 实际的实现可能会受到this question的答案的影响,因为我将根据这个项目中的字符串和/或原子的使用做出决定。 < / p>


我在问什么

有没有办法或某事(即使它真的很低级)我可以实现在swipl-win窗口中着色输出?

1 个答案:

答案 0 :(得分:0)

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