FindAllReferences
Выдаёт список строк, в которых встречается выделенное слово. Также раскрывающийся список с готовыми регулярными выражениями.
Также сделал варианты для Notepad++ и SciTE (здесь регулярные выражения вынесены в ini-файл, по причине проблем с компилированием под себя, со своими рег.выр.)
Notepad++ yandex, upload.ee
SciTE (для AutoIt3) yandex, upload.ee (скриншот)
Лучший вариант совместить эту прогу в один файл, но проблема как определить с каким редактором ей работать.
1. Можно получить текущий путь и проверить если в пути слово Notepad++ или SciTE или PureBasic, но проблема, что утилита может лежать в отдельной папке Tools за пределами папки IDE. Такой подход удобен если несколько версий IDE вызывают инструмент, а то и разные редакторы.
2. Можно получить имя файла родительского процесса вызвавшего инструмент. Вот здесь идеальный случай, хотя не исключаю переименование исполняемого файла. Но это случай один на миллион.
3. Получить активное окно - тоже идеальный случай, кроме ситуации если инструмент сделать постоянно висящем в открытом состоянии и вызов иного слова обновляет открытое окно, тогда надо встраивать повторное получение текущего активного окна.
4. Передавать имя через параметры, но хотелось бы сделать инструмент проще, автоматически определяя каким редактором он запущен.
Теперь можно выделить часть слова или строку для поиска (переменна %word всегда давала только целое слово).
Улучшены регулярные выражения, что упростило код и увеличило скорость почти в 2 раза.
Исправлен подсчёт искомого слова. Теперь считает и подсвечивает только целое слов, как и должно быть.В ini-файле поддерживается цвет для подсвечивания найденного вхождения и флаг автоскрытия
Добавлено контекстное меню с 5 пунктов (Копировать, Автоскрытие, Следующий цвет, ini, Выход)
При запуске искомое слово вставляется как регулярное выражение, чтобы сделать поиск в том числе в комментариях.1. Исправлено - точное позиционирование, раскрывает свёрнутые фрагменты кода. Ранее если свёрнуто то на столько же строк промах.
2. Добавлено скрытие окна. Нужно курсор мыши довести до правого края экрана. При запуске 2 секунды удерживается окно, если курсор не в окне.
3. Добавлено перезапуск при повторных вызовах, чтобы не плодить окна. Сначала была идея вставить в поле ввода уже открытой программы, потом посчитал, какой смысл если вторая копия программы уже запущена, какой смысл извращаться, чтобы передать строку поиска и запустить функцию, когда можно закрыть окно и продолжить выполнение новой программы.
4. Исправление регвыр для циклов. Не ловил Repeat (основной цикл опроса событий), так как у все есть подвыражение, а у Repeat нет, поэтому в конце добавил "*", позволяющую отсутствие подвыражения.
Отредактировано AZJIO (22.03.2023 18:47:00)