*****************************************************************
***                Hotkeys AkelPad plugin v6.6                ***
*****************************************************************

2008-2024 Шенгальц Александр aka Instructor (Shengalts@mail.ru)


*** Описание ***

Назначение пользовательских горячих клавиш.


*** Функции ***

Hotkeys::Main
Главная функция плагина.


*** Синтаксис ***

Переменные:
  %f активный файл
  %d директория активного файла
  %a директория AkelPad'а
  %% символ %
  %системная переменная%

Методы:
  [Command() | Call() | +Call() | Exec() | OpenFile() | SaveFile() | Font() | Recode() | Insert()]
    Command(номер)
      Command(4162)
        метод вызывает внутреннюю команду под номером 4162. В данном случае этот код
        отвечает за открытие диалогового окна "Перейти к строке...".
        Для полного перечня команд: см. AkelHelp-Rus.htm или AkelDLL.h в исходных кодах плагина.
      Command(0)
        метод блокирует горячую клавишу.
      Command(-1)
        метод вызывает стандартную обработку для горячей клавиши, игнорируя таблицу акселераторов.
    Call("Плагин::Функция"[, дополнительные параметры])
      Call("Scripts::Main")
        метод вызывает плагин Scripts и функцию Main.
    +Call("Плагин::Функция"[, дополнительные параметры])
      +Call("LineBoard::Main")
        метод вызывает плагин LineBoard и функцию Main. Плагин также будет работать после
        перезагрузки программы.
    Exec("командная строка"[, "рабочая директория"][, Ожидать][, СтильОкна])
      "командная строка"
        Командная строка.
      "рабочая директория"
        Рабочая директория. По умолчанию "".
      Ожидать
        Ожидать завершения программы. 1 - ожидать, 0 - не ожидать (по умолчанию).
      СтильОкна (один из следующих):
        0 скрытое окно.
        1 окно как есть (по умолчанию).
        2 свернутое окно.
        3 развернутое окно.
        6 свернутое, не активное окно.
        9 не развернутое окно.
        Замечание: программы могут игнорировать данный параметр.
      Exec("notepad.exe")
        метод вызывает блокнот.
      Exec(`notepad.exe`)
        метод вызывает блокнот.
      Exec('notepad.exe')
        метод вызывает блокнот.
      Exec('%windir%\notepad.exe')
        метод вызывает блокнот.
      Exec(`rundll32.exe shell32,ShellExec_RunDLL "%f"`, "%d")
        метод передает активный файл для открытия по ассоциации Windows.
    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.
    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".

Примеры:
  "Перекодировать выделение" Command(4182)
  "" Command(4182)
  "Сортировать строки" Call("Format::LineSortStrAsc")
  -"Проверить орфографию" Call("Scripts::Main", 1, "SpellCheck.js", "")
  "Подсветка синтаксиса" +Call("Coder::Highlight")
  "Редактор реестра" Exec("regedit.exe")


*** Внешний вызов ***

Call("Hotkeys::Main", 1, HOTKEY, *BOOL, *NAME, NAMELENGTH)
  Параметры:
    1
      Проверить существование горячей клавиши в плагине. Использовать с помощью Scripts плагина.
    HOTKEY
      Код горячей клавиши.
    *BOOL
      Указатель на переменную BOOL. Может быть NULL.
    *NAME
      Указатель на память, которая получает имя горячей клавиши. Может быть NULL.
    NAMELENGTH
      Максимальное количество символов, которое может быть скопировано в NAME.
  Пример:
    WScript.Echo(GetHotkeyName(118));

    function GetHotkeyName(nHotkey)
    {
      var pHotkeyName="";
      var lpHotkeyName;

      if (lpHotkeyName=AkelPad.MemAlloc(256 * 2 /*sizeof(wchar_t)*/))
      {
        AkelPad.CallW("Hotkeys::Main", 1, nHotkey, 0, lpHotkeyName, 256);
        pHotkeyName=AkelPad.MemRead(lpHotkeyName, 1 /*DT_UNICODE*/);
        AkelPad.MemFree(lpHotkeyName);
      }
      return pHotkeyName;
    }

Call("Hotkeys::Main", 10)
  Параметры:
    10
      Запуск/остановка плагина без диалога.
