LuaFAR Search

Здесь можно обсудить ваш любимый плагин.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

LuaFAR Search

Post by Shmuel »

Здесь можно обсуждать плагин LuaFAR Search. (Анонс).
User avatar
Mauro72
Posts: 220
Joined: Wed 11 Aug, 2010 00:23
Location: Rosario, Argentina
Been thanked: 9 times

LuaFAR Search

Post by Mauro72 »

Latest post of the previous page:

Spanish translation update to last version:
lfs_spa.lng.7z
(2.08 KiB) Downloaded 197 times
Excellent plugin Shmuel.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

LuaFAR Search

Post by Shmuel »

Mauro72 wrote: Spanish translation update to last version
Many thanks!
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

LuaFAR Search

Post by gotar »

Можно ли узнать, что такое reader.dll и посмотреть его исходный текст? Я думаю, что ucd - это Universal Charset Detector, но не очень понимаю как его использовать с lfsearch
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

LuaFAR Search

Post by Shmuel »

gotar
reader.dl - это вспомогательная утилита для быстрого чтения файлов, исходный код написан на Си.
ucd.dl - вы правильно определили.
Обе утилиты предназначены для внутреннего использования плагином, а не какого-либо иного использования.
Исходный код плагина на данный момент не выложен в свободный доступ.
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

LuaFAR Search

Post by gotar »

Нужно ли им менять расширение на dll?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

LuaFAR Search

Post by Shmuel »

gotar wrote: Нужно ли им менять расширение на dll?
Не нужно. Расширение изменено специально, чтобы Far не пытался грузить эти DLL как плагины.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaFAR Search

Post by John Doe »

Заинтересовался темой http://forum.farmanager.com/viewtopic.p ... 84#p140484, и попробовал оформить это пользовательским скриптом.

_usermenu.lua

Code: Select all

AddToMenu("e",":sep:Quotes")
AddToMenu ("e", "&'...'", nil, "scripts/quote", "'","'")
AddToMenu ("e", "&[...]", nil, "scripts/quote", "[","]")
AddToMenu ("e", "&{...}", nil, "scripts/quote", "{","}")
quote.lua

Code: Select all

local a,b = unpack(...)
lfsearch.EditorAction("test:replace", {
  bRegExpr=true,
  sScope="block",
  sOrigin="scope",
  sSearchPat = ".+",
  sReplacePat = a.."$0"..b,
})
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaFAR Search

Post by John Doe »

Обнаружил только что после замены выделение неправильно (не только скриптом, но и интерактивно).
На примере quote.lua, если выделить слово unpack, то после замены выделение будет в 2 раза больше чем надо, т.е. вылезет за конец строки.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaFAR Search

Post by John Doe »

P.S.
И не обнаружил функции многострочной замены для скриптов..
А встроенная интерактивная для данной задачи не очень подходит тем что не учитывает позиции начала и конца выделения.

Учитывая это изменил _usermenu.lua так:

Code: Select all

local sel = editor.GetSelection()
if sel and sel.StartLine==sel.EndLine then
  AddToMenu("e",":sep:Quotes")
  AddToMenu ("e", "&'...'", nil, "scripts/quote", "'","'")
  AddToMenu ("e", "&[...]", nil, "scripts/quote", "[","]")
  AddToMenu ("e", "&{...}", nil, "scripts/quote", "{","}")
end
Подозреваю, что это не совсем идеологически правильно, но не нашёл другого пути запретить работу при многострочном выделении.
Логично было бы использовать sInitFunc, но в справке не сказано что с её помощью можно отменять замену.
Last edited by John Doe on Sat 03 Sep, 2016 13:43, edited 1 time in total.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

LuaFAR Search

Post by Shmuel »

John Doe wrote: Обнаружил только что после замены выделение неправильно (не только скриптом, но и интерактивно)
Подтверждаю. Скорее всего, это недавно внесённый баг. Буду смотреть.
John Doe wrote: И не обнаружил функции многострочной замены для скриптов..
Она есть, только в хелпе её нет :(
John Doe wrote: А встроенная интерактивная для данной задачи не очень подходит тем что не учитывает позиции начала и конца выделения.
Это так. :(
John Doe wrote: Логично было бы использовать sInitFunc, но в справке не сказано что с её помощью можно отменять замену.
Есть bRepIsFunc.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaFAR Search

Post by John Doe »

Shmuel wrote: Есть bRepIsFunc.
Функция будет вызвана для каждого найденного вхождения в любом случае. Сдаётся, что мой метод прямолинейней).
Shmuel wrote: Это так.
Не вижу как полезно применить это неразличение.
Предлагаю выделение рассматривать строго, для вертикального блока тоже.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

LuaFAR Search

Post by Shmuel »

John Doe wrote: Не вижу как полезно применить это неразличение.
Ну там же вроде был смайлик "Sad", который не вошёл в цитату.
John Doe wrote: Предлагаю выделение рассматривать строго, для вертикального блока тоже.
Логично. Если руки дойдут.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaFAR Search

Post by John Doe »

Спасибо.
Shmuel wrote: Она есть, только в хелпе её нет
А пользоваться можно? Как она зовётся?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

LuaFAR Search

Post by Shmuel »

John Doe, вот все функции таблицы lfsearch:

Code: Select all

╔══════════════════════════╗
║  1│ EditorAction         ║
║  2│ MReplaceDialog       ║
║  3│ MReplaceEditorAction ║
║  4│ ReplaceFromPanel     ║
║  5│ SearchFromPanel      ║
║  6│ SetDebugMode         ║
╚══════ 6 arguments ═══════╝
Использование MReplaceEditorAction можно посмотреть в файле test_lfsearch.lua.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

LuaFAR Search

Post by Shmuel »

ccaid wrote: если использовать поиск от курсора, то обычно (в других плагинах, других редакторах) поиск доходит до конца файла и спрашивает, не продолжить ли с начала, и завершает круг при положительном ответе. здесь такой возможности нет.
Не прошло и года, и такая возможность уже есть. Правда сделано несколько по-другому: запроса пользователя нет, но в диалоге есть опция "Искать по кругу".
Last edited by Shmuel on Sat 17 Sep, 2016 08:49, edited 1 time in total.
User avatar
Sim
Posts: 435
Joined: Fri 12 Jun, 2009 09:43
Has thanked: 11 times
Been thanked: 2 times
Contact:

LuaFAR Search

Post by Sim »

Давно перешел на использование этого плагина в повседневной работе, часто выручает, но вот столкнулся с такой задачей, когда надо в большом списке файлов произвести замену текста по регулярному выражению, причем так, что искомый текст содержит перенос строки, LuaFAR Search умеет делать поиск когда весь файл воспринимается как одна строка, но почему нет этой опции при замене текста? Как бы нет препятствий для того чтобы такая опция таки была...
Last edited by Sim on Tue 25 Oct, 2016 23:37, edited 1 time in total.
Случайности не случайны.
Post Reply

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