AkelPad в качестве IDE для masm64

Тема в разделе "IDE. Интегрированные среды разработки", создана пользователем Mikl___, 1 апр 2023.

  1. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.720
    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"`)
    По умолчанию: "" — гиперссылка открывается операционной системой.
     
    Последнее редактирование: 2 апр 2023
    R81... и Marylin нравится это.
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.720

    Клавиатурные команды


    Ctrl+X /Shift+Delвырезать
    Ctrl+C / Ctrl+Insкопировать
    Ctrl+V / Shift+Insвставить
    Ctrl+Shift+V / Ctrl+Shift+Insвставить текст как ANSI
    Alt+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-16LE
    Alt+Bоткрыть редактируемый файл в кодировке UTF-16BE
    Alt+Uоткрыть редактируемый файл в кодировке UTF-8
    Shift+Alt+Wсохранить редактируемый файл в кодировке ANSI (Windows)
    Shift+Alt+Dсохранить редактируемый файл в кодировке OEM (DOS)
    Shift+Alt+Kсохранить редактируемый файл в кодировке КОИ8-Р
    Shift+Alt+Lсохранить редактируемый файл в кодировке UTF-16LE
    Shift+Alt+Bсохранить редактируемый файл в кодировке UTF-16BE
    Shift+Alt+Uсохранить редактируемый файл в кодировке UTF-8
    Alt+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 pt
    Ctrl+Num -уменьшить шрифт на 1 pt
    Ctrl+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Переоткрыть файл как ANSI
    4123Переоткрыть файл как OEM
    4124Переоткрыть файл как KOI-R
    4125Переоткрыть файл как UTF16LE
    4126Переоткрыть файл как UTF16BE
    4127Переоткрыть файл как UTF8
    4131Сохранить файл как ANSI
    4132Сохранить файл как OEM
    4133Сохранить файл как KOI-R
    4134Сохранить файл как UTF16LE
    4135Сохранить файл как UTF16BE
    4136Сохранить файл как UTF8
    4137Сохранить файл как UTF8 без BOM
    4140Показать контекстное меню кодировок
    4151Отменить последнюю операцию (Undo)
    4152Повторить последнюю операцию (Redo)
    4153Вырезать
    4154Скопировать
    4155Вставить
    4156Удалить
    4157Выделить все
    4158Диалог поиска
    4159Найти далее вниз
    4160Найти далее вверх
    4161Диалог замены
    4162Диалог перехода к строке
    4163Запуск charmap.exe
    4164Вставить табуляцию
    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Формат новой строки Windows
    4185Формат новой строки Unix
    4186Формат новой строки Mac
    4190Режим вставки/замены
    4191Вставить текст как ANSI
    4192Вставить из буфера обмена в вертикальное выделение
    4193Вставить текст из буфера обмена после каретки
    4194Вставить текст из буфера обмена с учетом регистра выделения
    4195Удалить все табы и пробелы в выделении
    4196Вставить новую строку с сохранением отступов слева, если отключено "Сохранять отступы слева".
    Вставить новую строку без сохранения отступов слева, если включено "Сохранять отступы слева".
    4197Удалить текущую строку.
    Необязательный параметр: 1 — удалить всю перенесённую строку.
    4198Перевести каретку на другой конец выделения
    4199Перевести каретку на предыдущую позицию
    4200Перевести каретку на следующую позицию
    4201Диалог выбора шрифта
    4202Диалог выбора цветовой темы
    4204Увеличить шрифт на 1pt
    4205Уменьшить шрифт на 1pt
    4206Восстановить размер шрифта
    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Из списка последних файлов, открыть файл n
    6001Выбрать внутренний язык
    6001+nИз списка языков, выбрать язык n
    7001Из списка кодировок, открыть в первой кодировке
    7001+nИз списка кодировок, открыть в кодировке n
    8001Из списка кодировок, сохранить в первой кодировке
    8001+n Из списка кодировок, сохранить в кодировке n
    10019Диалог выбора окна (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
     
    Последнее редактирование: 8 апр 2023
    R81... нравится это.
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.720

    Плагины AkelPad


    ПлагинАвторОписание
    PlugsPackА.А.Шенгальц,
    В.В.Довгань,
    Я.В.Паныч
    Сборник всех плагинов (без исходного кода).PlugsPack.zip
    PlugsPack-x64.zip
    AkelUpdaterА.А.ШенгальцПроверка обновлений плагинов.AkelUpdater.zip
    AkelDLLА.А.ШенгальцПростой плагин-пример.AkelDLL.zip
    ClipboardА.А.ШенгальцРабота с буфером обмена:
    • Захват буфера обмена
    • Вставка серийного номера.
    • Автоматическое копирование выделения.
    Clipboard.zip
    CoderА.А.ШенгальцДополнительные возможности для программирования:
    • Подсветка синтаксиса.
    • Поддержка сворачиваемых блоков (folding).
    • Авто-дополнение.
    • Дополнительные синтаксические файлы (файлы с расширением .coder)
    • asm.coder
    Coder.zip
    ContextMenuА.А.ШенгальцНастройка главного меню и контекстного меню для окна редактирования, MDI вкладок, ссылок и последних файлов.
    Стандартное "Главное меню" с иконками: Eng, Rus
    ContextMenu.zip
    ExitА.А.Шенгальц
    • Подтверждение закрытия программы.
    • Посылка командной строки при закрытии программы.
    • Изменение назначения клавиши ESC.
    Exit.zip
    ExplorerА.А.ШенгальцДобавляет панель проводника (основано на коде Selom'а Ofori).Explorer.zip
    FontsА.А.ШенгальцДинамическая загрузка шрифтов без установки в систему.Fonts.zip
    FormatА.А.ШенгальцРазличные операции по преобразованию текста:
    • Сортировка строк текста по возрастанию
    • Сортировка строк текста по убыванию
    • Сортировка строк текста по числовому возрастанию.
    • Сортировка строк текста по числовому убыванию.
    • Получение уникальных строк.
    • Получение дублирующихся строк
    • Удаление дублирующихся строк
    • Инвертирование порядка строк
    • Вставка разрывов строк в местах переноса
    • Шифрование выделенного текста
    • Дешифрование выделенного текста
    • Извлечение ссылок из HTML текста
    Format.zip
    FullScreenА.А.ШенгальцПолноэкранный режим.FullScreen.zip
    HexSelА.А.ШенгальцПреобразование текста в шестнадцатеричный/десятеричный/восьмеричный код и наоборот.HexSel.zip
    HotkeysА.А.ШенгальцНазначение пользовательских горячих клавиш.Hotkeys.zip
    LineBoardА.А.Шенгальц
    • Показывает номера строк и столбцов
    • Добавляет поддержку закладок
    LineBoard.zip
    LogА.А.ШенгальцПросмотр логов или захват вывода приложения в реальном времени.Log.zip
    MacrosА.А.ШенгальцЗаписывает клавиатурные действия пользователя и затем воспроизводит их.Macros.zip
    MinimizeToTrayА.А.ШенгальцСворачивает программу в трей.MinimizeToTray.zip
    QSearchВ.В.ДовганьПлагин представляет собой панель для "быстрого" поиска текста. Предполагается, что для вызова функции плагина (QSearch::QSearch) будет назначена горячая клавиша (например, F7).
    Клавиши диалога быстрого поиска:
    • Enter — искать следующий (вниз)
    • Shift+Enter — искать предыдущий (вверх)
    • Ctrl+Enter — искать с начала файла
    • Esc — закрыть диалог
    QSearch.zip
    RecentFilesА.А.ШенгальцРабота со списком последних файлов.RecentFiles.zip
    SaveFileА.А.ШенгальцДополнительные настройки сохранения файлов:
    • Автоматическое сохранение
    • Сохранение Unicode файлов без BOM
    SaveFile.zip
    ScriptsА.А.ШенгальцScripts плагин основан на технологии Windows Scripting Host (WSH), таким образом Вы можете использовать различные Windows Component Object Model (COM) объекты. Например, Вы можете осуществить поиск по регулярным выражениям используя RegExp объект, работать с файлами используя FileSystemObject объект, создавать ярлыки, работать с реестром Windows используя WshShell объект, или работать с функциями сети используя WshNetwork объект. Также Вы можете создавать и запускать скрипты, которые взаимодействуют с внешними приложениями, поддерживающими Automation (такими как Word и Excel). Код плагина основан на "COM in C" от Jeff Glatt.Scripts.zip
    ScrollА.А.Шенгальц
    • Автоматическая прокрутка текста
    • Горизонтальная/вертикальная синхронизация частей разделенного окна или вкладок
    • Установка непрокручиваемых операций, например, "Выделить всё"
    • Выравнивание каретки
    • Прокрутка колесиком мыши без передачи фокуса
    Scroll.zip
    SessionsА.А.Шенгальц
    • Работа с проектами
    • Сохранение и восстановление MDI сессии программы
    Sessions.zip
    SmartSelВ.В.Довгань, А.А.Шенгальц
    • При нажатии на клавишу HOME курсор перемещается на первый не пробельный символ
    • Нажатие клавиши End перемещает курсор на последний символ в строке, который не является пробелом или табуляцией
    • Исключает последний символ перевода строки (EOL) из выделенного текста
    • При нажатии на клавишу Backspace, если слева от каретки находятся только пробельные символы, то происходит удаление пробельных символов слева до позиции ближайшего первого непробельного символа сверху
    SmartSel.zip
    SoundsА.А.ШенгальцПроигрывание звуков во время набора текстаSounds.zip
    SpecialCharА.А.ШенгальцОтображение и подсветка:
    • специальных символов (пробел, табуляция, новая строка, конец файла, перенос, вертикальная табуляция, прогон листа, нулевой символ)
    • любых указанных символов
    • отступа текста
    SpecialChar.zip
    SpeechЯ.В.ПанычПлагин позволяет выполнить машинное чтение выделенного текстаSpeech.zip
    SpellCheckЯ.В.ПанычПлагин позволяет выполнить проверку орфографии текущего слова, выделения либо всего документа используя систему ASpell, а также inline подсветку слов с ошибками. Также есть возможность создавать собственные белые списки слов, которые по каким-либо причинам не попали в словариSpellCheck.zip
    StatsА.А.ШенгальцПоказывает количество символов, слов и строк в текстеStats.zip
    TemplatesЯ.В.ПанычПлагин позволяет создавать новые файлы по заранее определенному шаблонуTemplates.zip
    ToolBarА.А.ШенгальцДобавляет настраиваемую панель инструментовToolBar.zip
    XBracketsВ.В.ДовганьПлагин позволяет:
    • автозавершить скобки ([{""}])
      • добавляет соответствующую правую скобку при печати левой скобки. Плагин использует "умное" автозавершение:
      • для скобок ([{ анализируется следующий символ
      • для кавычек " анализируются следующий и предыдущий символы
    • подсветить активные скобки — подсвечивает скобку под курсором и соответствующую ей парную скобку.
    XBrackets.zip
     

    Вложения:

    • asm.zip
      Размер файла:
      4,3 КБ
      Просмотров:
      130
    Последнее редактирование: 5 апр 2023
    mantissa, R81... и Marylin нравится это.
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.720
    Выбираем AkelPad portable x64 ver 4.9.8 Портабль, потому что видно, за что отвечает каждый файл, не нужно отслеживать изменения в реестре, впрочем это дело вкуса :)
    100.jpg
    Выбираем русский язык для установки программы
    101.jpg
    Жмем «Далее»
    102.jpg
    на ваш выбор
    103.jpg
    ставим «галочку» и запускаем AkelPad. Жмем «Options» «Plug-ins...»
    104.jpg
    Устанавливаем плагины: 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):
      1. for (; ; )
      2.     {
      3.     }
    • 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 тянет плагины со своего сайта.
    105.jpg
    Выбираем язык локализации AkelPad «View» «Language» «Russian»
    106.jpg
    Получаем сообщение о необходимости перезагрузки, чтобы изменения и плагины вступили в силу
    107.jpg
    Теперь у нас есть подсветка кода, сворачивание кода в плагине Coder, окно плагина Log:Out. Осталось добавить кнопки для компиляции, запуска программы, просмотр exe-файла через hiew32, x64dbg, ResourceHacker, просмотр и компиляция RC-файлов
    108.jpg
    При первом запуске AkelPad можно выбрать поддерживаемый язык программирования, в нашем случае жмем на 112.jpg (Syntax theme) и выбираем «Ассемблер»
     
  5. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.720
    Щелкаем правой клавишей мыши по Toolbar'y откроется окно настроек плагина Toolbar: 109.jpg
    добавляем вот эти строки:
    Код (Text):
    1.    "Компиляция (Compile)" Call("Scripts::Main", 1, "Compiler.js", `-Action="Compile"`)  Icon("%a\AkelFiles\Ico\15.ico")
    2.     "Выполнить программу (Run)" Call("Scripts::Main", 1, "Compiler.js", `-Action="Run"`)  Icon("%a\AkelFiles\Ico\46.ico")
    3.     "Compile resource file" Call("Scripts::Main", 1, "Compiler.js", `-Action="Build"`)  Icon("%a\AkelFiles\Ico\50.ico")
    4.     "Запустить программу hiew32" Call("Scripts::Main", 1, "Compiler.js", `-Action="hiew"`)  Icon("%a\AkelFiles\Ico\47.ico")
    5.     "Запустить программу ResourceHacker" Call("Scripts::Main", 1, "Compiler.js", `-Action="ResHack"`)  Icon("%a\AkelFiles\Ico\48.ico")
    6.     "Запустить программу x64dbg" Call("Scripts::Main", 1, "Compiler.js", `-Action="x64dbg"`)  Icon("%a\AkelFiles\Ico\49.ico")
    7.     "Справка по языку (Help)" Call("Scripts::Main", 1, "Compiler.js", `-Action="Help"`)  Icon("%a\AkelFiles\Ico\16.ico")
    и жмем на «ОК», набор иконок, к которым мы обращаемся в определении кнопок, помещаем в каталог AkelPadAppAkelPadx64AkelFilesIco
    110.jpg
    Набор кнопок, которые у нас появятся 114.jpg
    1. Компиляция и линковка
    2. Запуск программы
    3. Компиляция ресурсов
    4. Запуск HIEW32
    5. Запуск ResourceHacker
    6. Запуск x64dbg
    7. Справка по языку
    111.jpg
    Компиляция, линковка и так далее происходит под управлением файла Compiler.js, который находится в AkelPadAppAkelPadx64AkelFilesPlugsScripts, по умолчанию Compiler.js работает с Lua, C++ и Auto it. Попытка компилировать asm- или rc-файл приведет к сообщению "Extension can't support". Дорабатываю Compiler.js, но так как я с js дела никогда не имел, поэтому тапками не кидайте. Работать ― работает, но если можно улучшить ― напишите, я исправлю
    Код (Javascript):
    1. //// Компиляторы Lua, C++, Auto It
    2. //--------------------------------------------------------------
    3. var NOTIFY_SYM = String.fromCharCode(9733)
    4. var lpState, hThread, hProcess ;
    5. var FLAGS = 4+8+32 ;
    6. //--------------------------------------------------------------
    7.   var pFile = AkelPad.GetEditFile(0);
    8.   var pFileDir= pFile.substr(0, pFile.lastIndexOf("\\"));
    9.   var nLenExt = pFile.length - pFile.lastIndexOf(".") - 1;
    10.   var pExt = pFile.substr(pFile.length-nLenExt, nLenExt).toLowerCase();
    11.   var pFileNoExt = pFile.substr(pFileDir.length, pFile.length-pFileDir.length-nLenExt-1).toLowerCase();
    12.   var pAction = AkelPad.GetArgValue("Action", "");
    13.   var bSupport = true;
    14. // получим временный файл для работы
    15.    var fso, fhandle, tempFolder, pTempName;
    16.    fso = new ActiveXObject("Scripting.FileSystemObject");
    17. //   try { tempFolder = ( new ActiveXObject("WScript.Shell") ).SpecialFolders("MyDocuments");  }
    18. //   catch(e) { tempFolder = 'c:\\temp';}
    19.    tempFolder = fso.GetSpecialFolder(2)
    20.    pTempName = tempFolder+"\\tmp_file."+pExt;
    21.    fhandle = fso.CreateTextFile(pTempName, true).close();
    22. //  Сохраним выделенный текст в файл
    23.    var pSel = AkelPad.GetSelText();
    24.  
    25.   AkelPad.SaveFile(0 ,pTempName ,-1 ,-1 ,0x2);
    26.   AkelPad.ScriptNoMutex();
    27. // начнем обработку внешними программами
    28. pFile = '\"'+pFile+'\"'
    29. pFileDir =pFileDir
    30. var temp = pFileDir.substr(0, pFileDir.lastIndexOf("\\"));
    31.     temp = temp.substr(0, temp.lastIndexOf("\\"));
    32. var pMasm64 = temp.substr(0, temp.lastIndexOf("\\"));
    33. var pInclud = "\"" + pMasm64 + "\\include\" ";
    34. var pLib = "\"" + pMasm64 + "\\lib\" ";
    35. var pRc = pFileDir + pFileNoExt + ".rc";
    36. var pText ="";
    37. if (pSel.length > 3 && pAction == "Check") {
    38. pFile = pTempName ;
    39. pText = "Only selection block!";
    40. }
    41. else {pText = pFile;}
    42. if (pAction != "Help") AkelPad.Call("Log::Output", 4, NOTIFY_SYM+"Begin. "+pAction+": "+pText+NOTIFY_SYM+"\n",-1,0);
    43.   if (pExt == "asm")
    44.   {
    45.     var pExe = pFileDir + pFileNoExt + ".exe";
    46.     var pObj = pFileDir + pFileNoExt + ".obj";
    47.     var pRes = pFileDir + pFileNoExt + ".res";
    48. switch (pAction) {
    49. case "Run":
    50. AkelPad.Exec(pExe);
    51. break;
    52. case "Compile":
    53. AkelPad.Call("Log::Output", 1, pMasm64 + "\\bin\\ml64 /Cp /c /I" + pInclud + pFile, pFileDir);
    54. WScript.Sleep(2500);
    55.         if(fso.FileExists(pRc)) {
    56. AkelPad.Call("Log::Output", 1, pMasm64 + "\\bin\\RC /r /i" + pInclud + pRc, pFileDir);
    57. WScript.Sleep(500);
    58. 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);
    59. }
    60.         else  {
    61. AkelPad.Call("Log::Output", 1, pMasm64 + "\\bin\\link /SUBSYSTEM:WINDOWS /LIBPATH:"+ pLib +"/entry:WinMain " + pObj + " /LARGEADDRESSAWARE:NO /BASE:0x400000", pFileDir);
    62. }
    63. WScript.Sleep(500);
    64. AkelPad.Call("Log::Output", 6);
    65. break;
    66. case "hiew":
    67. AkelPad.Exec(pMasm64 + "\\bin\\hiew32 " + pExe );
    68. break;
    69. case "ResHack":
    70. AkelPad.Call("Log::Output", 1, pMasm64 + "\\ResourceHacker\\ResHacker " + pExe );
    71. break;
    72. case "Help":
    73.     var WshShell = new ActiveXObject("WScript.Shell");
    74.         var oExec = WshShell.Exec("hh.exe " + pMasm64 + "\\help\\asmintro.chm");
    75. break;
    76. case "x64dbg":
    77. AkelPad.Exec(pMasm64 + "\\x64\\x64dbg " + pExe );
    78. break;
    79. default:
    80. AkelPad.Call("Log::Output", 4, "There are no such values yet", -1);
    81. WScript.Sleep(2500);
    82. AkelPad.Call("Log::Output", 6);
    83.      }
    84.   }
    85.   else if (pExt == "rc")
    86.   {
    87. if (pAction == "Build") {
    88. AkelPad.Call("Log::Output", 1, pMasm64 + "\\bin\\RC /r /i" + pInclud + pRc, pFileDir);
    89.      }
    90.   }
    91.  
    92.   else
    93.   {    AkelPad.Call("Log::Output", 4, "Extension can't support.\n"+NOTIFY_SYM+"End"+NOTIFY_SYM+"\n", -1);
    94. WScript.Sleep(2500);
    95. AkelPad.Call("Log::Output", 6);
    96.   }
    97. //Дождемся выхода из выполнения AkelPad.Call(...).
    98. while (GetExecState()) WScript.Sleep(100);
    99.  
    100. //Если есть окно то выводим в него признак завершения работы
    101. var lpWnd = GetOutputWindow()
    102. if (lpWnd)
    103. {
    104.   AkelPad.SetEditWnd(lpWnd);
    105.   var Text = AkelPad.GetTextRange(-1,1);
    106.   var Last2 = Text.substr(Text.length-2,1)
    107.   AkelPad.Call("Log::Output", 4, NOTIFY_SYM+"End"+NOTIFY_SYM+"\n");
    108.   AkelPad.SetEditWnd(0);
    109.   if (Last2==NOTIFY_SYM) { WScript.Sleep(2500);
    110.     AkelPad.Call("Log::Output", 6);  // закрываем окошко, т.к. ошибок и консольного вывода не было
    111.      }
    112. }
    113. ////////////////// from GetStdOut.js //////////////////////////
    114. function GetExecState()
    115. {
    116.   var lpState;
    117.   var nState=0;
    118.   if (lpState=AkelPad.MemAlloc(4 /*sizeof(DWORD)*/))
    119.   {
    120.     AkelPad.Call("Log::Output", 3, lpState);
    121.     nState=AkelPad.MemRead(lpState, 3 /*DT_DWORD*/);
    122.     AkelPad.MemFree(lpState);
    123.   }
    124.   return nState;
    125. }
    126. function GetOutputWindow()
    127. {
    128.   var lpWnd;
    129.   var hWnd=0;
    130.   if (lpWnd=AkelPad.MemAlloc(_X64?8:4 /*sizeof(HWND)*/))
    131.   {
    132.     AkelPad.Call("Log::Output", 2, lpWnd);
    133.     hWnd=AkelPad.MemRead(lpWnd, 2 /*DT_QWORD*/);
    134.     AkelPad.MemFree(lpWnd);
    135.   }
    136.   return hWnd;
    137. }
    Структура моего masm64
    115.jpg
    asm-файлы расположены на 3 уровня ниже корня. Переменная pFileDir содержит полный путь к asm-файлу. Удаляем из pFileDir всё что правее третьего слэша и передаем в переменную pMasm64. Перед компиляции asm-файла проверяем нет ли в папке файла с именем asm-файла и rc-расширением. И по разному запускаем link в зависимости от того есть rc-файл или нет.
     

    Вложения:

    • Ico.zip
      Размер файла:
      273,1 КБ
      Просмотров:
      95
    • Compiler.zip
      Размер файла:
      2,1 КБ
      Просмотров:
      91
    Marylin, R81... и mantissa нравится это.
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.720
    Кто-нибудь пробовал работать с AkelPad? На какие редакторы,по Вашему мнению, следует обратить внимание? Поделитесь своим опытом :)
     
  7. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.966
    EmEditor. Подсветка синтаксиса на регулярках, то есть буквально любой каприз можно реализовать по подсветке, макросы на жабе и вбс, автокомплит и тупо как текстовый редактор убер аллес.
     
    Mikl___ нравится это.
  8. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.098
    https://codelite.org/
    для написания модулей/консолей трудно подобрать нечто лучше :)
     
  9. R81...

    R81... Active Member

    Публикаций:
    0
    Регистрация:
    1 фев 2020
    Сообщения:
    142
    Не могу найти где управление главным меню, для того чтобы сделать ближе к DOS.
    Костыли не очень точно: AkelPad.c
    Код (C):
    1. ....
    2.   while ((bMsgStatus=GetMessageWide(&msg, NULL, 0, 0)) && bMsgStatus != -1)
    3.   {
    4.             if (!( msg.wParam == VK_MENU && ( msg.message == WM_SYSKEYDOWN ||  msg.message == WM_SYSKEYUP)))
    5.            { // R81...
    6.            TranslateMessageAll(TMSG_ALL, &msg);
    7.  
    8.            if (bMainCheckIdle)
    9.            {
    10.            if (GetQueueStatus(QS_ALLINPUT) == 0)
    11.                     {
    12.                     bMainCheckIdle=FALSE;
    13.                     SendMessage(hMainWnd, AKDN_MAIN_ONSTART_IDLE, 0, 0);
    14.                     }
    15.            }
    16.   }  // R81...
    17. ....
    18. LRESULT CALLBACK MainProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    19. {
    20.            if (uMsg == WM_UNINITMENUPOPUP)
    21.           { // R81...
    22.                     keybd_event(VK_MENU, 0x45, 0,  0);
    23.                     keybd_event(VK_MENU, 0x45, KEYEVENTF_KEYUP,0);
    24.            } // R81...
    25. ....
    А без...png вопрос уже похоже не на Wasm.
    B ME98 год лучше чем в 2020-х зрение портить.
     

    Вложения:

    • AkelPadM.7z
      Размер файла:
      234,1 КБ
      Просмотров:
      91
  10. R81...

    R81... Active Member

    Публикаций:
    0
    Регистрация:
    1 фев 2020
    Сообщения:
    142
    Удалось несколько приблизить к DOS
    20. if ((uMsg == WM_UNINITMENUPOPUP) && ((GetAsyncKeyState(VK_ESCAPE) && 0x80000000) != 0))
    Теперь бы еще горячие клавиши на пункты основного меню назначить.
    Хоть цифры и не зависят от языка, но как бы без них сделать?