Eclipse estensione JavaEditor: come aggiungere una linea frastagliata correttamente?
-
22-08-2019 - |
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.)
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.