Scripts discussion (1)

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

Post by VladSh »

Infocatcher wrote:Если честно, мне хотелось бы, чтобы изменения были внесены в SearchReplace.js, идущий вместе с дистрибутивом (ибо синхронизировать изменения при обновлениях оригинального скрипта как-то не радостно).
Эт точно.
Но, как мне кажется, лучше бы скрипты вообще убрать из дистрибутива, а выкладывать или в теме со скриптами (и там их корректировать; правда неудобно их тогда брать со страницы) или в отдельном паке. А может быть лучше как документацию - так удобно скачивать.

Infocatcher wrote:Т.е. в сухом остатке получаем, что нужно обрабатывать аргументы вида «...\filename.ext».
Если в кратце, то если я вызываю скрипт из списка свежих, то значит я хочу создать новый док на основе того, на котором клацнул right-click в списке свежих. Вся сложность заключается как раз в определении пункта подменюхи, т.е. конкретного файла на котором клацнули в списке свежих.
Как оно будет реализовано - не важно :) наоборот будет интересно посмотреть какой-нибудь новый способ :D Но на сколько я знаю, это сейчас позволяет сделать только параметр %f, переданный только как `"%f".


Спасибо!
Никогда не обращал внимание, что в replace, оказывается :), можно function передавать!
Покатал примеры, глянул примеры использования в SearchReplace_mod.js и всё стало понятно.
Это реально бомба! 8)


Upd: Ссылка на http://javascript.ru - клас! И ссылки, ведущие с той страницы, - тоже! 8)
Last edited by VladSh on Fri May 08, 2009 1:16 pm, edited 1 time in total.

Offline
Posts: 124
Joined: Tue Jun 03, 2008 10:32 pm

Post by Xephon »

Пожелания такие:
1. Вместо Edit-ов сделать ComboBox-ы, где будет отображаться история последних поисков. В идеале, чтобы количество строк истории было равно тому, которое задается в настройках для обычного диалога замены.

2. После нажатия на кнопку "Заменить все" выплывало бы сообщение с количеством проведенных замен.

3. Сделать масштабирование диалога под 120 dpi.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

VladSh wrote:Как оно будет реализовано - не важно :) наоборот будет интересно посмотреть какой-нибудь новый способ :D Но на сколько я знаю, это сейчас позволяет сделать только параметр %f, переданный только как `"%f".
А чем не нравится `"%f"` ?

newFileTemplate.js
Если в аргументах передать ссылку на файл, будет создан новый файл с содержимым старого.
За расширение теперь считаются любые символы, кроме точки, идущие после точки (забавно звучит, ага).

Xephon wrote:Пожелания такие:
1. Вместо Edit-ов сделать ComboBox-ы, где будет отображаться история последних поисков. В идеале, чтобы количество строк истории было равно тому, которое задается в настройках для обычного диалога замены.
Да, было бы очень удобно.
Но это Win API в контексте Script-плагина, я такое только по чужим примерам умею.
А теперь взялись и дружно трясем уважаемого Instructor'а. :)

Xephon wrote:2. После нажатия на кнопку "Заменить все" выплывало сообщение с количеством проведенных замен.
Лень вникать в логику работы, но если не обращать внимание на ухудшение быстродействия, то в районе

Code: Select all

else if (nButton == BT_REPLACEALL)
нужно делать что-то вроде

Code: Select all

pResult=pSelText.replace(oPattern, pReplaceWithEsc);
var m = pSelText.match(oPattern);
replaceCount += m ? m.length : 0;
И после отработки скрипта (когда будет разрешена перерисовка интерфейса – или что там делается? :)) выдавать количество замен.

Xephon wrote:3. Сделать масштабирование диалога под 120 dpi.
Гм, нужен некий множитель всех размеров на случай измененного размера шрифтов. :?

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

Post by VladSh »

Infocatcher wrote:А чем не нравится `"%f"`?

За расширение теперь считаются любые символы, кроме точки, идущие после точки.
Нравится - нравится! :D Всё работает!
Специально протестил - расширение определяется именно после ПОСЛЕДНЕЙ точки 8)


Чтобы не падало быстродействие, можно необходимость расчёта количества замен и вывода сообщения передавать параметром через Arguments)

Infocatcher wrote:А теперь взялись и дружно трясем уважаемого Instructor'а. :)
+1
Ещё и по поводу этого. Типа метод в Scripts-плагин, возвращающий установленное расширение файла.
:mrgreen:
Last edited by VladSh on Fri May 08, 2009 2:15 pm, edited 1 time in total.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Infocatcher wrote:И после отработки скрипта (когда будет разрешена перерисовка интерфейса – или что там делается? :)) выдавать количество замен.
Ага, вроде, работает:
SearchReplace_mod.js
[UPD]: выдавало пустое сообщение при отсутствии замен – исправил.

VladSh wrote:Специально протестил - расширение определяется именно после ПОСЛЕДНЕЙ точки 8)
Там только разрешенных символов стало больше, а после последней точки бралось и раньше.
Last edited by Infocatcher on Fri May 08, 2009 2:21 pm, edited 1 time in total.

Offline
Posts: 124
Joined: Tue Jun 03, 2008 10:32 pm

Post by Xephon »

Сделать комбобоксы и сохранение строк в историю я могу, но у меня не получается прочитать файл AkelPad.ini чтобы извлечь число строк истории. При вызове AkelPad.ReadFile редактор вылетает предлагая отправить сообщение об ошибке. Если бы вы написали как извлечь значение SearchStrings из файла, я бы мог сделать все остальное и добавить в ваш скрипт. Что скажете?

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Xephon wrote:Что скажете?
Скажу, что у меня на работе такой же глюк при чтении ini (я читал настройки HighLight) при включенном XBrackets.
Но сейчас у меня не воспроизводится.

И настройки могут лежать в реестре.

[UPD]
И не попросить ли добавить в плагин метод для чтения настроек редактора – они же уже все считаны на момент запуска скрипта, зачем зря ini дергать (хотя бы из соображений быстродействия). :)
Last edited by Infocatcher on Fri May 08, 2009 2:28 pm, edited 1 time in total.

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

Post by VladSh »

Infocatcher wrote:а после последней точки бралось и раньше.
вспоминается и лезется :) проверять когда внимание на этом сакцентировано)


Instructor
"По мотивам" просьбы Xephon - ещё 1 универсальный метод получения парамерты из ini'шников или реестра по наименованию :D Наименования параметров куда-нибудь в документацию.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

VladSh wrote:универсальный метод получения парамерты из ini'шников или реестра по наименованию :D
Ну вот, меня опередили. :D

Offline
Posts: 124
Joined: Tue Jun 03, 2008 10:32 pm

Post by Xephon »

И настройки могут лежать в реестре.
Чтение реестра выполняется в одну строчку и проблем не вызывает. Поэтому я не стал его упоминать. Понятно, что надо сначала проверить наличие файла ini и если он отсутствует, читать из реестра.

А в javascript нет встроенных способов чтения ini файлов?

И не попросить ли добавить в плагин метод для чтения настроек редактора – они же уже все считаны на момент запуска скрипта, зачем зря ini дергать (хотя бы из соображений быстродействия).
Мысль здравая, осталось Instructor-а уговорить.

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

Post by VladSh »

Xephon wrote:Понятно, что надо сначала проверить наличие файла ini и если он отсутствует, читать из реестра.
Файл может лежать на диске (остался с давних времён, со старой инфой), а в настройках установлено "работать с реестром" и прога при наличии ini реально работает с реестром.
Infocatcher wrote:метод для чтения настроек редактора – они же уже все считаны на момент запуска скрипта, зачем зря ini дергать (хотя бы из соображений быстродействия).
Вот это идея :!: 8)
+1!

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Xephon wrote:А в javascript нет встроенных способов чтения ini файлов?
В «чистом» – нету, он даже файлы читать не умеет.
В JScript (реализация от MS) + new ActiveXObject("someString") – вполне возможно, но я не в курсе.

А параметры можно читать примерно так:

Code: Select all

var ini = ...;
function getParamValue(name) {
	return new RegExp("(^|\\n|\\r)" + strToRegExp(name) + "=([^\\n\\r]*)(\\n|\\r|$)").test(ini)
		? RegExp.$2
		: null;
}
function strToRegExp(str) {
	return str
		.replace(/\\/g, "\\\")
		.replace(/\^/g, "\\^")
		.replace(/\$/g, "\\$")
		.replace(/\+/g, "\\+")
		.replace(/\*/g, "\\*")
		.replace(/\?/g, "\\?")
		.replace(/\(/g, "\\(")
		.replace(/\)/g, "\\)")
		.replace(/\[/g, "\\[")
		.replace(/\]/g, "\\]")
		.replace(/\{/g, "\\{")
		.replace(/\}/g, "\\}");
}
Или

Code: Select all

new RegExp("^" + strToRegExp(name) + "=([^\\n\\r]*)$", "m").test(ini)
и

Code: Select all

RegExp.$1
, но в Win 2000 такое не пройдет.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

SearchReplace_mod.js
Синхронизировал с обновленным SearchReplace.js...

Instructor, так что насчет включения изменений в «оригинальный» SearchReplace.js? Полезные же, по-моему, изменения. :)

P.S. Сравнение с оригинальным (по принципу «чтобы было» :)): SearchReplace_mod.htm, by WinMerge, (30 – 961) Кбайт (ибо gzip может не поддерживаться).

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

Post by VladSh »

Infocatcher, Xephon, FeyFre
Есть предположение, что Instructor не заходит в эту тему. И, соответственно, предложение: все наши последние идеи в скомпилированном виде засунуть одним постингом в тему Scripts plugin, а из неё дать ссылки сюда, на обсуждение.

Offline
Posts: 124
Joined: Tue Jun 03, 2008 10:32 pm

Post by Xephon »

Попробовать можно, но я думаю дело совсем не в том, что Instructor не читает тему.
Locked