Собственно, сабж.
Или, может быть, есть возможность задать несколько макросов в одном файле? Если просто скопировать их в один файл, то не работает.
Чтобы не копировать один и тот же код в несколько файлов.
Как включить другой файл кода в клавиатурный макрос?
-
- Posts: 82
- Joined: Thu 14 Jul, 2016 11:17
- Has thanked: 22 times
-
- Posts: 6970
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 42 times
- Been thanked: 562 times
Как включить другой файл кода в клавиатурный макрос?
Вам уже рассказали про папку Encyclopedia. Там есть мануал на русском языке.
"Клавиатурные" макросы - только один на файл. "Стационарные" - сколько угодно макросов в одном файле.
"Клавиатурные" макросы - только один на файл. "Стационарные" - сколько угодно макросов в одном файле.
-
- Posts: 82
- Joined: Thu 14 Jul, 2016 11:17
- Has thanked: 22 times
Как включить другой файл кода в клавиатурный макрос?
Это не отвечает на вопрос в заголовке.Shmuel wrote: Thu 13 Feb, 2025 18:35 "Клавиатурные" макросы - только один на файл. "Стационарные" - сколько угодно макросов в одном файле.
- John Doe
- Бюрократ
- Posts: 14174
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 80 times
- Been thanked: 454 times
- Contact:
Как включить другой файл кода в клавиатурный макрос?
Если нужно переиспользовать код, то можно поместить его в глобальную переменную _G (нежелательно), либо использовать модули lua - см. мануал по луа.
Это если отвечать исключительно на вопрос в заголовке, потому что в посте вы резко смещаете контекст.
https://t.me/FarManager — Telegram чат
- buniak_a_h
- Posts: 4459
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 239 times
- Been thanked: 665 times
- Contact:
Как включить другой файл кода в клавиатурный макрос?
Если нужно переиспользовать код, и его можно оформить в виде функции, то посмотрите про модули. Пишете скрипт, возвращающий функцию; помещаете его в %FarProfile%\Macros\modules\FIO; в коде своего макроса пишете нечто типа
и вызываете переменную SharedFunc(…) как будто функция помещена в Ваш макрос
Увы, #include в LUA нету…
Code: Select all
local SharedFunc = require"FIO.SharedFunc"
Увы, #include в LUA нету…
-
- Posts: 82
- Joined: Thu 14 Jul, 2016 11:17
- Has thanked: 22 times
Как включить другой файл кода в клавиатурный макрос?
Last edited by CodeMonkey on Sat 15 Feb, 2025 23:58, edited 1 time in total.
- buniak_a_h
- Posts: 4459
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 239 times
- Been thanked: 665 times
- Contact:
Как включить другой файл кода в клавиатурный макрос?
CodeMonkey wrote: Sat 15 Feb, 2025 23:58 А если просто сделать?Code: Select all
require("SharedFuncs")
- Можно и без FIO, но тогда модуль надо класть в %FarProfile%\Macros\modules и со временем там будет такая помойка-свалка! Надо как-то структурировать. Я для себя принял стандарт, что все мои модули собраны в подпапке BAX. Мне кажется, это - хороший тон.
- Просто оператор
require
вернёт функцию; её надо либо занести в переменную (как я написал), либо вызвать типа такого:Но опять же со временем может получиться, что таких «разделяемых» функций будет несколько. Лично мне было бы влом писать модуль для каждой функции. Я в таких случаях пишу модуль, возвращающий таблицу, содержащую несколько (тематически связанных, но это - необязательно) функций.Code: Select all
require("SharedFuncs")(…)
- Можно, наверно, и без функции и вызова её обойтись, но код, записанный в модуле, не будет иметь доступ к переменным основного макроса и, соответственно, не смогут туда ничего вернуть (ну, может только через
_G
, но это - плохой стиль). Поэтому лучше, мне кажется, оформлять функцию, вызывать с параметрами и использовать её возврат.
- John Doe
- Бюрократ
- Posts: 14174
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 80 times
- Been thanked: 454 times
- Contact:
Как включить другой файл кода в клавиатурный макрос?
Это возможно.CodeMonkey wrote: Sat 15 Feb, 2025 23:58 А если просто сделатьCode: Select all
require("SharedFuncs")
- Действительно в файле могут определяться глобальные идентификаторы.
Но вообще начиная с Lua 5.1 так делать не принято. - Да, можно вернуть не одну функцию, а таблицу.
Last edited by HaRT on Sun 16 Feb, 2025 12:51, edited 1 time in total.
Reason: Исправлен источник цитаты
Reason: Исправлен источник цитаты
https://t.me/FarManager — Telegram чат