Page 28 of 97
Posted: Fri Aug 06, 2010 9:18 pm
by VladSh
Fr0sT
Слишком длинно получается.
И большие буквы в заглавии переменных ухудшают читабельность кода. Да и символ подчёркивания тоже.. лучше его использовать в исключительных случаях; у меня есть свои
стандарты (это старый стандарт, раздел 3) наименований, где подчёркивания использовались, но я теперь ухожу от этого.
Posted: Fri Aug 06, 2010 9:46 pm
by KDJ
Check the new script
InsertText.js.
I used in this script functions from the script LinesFilter.js written by Instructor.
Posted: Sat Aug 07, 2010 4:57 am
by cnnnc
Method Insert("text", [Esc-sequences]) in ContextMenu, ToolBar and HotKey plugins will do most same job, and it even support Esc-sequences, but InsertText.js not( Now).
Instructor, I think it will be more welcome that method Insert have one more argument to call a inputbox for users to input what they like to do.
Posted: Sat Aug 07, 2010 10:34 am
by VladSh
FeyFre wrote:Очень и очень не рекомендовано запрашивать/отправлять данные размером больше машинного слова через WM_COMMAND(как и через многие другие), ибо междупроцессный барьер, и автоматического маршалинга для этого сообщения не выполняется.
Сразу не сообразил..
Во-1, ведь с помощью SendMessage можно вернуть формат даты из настроек? И он будет той же длины, что и дата..
Во-2, я ж и предлагаю для возвращения даты отказаться от WM_COMMAND (273), а использовать 0, т.е:
Code: Select all
var pDate = AkelPad.SendMessage(AkelPad.GetMainWnd(), 0, 4183, 0);
Posted: Sat Aug 07, 2010 12:43 pm
by FeyFre
Во-1, ведь с помощью SendMessage можно вернуть формат даты из настроек? И он будет той же длины, что и дата..
С помощью SendMessage можно послать сообщение конкретному окну. Т.е. оно сначала станет в системную очередь сообщение, потом в очередь сообщений потока-владельца целевого окна(при этом если сообщение системное - отмаршалятся параметры сообщения если это предусмотренно сообщением), потом усли поток владелец пожелает его обработать то направит его дальше по цепочке, потом сработают туевая хуча хуков которые могут изменить сообщение(сделать код сообщения 0), отбросить его, перенаправить другому окну, и аж потом сообщение попадает в процедуру обработчик, обрабатывается, и результат ползет по похожей цепочке назад.
Во-2, я ж и предлагаю для возвращения даты отказаться от WM_COMMAND (273), а использовать 0, т.е:
Читаем книжку о сообщении номер 0
Читаем книжку о собственных сообщениях
Posted: Sat Aug 07, 2010 3:12 pm
by VladSh
FeyFre
Про 0, может, я и не прав. Да и там хренова туча других номеров есть, вот например:
Code: Select all
var nTabStop = AkelPad.SendMessage(AkelPad.GetEditWnd(), 3239 /*AEM_GETTABSTOP*/, 0, 0); //Number of Spaces in Tabs (take from the program settings)
Здесь главное идея. Сделать можно, было бы желание. В крайнем случае можно использовать последний параметр, который специально зарезервирован для разных целей.
Posted: Sat Aug 07, 2010 5:03 pm
by KDJ
cnnnc wrote:
Method Insert("text", [Esc-sequences]) in ContextMenu, ToolBar and HotKey plugins will do most same job, and it even support Esc-sequences, but InsertText.js not( Now).
I completed the script for handling "ESC sequences" (new line and tabulation).
Posted: Sat Aug 07, 2010 8:04 pm
by Fr0sT
Влад
Слишком длинно получается.
ну так либо длинные имена, либо шанс пересечься с другими переменными... можешь типа венгерской нотации применить, sclVarName.
Насчет даты: а разве её нельзя получить стандартным путём получения настроек (тут недавно мелькало) через Openini, Loadsection и так далее? Думаю, можно. А дефолтный системный формат берется из GetLocaleFormatSettings, или как-то вроде того функция называется.
Posted: Sat Aug 07, 2010 8:17 pm
by FeyFre
Fr0sT
Насчет даты: а разве её нельзя получить стандартным путём получения настроек (тут недавно мелькало) через Openini, Loadsection и так далее?
Нельзя, ибо перечисленное АПИ работает с указанным ini-файлом. В случае АкелПад, ini-файла может и не быть(если настройки хранятся в реестре). Так что, что-бы узнать спросить настройки АкелПад-а нужно их спрашивать у него самого, а не читать с хранилища(настройки в хранилище сбрасываются во время завершения редактора, т.е. если пользователь их менял, то в ini-файле/реестре они ещё не изменились)
Posted: Sun Aug 08, 2010 7:01 pm
by KDJ
In the script
InsertText.js I added memorization of texts in the registry by using ComboBox.
Posted: Mon Aug 09, 2010 10:48 am
by Fr0sT
Нельзя, ибо перечисленное АПИ работает с указанным ini-файлом. (...) что-бы узнать спросить настройки АкелПад-а нужно их спрашивать у него самого, а не читать с хранилища
Собственно, поэтому я и создавал тему в поддержку добавления единого API для получения настроек.
Posted: Mon Aug 09, 2010 10:52 am
by VladSh
Fr0sT wrote:Насчет даты: а разве её нельзя получить стандартным путём получения настроек (тут недавно мелькало) через Openini, Loadsection и так далее? Думаю, можно. А дефолтный системный формат берется из GetLocaleFormatSettings, или как-то вроде того функция называется.
Ответ
здесь:
Fr0sT wrote:2. Да, я смотрел InsertDate, но мне не показалось продуктивным в каждый вызов лога дёргать две системные функции. Так что сделал самое простое, что есть. Иначе код раздуется до сотни строк)
Я собственно не только про дату предлагаю (обработку только даты - было бы бредово...) Это общая идея, т.е. чтобы, например последним параметом командовать как будет работать вызов, как процедура (как сейчас) или как функция, например:
Code: Select all
var bResult = AkelPad.SendMessage(AkelPad.GetMainWnd(), 273 /*WM_COMMAND*/, 4103 /*Диалог открытия файлов*/, 0);
как обычно, работает как процедура - открывает файл.
Code: Select all
var arrFiles = AkelPad.SendMessage(AkelPad.GetMainWnd(), 273 /*WM_COMMAND*/, 4103 /*Диалог открытия файлов*/, 1);
работает как функция - возвращает массив имён выбранных для открытия файлов.
Т.о. в данном примере мы обретаем возможность работать непосредственно с диалогом проги (с предпросмотром...), а значит делать то, что заявлено в описании команды: "Диалог открытия файлов", т.е. выводить диалог.
И так почти все вызовы (где можно возвращать что-то осмысленное).
P.S. Смею напомнить, что раньше во внутренних командах вообще не было понятия Return Value.
Posted: Mon Aug 09, 2010 12:29 pm
by Fr0sT
VladSh
Ответ здесь:
Не-е-е, всё-таки есть разница, один раз при инициализации получить формат или дёргать при каждом вызове :-Р
Я собственно не только про дату предлагаю (обработку только даты - было бы бредово...) Это общая идея, т.е. чтобы, например последним параметом командовать как будет работать вызов, как процедура (как сейчас) или как функция, например:
Ууу, это вряд ли. Так небрежно с памятью вообще не стоит обращаться, а уж если предполагается передавать её плагинам или тем паче скриптам... это будет крайне нестабильная конструкция.
Posted: Mon Aug 09, 2010 8:50 pm
by KDJ
In the script
InsertText.js I added insert text in each of selected lines.
Posted: Tue Aug 10, 2010 1:25 am
by cnnnc
KDJ wrote:In the script
InsertText.js I added insert text in each of selected lines.
When InsertText.js do with column selection In each of Selected, the result same as normal selection.
When InsertText.js do with column selection In Selection, the result is diffterent to normal selection.
My
NumberCount.js can insert text and/or number to every selected line even column selection. but there are some bugs I unable to fix.
