Pergunta

Como verificar se uma palavra em uma posição está em um período [i] do xshd-ruleset?

Obrigado!

Foi útil?

Solução

Existem duas maneiras possíveis de obter informações do mecanismo de destaque:

O mecanismo de destaque armazena apenas a "pilha de span" no início de cada linha. Você pode usar o DocumentHighlighter.GetSpanStack Método para recuperá -lo.

var documentHighlighter = textEditor.TextArea.GetService(typeof(IHighlighter)) as DocumentHighlighter;
bool isInComment = documentHighlighter.GetSpanStack(1)
             .Any(s => s.SpanColor != null && s.SpanColor.Name == "Comment");

Isso retornará verdadeiro se o final da linha 1 (= início da linha 2) estiver dentro de um comentário multilina.

Para resultados mais detalhados, você terá que executar o marcador.

int off = document.GetOffset(7, 22);
HighlightedLine result = documentHighlighter.HighlightLine(7);
bool isInComment = result.Sections.Any(s => s.Offset <= off
                                         && s.Offset+s.Length >= off
                                         && s.Color.Name == "Comment");

Obviamente, a identificação de vãos/seções por cor funciona apenas de maneira confiável se essas cores forem nomeadas. Nem todos os destaques internos foram atualizados para usar as cores nomeadas; portanto, verifique os arquivos .xshd primeiro.

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