2008-12-25 58 views
4

如何在eclipse編輯器插件中指示語法錯誤(例如非法序列的標記),就像在eclipse Java編輯器中一樣,即通過紅色的下劃線下劃線,紅色標記你可以跳轉到的滾動條,以及當你懸停在任何一個滾動條上的解釋性消息?我正在爲自定義文件格式(特別是Shark3D遊戲引擎的「蛇文件格式」)編寫一個eclipse編輯器插件。我已經實現了一個掃描儀來獲得語法高亮,以及一個大綱。如何在eclipse編輯器插件中顯示語法錯誤

  • 對於下劃線,我根本就掃描器返回一個「wriggly下劃線」 TextAttribute,而不是一個正常的IToken,或者是有標記語法錯誤特定的機制?
  • 如何實現滾動條標記? IAnnotationModel是相關界面嗎?如果是這樣,我在哪裏註冊實施,以便標記出現?
  • 我只找到SourceViewerConfiguration.getAnnotationHover(),這將允許我實現懸停行爲,但僅限於「註釋」,我認爲這意味着滾動條標記 - 我如何實現文本本身的懸停行爲?

我會很高興具體的建議,以及一個教程的URL,涵蓋了這個 - 日食幫助文件和例子似乎並沒有。

編輯: 標記是最好的解決方案。如何使用它們的工作示例可以在插件示例代碼中找到:org.eclipse.ui.examples.readmetool.AddReadmeMarkerAction

回答

8

您應該使用標記。

來源於「Java開發人員指南到Eclipse」的一個例子如下:

<extension point="org.eclipse.core.resources.markers" 
      id="snakesyntax" 
      name="Snake syntax error"> 
    <super type="org.eclipse.core.resources.problemmarker" /> 
    <super type="org.eclipse.core.resources.textmarker" /> 
    <persistent value="true" /> 
<extension> 

IMarker marker = res.createMarker("com.ibm.tool.resources.snakesyntax"); 

marker.setAttribute(IMarker.SEVERITY, 0); 
marker.setAttribute(IMarker.CHAR_START, startOfSyntaxError); 
marker.setAttribute(IMarker.CHAR_END, endOfSyntaxError); 
marker.setAttribute(IMarker.LOCATION, "Snake file"); 
marker.setAttribute(IMarker.MESSAGE, "Syntax error"); 
2

正確的方法是使用標記接口。

標記本質上是一種將標記對象映射到源代碼中的位置的模型,因此在多個文件中可能存在錯誤的情況下,這是有意義的。 (請參閱IMarker界面)

如果您想將標記添加到當前的編輯器,但不是所有項目都使用註釋,則可以使用更便宜的選項,您可以添加自己的註釋。

標記在UI中表示爲註釋,但Eclipse會添加並刪除註釋本身。使用直接註釋,您可以控制。

相關問題