Scripts discussion (1)
- Author
- Message
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Fr0sT
Слишком длинно получается.
И большие буквы в заглавии переменных ухудшают читабельность кода. Да и символ подчёркивания тоже.. лучше его использовать в исключительных случаях; у меня есть свои стандарты (это старый стандарт, раздел 3) наименований, где подчёркивания использовались, но я теперь ухожу от этого.
Слишком длинно получается.
И большие буквы в заглавии переменных ухудшают читабельность кода. Да и символ подчёркивания тоже.. лучше его использовать в исключительных случаях; у меня есть свои стандарты (это старый стандарт, раздел 3) наименований, где подчёркивания использовались, но я теперь ухожу от этого.
Last edited by VladSh on Sat Aug 07, 2010 10:05 am, edited 1 time in total.
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
Check the new script InsertText.js.
I used in this script functions from the script LinesFilter.js written by Instructor.
I used in this script functions from the script LinesFilter.js written by Instructor.
-
Offline
- Posts: 120
- Joined: Sat Jan 12, 2008 10:16 am
- Location: Shantou, China
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).KDJ wrote:Check the new script InsertText.js.
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.
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Сразу не сообразил..FeyFre wrote:Очень и очень не рекомендовано запрашивать/отправлять данные размером больше машинного слова через WM_COMMAND(как и через многие другие), ибо междупроцессный барьер, и автоматического маршалинга для этого сообщения не выполняется.
Во-1, ведь с помощью SendMessage можно вернуть формат даты из настроек? И он будет той же длины, что и дата..
Во-2, я ж и предлагаю для возвращения даты отказаться от WM_COMMAND (273), а использовать 0, т.е:
Code: Select all
var pDate = AkelPad.SendMessage(AkelPad.GetMainWnd(), 0, 4183, 0);
-
Offline
- Posts: 2248
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
С помощью SendMessage можно послать сообщение конкретному окну. Т.е. оно сначала станет в системную очередь сообщение, потом в очередь сообщений потока-владельца целевого окна(при этом если сообщение системное - отмаршалятся параметры сообщения если это предусмотренно сообщением), потом усли поток владелец пожелает его обработать то направит его дальше по цепочке, потом сработают туевая хуча хуков которые могут изменить сообщение(сделать код сообщения 0), отбросить его, перенаправить другому окну, и аж потом сообщение попадает в процедуру обработчик, обрабатывается, и результат ползет по похожей цепочке назад.Во-1, ведь с помощью SendMessage можно вернуть формат даты из настроек? И он будет той же длины, что и дата..
Читаем книжку о сообщении номер 0Во-2, я ж и предлагаю для возвращения даты отказаться от WM_COMMAND (273), а использовать 0, т.е:
Читаем книжку о собственных сообщениях
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
FeyFre
Про 0, может, я и не прав. Да и там хренова туча других номеров есть, вот например:
Здесь главное идея. Сделать можно, было бы желание. В крайнем случае можно использовать последний параметр, который специально зарезервирован для разных целей.
Про 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)
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
I completed the script for handling "ESC sequences" (new line and tabulation).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).KDJ wrote:Check the new script InsertText.js.
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
Влад
Насчет даты: а разве её нельзя получить стандартным путём получения настроек (тут недавно мелькало) через Openini, Loadsection и так далее? Думаю, можно. А дефолтный системный формат берется из GetLocaleFormatSettings, или как-то вроде того функция называется.
ну так либо длинные имена, либо шанс пересечься с другими переменными... можешь типа венгерской нотации применить, sclVarName.Слишком длинно получается.
Насчет даты: а разве её нельзя получить стандартным путём получения настроек (тут недавно мелькало) через Openini, Loadsection и так далее? Думаю, можно. А дефолтный системный формат берется из GetLocaleFormatSettings, или как-то вроде того функция называется.
-
Offline
- Posts: 2248
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Fr0sT
Нельзя, ибо перечисленное АПИ работает с указанным ini-файлом. В случае АкелПад, ini-файла может и не быть(если настройки хранятся в реестре). Так что, что-бы узнать спросить настройки АкелПад-а нужно их спрашивать у него самого, а не читать с хранилища(настройки в хранилище сбрасываются во время завершения редактора, т.е. если пользователь их менял, то в ini-файле/реестре они ещё не изменились)Насчет даты: а разве её нельзя получить стандартным путём получения настроек (тут недавно мелькало) через Openini, Loadsection и так далее?
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
In the script InsertText.js I added memorization of texts in the registry by using ComboBox.
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Ответ здесь: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.
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
VladSh
Не-е-е, всё-таки есть разница, один раз при инициализации получить формат или дёргать при каждом вызове :-РОтвет здесь:
Ууу, это вряд ли. Так небрежно с памятью вообще не стоит обращаться, а уж если предполагается передавать её плагинам или тем паче скриптам... это будет крайне нестабильная конструкция.Я собственно не только про дату предлагаю (обработку только даты - было бы бредово...) Это общая идея, т.е. чтобы, например последним параметом командовать как будет работать вызов, как процедура (как сейчас) или как функция, например:
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
In the script InsertText.js I added insert text in each of selected lines.
-
Offline
- Posts: 120
- Joined: Sat Jan 12, 2008 10:16 am
- Location: Shantou, China
When InsertText.js do with column selection In each of Selected, the result same as normal selection.KDJ wrote:In the script InsertText.js I added insert text in each of selected lines.
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.
