2013-06-29 54 views
0

我正在上創建SWI-Prolog的模塊,增加了標籤完成能力的swipl雙贏窗口

我目前的工作。到目前爲止,實際上我已經將它讀到了一次讀取單個字符的位置,而不停止/返回任何內容,直到輸入製表符。我也已經寫了一個謂詞,通過使用當前項的列表上的子串匹配返回所有可能的完成項(通過current_functor/2,current_arithmetic_function/1,current_predicate/2等獲得[所使用的謂詞將最終基於上下文而不是基於上下文] )。彩色化輸出(SWI-Prolog的)窗口

如果你想看到我的代碼,它是here ...只是記住,我不完全是一個Prolog的高手,但(友好的提示是更受歡迎)。


我在想什麼

我一直在使用XPCE做在swipl雙贏的窗口彈出,下拉完成(我最終會試圖獲取到四氯乙烯被遺棄的任何努力-Emacs [它不會像Visual Studio那樣精美 - 圖片更像是Python的IDLE],但我不知道這是否真的更實用,因爲我現在開始使用實際的Emacs,現在反正更多),但有什麼方法可以在swipl-win窗口中修改輸出顏色?我知道語法突出顯示已經在其他Prolog系統的命令提示符窗口中實現,但我真的只想要它,以便當tabber.pl提示完成時,它也顯示了arity(也許其餘的部分類型術語)建議使用淺灰色。 我知道系統已經有了顏色輸出(就像它啓動時那樣),但我不知道如何掛鉤輸出的東西來自己控制它。 (很明顯,我可能會定義print/1但是...) 我知道我可以編寫我自己的SWI-Prolog控制檯,就像一個人用C#完成的一樣,但我真的很想這樣,所以人們(包括我)可以加載tabber模塊,並且繼續使用swipl-win窗口,而不是將它作爲完全不同的可執行文件......我是否需要使用某種C API?

注: 的實際執行可能會由我去this question答案的影響,因爲我要我的基礎上使用字符串和/或原子決定在這個項目了他們的。


就是我要問

有沒有一種方法或東西(即使它是真正的低級別)我可以實現上色的swipl共贏窗口輸出?

回答

0

AFAIU你必須處理的問題是避免像普通緩衝區那樣每秒調用一次形式化函數。即輸出到達時只調用一次,並限制在緩衝區中對先前的提示進行正式化。

+0

感謝回答(迄今爲止沒有人)......但我不是在這裏談論Emacs :) 我知道我曾經用一句話提到了PCE-Emacs,但即使在問題標題中,我希望我足夠清楚:「在swipl-win窗口中着色輸出_」....在swipl-win窗口中有一個我不知道的分化函數? (肯定沒有緩衝區。) – ksoo

+0

@AsianSquirrel啊,好的。順便說一句,Emacs在Windows和緩衝區方面存在一定的困惑。另外還有很多模式......前段時間在Emacs裏面用swi-prolog播放過,非常棒。 –

+0

是的,在SWIPL文檔中推薦了許多用於Emacs的Prolog模式......不幸的是,它們中的許多模式現在已經過時(並且在很多情況下甚至不再可用)。有可能有新的/更好的東西,但我不知道他們,但我猜... – ksoo