LuaFAR Search

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

LuaFAR Search

Post by Shmuel »

Здесь можно обсуждать плагин LuaFAR Search. (Анонс).
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

LuaFAR Search

Post by Dennis_Moore »

Latest post of the previous page:

В продолжение о "залипании". Заметил что в историю папок они добавляются по какому-то непонятному алгоритму, а иногда новопосещенные которых не было в истории не добавляются совсем. Решился на удаление history.db и проблемы в LFE и истории папок вроде-бы пропали. В 4344 и 3837 есть что-то на тему history.db, может у меня только сейчас стало заметно ?
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

LuaFAR Search

Post by Dennis_Moore »

Shmuel, скажите пожалуйста какие Id у диалогов Find, Replace и Multi-Line Replace.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

LuaFAR Search

Post by Shmuel »

Dennis_Moore, есть макрос, позволяющий узнать Id для любого диалога или меню.
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

LuaFAR Search

Post by Dennis_Moore »

Shmuel wrote: Wed 21 Jun, 2017 06:30 Dennis_Moore, есть макрос, позволяющий узнать Id для любого диалога или меню.
Спасибо за макрос, очень выручит не только в этом случае.

--------------------------

Такой макрос почему-то не срабатывает:

Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

LuaFAR Search

Post by Shmuel »

Dennis_Moore wrote: Wed 21 Jun, 2017 11:37Такой макрос почему-то не срабатывает:
Как он может срабатывать, если area="Editor", а вы в condition проверяете Dlg.Id - в отсутствие диалога.
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

LuaFAR Search

Post by Dennis_Moore »

Спасибо. Исправил на area="Dialog". CtrlIns/ShiftIns плюс невнимательность.

---------------------------------------------------

Вместо макроса котрый я постил выше теперь у меня будут такие:

Last edited by Dennis_Moore on Wed 21 Jun, 2017 12:05, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

LuaFAR Search

Post by HaRT »

Dennis_Moore wrote: Wed 21 Jun, 2017 00:06какие Id у диалогов Find, Replace и Multi-Line Replace
Вы можете выяснить это самостоятельно, не дожидаясь ответа, вызвав по кнопкосочетанию, например, Lua Explorer „Advanced“ из интересующего диалога и посмотреть там Dlg|Id. Там ещё много всего интересного можно посмотреть.
Last edited by HaRT on Wed 21 Jun, 2017 12:30, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

LuaFAR Search

Post by Shmuel »

HaRT wrote: Wed 21 Jun, 2017 12:30Вы можете выяснить это самостоятельно, не дожидаясь ответа
Интересный совет, поскольку ответ уже поступил, за 6 часов до вашего поста.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

LuaFAR Search

Post by John Doe »

Shmuel wrote: Wed 21 Jun, 2017 12:42поскольку ответ уже поступил
Определённо задача пользователя уже решена, но собрать разные варианты ответов в одном месте тоже полезно. Поэтому добавлю ещё один.
  1. local str
  2.  
  3. MenuItem { description="Copy dialog/menu guid";
  4.  
  5.   menu="Plugins"; area="Dialog Menu";
  6.  
  7.   guid="3E4F79FB-DA50-4EB7-970C-5258638F9555";
  8.  
  9.   text=function(menu,area)
  10.  
  11.     local Id = area=="Menu" and Menu.Id or Dlg.Id
  12.  
  13.     for name,guid in pairs(far.Guids) do
  14.  
  15.       if guid == Id then
  16.  
  17.         name = "far.Guids." .. name
  18.  
  19.         str = name
  20.  
  21.         return "&% "..name
  22.  
  23.       end
  24.  
  25.     end
  26.  
  27.     str = ("%q"):format(Id)
  28.  
  29.     return "&% "..Id
  30.  
  31.   end;
  32.  
  33.   action=function()
  34.  
  35.     far.CopyToClipboard(str)
  36.  
  37.   end;
  38.  
  39. }
Отличается тем, что вместо сочетания клавиш использует меню плагинов, в котором сразу и отображает искомый гуид (по Enter копируется)
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

LuaFAR Search

Post by Smitis »

Dennis_Moore wrote: Wed 21 Jun, 2017 00:06скажите пожалуйста какие Id у диалогов Find, Replace и Multi-Line Replace.
John Doe wrote: Wed 21 Jun, 2017 13:51Определённо задача пользователя уже решена, но собрать разные варианты ответов в одном месте тоже полезно.
  1. ------------------------------------------------------------------------------------------------------------------------
  2.  
  3. -- CtrlAltShiftQ - полезная информация об элементе под курсором (панели, диалоги, меню, пр.)
  4.  
  5. -- CtrlAltShiftA - все элементы диалога
  6.  
  7. ------------------------------------------------------------------------------------------------------------------------
  8.  
  9. local F = far.Flags
  10.  
  11. local MaxLen = 80 -- максимальная длина для обрезки длинных значений
  12.  
  13. ------------------------------------------------------------------------------------------------------------------------
  14.  
  15. -- Поиск гуида в таблице far.Guids
  16.  
  17. _G.FindGuid = function(guid)
  18.  
  19.     if guid and guid:len()==16 then guid=win.Uuid(guid) end
  20.  
  21.     guid = guid and guid:upper() or ""
  22.  
  23.     for n,v in pairs(far.Guids) do
  24.  
  25.         if v == guid then
  26.  
  27.             return n
  28.  
  29.         end
  30.  
  31.     end
  32.  
  33.     return nil
  34.  
  35. end
  36.  
  37. -- Поиск флага в far.Flags
  38.  
  39. _G.FindFlag = function(flag,prefix)
  40.  
  41.     prefix = prefix and "^"..prefix or ".+"
  42.  
  43.     for n,v in pairs(far.Flags) do
  44.  
  45.         if flag==v and n:find(prefix) then
  46.  
  47.             return n
  48.  
  49.         end
  50.  
  51.     end
  52.  
  53.     return nil
  54.  
  55. end
  56.  
  57. ------------------------------------------------------------------------------------------------------------------------
  58.  
  59. Macro {
  60.  
  61.     description="Info";
  62.  
  63.     area="Common";
  64.  
  65.     key="CtrlAltShiftQ";
  66.  
  67.     action=function()
  68.  
  69.         local a = Area.Current
  70.  
  71.         local t = "Area:  " .. Area.Current
  72.  
  73.         local info = far.AdvControl(F.ACTL_GETWINDOWINFO)
  74.  
  75.         local object_id, owner_id
  76.  
  77.         if Area.Menu then
  78.  
  79.             a = "Menu"
  80.  
  81.             local menu_id = Menu.Id
  82.  
  83.             local menu_guid = FindGuid(menu_id)
  84.  
  85.             menu_guid = menu_guid and (" ("..menu_guid..")") or ""
  86.  
  87.             t =         "Area:  " .. Area.Current
  88.  
  89.                 .."\n".."ID:    " .. menu_id
  90.  
  91.                 .."\n".."Title:      " .. (Object.Title or ""):sub(1,MaxLen)
  92.  
  93.                 .."\n".."ItemStatus: " .. (Menu.ItemStatus() or "")
  94.  
  95.                 .."\n".."Value:      " .. (Menu.Value or ""):sub(1,MaxLen)
  96.  
  97.                 .."\n".."Type:       " .. info.TypeName
  98.  
  99.                 .."\n".."Name:       " .. info.Name
  100.  
  101.         elseif Area.MainMenu then
  102.  
  103.             a = "Menu"
  104.  
  105.             local guid = Menu.Id
  106.  
  107.             local guid_name = FindGuid(guid)
  108.  
  109.             guid_name = guid_name and (" ("..guid_name..")") or ""
  110.  
  111.             t =         "Area:  " .. Area.Current
  112.  
  113.                 .."\n".."ID:    " .. (guid or "")
  114.  
  115.                 .."\n".."Title:      " .. (Object.Title or ""):sub(1,MaxLen)
  116.  
  117.                 .."\n".."ItemStatus: " .. (Menu.ItemStatus() or "")
  118.  
  119.                 .."\n".."Value:      " .. (Menu.Value or ""):sub(1,MaxLen)
  120.  
  121.                 .."\n".."Type:       " .. info.TypeName
  122.  
  123.                 .."\n".."Name:       " .. info.Name
  124.  
  125.         elseif Area.UserMenu then
  126.  
  127.             a = "UserMenu"
  128.  
  129.             local guid = Menu.Id
  130.  
  131.             local guid_name = FindGuid(guid)
  132.  
  133.             guid_name = guid_name and (" ("..guid_name..")") or ""
  134.  
  135.             t =         "Area:  " .. Area.Current
  136.  
  137.                 .."\n".."ID:    " .. guid
  138.  
  139.                 .."\n".."Title: " .. (Object.Title or ""):sub(1,MaxLen)
  140.  
  141.                 .."\n".."ItemStatus: " .. (Menu.ItemStatus() or "")
  142.  
  143.                 .."\n".."Value:      " .. (Menu.Value or ""):sub(1,MaxLen)
  144.  
  145.         elseif Area.Dialog then
  146.  
  147.             a = "Dialog"
  148.  
  149.             local dlg_h = info.Id
  150.  
  151.             local coord = dlg_h:send(F.DM_GETDLGRECT,0,0)
  152.  
  153.             local focus = dlg_h:send(F.DM_GETFOCUS)
  154.  
  155.             local item = dlg_h:send(F.DM_GETDLGITEM,focus)
  156.  
  157.             local item_type = FindFlag(item[1],"DI_")
  158.  
  159.             local dlg_guid = Dlg.Id
  160.  
  161.             local dlg_owner = Dlg.Owner
  162.  
  163.             local dlg_guid_name = FindGuid(dlg_guid)
  164.  
  165.             local dlg_owner_name = FindGuid(dlg_owner)
  166.  
  167.             local dlg_title = Object.Title
  168.  
  169.             t =         "Area:  " .. Area.Current
  170.  
  171.                 .."\n".."ID:    " .. dlg_guid .. (dlg_guid_name and (" ("..dlg_guid_name..")") or "")
  172.  
  173.                 .."\n".."Owner: " .. dlg_owner .. (dlg_owner_name and (" ("..dlg_owner_name..")") or "")
  174.  
  175.                 .."\n".."Title: " .. (dlg_title or ""):sub(1,MaxLen)
  176.  
  177.                 .."\n".."Coord: " .. ("X1=%i Y1=%i X2=%i Y2=%i"):format(coord.Left,coord.Top,coord.Right,coord.Bottom)
  178.  
  179.                 .."\n".."Size:  " .. ("Width=%i Height=%i"):format(coord.Right-coord.Left+1,coord.Bottom-coord.Top+1)
  180.  
  181.                 .."\n".."Type:  " .. info.TypeName
  182.  
  183.                 .."\n".."Name:  " .. info.Name
  184.  
  185.                 .."\n"
  186.  
  187.                 .."\n".."Focus:    " .. focus
  188.  
  189.                 .."\n".."ItemType: " .. item[1] .. (item_type and " ("..item_type..")" or "")
  190.  
  191.                 .."\n".."Value:    " .. item[10]:sub(1,MaxLen)
  192.  
  193.                 .."\n".."Coord:    " .. ("X1=%i Y1=%i X2=%i Y2=%i"):format(item[2],item[3],item[4],item[5])
  194.  
  195.                 .."\n".."Size:     " .. ("Width=%i Height=%i"):format(item[4]-item[2]+1,item[5]-item[3]+1)
  196.  
  197.         elseif Area.Dialog then
  198.  
  199.             a = "Dialog"
  200.  
  201.             local dlg_h = info.Id
  202.  
  203.             local coord = dlg_h:send(F.DM_GETDLGRECT,0,0)
  204.  
  205.             local focus = dlg_h:send(F.DM_GETFOCUS)
  206.  
  207.             local item = dlg_h:send(F.DM_GETDLGITEM,focus)
  208.  
  209.             local item_type = FindFlag(item[1],"DI_")
  210.  
  211.             local dlg_info = dlg_h:send(F.DM_GETDIALOGINFO,0)
  212.  
  213.             local dlg_guid = win.Uuid(dlg_info.Id):upper()
  214.  
  215.             local dlg_owner = win.Uuid(dlg_info.Owner):upper()
  216.  
  217.             local dlg_guid_name = FindGuidS(dlg_guid)
  218.  
  219.             local dlg_owner_name = FindGuidS(dlg_owner)
  220.  
  221.             local dlg_title = dlg_h:send(F.DM_GETDIALOGTITLE,0)
  222.  
  223.             local menu_value = Menu.Value
  224.  
  225.             t =         "Area:  " .. Area.Current
  226.  
  227.                 .."\n".."ID:    " .. dlg_guid .. (dlg_guid_name and (" ("..dlg_guid_name..")") or "")
  228.  
  229.                 .."\n".."Owner: " .. dlg_owner .. (dlg_owner_name and (" ("..dlg_owner_name..")") or "")
  230.  
  231.                 .."\n".."Title: " .. (dlg_title or ""):sub(1,MaxLen)
  232.  
  233.                 .."\n".."Coord: " .. ("X1=%i Y1=%i X2=%i Y2=%i"):format(coord.Left,coord.Top,coord.Right,coord.Bottom)
  234.  
  235.                 .."\n".."Size:  " .. ("Width=%i Height=%i"):format(coord.Right-coord.Left+1,coord.Bottom-coord.Top+1)
  236.  
  237.                 .."\n".."Type:  " .. info.TypeName
  238.  
  239.                 .."\n".."Name:  " .. info.Name
  240.  
  241.                 .."\n"
  242.  
  243.                 .."\n".."Focus:     " .. focus
  244.  
  245.                 .."\n".."ItemType:  " .. item[1] .. (item_type and " ("..item_type..")" or "")
  246.  
  247.                 .."\n".."Value:     " .. item[10]:sub(1,MaxLen)
  248.  
  249.                 .."\n".."Coord:     " .. ("X1=%i Y1=%i X2=%i Y2=%i"):format(item[2],item[3],item[4],item[5])
  250.  
  251.                 .."\n".."Size:      " .. ("Width=%i Height=%i"):format(item[4]-item[2]+1,item[5]-item[3]+1)
  252.  
  253.                 .."\n".."MenuValue: " .. (menu_value or "")
  254.  
  255.         elseif Area.Search then
  256.  
  257.             a = "Search"
  258.  
  259.             t =         "Area:  " .. Area.Current
  260.  
  261.                 .."\n".."Title:    " .. (Object.Title or "")
  262.  
  263.                 .."\n".."Focus:    " .. Dlg.SetFocus()
  264.  
  265.                 .."\n".."Value:    " .. Dlg.GetValue(-1,0):sub(1,MaxLen)
  266.  
  267.                 .."\n".."ItemType: " .. Dlg.ItemType
  268.  
  269.                 --.."\n"..win.Uuid(id)
  270.  
  271.         elseif Area.Shell then
  272.  
  273.             local dir = panel.GetPanelDirectory(nil,1)
  274.  
  275.             a = "Shell"
  276.  
  277.             t =         "Area:     " .. Area.Current
  278.  
  279.                 .."\n".."Name:     " .. dir.Name
  280.  
  281.                 .."\n".."Param:    " .. dir.Param
  282.  
  283.                 .."\n".."PluginId: " .. string.upper(win.Uuid(dir.PluginId))
  284.  
  285.                 .."\n".."File:     " .. dir.File
  286.  
  287.                 .."\n".."Type:     " .. info.TypeName
  288.  
  289.                 --.."\n".."Name:     " .. info.Name
  290.  
  291.         elseif Area.Disks then
  292.  
  293.             a = "Disks"
  294.  
  295.             t =         "Area:  " .. Area.Current
  296.  
  297.                 .."\n".."Title: " .. (Object.Title or ""):sub(1,MaxLen)
  298.  
  299.                 .."\n".."Type:  " .. info.TypeName
  300.  
  301.                 .."\n".."Name:  " .. info.Name
  302.  
  303.                 .."\n"
  304.  
  305.                 .."\n".."Value: " .. (Menu.Value or ""):sub(1,MaxLen)
  306.  
  307.         else
  308.  
  309.             a = "Unknown"
  310.  
  311.             t =         "Area:  " .. Area.Current
  312.  
  313.                 .."\n".."Title: " .. (Object.Title or ""):sub(1,MaxLen)
  314.  
  315.                 .."\n".."ID:    " .. Dlg.Id
  316.  
  317.                 .."\n".."ID:    " .. Menu.Id
  318.  
  319.                 .."\n".."Type:  " .. info.TypeName
  320.  
  321.                 .."\n".."Name:  " .. info.Name
  322.  
  323.    
  324.  
  325.         end
  326.  
  327.         msgbox(a.." info", t, 8)
  328.  
  329.     end;
  330.  
  331. }
  332.  
  333. ------------------------------------------------------------------------------------------------------------------------
  334.  
  335. local AllItemsListId = "6FC32E48-2857-4487-8B46-B658C1C8B585"
  336.  
  337. local AllItemsViewId = "98B202E2-EB02-4B42-8375-59876F2A5367"
  338.  
  339. Macro {
  340.  
  341.     description="Info: All dialog items";
  342.  
  343.     area="Dialog";
  344.  
  345.     key="CtrlAltShiftA";
  346.  
  347.     action=function()
  348.  
  349.         local t = ""
  350.  
  351.         local info = far.AdvControl(F.ACTL_GETWINDOWINFO,nil)
  352.  
  353.         local dlg = info.Id
  354.  
  355.         local focus = dlg:send("DM_GETFOCUS")
  356.  
  357.         local item, itemtype
  358.  
  359.         local items = {}
  360.  
  361.         local hotkeys = { {BreakKey="F3"} }
  362.  
  363.         local current = 0
  364.  
  365.         local itemnum = 0
  366.  
  367.         while true do
  368.  
  369.             itemnum = itemnum+1
  370.  
  371.             item = dlg:send(F.DM_GETDLGITEM,itemnum)
  372.  
  373.             if item==nil then break end
  374.  
  375.             itemtype = FindFlag(item[1],"DI_")
  376.  
  377.             items[#items+1] = {
  378.  
  379.                 text="Item "..tostring(itemnum).."; Type: "..tostring(item[1])..(itemtype and " ("..itemtype..")" or ""),
  380.  
  381.             }
  382.  
  383.             if itemnum == focus then
  384.  
  385.                 current = #items
  386.  
  387.                 items[#items].checked = true
  388.  
  389.             end
  390.  
  391.             items[#items+1] = {
  392.  
  393.                 text="    "..item[10],
  394.  
  395.                 grayed=true,
  396.  
  397.             }
  398.  
  399.             items[#items+1] = {
  400.  
  401.                 text="    "..("X1=%i Y1=%i X2=%i Y2=%i W=%i H=%i"):format(item[2],item[3],item[4],item[5],item[4]-item[2]+1,item[5]-item[3]+1),
  402.  
  403.                 grayed=true,
  404.  
  405.             }
  406.  
  407.         end
  408.  
  409.         far.Menu(
  410.  
  411.             {
  412.  
  413.                 Title="Dialog: "..info.Name,
  414.  
  415.                 Bottom="F3: View",
  416.  
  417.                 SelectIndex=current,
  418.  
  419.                 Id=win.Uuid(AllItemsListId),
  420.  
  421.                 Flags=bor(F.FMENU_SHOWAMPERSAND,F.FMENU_WRAPMODE),
  422.  
  423.                 MaxHeight=21,
  424.  
  425.             },
  426.  
  427.             items, hotkeys
  428.  
  429.         )
  430.  
  431.     end;
  432.  
  433. }
  434.  
  435. ------------------------------------------------------------------------------------------------------------------------
Пара макросов, показывающих полезную информацию.
Разум когда-нибудь победит.
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

LuaFAR Search

Post by Dennis_Moore »

Всем спасибо за помощь!

John Doe wrote: Wed 21 Jun, 2017 13:51 собрать разные варианты ответов в одном месте тоже полезно
Может перенести ответы в отдельную тему ?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

LuaFAR Search

Post by John Doe »

Кажется подобная тема была.. Поискать надо
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

LuaFAR Search

Post by IgorZ »

Раз пошла такая пьянка, для полноты картины выложу макрос, который скачал когда-то давно с форума, уже не помню, откуда.
  1. Macro {
  2.  
  3.   area="Common"; key="CtrlAltF12"; description="Show context info"; action = function()
  4.  
  5. s =        "MacroArea   : "..Area.Current;
  6.  
  7. s =   s.."\nTitle       : "..Object.Title;
  8.  
  9. if  Area.Menu or Area.MainMenu or Area.UserMenu or Area.Disks then
  10.  
  11.   s = s.."\nGUID        : "..(Menu.Id and Menu.Id or "");
  12.  
  13.   s = s.."\nPos/Count   : "..Object.CurPos.." / "..Object.ItemCount;
  14.  
  15.   s = s.."\nMenu.Value  : "..Menu.Value;
  16.  
  17. end
  18.  
  19. if Area.Dialog then
  20.  
  21.   s = s.."\nGUID        : "..(Dlg.Id and Dlg.Id or "")
  22.  
  23.   s = s.."\nItemType    : "..Dlg.ItemType;
  24.  
  25.   s = s.."\nValue       : "..Dlg.GetValue(-1, 0);
  26.  
  27.   s = s.."\nControls    : "..Dlg.CurPos.." / "..Dlg.ItemCount;
  28.  
  29.   s = s.."\nPos/Count   : "..Object.CurPos.." / "..Object.ItemCount;
  30.  
  31. end
  32.  
  33. if Area.DialogAutoCompletion then
  34.  
  35.   s = s.."\nGUID        : "..(Dlg.Id and Dlg.Id or "")
  36.  
  37.   s = s.."\nItemType    : "..Dlg.ItemType;
  38.  
  39.   s = s.."\nValue       : "..Dlg.GetValue(-1, 0);
  40.  
  41.   s = s.."\nControls    : "..Dlg.CurPos.." / "..Dlg.ItemCount;
  42.  
  43.   s = s.."\nPos/Count   : "..Object.CurPos.." / "..Object.ItemCount;
  44.  
  45. end
  46.  
  47. if  Area.Shell then
  48.  
  49.   s = s.."\nCurrent     : "..APanel.Current;
  50.  
  51.   s = s.."\nPath        : "..APanel.Path;
  52.  
  53.   if APanel.Plugin then
  54.  
  55.     s = s.."\n--- Plugin panel ---";
  56.  
  57.     s = s.."\nPrefix      : "..APanel.Prefix;
  58.  
  59.     if APanel.HostFile then
  60.  
  61.       s = s.."\nHostFile    : "..APanel.HostFile;
  62.  
  63.     end
  64.  
  65.   end
  66.  
  67.   s = s.."\n--- Items ---";
  68.  
  69.   s = s.."\nCurrent     : "..APanel.CurPos;
  70.  
  71.   s = s.."\nTotal       : "..APanel.ItemCount;
  72.  
  73.   s = s.."\nSelected    : "..APanel.SelCount;
  74.  
  75. end
  76.  
  77. msgbox("Current info",s,8)
  78.  
  79. end
  80.  
  81. }
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

LuaFAR Search

Post by buniak_a_h »

В плане обсуждения (хотелок) к плугину LuaFAR Search.
У меня имеется папка с очень длинным путём (который сложно поменять, т.к. на это завязаны многие программы). Для удобства работы (в том числе и для работы в бригаде) папка "отражена (построена символическая ссылка) на более близкий каталог. Кроме того, имеются РЕАЛЬНЫЕ каталоги, путь к которым удобно задавать из ссылочных (например, через пути типа ..\work\...).
НО! У Вашего плугина есть одна неудобная черта: если файлы найдены В ПОДКАТАЛОГАХ "стартового" каталога (ищу в подкаталогах, начиная с текущего), то найденные файлы заносятся во временную панель с НАСТОЯЩИМ (исходным) путём (если файлы находятся на "стартовом" каталоге, то они заносятся с адресом ссылки!). При том, что поиск производился в "ссылочном" каталоге и всех его подкаталогах. Это очень неудобно: при переходе по найденному файлу меня "выбрасывает" не только в другой каталог, но и на другой диск.
Флаг "Искать в символических ссылках" на результат не влияет.
Проявляется при поиске в текущем каталоге и его вложенных; только если файл найден во вложенном каталоге. При том, что корневой (стартовый для поиска) каталог является символической ссылкой.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

LuaFAR Search

Post by Shmuel »

buniak_a_h
Да, есть такое, причём так сделано в последней версии.
Подумаю, как это поправить. Сделать срочно не обещаю.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

LuaFAR Search

Post by buniak_a_h »

Shmuel, если будете переделывать, то, может, добавите (для дружественности интерфейса) пару мелких, но удобных фишек?
  1. при настройке "Подставлять строку поиска из: редактора", если слово под курсором не найдено, всё же подставлять из истории (вместо пустой строки поиска)
  2. при настройке "Подставлять строку поиска из: истории" сделать в диалоге кнопку "From editor", чтобы можно было брать слово под курсором из редактора.
Вторая фишка есть в EdtFind, и это - удобно. Наверно, это - не очень сложно... Можно, конечно, исправить макросом (не зря же у Вас спрашивали ID диалога! ;-) ). Но удобнее было бы, наверно, реализовать в плугине
Post Reply

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