Странное поведение поиска F7/Shift-F7 в редактировании Topic is solved

Здесь можно сообщить о найденных багах в Far.
dest
Posts: 106
Joined: Mon 29 Jun, 2015 01:30
Has thanked: 18 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by dest »

Возьмем некоторый файл, к примеру Bug.Report.txt из поставки фара.

Жмем F7, вводим в строку поиска символ "y" ("игрек").
Жмем энтер. Всё ОК - попадаем в первое вхождение - строка 7, колонка 2.
Жмем Shift-F7. Всё ОК - попадаем во второе вхождение, строка 7, колонка 34.

Хотим каждое последующее вхождение "y" начинать с новой строки. Жмем быстро Enter, Shift-F7, Enter, Shift-F7... ожидая одного поведения поиска, а получая на деле другое. Это случай, когда нет времени или не хочется связываться с регекспами, а нужно быстро отформатировать небольшой текст или фрагмент.
Что мы получаем в результате? Вместо одного переноса строки мы получили везде по два и проделали в два раза больше нажатий.
Причина - после переноса строки и какого-либо иного вмешательства позиция поиска осталась на предыдущем месте, хотя найденное вхождение переместилось вперед, и Shift-F7 повторно находит то же самое, где у нас и так стоит курсор.
dest
Posts: 106
Joined: Mon 29 Jun, 2015 01:30
Has thanked: 18 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by dest »

Данное поведение замечено на фаре, обвешанном плагинами.
Первым делом полез в настройки редактора, и там пробовал другое положение "выделять найденное" (потому как после переноса найденного символа в новую строку подсвечивается конец предыдущей строки до конца экрана) - не помогло. Далее убрал все плагины - не помогло. Далее взял скачал архивы последней ночной сборки и последней стабильной, удалил все записи из реестра о фаре, развернул "с чистого листа", проверил в ночной - такое поведение присутствует, проверил в стабильной - то же самое.
Помнится в фар-2 ... 1.75 поведение было корректным, да я вот только полчаса как удалил все упоминания о фар2- у себя.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by 2useven10 »

Shift-F7 продолжает поиск, пропуская найденное в текущей позиции, если поиск не прерывался.
Если после поиска было редактирование или перемещение курсора, поиск начинается заново и
то что под курсором не пропускается (как при нажатии F7).
dest
Posts: 106
Joined: Mon 29 Jun, 2015 01:30
Has thanked: 18 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by dest »

2useven10, в предыдущих версиях Far работало логично и корректно. Зачем делать поиск в том, что я (любой другой) только что вставил? Тот, кто вставляет текст, обычно знает что вставляет (в случае в CRLF вообще ситуация самая простая), и в 99.(9)% случаев требуется продолжение поиска в неизмененной части уже после найденного.
Специально после написанного перепроверил, может мне померещилось и я все эти годы просто не замечал - но нет, поставил Far2 нескольких сборок, 1.75 - везде работает как и ожидается, а в Far3 - вот так коряво. Да, именно коряво.
Dzirt2005
Posts: 327
Joined: Fri 29 Feb, 2008 12:11
Been thanked: 10 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by Dzirt2005 »

dest wrote: Хотим каждое последующее вхождение "y" начинать с новой строки
Почему бы просто не сделать замену "y" -> "<новая_строка>y"? Если что - символ <новая_строка> вводится при помощи последовательности Ctrl+Q, Enter.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by 2useven10 »

dest
'только что вставил' и большая часть выступления вообще не в кассу.
Речь идёт только о том пропускается ли текст который начинается точно под курсором при Shift-F7.
Если честно, я не помню, чтобы это менялось специально, может и баг...
Shmuel
Posts: 6839
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by Shmuel »

2useven10 wrote: Если честно, я не помню, чтобы это менялось специально, может и баг...
Это изменилось между 3861 и 3867, предположительно в 3862.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by 2useven10 »

Shmuel wrote:предположительно в 3862.
3864, 3865 тоже под подозрением.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by 2useven10 »

Вряд ли DrKnS изменил поведение намеренно, скорее 'так получилось' после правки других ошибок.
Если здесь не заметит - на багтрекер...
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by DrKnS »

Не намеренно, да.
Но и к текущему поведению у меня, например, претензий нет.
Корректный пропуск уже найденного фрагмента возможен только в том случае, когда в промежутке пользователь текст руками не трогал.
Потому что если трогал - выяснить, что же именно он там наменял и откуда теперь надо искать - нетривиальная задача.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by 2useven10 »

Imho, не надо ничего выяснять.
Если трактовать Shift-F7 как найти следующее совпадение, то независимо от того что у нас под курсором,
на месте можно остаться только если следующего совпадения, не учитывая текущую позицию, нет.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by DrKnS »

Ок, опиши, что делать в следующих случаях:
- удалили/добавили целое количество строк выше текущей строки
- удалили/добавили целое количество строк выше и часть текущей строки слева
- удалили/добавили нецелое количество строк выше и часть текущей строки слева, остаток перенесся на предыдущую/следующую строку
- удалили/добавили символы слева
- удалили целое количество строк выше, включая текущую строку
- удалили часть текущей строки слева, включая текущую позицию

P.S. После шаманства с текстом курсор могли хаотично перемещать, могли не меремещать, могли делать undo и redo.
P.P.S. Всё вышеперечисленное - для обоих состояний опции "Cursor at end".

Или это всё баловство и плясать надо не от последней найденной позиции, а тупо от курсора?
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by 2useven10 »

Всё как в предыдущем посте. Шаманства с текстом не имеют значения.
Имеет значение текущее положение курсора, следующее совпаденипе не должно начинаться с текущей позиции.

Курсор за концом текущей строки == курсор перед началом следующей строки, т.е. первое следующее совпадение может
быть в начале следующей строки.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by DrKnS »

Курсор за концом текущей строки == курсор перед началом следующей строки
Я немного о другом. В зависимости от настроек, поиск может ставить курсор так или так. В первом случае продолжать надо со следующей, во втором - с текущей, иначе в строке "foofoo" второй foo не найдёшь.
Кстати, ещё есть обратный поиск.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Странное поведение поиска F7/Shift-F7 в редактировании

Post by 2useven10 »

Для так_ просто стартовая позиция поиска смещается на длину искомой строки назад от курсора.
С обратным поиском всё симметрично. собственно ведь вся логика поиска уже есть. Надо только не сбрасывать
признак 'продолжения' поиска, так будто курсор попал в текущую позицию в результате предыдущего поиска
(в начале или после найденного фрагмента), даже если его переместили туда руками или изменили найденный текст.
Post Reply

Return to “Глюки и баги”