Eclipse extensión JavaEditor: Cómo añadir una línea adecuada sangría?
-
22-08-2019 - |
Pregunta
¿Qué se necesita?
Nos dirigimos una extensión de a eclipsar JavaEditor. Necesitamos una manera de añadir una línea antes y después de la línea está el cursor.
El cursor en la nueva línea debe estar en la posición correcta (correctamente indeted).
Muestra (# es el cursor):
antes (I
):
public class Test {
public static void main#(String[] args) {
System.out.println("Test!");
}
}
después querido (II
):
public class Test {
#
public static void main(String[] args) {
System.out.println("Test!");
}
después de no querido (también conocido como el estado actual) (III
):
public class Test {
#
public static void main(String[] args) {
System.out.println("Test!");
}
Estado actual:
La transformación de I
a III
puede hacerse a través IDocument.replace()
, un InsertEdit
o vía rewriteSessions de IDocumentExtension4
.
El problema es cómo llamar a la función de guión JavaEditor después de insertar la nueva línea de la extensión. O es posible incluso para sangrar la línea directa correcto (I
a II
)? (La longitud del guión debe no siempre será el uno de la línea actual, pero la correcta. Paquetes internal
no se deben utilizar si es posible, de lo contrario IndentUtil
sería la solución.)
Solución
Una solución parece ser no utilizar IDocument.replace()
, por ejemplo.
myTextViewer.getDocument().replace(...)
pero insert()
, por ejemplo.
textViewer.getTextWidget().insert(...)
Esto funciona, pero aún no es una solución completa a llamar a la función guión sin generar dependencias a org.eclipse.jdt
:-(. Eso todavía se necesita.