Question

Comment puis-je indiquer des erreurs de syntaxe (par exemple une séquence illégale de jetons) dans un plugin éditeur Eclipse, tout comme dans l'éclipse éditeur Java, soit par soulignements Wriggly rouge, un marqueur rouge sur la barre de défilement que vous pouvez sauter et un message d'explication lorsque vous passez la souris sur l'un ou l'autre?

J'écris un plugin Eclipse éditeur pour un format de fichier personnalisé (plus précisément, le « format de fichier de serpent » du moteur de jeu Shark3D). Je l'ai mis en place un scanner pour obtenir la coloration syntaxique, et un aperçu.

  • Pour les soulignements, dois-je simplement le scanner retourner un IToken avec un « wriggly souligné » TextAttribute au lieu de la normale, ou est-il un mécanisme spécifique pour le marquage des erreurs de syntaxe?
  • Comment puis-je mettre les marqueurs de scrollbar? Est-ce IAnnotationModel l'interface pertinente ici? Si oui, où dois-je inscrire la mise en œuvre afin que les marqueurs apparaissent?
  • Je n'ai trouvé SourceViewerConfiguration.getAnnotationHover(), ce qui me permettrait de mettre en œuvre le comportement de vol stationnaire, mais seulement pour la « annotation », que je suppose signifie que les marqueurs de scrollbar - comment puis-je mettre en œuvre le comportement de vol stationnaire pour le texte lui-même?

Je serais heureux des conseils spécifiques ainsi qu'une URL d'un tutoriel qui couvre cette -. L'aide éclipse documents et exemples ne semblent pas

Edit: Les marqueurs sont les meilleures solutions à ce sujet. Un exemple concret de la façon de les utiliser se trouve dans le code exemple plugin dans org.eclipse.ui.examples.readmetool.AddReadmeMarkerAction

Était-ce utile?

La solution

Vous devez utiliser des marqueurs.

Un exemple dérivé de "Guide du Développeur Java Eclipse" suit:

<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");

Autres conseils

La manière correcte est d'utiliser l'interface de marqueur.

Les marqueurs sont essentiellement un modèle qui associe des objets de marqueurs à des emplacements dans votre code source, donc cela est logique dans des situations où vous pouvez avoir des erreurs dans plusieurs fichiers. (Voir l'interface IMarker)

Une option moins cher si vous voulez ajouter des balises à votre éditeur actuel, mais pas tout le projet utilise des annotations que vous pouvez ajouter une vous-même retirer.

Les marqueurs sont représentés dans l'interface utilisateur sous forme d'annotations, mais Eclipse ajoute et supprime les annotations lui-même. Avec annotations directes, vous êtes en contrôle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top