Диалог поиска/замены

Russian main discussion
  • Author
  • Message
Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Instructor wrote:Назначьте свой с помощью Resource Hacker'а.
IMHO не юзабельно - при таком подходе AkelPad о5-таки расчитан не на обычных пользователей, а на программеров :(

Лучше в проге сделать общий редактор комбинаций клавиш, например, на основе Hotkeys-плагина. Чтобы при первом открытии в нём отображались комбинации клавиш, назначенные в самой проге, но чтобы их можно было переопределять, а также комбинации клавиш для плагов, скриптов, макросов.
Если будет такая возможность, то очень красиво можно будет сделать проверку и предупреждения типа: "а-а-а!.. такая комбинация клавиш уже есть там-то и там-то, вы действительно хотите её переназначить!?" :D
Общий редактор - было бы здорово! 8)

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

Проблему с "Заменить всё" решил через редактирование ресурсов:

Code: Select all

 PUSHBUTTON "&Заменить", 3061, 196, 6, 54, 14, BS_CENTER
 DEFPUSHBUTTON "Заменить &всё¸", 3051, 196, 23, 54, 14, BS_CENTER
 PUSHBUTTON "&Найти далее", 3056, 196, 39, 54, 14, BS_CENTER
Image

Теперь "Заменить всё" срабатывает сразу по Enter-y, кроме того, более используемые кнопки вытащены выше. Поглядим, как оно себя проявит...

Насчёт выделения задача остаётся!

Offline
Posts: 3
Joined: Sun May 03, 2009 5:44 am

Post by Spumups »

Было бы хорошо, если бы при открытом (но не активном) окне поиск/замена при нажати Ctrl+F/R фокус ввода вертался к нему, а то все время мышку дергать приходится :(.

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

Post by Instructor »

Spumups
Способ 1 - F6
Способ 2 - см. плагин QSearch::DialogSwitcher

Offline
Posts: 3
Joined: Sun May 03, 2009 5:44 am

Post by Spumups »

Instructor wrote:Spumups
Способ 1 - F6
Способ 2 - см. плагин QSearch::DialogSwitcher
спасибо! Способ 2, полностью удовлетворяет :)

Offline
Posts: 4
Joined: Fri Nov 17, 2006 12:43 pm

Post by vitt »

В чём смысл (как пользоваться ) вариантом или где посмотреть о "Заменять на функцию" в SearchRepalce.js ?
Видел:
Добавлена «замена на функцию».
Реализует Code:
.replace(
new RegExp("what", "flags"),
new Function("with")
)
Но, не понял :(

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

Post by Infocatcher »

vitt
Смысл в том, что функция, на которую производится замена, вычисляется при каждой замене. Соответственно, она может возвращать строку, зависящую от конкретного заменяемого текста.

Например,
Что: [^\n\r]+
Чем: return "(" + $0.length + ") " + $0;

добавит перед каждой непустой строкой количество символов в этой строке.

Offline
Posts: 4
Joined: Fri Nov 17, 2006 12:43 pm

Post by vitt »

Infocatcher wrote:vitt
Смысл в том, что функция, на которую производится замена, вычисляется при каждой замене. Соответственно, она может возвращать строку, зависящую от конкретного заменяемого текста.
Спасибо. Можете подсказать где посмотреть перечень свойств текста и других доступных объектов?

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

Post by Infocatcher »

vitt wrote:Спасибо. Можете подсказать где посмотреть перечень свойств текста и других доступных объектов?
Слишком общий вопрос. :)

На русском, пожалуй, лучше всего написано здесь: http://javascript.ru/String (а также прочие статьи).
А из английского предпочитаю MDC. Правда, с оговоркой на то, что AkelPad использует встроенную в Windows реализацию ECMAScript, т.е. JScript, а не JavaScript. Так что в этом плане можно и на MSDN заглянуть.

Offline
Posts: 4
Joined: Fri Nov 17, 2006 12:43 pm

Post by vitt »

Infocatcher wrote: Слишком общий вопрос. :)
Спасибо. Теперь ясно в какую сторону копать :)

Offline
Posts: 11
Joined: Sun Nov 07, 2010 12:40 pm

Post by DukeNukem »

В окне Замены некоторые специальные символы на самом деле такими не являются. Предлагаю оставить только символы:
^p Знак абзаца
^t Знак табуляции
а их условное обозначение выполнить как сверху, это стандартное обозначение этих спец. символов в MSWord.
А: \\-обратный слэш (он есть на клавиатуре). \n - конец строки (AkelPad такого символа вобще ни разу не нашёл) специальными символами вобще не являются.
Также можно добавить ещё какие-нибудь символы которые можно подсмотреть в окне замены MSWord 2003 и др. версий.

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

DukeNukem wrote:В окне Замены некоторые специальные символы на самом деле такими не являются.
Святые угодники!..
"Что Ви чушь несёте? Танцуйте чечётку!" (с)
Там же написано "Esc-последовательности", а не "специальные символы". А для esc-последовательностей "\n" является общепринятым знаком переноса строки (NewLine), "\t" - общепринятый знак табуляции (TAB), а "\" двоится потому, что одинарный '\' используется для обозначения начала esc-символа. И, на самом деле (Капитан Очевидность утверждает!), AkelPad корректно ищет и заменяет "\n" при установленной галочке "Esc-последовательности".
А вот как раз что такое "^p", без ста грамм не разобраться. Из своего опыта я сказал бы, что это означает комбинацию клавиш Ctrl+p, потому что именно это означает подобное написание в большинстве кросс-платформенных программ.

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

Post by VladSh »

Когда жмёшь Ctrl+R, и в поле "Что" подхватывается выделение, то в диалоге оно выделено.
Хотелось бы, чтобы выделение подхватывалось, но при открытии диалога было бы подсвечено значение поля "Чем", т.к. если мы выделяем текст и жмём Ctrl+R, то в большинстве именно этот текст мы хотим заменить на что-то, т.е. подсвечивать в диалоге его не нужно. Неудобство и в том, что постоянно приходится мышью переключаться в поле "Чем" и корректировать текст там (чаще всего это текст, вставляемый из буфера обмена), т.е. было бы здорово вот так:
- скопировал текст, на который будем менять, в буфер;
- выделил заменяемый текст и вызвал диалог;
- никуда не переводя курсор сразу же сделал вставку из буфера и запустил замену.

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

Post by Instructor »

VladSh
Два способа:
1. Правим ресурсы - меняя очередность прохода по элементам диалога.
2. Используем SearchReplace.js и меняем

Code: Select all

oSys.Call("user32::SetFocus", hWndWhat);
на

Code: Select all

oSys.Call("user32::SetFocus", hWndWith);

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

Post by VladSh »

Instructor
Оба способа бесперспективны, т.к. впоследствии это придётся делать при каждом изменении проги/скрипта.
Лучше было бы включить это в стандартный диалог редактора (не всегда, а только тогда, когда выделенный текст подхватывается) или эта просьба "конфликтует" с текущими "приёмами работы"? Если да, то можно ли ожидать, что хотя бы в стандартном SearchReplace.js будет это изменение?
Post Reply