--------------------------------------------------------------- QSearch - плагин для текстового редактора AkelPad --------------------------------------------------------------- Плагин представляет собой панель для "быстрого" поиска текста. Предполагается, что для вызова функции плагина (QSearch::QSearch) будет назначена горячая клавиша (например, F7). Клавиши диалога быстрого поиска: Enter, F3 - искать следующий (вниз) Shift+Enter - искать предыдущий (вверх) Ctrl+Enter - искать с начала файла Alt+Enter - подхватить выделенный текст Esc - закрыть диалог Ctrl+Del - строка поиска: стереть текст после (правее) каретки Ctrl+BS - строка поиска: стереть текст до (левее) каретки Ctrl+A - строка поиска: выделить весь текст Также плагин предоставляет две функции: SelFindNext и SelFindPrev - для быстрого поиска выделенного слова/фразы ниже или выше по тексту прямо в окне редактирования. Поведение этих функций зависит от общих настроек поиска, заданных в панели QSearch (или в ini-файле, см. ниже). При этом функции QSearch::QSearch и QSearch::SelFindNext/Prev могут искать разный текст (QSearch::QSearch - текст в строке поиска, а QSearch::SelFindNext/Prev - текст, выделенный в окне редактирования). Предполагается, что для вызова этих функций будут назначены горячие клавиши (например, Ctrl+Alt+Right и Ctrl+Alt+Left). Пример использования: выделяем слово в окне редактирования и вызываем SelFindNext или SelFindPrev. В результате выделение переходит к следующему или предыдущему слову, совпадающему с выделенным изначально. Функция DialogSwitcher позволяет переключаться между диалогами "Поиск", "Замена", "Перейти к строке" и диалогом QSearch с помощью "горячих клавиш" этих диалогов. Например, если нажать Ctrl+H в диалоге "Поиск", он изменится на диалог "Замена". При использовании функции DialogSwitcher рекомендуется поставить галочку для её автоматической загрузки в окне настроек плагинов. Дополнительные настройки (всплывающее меню панели QSearch или файл "AkelFiles\Plugs\QSearch.ini"): 1) "Search: On-the-fly mode" "Поиск: Искать на лету" srch_onthefly_mode = 1 Поиск производится непосредственно во время набора текста в строке поиска QSearch. Активация этой настройки отключает srch_use_specialchars. srch_onthefly_mode = 0 Поиск производится только по нажатию Enter. 2) "Search: Always from beginning" "Поиск: Всегда с начала" srch_from_beginning = 0 При изменении слова в строке поиска он (поиск) будет продолжен с текущей позиции в файле. srch_from_beginning = 1 Введенный текст будет искаться с начала файла. 3) "Search: Use special characters ( \n, \t, * and ? )" "Поиск: Использовать спец. символы ( \n, \t, * и ? )" srch_use_specialchars = 1 В строке поиска могут использоваться спец. символы. Активация этой настройки отключает srch_onthefly_mode. \n - перевод строки \t - табуляция \\ - обратный слэш ( '\' ) \* - звёздочка ( '*' ) \? - знак вопроса ( '?' ) ? - любой символ ( например, 'b', '0', ' ' и т.д. ) * - 0 или больше любых символов (т.e. любая (под)строка) ** - 0 или больше любых непробельных символов ("Слово целиком" вкл.) Примечание: ? и * не работают с переводом строки, \n должен быть указан явно. srch_use_specialchars = 0 Обычный поиск, без спец. символов. 4) "Search: Pick up selected text" "Поиск: Подхватывать выделенный текст" srch_pickup_selection = 1 При вызове QSearch или при нажатии F3 в окне редактирования AkelPad, в строку поиска QSearch вставляется текст, выделенный в окне редактирования AkelPad. srch_pickup_selection = 0 При вызове QSearch, текст в строке поиска не изменяется. 5) "Search: SelFind picks up selected text" "Поиск: SelFind подхватывает выделенный текст" srch_selfind_pickup = 0 Вызов SelFindNext или SelFindPrev не меняет текст в строке поиска панели QSearch. srch_selfind_pickup = 1 Вызов SelFindNext или SelFindPrev вставляет в строку поиска панели QSearch текст, выделенный в окне редактирования AkelPad. 6) "Search: Stop at EOF (end of file)" "Поиск: Останавливаться в конце файла" srch_stop_eof = 0 При достижении конца файла поиск продолжается с начала этого файла. srch_stop_eof = 1 При достижении конца файла показывается соответствующее сообщение. srch_stop_eof = 10 То же, что srch_stop_eof = 0. При установке галочки "Search: Stop at EOF" значение параметра srch_stop_eof устанавливается в 11. srch_stop_eof = 11 При достижении конца файла поиск прекращается. Молча. Без показа сообщения. При снятии галочки "Search: Stop at EOF" значение параметра srch_stop_eof устанавливается в 10. 7) "Window: Docked top" "Окно: Расположить сверху" srch_wnd_dockedtop = 1 Панель QSearch находится в верхней клиентской части окна AkelPad. srch_wnd_dockedtop = 0 Панель QSearch находится в нижней клиентской части окна AkelPad. 8) "Window: Select all when focused" "Окно: Фокус ввода выделяет всё" edit_focus_selectall = 1 Каждый раз, когда строка поиска QSearch получает фокус ввода, весь текст в строке поиска становится выделенным. edit_focus_selectall = 0 Весь текст в строке поиска выделяется только при явном вызове QSearch::QSearch. 9) "Window: Catch main F3" "Окно: Обрабатывать F3 от главного окна" catch_main_f3 = 1 Нажатие клавиши F3 (Shift+F3) в окне редактора AkelPad продолжает поиск плагином QSearch, если до этого не вызывалось стандартное окно поиска или замены AkelPad. catch_main_f3 = 0 Стандартное поведение AkelPad. 10) "Window: Catch main Esc" "Окно: Обрабатывать Esc от главного окна" catch_main_esc = 1 Нажатие клавиши Esc в окне редактора AkelPad скрывает панель QSearch, если она была видима. catch_main_esc = 0 Панель QSearch не перехватывает клавишу Esc; она обрабатывается самим AkelPad (по умолчанию). Также можно вручную установить одно из следующих значений: catch_main_esc = 10 Нажатие клавиши Esc в окне QSearch передаётся на обработку самому редактору AkelPad (по умолчанию - закрывает программу). При установке галочки "Window: Catch main Esc" значение параметра catch_main_esc устанавливается в 11. catch_main_esc = 11 Работает так же, как при catch_main_esc = 1. При снятии галочки "Window: Catch main Esc" значение параметра catch_main_esc устанавливается в 10. 11) "Window: Hotkey closes the window" "Окно: Hotkey закрывает окно" hotkey_closes_wnd = 1 При нажатии "горячей клавиши" плагина в окне QSearch, оно (окно) закрывается (аналог нажатия Esc). hotkey_closes_wnd = 0 При нажатии "горячей клавиши" плагина в окне QSearch, фокус ввода передается окну редактирования AkelPad. 12) "Window: Editor auto-focus" "Окно: Авто-фокус в редактор" editor_autofocus = 111 То же, что 11, но окно редактирования AkelPad всегда получает фокус ввода при движении указателя мыши в этом окне (даже если указатель мыши при этом не покидал строку поиска QSearch). При снятии галочки "Window: Editor auto-focus" значение параметра 'editor_autofocus' устанавливается в 110. editor_autofocus = 110 Работает так же, как при editor_autofocus = 10. При установке галочки "Window: Editor auto-focus" значение параметра 'editor_autofocus' устанавливается в 111. editor_autofocus = 101 Работает так же, как при editor_autofocus = 111. При снятии галочки "Window: Editor auto-focus" значение параметра 'editor_autofocus' устанавливается в 100. editor_autofocus = 100 Работает так же, как при editor_autofocus = 0. При установке галочки "Window: Editor auto-focus" значение параметра 'editor_autofocus' устанавливается в 101. editor_autofocus = 11 Если панель QSearch имеет фокус ввода и указатель мыши из строки поиска панели QSearch передвигается в окно редактирования AkelPad, то фокус ввода переходит к окну редактирования AkelPad. Если указатель мыши передвигается в строку поиска панели QSearch, то фокус ввода переходит к строке поиска. При снятии галочки "Window: Editor auto-focus" значение параметра editor_autofocus устанавливается в 10. editor_autofocus = 10 Если указатель мыши передвигается в строку поиска панели QSearch, то фокус ввода переходит к строке поиска. При установке галочки "Window: Editor auto-focus" значение параметра editor_autofocus устанавливается в 11. Также можно вручную установить одно из следующих значений: editor_autofocus = 1 Работает так же, как при editor_autofocus = 11. При снятии галочки "Window: Editor auto-focus" значение параметра editor_autofocus устанавливается в 0. editor_autofocus = 0 Ничего особенного не происходит: ни строка поиска QSearch, ни окно редактирования AkelPad не получают фокус ввода автоматически при наведении указателя мыши. При установке галочки "Window: Editor auto-focus" значение параметра editor_autofocus устанавливается в 1. 13) dock_rect_disabled = 1 Если значение этого параметра вручную установлено в 1, то координаты "встроенного" окна QSearch не будут сохраняться. 14) dock_rect = ... (внутренний параметр, сохраняется автоматически при 'dock_rect_disabled' равном 0) 15) color_notfound = FFE0E000 Цвет фона, который устанавливается в случае, когда искомый текст не найден. Этот цвет задается в виде "RRGGBB00", где RR, GG и BB - это шестнадцатиричные значения красного, зеленого и синего цветов (от 00 до FF). 16) color_eof = E4FFE400 Цвет фона, который устанавливается при пересечении конца файла (когда поиск продолжается с начала файла). Этот цвет задается в виде "RRGGBB00", где RR, GG и BB - это шестнадцатиричные значения красного, зеленого и синего цветов (от 00 до FF). При установке "color_eof = FFFFFF00" цвет меняться не будет. 17) color_highlight = C0FFC000 Цвет фона для текста, который подсвечивается при установленной галочке "Highlight all". Этот цвет задается в виде "RRGGBB00", где RR, GG и BB - это шестнадцатиричные значения красного, зеленого и синего цветов (от 00 до FF). 18) highlight_mark_id = 1001 Параметр 'ID' для плагина HighLight когда QSearch вызывает его функцию "HighLight::Main" для подсветки (пометки) текста. 19) highlight_state = 0 (сохраняется автоматически при вкл/выкл галочки "Highlight all"). Также можно вручную установить одно из следующих значений: highlight_state = 10 При запуске AkelPad галочка "Highlight all" всегда не установлена. highlight_state = 11 При запуске AkelPad галочка "Highlight all" всегда установлена. 20) use_alt_hotkeys = 0 Дополнительные сочетания клавиш в панели QSearch отключены. use_alt_hotkeys = 1 В панели QSearch доступны следующие дополнительные сочетания клавиш: Alt+alt_match_case (Alt+C) - Учитывать регистр (case) вкл/выкл Alt+alt_whole_word (Alt+W) - Слово целиком (whole word) вкл/выкл Alt+alt_highlight_all (Alt+H) - Подсветить все (highlight) вкл/выкл 21) alt_match_case = 67 Если 'use_alt_hotkeys' включено (установлено в 1), этот параметр задаёт код быстрой клавиши для галочки "Учитывать регистр" (панель QSearch). Значение 67 соответствует клавише 'C', т.е. получаем сочетание Alt+C. Код клавиши может быть посчитан как (англ.буква - 'A' + 65). То есть 65 соответствует Alt+A, 66 - Alt+B, 67 - Alt+C и т.д. Также, 48 соответствует Alt+0, 49 - Alt+1, 50 - Alt+2 и т.д. Для детальной информации по кодам клавиш см. страницу Virtual-Key Codes в MSDN. 22) alt_whole_word = 87 Если 'use_alt_hotkeys' включено (установлено в 1), этот параметр задаёт код быстрой клавиши для галочки "Слово целиком" (панель QSearch). Значение 87 соответствует клавише 'W', т.е. получаем сочетание Alt+W. См. 'alt_match_case' для более детальной информации. 23) alt_highlight_all = 72 Если 'use_alt_hotkeys' включено (установлено в 1), этот параметр задаёт код быстрой клавиши для галочки "Подсветить все" (панель QSearch). Значение 72 соответствует клавише 'H', т.е. получаем сочетание Alt+H. См. 'alt_match_case' для более детальной информации. 24) find_history_items = 15 Максимальное количество элементов в истории поиска (выпадающем списке). Установка этого значения в 0 отключает историю поиска. 25) history_save = 3 Если установлено в 3, история поиска вместе с состоянием галочек "Учитывать регистр" и "Слово целиком" сохраняется в Системном Реестре. Если установлено в 2, состояние галочек "Учитывать регистр" и "Слово целиком" сохраняется в Системном Реестре. Если установлено в 1, история поиска сохраняется в Системном Реестре. Если установлено в 0, история поиска и состояние галочек не сохраняется. -------- История: -------- v.4.4 (Июль 2011) + улучшена реализация doSelectCurrentWord для SelFindNext/Prev (взята из "WordCaretSelect.js" by FeyFre & VladSh) v.4.3 (Июль 2011) + добавлено: srch_stop_eof=10 v.4.2 (Май 2011) - исправлено: теперь сообщение "EOF" не появится во время qsUpdateHighlight() - исправлено: при показе панели QSearch подхваченный текст не был выделен + добавлено: editor_autofocus=100 v.4.1 (Май 2011) * для AkelPad 4.6.0+ + поддержка AkelPad x64 - исправлено: без нажатого Shift, гор.клавиша Поиск Вверх работала как Вниз - исправлено: Grey Alt обрабатывался некорректно (например, для Польского) v.4.0 (Декабрь 2010) + экспериментально: "Слово целиком" при поиске со спец. символами (тогда "**" соответствует 0 или больше любых непробельных символов) + галочки "Учитывать регистр" и "Слово целиком" могут сохраняться (значение 'history_save' должно быть установлено в 3 вручную!) v.3.9 (Октябрь 2010) * для AkelPad 4.5.0+ v.3.8 (Сентябрь 2010) * теперь неактивное окно AkelPad не перехватывает фокус ввода * добавлена иконка v.3.7 (Сентябрь 2010) * третья годовщина QSearch :) * изменено поведение 'srch_pickup_selection' + добавлено: 'editor_autofocus' v.3.6 (Сентябрь 2010) + мелкие улучшения v.3.5 (Август 2010) - исправлено: "Highlight all" не работало с 'srch_pickup_selection' + добавлено: история поиска + новый параметр настройки: find_history_items + новый параметр настройки: history_save v.3.4 (Август 2010) + если нет выделения, SelFindNext/Prev выделяет текущее слово v.3.3 (Июль 2010) - улучшено обнаружение Coder::HighLight - улучшена совместимость с PMDI - теперь Uninitialize() вызывается по AKDN_MAIN_ONFINISH v.3.2 (Июнь 2010) * для AkelPad 4.4.4+ + расширенная настройка catch_main_esc v.3.1 (Май 2010) + теперь QSearchDlg использует шрифт "MS Shell Dlg" v.3.0 (Март 2010) + теперь спец. символы могут использоваться в режиме "на лету" v.2.9 (Февраль 2010) - исправлено: Ctrl+Z не работал после Ctrl+Del или Ctrl+BS v.2.8 (Февраль 2010) * для AkelPad 3.7.4+/4.4.0+ + QSearchDlg: собственная обработка Ctrl+Del, Ctrl+BS, Ctrl+A v.2.7 (Октябрь 2009) * теперь SetWindowsHookEx() в DialogSwitcher использует GetCurrentThreadId() v.2.6 (Октябрь 2009) + новые параметры настройки для дополнительных сочетаний клавиш панели QSearch - исправлено: теперь 'alt_whole_word' не работает при скрытом "Слово целиком" v.2.5 (Октябрь 2009) + новый параметр настройки: color_eof + новый параметр настройки: use_alt_hotkeys v.2.4 (Сентябрь 2009) * DialogSwitcher работает с AkelPad 4.3.2+ - исправлено: проблема перерисовки окна ввода при режиме поиска не "на лету" - исправлено: изменение галочки "Слово целиком" не устанавливало QSEARCH_FIRST + добавлено: новые значения для параметра 'highlight_state' v.2.3 (Сентябрь 2009) * вторая годовщина QSearch :) + добавлено: состояние галочки "Подсветить все" сохраняется - исправлено: неверное поведение при нажатии Shift во время поиска "на лету" - исправлено: иногда QSearch продолжал поиск по нажатию hot-key v.2.2 (Август 2009) + добавлена функция "Подсветить все" (требует включенный плагин Highlight) * для AkelPad 3.7.3+/4.3.0+ * работает с плагином Highlight версии 4.7 или выше v.2.1 (Март 2009) * для AkelPad 3.7.0+/4.2.0+ v.2.0 (Март 2009) - исправлено (DialogSwitcher): горизонтальная полоса прокрутки окна редактирования не перерисовывалась при переключении с диалога Поиска/Замены на окно QSearch v.1.9 (Декабрь 2008) + новая функция: DialogSwitcher v.1.8 (Октябрь 2008) + исправлено: при нажатом Shift функция SelFindNext работала как SelFindPrev v.1.7 (Октябрь 2008) + исправлено: продолжение поиска в MDI-режиме при скрытом окне QSearch v.1.6 (Август 2008) + новый параметр настройки: srch_selfind_pickup v.1.5 (Июль 2008) * для AkelPad 3.6.0+ v.1.4 (Июнь 2008) * для AkelPad 3.5.5+ + новые функции: SelFindNext, SelFindPrev v.1.3 (Май 2008) * для AkelPad 3.5.5+ + перехват клавиши F3 (продолжение поиска) из главного окна + мелкие улучшения v.1.2 (Апрель 2008) * для AkelPad 3.5.5+ + встроенная поддержка русского и украинского интерфейса + дополнительные настройки и возможности v.1.1 (Март 2008) * для AkelPad 3.5.3+ + теперь окно плагина "встраивается" в окно AkelPad + мелкие улучшения + дополнительные настройки v.1.0 (Сентябрь 2007) * начальная версия * для AkelPad 3.3.x/3.4.x Автор выражает благодарность Александру Шенгальцу aka Instructor за текстовый редактор AkelPad ;-) --------------------------------------------------------------------------- The original icon by Yusuke Kamiyamane, http://p.yusukekamiyamane.com/ The icon has been modified by DV. --------------------------------------------------------------------------- (C) Sep 2007 - Jul 2011, Vitaliy Dovgan aka DV dvv81 ukr net