2009-12-18 95 views
3

我正在寫超鏈接控制檯的eclipse插件,但創建超鏈接時看到BadLocationExceptions。超鏈接eclipse控制檯 - 延遲寫入導致BadLocationException?

要創建超鏈接,我按照相關問題How to write a hyperlink to an eclipse console from a plugin上的說明操作。

背景:問題似乎是底層文檔被異步更新爲寫入控制檯的請求(例如,通過MessageOutputStream),因此嘗試在寫入後立即創建超鏈接將不起作用,因爲請求中提供的偏移量和長度索引無效。

爲了解決這個問題,我在底層文檔上創建了一個DocumentListener,這樣我就可以檢測控制檯何時更新並在此時創建HyperLink。但是監聽器提供了與控制檯批量更新相對應的事件 - 所以我無法輕鬆檢測到控制檯是否已更新。唯一的選擇似乎是在控制檯文檔中搜索我想要超鏈接的字符串,這看起來效率很低。

所以問題是:在寫入控制檯之後,何時創建HyperLink是正確的時間?是否有任何經過驗證的機制可以保證在發佈超鏈接創建請求時底層文檔已經更新?寫入控制檯的代碼然後創建一個HyperLink的例子會很棒。

不確定eclipse的確切版本(我在上班之前從家中寫入) - 但我確實知道我在使用MessageConsole.addHyperlink()發出請求。

回答

0

我處於完全相同的情況,並得出了相同的結論:我在文檔偵聽器中添加超鏈接,然後刪除文檔偵聽器。請注意,除搜索字符串之外,您沒有其他選擇,因爲控制檯可以由用戶清除!就我而言,這不是一個嚴重的性能損失,所以我對這個解決方案感到滿意。