Организация макросов, пользовательские хоткеи, настройки, …

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 12601
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 35 times
Been thanked: 260 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by John Doe »

Latest post of the previous page:

Я год к нему не прикасался, и даже не помню в каком он состоянии.
Функций там не добавилось.

gotar
Posts: 316
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by gotar »

У меня при старте Far выдается
при удалении rebind.lua из modules ругается только _macroinit.lua. Не могли бы Вы проверить, что в _macroinit.lua у Вас есть ?
Last edited by gotar on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [spoiler]

User avatar
John Doe
Бюрократ
Posts: 12601
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 35 times
Been thanked: 260 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by John Doe »

У меня так:

Code: Select all

local rebind = require"rebind"
if rebind then
  --rebind.Setup{auto_uids=true}
  rebind.Setup {auto_uids=true,no_warnings=true}
  rebind.LoadBindings()
end

gotar
Posts: 316
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by gotar »

Ошибка в строчке debug.setupvalue (LoadMacros, iAddMacro, AddMacroNew)в файле rebind.lua. При этом LoadMacros и AddMacroNew функции, а iAddMacro маленькое целое число. Может подскажите в чем дело?

gotar
Posts: 316
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by gotar »

Я думаю, что проблема где то в этом коде

Code: Select all

do --get LoadedMacros, set AddMacro
  local function getUpvalue(f,name)
    for i=1,1000 do
      local k,v = debug.getupvalue (f, i)
      if k==nil then
        error("unable to get upvalue: "..name)
      end
      if k==name then return v, i end
    end
  end
  LoadedMacros = getUpvalue(mf.GetMacroCopy,"LoadedMacros")
  local LoadMacros = getUpvalue(eval,"utils").LoadMacros
  local AddMacro,iAddMacro = getUpvalue(LoadMacros,"AddRegularMacro")
  if not mf.AddMacro then mf.AddMacro = AddMacro end
  far.Show(AddMacroNew)
  debug.setupvalue (LoadMacros,iAddMacro,AddMacroNew)
end
У Вас также?

User avatar
John Doe
Бюрократ
Posts: 12601
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 35 times
Been thanked: 260 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by John Doe »

gotar wrote: Ошибка в строчке debug.setupvalue (LoadMacros, iAddMacro, AddMacroNew)
Ошибка не здесь.
Это место, где подменяется функция Macro.

Попробуйте с пустой папкой scripts, и пустым _macroinit.lua (подключив там только rebind).
Потом добавьте свои макросы, по одному.

saboteur
Posts: 23
Joined: Tue 19 Mar, 2013 14:32
Has thanked: 4 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by saboteur »

Долго лазил по форуму, но так и не нашел, каким образом можно запустить из командной строки макрос, который не назначен ни на какую клавишу.

То есть хотелось бы что-то вроде
lua:my_personal_macro.lua
lua:c:/macros/another_macro.lua
(с поиском файла в стандартном месте в profile/macros/*, и с указанием полного пути к файлу)

Чтобы можно было такое вызвать и из командной строки и из пользовательского меню.
Вроде бы обсуждений было множество, но непонятно на чем остановились, и в справке не нахожу.

User avatar
HaRT
Moderator
Posts: 9238
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 93 times
Been thanked: 197 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by HaRT »

saboteur wrote: хотелось бы что-то
lua:@my_personal_macro.lua
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5972
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 25 times
Been thanked: 257 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by Shmuel »

saboteur wrote: каким образом можно запустить из командной строки макрос, который не назначен ни на какую клавишу.
Такие макросы могут быть запущены из макробраузера. Кроме того, если есть флаг RunAfterFARStart, то запустится при старте Far.
saboteur wrote: То есть хотелось бы что-то вроде lua:my_personal_macro.lua[/quote]Вы смешиваете понятия макрос и макрофайл. Один макрофайл может содержать много макросов.
Для запуска файла-скрипта есть синтаксис lua:@filename, описанный в мануале.

saboteur
Posts: 23
Joined: Tue 19 Mar, 2013 14:32
Has thanked: 4 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by saboteur »

Подскажите, что я делаю не так:

Code: Select all

myfile.lua
Macro {
  description="";
  area="Shell";
  flags="";
  code=".....(создать файл, ctrl+V, сохранить файл)..."
}
выполняю:
lua:@c:\...правильный путь к файлу..\myfile.lua

LuaMacro ошибка:
myfile.lua:1: attempt to call global 'Macro' (a nil value)
myfile.lua:in main chunk
Last edited by saboteur on Fri 12 May, 2017 16:04, edited 1 time in total.

User avatar
John Doe
Бюрократ
Posts: 12601
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 35 times
Been thanked: 260 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by John Doe »

Внутри файла (выполняемого таким образом) должен быть сразу код, без Macro, description, ...

saboteur
Posts: 23
Joined: Tue 19 Mar, 2013 14:32
Has thanked: 4 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by saboteur »

John Doe wrote:Внутри файла (выполняемого таким образом) должен быть сразу код, без Macro, description, ...
Странно почему так - если я записал макрос последовательностью клавиш, то нужно его теперь дополнительно редактировать, чтобы позволить его запустить из командной строки?

Спасибо за совет - ошибку выдавать перестало, но незаметно, чтобы действие выполнялось..
Сейчас файл макроса выглядит так:
code="Keys(\"ShiftF4 t e m p . t x t Enter CtrlA CtrlV F2 Esc\")";

То есть просто открывает на редактирование temp.txt в текущем каталоге, выделяет текст, вставляет из буфера, сохраняет, выходит.

Файл не создается ;(
Если сделать нормальный макрос и выполнить его через нажатие хоткея - этот же код отлично работает.

Что у меня снова не так... (
Или последовательности клавиш не поддерживаются в отдельновыполняемых lua-макросах?

P.S. 3.0 build 4949 x64
Last edited by saboteur on Mon 15 May, 2017 14:22, edited 1 time in total.

User avatar
HaRT
Moderator
Posts: 9238
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 93 times
Been thanked: 197 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by HaRT »

saboteur wrote: Сейчас файл макроса выглядит так:
code="Keys(\"ShiftF4 t e m p . t x t Enter CtrlA CtrlV F2 Esc\")";
Вы не от того пляшете. Описание макроса — это специального вида скрипт на Луа. Луа-код, котороый можно выполнить из командной строки, — это произвольный скрипт, с макросами никак не связанный.
Ваш код просто присваивает значение переменной. Странно было бы ожидать, что это откроет какой-то файл. Лучше всего напишите честный код, котороый сделает нужное Вам действие, вызывая FAR macro API. Читайте “%FarHome%\Encyclopedia\*.chm”.
Фар есть инструмент, а не нянька. © 2009 DrKnS

saboteur
Posts: 23
Joined: Tue 19 Mar, 2013 14:32
Has thanked: 4 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by saboteur »

Все получилось, спасибо!
Last edited by saboteur on Mon 15 May, 2017 14:38, edited 1 time in total.

Shmuel
Posts: 5972
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 25 times
Been thanked: 257 times

Организация макросов, пользовательские хоткеи, настройки, …

Post by Shmuel »

HaRT wrote: Луа-код, котороый можно выполнить из командной строки, — это произвольный скрипт, с макросами никак не связанный.
Небольшое уточнение:
При использовании префиксов lua: или moon:, код, исполняемый из комстроки, это всё-таки макрос, но "одноразовый" и безусловно исполняемый;
При использовании префиксов luas: или moons:, это не макрос, а просто немедленно исполняемый скрипт.

Post Reply

Return to “Обсуждение макросов”