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.)

Était-ce utile?

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.

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