Дополнения к FAQ
- Author
- Message
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Дополнения к FAQ
Вопрос: где взять файлы настройки подсветок и автодополнений?
Ответ: в дистрибутиве Coder-плагина, здесь, и ещё некоторые файлы можно найти прямо в теме Coder plugin либо создать свои (примеров хватает).
Вопрос: создал свой файл настроек подстветки и дополнений с расширением "coder", положил его в папку "...\AkelPad\AkelFiles\Plugs\Coder\", перегружал AkelPad, но подсветка так и не заработала
Ответ: файл должен быть в кодировке Unicode (little endian), т.е. сохранён как 1200 (UTF-16 LE). После этого следует перегрузить AkelPad либо произвести обновления кэша (см. Coder-Rus.txt).
Ответ: в дистрибутиве 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:
ОБЩАЯ ИНФА
На данный момент существует несколько источников информации по AkelPad'у и всему, что идёт к нему:
- краткое описание самой программы в файле AkelPad-Rus.htm (Справка\Руководство);
- краткое описание плагинов на русском языке;
- более подробная, но не вся, документация на английском;
- более подробная информация по запуску в соответствующих текстовых файлах в дистрибутивах плагинов;
- здесь, в форумах, а также здесь; информация в них разрознена по многим темам и, по моему мнению, НЕ является легкодоступной для понимания НЕпрограммистов, поэтому кое что будет изложено ниже.
С релизом 3.3.4 к AkelPad'у добавилась возможность создавать и настраивать контектсные меню (ContextMenu plugin):
- меню окна редактирования;
- меню вкладок;
- меню ссылок;
- меню последних файлов;
- дополнительные группы меню Главного меню программы.
- возможность заменять Главное меню программы своим собственным.
Данные изменения в отличие от предыдущих (эволюционных) я считаю революционными, т.к. 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:
ПЛАГИНЫ
Вопрос: как вызвать плагин?
Ответ: выделить плагин в окне плагинов (меню Настройки\Плагины...) и нажать кнопку "Вызвать".
Также можно вызывать их программно из контекстных меню или из скриптов; подробнее об этом смотри ниже, в след. постах.
Вопрос: что означает галочка в окне работы с плагинами напротив некоторых плагинов?
Ответ: при взведённой галке напротив плагина этот плагин загружается либо отрабатывается (например RecentFiles plugin, чистящий историю последних файлов) при загрузке AkelPad'а.
Ситуация: я назначил для старого плагина комбинацию клавиш, теперь, когда удалил его, при нажатии данной комбинации клавиш вылетает сообщение: "Heвoзмoжнo oткpыть фaйл ...!"
Вопрос: как с этим бороться? Хотелось бы переопределить эту комбинацию клавиш.
Ответ: Поможет кнопка "Ok" в диалоге плагинов.
Ответ: выделить плагин в окне плагинов (меню Настройки\Плагины...) и нажать кнопку "Вызвать".
Также можно вызывать их программно из контекстных меню или из скриптов; подробнее об этом смотри ниже, в след. постах.
Вопрос: что означает галочка в окне работы с плагинами напротив некоторых плагинов?
Ответ: при взведённой галке напротив плагина этот плагин загружается либо отрабатывается (например 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:
СКРИПТЫ
Ответ на вопрос: "Как пользоваться скриптами?".
Информация по теме: "Scripts plugin" и "Сборник скриптов для Scripts plugin'а". Также кое что можно найти в теме "ContextMenu plugin".
Вопрос: как и где можно посмотреть свойства и методы AkelPad?
Ответ:
Основные команды - это получение выделенного текста в окне редактирования AkelPad'а и замена выделенного текста. Это используется для обработки выделенного текста. Пример см. здесь.
Работа с переводами строк в тексте:
Информация по теме: "Scripts plugin" и "Сборник скриптов для Scripts plugin'а". Также кое что можно найти в теме "ContextMenu plugin".
Вопрос: как и где можно посмотреть свойства и методы AkelPad?
Ответ:
Основные команды - это получение выделенного текста в окне редактирования AkelPad'а и замена выделенного текста. Это используется для обработки выделенного текста. Пример см. здесь.
а также в текстовом файле дистрибутива плагина Scripts-Rus.txt.Instructor wrote:Полный перечень методов, а также их синтаксис и параметры вызова см. в файле "Scripts.zip\Source\Scripts.idl"
Работа с переводами строк в тексте:
Универсальный способ:- для скрипта, который получает текст из выделения методом GetSelText(), преобразование содержимого в массив строк производится так:- для скрипта, который получает текст путём чтения другого файла методом ReadFile(), преобразование содержимого в массив строк производится так:var arrContent = strContent.split('\r');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
Тема "ContextMenu plugin"
ВЫЗОВ ИСПОЛНЯЕМЫХ ФАЙЛОВ ИЗ КОНТЕКСТНЫХ МЕНЮ и ТУЛБАРА:
1. Можно вызывать внутренние команды AkelPad'а с помощью Command(номер).
О номерах команд см. в предыдущем сообщении.
2. Можно вызывать скрипты с помощью Call() или Exec()
Пример:
ОБЩАЯ ИНФОРМАЦИЯ ПО ВЫЗОВАМ СКРИПТОВ:
- РАБОТА С АРГУМЕНТАМИ (4-й параметр):
Вопрос: для чего нужен параметр "%f" ?
В отличие от метода AkelPad.GetEditFile(0), который возвращает имя файла текущей закладки (т.е. текущего редактируемого файла):
этот код возвращает имя файла вне зависимости от того меню, в котором мы сейчас находимся, т.к. мы передаём его (%f) через аргументы:
- ПЕРЕДАЧА АРГУМЕНТОВ В СКРИПТ (эти способы остались в старых скриптах)
Можно передавать несколько аргументов, это можно сделать просто через пробел, например:
или, если в параметре имеются пробелы, -заключая каждый в кавычки:
- ПРОВЕРКА ВНУТРИ СКРИПТА НА НАЛИЧИЕ АРГУМЕНТОВ
В Scripts-плагин было добавлено 2 метода GetArgLine и GetArgValue для более удобной работы с аргументами; подробнее см. Scripts-Rus.txt либо примеры скриптов.
3. Можно вызывать плагины.
Вопрос: где взять контекстные меню?
Ответ: пример - здесь. А вообще в готовых сборках AkelPad'а.
N.B.: меню работают со скриптами, находящимися в теме "Сборник скриптов для Scripts plugin'а". Скрипты из этой темы нужно не скачивать, а брать прямо со страницы, т.к. они периодически изменяются авторами и поэтому являются актуальными для указанных контекстных меню.
4. Можно запускать другие файлы.
4.1. hta-приложения.
Формат записи:Файл справки AkelPad4-Eng.chm необходимо предварительно скачать отсюда.
Комментирование кода в контекстных меню осуществляется символом ; либо #
Расположение комбинаций клавиш по аналогии с главным меню программы (справа) можно сделать использовав в качестве разделителя символ табуляции (для того, чтобы набрать символ табуляции в поле редактирования меню, нужно нажать Ctrl+Tab).
ВЫЗОВ ИСПОЛНЯЕМЫХ ФАЙЛОВ ИЗ КОНТЕКСТНЫХ МЕНЮ и ТУЛБАРА:
1. Можно вызывать внутренние команды AkelPad'а с помощью Command(номер).
О номерах команд см. в предыдущем сообщении.
2. Можно вызывать скрипты с помощью Call() или Exec()
Пример:
Code: Select all
"Наименование позиции меню/подсказки тулбара" Call("Scripts::Main", 1, "Script.js", "%f", 0)
при наличии знака минуса перед наименованием пункта меню, он не будет каким-либо образом менять свой статус. Подробнее см. файл ContextMenu-Rus.txt в дистрибутиве плагина.Instructor wrote:Галочка означает, что плагин загружен. Можно пользоваться методом Exec() вместо Call(). Например так:VladSh wrote:Ещё вопрос. Все подменюшки, которые я пишу с вызовами скриптов почему-то идут с галочкой перед именем, почему она появляется, и можно ли её как-то убрать?Code: Select all
"Наименование позиции меню/подсказки тулбара" Exec(`WScript "%a\AkelFiles\Plugs\Scripts\Script.js" "%f"`)
- РАБОТА С АРГУМЕНТАМИ (4-й параметр):
Вопрос: для чего нужен параметр "%f" ?
%f - аргумент "имя файла". Т.е. он обязателен если мы хотим чтобы скрипт, работающий по имени файла, отрабатывал из любого меню (и из меню редактирования и из меню последних файлов).Instructor wrote:Именно поэтому в релизе к 3.3.4 значится "Добавлено: сообщение AKD_GETRECENTFILES."VladSh wrote:Updated: Замечено, что EXPLORER -> Open в любом меню работает корректно, т.е. если жму в окне редактирования/на текущей вкладке, то открывается именно открытый в текущей вкладке файл; если вызываю из меню последних файлов - открывается именно выделенный файл из меню последних файлов.
В параметре %f есть необходимость, только, если в скрипте идет обработка аргументов вызова.
В отличие от метода AkelPad.GetEditFile(0), который возвращает имя файла текущей закладки (т.е. текущего редактируемого файла):
Code: Select all
var fileName = AkelPad.GetEditFile(0);
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) //Или на конкретное число аргументов
3. Можно вызывать плагины.
-----------------------------------------------------------------Instructor wrote:DVИспользуюмые методы можно посмотреть в дефолтных меню. Что касаемо метода Call() с дополнительными параметрами, то это уже зависит от вызываемого плагина.Где можно посмотреть описание всех функций и параметров плагина?
Вопрос: где взять контекстные меню?
Ответ: пример - здесь. А вообще в готовых сборках AkelPad'а.
N.B.: меню работают со скриптами, находящимися в теме "Сборник скриптов для Scripts plugin'а". Скрипты из этой темы нужно не скачивать, а брать прямо со страницы, т.к. они периодически изменяются авторами и поэтому являются актуальными для указанных контекстных меню.
4. Можно запускать другие файлы.
4.1. hta-приложения.
Формат записи:
4.2. chm-файлы.Exec('mshta "<путь к hta-файлу>"')
Пример: запуск справкиExec('"hh.exe" "<путь к chm-файлу>"')
Code: Select all
"AkelPad-Eng.chm" Exec(`"hh.exe" "%a\AkelFiles\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-плагина
Варианты запуска на примерах:
Разница заключается в том, что в первом варианте скрипт запускается в фоне, т.е. скрипт, из которого производится вызов, продолжает выполняться дальше, т.е. параллельно с вызываемым!
Если этот вызов находится в последней строке скрипта, то метод Call вполне приемлем. Параметры его вызова:
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 вполне приемлем. Параметры его вызова:
Если же нужно отработать вызываемый скрипт, а только потом продолжить выполнение текущего скрипта (с задержкой на время выполнения вызываемого скрипта), то нужно использовать 2-й варинт с eval.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
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:
Подниму-ка я тему вверх
Описание пункта "Выполнить" из меню настроек
По умолчанию (строка "Команда" в настройках пустая), этот пункт недоступен для всех типов файлов.
Для выполнения файлов по их системной ассоциации в поле "Команда" следует прописать:
а для выполнения в их рабочем каталоге в поле "Рабочий каталог" прописать:
По умолчанию (строка "Команда" в настройках пустая), этот пункт недоступен для всех типов файлов.
Для выполнения файлов по их системной ассоциации в поле "Команда" следует прописать:
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:
Ещё раз подниму тему вверх :-)
1. Размер Tab при отжатой галке "Пробелы" теперь реально равен количеству пробелов, указанных в поле размера!
2. Появилась возможность настраивать собственные префиксы для гиперссылок (по используемым протоколам); например:
3. Синтаксис плагинов ContextMenu, Hotkeys и ToolBar, приведен к одному (за редкими исключениями), что очень удобно: разобравшись в одном - легко настраиваешь другие. В последнем есть ещё команда Icon для отображения указанной иконки, которую можно указать из *.dll, *.exe (по номеру расположения в файле) либо напрямую из файла *.ico, находящегося на диске.
Подробное описание см. в файлах ContextMenu-Rus.txt, Hotkeys-Rus.txt и ToolBar-Rus.txt в дистрибутивах соответствующих плагинов.
2. Появилась возможность настраивать собственные префиксы для гиперссылок (по используемым протоколам); например:
Code: Select all
http: https: www. ftp: file: mailto: notes: \\
Подробное описание см. в файлах ContextMenu-Rus.txt, Hotkeys-Rus.txt и ToolBar-Rus.txt в дистрибутивах соответствующих плагинов.
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Ещё кое что по написанию скриптов
Из скрипта по номеру можно вызывать внутренние команды 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). Если же по каким-то причинам это сделать не удаётся, то можно обойти это другим способом:
2. Убираем мигание выделения.
Иногда при выделении всего текста (SetSel(0, -1)) и вставке результата (ReplaceSel) происходит неприятное мигание выделения. Убрать его можно разместив в своём скрипте функцию
тогда скрипт будет выглядеть так:
на время отладки скрипта вызовы функции setRedraw лучше закоментировать, чтобы при ошибке в скрипте не отключалась прорисовка текущего окна редактирования. Если такое всё-таки произошло, то проще всего это полечить перезагрузкой AkelPad'а.
3. Получение текста back-end-методом GetTextRange.
В некоторых случаях
- когда не требуется обработки всего текста текущего файла;
- когда не нужно выделять весь файл, а нужно производить поиск какого-либо текста вверх/вниз от текущей позиции курсора
лучше не пользоваться SetSel(0, -1), а заменить её на получение/анализ/изменение текста в бэкграунде, т.е. GetTextRange(0, -1). Таким образом в вышеуказанных случаях можно избежать использования setRedraw.
Примеры вызовов см. "//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)
Иногда при выделении всего текста (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);
//код
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'у
Микс из сообщений Instrictor'а и FeyFre по 2-му параметру SendMessage wrote:WM_* системные сообщения. Могут посылаться любому окну, зависит от конкретного сообщения. См. MSDN.
AKD_* сообщения AkelPad'a. Посылаются главному окну. См. AkelDLL.h.
Все AKD_* объявлены как WM_USER + ###:WM_USER объявлен в PlatformSDK (Windows SDK) в файле WinUser.h как 0x0400Code: Select all
#define AKD_FRAMEFIND (WM_USER + 264) #define AKD_FRAMEFINDA (WM_USER + 265) #define AKD_FRAMEFINDW (WM_USER + 266)
EM_* сообщения RichEdit'a. Посылаются окну редактирования. См. MSDN.
AEM_* сообщения AkelEdit'а. Посылаются окну редактирования. См. AkelEdit.h.
Скачайте со страницы плагинов плагин-шаблон AkelDLL (а ещё лучше исходники самого редактора). Там Вы найдёте файл AkelDLL.h. В нём описаны все сообщения которые можно послать редактору (AkelPad.GetMainWnd()), что они требуют, что возвращают, что делают и есть примеры. 99% тех сообщений можно посылать из Scripts.
Также в файле AkelEdit.h (есть только в исходнике редактора, в плагине-шаблоне нету) описаны все сообщения, которые можно посылать окну редактирования (AkelPad.GetEditWnd()) в 4 версии (в 3-ей справка по RichEdit есть у Microsoft), примеры также прилагаются.
Для изменения установок вкладки добавлен специальный метод SetFrameInfo, см. скрипт Instructor'а ShiftTabSize.js.FeyFre wrote:Изменение размеров Tab'а не сохраняя настройки:
Сообщение AKD_FRAMEFIND возвращает указатель на внутреннюю структуру Акеле FRAMEDATA (берем там в том же AkelDll.h) - структура которая содержит всю индивидуальную информацию вкладки (каждой вкладке своя, в SDI - в единичном экземпляре).
Нашел путь прямее (не сохраняя настройки программы!), тут мы напрямую у контролла спрашиваем размер табов, и устанавливаем его, без участия FRAMEDATA. Соотв. оно в настройки не попадет.
Вопрос: как проверить, установлена ли галка "Пробелы" в настройках в "Размере табуляции"?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);
Вопрос: как это определить номер или индекс текущей вкладки?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);
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: Белово, Кемеровская область, Россия
Вопрос:
Куда делось меню Синтаксис, которое присутствует в Notepad++?
Ответ:
Можно его воссоздать. Обязательным условием этого решения является наличие ContextMenu (272 Кб) и Coder (573 Кб) плагинов.
1. Вызовите ContextMenu::Main.
1.1. Откройте диалог Настройки -> Плагины... или нажмите сочетание клавиш Alt+P.
1.2. Выделите ContextMenu::Main из списка и нажмите Вызвать.
2. В выпадающем списке выберите вместо Меню ContextMenu::Show - Главное меню.
3. Поставьте галочку Включено, если её нет.
4. Измените меню:
5. Нажмите ОК.
Куда делось меню Синтаксис, которое присутствует в 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, "?")
}
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: Белово, Кемеровская область, Россия
Вопрос:
Как пользоваться скриптами?
Ответ:
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" или здесь.
Как пользоваться скриптами?
Ответ:
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: Белово, Кемеровская область, Россия
Вопрос:
Создал свой файл с расширением *.coder, скопировал его в папку {AkelPadDir}\AkelFiles\Plugs\Coder, перезапустил AkelPad, но ни подсветка синтаксиса, ни фолдинг, ни автодополнение так и не заработали. Что делать?
Ответ:
Файл должен быть в кодировке Unicode (little endian), т.е. сохранён как 1200 (UTF-16 LE). После этого следует перезапустить AkelPad, либо произвести обновления кэша (см. Coder-{Lang}.txt, где {Lang} - это первые три латинские буквы Вашего родного языка).
Создал свой файл с расширением *.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: Белово, Кемеровская область, Россия
Вопрос:
Где взять файлы с расширением *.coder?
Ответ:
В дистрибутиве Coder плагина, здесь, и ещё некоторые файлы можно найти прямо в теме Coder plugin либо создать свои (примеров хватает).
Где взять файлы с расширением *.coder?
Ответ:
В дистрибутиве Coder плагина, здесь, и ещё некоторые файлы можно найти прямо в теме Coder plugin либо создать свои (примеров хватает).
-
Offline
- Posts: 46
- Joined: Fri Mar 22, 2013 5:05 am
- Location: Белово, Кемеровская область, Россия
Вопрос:
Как я могу изменить сочетания клавиш в программе, по 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, там найдите
Из этой строчки Вам нужны только три параметра:
1. VK_R - это клавиша R;
2. CONTROL - это дополнительная клавиша Ctrl;
3. 4161 - это код отправляемый программе при нажатии на Ctrl+R, в данном случае этот код отвечает за открытие диалогового окна Заменить.
Измените VK_R на VK_F (VK_F - это клавиша F). Результат:
Теперь найдите строку
она отвечает за открытие диалогового окна Найти. Т.к. теперь имеются одинаковые сочетания клавиш Ctrl+F, необходимо либо удалить эту строку с кодом 4158, либо назначить другие горячие клавиши. Назначьте диалогу Найти сочетание клавиш Ctrl+Shift+F, измените строку
на
После всех манипуляций нажмите Compile Script и File -> Save. Теперь диалог Заменить открывается по Ctrl+F, а диалог Найти по Ctrl+Shift+F.
Как я могу изменить сочетания клавиш в программе, по 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
Code: Select all
VK_F, 4158, NOINVERT, CONTROL, VIRTKEY
Code: Select all
VK_F, 4158, NOINVERT, CONTROL, SHIFT, VIRTKEY
Last edited by Egorkaru on Thu Aug 07, 2014 3:07 am, edited 2 times in total.