Infocatcher wrote:Тогда кому-то придется придумывать человекопонятный формат и писать парсер.
Да, не проблема, раз уж я сам за это дело впрягся
Вставлю сюда ответ из лички по newFileTemplate.js.
----------
Infocatcher wrote:1. Заменил InputBox на выбор из меню.
Code: Select all
var ext = getSelectedMenuItem(POS_CURSOR) || regVal("lastExt");
Обычные меню так себя не ведут.
Если ничего не выбрано, то и делать ничего не надо.
Это я неуклюже хотел ничего не потерять из предыдущего варианта)))
Тогда так:
Code: Select all
var ext = getSelectedMenuItem(POS_CURSOR);
Infocatcher wrote:Мне с этими менюшками не нравится, что нельзя (?) задать какой-нибудь осмысленный невидимый параметр.
А мне бы хотелось чего-нибудь в духе
<menuitem label="JavaScript" value="js" />
<menuitem label="Выбрать расширение..." value="?" />
– чтобы пользователь видел label, а скрипт обрабатывал «понятное» value вместо идентификаторов в виде цифр.
Так что отдельно хранящиеся меню без таких вот дополнительных данных имеют довольно ограниченное применение.
В большинстве случаев (простой выбор типа ListBox) этого достаточно. Я уже это встроил в кучу своих скриптов.. - без каких бы то ни было проблем.
Вообще, зачем сейчас label "Выбрать расширение..."? Ведь оно выбирается из меню? Скрипт работает чётко, уже без этого.
Code: Select all
<menuitem label="JavaScript" value="js" />
Мне не нравится так это хранить - это неудобно пользователю.
Можно хранить так:
Code: Select all
js = JavaScript
? = Выбрать расширение...
Это уже более-менее... и привычно многим, - как будто обычный ini'шник.
Infocatcher wrote:Или нужно при создании меню из шаблона запоминать ассоциацию «label => value», но тогда нельзя делать пункты с одинаковыми названиями.
Подумаю, как это можно сделать, чтобы и функциональность настраивалась и было попроще. И чтобы этого ограничения не было.
Infocatcher wrote:2. Откорректировал применение шаблона подсветки/автодополнения.
Code: Select all
if(
ext
&& (
AkelPad.IsPluginRunning("Coder::HighLight")
|| AkelPad.IsPluginRunning("Coder::AutoComplete")
|| AkelPad.IsPluginRunning("Coder::CodeFold")
)
)
Тогда есть смысл проверять и остальные составляющие – AutoComplete и CodeFold:...
Я вначале так и делал, но так, как HighLight включен почти у всех, то чтобы применить шаблон достаточно включённого HighLight'а. Но вообще - это личное дело каждого))
Infocatcher wrote:Ну, и в данном случае нет особого смысла сравнивать возвращаемое значение «напрямую».
Не знаю почему, но некоторые функции раньше (при старом Scripts) не воспринимали результат без прямого сравнения с boolean... конечно может сейчас это неактуально.. надо пробовать)
----------
Infocatcher wrote:VladSh wrote:Наблюдение:...
Думается, это может зависеть от формата новой строки в читаемом файле. Но проверять лень.
Так что надежнее как-то так:
Code: Select all
var arrContent = strContent.split(/\r\n|\n|\r/);
У меня во всех файлах формат новой строки одинаков.
Хотя вариант интересный, т.к. он универсален. Спасибо!