4

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

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

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

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

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

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

1 ответ1

0

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

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

Открыто:

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

Близко:

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .