extensão Eclipse JavaEditor: Como adicionar uma linha corretamente recuado?
-
22-08-2019 - |
Pergunta
O que é necessário?
Estamos escrevendo um extensão para JavaEditor do eclipse. Precisamos de uma maneira de adicionar uma linha antes e depois da linha onde o cursor está.
O cursor na nova linha deve estar na posição correta (corretamente indeted).
Amostra (# é o cursor):
antes (I
):
public class Test {
public static void main#(String[] args) {
System.out.println("Test!");
}
}
depois queria (II
):
public class Test {
#
public static void main(String[] args) {
System.out.println("Test!");
}
depois de não queria (A.K.A. o estado atual) (III
):
public class Test {
#
public static void main(String[] args) {
System.out.println("Test!");
}
estado atual:
A transformação de I
para III
pode ser feito via IDocument.replace()
, um InsertEdit
ou via rewriteSessions de IDocumentExtension4
.
O problema é como chamar a função travessão do JavaEditor depois de inserir a nova linha da extensão. Ou é possível até mesmo recuar a linha diretamente correto (I
para II
)? (O comprimento do travessão deve não sempre ser o da linha atual, mas o correto. Pacotes internal
não deve ser usado, se possível, caso contrário IndentUtil
seria a solução.)
Solução
Uma solução parece não ser para uso IDocument.replace()
, por exemplo.
myTextViewer.getDocument().replace(...)
mas insert()
, por exemplo.
textViewer.getTextWidget().insert(...)
Isso funciona, mas ainda não é uma solução completa para chamar a função travessão sem gerar dependências para org.eclipse.jdt
:-(. Isso ainda é necessária.