Regular Expression Search and Replace (RESearch)
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Regular Expression Search and Replace (RESearch)
Latest post of the previous page:
1. Поделился как можно обойтись стандартными возможностями lua. Мне лично приятнее, но я понимаю преимущества единообразия.Cavaler wrote:Так а для чего тогда был весь здоровенный пост, я не понял?
2. Пока только таким образом можно извлечь и отобразить значения переменных.
Не совсем аналогичен, т.к. при этом редактор приобретает свойство изменённого, и буфер Undo заполняется бесполезной информацией.Cavaler wrote:обычно возврат $0 - аналогичен пропуску. skip() просто явственнее.
И в любом случае я считаю, что возврат без значения логичнее интерпретировать как пропуск, а не как пустую строку.
Я всё-таки подозреваю что проблемы не из-за кэширования, а из-за не лучшей его реализации.John Doe wrote:Ну так не перезапускай Far по 50 раз и будет тебе счастье. А из-за кэширования были сплошные проблемы.
Но спорить не буду, бесплатной поддержки никто не обещал.
С другой стороны, что если отсрочить опрос доступных движков до момента реального использования? Опрашивать в момент открытия комбобокса.
(Хотя это может быть проблематично, учитывая общую базу для far1/2/3)
Re: Regular Expression Search and Replace (RESearch)
FAR3.0.3974,RS8.50U3, Editor.
Поиск: ^(".+?"\t")([\d.]+?)("\t".+?"\t")([\d.]+?)"
Замена: s=match(2);if(s>350){s=s-10};s=match(1)+s+match(3)+match(4)+'"';result(s)
В 8.40 работало.
Поиск: ^(".+?"\t")([\d.]+?)("\t".+?"\t")([\d.]+?)"
Замена: s=match(2);if(s>350){s=s-10};s=match(1)+s+match(3)+match(4)+'"';result(s)
В 8.40 работало.
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Regular Expression Search and Replace (RESearch)
При определённых условиях вызов плагина приводит к падению.
Кладу в scripts lua-файл следующего содержания: Перезапускаю фар.
В панелях вызываю плагин из меню и выбираю любую его функцию.
Наблюдаю exception error в LuaMacro.
Автор не уверен, что проблема в LuaMacro, а отсутствие исходников RESearch затрудняет диагностику.
Кладу в scripts lua-файл следующего содержания: Перезапускаю фар.
В панелях вызываю плагин из меню и выбираю любую его функцию.
Наблюдаю exception error в LuaMacro.
Автор не уверен, что проблема в LuaMacro, а отсутствие исходников RESearch затрудняет диагностику.
Re: Regular Expression Search and Replace (RESearch)
Хочу сообщить о баге. Установил себе этот плагин, версия 8.50 (RESearchU3 x64.dll) под Far30b3977.x64.20140704.
Исходные данные - куча файлов в UTF-8 без BOM, во всех файлах есть строка "abc" в единственном экземпляре, задача - поиск и замена этой строки на нечто иное, например на "123". Обнаружил, что плагин находит не все файлы с вхождениями строки. После непродолжительного ковыряния нашел, что дело в определенных UTF-8 символах, которые содержатся в файлах, не попадающих в найденные. Похоже на то, что если в файле есть определенные символы, то поиск в нем просто не происходит!
Набор для тестирования:
Файл 1.txt (4 байта) = "abc" + \n
Файл 2.txt (9 байтов) = "abc" + \n + [0xF0 0x9D 0x84 0x9E - символ "скрипичный ключ"] + \n
Результат: строка "abc" обнаруживается только в файле 1.txt, но не в 2.txt! Особенно удивительно, что это происходит даже в режиме "Plain text".
Встроенный поиск в файлах по Alt-F7 при этом всё находит.
Исходные данные - куча файлов в UTF-8 без BOM, во всех файлах есть строка "abc" в единственном экземпляре, задача - поиск и замена этой строки на нечто иное, например на "123". Обнаружил, что плагин находит не все файлы с вхождениями строки. После непродолжительного ковыряния нашел, что дело в определенных UTF-8 символах, которые содержатся в файлах, не попадающих в найденные. Похоже на то, что если в файле есть определенные символы, то поиск в нем просто не происходит!
Набор для тестирования:
Файл 1.txt (4 байта) = "abc" + \n
Code: Select all
61 62 63 0A
Code: Select all
61 62 63 0A F0 9D 84 9E │ 0A
Встроенный поиск в файлах по Alt-F7 при этом всё находит.
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Regular Expression Search and Replace (RESearch)
Если второй файл открыть в редакторе фара и нажать F2, то он превращается в 61 62 63 0A ED A0 B4 0A (8 байт).
После этого RESearch начинает его находить
После этого RESearch начинает его находить
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Regular Expression Search and Replace (RESearch)
Интересно, с какой радости Фар меняет содержимое файла при его сохранении?John Doe wrote:Если второй файл открыть в редакторе фара и нажать F2, то он превращается в 61 62 63 0A ED A0 B4 0A (8 байт).
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Regular Expression Search and Replace (RESearch)
В луафаровских ф-циях win.Utf8ToUtf16 и win.Utf16ToUtf8 для преобразования используются исключительно ф-ции Windows API.DrKnS wrote:Потому что в фаре используется свой лунапарк Utf8ToUtf16, который 4-х байтный UTF-8 обрабатывает неправильно.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Re: Regular Expression Search and Replace (RESearch)
Где я хоть слово написал про луафар?
В фаре тоже раньше использовалось Windows API, сейчас навелосипедили ручное преобразование, которое для случая выше работало некорректно.
Поправил как умел, 3978.
В фаре тоже раньше использовалось Windows API, сейчас навелосипедили ручное преобразование, которое для случая выше работало некорректно.
Поправил как умел, 3978.
Re: Regular Expression Search and Replace (RESearch)
У меня более 10000 файлов, замаюсь пересохранять в редакторе фара для лучшей усваиваемости при необходимости адекватного поиска...John Doe wrote:Если второй файл открыть в редакторе фара и нажать F2, то он превращается в 61 62 63 0A ED A0 B4 0A (8 байт).
После этого RESearch начинает его находить
А это в каком смысле? Теперь этому поиску можно доверять? Просто в моем случае я заранее знал, что ищу, и знал точное количество вхождений в файлах, поэтому и увидел расхождение с реальностью. Если используешь какой-то инструмент, то нужно ему доверять, но осадок-то уже остался!DrKnS wrote:Поправил как умел, 3978.
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Regular Expression Search and Replace (RESearch)
Поправлено сохранение файла в Фаре, а не поиск в плагине.Insider wrote:А это в каком смысле? Теперь этому поиску можно доверять?DrKnS wrote:Поправил как умел, 3978.
Re: Regular Expression Search and Replace (RESearch)
Кстати, скачал 3978 x64, эффект тот же - в тестовом наборе файлов второй файл в RESearch не находится. Или я что-то не понял, и так и должно быть?DrKnS wrote:Поправил как умел, 3978.
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Regular Expression Search and Replace (RESearch)
Так я же вам только что сказал, что именно было поправлено. Это к плагину никакого отношения не имеет. То, что вы наблюдаете, поправлено не было.Insider wrote:Кстати, скачал 3978 x64, эффект тот же - в тестовом наборе файлов второй файл в RESearch не находится. Или я что-то не понял, и так и должно быть?
Re: Regular Expression Search and Replace (RESearch)
Подскажите пжста.
Есть папка, в ней 54 000 файлов. Хочу выделить файлы, созданные в 2012ом году. Это возможно сделать каким либо образом? Плагин предлагает только по маске
Есть папка, в ней 54 000 файлов. Хочу выделить файлы, созданные в 2012ом году. Это возможно сделать каким либо образом? Плагин предлагает только по маске
ex - Far alfatester group
- zg
- zero-gravity
- Posts: 6036
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: Regular Expression Search and Replace (RESearch)
а чем встроенное средство не устраивает?EXEMOK wrote:Подскажите пжста.
Есть папка, в ней 54 000 файлов. Хочу выделить файлы, созданные в 2012ом году. Это возможно сделать каким либо образом? Плагин предлагает только по маске