Scripts discussion (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Подскажите пожалуйста, как на скрипте узнать какое "правило" подсветки/автодополнения было применено к текущему файлу?

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

VladSh
Сейчас никак. Scripts может взаимодействовать с плагинами не круче чем ContextMenu, ToolBar, HotKeys, т.е. только вызвать с дополнительными параметрами. Что-то вернуть пока не может. Разве что что-то в буфере обмена оставит(кстати, можете попросить Инструктора что-бы добавил такую подфункцию). Мне, например, не помешала бы возможность программно вызвать ContextMenu(из SpellCheck) со списком дополнительных пунктов, и что-бы он вернул мне выбор из этого списка(если таков есть).

Offline
Posts: 98
Joined: Thu Jul 03, 2008 7:23 pm

Post by Tony »

FeyFre
При открытии скрипта "zen_wrapwithabbreviation" появляется окно, при сорачивании которго сворачивается и программа. При разворачивании AkelPad'а окно скрипта нормально отображается, а окно AkelPad'a неправельно. В скриптах LinesFilter, RenameFile, SearchReplace этого непроисходит.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Tony
Фикс готов.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

FeyFre wrote:(кстати, можете попросить Инструктора что-бы добавил такую подфункцию). Мне, например, не помешала бы возможность программно вызвать ContextMenu(из SpellCheck) со списком дополнительных пунктов, и что-бы он вернул мне выбор из этого списка(если таков есть).
А чего сами не попросите? :)

Я уже прошу это 2 года.
Меню, о котором Вы говорите, - это частный случай - выбор только одного значения из списка.

Пока что мы имеем ShowMenu.js из дистрибутива плагина, но его не совсем удобно, вернее идеологически неправильно, использовать, т.к. данные должны сохраняться ВНЕ скрипта (в виде списка, как в ini), чтобы их мог корректировать любой пользователь, не боясь задеть скрипт! Я хотел переделать его, сделать более универсальным, спрашивал, как это сделать, но мне так никто и не ответил...

Но всё же считаю, что это должен быть не скрипт, а именно встроенная функция, принимающая массив.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post 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]];

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

А чего сами не попросите?
Попрошу когда буду считать нужным и возможным.
спрашивал, как это сделать, но мне так никто и не ответил...
Может я и идиот, но помоему AkelPad.ReadFile() может прочитать любой текстовый файл. А в скрипте его распарсить можно любым известным вам способом: от написания парсера в лоб, до трёх-этажных регулярных выражений. Чего же тут сложного?

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

FeyFre
Никто не идиот :)
Просто смешивать данные с кодом это ещё хуже, чем смешивать бизнеслогику с интерфейсом. В идеале данные должны быть в отдельном файле, чтобы любой ОБЫЧНЫЙ пользователь мог преспокойно менять данные, не боясь что-то зацепить.

Пример: файл с типами файлов для диалога создания и других меню:

Code: Select all

JS
LSS
VBS
По такому же принципу должно быть построено всё.
Ещё пример: пользователь часто вводит какое-то команды для какого-то скрипта исполнения (стараться особо не буду выдумывая команды):

Code: Select all

cmd
regedit
msconfig
так вто это должны быть просто команды, чтобы пользователь зашёл и добавил то, что он хочет, а не занимался в скрипте каждый раз "распарсиванием", т.е. должен быть общий механизм, который вызывает такие файлы и налету создаёт меню для выбора.
Чтобы унифицировать это, я предлагал в папке Scripts создать папку Params, а в ней либо файлы с именем скрипта (допустим MyScript.param) или папку по названию скрипта (когда у одного скрипта может быть несколько файлов), так мы и сделали для newFileTemplate. Вот так должно быть унифицировано всё. Но только надо написать общий механизм формирования меню, а затем уже дёргать ShowMenu.js, а по наименованию текущего скрипта меню будет само формироваться...

Спасибо за код :!: 8)

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Наблюдение:
- для скрипта, который получает текст из выделения методом GetSelText(), преобразование содержимого в массив строк производится так:
var arrContent = strContent.split('\r');
- для скрипта, который получает текст путём чтения другого файла методом ReadFile(), преобразование содержимого в массив строк производится так:
var arrContent = strContent.split('\r\n');

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Коллеги, подскажите! :)
Как из скрипта определить, был ли он вызван по комбинации клавиш или кликом мыши?

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

VladSh
Никак :)
Как определить почему кусок железа тёплое: его на огне/солнце держали, или по нему кувалдой долбанули?

Если так нужно - добавьте доп. параметр, и ставьте его разным при разных вызовах.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

FeyFre
Из скрипта я могу узнать, какой скрипт его вызвал (какой был запущен изначально). По идее почему бы не определять что инициировало запуск скрипта: ContextMenu, Hotkeys или просто Scripts? Ведь эта информация есть у редактора, и даже какой скриптовый файл был запущен.

Я всё же думаю, что можно, только не знаю как...

Про параметр знаю, сам так делал, но это как-то не элегантно... :)

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Ведь эта информация есть у редактора, и даже какой скриптовый файл был запущен.
Я всё же думаю, что можно, только не знаю как...
Метода, как взять эту информацию нету. Ждите ответа Инструктора если не верите мне.
Про параметр знаю, сам так делал, но это как-то не элегантно...
Когда задача делается только однояко, то вопрос об элегантности обычно не поднимают. :P

Offline
Posts: 98
Joined: Thu Jul 03, 2008 7:23 pm

Post by Tony »

se7h
Данный скрипт "LanguageHelp" работает немного неправильно, упращённо. И поэтому поддерживаются далеко не все CHM документации (например по PHP). Правильно былол бы указывать ключевое слово для поиска в разделе "Указатель". Возможно такое реализовать?

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Method AkelPad.GetSelText()

Post 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.
Locked