Дополнения к FAQ

Russian main discussion
  • Author
  • Message
Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Дополнения к FAQ

Post by VladSh »

Вопрос: где взять файлы настройки подсветок и автодополнений?
Ответ: в дистрибутиве Coder-плагина, здесь, и ещё некоторые файлы можно найти прямо в теме Coder plugin либо создать свои (примеров хватает).

Вопрос: создал свой файл настроек подстветки и дополнений с расширением "coder", положил его в папку "...\AkelPad\AkelFiles\Plugs\Coder\", перегружал AkelPad, но подсветка так и не заработала :(
Ответ: файл должен быть в кодировке Unicode (little endian), т.е. сохранён как 1200 (UTF-16 LE). После этого следует перегрузить AkelPad либо произвести обновления кэша (см. Coder-Rus.txt).
Last edited by VladSh on Wed Sep 26, 2012 12:22 pm, edited 4 times in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

ОБЩАЯ ИНФА

Post by VladSh »

На данный момент существует несколько источников информации по AkelPad'у и всему, что идёт к нему:
- краткое описание самой программы в файле AkelPad-Rus.htm (Справка\Руководство);
- краткое описание плагинов на русском языке;
- более подробная, но не вся, документация на английском;
- более подробная информация по запуску в соответствующих текстовых файлах в дистрибутивах плагинов;
- здесь, в форумах, а также здесь; информация в них разрознена по многим темам и, по моему мнению, НЕ является легкодоступной для понимания НЕпрограммистов, поэтому кое что будет изложено ниже.

С релизом 3.3.4 к AkelPad'у добавилась возможность создавать и настраивать контектсные меню (ContextMenu plugin):
- меню окна редактирования;
- меню вкладок;
- меню ссылок;
- меню последних файлов;
- дополнительные группы меню Главного меню программы.
- возможность заменять Главное меню программы своим собственным.
Данные изменения в отличие от предыдущих (эволюционных) я считаю революционными, т.к. AkelPad теперь, почти полностью, можно настраивать под себя. Использование скриптов и плагинов становится ещё более востребованным.
Last edited by VladSh on Tue Dec 28, 2021 8:21 pm, edited 12 times in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

ПЛАГИНЫ

Post by VladSh »

Вопрос: как вызвать плагин?
Ответ: выделить плагин в окне плагинов (меню Настройки\Плагины...) и нажать кнопку "Вызвать".
Также можно вызывать их программно из контекстных меню или из скриптов; подробнее об этом смотри ниже, в след. постах.

Вопрос: что означает галочка в окне работы с плагинами напротив некоторых плагинов?
Ответ: при взведённой галке напротив плагина этот плагин загружается либо отрабатывается (например RecentFiles plugin, чистящий историю последних файлов) при загрузке AkelPad'а.

Ситуация: я назначил для старого плагина комбинацию клавиш, теперь, когда удалил его, при нажатии данной комбинации клавиш вылетает сообщение: "Heвoзмoжнo oткpыть фaйл ...!"
Вопрос: как с этим бороться? Хотелось бы переопределить эту комбинацию клавиш.
Ответ: Поможет кнопка "Ok" в диалоге плагинов.
Last edited by VladSh on Sun Jan 25, 2015 8:59 pm, edited 6 times in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

СКРИПТЫ

Post by VladSh »

Ответ на вопрос: "Как пользоваться скриптами?".

Информация по теме: "Scripts plugin" и "Сборник скриптов для Scripts plugin'а". Также кое что можно найти в теме "ContextMenu plugin".


Вопрос: как и где можно посмотреть свойства и методы AkelPad?
Ответ:
Основные команды - это получение выделенного текста в окне редактирования AkelPad'а и замена выделенного текста. Это используется для обработки выделенного текста. Пример см. здесь.
Instructor wrote:Полный перечень методов, а также их синтаксис и параметры вызова см. в файле "Scripts.zip\Source\Scripts.idl"
а также в текстовом файле дистрибутива плагина Scripts-Rus.txt.


Работа с переводами строк в тексте:
- для скрипта, который получает текст из выделения методом GetSelText(), преобразование содержимого в массив строк производится так:
var arrContent = strContent.split('\r');
- для скрипта, который получает текст путём чтения другого файла методом ReadFile(), преобразование содержимого в массив строк производится так:
var arrContent = strContent.split('\r\n');
Универсальный способ:
Infocatcher wrote:var arrContent = strContent.split(/\r\n|\n|\r/);
Last edited by VladSh on Tue Dec 28, 2021 8:24 pm, edited 27 times in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

FAQ по плагину ContextMenu

Post by VladSh »

Тема "ContextMenu plugin"

ВЫЗОВ ИСПОЛНЯЕМЫХ ФАЙЛОВ ИЗ КОНТЕКСТНЫХ МЕНЮ и ТУЛБАРА:

1. Можно вызывать внутренние команды AkelPad'а с помощью Command(номер).

О номерах команд см. в предыдущем сообщении.


2. Можно вызывать скрипты с помощью Call() или Exec()
Пример:

Code: Select all

"Наименование позиции меню/подсказки тулбара" Call("Scripts::Main", 1, "Script.js", "%f", 0)
ОБЩАЯ ИНФОРМАЦИЯ ПО ВЫЗОВАМ СКРИПТОВ:
Instructor wrote:
VladSh wrote:Ещё вопрос. Все подменюшки, которые я пишу с вызовами скриптов почему-то идут с галочкой перед именем, почему она появляется, и можно ли её как-то убрать?
Галочка означает, что плагин загружен. Можно пользоваться методом Exec() вместо Call(). Например так:

Code: Select all

"Наименование позиции меню/подсказки тулбара" Exec(`WScript "%a\AkelFiles\Plugs\Scripts\Script.js" "%f"`)
при наличии знака минуса перед наименованием пункта меню, он не будет каким-либо образом менять свой статус. Подробнее см. файл ContextMenu-Rus.txt в дистрибутиве плагина.

- РАБОТА С АРГУМЕНТАМИ (4-й параметр):

Вопрос: для чего нужен параметр "%f" ?
Instructor wrote:
VladSh wrote:Updated: Замечено, что EXPLORER -> Open в любом меню работает корректно, т.е. если жму в окне редактирования/на текущей вкладке, то открывается именно открытый в текущей вкладке файл; если вызываю из меню последних файлов - открывается именно выделенный файл из меню последних файлов.
Именно поэтому в релизе к 3.3.4 значится "Добавлено: сообщение AKD_GETRECENTFILES."

В параметре %f есть необходимость, только, если в скрипте идет обработка аргументов вызова.
%f - аргумент "имя файла". Т.е. он обязателен если мы хотим чтобы скрипт, работающий по имени файла, отрабатывал из любого меню (и из меню редактирования и из меню последних файлов).
В отличие от метода AkelPad.GetEditFile(0), который возвращает имя файла текущей закладки (т.е. текущего редактируемого файла):

Code: Select all

var fileName = AkelPad.GetEditFile(0);
этот код возвращает имя файла вне зависимости от того меню, в котором мы сейчас находимся, т.к. мы передаём его (%f) через аргументы:

Code: Select all

var fileName = WScript.Arguments(0);
- ПЕРЕДАЧА АРГУМЕНТОВ В СКРИПТ (эти способы остались в старых скриптах)

Можно передавать несколько аргументов, это можно сделать просто через пробел, например:

Code: Select all

Call("Scripts::Main", 1, "MyScript.js", "1 2")
или, если в параметре имеются пробелы, -заключая каждый в кавычки:

Code: Select all

Call("Scripts::Main", 1, "MyScript.js", `"%u" "1" "ext param"`)
- ПРОВЕРКА ВНУТРИ СКРИПТА НА НАЛИЧИЕ АРГУМЕНТОВ

Code: Select all

if (WScript.Arguments.length)   //Или на конкретное число аргументов
В Scripts-плагин было добавлено 2 метода GetArgLine и GetArgValue для более удобной работы с аргументами; подробнее см. Scripts-Rus.txt либо примеры скриптов.

3. Можно вызывать плагины.
Instructor wrote:DV
Где можно посмотреть описание всех функций и параметров плагина?
Используюмые методы можно посмотреть в дефолтных меню. Что касаемо метода Call() с дополнительными параметрами, то это уже зависит от вызываемого плагина.
-----------------------------------------------------------------

Вопрос: где взять контекстные меню?
Ответ: пример - здесь. А вообще в готовых сборках AkelPad'а.

N.B.: меню работают со скриптами, находящимися в теме "Сборник скриптов для Scripts plugin'а". Скрипты из этой темы нужно не скачивать, а брать прямо со страницы, т.к. они периодически изменяются авторами и поэтому являются актуальными для указанных контекстных меню.


4. Можно запускать другие файлы.
4.1. hta-приложения.
Формат записи:
Exec('mshta "<путь к hta-файлу>"')
4.2. chm-файлы.
Exec('"hh.exe" "<путь к chm-файлу>"')
Пример: запуск справки

Code: Select all

"AkelPad-Eng.chm" Exec(`"hh.exe" "%a\AkelFiles\AkelPad4-Eng.chm"`)
Файл справки AkelPad4-Eng.chm необходимо предварительно скачать отсюда.

Комментирование кода в контекстных меню осуществляется символом ; либо #

Расположение комбинаций клавиш по аналогии с главным меню программы (справа) можно сделать использовав в качестве разделителя символ табуляции (для того, чтобы набрать символ табуляции в поле редактирования меню, нужно нажать Ctrl+Tab).
Last edited by VladSh on Tue Dec 28, 2021 8:39 pm, edited 25 times in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Некоторые тонкости запуска других скриптов из Script-плагина

Post by VladSh »

Варианты запуска на примерах:

Code: Select all

AkelPad.Call("Scripts::Main", 1, "ShiftRight.js", 0)

Code: Select all

eval(AkelPad.ReadFile(AkelPad.GetAkelDir() + "\\AkelFiles\\Plugs\\Scripts\\ShiftRight.js"));
Разница заключается в том, что в первом варианте скрипт запускается в фоне, т.е. скрипт, из которого производится вызов, продолжает выполняться дальше, т.е. параллельно с вызываемым!

Если этот вызов находится в последней строке скрипта, то метод Call вполне приемлем. Параметры его вызова:
Instructor wrote:Added: possibility to call AkelPad plugin with parameters (like ContextMenu's Call() method). For example:

Code: Select all

AkelPad.Call("Macros::Main", 1, "123", 1, 0);
// 1 -execute, "123" -macro name, 1 -repeat count, 0 -reserved
Если же нужно отработать вызываемый скрипт, а только потом продолжить выполнение текущего скрипта (с задержкой на время выполнения вызываемого скрипта), то нужно использовать 2-й варинт с eval.
Last edited by VladSh on Tue Aug 03, 2010 4:27 pm, edited 1 time in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Подниму-ка я тему вверх

Post by VladSh »

Описание пункта "Выполнить" из меню настроек
По умолчанию (строка "Команда" в настройках пустая), этот пункт недоступен для всех типов файлов.
Для выполнения файлов по их системной ассоциации в поле "Команда" следует прописать:

Code: Select all

rundll32.exe shell32,ShellExec_RunDLL "%f"
а для выполнения в их рабочем каталоге в поле "Рабочий каталог" прописать:

Code: Select all

%d
Last edited by VladSh on Thu Mar 25, 2010 9:37 am, edited 1 time in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Ещё раз подниму тему вверх :-)

Post by VladSh »

1. Размер Tab при отжатой галке "Пробелы" теперь реально равен количеству пробелов, указанных в поле размера!

2. Появилась возможность настраивать собственные префиксы для гиперссылок (по используемым протоколам); например:

Code: Select all

http: https: www. ftp: file: mailto: notes: \\ 
3. Синтаксис плагинов ContextMenu, Hotkeys и ToolBar, приведен к одному (за редкими исключениями), что очень удобно: разобравшись в одном - легко настраиваешь другие. В последнем есть ещё команда Icon для отображения указанной иконки, которую можно указать из *.dll, *.exe (по номеру расположения в файле) либо напрямую из файла *.ico, находящегося на диске.
Подробное описание см. в файлах ContextMenu-Rus.txt, Hotkeys-Rus.txt и ToolBar-Rus.txt в дистрибутивах соответствующих плагинов.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Ещё кое что по написанию скриптов

Post by VladSh »

Из скрипта по номеру можно вызывать внутренние команды AkelPad'а, по аналогии с Command(), но для более сложных случаев - команда SendMessage

Примеры вызовов см. "//Send message" в файлах Test.js, Test.vbs (в папке "...\AkelPad\AkelFiles\Plugs\Scripts\" Scripts-plugin'а), где 3-й параметр - как раз номер команды (номера см. в AkelDLL.h под заголовком "//AkelPad menu messages:").

Перечень номеров команд см. в "AkelPad 4 - руководство пользователя" (файл справки AkelHelp-Rus.htm).


1. Несколько действий вмещаем в одно действие отмены.
Иногда случается необходимость несколько действий вместить в одно действие отмены..
Лучше всего пересмотреть логику скрипта и переписать алгоритм так, чтобы в результате работы скрипта было одно действие установки выделения (метод SetSel) и записи (метод ReplaceSel). Если же по каким-то причинам это сделать не удаётся, то можно обойти это другим способом:

Code: Select all

var hEditWnd = AkelPad.GetEditWnd();

AkelPad.SendMessage(hEditWnd, 3081 /*AEM_BEGINUNDOACTION*/, 0, 0);

//AkelPad.SetSel(...); 
AkelPad.ReplaceSel(pContent1);
//AkelPad.SetSel(...); 
AkelPad.ReplaceSel(pContent2);
//...

AkelPad.SendMessage(hEditWnd, 3082 /*AEM_ENDUNDOACTION*/, 0, 0)
2. Убираем мигание выделения.
Иногда при выделении всего текста (SetSel(0, -1)) и вставке результата (ReplaceSel) происходит неприятное мигание выделения. Убрать его можно разместив в своём скрипте функцию

Code: Select all

function setRedraw(hWnd, bRedraw) { 
   var oSys = AkelPad.SystemFunction(); 
   AkelPad.SendMessage(hWnd, 11 /*WM_SETREDRAW*/, bRedraw, 0); 
   bRedraw && oSys.Call("user32::InvalidateRect", hWnd, 0, true); 
}
тогда скрипт будет выглядеть так:

Code: Select all

//код

setRedraw(hEditWnd, false); 

AkelPad.SetSel(0, -1);
AkelPad.ReplaceSel(pContent);

setRedraw(hEditWnd, true);

//код
на время отладки скрипта вызовы функции setRedraw лучше закоментировать, чтобы при ошибке в скрипте не отключалась прорисовка текущего окна редактирования. Если такое всё-таки произошло, то проще всего это полечить перезагрузкой AkelPad'а.


3. Получение текста back-end-методом GetTextRange.
В некоторых случаях
- когда не требуется обработки всего текста текущего файла;
- когда не нужно выделять весь файл, а нужно производить поиск какого-либо текста вверх/вниз от текущей позиции курсора
лучше не пользоваться SetSel(0, -1), а заменить её на получение/анализ/изменение текста в бэкграунде, т.е. GetTextRange(0, -1). Таким образом в вышеуказанных случаях можно избежать использования setRedraw.
Last edited by VladSh on Tue Dec 28, 2021 8:47 pm, edited 4 times in total.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

SendMessage применительно к AkelPad'у

Post by VladSh »

Микс из сообщений Instrictor'а и FeyFre по 2-му параметру SendMessage wrote:WM_* системные сообщения. Могут посылаться любому окну, зависит от конкретного сообщения. См. MSDN.

AKD_* сообщения AkelPad'a. Посылаются главному окну. См. AkelDLL.h.
Все AKD_* объявлены как WM_USER + ###:

Code: Select all

#define AKD_FRAMEFIND              (WM_USER + 264)
#define AKD_FRAMEFINDA             (WM_USER + 265)
#define AKD_FRAMEFINDW             (WM_USER + 266)
WM_USER объявлен в PlatformSDK (Windows SDK) в файле WinUser.h как 0x0400

EM_* сообщения RichEdit'a. Посылаются окну редактирования. См. MSDN.
AEM_* сообщения AkelEdit'а. Посылаются окну редактирования. См. AkelEdit.h.

Скачайте со страницы плагинов плагин-шаблон AkelDLL (а ещё лучше исходники самого редактора). Там Вы найдёте файл AkelDLL.h. В нём описаны все сообщения которые можно послать редактору (AkelPad.GetMainWnd()), что они требуют, что возвращают, что делают и есть примеры. 99% тех сообщений можно посылать из Scripts.
Также в файле AkelEdit.h (есть только в исходнике редактора, в плагине-шаблоне нету) описаны все сообщения, которые можно посылать окну редактирования (AkelPad.GetEditWnd()) в 4 версии (в 3-ей справка по RichEdit есть у Microsoft), примеры также прилагаются.
FeyFre wrote:Изменение размеров Tab'а не сохраняя настройки:
Сообщение AKD_FRAMEFIND возвращает указатель на внутреннюю структуру Акеле FRAMEDATA (берем там в том же AkelDll.h) - структура которая содержит всю индивидуальную информацию вкладки (каждой вкладке своя, в SDI - в единичном экземпляре).

Нашел путь прямее (не сохраняя настройки программы!), тут мы напрямую у контролла спрашиваем размер табов, и устанавливаем его, без участия FRAMEDATA. Соотв. оно в настройки не попадет.
Для изменения установок вкладки добавлен специальный метод SetFrameInfo, см. скрипт InstructorShiftTabSize.js.

Instructor по 3-му параметру SendMessage wrote:FIS_ - используются для установки параметров текущей вкладки (AKD_SETFRAMEINFO/SetFrameInfo).
FI_ - используются для получения параметров текущей вкладки (AKD_GETFRAMEINFO).
Вопрос: как проверить, установлена ли галка "Пробелы" в настройках в "Размере табуляции"?

Code: Select all

var bTabStopAsSpaces = AkelPad.SendMessage(AkelPad.GetMainWnd(), 1223 /*AKD_GETFRAMEINFO*/, 52 /*FI_TABSTOPASSPACES*/, 0);
Вопрос: как получить число открытых вкладок, без перебора всех документов?

Code: Select all

var nCountAll = AkelPad.SendMessage(AkelPad.GetMainWnd(), 1291 /*AKD_FRAMESTATS*/, 0 /*FWS_COUNTALL*/, 0);
Вопрос: как читать настройки проги, используя AKD_GETMAININFO?
FeyFre wrote:АkelРad не выдаёт нагора указатели на память которую он использует. В целях безопасности (что-бы никто туда не нагадил).
В качестве lParam (4 аргумент) нужно дать адрес памяти, куда записать значение, а возвращает оно количество записаных символов.
Если вызвали с параметром = 0, то оно скажет сколько нужно _TCHAR-ов памяти (включая завершающий ноль).
Если вызвали с адресом буфера - запишет туда, и вернет количество _TCHAR-ов, но уже без нуля.
Вопрос: как это определить номер или индекс текущей вкладки?

Code: Select all

var hWndMain = AkelPad.GetMainWnd();
var lpFrame = AkelPad.SendMessage(hWndMain, 1288 /*AKD_FRAMEFIND*/, 1 /*FWF_CURRENT*/, 0); 
var nFrameIndex = AkelPad.SendMessage(hWndMain, 1294 /*AKD_FRAMEINDEX*/, 0, lpFrame);
Для того, чтобы получать lpFrame для нужной нам вкладки по номеру, то 1 /*FWF_CURRENT*/ надо заменить на 8 /*FWF_BYTABINDEX*/ и в последнем параметре указывать индекс вкладки (начинается с нуля), - см. функцию getTabFile в FileTabs.js. Там же см. функцию получения имени файла по индексу вкладки.
Last edited by VladSh on Sun Jan 25, 2015 8:55 pm, edited 1 time in total.

Offline
Posts: 46
Joined: Fri Mar 22, 2013 5:05 am
Location: Белово, Кемеровская область, Россия

Post by Egorkaru »

Вопрос:
Куда делось меню Синтаксис, которое присутствует в Notepad++?

Ответ:
Можно его воссоздать. Обязательным условием этого решения является наличие ContextMenu (272 Кб) и Coder (573 Кб) плагинов.
1. Вызовите ContextMenu::Main.
1.1. Откройте диалог Настройки -> Плагины... или нажмите сочетание клавиш Alt+P.
1.2. Выделите ContextMenu::Main из списка и нажмите Вызвать.
2. В выпадающем списке выберите вместо Меню ContextMenu::Show - Главное меню.
3. Поставьте галочку Включено, если её нет.
4. Измените меню:

Code: Select all

"Синтаксис" Index(5)
{
    "1с" Call("Coder::Settings", 1, "1s")
    "Assembler" Call("Coder::Settings", 1, "asm")
    "AutoIt" Call("Coder::Settings", 1, "au3")
    "Bat" Call("Coder::Settings", 1, "bat")
    "C++" Call("Coder::Settings", 1, "cpp")
    "Sharp" Call("Coder::Settings", 1, "cs")
    "CSS" Call("Coder::Settings", 1, "css")
    "HTML" Call("Coder::Settings", 1, "html")
    "Ini" Call("Coder::Settings", 1, "ini")
    "Inno" Call("Coder::Settings", 1, "iss")
    "JScript" Call("Coder::Settings", 1, "js")
    "Lua" Call("Coder::Settings", 1, "lua")
    "NSIS" Call("Coder::Settings", 1, "nsi")
    "Pascal" Call("Coder::Settings", 1, "dpr")
    "Perl" Call("Coder::Settings", 1, "pl")
    "PHP" Call("Coder::Settings", 1, "php")
    "Python" Call("Coder::Settings", 1, "py")
    "Resource" Call("Coder::Settings", 1, "rc")
    "SQL" Call("Coder::Settings", 1, "sql")
    "VBScript" Call("Coder::Settings", 1, "vbs")
    "XML" Call("Coder::Settings", 1, "xml")
    SEPARATOR1
    "Без темы" Call("Coder::Settings", 1, "?")
}
5. Нажмите ОК.
Last edited by Egorkaru on Thu Aug 07, 2014 3:07 am, edited 9 times in total.

Offline
Posts: 46
Joined: Fri Mar 22, 2013 5:05 am
Location: Белово, Кемеровская область, Россия

Post by Egorkaru »

Вопрос:
Как пользоваться скриптами?

Ответ:
1. Установите Scripts плагин.
1.1. Скачайте архив Scripts.zip (311 Кб) и распакуйте его в любую папку.
1.2. Если у Вас 32-битная версия AkelPad'а, скопируйте содержимое папки Plugs в папку {AkelPadDir}\AkelFiles\Plugs.
1.3. Если у Вас 64-битная версия AkelPad'а, скопируйте содержимое папки Plugs64 в папку {AkelPadDir}\AkelFiles\Plugs.
1.4. Скопируйте содержимое папки Docs в папку {AkelPadDir}\AkelFiles\Docs.
1.5. При необходимости скопируйте содержимое папки Source в папку {AkelPadDir}\AkelFiles\Source.
2. Откройте диалог Настройки -> Плагины... или нажмите сочетание клавиш Alt+P.
3. Выделите Scripts::Main из списка и нажмите Вызвать.
4. В появившемся диалоге Scripts плагина найдите, например, скрипт SearchReplace.js.
5. При необходимости назначьте горячее сочетание клавиш для скрипта и нажмите Запустить.
6. Чтобы использовать дополнительные скрипты, их необходимо скопировать в папку {AkelPadDir}\AkelFiles\Plugs\Scripts. После этого дополнительные скрипты появятся в диалоге Scripts плагина.
Дополнительные скрипты можно взять в дистрибутиве Scripts плагина, в теме "Scripts collection" или здесь.
Last edited by Egorkaru on Sat Jan 11, 2014 5:41 am, edited 5 times in total.

Offline
Posts: 46
Joined: Fri Mar 22, 2013 5:05 am
Location: Белово, Кемеровская область, Россия

Post by Egorkaru »

Вопрос:
Создал свой файл с расширением *.coder, скопировал его в папку {AkelPadDir}\AkelFiles\Plugs\Coder, перезапустил AkelPad, но ни подсветка синтаксиса, ни фолдинг, ни автодополнение так и не заработали. Что делать?

Ответ:
Файл должен быть в кодировке Unicode (little endian), т.е. сохранён как 1200 (UTF-16 LE). После этого следует перезапустить AkelPad, либо произвести обновления кэша (см. Coder-{Lang}.txt, где {Lang} - это первые три латинские буквы Вашего родного языка).

Offline
Posts: 46
Joined: Fri Mar 22, 2013 5:05 am
Location: Белово, Кемеровская область, Россия

Post by Egorkaru »

Вопрос:
Где взять файлы с расширением *.coder?

Ответ:
В дистрибутиве Coder плагина, здесь, и ещё некоторые файлы можно найти прямо в теме Coder plugin либо создать свои (примеров хватает).

Offline
Posts: 46
Joined: Fri Mar 22, 2013 5:05 am
Location: Белово, Кемеровская область, Россия

Post by Egorkaru »

Вопрос:
Как я могу изменить сочетания клавиш в программе, по Ctrl+F я хочу открывать диалог Заменить вместо Найти?

Ответ:
Вариант 1:
1. С помощью Hotkeys плагина (186 Кб) добавьте:
Имя: Заменить
Команда: Command(4161)
Горячая клавиша: Ctrl+F
2. Если Вы хотите запускать диалог Найти через сочетание клавиш Ctrl+Shift+F, то добавьте:
Имя: Найти
Команда: Command(4158)
Горячая клавиша: Ctrl+Shift+F
3. Если Вы хотите заблокировать использование сочетания Ctrl+R, то добавьте:
Имя: Блокировка
Команда: Command(0)
Горячая клавиша: Ctrl+R

Вариант 2:
Возьмите Resource Hacker (532 Кб). Откройте в нём файл программы AkelPad.exe или языковой модуль, например {AkelPadDir}\AkelFiles\Langs\Russian.dll. Слева появится дерево ресурсов. Раскройте Accelerators\1302\1033, там найдите

Code: Select all

VK_R, 4161, NOINVERT, CONTROL, VIRTKEY
Из этой строчки Вам нужны только три параметра:
1. VK_R - это клавиша R;
2. CONTROL - это дополнительная клавиша Ctrl;
3. 4161 - это код отправляемый программе при нажатии на Ctrl+R, в данном случае этот код отвечает за открытие диалогового окна Заменить.
Измените VK_R на VK_F (VK_F - это клавиша F). Результат:

Code: Select all

VK_F, 4161, NOINVERT, CONTROL, VIRTKEY
Теперь найдите строку

Code: Select all

VK_F, 4158, NOINVERT, CONTROL, VIRTKEY
она отвечает за открытие диалогового окна Найти. Т.к. теперь имеются одинаковые сочетания клавиш Ctrl+F, необходимо либо удалить эту строку с кодом 4158, либо назначить другие горячие клавиши. Назначьте диалогу Найти сочетание клавиш Ctrl+Shift+F, измените строку

Code: Select all

VK_F, 4158, NOINVERT, CONTROL, VIRTKEY
на

Code: Select all

VK_F, 4158, NOINVERT, CONTROL, SHIFT, VIRTKEY
После всех манипуляций нажмите Compile Script и File -> Save. Теперь диалог Заменить открывается по Ctrl+F, а диалог Найти по Ctrl+Shift+F.
Last edited by Egorkaru on Thu Aug 07, 2014 3:07 am, edited 2 times in total.
Post Reply