LuaFAR Search
-
- Posts: 6721
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 34 times
- Been thanked: 505 times
LuaFAR Search
Всё, я понял в чём дело. Действительно, проблема в макросе. Макрос не учитывает, что опция "Показывать номера строк" может быть выключена. Спасибо за репорт, сегодня исправлю. Но если эта опция выключена, переход будет происходить на начало файла.
-
- Posts: 6721
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 34 times
- Been thanked: 505 times
LuaFAR Search
В инструкции к макросу? Можно поставить там комментарий в 1 строчку.
При выключенной опции "Показывать номера строк" макросу неоткуда брать номер строки для точного перехода.
Можно, правда, организовать поиск по всему содержимому строки, но это уже костыль, делать не буду.
При выключенной опции "Показывать номера строк" макросу неоткуда брать номер строки для точного перехода.
Можно, правда, организовать поиск по всему содержимому строки, но это уже костыль, делать не буду.
LuaFAR Search
Да, что-то в этом роде. А ещё бы хорошо было бы при переходе в файл в случае выключенной опции также выдавать предварительное сообщение о желательности её включения. Типа того сообщения как когда макросы обновляются. Что если включите опцию, то переход будет более конкретным, что ли.
-
- Posts: 6721
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 34 times
- Been thanked: 505 times
LuaFAR Search
Трудно сказать, что правильнее, для этого надо знать предпочтения пользователей.
Но поскольку значение этой опции сохраняется в базе данных плагина, то достаточно сделать один поиск с включённой опцией, и она останется включённой на постоянной основе (пока пользователь не сбросит).
Но поскольку значение этой опции сохраняется в базе данных плагина, то достаточно сделать один поиск с включённой опцией, и она останется включённой на постоянной основе (пока пользователь не сбросит).
LuaFAR Search
Shmuel,
Обновил плагин до v3.43.3.
Макрос перехода из итогов Grep в заданное место файла работает отлично.
Большое спасибо Вам за терпеливую помощь в выяснении проблемы (это было очень полезно) и за оперативную правку макроса!
Он стал даже несколько более функциональным и, соответственно, более удобным.
Обновил плагин до v3.43.3.
Макрос перехода из итогов Grep в заданное место файла работает отлично.
Большое спасибо Вам за терпеливую помощь в выяснении проблемы (это было очень полезно) и за оперативную правку макроса!
Он стал даже несколько более функциональным и, соответственно, более удобным.
LuaFAR Search
поиск (?{1}((^\w[^\d]+_)+)|(^\w[^\d]+))(\.|_)(?{2}\d{2}\.\d{2}\.\d{2})\.(?{3}\S+)
Замена ${1} - ${3} - ${2}
Far все делает, а LuaFar Search пишет синтаксическую ошибку.
Подозреваю что не понимает именованную группу поиска
Замена ${1} - ${3} - ${2}
Far все делает, а LuaFar Search пишет синтаксическую ошибку.
Подозреваю что не понимает именованную группу поиска
-
- Posts: 6721
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 34 times
- Been thanked: 505 times
LuaFAR Search
GAAlex, это известная особенность.
Плагин работает с 4-мя библиотеками регулярных выражений. Каждая из них поддерживает именованные группы, но только библиотека "Far regex" не отдаёт эту поддержку плагинам через API, поэтому в самом Фаре это поддерживается, а в плагине - нет.
3 другие библиотеки плагина (Oniguruma, PCRE и PCRE2) поддерживают именованные группы, только надо иметь в виду, что в них применяются другие обрамляющие символы:
Плагин работает с 4-мя библиотеками регулярных выражений. Каждая из них поддерживает именованные группы, но только библиотека "Far regex" не отдаёт эту поддержку плагинам через API, поэтому в самом Фаре это поддерживается, а в плагине - нет.
3 другие библиотеки плагина (Oniguruma, PCRE и PCRE2) поддерживают именованные группы, только надо иметь в виду, что в них применяются другие обрамляющие символы:
<>
или ''
, а не {}
как в Фаре. Чуть подробнее - в справке плагина.LuaFAR Search
Shmuel,
Спасибо. переделал поиск.
Ищем (?<Group1>((^\w[^\d]+_)+)|(^\w[^\d]+))(\.|_)(?<Group2>\d{2}\.\d{2}\.\d{2})\.(?<Group3>\S+)
Меняем на ${Group1} - ${Group3} - ${Group2}
в плагине все работает, а вот при вызове пользовательского скрипта
получаю ошибку "Invalid escape sequence near '"(?<Group1>((^'
Спасибо. переделал поиск.
Ищем (?<Group1>((^\w[^\d]+_)+)|(^\w[^\d]+))(\.|_)(?<Group2>\d{2}\.\d{2}\.\d{2})\.(?<Group3>\S+)
Меняем на ${Group1} - ${Group3} - ${Group2}
в плагине все работает, а вот при вызове пользовательского скрипта
Code: Select all
nF, nR = lfsearch.MReplaceEditorAction( "replace",
{
bRegExpr=true,
sScope="block",
sOrigin="scope",
sRegexLib="pcre",
sSearchPat = "(?<Group1>((^\w[^\d]+_)+)|(^\w[^\d]+))(\.|_)(?<Group2>\d{2}\.\d{2}\.\d{2})\.(?<Group3>\S+)",
sReplacePat = "${Group1} - ${Group3} - ${Group2}",
}
)
-
- Posts: 6721
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 34 times
- Been thanked: 505 times
LuaFAR Search
Тут у вас действительно ошибки в этих самых escape sequences.
Либо удвойте бэкслеши, то есть: \\w, \\d и т.п., либо, если не хотите удваивать, обрамляйте всё выражение не в двойные кавычки, а в [[...]].
Кстати, функция MReplaceEditorAction соответствует не обычной построчной замене, а multi-line replace.Для обычной используйте ф-цию EditorAction.
Либо удвойте бэкслеши, то есть: \\w, \\d и т.п., либо, если не хотите удваивать, обрамляйте всё выражение не в двойные кавычки, а в [[...]].
Кстати, функция MReplaceEditorAction соответствует не обычной построчной замене, а multi-line replace.Для обычной используйте ф-цию EditorAction.