AkelPad — текстовый редактор с открытым исходным кодом для Windows, может быть запущен под Wine и работать под управлением Linux, маленький и быстрый, обладает функционалом, который можно расширить за счет плагинов. Корректно отображает псевдографику, позволяет настраивать шрифт и фон. AkelPad может редактировать файлы с атрибутом «Только для чтения» и просматривать файлы перед открытием. AkelPad имеет многоуровневую систему отмены правок, список последних открытых в программе файлов, запоминает кодовую страницу для файла, положение знака вставки и последнюю строку поиска/замены. Много полезных вещей для работы с текстом, строками или данными: транслитерация, извлечение ссылок, сортировка, удаление/получение дублей строк, удаление строк по фильтру и так далее. Зная регулярные выражения, AlelPad можно использовать для задач по обработке данных — не нужно никаких сторонних программ, сервисов или писать скрипты.Основные возможности AkelPad Однооконный режим (SDI — Single Document Interface), многооконный режим (MDI — Multiple Document Interface) и псевдо-многооконный режим (PMDI— Pseudo Multiple Document Interface); Полная поддержка Unicode строк на Unicode системах; Работа с кодировками Unicode (UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE); Работа с любой кодовой страницей, установленной в системе; Работа с DOS/Windows, Unix и Mac форматами перевода строки; Предпросмотр открытия файлов; Корректное отображение псевдографики; Блочное выделение текста; Многоуровневый откат действий; Быстрые поиск/замена строк текста; Запоминание кодировки и позиции каретки в файле; Печать и предпросмотр; Поддержка языковых модулей; Поддержка плагинов (подсветка синтаксиса, сворачивание блоков, авто-дополнение, запуск скриптов, клавиатурные макросы). Параметры командной строкиAkelPad.exe [параметры] "file1.ext" [параметры] "file2.ext" [параметры] ... /x — не использовать режим совместимости с MS Notepad при обработке параметров командной строки. /p — напечатать следующий файл и закрыть его. /C+ — молча создавать новый файл, если он не существует. /C- — не создавать новый файл, если он не существует. /C — спрашивать о создании нового файла, если он не существует (по умолчанию). /B+ — молча открывать файл, если он бинарный. /B- — не открывать файл, если он бинарный. /B — спрашивать об открытии файла, если он бинарный (по умолчанию). /L+ — молча сохранить файл, даже если потеряются символы в указанной кодировке. /L- — не сохранять файл, если потеряются символы в указанной кодировке. /L — спрашивать о сохранении файла, если потеряются символы в указанной кодировке (по умолчанию). /Z — игнорировать следующий параметр командной строки. /NewInstance — форсировать создание нового экземпляра программы. /MainClass("MyAkelPad4") — задать имя класса для нового экземпляра программы. При этом имя может содержать переменную %d, которая заменяется на идентификатор процесса. /Reassoc — переустановить ранее назначенные ассоциации типов файлов. /Deassoc — снять ранее назначенные ассоциации типов файлов. /Quit — закончить обработку параметров командной строки и выйти из программы. /End — закончить обработку параметров командной строки. Методы: /Show(Стиль Главного Окна) Стиль Главного Окна 0 — скрытое окно. 1 — окно как есть (по умолчанию). 2 — свернутое окно. 3 — развернутое окно. 6 — свернутое, не активное окно. 9 — не развернутое окно. Пример: /Show(2) — метод отображает главное окно в свернутом режиме. /OpenFile("файл"[, Кодировка][, СигнатураBOM]) "файл" — Файл для открытия. Кодировка — Кодировка открытия. Если -1 или не указана, она будет определена автоматически. СигнатураBOM — Сигнатура BOM файла. Если -1 или не указана, она будет определена автоматически. Пример: /OpenFile("C:\File.txt", 65001, -1) — метод открывает файл в кодировке UTF-8. /SaveFile("файл"[, Кодировка][, Сигнатура BOM]) "файл" — Сохранение текущего документа в указанный файл. Кодировка — Кодировка сохранения. Если -1 или не указана, будет использована текущая кодировка. СигнатураBOM — Сигнатура BOM файла 1 — присутствует 0 — отсутствует -1 или не указана — используется текущий BOM Пример: /SaveFile( "C:\File.txt", 65001, 0) — метод сохраняет файл в кодировке UTF-8 без BOM. /Command(Внутренняя_Команда[, Параметр]) /Command(4162) метод вызывает внутреннюю команду под номером 4162. /Call("Плагин::Функция"[, дополнительные параметры]) /Call("Scripts::Main") метод вызывает плагин Scripts и функцию Main. /Exec("командная строка"[, "рабочая директория"][, Ожидать][, Стиль Окна]) "командная строка" Командная строка. "рабочая директория" Рабочая директория. По умолчанию "". Ожидать — Ожидать завершения программы. 1 — ожидать, 0 — не ожидать (по умолчанию). Стиль Окна См. описание Стиль Главного Окна метода /Show(). Замечание: программы могут игнорировать данный параметр. /Exec("notepad.exe") метод вызывает блокнот. /Exec(`notepad.exe`) метод вызывает блокнот. /Exec('notepad.exe') метод вызывает блокнот. /Exec('%windir%\notepad.exe') метод вызывает блокнот. Пример: /Exec(`rundll32.exe shell32,ShellExec_RunDLL "%f"`, "%d") — метод передает активный файл для открытия по ассоциации Windows. /Font("Шрифт", Начертание, Размер) "Шрифт" — Имя шрифта, например, "Courier". Не изменяется, если "". Начертание (одно из следующих): 0 — игнорировать. 1 — обычный шрифт. 2 — жирный шрифт. 3 — курсивный шрифт. 4 — жирный курсивный шрифт. Размер — Размер шрифта. Не изменяется, если 0. Пример: /Font("Courier", 4, 10) — метод устанавливает жирный курсивный шрифт "Courier" размером 10 pt. /Recode(Перекодировать Из, Перекодировать В) Перекодировать Из — Кодировка источник. Если -1, она будет определена автоматически. Перекодировать В — Кодировка приемник. Если -1, она будет определена автоматически. Пример: /Recode(1251, 866) — метод перекодирует текст из кодировки 1251 в 866. /Insert("текст"[, Esc-последовательности]) "текст" Вставляемый текст. Esc-последовательности: 0 — "текст" не содержит Esc-последовательностей (по умолчанию). 1 — "текст" содержит Esc-последовательности. Набор последовательностей аналогичен диалогу поиска/замены в программе, а также: "\s" — заменяется на выделенный в окне редактирования текст; "\|" — указывает на положение каретки после вставки текста. /Insert("Некая строка") — метод заменяет выделение на указанный текст. /Insert("<B>\s</B>", 1) — метод добавляет к выделению текст по краям. Пример: /Insert("\[0031 0032 0033]", 1) — метод заменяет выделение на "123". /If("выражение", "Если Истина", "Если Ложь") "выражение" Выражение может содержать: математические операции: +, -, *, /, %, &, |, ^. логические операции: >, <, ==, !=, >=, <=, &&, ||, x?y:z. комментарии: /*комментарий*/ методы: SendMain(nMessage, wParam, lParam) nMessage Сообщение, которое посылается главному окну программы. wParam Дополнительная информация. lParam Дополнительная информация. SendEdit(nMessage, wParam, lParam) nMessage Сообщение, которое посылается текущему окну редактирования. wParam Дополнительная информация. lParam Дополнительная информация. Call("Плагин::Функция"[, дополнительные параметры]) Если вызывается плагин, то код выхода передаётся через специальный параметр &nResult. &nResult должен находится на месте, где синтаксис внешнего вызова требует указатель на число. Пример: /If(`Call("Coder::CodeFold", 1, &nResult)`, `/Call("Coder::CodeFold", 1)`, ``) — Закрыть окно CodeFold, если открыто. Если вызывается скрипт, то необходимо использовать внешние вызовы 2 или 4, а также передавать код выхода из скрипта через AkelPad.ScriptExitCode. Пример: /If(`Call("Scripts::Main", 4, "EvalCmd.js", 'if (AkelPad.GetEditFile(0)) AkelPad.ScriptExitCode(1);')`, ``, `/Quit`) — Выйти, если текущий документ не имеет имени. Возможно вызывать метод Scripts плагина напрямую. Пример: /If(`AkelPad.Constants._X64 == 1`, `/Quit`, ``) — Выйти, если программа 64-разрядная. "Если Истина" Командная строка, если результат выражения — истина (не равен нулю). "Если Ложь" Командная строка, если результат выражения — ложь (равен нулю). Пример: /If(`SendMain(1222 /*AKD_GETMAININFO*/, 5 /*MI_SAVESETTINGS*/, 0) == 2 /*SS_INI*/`, `/OpenFile("%a\AkelPad.ini")`, ``) — метод открывает AkelPad.ini, если настройки сохраняются в ini файл. /Var(Флаги) Флаги использования переменных для методов следующих далее по командной строке. Задается суммой членов: 0 — не разворачивать переменные. 1 — разворачивать системные переменные (например, %windir%). 2 — разворачивать переменные программы %f,%d,%a. Если флаг задан, то символ % указывается как %%. По умолчанию: 1+2=3 Пример: /Var(0) /OpenFile("1%a%2.txt")Переменные в методах Обычное использованиеПакетные файлы (bat,cmd)%f — активный файл %d — директория активного файла %a — директория AkelPad'а %% — символ % %системная переменная%%%f — активный файл %%d — директория активного файла %%a — директория AkelPad'а %%%% — символ % %системная переменная% ^& — символ &Ручные установкиНастройки сохраняются в AkelPad.ini или в реестре (HKEY_CURRENT_USER\Software\Akelsoft\AkelPad). CmdLineBeginЗадает код, который будет добавлен к началу командной строки, перед ее обработкой. Пример: /C+ По умолчанию: "".CmdLineEndЗадает код, который будет добавлен к концу командной строки, перед ее обработкой. Пример: /Call("Scripts::Main", 1, "InsertDate.js", "") /C /B /L По умолчанию: "".ShowModifyОпределяет, где можно будет увидеть, что документ изменен. Задается суммой членов: 1 — Отображение "Изменен" в строке состояния. 2 — Отображение звездочки * в заголовке главного окна (SDI). 4 — Отображение звездочки * в заголовке главного окна и в заголовке окна вкладки (MDI/PMDI). 8 — Отображение звездочки * в имени кнопки вкладки (MDI/PMDI). По умолчанию: 1+8=9, отображать везде: 1+2+4+8=15.StatusPosTypeОпределяет, как будет отражаться статистика в строке статуса. Задается суммой членов: 1 — "Строка:Столбец". По умолчанию: "Строка:Символ". 2 — Перенесенные номера строк. По умолчанию: неперенесенные номера строк. По умолчанию: 0.WordBreakОпределяет, как будет перемещаться каретка по Ctrl+Left/Ctrl+Right. Работает только при отмеченном пункте в настройках "Разделители слов" (WordDelimitersEnable=1). Задается суммой членов: 1 — Движение влево прекращается, когда встречается начало слова. 2 — Движение влево прекращается, когда встречается конец слова. 4 — Движение вправо прекращается, когда встречается начало слова. 8 — Движение вправо прекращается, когда встречается конец слова. 16 — Движение прекращается, когда встречается начало серии пробелов. Не может быть использовано совместно с 64. 32 — Движение прекращается, когда встречается конец серии пробелов. Не может быть использовано совместно с 128. 64 — Движение продолжается, когда встречается начало серии пробелов. Не может быть использовано совместно с 16. 128 — Движение продолжается, когда встречается конец серии пробелов. Не может быть использовано совместно с 32. 256 — Движение прекращается, когда встречается конец строки. По умолчанию: 1+2+4+8+32+64=111 (AkelEdit), 1+8=9 (AkelPad).MouseOptionsОпределяет настройки мыши. Задается суммой членов: 1 — GUI (левый клик в отступ выделяет строку). 2 — GUI (RichEdit выделение мышью). 4 — GUI (перетаскивание мышью). 8 — GUI (правый клик смещает каретку). 16 — Не выделять новую строку при клике в зону левого отступа, а также при тройном клике. 32 — Не менять размер шрифта посредством колесика мыши и клавиши Ctrl. 64 — Выделять мышью всю, разделенную переносами, строку. 128 — Не прокручивать окно после клика средней клавишей мыши. 256 — Инвертировать горизонтальную прокрутку колесиком мыши. 512 — Инвертировать вертикальную прокрутку колесиком мыши. По умолчанию: 1+2+4=7.SingleOpenProgramОпция "Не открывать программу дважды" в режиме MDI/PMDI. Задается суммой членов: 1 — GUI (опция включена). 2 — опция работает только для совпадающего exe файла. Требует запуска от имени администратора (UAC). По умолчанию: 1.TabOptionsMDIОпределяет настройки вкладок в режиме MDI/PMDI. Задается суммой членов: 1 — GUI (скрыть вкладки). 2 — GUI (отобразить вкладки сверху). 4 — GUI (отобразить вкладки снизу). 256 — GUI (стандартный стиль). 512 — GUI (стиль кнопки). 1024 — GUI (стиль плоской кнопки). 65536 — GUI (переключаться между вкладками как Следующая-Предыдущая). 131072 — GUI (переключаться между вкладками как Правая-Левая). 524288 — создавать вкладки сразу после текущей. 1048576 — не создавать вкладки двойным кликом левой кнопки по панели вкладок. 2097152 — не создавать вкладки кликом средней кнопки по панели вкладок. 4194304 — не закрывать вкладки двойным кликом левой кнопки по вкладке. 8388608 — не закрывать вкладки кликом средней кнопки по вкладке. По умолчанию: 2+256+131072=131330.TabNameFindОпределяет шаблон поиска регулярного выражения для имени вкладки в режиме MDI/PMDI. Если шаблон не найден, имя файла отображается без изменений. Используется совместно с TabNameRep. По умолчанию: "".TabNameRepОпределяет шаблон замены регулярного выражения для имени вкладки в режиме MDI/PMDI. Используется совместно с TabNameFind. Пример: TabNameFind=(.{20}).{3,}(?:\.([^.]*))? TabNameRep=\1...\2 По умолчанию: "".PaintOptionsОпределяет некоторые установки по рисованию текста. Задается суммой членов: 1 — Рисование текста по группам символов (по умолчанию посимвольная прорисовка). С этим флагом некоторые программы, использующие графическое распознавание текста, могут начать работать (если не работали), принтер может печатать быстрее, но подсвеченные символы и комбинированные символы юникода могут рисоваться иначе, а также редактирование этих символов может стать некомфортным. 2 — Не рисовать выделение перевода строки как пробела. 4 — Рисовать выделение перевода строки до правой границы. 8 — Скрывать выделение при потере фокуса. 16 — Не рисовать вертикальный маркер после последней строки. 128 — Высота строки как единица для вертикальной прокрутки (по умолчанию пиксель). 256 — Скрывать прокрутку текста у окна редактирования, если она не требуется. 512 — Рисовать тонкую границу у окна редактирования. 1024 — Не рисовать границу у окна редактирования. По умолчанию: 0.FixedCharWidthОпределяет фиксированную ширину символа. Все символы, включая пропорциональные шрифты, будут рисоваться в заданной ширине. Специальные значения: -1 — средняя ширина латинских символов в шрифте. -4 — ширина пробела в шрифте. -6 — максимальная ширина латинских символов в шрифте. 0 — отключить фиксацию ширины. По умолчанию: 0.EditStyleОпределяет некоторые флаги создания окна редактирования. Задается суммой членов: 1 — Буфер отмены использует кучу процесса, вместо кучи окна. Данный флаг необходим для работы сообщений AEM_DETACHUNDO и AEM_ATTACHUNDO, но при закрытии окна освобождение памяти будет происходить медленнее. По умолчанию: 0.RichEditClassОпределяет какое имя класса будет у окна редактирования: 0 — "AkelEdit". 1 — "RichEdit20". По умолчанию: 0.AkelAdminResidentОпределяет будет ли AkelAdmin.exe оставаться в памяти: 0 — AkelAdmin.exe выгружается из памяти. Каждый раз будет запрашиваться пароль на изменение защищенного файла. 1 — AkelAdmin.exe остается в памяти. Пароль будет запрошен только первый раз на изменение защищенного файла. По умолчанию: 1.StatusUserFormatОпределяет формат пользователя для строки состояния: %[ширина] Добавить разделитель в строку состояния. %Ch Шестнадцатеричный код текущего символа в кодировке файла (нижний регистр). %CH Шестнадцатеричный код текущего символа в кодировке файла (верхний регистр). %ch Шестнадцатеричный код текущего символа (нижний регистр). %cH Шестнадцатеричный код текущего символа (верхний регистр). %cd Десятеричный код текущего символа. %cl Буква текущего символа. %or Смещение в символах. Любые переводы строки считаются за один символ (RichEdit). %ob Смещение в символах. Переводы строки: \r\r\n — три символа, \r\n — два символа, \r — один символ, \n — один символ. Используйте только при необходимости, так как на больших файлах может вызывать замедление работы. %al Количество строк в документе. %ar Количество символов в документе (RichEdit). %lb Номер первой строки выделения. %le Номер последней строки выделения. %ls Количество выделенных строк. %f Размер шрифта. %t Размер табуляции. %m Размер вертикального маркера. %cap [текст] Текст отображающийся при включенной клавише CapsLock. %num[текст] Текст отображающийся при включенной клавише NumLock. %se[текст] Текст отображающийся по достижению конца документа при поиске. %r Количество замен после "Заменить все". %dc Количество всех документов (MDI/PMDI). %dm Количество измененных документов (MDI/PMDI). %ds Количество неизмененных документов (MDI/PMDI). %di Индекс активного документа (MDI/PMDI). %% Символ %. Табуляция Первая табуляция выравнивает текст по центру, вторая по правому краю. Пример: "Символ:0x%ch%[88]Шрифт:%f%[62]Таб:%t%[38]Маркер:%m%[64]Док:%dm*/%dc" По умолчанию: "" — формат не определен, дополнительная секция строки состояния не отображается.DateInsertFormatОпределяет формат вставляемой даты. Время: h Часы без ведущего нуля в 12-часовом формате. hh Часы с ведущим нулем в 12-часовом формате. H Часы без ведущего нуля в 24-часовом формате. HH Часы с ведущим нулем в 24-часовом формате. m Минуты без ведущего нуля. mm Минуты с ведущим нулем. s Секунды без ведущего нуля. ss Секунды с ведущим нулем. t Маркер (такой как A или P). tt Многосимвольный маркер (такой как AM или PM). Дата: d День месяца без ведущего нуля. dd День месяца с ведущим нулем. ddd Трехбуквенное сокращение дня недели. dddd Полное название дня недели. M Номер месяца без ведущего нуля. MM Номер месяца с ведущим нулем. MMM Трехбуквенное сокращение названия месяца. MMMM Полное название месяца. y Двухзначное обозначение года без ведущего нуля (последние две цифры года). yy Двухзначное обозначение года с ведущим нулем. yyyy Полный номер года. gg Название периода или эры. Пример: "H:mm:ss dd MMMM yyyy" — "12:50:24 01 сентября 2010" По умолчанию: "" — формат определяется программой.DateLogFormatОпределяет формат даты для файлов содержащих ".LOG" в начале. Работает только при отмеченном пункте в настройках "Вставить дату, если файл содержит .LOG в начале" (DateLog=1). См. DateInsertFormat для описания синтаксиса. По умолчанию: "" — формат определяется программой.AkelUpdaterOptionsОпределяет параметры командной строки для AkelUpdater.exe. По умолчанию: "".UrlCommandОпределяет команду для запуска при клике по гиперссылке. При этом переменная %u обозначает текст гиперссылки. Пример: Exec(`"%ProgramFiles%\Mozilla Firefox\firefox.exe" "%u"`) По умолчанию: "" — гиперссылка открывается операционной системой.
Клавиатурные команды Ctrl+X /Shift+DelвырезатьCtrl+C / Ctrl+InsкопироватьCtrl+V / Shift+InsвставитьCtrl+Shift+V / Ctrl+Shift+Insвставить текст как ANSIAlt+Vвставить текст в вертикальное выделениеCtrl+Aвыделить всёBackspaceудалить слеваDelудалить справаCtrl+ZотменитьCtrl+Shift+ZповторитьHomeперейти на начало строкиEndперейти на конец строкиCtrl+Homeперейти в начало текстаCtrl+Endперейти в конец текстаCtrl+Leftперейти на начало словаCtrl+Rightперейти на конец словаCtrl+Upперейти на начало предыдущей строкиCtrl+Downперейти на начало следующей строкиCtrl+PageUpперейти к первому видимому символуCtrl+PageDownперейти к последнему видимому символуCtrl+Backspaceудалить слово слеваCtrl+Delудалить слово справаCtrl+Nсоздать новый файлCtrl+Shift+Nсоздать новое окноCtrl+Oоткрыть файлF5 /Ctrl+Shift+Oпереоткрыть файлF2 /Ctrl+SсохранитьShift+F2 / Ctrl+Shift+Sсохранить какCtrl+Alt+F2сохранить всеCtrl+Alt+F4закрыть всеCtrl+PпечатьEsc /Alt+F4выходCtrl+FнайтиF3найти далее вниз. Диалог поиска/замены: закрыть диалог и найти далее вниз.Shift+F3найти далее вверх. Диалог поиска/замены: закрыть диалог и найти далее вверх.Ctrl+R /Ctrl+Hнайти и заменитьCtrl+Gперейти к строке (по номеру)Ctrl+Iзапустить "Таблицу символов"Ctrl+Dвставить датуCtrl+Tвключить/выключить режим "Поверх всех окон"Ctrl+Uвключить/выключить режим "Перенос по словам"Alt+Wоткрыть редактируемый файл в кодировке ANSI (Windows)Alt+Dоткрыть редактируемый файл в кодировке OEM (DOS)Alt+Kоткрыть редактируемый файл в кодировке КОИ8-РAlt+Lоткрыть редактируемый файл в кодировке UTF-16LEAlt+Bоткрыть редактируемый файл в кодировке UTF-16BEAlt+Uоткрыть редактируемый файл в кодировке UTF-8Shift+Alt+Wсохранить редактируемый файл в кодировке ANSI (Windows)Shift+Alt+Dсохранить редактируемый файл в кодировке OEM (DOS)Shift+Alt+Kсохранить редактируемый файл в кодировке КОИ8-РShift+Alt+Lсохранить редактируемый файл в кодировке UTF-16LEShift+Alt+Bсохранить редактируемый файл в кодировке UTF-16BEShift+Alt+Uсохранить редактируемый файл в кодировке UTF-8Alt+F5переоткрыть файл с определением кодировкиF12показать контекстное меню для быстрого переоткрытия/сохранения в нужной кодировкеAlt+Rперекодировать текстShift+Backspaceубрать первый символ в начале строкAlt+Backspaceубрать Tab'ы и пробелы в конце строкAlt+PплагиныCtrl+F5выполнить командуCtrl+Lвключить/выключить режим "Сохранять отступы слева"Ctrl+EnterВставить новую строку с сохранением отступов слева, если отключено "Сохранять отступы слева". Вставить новую строку без сохранения отступов слева, если включено "Сохранять отступы слева".F4 /Alt+Enterразвернуть/восстановить окноF8 /Ctrl+Yудалить текущую строкуAlt+\перевести каретку на другой конец выделенияCtrl+Num +увеличить шрифт на 1 ptCtrl+Num -уменьшить шрифт на 1 ptCtrl+Num *восстановить размер шрифтаCtrl+5менять регистр по кругуCtrl+6выделенный текст, как "ВСЕ ПРОПИСНЫЕ"Ctrl+7выделенный текст, как "все строчные"Ctrl+8выделенный текст, как "Как в предложениях."Ctrl+9выделенный текст, как "Начинать С Прописных"Ctrl+0выделенный текст, как "иНВЕРТИРОВАТЬ"F6перейти к следующему диалогуShift+F6перейти к предыдущему диалогуF9перейти к следующей части разделенного окнаShift+F9перейти к предыдущей части разделенного окнаF10диалог выбора окна (MDI/PMDI)Ctrl+Tab /Ctrl+F6следующее окно (MDI/PMDI)Ctrl+Shift+Tab /Ctrl+Shift+F6предыдущее окно (MDI/PMDI)Ctrl+F4 /Ctrl+Wзакрыть окно (MDI/PMDI)Внутренние командыМогут быть использованы в параметрах командной строки, а также в ContextMenu, ToolBar, Hotkeys, Scripts плагинах. 4101Создать новое окно редактирования4102Создать новую копию программы4103Диалог открытия файлов Необязательный параметр: 1 — форсировать использование последней директории.4104Переоткрыть файл4105Сохранить файл4106Диалог сохранения файлов Необязательный параметр: 1 — форсировать использование последней директории.4107Диалог настроек печати4108Диалог печати4109Выход из программы4110Сохранить все документы4111Диалог сохранения всех документов4113Печать без диалога4114Диалог предпросмотра печати4121Определить кодировку текущего документа заново4122Переоткрыть файл как ANSI4123Переоткрыть файл как OEM4124Переоткрыть файл как KOI-R4125Переоткрыть файл как UTF16LE4126Переоткрыть файл как UTF16BE4127Переоткрыть файл как UTF84131Сохранить файл как ANSI4132Сохранить файл как OEM4133Сохранить файл как KOI-R4134Сохранить файл как UTF16LE4135Сохранить файл как UTF16BE4136Сохранить файл как UTF84137Сохранить файл как UTF8 без BOM4140Показать контекстное меню кодировок4151Отменить последнюю операцию (Undo)4152Повторить последнюю операцию (Redo)4153Вырезать4154Скопировать4155Вставить4156Удалить4157Выделить все4158Диалог поиска4159Найти далее вниз4160Найти далее вверх4161Диалог замены4162Диалог перехода к строке4163Запуск charmap.exe4164Вставить табуляцию4165Вставить табуляцию, только если выделено несколько строк4166Удалить табуляцию, если выделено несколько строк, в противном случае вставить табуляцию. Необязательный параметр: 1 — удалять табуляцию при однострочном выделении.4167Удалить табуляцию, только если выделено несколько строк4168Вставить пробел4169Вставить пробел, только если выделено несколько строк4170Удалить пробел, если выделено несколько строк, в противном случае вставить пробел. Необязательный параметр: 1 — удалять пробел при однострочном выделении.4171Удалить пробел, только если выделено несколько строк4172Удалить первый символ4173Удалить первый символ, только если есть выделение4174Удалить табы и пробелы в конце4175Преобразовать в "ВСЕ ПРОПИСНЫЕ". Необязательный параметр: 1 — изменить регистр для всего текста, если нет выделения.4176Преобразовать в "все строчные". Необязательный параметр: 1 — изменить регистр для всего текста, если нет выделения.4177Преобразовать в "Как в предложениях.". Необязательный параметр: 1 — изменить регистр для всего текста, если нет выделения.4178Преобразовать в "Начинать С Прописных". Необязательный параметр: 1 — изменить регистр для всего текста, если нет выделения.4179Преобразовать в "иНВЕРТИРОВАТЬ". Необязательный параметр: 1 — изменить регистр для всего текста, если нет выделения.4180Преобразовать по кругу. Необязательный параметр: 1 — изменить регистр для всего текста, если нет выделения.4182Диалог перекодирования4183Вставить дату4184Формат новой строки Windows4185Формат новой строки Unix4186Формат новой строки Mac4190Режим вставки/замены4191Вставить текст как ANSI4192Вставить из буфера обмена в вертикальное выделение4193Вставить текст из буфера обмена после каретки4194Вставить текст из буфера обмена с учетом регистра выделения4195Удалить все табы и пробелы в выделении4196Вставить новую строку с сохранением отступов слева, если отключено "Сохранять отступы слева". Вставить новую строку без сохранения отступов слева, если включено "Сохранять отступы слева".4197Удалить текущую строку. Необязательный параметр: 1 — удалить всю перенесённую строку.4198Перевести каретку на другой конец выделения4199Перевести каретку на предыдущую позицию4200Перевести каретку на следующую позицию4201Диалог выбора шрифта4202Диалог выбора цветовой темы4204Увеличить шрифт на 1pt4205Уменьшить шрифт на 1pt4206Восстановить размер шрифта4209Перенос по словам (вкл\выкл)4210Поверх всех окон (вкл\выкл)4211Показать строку состояния (вкл\выкл)4212Разделить окно на четыре части4213Разделить окно на две вертикальные части4214Разделить окно на две горизонтальные части4215Разделить окно (вкл\выкл)4216Только чтение (вкл\выкл)4251Выполнить4252Сохранять время файла (вкл\выкл)4253Следить за изменением файла (вкл\выкл)4254Сохранять отступы слева (вкл\выкл)4255Не открывать файл дважды (вкл\выкл)4256Не открывать программу дважды (вкл\выкл)4259Диалог плагинов4260Диалог настроек4261Однооконный (SDI) режим4262Многооконный (MDI) режим4263Псевдо-многооконный (PMDI) режим4301Вкладки сверху4302Вкладки снизу4303Скрыть вкладки4304Стандартные вкладки4305Вкладки как кнопки4306Вкладки как плоские кнопки4307Выстроить горизонтально MDI окна4308Выстроить вертикально MDI окна4309Выстроить каскадом MDI окна4310Переключение вкладок: следующая-предыдущая.4311Переключение вкладок: правая-левая.4316Активировать следующую вкладку4317Активировать предыдущую вкладку4318Закрыть текущую вкладку4319Закрыть все вкладки4320Закрыть все вкладки, кроме активной4321Закрыть все неизмененные вкладки4322Клонировать вкладку4323Копировать путь файла текущей вкладки Необязательный параметр: 0 — копировать полный путь (по умолчанию); 1 — копировать директорию; 2 — копировать имя файла; 3 — копировать имя файла без расширения; 4 — копировать расширение файла. 4324Закрыть файл4325Закрыть файл и выйти из программы (SDI) или закрыть вкладку файла (MDI/PMDI).4327Диалог выбора окна (MDI/PMDI). Тоже что и 10019.4331Восстановить/Развернуть главное окно программы4332Перейти к следующему диалогу4333Перейти к предыдущему диалогу4341Перейти к следующей части разделенного окна4342Перейти к предыдущей части разделенного окна4351Диалог о программе4352Открыть руководство пользователя4353Проверить обновления (AkelUpdater)5001В списке последних файлов удалить несуществующие5001+nИз списка последних файлов, открыть файл n6001Выбрать внутренний язык6001+nИз списка языков, выбрать язык n7001Из списка кодировок, открыть в первой кодировке7001+nИз списка кодировок, открыть в кодировке n8001Из списка кодировок, сохранить в первой кодировке8001+n Из списка кодировок, сохранить в кодировке n10019Диалог выбора окна (MDI/PMDI). Тоже что и 4327.Синтаксис регулярных выраженийРегулярное выражение — это шаблон текста, который состоит из обычных символов (например, букв от а до я) и специальных символов, известных как метасимволы. Шаблон задает правила поиска и может осуществлять манипуляции с подстроками в тексте. Пример шаблонаСоответствие^\s*?$Соответствует пустой строке.\d{2}-\d{5}Соответствует номеру, состоящему из 2 цифр, дефиса и 5 дополнительных цифр.<(\w+)[^>]*>.*?</\1>Соответствует HTML тэгу.Приведенная ниже таблица содержит полный список поддерживаемых метасимволов и их значение: СимволОписание\Отмечает следующий символ как обычный символ (один из "()[]{}^$.?+*\|"), специальный символ или обратную ссылку. Например, 'n' соответствует символу "n". '\n' соответствует символу новой строки. Последовательность '\\' соответствует "\" и '\(' соответствует "(".^Соответствует позиции начала строки.$Соответствует позиции конца строки.*Найти далее предыдущий символ или выражения ноль или более раз. Например, 'zo*' соответствует "z" и "zoo". '*' эквивалентно '{0,}'.+Найти далее предыдущий символ или выражения один или более раз. Например, 'zo+' соответствует "zo" и "zoo", но не "z". '+' эквивалентно '{1,}'.?Найти далее предыдущий символ или выражения ноль или один раз. Например, 'do(es)?' соответствует "do" в "document" или "does" в "does". '?' эквивалентно '{0,1}'.{n}Найти далее предыдущий символ или выражения ровно n раз. Например, 'о{2}' не соответствует "o" в "Bob", но соответствует "oo" в "food".{n,}Найти далее предыдущий символ или выражения не меньше n раз. Например, 'o{2,}' не соответствует "o" в "Bob", но соответствует "ooooo" в "foooood". 'o{1,}' эквивалентно 'o+'. 'o{0,}' эквивалентно 'o*'.{n,m}Найти далее предыдущий символ или выражения не меньше n раз, но не больше m раз. Например, 'o{1,3}' соответствует первым "ooo" в "fooooood". 'o{0,1}' эквивалентно 'o?'. Пробелы между запятой и числами не используются..Соответствует любому одиночному символу.(шаблон)Находит соответствие шаблону и сохраняет его. К сохраненному соответствию можно обратиться через обратные ссылки \0...\9. Чтобы не группировать выражение, а найти скобки "(" или ")", используйте '\(' или '\)'.(?^шаблон)Находит отрицательное соответствие шаблону и сохраняет его. Шаблон должен быть фиксированной длины, но может содержать обратные ссылки.(?:шаблон)Находит соответствие шаблону, но не сохраняет соответствие. Это удобно использовать для объединения частей шаблона со знаком "или" (|). Например, 'industr(?:y|ies)' более экономичное выражение, чем 'industry|industries'.(?=шаблон)Положительный поиск вперед (positive lookahead). Соответствие не сохраняется для последующего использования. Например, 'Windows (?=95|98|NT|2000)' соответствует "Windows" в "Windows 2000", но не соответствует "Windows" в "Windows 3.1".(?!шаблон)Отрицательный поиск вперед (negative lookahead). Соответствие не сохраняется для последующего использования. Например, 'Windows (?!95|98|NT|2000)' соответствует "Windows" в "Windows 3.1", но не соответствует "Windows" в "Windows 2000".(?<=шаблон)Положительный просмотр назад (positive lookbehind). Соответствие не сохраняется для последующего использования. Например, '(?<=abc)z' соответствует "z" только, если ему предшествует "abc". Шаблон должен быть фиксированной длины.(?<!шаблон)Отрицательный просмотр назад (negative lookbehind). Соответствие не сохраняется для последующего использования. Например, '(?<!abc)z' соответствует "z" только, если ему не предшествует "abc". Шаблон должен быть фиксированной длины.(?>шаблон)Атомарная группа. Возвращение назад по строке в данном шаблоне запрещено, если часть шаблона уже найдена. Соответствие не сохраняется для последующего использования. Например, 'a(?>bc|b)c' соответствует "abcc", но не "abc".(?(условие)шаблон-истина|шаблон-ложь) (?(условие)шаблон-истина)В случае успешного сопоставления условия, используется шаблон-истина, в противном случае шаблон-ложь (если он присутствует). Условие может быть шаблоном с положительным/отрицательным просмотром вперед/назад или номером обратной ссылки, которая будет проверяться на успешность совпадения. Например, '(a)?b(?(1)c|d)' соответствует "abc" в "abc" и "bd" в "zbd". Т.к., если "a" найдено, то ищется "c" после "b", если "a" не найдено, то ищется "d" после "b".(?опции)Опции применяются для только текущей группы, если заданы в начале специального шаблона, например, 'a(?i:b)c' применяется для "b" или также для последующих, если заданы отдельно, например, 'a(?i)bc' применяется для "bc". Возможно использовать несколько опций сразу, например, 'a(?im-Us)bc'. (?i) не учитывать регистр. (?m) многострочный поиск (по умолчанию). (?s) точка '.' соответствует любому одиночному символу (по умолчанию). (?U) инвертировать жадность. (?-i) учитывать регистр. (?-m) отключить многострочный поиск. '^' соответствует началу документа, а '$' соответствует концу документа. (?-s) точка '.' соответствует любому одиночному символу, кроме символа новой строки. (?-U) отключить инвертирование жадности. x|yСоответствует x или y. Например, 'z|food' соответствует "z" или "food". '(z|f)ood' соответствует "zood" или "food".[xyz]Набор знаков. Совпадает с любым из указанных символов. Например, '[abc]' соответствует "a" в "plain".[^xyz]Отрицательный набор знаков. Соответствует любому не указанному символу. Например, '[^abc]' соответствует "p" в "plain".[a-z]Диапазон знаков. Соответствует любому знаку в указанном диапазоне. Например, '[a-z]' соответствует любому буквенному символу в нижнем регистре из диапазона от "a" до "z".[^a-z]Отрицательный диапазон символов. Соответствует всем символам, которые отсутствуют в указанном диапазоне. Например, '[^a-z]' соответствует всем символам, которые отсутствуют в диапазоне от "a" до "z".\bСоответствует границе слова, т.е. позиции между словом и разделителем. Например, 'er\b' соответствует "er" in "never", но не соответствует "er" в "verb".\BСоответствует позиции, отличной от границы слова. 'er\B' соответствует "e" в "verb", но не соответствует "er" в "never".\AСоответствует позиции начала документа. Например, '\Aabc' соответствует "abc" в "abc\ndef", но не соответствует "abc" в "def\nabc".\ZСоответствует позиции конца документа. Например, 'abc\Z' соответствует "abc" в "def\nabc", но не соответствует "abc" в "abc\ndef".\aТоже, что и \A, но соответствует позиции начала диапазона поиска.\zТоже, что и \Z, но соответствует позиции конца диапазона поиска.\KВсе предыдущие найденные символы не включаются в конечный результат. Например, 'a+b+\K\c+' соответствует "ccc" в "aaabbbccc".\dСоответствует знаку цифры. Эквивалентно '[0-9]'.\DСоответствует любому знаку, не являющемуся цифрой. Эквивалентно '[^0-9]'.\fСимвол перевода страницы. Эквивалентно '\x0c'.\nЛюбая новая строка. Для поиска Unix новой строки используйте '\x0a'.\rЛюбая новая строка. Для поиска Mac новой строки используйте '\x0d'.\sЛюбой знак пробела: пробел, табуляция, перевод страницы и т.д. Эквивалентно '[ \f\n\r\t\v]'.\SЛюбой символ, не являющийся пробелом. Эквивалентно '[^ \f\n\r\t\v]'.\tСимвол табуляции. Эквивалентно '\x09'.\vСимвол вертикальной табуляции. Эквивалентно '\x0b'.\wСоответствует любому символу, составляющему слово (любому символу, который не является разделителем).\WСоответствует любому символу, не составляющему слово (любому символу, который является разделителем).\xnСоответствует n, где n — шестнадцатеричный код символа, который имеет длину ровно две цифры. Например, '\x41' соответствует "A".\unСоответствует n, где n код символа Юникода, выраженный в виде четырех шестнадцатеричных цифр. Например, '\u00A9' соответствует символу авторского права "©".\x{n}Соответствует n, где n — шестнадцатеричный код символа. Например, '\x{20027}' эквивалентно суррогатной паре '\uD840\uDC27'.\nСоответствует n, где n — это номер обратной ссылки, состоящий из одной цифры. Например, '(.)\1' соответствует двум последовательным одинаковым символам.\nnСоответствует nn, где nn — это номер обратной ссылки, состоящий из двух цифр от 01 до 99. Например, '(.)\01' соответствует двум последовательным одинаковым символам.Замечания: Квантификаторы регулярных выражений (*, +, {n,}) являются по умолчанию жадными. Чтобы сделать их нежадными, используется "?" после квантификатора, например, "\d*?". Чтобы сделать их сверхжадными, используется "+" после квантификатора, например, "\d*+". Использование сверхжадных квантификаторов увеличивает скорость выполнения выражения. Метасимволы \b, \B, \A, \a, \z, \Z, \K не используются в наборах знаков [xyz], т.к. не соотносятся с какими-либо конкретными знаками. Если метасимвол \K исключил символы из результата, кнопка "Заменить" в диалоге замены будет работать как "Найти". Авторы AkelPad: AkelPad 1.x-2.x (2003-2006) — программа написана и разрабатывалась Алексеем Кузнецовым AkelPad 3.x-4.x (2006-настоящее время) — над развитием проекта стал работать Александр Шенгальц (e-mail: shengalts@mail.ru) Домашняя страница AkelPad: http://akelpad.sf.net
Плагины AkelPad ПлагинАвторОписаниеPlugsPackА.А.Шенгальц, В.В.Довгань, Я.В.ПанычСборник всех плагинов (без исходного кода).PlugsPack.zip PlugsPack-x64.zipAkelUpdaterА.А.ШенгальцПроверка обновлений плагинов.AkelUpdater.zipAkelDLLА.А.ШенгальцПростой плагин-пример.AkelDLL.zipClipboardА.А.ШенгальцРабота с буфером обмена: Захват буфера обмена Вставка серийного номера. Автоматическое копирование выделения. Clipboard.zipCoderА.А.ШенгальцДополнительные возможности для программирования: Подсветка синтаксиса. Поддержка сворачиваемых блоков (folding). Авто-дополнение. Дополнительные синтаксические файлы (файлы с расширением .coder) asm.coder Coder.zipContextMenuА.А.ШенгальцНастройка главного меню и контекстного меню для окна редактирования, MDI вкладок, ссылок и последних файлов. Стандартное "Главное меню" с иконками: Eng, RusContextMenu.zipExitА.А.Шенгальц Подтверждение закрытия программы. Посылка командной строки при закрытии программы. Изменение назначения клавиши ESC. Exit.zipExplorerА.А.ШенгальцДобавляет панель проводника (основано на коде Selom'а Ofori).Explorer.zipFontsА.А.ШенгальцДинамическая загрузка шрифтов без установки в систему.Fonts.zipFormatА.А.ШенгальцРазличные операции по преобразованию текста: Сортировка строк текста по возрастанию Сортировка строк текста по убыванию Сортировка строк текста по числовому возрастанию. Сортировка строк текста по числовому убыванию. Получение уникальных строк. Получение дублирующихся строк Удаление дублирующихся строк Инвертирование порядка строк Вставка разрывов строк в местах переноса Шифрование выделенного текста Дешифрование выделенного текста Извлечение ссылок из HTML текста Format.zipFullScreenА.А.ШенгальцПолноэкранный режим.FullScreen.zipHexSelА.А.ШенгальцПреобразование текста в шестнадцатеричный/десятеричный/восьмеричный код и наоборот.HexSel.zipHotkeysА.А.ШенгальцНазначение пользовательских горячих клавиш.Hotkeys.zipLineBoardА.А.Шенгальц Показывает номера строк и столбцов Добавляет поддержку закладок LineBoard.zipLogА.А.ШенгальцПросмотр логов или захват вывода приложения в реальном времени.Log.zipMacrosА.А.ШенгальцЗаписывает клавиатурные действия пользователя и затем воспроизводит их.Macros.zipMinimizeToTrayА.А.ШенгальцСворачивает программу в трей.MinimizeToTray.zipQSearchВ.В.ДовганьПлагин представляет собой панель для "быстрого" поиска текста. Предполагается, что для вызова функции плагина (QSearch::QSearch) будет назначена горячая клавиша (например, F7). Клавиши диалога быстрого поиска: Enter — искать следующий (вниз) Shift+Enter — искать предыдущий (вверх) Ctrl+Enter — искать с начала файла Esc — закрыть диалог QSearch.zipRecentFilesА.А.ШенгальцРабота со списком последних файлов.RecentFiles.zipSaveFileА.А.ШенгальцДополнительные настройки сохранения файлов: Автоматическое сохранение Сохранение Unicode файлов без BOM SaveFile.zipScriptsА.А.ШенгальцScripts плагин основан на технологии Windows Scripting Host (WSH), таким образом Вы можете использовать различные Windows Component Object Model (COM) объекты. Например, Вы можете осуществить поиск по регулярным выражениям используя RegExp объект, работать с файлами используя FileSystemObject объект, создавать ярлыки, работать с реестром Windows используя WshShell объект, или работать с функциями сети используя WshNetwork объект. Также Вы можете создавать и запускать скрипты, которые взаимодействуют с внешними приложениями, поддерживающими Automation (такими как Word и Excel). Код плагина основан на "COM in C" от Jeff Glatt.Scripts.zipScrollА.А.Шенгальц Автоматическая прокрутка текста Горизонтальная/вертикальная синхронизация частей разделенного окна или вкладок Установка непрокручиваемых операций, например, "Выделить всё" Выравнивание каретки Прокрутка колесиком мыши без передачи фокуса Scroll.zipSessionsА.А.Шенгальц Работа с проектами Сохранение и восстановление MDI сессии программы Sessions.zipSmartSelВ.В.Довгань, А.А.Шенгальц При нажатии на клавишу HOME курсор перемещается на первый не пробельный символ Нажатие клавиши End перемещает курсор на последний символ в строке, который не является пробелом или табуляцией Исключает последний символ перевода строки (EOL) из выделенного текста При нажатии на клавишу Backspace, если слева от каретки находятся только пробельные символы, то происходит удаление пробельных символов слева до позиции ближайшего первого непробельного символа сверху SmartSel.zipSoundsА.А.ШенгальцПроигрывание звуков во время набора текстаSounds.zipSpecialCharА.А.ШенгальцОтображение и подсветка: специальных символов (пробел, табуляция, новая строка, конец файла, перенос, вертикальная табуляция, прогон листа, нулевой символ) любых указанных символов отступа текста SpecialChar.zipSpeechЯ.В.ПанычПлагин позволяет выполнить машинное чтение выделенного текстаSpeech.zipSpellCheckЯ.В.ПанычПлагин позволяет выполнить проверку орфографии текущего слова, выделения либо всего документа используя систему ASpell, а также inline подсветку слов с ошибками. Также есть возможность создавать собственные белые списки слов, которые по каким-либо причинам не попали в словариSpellCheck.zipStatsА.А.ШенгальцПоказывает количество символов, слов и строк в текстеStats.zipTemplatesЯ.В.ПанычПлагин позволяет создавать новые файлы по заранее определенному шаблонуTemplates.zipToolBarА.А.ШенгальцДобавляет настраиваемую панель инструментовToolBar.zipXBracketsВ.В.ДовганьПлагин позволяет: автозавершить скобки ([{""}]) добавляет соответствующую правую скобку при печати левой скобки. Плагин использует "умное" автозавершение: для скобок ([{ анализируется следующий символ для кавычек " анализируются следующий и предыдущий символы подсветить активные скобки — подсвечивает скобку под курсором и соответствующую ей парную скобку. XBrackets.zip
Выбираем AkelPad portable x64 ver 4.9.8 Портабль, потому что видно, за что отвечает каждый файл, не нужно отслеживать изменения в реестре, впрочем это дело вкуса Выбираем русский язык для установки программы Жмем «Далее» на ваш выбор ставим «галочку» и запускаем AkelPad. Жмем «Options» → «Plug-ins...» Устанавливаем плагины: Coder::AutoComplite, Coder::CodeFold, Coder::HighLight, HexSel::Main, HotKey::Main, LineBoard::Main, Marcos::Main, Script::Main, ToolBar::Main. Coder::AutoComplite ― возможность, позволяющая ускорить процесс редактирования. Функция производит замену короткой аббревиатуры на блок текста. Например, если Вы набрали "for", во время редактирования C++ файла и нажали горячую клавишу (Ctrl+Space по умолчанию), "for" раскроется в следующую форму: Код (C): for (; ; ) { } Coder::CodeFold ― поддержка сворачиваемых блоков (folding) Coder::HighLight ― подсветка синтаксиса HexSel::Main ― преобразование текста в шестнадцатеричный/десятеричный/восьмеричный код и наоборот. HotKey::Main ― назначение пользовательских горячих клавиш LineBoard::Main ― показывает номера строк и столбцов, добавляет поддержку закладок Marcos::Main ― записывает клавиатурные действия пользователя и затем воспроизводит их Script::Main ― плагин основан на технологии Windows Scripting Host (WSH), можно использовать различные Windows Component Object Model (COM) объекты. Например, можно осуществить поиск по регулярным выражениям, используя RegExp объект, работать с файлами, используя FileSystemObject объект, создавать ярлыки, работать с реестром Windows, используя WshShell объект, или работать с функциями сети, используя WshNetwork объект. Также можно создавать и запускать скрипты, взаимодействующие с внешними приложениями, поддерживающими Automation (Word и Excel). ToolBar::Main ― добавляет настраиваемую панель инструментов. Жмем «ОК» и AkelPad тянет плагины со своего сайта. Выбираем язык локализации AkelPad →«View» → «Language» → «Russian» Получаем сообщение о необходимости перезагрузки, чтобы изменения и плагины вступили в силу Теперь у нас есть подсветка кода, сворачивание кода в плагине Coder, окно плагина Log:Out. Осталось добавить кнопки для компиляции, запуска программы, просмотр exe-файла через hiew32, x64dbg, ResourceHacker, просмотр и компиляция RC-файлов При первом запуске AkelPad можно выбрать поддерживаемый язык программирования, в нашем случае жмем на (Syntax theme) и выбираем «Ассемблер»
Щелкаем правой клавишей мыши по Toolbar'y → откроется окно настроек плагина Toolbar: добавляем вот эти строки: Код (Text): "Компиляция (Compile)" Call("Scripts::Main", 1, "Compiler.js", `-Action="Compile"`) Icon("%a\AkelFiles\Ico\15.ico") "Выполнить программу (Run)" Call("Scripts::Main", 1, "Compiler.js", `-Action="Run"`) Icon("%a\AkelFiles\Ico\46.ico") "Compile resource file" Call("Scripts::Main", 1, "Compiler.js", `-Action="Build"`) Icon("%a\AkelFiles\Ico\50.ico") "Запустить программу hiew32" Call("Scripts::Main", 1, "Compiler.js", `-Action="hiew"`) Icon("%a\AkelFiles\Ico\47.ico") "Запустить программу ResourceHacker" Call("Scripts::Main", 1, "Compiler.js", `-Action="ResHack"`) Icon("%a\AkelFiles\Ico\48.ico") "Запустить программу x64dbg" Call("Scripts::Main", 1, "Compiler.js", `-Action="x64dbg"`) Icon("%a\AkelFiles\Ico\49.ico") "Справка по языку (Help)" Call("Scripts::Main", 1, "Compiler.js", `-Action="Help"`) Icon("%a\AkelFiles\Ico\16.ico") и жмем на «ОК», набор иконок, к которым мы обращаемся в определении кнопок, помещаем в каталог AkelPad→ App→AkelPadx64→AkelFiles→Ico Набор кнопок, которые у нас появятся Компиляция и линковка Запуск программы Компиляция ресурсов Запуск HIEW32 Запуск ResourceHacker Запуск x64dbg Справка по языку Компиляция, линковка и так далее происходит под управлением файла Compiler.js, который находится в AkelPad→ App→ AkelPadx64→ AkelFiles→ Plugs→ Scripts, по умолчанию Compiler.js работает с Lua, C++ и Auto it. Попытка компилировать asm- или rc-файл приведет к сообщению "Extension can't support". Дорабатываю Compiler.js, но так как я с js дела никогда не имел, поэтому тапками не кидайте. Работать ― работает, но если можно улучшить ― напишите, я исправлю Код (Javascript): //// Компиляторы Lua, C++, Auto It //-------------------------------------------------------------- var NOTIFY_SYM = String.fromCharCode(9733) var lpState, hThread, hProcess ; var FLAGS = 4+8+32 ; //-------------------------------------------------------------- var pFile = AkelPad.GetEditFile(0); var pFileDir= pFile.substr(0, pFile.lastIndexOf("\\")); var nLenExt = pFile.length - pFile.lastIndexOf(".") - 1; var pExt = pFile.substr(pFile.length-nLenExt, nLenExt).toLowerCase(); var pFileNoExt = pFile.substr(pFileDir.length, pFile.length-pFileDir.length-nLenExt-1).toLowerCase(); var pAction = AkelPad.GetArgValue("Action", ""); var bSupport = true; // получим временный файл для работы var fso, fhandle, tempFolder, pTempName; fso = new ActiveXObject("Scripting.FileSystemObject"); // try { tempFolder = ( new ActiveXObject("WScript.Shell") ).SpecialFolders("MyDocuments"); } // catch(e) { tempFolder = 'c:\\temp';} tempFolder = fso.GetSpecialFolder(2) pTempName = tempFolder+"\\tmp_file."+pExt; fhandle = fso.CreateTextFile(pTempName, true).close(); // Сохраним выделенный текст в файл var pSel = AkelPad.GetSelText(); AkelPad.SaveFile(0 ,pTempName ,-1 ,-1 ,0x2); AkelPad.ScriptNoMutex(); // начнем обработку внешними программами pFile = '\"'+pFile+'\"' pFileDir =pFileDir var temp = pFileDir.substr(0, pFileDir.lastIndexOf("\\")); temp = temp.substr(0, temp.lastIndexOf("\\")); var pMasm64 = temp.substr(0, temp.lastIndexOf("\\")); var pInclud = "\"" + pMasm64 + "\\include\" "; var pLib = "\"" + pMasm64 + "\\lib\" "; var pRc = pFileDir + pFileNoExt + ".rc"; var pText =""; if (pSel.length > 3 && pAction == "Check") { pFile = pTempName ; pText = "Only selection block!"; } else {pText = pFile;} if (pAction != "Help") AkelPad.Call("Log::Output", 4, NOTIFY_SYM+"Begin. "+pAction+": "+pText+NOTIFY_SYM+"\n",-1,0); if (pExt == "asm") { var pExe = pFileDir + pFileNoExt + ".exe"; var pObj = pFileDir + pFileNoExt + ".obj"; var pRes = pFileDir + pFileNoExt + ".res"; switch (pAction) { case "Run": AkelPad.Exec(pExe); break; case "Compile": AkelPad.Call("Log::Output", 1, pMasm64 + "\\bin\\ml64 /Cp /c /I" + pInclud + pFile, pFileDir); WScript.Sleep(2500); if(fso.FileExists(pRc)) { AkelPad.Call("Log::Output", 1, pMasm64 + "\\bin\\RC /r /i" + pInclud + pRc, pFileDir); WScript.Sleep(500); AkelPad.Call("Log::Output", 1, pMasm64 + "\\bin\\link /LIBPATH:"+ pLib +" /LARGEADDRESSAWARE:NO /BASE:0x400000 /STUB:"+pMasm64+"\\bin\\stubby.exe /ALIGN:16 /SUBSYSTEM:WINDOWS /entry:WinMain /fixed /nocoffgrpinfo " + pObj + " " + pRes, pFileDir); } else { AkelPad.Call("Log::Output", 1, pMasm64 + "\\bin\\link /SUBSYSTEM:WINDOWS /LIBPATH:"+ pLib +"/entry:WinMain " + pObj + " /LARGEADDRESSAWARE:NO /BASE:0x400000", pFileDir); } WScript.Sleep(500); AkelPad.Call("Log::Output", 6); break; case "hiew": AkelPad.Exec(pMasm64 + "\\bin\\hiew32 " + pExe ); break; case "ResHack": AkelPad.Call("Log::Output", 1, pMasm64 + "\\ResourceHacker\\ResHacker " + pExe ); break; case "Help": var WshShell = new ActiveXObject("WScript.Shell"); var oExec = WshShell.Exec("hh.exe " + pMasm64 + "\\help\\asmintro.chm"); break; case "x64dbg": AkelPad.Exec(pMasm64 + "\\x64\\x64dbg " + pExe ); break; default: AkelPad.Call("Log::Output", 4, "There are no such values yet", -1); WScript.Sleep(2500); AkelPad.Call("Log::Output", 6); } } else if (pExt == "rc") { if (pAction == "Build") { AkelPad.Call("Log::Output", 1, pMasm64 + "\\bin\\RC /r /i" + pInclud + pRc, pFileDir); } } else { AkelPad.Call("Log::Output", 4, "Extension can't support.\n"+NOTIFY_SYM+"End"+NOTIFY_SYM+"\n", -1); WScript.Sleep(2500); AkelPad.Call("Log::Output", 6); } //Дождемся выхода из выполнения AkelPad.Call(...). while (GetExecState()) WScript.Sleep(100); //Если есть окно то выводим в него признак завершения работы var lpWnd = GetOutputWindow() if (lpWnd) { AkelPad.SetEditWnd(lpWnd); var Text = AkelPad.GetTextRange(-1,1); var Last2 = Text.substr(Text.length-2,1) AkelPad.Call("Log::Output", 4, NOTIFY_SYM+"End"+NOTIFY_SYM+"\n"); AkelPad.SetEditWnd(0); if (Last2==NOTIFY_SYM) { WScript.Sleep(2500); AkelPad.Call("Log::Output", 6); // закрываем окошко, т.к. ошибок и консольного вывода не было } } ////////////////// from GetStdOut.js ////////////////////////// function GetExecState() { var lpState; var nState=0; if (lpState=AkelPad.MemAlloc(4 /*sizeof(DWORD)*/)) { AkelPad.Call("Log::Output", 3, lpState); nState=AkelPad.MemRead(lpState, 3 /*DT_DWORD*/); AkelPad.MemFree(lpState); } return nState; } function GetOutputWindow() { var lpWnd; var hWnd=0; if (lpWnd=AkelPad.MemAlloc(_X64?8:4 /*sizeof(HWND)*/)) { AkelPad.Call("Log::Output", 2, lpWnd); hWnd=AkelPad.MemRead(lpWnd, 2 /*DT_QWORD*/); AkelPad.MemFree(lpWnd); } return hWnd; } Структура моего masm64 asm-файлы расположены на 3 уровня ниже корня. Переменная pFileDir содержит полный путь к asm-файлу. Удаляем из pFileDir всё что правее третьего слэша и передаем в переменную pMasm64. Перед компиляции asm-файла проверяем нет ли в папке файла с именем asm-файла и rc-расширением. И по разному запускаем link в зависимости от того есть rc-файл или нет.
Кто-нибудь пробовал работать с AkelPad? На какие редакторы,по Вашему мнению, следует обратить внимание? Поделитесь своим опытом
EmEditor. Подсветка синтаксиса на регулярках, то есть буквально любой каприз можно реализовать по подсветке, макросы на жабе и вбс, автокомплит и тупо как текстовый редактор убер аллес.
Не могу найти где управление главным меню, для того чтобы сделать ближе к DOS. Костыли не очень точно: AkelPad.c Код (C): .... while ((bMsgStatus=GetMessageWide(&msg, NULL, 0, 0)) && bMsgStatus != -1) { if (!( msg.wParam == VK_MENU && ( msg.message == WM_SYSKEYDOWN || msg.message == WM_SYSKEYUP))) { // R81... TranslateMessageAll(TMSG_ALL, &msg); if (bMainCheckIdle) { if (GetQueueStatus(QS_ALLINPUT) == 0) { bMainCheckIdle=FALSE; SendMessage(hMainWnd, AKDN_MAIN_ONSTART_IDLE, 0, 0); } } } // R81... .... LRESULT CALLBACK MainProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (uMsg == WM_UNINITMENUPOPUP) { // R81... keybd_event(VK_MENU, 0x45, 0, 0); keybd_event(VK_MENU, 0x45, KEYEVENTF_KEYUP,0); } // R81... .... А без...png вопрос уже похоже не на Wasm. B ME98 год лучше чем в 2020-х зрение портить.
Удалось несколько приблизить к DOS 20. if ((uMsg == WM_UNINITMENUPOPUP) && ((GetAsyncKeyState(VK_ESCAPE) && 0x80000000) != 0)) Теперь бы еще горячие клавиши на пункты основного меню назначить. Хоть цифры и не зависят от языка, но как бы без них сделать?