Еще с давних-стародавних времен, когда компьютеры с процессором 286 считались самыми крутыми, я думал, что самым лучшим текстовым редактором для программиста является связка Volkov Commander и MultiEdit 6.0. Volkov Commander позволял настроить целых 3 варианта на обработку файла по клавишам Enter, F3, F4 на файле, и еще вызывать дополнительно настроенный редактор по клавишам Alt+F4 - такой возможности я еще не нашел ни у одного современного файлового менеджера (может, плохо искал?). А текстовый редактор MultiEdit 6.0 перекрывал тогда все мыслимые и немыслимые потребности программиста - подсветка синтаксиса, настраиваемый вызов компилятора, перехват вывода сообщений об ошибках компиляции, работа с буфером обмена, выделение текста потоком, строками и колонками, сохранение блока текста, возможность работать с несколькими файлами, макросы, поиск и замена, повтор последнего поиска, поиск в файлах, таблица ASCII, удобная работа с разделителями страниц, пометка измененных строк текста, переход к произвольной строке по её номеру, калькулятор, рисование линий псевдографикой настраиваемые цвета текста, бэкграунда и чего только возможно, настраиваемые горячие клавиши, поддержка командной строки - праздник для души.
Но время не стоит на месте, и все меняется. В новых операционных системах Windows (семейства NT) начал глючить вызов компилятора, работать стало не очень удобно. Начались поиски нового идеала. Пока остановился на UltraEdit32 [1] версии 10.10a (хотя сегодня доступна уже 12-я). Программа не бесплатная, но свою цену она оправдывает, работать, по крайней мере, можно. Очень похожа по идеологии на MultiEdit, наверняка автор постарался взять оттуда все самое лучшее. Самые главные проблемы - отображение неформатированного (plain) текста в разных кодировках русского, цветовая настраиваемая подсветка, вызов компилятора и перехват его вывода, настраиваемые клавиши - решены, остальные стандартные возможности текстового редактора тоже реализованы хорошо. Недостаток - не ясно, где хранятся настройки, чтобы их перенести на другой компьютер или забэкапить (исключение - файл подсветки синтаксиса языков wordfile.txt, и на том спасибо), программа не русифицирована (не самая большая беда).
Чтобы настроить удобную работу с компилятором ассемблера MCS51, мне пришлось несколько повозиться. Процесс по шагам:
1. Установил программу, полазил слегка по меню, поверхностно ознакомился с возможностями.
2. Настроил расширение для моих ассемблерных текстов (*.s03) - меню Advanced -> Configuration... -> закладка File Associations, в поле выпадающего списка File Types/Extensions пишу .s03, в поле ввода Description: пишу MCS51 asm, жму кнопу Add. В списке UltraEdit Associations: появляется новый тип файла "MCS51 asm". Теперь двойной щелчок на нем будет вызывать UltraEdit. 3. Прикручиваем запуск компилятора. Меню Advanced\DOS Command... (мне надо было BAT-файл для запуска консольных компилятора и линкера), в строке Command пишем путь до BAT-файла и опции для него. Мне нужно было указать просто имя редактируемого файла без расширения, поэтому я указал просто в качестве одной опции %N (подробный справочник по командной строке в help - просто нажмите в этом окошке кнопку Help, или в основном разделе help найдите "DOS Command (Advanced menu)"). В строке Working Directory напишите путь до рабочей директории командного файла. Я указал просто точку (.), что означает текущую директорию, из которой был открыт компилируемый файл. Можно поставить галочку "Show DOS box", тогда во время компиляции будет открываться консольное окошко, где будет виден вывод работы BAT-файла. Кроме того, этот вывод будет перехватываться в виде нового текстового файла, что меня вполне устраивало.
4. Настраиваем цвета отображения текста. Меню View\Set Colors, я задал следующие цвета:
Text- серый Active Line - белый Background - черный Active Line Background - темно-фиолетовый Bookmarks - грязно-зеленый, оставил без изменения Selected Text - белый Column Markers - черный, пока оставил без изменения Sel. Text Background - синий Line/Col Text - черный, пока оставил без изменения Line/Col Background - белый, пока оставил без изменения
Поставил там же галочку Enable Active Line Coloring.
Внимание! Настройки в этом диалоге смешиваются с настройкой цветовой подсветки синтаксиса, поэтому будьте внимательны при выборе цветов.
5. Настраиваем подсветку синтаксиса - с этим пришлось повозиться подольше, потому что примера для ассемблерного текста у меня под рукой не было. Сначала выяснил, где настраивается подсветка синтаксиса - Advanced\Configuration...\закладка Syntax Highlighting. Там указан файл для настройки подсветки разных языков - строка ввода Full path name for wordlist: (по умолчанию там было указано C:\Program Files\UltraEdit\WORDFILE.TXT). Открыл этот файл и начал изучать. Как выяснилось, ничего в общем, страшного, вполне можно разобраться. Файл состоит из нескольких больших секций, каждая соответствует определенному языку - /L1, /L2, /L3 (Language 1, 2, 3...) и так далее. В каждой секции есть комментарий, который виден в выпадающем списке Language: меню Advanced\Configuration...\закладка Syntax Highlighting. Кроме того, в каждой секции языка есть цветовые группы - разделы /C1, /C2, /C3 и т. д. (помеченные соответствующим комментарием, например, Keywords, Operators, Mnemonics1, Mnemonics2; эти комментарии видны в выпадающем списке Color Group:), которые отвечают за цветовую подсветку слов (Color 1, 2, 3...). Некоторые цветовые разделы уже заданы, и их комментарии/название нельзя изменить, например, Normal Text, Comment, String и проч. В каждом разделе /C1, /C2, /C3 и т. д. перечислены ключевые слова ассемблера, которые распознаются для выделения цветом. Каждый цветовой раздел имеет несколько строк, в каждой из которых перечислены ключевые слова, начинающиеся на одну и ту же букву (это правило важно выполнить, иначе некоторые ключевые слова не будут подсвечиваться). Цвета для каждой группы настраиваются в том же меню - Advanced\Configuration...\закладка Syntax Highlighting. Кажется, я слишком много тут наговорил, и получилось слишком сложно, лучше продемонстрировать мою секцию MSC51 на примере, как она получилась:
/L10"MCS51 asm" Line Comment = ; Block Comment On = /* Block Comment Off = */ Escape Char = \ String Chars = "' File Extensions = S03 ASM H /Delimiters = ~!@%^&*()-+=|\/{}[]:"'< > ,.? /Function String = "" /Indent Strings = "" /Unindent Strings = "" /C1"Keywords" ASEG COMMON DATE DEFINE END ENDMOD EXTERN EQU ELSE ENDIF ENDMAC equ SFB SFE RSEG STACK PROM PUBLIC PAGSIZ PAGE PTITL PSTITL RAM RSEG IF LOCSYM LSTOUT LSTCND LSTCOD LSTEXP LSTMAC LSTWID LSTFOR LSTPAG MODULE MACRO NAME ORG SET STITL TITL /C2"Operators" + - * / NOT LOW HIGH LWRD HWRD MOD SHR SHL AND OR XOR EQ = NE < > GE >= LE < = GT > LT < UGT >> ULT << /C3"Mnemonics1" add acall ajmp addc anl ADD ACALL AJMP ADDC ANL cjne clr cpl CJNE CLR CPL dec div djnz DEC DIV DJNZ inc INC ljmp lcall LJMP LCALL mov movx mul movc MOV MOVX MUL MOVC nop NOP jc jnc jz jnz jb jbc jnb jmp JC JNC JZ JNZ JB JBC JNB JMP orl ORL xrl xch xchd XRL XCH XCHD rrc rlc rr RRC RLC RR sjmp subb setb swap SJMP SUBB SETB SWAP /C4"Mnemonics2" push pop PUSH POP ret reti RET RETI
Пояснения:
- Последняя секция в моем файле WORDFILE.TXT была L9, поэтому я добавил секцию L10 и назвал её MCS51 asm, просто скопировав содержимое секции L1"C/C++" и потом переправив её содержимое. - Line Comment изменил на ; - File Extensions поменял на S03 ASM H (для чего это нужно, непонятно) - Многие параметры, в которых сомневался, оставил без изменения - Escape Char, Delimiters - Очистил параметры Function String, Indent Strings и Unindent Strings - Отредактировал разделы /C1"Keywords", /C2"Operators", создал разделы /C3"Mnemonics1", /C4"Mnemonics2", назначил необходимые цвета в меню Advanced\Configuration...\закладка Syntax Highlighting. - для того, чтобы распознавался синтаксис с маленькими и большими буквами, пришлось соответственно каждую строку задублировать в двух регистрах.
[Ссылки]
1. UltraEdit site:ultraedit.com |