Pergunta

Duplicate possíveis:
coloração de sintaxe para Cacau aplicativo

Estou interessado em destaque de sintaxe em Cocoa TextView.

Eu encontrei vários recursos:

  • com flexível, através de um padrão flexível comparado com textStorageDidProcessEditing em um delegado TextView. Nesta abordagem a seqüência inteira ter analisado em cada evento de entrada, portanto, degrada o desempenho.

  • CocoaDev tem um própria página sobre o tema de destaque de sintaxe :

    1. Use NSTextStorageDidProcessEditingNotification, em seguida, obter a gama editado, e apenas aplicar a coloração lá. A faixa pode ser wordboundaries ou qualquer coisa; isso definitivamente melhora o desempenho.

    2. mencionado lá:. Xcode, por exemplo, só coloriza texto que está atualmente na tela, e adia colorir o resto do documento até que você percorre-lo Como seria um implementar isso?

    3. Use NSLayoutManager - via atributos temporários [que] são usados ??somente para o desenho na tela e não são persistentes de qualquer maneira ... como os docs dizer, mas que não colorir o último intervalo editado, até que um caractere de espaço em branco é inserido.

    4. auxiliar personalizado como UKSyntaxColoredDocument - agradável, mas definição de linguagem é feita através de lista de propriedades; como usar definições de idiomas adicionais / existentes?

Nenhuma das abordagens parecem realmente extensível ou robusta para mim (exceto a 4. talvez ..).

Estou ciente de bibliotecas robustos existentes para SH como pygments ; e da PyObjC .

Pergunta : Como seria possível usar alguma biblioteca existente por exemplo como pygments ter uma sintaxe extensível e performance destacando em um TextView cacau?

Nota : Eu sei que esta questão é muito ampla (e muito muito tempo). Experiências e sugestões, bem como soluções são bem vindas. Obrigado.


Encontrado outro segmento similar sobre esse assunto: coloração de sintaxe para Cacau aplicativo

Foi útil?

Solução

Eu sugiro dar uma olhada no código fonte para Smultron . Ele tem muito agradável destaque de sintaxe. Ele usa uma subclasse de NSTextView para fazer a maior parte do trabalho pesado. O código usa o gerenciador de layout para adicionar atributos para o texto e usa alguns outros truques inteligentes para único destaque tanto o documento como necessário.

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