Regular Expression Search and Replace (RESearch)

Здесь можно обсудить ваш любимый плагин.
User avatar
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)

Post by John Doe »

Latest post of the previous page:

Cavaler wrote:Так а для чего тогда был весь здоровенный пост, я не понял?
1. Поделился как можно обойтись стандартными возможностями lua. Мне лично приятнее, но я понимаю преимущества единообразия.
2. Пока только таким образом можно извлечь и отобразить значения переменных.
Cavaler wrote:обычно возврат $0 - аналогичен пропуску. skip() просто явственнее.
Не совсем аналогичен, т.к. при этом редактор приобретает свойство изменённого, и буфер Undo заполняется бесполезной информацией.
И в любом случае я считаю, что возврат без значения логичнее интерпретировать как пропуск, а не как пустую строку.
John Doe wrote:Ну так не перезапускай Far по 50 раз и будет тебе счастье. А из-за кэширования были сплошные проблемы.
Я всё-таки подозреваю что проблемы не из-за кэширования, а из-за не лучшей его реализации.
Но спорить не буду, бесплатной поддержки никто не обещал.

С другой стороны, что если отсрочить опрос доступных движков до момента реального использования? Опрашивать в момент открытия комбобокса.
(Хотя это может быть проблематично, учитывая общую базу для far1/2/3)
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

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 работало.
User avatar
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)

Post by John Doe »

При определённых условиях вызов плагина приводит к падению.

Кладу в scripts lua-файл следующего содержания:
  1. local F = far.Flags
  2.  
  3. Event {
  4.  
  5.   group="DialogEvent";
  6.  
  7.   action=function(Event,param)
  8.  
  9.     if Event==F.DE_DLGPROCINIT and param.Msg==F.DN_INITDIALOG then
  10.  
  11.       param.hDlg:send(F.DM_GETDIALOGINFO)
  12.  
  13.     end
  14.  
  15.   end;
  16.  
  17. }
Перезапускаю фар.
В панелях вызываю плагин из меню и выбираю любую его функцию.
Наблюдаю exception error в LuaMacro.

Автор не уверен, что проблема в LuaMacro, а отсутствие исходников RESearch затрудняет диагностику.
Insider
Posts: 4
Joined: Fri 04 Jul, 2014 12:19

Re: Regular Expression Search and Replace (RESearch)

Post by Insider »

Хочу сообщить о баге. Установил себе этот плагин, версия 8.50 (RESearchU3 x64.dll) под Far30b3977.x64.20140704.
Исходные данные - куча файлов в UTF-8 без BOM, во всех файлах есть строка "abc" в единственном экземпляре, задача - поиск и замена этой строки на нечто иное, например на "123". Обнаружил, что плагин находит не все файлы с вхождениями строки. После непродолжительного ковыряния нашел, что дело в определенных UTF-8 символах, которые содержатся в файлах, не попадающих в найденные. Похоже на то, что если в файле есть определенные символы, то поиск в нем просто не происходит!

Набор для тестирования:

Файл 1.txt (4 байта) = "abc" + \n

Code: Select all

61 62 63 0A
Файл 2.txt (9 байтов) = "abc" + \n + [0xF0 0x9D 0x84 0x9E - символ "скрипичный ключ"] + \n

Code: Select all

61 62 63 0A F0 9D 84 9E │ 0A
Результат: строка "abc" обнаруживается только в файле 1.txt, но не в 2.txt! Особенно удивительно, что это происходит даже в режиме "Plain text".
Встроенный поиск в файлах по Alt-F7 при этом всё находит.
Attachments
1.txt
(4 Bytes) Downloaded 94 times
2.txt
(9 Bytes) Downloaded 94 times
User avatar
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)

Post by John Doe »

Если второй файл открыть в редакторе фара и нажать F2, то он превращается в 61 62 63 0A ED A0 B4 0A (8 байт).
После этого RESearch начинает его находить
Shmuel
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)

Post by Shmuel »

John Doe wrote:Если второй файл открыть в редакторе фара и нажать F2, то он превращается в 61 62 63 0A ED A0 B4 0A (8 байт).
Интересно, с какой радости Фар меняет содержимое файла при его сохранении?
User avatar
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)

Post by DrKnS »

Потому что в фаре используется свой лунапарк Utf8ToUtf16, который 4-х байтный UTF-8 обрабатывает неправильно.
Shmuel
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)

Post by Shmuel »

DrKnS wrote:Потому что в фаре используется свой лунапарк Utf8ToUtf16, который 4-х байтный UTF-8 обрабатывает неправильно.
В луафаровских ф-циях win.Utf8ToUtf16 и win.Utf16ToUtf8 для преобразования используются исключительно ф-ции Windows API.
User avatar
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)

Post by DrKnS »

Где я хоть слово написал про луафар?

В фаре тоже раньше использовалось Windows API, сейчас навелосипедили ручное преобразование, которое для случая выше работало некорректно.

Поправил как умел, 3978.
Insider
Posts: 4
Joined: Fri 04 Jul, 2014 12:19

Re: Regular Expression Search and Replace (RESearch)

Post by Insider »

John Doe wrote:Если второй файл открыть в редакторе фара и нажать F2, то он превращается в 61 62 63 0A ED A0 B4 0A (8 байт).
После этого RESearch начинает его находить
У меня более 10000 файлов, замаюсь пересохранять в редакторе фара для лучшей усваиваемости при необходимости адекватного поиска...
DrKnS wrote:Поправил как умел, 3978.
А это в каком смысле? Теперь этому поиску можно доверять? Просто в моем случае я заранее знал, что ищу, и знал точное количество вхождений в файлах, поэтому и увидел расхождение с реальностью. Если используешь какой-то инструмент, то нужно ему доверять, но осадок-то уже остался!
Shmuel
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)

Post by Shmuel »

Insider wrote:
DrKnS wrote:Поправил как умел, 3978.
А это в каком смысле? Теперь этому поиску можно доверять?
Поправлено сохранение файла в Фаре, а не поиск в плагине.
Insider
Posts: 4
Joined: Fri 04 Jul, 2014 12:19

Re: Regular Expression Search and Replace (RESearch)

Post by Insider »

DrKnS wrote:Поправил как умел, 3978.
Кстати, скачал 3978 x64, эффект тот же - в тестовом наборе файлов второй файл в RESearch не находится. Или я что-то не понял, и так и должно быть?
Shmuel
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)

Post by Shmuel »

Insider wrote:Кстати, скачал 3978 x64, эффект тот же - в тестовом наборе файлов второй файл в RESearch не находится. Или я что-то не понял, и так и должно быть?
Так я же вам только что сказал, что именно было поправлено. Это к плагину никакого отношения не имеет. То, что вы наблюдаете, поправлено не было.
EXEMOK
Posts: 24
Joined: Fri 23 Mar, 2007 17:09

Re: Regular Expression Search and Replace (RESearch)

Post by EXEMOK »

Подскажите пжста.
Есть папка, в ней 54 000 файлов. Хочу выделить файлы, созданные в 2012ом году. Это возможно сделать каким либо образом? Плагин предлагает только по маске :(
ex - Far alfatester group
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Regular Expression Search and Replace (RESearch)

Post by Denis »

А если использовать панельный фильтр Far'a (CtrlI)?
User avatar
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)

Post by zg »

EXEMOK wrote:Подскажите пжста.
Есть папка, в ней 54 000 файлов. Хочу выделить файлы, созданные в 2012ом году. Это возможно сделать каким либо образом? Плагин предлагает только по маске :(
а чем встроенное средство не устраивает?
Post Reply

Return to “Обсуждение плагинов”