Pergunta

Como posso indicar erros de sintaxe (por exemplo, uma seqüência ilegal de tokens) em um editor Eclipse Plugin assim como no editor Java eclipse, ou seja, por sublinhados vermelhos wriggly, um marcador vermelho na barra de rolagem que você pode saltar para, e um mensagem explicativa quando você passar o mouse sobre qualquer um?

Eu estou escrevendo um editor Eclipse Plugin para um formato de arquivo personalizado (especificamente, o "formato de arquivo cobra" do motor de jogo Shark3D). Eu tenho implementado um scanner para obter destaque de sintaxe, e um esboço.

  • Para os sublinhados, eu simplesmente ter o scanner retornar um IToken com um TextAttribute "wriggly sublinhado" em vez do normal, ou existe um mecanismo específico para marcação de erros de sintaxe?
  • Como faço para implementar os marcadores de barra de rolagem? É IAnnotationModel a interface relevante aqui? Se assim for, onde posso registrar a implementação para que os marcadores aparecem?
  • Eu só encontrei SourceViewerConfiguration.getAnnotationHover(), o que permitiria me para implementar o comportamento de foco, mas apenas para a "anotação", que suponho que significa os marcadores de barra de rolagem? - Como faço para implementar o comportamento de foco para o próprio texto

Eu ficaria feliz conselhos específicos, bem como uma URL de um tutorial que cobre este -. Os documentos ajuda do Eclipse e exemplos não parecem

Editar: Os marcadores são as melhores soluções para este. Um exemplo de trabalho de como usá-los pode ser encontrada no código de exemplo plugin no org.eclipse.ui.examples.readmetool.AddReadmeMarkerAction

Foi útil?

Solução

Você deve estar usando marcadores.

Um exemplo derivado de "O Guia do Desenvolvedor Java para Eclipse" segue:

<extension point="org.eclipse.core.resources.markers"  
            id="snakesyntax"  
            name="Snake syntax error">  
    <super type="org.eclipse.core.resources.problemmarker" />  
    <super type="org.eclipse.core.resources.textmarker" />  
    <persistent value="true" />
<extension>

IMarker marker = res.createMarker("com.ibm.tool.resources.snakesyntax");

marker.setAttribute(IMarker.SEVERITY, 0);
marker.setAttribute(IMarker.CHAR_START, startOfSyntaxError);
marker.setAttribute(IMarker.CHAR_END, endOfSyntaxError);
marker.setAttribute(IMarker.LOCATION, "Snake file");
marker.setAttribute(IMarker.MESSAGE, "Syntax error");

Outras dicas

A maneira correta é usar a interface de marcador.

Os marcadores são essencialmente um modelo que mapeia objetos de marcadores para locais em seu código-fonte, o que faz sentido em situações onde você pode ter erros em vários arquivos. (Ver a interface IMarker)

A opção mais barata se você quiser adicionar marcação para seu editor atual, mas não para todo o projeto está usando anotações, que você pode adicionar um retirar-se.

Os marcadores são representados na interface do usuário como anotações, mas Eclipse adiciona e remove as próprias anotações. Com anotações diretas, você está no controle.

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