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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top