Выборочная подсветка синтаксиса для AutoHotkey в Notepad ++

1475
Dan A.

Я использую последнюю версию Notepad ++ на этот пост (версия 7.3.3, 64-разрядная версия) с User Defined Language v.2.1.0.12.

Я добавил подсветку синтаксиса для AutoHotkey, предоставляемую доской объявлений AHK, но хотел бы немного изменить его.

В частности, для любой горячей клавиши я бы хотел выделить всю строку одним цветом, например так:

enter image description here

Однако единственное, что является общим для всех горячих клавиш, это то, что строка заканчивается ::.

Я сделал этот пример, установив ^в качестве открытия ::разделителя и закрытия разделителя, но это ограничивает меня только горячими клавишами, которые используют CTRLклавишу. Пробелы и альтернативные коды, такие как перевод строки ( ALT+010), работают в поле Разделитель закрытия, но не в Открытом (по очевидным причинам).

enter image description here

Это возможно? Любые умные идеи?

4

1 ответ на вопрос

0
JJohnston2

UDL выглядит несколько ограниченно, так как он разработан так, чтобы быть простым (без поддержки RegEx, ограниченной поддержки пользовательских символов и т. Д.).

Если у вас загружен синтаксис AutoHotkey, вы можете добавить следующее в качестве разделителя. В зависимости от того, где еще у вас есть эти символы, возможно, будет текст, который будет выделен неправильно. Вы можете исправить это с помощью вложенности. Как минимум, это позволит вам поиграть с обнаружением нескольких символов в рамках одного правила разделителя.

Открыто:

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

Близко:

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

Также возможно заблокировать обнаружение горячих клавиш в начале строки, используя аналогичный синтаксис для выделения комментариев (в котором есть флажок для принудительного начала строки), но тогда вы не можете использовать обычный синтаксис комментариев и, кажется, нет способа отменить выделение комментария (до EOL), если символ Закрыть не обнаружен.

Это относится и к правилам разделителя ... так, например, если #указано в правиле Open и ::указано в правиле закрытия, строка с #IfWinActive Some Programбудет выделена полностью (вместо того, чтобы не выделяться, потому что закрывающие символы не были обнаружены) ).

Это также можно исправить с помощью вложенности или какого-то специального синтаксиса, но я также не мог понять, как это сделать.

Похожие вопросы