Добрый вечер.
Сразу оговорюсь. Я долго (и пока с переменным успехом) пытаюсь мигрировать на CudaText с NPP. Поэтому буду сравнивать с ним.
Сейчас вот разбираюсь с External Tools.
Как это сделано в NPP с плагином NppExec.
Мы задаем до 10 масок для вывода консоли, для каждой из масок можно задать цвет фонта и его стиль (это очень удобно, отличать errors и warnings от остального вывода). Задается маска просто. Вот такая маска:
подкрасит красным цветом и успешно выкусит имя файла и номер строки с ошибкой из вот этого сообщения:
Code: Select all
D:\bc\ZX\Games\2017\Vade Retro II\VDIISource_\KeybRoutines.a80(74): error: Unrecognized instruction: PrntKeys0 PUSH BC
или из вот этого
Code: Select all
D:\bc\ZX\Games\2017\Vade Retro II\VDIISource_\KeybRoutines.a80(83): error: [DJNZ] Target out of range (162)
и позволит перейти к нужному месту по дабл-клику.
А вот такая маска:
задетектит тут
Code: Select all
D:\bc\ZX\Games\2017\Vade Retro II\VDIISource_\KeybRoutines.a80(74): warning: Label has different value in pass 3: 32860 != 33035
warning и подкрасит его другим цветом.
Может тупо (без мощнейших возможностей даруемых регэкспами), но работает.
Что имеем в External Tools. Я только начал разбираться, поэтому может что-то не нашел.
А нашел я пока только Pattern, и...
...часа через полтора (ну я совсем не отношу себя к адептам Церкви Регулярных Выражений) я-таки научил External Tools получать из строки
Code: Select all
D:\bc\ZX\Games\2017\Vade Retro II\VDIISource_\KeybRoutines.a80(74): error: Unrecognized instruction: PrntKeys0 PUSH BC
имя файла и номер строки. Чему был несказанно рад!
А вот, что я задал в качестве регэкспа
Code: Select all
(?P<file>^.*).*[(](?P<line>.*).*?[')']
(если честно, я не очень понимаю, что я туда понаписал, но вроде заработало).
"Вроде", потому что уже на строке
Code: Select all
D:\bc\ZX\Games\2017\Vade Retro II\VDIISource_\KeybRoutines.a80(83): error: [DJNZ] Target out of range (162)
я получил "D:\bc\ZX\Games\2017\Vade Retro II\VDIISource_\KeybRoutines.a80(83): error: [DJNZ] Target out of range " в качестве имени файла и "162" - в качестве номера строки.
В общем, печаль.
Я, конечно, осознаю, что описанные мной проблемы - результат моей абсолютной безграмотности в вопросе синтаксиса регулярных выражений. Но. Я не хочу изучать синтаксис регулярных выражений. Я хочу изучать ассемблер z80, а для этого пытаюсь собрать более-менее удобную среду.
Просьба.
Объясните, ЧЯДНТ? И как все-таки надо?
Можно ли раскрасить сообщения в разные цвета, ну или хотя бы задать пару регэкспов: один для ерроров, воторой - для ворнингов.
Спасибо.