2013-03-27 105 views
1

我在MonoDevelop中製作Mono中的pascal代碼編輯器。我使用Mono.TextEditor作爲代碼編輯器小部件。但是,我無法找到如何突出顯示小部件中的一行。 編譯後,我收集發生錯誤的行號,所以我想用紅色突出顯示它們。我發現Mono.TextEditor突出顯示行

Mono.TextEditor.LineBackgroundMarker 

這似乎與我想要做什麼有關,但我找不到在哪裏以及如何使用它。

我正在研究的另一個選擇是ViBuilder,但我甚至不知道如何使用它。我能想到的兩種方法來解決這個問題:

  1. 簡單地使亮點
  2. 馬克行錯誤,因爲默認樣式包括:

    { "name": "Underline(Error)", "color":"invalid-red" }

這也似乎成爲一個可能的解決方案。

回答

0

您可以通過向底層文檔添加標記來突出顯示文本編輯器中的行。使用TextDocument.AddMarker方法,如下所示:

TextEditor textEditor; 
var marker = new Mono.TextEditor.LineBackgroundMarker();  
int lineNumber = ...; 
textEditor.Document.AddMarker(lineNumber, marker); 
textEditor.QueueDraw(); 

也有看Mono.TextEditor.StyleTextMarker類。這個類已經有你正在尋找的屬性「BackgroundColor」/「Color」。下劃線可能需要手動完成(例如,通過從StyleTextMarker繼承並重寫Draw方法)。