Помощь в написании Lua-плагина

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
User avatar
Majestio
Posts: 32
Joined: Mon 22 Aug, 2016 08:58
Has thanked: 2 times

Помощь в написании Lua-плагина

Post by Majestio »

Latest post of the previous page:

buniak_a_h, упс ... немного не понял :( Покажи, плс, правильный код.
Если что, мне надо как-то "адресоваться" к моему конфигу "C:\Tools\Far3-x64\Profile\Macros\scripts\EditorTools\EditorTools.conf", но только не "хардкодом".
Last edited by Majestio on Sat 11 Apr, 2020 11:41, edited 1 time in total.
buniak_a_h
Posts: 2319
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 248 times
Contact:

Помощь в написании Lua-плагина

Post by buniak_a_h »

Majestio wrote: Sat 11 Apr, 2020 11:39 buniak_a_h, упс ... немного не понял :( Покажи, плс, правильный код.
Так примерно:
  1. local MacroFileName = ...
  2. Macro{
  3.   id="881D3212-2745-4B28-8EAC-9D94C0775755";
  4.   area="Common";
  5.   key="CtrlAltQ";
  6.   description="Путь к файлу с макросом";
  7.   flags="";
  8.   action=function()
  9.    far.Show(MacroFileName)
  10.   end;
  11. }

P/S Проверил - работает
Last edited by buniak_a_h on Sat 11 Apr, 2020 11:46, edited 1 time in total.
User avatar
Majestio
Posts: 32
Joined: Mon 22 Aug, 2016 08:58
Has thanked: 2 times

Помощь в написании Lua-плагина

Post by Majestio »

buniak_a_h, т.е. ... для этого надо генерить свой GUID и без него никак?
buniak_a_h
Posts: 2319
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 248 times
Contact:

Помощь в написании Lua-плагина

Post by buniak_a_h »

Нет, GUID тут ни при чём. Это (а)правила хорошего тона - чтоб у каждого макроса был свой гуид; (б) даёт преимущества (например, для поиска в одном скрипте макроса из другого скрипта, даже если на него не назначен хоткей, и выполнение функции action) и (в) у меня макрос вставления "рыбы" макроса есть скрипт, который вставляет GUID.
На самом деле даже макрос не нужен. Создайте маленький скрипт из двух строк:

Code: Select all

local MacroFileName = ...
far.Show(MacroFileName)
поместите этот файл в %FARPROFILE%\\Macros\scripts\ или его подкаталог - и каждый раз при загрузке макросов будете получать это сообщение (при старте ФАР-а, после команды macro:load или после перезагрузки макросов скриптом)
Last edited by buniak_a_h on Sat 11 Apr, 2020 15:14, edited 1 time in total.
User avatar
Smitis
Posts: 1640
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 times

Помощь в написании Lua-плагина

Post by Smitis »

Majestio wrote: Sat 11 Apr, 2020 11:39 Если что, мне надо как-то "адресоваться" к моему конфигу "C:\Tools\Far3-x64\Profile\Macros\scripts\EditorTools\EditorTools.conf", но только не "хардкодом".
Меняем расширение "lua" на "conf"

Code: Select all

local conffile = (...):gsub("[^.]+$","conf")
Имя будет то же, что и у скрипта с другим расширением.
Last edited by Smitis on Sat 11 Apr, 2020 15:23, edited 1 time in total.
Разум когда-нибудь победит.
User avatar
Majestio
Posts: 32
Joined: Mon 22 Aug, 2016 08:58
Has thanked: 2 times

Помощь в написании Lua-плагина

Post by Majestio »

Smitis, вообще у меня какая-то дичь! получается :-\
Напиши пожалуйста код, который выводит каталог, где лежит мой скрипт - тупо в message.
User avatar
Smitis
Posts: 1640
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 times

Помощь в написании Lua-плагина

Post by Smitis »

Получить полный путь к скрипту (с конечным "\") можно так: mf.fsplit((...),3)
Разум когда-нибудь победит.
buniak_a_h
Posts: 2319
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 248 times
Contact:

Помощь в написании Lua-плагина

Post by buniak_a_h »

Majestio, есть ещё функция mf.fsplit - синтаксическая разборка имени. Для замены расширения я бы сделал так (сбс-но, так и делал)

Code: Select all

local CfgName = mf.fsplit(MacroFileName, 7) .. '.conf'
тут MacroFileName - переменная из моего скриптика. Рекомендую всё же присвоить переменной: потом потребуется для языкового файла или ещё для чего.
Last edited by buniak_a_h on Sat 11 Apr, 2020 15:34, edited 1 time in total.
buniak_a_h
Posts: 2319
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 248 times
Contact:

Помощь в написании Lua-плагина

Post by buniak_a_h »

Опоздал …
User avatar
Majestio
Posts: 32
Joined: Mon 22 Aug, 2016 08:58
Has thanked: 2 times

Помощь в написании Lua-плагина

Post by Majestio »

Smitis, нельзя так советовать!!!!
Решил попробовать, и получил:
Image
User avatar
Majestio
Posts: 32
Joined: Mon 22 Aug, 2016 08:58
Has thanked: 2 times

Помощь в написании Lua-плагина

Post by Majestio »

buniak_a_h, не опоздал!!! Пока без тебя мне мало инфы дали. Такшта - пока уповаю только на тебя :(
buniak_a_h
Posts: 2319
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 248 times
Contact:

Помощь в написании Lua-плагина

Post by buniak_a_h »

Majestio wrote: Sat 11 Apr, 2020 15:35 Smitis, нельзя так советовать!!!!
Решил попробовать, и получил: <…>
Т.е. я не зря присваивал три_точки в переменную. Иначе непонятно, к какой функции они относятся.
User avatar
Smitis
Posts: 1640
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 times

Помощь в написании Lua-плагина

Post by Smitis »

Majestio,
Поставьте в начало скрипта far.Show(mf.fsplit((...),3)) и перезагрузите макросы.
Без скобок вокруг ... тоже сработает
Last edited by Smitis on Sat 11 Apr, 2020 16:40, edited 1 time in total.
Разум когда-нибудь победит.
User avatar
Majestio
Posts: 32
Joined: Mon 22 Aug, 2016 08:58
Has thanked: 2 times

Помощь в написании Lua-плагина

Post by Majestio »

Smitis, увы - все равно ругается.
вот полный код макро:

Code: Select all

local EditorTools = function ()
  local Choice=Menu.Show('aaaaa\nbbbbb\nccccc', nil, 8+0x200)
  -- local CurPath = far.PluginStartupInfo().ModuleDir..'scripts\\EditorTools'
  -- local CurPath = mf.fsplit(...,3)
  -- far.Message(CurPath)
  far.Show(mf.fsplit((...),3))
end

Macro {
  area="Editor"; key="ShiftF12"; flags=""; description="EditorTools Dialog"; 
  action = function()
    EditorTools()
  end;
}
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

Помощь в написании Lua-плагина

Post by zg »

Code: Select all

local filename=...
local EditorTools = function ()
  local Choice=Menu.Show('aaaaa\nbbbbb\nccccc', nil, 8+0x200)
  -- local CurPath = far.PluginStartupInfo().ModuleDir..'scripts\\EditorTools'
  -- local CurPath = mf.fsplit(...,3)
  -- far.Message(CurPath)
  far.Show(mf.fsplit(filename,3))
end

Macro {
  area="Editor"; key="ShiftF12"; flags=""; description="EditorTools Dialog";
  action = function()
    EditorTools()
  end;
}
User avatar
Majestio
Posts: 32
Joined: Mon 22 Aug, 2016 08:58
Has thanked: 2 times

Помощь в написании Lua-плагина

Post by Majestio »

zg, кросава!!!!!
deleted: А где лежит имя-файла запускаемого макро? (вопрос отпал)
Last edited by Majestio on Mon 13 Apr, 2020 18:10, edited 1 time in total.
Post Reply

Return to “Нужна помощь”