***************************************************************** *** Coder AkelPad plugin v19.8 *** ***************************************************************** 2007-2016 Шенгальц Александр aka Instructor (Shengalts@mail.ru) *** Описание *** Дополнительные возможности для программирования. *** Функции *** Coder::HighLight Подсветка синтаксиса. Coder::CodeFold Поддержка сворачиваемых блоков (фолдинг). Coder::AutoComplete Авто-дополнение - это возможность, позволяющая ускорить процесс редактирования. Функция производит замену короткой аббревиатуры на блок текста. Например, если Вы набрали "for", во время редактирования C++ файла и нажали горячую клавишу (Ctrl+Space по умолчанию), "for" раскроется в следующую форму: for (; ; ) { } Coder::Settings Диалог настроек плагина. *** Настройки *** Дополнить со списком: Один вариант замены - замена аббревиатуры на блок текста. Более одного варианта замены - список аббревиатур для замены. Дополнить без списка / К следующей позиции: Один вариант замены или точное совпадение - замена аббревиатуры на блок текста. Более одного варианта замены - передача горячей клавиши для дальнейшей обработки программой. После замены - переход на следующую позицию в блоке текста. К предыдущей позиции: Переход на предыдущую позицию в блоке текста. Сохранять регистр введенных символов: Регистр сохраняется только для файлов без синтаксической темы, чтобы форсировано не менять регистр введенных символов для любого документа, используем Shift+Enter для выбора из списка. *** Внешний вызов Coder::HighLight *** Call("Coder::HighLight", 2, "#RRGGBB", "#RRGGBB", FLAGS, FONTSTYLE, ID, "TEXT", TEXTLENGTH) Параметры: 2 Отметить выделенный текст или указанный текст. "#RRGGBB" Цвет текста. Если "0", игнорируется. "#RRGGBB" Цвет фона. Если "0", игнорируется. FLAGS (сумма следующих): 1 учитывать регистр (по умолчанию). 2 регулярные выражения в параметре "TEXT". 4 слово целиком. По умолчанию: 1. FONTSTYLE (один из следующих): 0 игнорировать (по умолчанию). 1 обычный шрифт. 2 жирный шрифт. 3 курсивный шрифт. 4 жирный курсивный шрифт. ID Идентификатор (по умолчанию -1). Если -1, назначается автоматически. "TEXT" Текст для отметки. Если указан, выделение игнорируется. TEXTLENGTH Длина текста (по умолчанию -1). Если -1, длина текста ограничивается NULL символом. Пример: Call("Coder::HighLight", 2, "#000000", "#9BFF9B", 1, 0, 10) Call("Coder::HighLight", 3, ID, "#RRGGBB", "#RRGGBB") Параметры: 3 Снять отметки текста. ID Идентификатор (по умолчанию 0). Если ноль, удалить все отметки. Если -1, удалить автоматически назначенные идентификаторы по цвету. Если -2, удалить отметки выделенного текста. "#RRGGBB" Цвет текста, если "0" игнорируется. "#RRGGBB" Цвет фона, если "0" игнорируется. Пример: Call("Coder::HighLight", 3, 0) Call("Coder::HighLight", 4, ID, "#RRGGBB", "#RRGGBB", DIRECTION) Параметры: 4 Найти отметки текста. ID Идентификатор (по умолчанию 0). Если ноль, найти любые отметки. Если -1, найти автоматически назначенные идентификаторы по цвету. Если -2, найти отметки выделенного текста. "#RRGGBB" Цвет текста. Если "0", игнорируется. "#RRGGBB" Цвет фона. Если "0", игнорируется. DIRECTION (один из следующих): 0 найти вниз (по умолчанию). 1 найти вверх. Пример: Call("Coder::HighLight", 4, 0, 0, 0, 1) *** Внешний вызов Coder::CodeFold *** Call("Coder::CodeFold", 1, *WINDOW) Параметры: 1 Показать/Скрыть список. *WINDOW Необязательный параметр. Указатель на переменную, которая получает дескриптор плавающего окна. Пример (получить дескриптор плавающего окна): WScript.Echo(GetCodeFoldWindow()); function GetCodeFoldWindow() { var lpWnd; var hWnd=0; if (lpWnd=AkelPad.MemAlloc(_X64?8:4 /*sizeof(HWND)*/)) { AkelPad.CallW("Coder::CodeFold", 1, lpWnd); hWnd=AkelPad.MemRead(lpWnd, 2 /*DT_QWORD*/); AkelPad.MemFree(lpWnd); } return hWnd; } Call("Coder::CodeFold", 2) Параметры: 2 Перейти к правилу. *** Внешний вызов Coder::Settings *** Call("Coder::Settings", 1, "EXTENSION") Параметры: 1 Установить синтаксическую тему вручную, используя расширение. "EXTENSION" Расширение, например: "html". Ручная установка темы отменяется, если параметр расширения отсутствует. Если параметр расширения равен "?", то документ определяется, как не имеющий темы. Call("Coder::Settings", 2, *USECACHE) Параметры: 2 Обновить кеш. *USECACHE Необязательный параметр. Указатель на переменную, которая получает тип кеша. Один из следующих: 0 //UC_NONE Без кеша. 1 //UC_FAST Быстрый кеш. 2 //UC_SMART Умный кеш. Call("Coder::Settings", 3, PAGE) Параметры: 3 Открыть диалог настроек на указанной странице. PAGE Номер страницы, начиная с нуля. Call("Coder::Settings", 4, FLAGS, "FILE") Параметры: 4 Экспорт текста в RTF. FLAGS (сумма следующих): 1 Экспортировать в файл. 16 Копировать в буфер обмена. 32 Заполнить текстовый формат буфера обмена текстом. Задается совместно с 16. 64 Заполнить текстовый формат буфера обмена отформатированными данными. Задается совместно с 16. 256 Экспортировать цвет выделения текста. 512 Экспортировать цвета активной строки. 1024 Экспортировать цвета зебры. 2048 Не экспортировать основной цвет текста. 4096 Не экспортировать основной цвет фона. 65536 Экспортировать только выделение. По умолчанию экспортируется выделение, либо весь документ, если нет выделения. 131072 Форсировать экспорт всего документа. По умолчанию экспортируется выделение, либо весь документ, если нет выделения. По умолчанию: 16+32=48. "FILE" Файл для экспорта. Используется, если задан флаг 1. По умолчанию открывается диалог для выбора файла. Call("Coder::Settings", 5, "COLORTHEME") Параметры: 5 Установить цветовую тему. "COLORTHEME" Имя цветовой темы, например: "Bespin". Call("Coder::Settings", 6, "ALIAS") Параметры: 6 Установить синтаксическую тему вручную, используя псевдоним. "ALIAS" Псевдоним, например: ".html". Ручная установка темы отменяется, если параметр псевдонима отсутствует. Если параметр псевдонима равен "?", то документ определяется, как не имеющий темы. Call("Coder::Settings", 12, "ALIAS", *BOOL) Параметры: 12 Проверить активность синтаксической темы по псевдониму. Использовать с помощью Scripts плагина. "ALIAS" Псевдоним, например: ".html". *BOOL Указатель на переменную, которая получает активность синтаксической темы. Пример: WScript.Echo(CheckAlias(".html")); function CheckAlias(pAlias) { var lpActive; var bActive=false; if (lpActive=AkelPad.MemAlloc(4 /*sizeof(BOOL)*/)) { AkelPad.CallW("Coder::Settings", 12, pAlias, lpActive); bActive=AkelPad.MemRead(lpActive, 3 /*DT_DWORD*/); AkelPad.MemFree(lpActive); } return bActive; } Call("Coder::Settings", 14, "COLORTHEME", *BOOL) Параметры: 14 Проверить активность цветовой темы по имени. Использовать с помощью Scripts плагина. "COLORTHEME" Имя цветовой темы, например: "Bespin". *BOOL Указатель на переменную, которая получает активность цветовой темы. Пример: WScript.Echo(CheckVarTheme("Bespin")); function CheckVarTheme(pVarTheme) { var lpActive; var bActive=false; if (lpActive=AkelPad.MemAlloc(4 /*sizeof(BOOL)*/)) { AkelPad.CallW("Coder::Settings", 14, pVarTheme, lpActive); bActive=AkelPad.MemRead(lpActive, 3 /*DT_DWORD*/); AkelPad.MemFree(lpActive); } return bActive; } Call("Coder::Settings", 16, WINDOW, *SYNTAXFILE, SYNTAXFILELENGTH) Параметры: 16 Получить имя синтаксического файла по дескриптору окна. Использовать с помощью Scripts плагина. WINDOW Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. *SYNTAXFILE Указатель на память, которая получает имя синтаксического файла. SYNTAXFILELENGTH Максимальное количество символов, которое может быть скопировано в SYNTAXFILE. Пример: WScript.Echo(GetSyntaxFile(0)); function GetSyntaxFile(hWndEdit) { var pSyntaxFile=""; var lpSyntaxFile; if (lpSyntaxFile=AkelPad.MemAlloc(256 * 2 /*sizeof(wchar_t)*/)) { AkelPad.CallW("Coder::Settings", 16, hWndEdit, lpSyntaxFile, 256); pSyntaxFile=AkelPad.MemRead(lpSyntaxFile, 1 /*DT_UNICODE*/); AkelPad.MemFree(lpSyntaxFile); } return pSyntaxFile; } Call("Coder::Settings", 18, WINDOW, DOCUMENT, *ALIAS, *ALIASLENGTH) Параметры: 18 Получить псевдоним по дескриптору окна. Использовать с помощью Scripts плагина. WINDOW Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. DOCUMENT Дескриптор документа. Если ноль, то определяется автоматически. *ALIAS Указатель на память, которая получает псевдоним. Может быть NULL. *ALIASLENGTH Указатель на память, которая получает количество скопированных в ALIAS символов. Может быть NULL. Пример: WScript.Echo(GetAlias(0, 0)); function GetAlias(hWndEdit, hDocEdit) { var pAlias=""; var lpAlias; if (lpAlias=AkelPad.MemAlloc(256 * 2 /*sizeof(wchar_t)*/)) { AkelPad.CallW("Coder::Settings", 18, hWndEdit, hDocEdit, lpAlias, 0); pAlias=AkelPad.MemRead(lpAlias, 1 /*DT_UNICODE*/); AkelPad.MemFree(lpAlias); } return pAlias; } Call("Coder::Settings", 20, WINDOW, *COLORTHEME, COLORTHEMELENGTH) Параметры: 20 Получить имя цветовой темы по дескриптору окна. Использовать с помощью Scripts плагина. WINDOW Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. *COLORTHEME Указатель на память, которая получает имя цветовой темы. COLORTHEMELENGTH Максимальное количество символов, которое может быть скопировано в COLORTHEME. Пример: WScript.Echo(GetVarTheme(0)); function GetVarTheme(hWndEdit) { var pVarTheme=""; var lpVarTheme; if (lpVarTheme=AkelPad.MemAlloc(256 * 2 /*sizeof(wchar_t)*/)) { AkelPad.CallW("Coder::Settings", 20, hWndEdit, lpVarTheme, 256); pVarTheme=AkelPad.MemRead(lpVarTheme, 1 /*DT_UNICODE*/); AkelPad.MemFree(lpVarTheme); } return pVarTheme; } Call("Coder::Settings", 22, WINDOW, DOCUMENT, "VARNAME", *VARVALUE, *VARVALUELENGTH) Параметры: 22 Получить значение переменной из цветовой темы по дескриптору окна. Использовать с помощью Scripts плагина. WINDOW Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. DOCUMENT Дескриптор документа. Если ноль, то определяется автоматически. "VARNAME" Имя переменной, например: "AutoComplete_Indent". *VARVALUE Указатель на память, которая получает значение переменной. *VARVALUELENGTH Указатель на память, которая получает количество скопированных в VARVALUE символов. Может быть NULL. Пример: WScript.Echo(GetVariable(0, 0, "STR")); function GetVariable(hWndEdit, hDocEdit, pVarName) { var pVarValue=""; var lpVarValue; if (lpVarValue=AkelPad.MemAlloc(32 * 2 /*sizeof(wchar_t)*/)) { AkelPad.CallW("Coder::Settings", 22, hWndEdit, hDocEdit, pVarName, lpVarValue); pVarValue=AkelPad.MemRead(lpVarValue, 1 /*DT_UNICODE*/); AkelPad.MemFree(lpVarValue); } return pVarValue; } *** Структура cache файла *** [Cache] bat.coder=257CB20001CEE2DA:"*.bat" "*.cmd" cpp.coder=DCD8500001CF30A3,1:"*.cpp" "*.c" cpp.coder Файл синтаксиса. DCD8500001CF30A3 Время модификации cpp.coder. 1 Необязательный ручной параметр. Если 1, то не обновлять информацию о типах файлов из cpp.coder. "*.cpp" "*.c" Типы файлов. *** Описание иерархии, применяющейся в *.coder файлах *** Rule ID, Parent ID В правиле, которое является родителем, указывается идентификатор (Rule ID). В дочернем же правиле, которое будет работать, только если находится внутри родителя, указывается идентификатор родителя (Parent ID). Например, разделитель "/" будет найден и подсвечен "#FF0000", только если находится между "<" и ">". Quotes: ;=================================================================================== ;Flags Font Color Color Quote Quote Escape Quote Quote Parent Rule ; style text bkgrnd start end char include exclude ID ID ;=================================================================================== ;5=1+4 5 0 0 0 "<" ">" "" "" "" 0 123 Delimiters: ;=============================================== ;Flags Font Color Color Char(s) Parent ; style text bkgrnd ID ;=============================================== 1 0 #FF0000 0 "/" 123 - Может быть несколько правил с одинаковым идентификатором (Rule ID). В таком случае дочерние правила, для которых указан данный идентификатор (Parent ID), будут работать в любом из родителей. - Родителем (Parent ID) для секции "Delimiters:" может быть "Quotes:", "QuotesRE:", "Folds:". - Родителем (Parent ID) для секции "Words:" может быть "Quotes:", "QuotesRE:", "Folds:". - Родителем (Parent ID) для секции "Quotes:" может быть "Quotes:", "QuotesRE:", "Folds:". - Родителем (Parent ID) для секции "QuotesRE:" может быть "Quotes:", "QuotesRE:", "Folds:". - Родителем (Parent ID) для секции "Folds:" может быть "Folds:". - Если родитель (Parent ID) равен 0 (по умолчанию): - Внутри не оформленного диапазона ("Quotes:", "QuotesRE:"), правило обрабатывается. - Внутри оформленного диапазона ("Quotes:", "QuotesRE:"), правило игнорируется. - Внутри не оформленного блока ("Folds:"), правило обрабатывается. - Внутри оформленного блока ("Folds:"), правило из "Folds:" обрабатывается, из остальных секций игнорируется. - Если родитель (Parent ID) равен -1, то правило должно быть без родителя с идентификатором (Rule ID) > 0. - Если родитель (Parent ID) равен -2: - Внутри родителя с идентификатором (Rule ID) == 0, правило не обрабатывается. - Внутри родителя с идентификатором (Rule ID) > 0: - Идентификатор правила (Rule ID) отсутствует, правило обрабатывается. - Идентификатор правила (Rule ID) <> идентификатор родителя (Rule ID), правило обрабатывается. - Идентификатор правила (Rule ID) == идентификатор родителя (Rule ID), правило не обрабатывается. - Если родитель (Parent ID) равен -3: - Внутри родителя с идентификатором (Rule ID) == 0, см. обработку родителя (Parent ID) равного 0. - Внутри родителя с идентификатором (Rule ID) > 0: - Идентификатор правила (Rule ID) отсутствует, правило обрабатывается. - Идентификатор правила (Rule ID) <> идентификатор родителя (Rule ID), правило обрабатывается. - Идентификатор правила (Rule ID) == идентификатор родителя (Rule ID), правило не обрабатывается. Rule file Файл правила (Rule file) - указывает, что для данного блока применяются правила синтаксиса из другого .coder файла. - Текст, захваченный выражением начала блока (Fold start) и конца блока (Fold end), будет подсвечен текущим .coder файлом, а содержимое уже файлом правила (Rule file). - В строке файл правила (Rule file) задаётся конкретный .coder файл, например, "cpp.coder" или псевдоним в формате: "alias:.cpp". - См. html.coder для примера. *** Описание некоторых переменных, применяющихся в темах Coder::Settings *** Автоматически отмечать выделенное: HighLight_AutoMarkFlags Флаги (сумма следующих): 1 учитывать регистр (по умолчанию). 2 слово целиком. По умолчанию: 1. HighLight_AutoMarkFontStyle Стиль шрифта (один из следующих): 0 игнорировать (по умолчанию). 1 обычный шрифт. 2 жирный шрифт. 3 курсивный шрифт. 4 жирный курсивный шрифт. HighLight_AutoMarkTextColor Цвет текста. Если 0, используется умолчание. HighLight_AutoMarkBkColor Цвет фона. Если 0, используется умолчание. Переменные для LineBoard плагина: LineBoard_TextColor Цвет текста. Если 0, не задан. LineBoard_BkColor Цвет фона. Если 0, не задан. LineBoard_BorderColor Цвет границы. Если 0, не задан. LineBoard_BookmarkTextColor Цвет текста закладки. Если 0, не задан. LineBoard_BookmarkBkColor Цвет фона закладки. Если 0, не задан. LineBoard_BookmarkBorderColor Цвет границы закладки. Если 0, не задан. LineBoard_LineUnsavedColor Цвет несохраненной строки. Если 0, не задан. LineBoard_LineSavedColor Цвет сохраненной строки. Если 0, не задан. LineBoard_RulerScaleColor Цвет шкалы на линейке. Если 0, не задан. LineBoard_RulerCaretColor Цвет каретки на линейке. Если 0, не задан. Переменные для SpecialChar плагина: SpecialChar_BasicFontStyle Стиль шрифта основной (один из следующих): 0 игнорировать (по умолчанию). 1 обычный шрифт. 2 жирный шрифт. 3 курсивный шрифт. 4 жирный курсивный шрифт. SpecialChar_BasicTextColor Цвет текста основной. Если 0, не задан. SpecialChar_BasicBkColor Цвет фона основной. Если 0, не задан. SpecialChar_SelFontStyle Стиль шрифта в выделении (один из следующих): 0 игнорировать (по умолчанию). 1 обычный шрифт. 2 жирный шрифт. 3 курсивный шрифт. 4 жирный курсивный шрифт. SpecialChar_SelTextColor Цвет текста в выделении. Если 0, не задан. SpecialChar_SelBkColor Цвет фона в выделении. Если 0, не задан. Переменные для Sessions плагина: Sessions_ListTextColor Цвет текста списка. Если 0, не задан. Sessions_ListBkColor Цвет фона списка. Если 0, не задан.