Eclipse extension de JavaEditor: Comment ajouter une ligne correctement en retrait?
-
22-08-2019 - |
Question
Que faut-il?
Nous écrivons une extension pour éclipser son JavaEditor. Nous avons besoin d'un moyen d'ajouter une ligne avant et après la ligne le curseur se trouve.
Le curseur sur la nouvelle ligne devrait être sur la bonne position (correctement indeted).
Sample (# est le curseur):
avant (I
):
public class Test {
public static void main#(String[] args) {
System.out.println("Test!");
}
}
après voulu (II
):
public class Test {
#
public static void main(String[] args) {
System.out.println("Test!");
}
après pas voulu (l'état actuel a.k.a.) (III
):
public class Test {
#
public static void main(String[] args) {
System.out.println("Test!");
}
Etat actuel:
La transformation de I
à III
peut se faire via IDocument.replace()
, un InsertEdit
ou via les rewriteSessions de IDocumentExtension4
.
Le problème est de savoir comment appeler la fonction de retrait JavaEditor après insertion de la nouvelle ligne de l'extension. Ou est-il même possible de retrait de la ligne directe correcte (I
à II
)? (La longueur du tiret devrait pas toujours celui de la ligne courante, mais le bon. Paquets internal
ne doivent pas être utilisés si possible, sinon IndentUtil
serait la solution.)
La solution
Une solution semble être de ne pas utiliser IDocument.replace()
, par exemple.
myTextViewer.getDocument().replace(...)
mais insert()
, par exemple.
textViewer.getTextWidget().insert(...)
qui fonctionne, mais ne sont pas encore une solution complète pour appeler la fonction de retrait sans générer de dépendances à org.eclipse.jdt
:-(. Cela est encore nécessaire.