Cómo mostrar errores de sintaxis en un plugin de editor de Eclipse
-
23-08-2019 - |
Pregunta
¿Cómo puedo indicar errores de sintaxis (por ejemplo, una secuencia ilegal de fichas) en un plugin de editor de Eclipse al igual que en el eclipse editor de Java, es decir, por subrayados wriggly rojas, un marcador rojo en la barra de desplazamiento que puede saltar a, y una mensaje explicativo cuando se pasa sobre cualquiera de ellos?
Estoy escribiendo un plugin de editor de Eclipse para un formato de archivo personalizado (en concreto, el "formato de archivo de serpiente" del motor del juego Shark3D). He implementado un escáner para obtener el resaltado de sintaxis, y un esbozo.
- Para los subrayados, puedo simplemente tienen el escáner devolver un
IToken
con unTextAttribute
"wriggly subrayado" en vez de la normal, o hay un mecanismo específico para marcar los errores de sintaxis? - ¿Cómo implementar los marcadores de la barra de desplazamiento? Se
IAnnotationModel
la interfaz relevante aquí? Si es así, ¿por dónde registrar la aplicación para que aparezcan los marcadores? - Sólo he encontrado
SourceViewerConfiguration.getAnnotationHover()
, que me permitiera implementar el comportamiento estacionario, pero sólo para la "anotación", que supongo que significa que los marcadores de la barra de desplazamiento - ¿Cómo se implementa el comportamiento estacionario para el propio texto ? li>
Sería feliz asesoramiento específico, así como una dirección URL de un tutorial que cubre esta -. Los documentos y ejemplos de ayuda de Eclipse no parecen
Editar
Los marcadores son las mejores soluciones a este. Un ejemplo práctico de cómo usarlos se puede encontrar en el código plugin de ejemplo en org.eclipse.ui.examples.readmetool.AddReadmeMarkerAction
Solución
Usted debe ser el uso de marcadores.
Un ejemplo derivado de "La Guía del Desarrollador Java en Eclipse" sigue:
<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");
Otros consejos
La forma correcta está utilizando la interfaz de marcador.
Los marcadores son esencialmente un modelo que mapea objetos marcadores a lugares en su código fuente, por lo que esto tiene sentido en situaciones en las que puede tener errores en varios archivos. (Ver la interfaz IMarker)
Una opción más barata si desea añadir marcado a su editor actual, pero no a todo el proyecto está utilizando anotaciones, que puede agregar un darse de baja.
Los marcadores están representados en la interfaz de usuario como anotaciones, pero Eclipse añade y elimina las propias anotaciones. Con anotaciones directas, usted está en control.