Page 18 of 97
Posted: Fri Jul 16, 2010 11:40 am
by VladSh
Подскажите пожалуйста, как на скрипте узнать какое "правило" подсветки/автодополнения было применено к текущему файлу?
Posted: Fri Jul 16, 2010 12:44 pm
by FeyFre
VladSh
Сейчас никак. Scripts может взаимодействовать с плагинами не круче чем ContextMenu, ToolBar, HotKeys, т.е. только вызвать с дополнительными параметрами. Что-то вернуть пока не может. Разве что что-то в буфере обмена оставит(кстати, можете попросить Инструктора что-бы добавил такую подфункцию). Мне, например, не помешала бы возможность программно вызвать ContextMenu(из SpellCheck) со списком дополнительных пунктов, и что-бы он вернул мне выбор из этого списка(если таков есть).
Posted: Fri Jul 16, 2010 12:46 pm
by Tony
FeyFre
При открытии скрипта "zen_wrapwithabbreviation" появляется окно, при сорачивании которго сворачивается и программа. При разворачивании AkelPad'а окно скрипта нормально отображается, а окно AkelPad'a неправельно. В скриптах LinesFilter, RenameFile, SearchReplace этого непроисходит.
Posted: Fri Jul 16, 2010 1:12 pm
by FeyFre
Tony
Фикс готов.
Posted: Fri Jul 16, 2010 2:23 pm
by VladSh
FeyFre wrote:(кстати, можете попросить Инструктора что-бы добавил такую подфункцию). Мне, например, не помешала бы возможность программно вызвать ContextMenu(из SpellCheck) со списком дополнительных пунктов, и что-бы он вернул мне выбор из этого списка(если таков есть).
А чего сами не попросите?
Я уже
прошу это 2 года.
Меню, о котором Вы говорите, - это частный случай - выбор только одного значения из списка.
Пока что мы имеем ShowMenu.js из дистрибутива плагина, но его
не совсем удобно, вернее идеологически неправильно, использовать, т.к. данные должны сохраняться ВНЕ скрипта (в виде списка, как в ini), чтобы их мог корректировать любой пользователь, не боясь задеть скрипт! Я хотел переделать его, сделать более универсальным,
спрашивал, как это сделать, но мне так никто и не ответил...
Но всё же считаю, что это должен быть не скрипт, а именно встроенная функция, принимающая массив.
Posted: Fri Jul 16, 2010 2:39 pm
by Instructor
VladSh wrote:Я хотел переделать его, сделать более универсальным,
спрашивал, как это сделать, но мне так никто и не ответил...
Так?
Code: Select all
var lpItems=[];
var nItem;
var lpArrayName=new Array("JS", "LSS", "VBS");
var lpArrayExt=new Array("js", "lss", "vbs");
for (nItem=0; nItem < lpArrayName.length; ++nItem)
lpItems[nItem]=[lpArrayName[nItem], MF_NORMAL, lpArrayExt[nItem]];
Posted: Fri Jul 16, 2010 2:46 pm
by FeyFre
А чего сами не попросите?
Попрошу когда буду считать нужным и возможным.
спрашивал, как это сделать, но мне так никто и не ответил...
Может я и идиот, но помоему AkelPad.ReadFile() может прочитать любой текстовый файл. А в скрипте его распарсить можно любым известным вам способом: от написания парсера в лоб, до трёх-этажных регулярных выражений. Чего же тут сложного?
Posted: Fri Jul 16, 2010 4:05 pm
by VladSh
FeyFre
Никто не идиот

Просто смешивать данные с кодом это ещё хуже, чем смешивать бизнеслогику с интерфейсом. В идеале данные должны быть в отдельном файле, чтобы любой ОБЫЧНЫЙ пользователь мог преспокойно менять данные, не боясь что-то зацепить.
Пример: файл с типами файлов для диалога создания и других меню:
По такому же принципу должно быть построено всё.
Ещё пример: пользователь часто вводит какое-то команды для какого-то скрипта исполнения (стараться особо не буду выдумывая команды):
так вто это должны быть просто команды, чтобы пользователь зашёл и добавил то, что он хочет, а не занимался в скрипте каждый раз "распарсиванием", т.е. должен быть общий механизм, который вызывает такие файлы и налету создаёт меню для выбора.
Чтобы унифицировать это, я предлагал в папке Scripts создать папку Params, а в ней либо файлы с именем скрипта (допустим MyScript.param) или папку по названию скрипта (когда у одного скрипта может быть несколько файлов), так мы и сделали для newFileTemplate. Вот так должно быть унифицировано всё. Но только надо написать общий механизм формирования меню, а затем уже дёргать ShowMenu.js, а по наименованию текущего скрипта меню будет само формироваться...
Спасибо за код

Posted: Sat Jul 17, 2010 12:25 pm
by VladSh
Наблюдение:
- для скрипта, который получает текст из выделения методом GetSelText(), преобразование содержимого в массив строк производится так:
var arrContent = strContent.split('\r');
- для скрипта, который получает текст путём чтения другого файла методом ReadFile(), преобразование содержимого в массив строк производится так:
var arrContent = strContent.split('\r\n');
Posted: Sat Jul 17, 2010 1:52 pm
by VladSh
Коллеги, подскажите!

Как из скрипта определить, был ли он вызван по комбинации клавиш или кликом мыши?
Posted: Sun Jul 18, 2010 5:20 am
by FeyFre
VladSh
Никак

Как определить почему кусок железа тёплое: его на огне/солнце держали, или по нему кувалдой долбанули?
Если так нужно - добавьте доп. параметр, и ставьте его разным при разных вызовах.
Posted: Sun Jul 18, 2010 7:24 am
by VladSh
FeyFre
Из скрипта я могу узнать, какой скрипт его вызвал (какой был запущен изначально). По идее почему бы не определять что инициировало запуск скрипта: ContextMenu, Hotkeys или просто Scripts? Ведь эта информация есть у редактора, и даже какой скриптовый файл был запущен.
Я всё же думаю, что можно, только не знаю как...
Про параметр знаю, сам так делал, но это как-то не элегантно...

Posted: Sun Jul 18, 2010 9:24 am
by FeyFre
Ведь эта информация есть у редактора, и даже какой скриптовый файл был запущен.
Я всё же думаю, что можно, только не знаю как...
Метода, как взять эту информацию нету. Ждите ответа Инструктора если не верите мне.
Про параметр знаю, сам так делал, но это как-то не элегантно...
Когда задача делается только однояко, то вопрос об элегантности обычно не поднимают.

Posted: Sun Jul 18, 2010 9:42 am
by Tony
se7h
Данный скрипт "LanguageHelp" работает немного неправильно, упращённо. И поэтому поддерживаются далеко не все CHM документации (например по PHP). Правильно былол бы указывать ключевое слово для поиска в разделе "Указатель". Возможно такое реализовать?
Method AkelPad.GetSelText()
Posted: Sun Jul 18, 2010 12:19 pm
by KDJ
I have a question.
What do the different arguments in the method AkelPad.GetSelText()?
What is the difference obtained strings?
GetSelText([nNewLine]);
Arguments
nNewLine (only for AkelPad 4.x.x)
1 //"\r" new line (default).
2 //"\n" new line.
3 //"\r\n" new line.
Return Value
String. Selected text.