Domanda

Quello che serve?

Stiamo scrivendo un'estensione per Eclipse JavaEditor. Abbiamo bisogno di un modo per aggiungere una riga prima e dopo la linea si trova il cursore.

Il cursore sulla nuova linea dovrebbe essere in posizione corretta (correttamente indeted).

Esempio (# è il cursore):

prima (I):

public class Test {
    public static void main#(String[] args) {
        System.out.println("Test!");
    }
}

Dopo aver voluto (II):

public class Test {
    #
    public static void main(String[] args) {
        System.out.println("Test!");
    }

dopo non voluto (anche noto come lo stato attuale) (III):

public class Test {
#
    public static void main(String[] args) {
        System.out.println("Test!");
    }

Stato attuale:

La trasformazione da I a III può essere fatto tramite IDocument.replace(), un InsertEdit o tramite rewriteSessions di IDocumentExtension4.

Il problema è come chiamare la funzione trattino di JavaEditor dopo l'inserimento della nuova linea dall'estensione. Oppure è anche possibile far rientrare la linea direttamente corretta (I a II)? (La lunghezza del trattino dovrebbe non sempre quello della riga corrente, ma quello corretto. Pacchetti internal non devono essere utilizzate se possibile, altrimenti IndentUtil sarebbe la soluzione.)

È stato utile?

Soluzione

Una soluzione sembra essere di non utilizzare IDocument.replace(), per es.

myTextViewer.getDocument().replace(...)

ma insert(), per es.

textViewer.getTextWidget().insert(...)

che funziona ma non è ancora una soluzione completa per chiamare la funzione trattino senza generare dipendenze per org.eclipse.jdt :-(. Ciò è ancora necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top