Page 8 of 97
Posted: Fri May 08, 2009 12:06 pm
by VladSh
Infocatcher wrote:Если честно, мне хотелось бы, чтобы изменения были внесены в SearchReplace.js, идущий вместе с дистрибутивом (ибо синхронизировать изменения при обновлениях оригинального скрипта как-то не радостно).
Эт точно.
Но, как мне кажется, лучше бы скрипты вообще убрать из дистрибутива, а выкладывать или в теме со скриптами (и там их корректировать; правда неудобно их тогда брать со страницы) или в отдельном паке. А может быть лучше как
документацию - так удобно скачивать.
Infocatcher wrote:Т.е. в сухом остатке получаем, что нужно обрабатывать аргументы вида «...\filename.ext».
Если в кратце, то если я вызываю скрипт из списка свежих, то значит я хочу создать новый док на основе того, на котором клацнул right-click в списке свежих. Вся сложность заключается как раз в определении пункта подменюхи, т.е. конкретного файла на котором клацнули в списке свежих.
Как оно будет реализовано - не важно

наоборот будет интересно посмотреть какой-нибудь новый способ

Но на сколько я знаю, это сейчас позволяет сделать только параметр
%f, переданный только как `"%f".
Спасибо!
Никогда не обращал внимание, что в
replace, оказывается

, можно
function передавать!
Покатал примеры, глянул примеры использования в
SearchReplace_mod.js и всё стало понятно.
Это реально бомба!
Upd: Ссылка на
http://javascript.ru - клас! И ссылки, ведущие с той страницы, - тоже!

Posted: Fri May 08, 2009 1:10 pm
by Xephon
Пожелания такие:
1. Вместо Edit-ов сделать ComboBox-ы, где будет отображаться история последних поисков. В идеале, чтобы количество строк истории было равно тому, которое задается в настройках для обычного диалога замены.
2. После нажатия на кнопку "Заменить все" выплывало бы сообщение с количеством проведенных замен.
3. Сделать масштабирование диалога под 120 dpi.
Posted: Fri May 08, 2009 1:41 pm
by Infocatcher
VladSh wrote:Как оно будет реализовано - не важно

наоборот будет интересно посмотреть какой-нибудь новый способ

Но на сколько я знаю, это сейчас позволяет сделать только параметр
%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.
Гм, нужен некий множитель всех размеров на случай измененного размера шрифтов.

Posted: Fri May 08, 2009 2:00 pm
by VladSh
Infocatcher wrote:А чем не нравится `"%f"`?
За расширение теперь считаются любые символы, кроме точки, идущие после точки.
Нравится - нравится!

Всё работает!
Специально протестил - расширение определяется именно после ПОСЛЕДНЕЙ точки
Чтобы не падало быстродействие, можно необходимость расчёта количества замен и вывода сообщения передавать параметром через Arguments)
Infocatcher wrote:А теперь взялись и дружно трясем уважаемого
Instructor'а.

+1
Ещё и по поводу
этого. Типа метод в Scripts-плагин, возвращающий установленное расширение файла.

Posted: Fri May 08, 2009 2:14 pm
by Infocatcher
Infocatcher wrote:И после отработки скрипта (когда будет разрешена перерисовка интерфейса – или что там делается?

) выдавать количество замен.
Ага, вроде, работает:
SearchReplace_mod.js
[UPD]: выдавало пустое сообщение при отсутствии замен – исправил.
VladSh wrote:Специально протестил - расширение определяется именно после ПОСЛЕДНЕЙ точки
Там только разрешенных символов стало больше, а после последней точки бралось и раньше.
Posted: Fri May 08, 2009 2:15 pm
by Xephon
Сделать комбобоксы и сохранение строк в историю я могу, но у меня не получается прочитать файл AkelPad.ini чтобы извлечь число строк истории. При вызове AkelPad.ReadFile редактор вылетает предлагая отправить сообщение об ошибке. Если бы вы написали как извлечь значение SearchStrings из файла, я бы мог сделать все остальное и добавить в ваш скрипт. Что скажете?
Posted: Fri May 08, 2009 2:24 pm
by Infocatcher
Xephon wrote:Что скажете?
Скажу, что у меня на работе такой же глюк при чтении ini (я читал настройки HighLight) при включенном XBrackets.
Но сейчас у меня не воспроизводится.
И настройки могут лежать в реестре.
[UPD]
И не попросить ли добавить в плагин метод для чтения настроек редактора – они же уже все считаны на момент запуска скрипта, зачем зря ini дергать (хотя бы из соображений быстродействия).

Posted: Fri May 08, 2009 2:27 pm
by VladSh
Infocatcher wrote:а после последней точки бралось и раньше.
вспоминается и лезется

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

Наименования параметров куда-нибудь в документацию.
Posted: Fri May 08, 2009 2:30 pm
by Infocatcher
VladSh wrote:универсальный метод получения парамерты из ini'шников или реестра по наименованию
Ну вот, меня опередили.

Posted: Fri May 08, 2009 2:32 pm
by Xephon
И настройки могут лежать в реестре.
Чтение реестра выполняется в одну строчку и проблем не вызывает. Поэтому я не стал его упоминать. Понятно, что надо сначала проверить наличие файла ini и если он отсутствует, читать из реестра.
А в javascript нет встроенных способов чтения ini файлов?
И не попросить ли добавить в плагин метод для чтения настроек редактора – они же уже все считаны на момент запуска скрипта, зачем зря ini дергать (хотя бы из соображений быстродействия).
Мысль здравая, осталось
Instructor-а уговорить.
Posted: Fri May 08, 2009 2:40 pm
by VladSh
Xephon wrote:Понятно, что надо сначала проверить наличие файла ini и если он отсутствует, читать из реестра.
Файл может лежать на диске (остался с давних времён, со старой инфой), а в настройках установлено "работать с реестром" и прога при наличии ini реально работает с реестром.
Infocatcher wrote:метод для чтения настроек редактора – они же уже все считаны на момент запуска скрипта, зачем зря ini дергать (хотя бы из соображений быстродействия).
Вот это идея
+1!
Posted: Fri May 08, 2009 3:58 pm
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)
и
, но в Win 2000 такое не пройдет.
Posted: Sun May 17, 2009 2:20 pm
by Infocatcher
SearchReplace_mod.js
Синхронизировал с обновленным SearchReplace.js...
Instructor, так что насчет включения изменений в «оригинальный» SearchReplace.js? Полезные же, по-моему, изменения.
P.S. Сравнение с оригинальным (по принципу «чтобы было»

):
SearchReplace_mod.htm, by
WinMerge, (30 – 961) Кбайт (ибо gzip может не поддерживаться).
Posted: Tue May 19, 2009 8:00 am
by VladSh
Infocatcher,
Xephon,
FeyFre
Есть предположение, что
Instructor не заходит в эту тему. И, соответственно, предложение: все наши последние идеи в скомпилированном виде засунуть одним постингом в тему
Scripts plugin, а из неё дать ссылки сюда, на обсуждение.
Posted: Tue May 19, 2009 4:50 pm
by Xephon
Попробовать можно, но я думаю дело совсем не в том, что Instructor не читает тему.