Sintaxe personalizada realce para AutoHotkey no Notepad ++

4

Estou usando a versão mais recente do Notepad ++ a partir desta postagem (versão 7.3.3, 64 bits) com o User Defined Language v.2.1.0.12.

Eu adicionei destaque de sintaxe para o AutoHotkey fornecido pelo quadro de mensagens do AHK , mas gostaria de personalize um pouco mais.

Especificamente, para qualquer tecla de atalho, gostaria de destacar toda a linha da mesma cor, assim:

Noentanto,aúnicacoisacomumatodasasteclasdeatalhoéquealinhaterminacom::.

Eufizesseexemplodefinindo^comoaaberturadodelimitadore::comoofechamentododelimitador,masissomerestringeaapenasteclasdeatalhoqueusamachaveCTRL.Espaçosecódigosaltcomoalimentaçãodelinha(ALT+010)parecemfuncionarnocampoDelimitadordefechamento,masnãonodeabertura(porrazõesóbvias).

Isso é possível? Alguma idéia inteligente?

    
por Dan A. 28.04.2017 / 16:59

1 resposta

0

O UDL parece um pouco restritivo, pois foi projetado para ser simples (sem suporte para RegEx, suporte limitado para caracteres personalizados, etc.).

Se você tiver a sintaxe AutoHotkey carregada, poderá adicionar o seguinte como um delimitador. Dependendo de onde você tem esses personagens, provavelmente haverá textos que são destacados de forma inadequada. Você pode consertar isso com algum tipo de aninhamento. No mínimo, você poderá brincar com a detecção de vários caracteres na mesma regra do delimitador.

Aberto:

^ || $ || ~ || ! || + || # || E || F

Fechar:

:: || :: || :: || :: || :: || :: || :: || :: 

Também é possível travar a detecção de teclas de atalho no início da linha usando uma sintaxe semelhante para o realce de comentários (que tem uma caixa de seleção para forçá-lo a iniciar o início da linha), mas você não pode usar o a sintaxe de comentário regular e não parece haver uma maneira de cancelar o destaque do comentário (antes da EOL) se o caractere Close não for detectado.

Isso também se aplica às regras do Delimitador ... por exemplo, se # estiver listado na regra Abrir e :: estiver listado na regra de fechamento, uma linha com #IfWinActive Some Program terá um realce total (vs não sendo realçado porque os caracteres próximos não foram detectados).

Isso também pode ser possível corrigir com aninhamento ou alguma sintaxe especial, mas também não consegui descobrir como fazer isso.

    
por 30.04.2017 / 00:09