Latest post of the previous page:
во время выполнения макроса я макросы перегружаю. никаких неожиданных последствий это не вызовет?
Latest post of the previous page:
во время выполнения макроса я макросы перегружаю. никаких неожиданных последствий это не вызовет?
не должно быть более неожиданно, чем перезагрузка из любого другого места.
а зачем так жёстко? какое-то практическое применение такому подходу есть?buniak_a_h wrote: ↑Sat 25 Feb, 2023 19:38 far.MacroLoadAll([[%FARPROFILE%\Macros\scripts;]]..APanel.Path)
Вопроса (претензии) не понял. Стояла задача дозагрузить макросы из текущей папки и её подпапок, не теряя те, что загружены стандартно.
far.MacroAdd
(да ещё и проверять как-то на уникальность). Думаете, это - мягче?перегрузка макросов мягко говоря не очень лёгкая операция даже с моими тремя небольшими макросами, сколько это занимает с вашими гигабайтами — боюсь представить.
вот мне интересно, что за задача такая.buniak_a_h wrote: ↑Sun 05 Mar, 2023 01:11 Стояла задача дозагрузить макросы из текущей папки и её подпапок, не теряя те, что загружены стандартно.
вопрос в задаче. из того, что я смог себе представить, это создание папок/файлов по шаблону (генерация новых проектов и подобное) и нестандартный запуск (папкозависимые ассоциации). но это настолько простые вещи, что именно far.MacroAdd/far.MacroDelete были бы самым простым решением.
Судя по описанию, far.MarcoAdd может грузить только клавиатурные макросы. Это не так?
Судя по описанию, как раз не так.
priority
, который не актуален для клавиатурных макросов.callback
- аналог condition
.action
, а не code
в виде текста.Если far.MacroLoadAll Вам кажется слишком тяжелой задачей, давай те заменим на выполнение lua файла с фиксированным именем. Например, в нем можно поменять настройки редактора, режимы сортировки, горячие клавиши и т.п. используемые в конкретном каталоге. Честно говоря пример мне уже не нужен, у меня почти все работает.
В far.MacroAdd нет ни параметра code ни параметра action. Есть параметр SequenceText, который судя по описанию MacroControl(MCTL_ADDMACRO)
Есть мой скрипт LuaComplete Tabbed, там есть такой текст (слегка упрощённо):
Code: Select all
far.MacroAdd('MACROAREA_MENU', 0,
c,
[[
local FilterStr = Menu.FilterStr(0) or ''
Menu.FilterStr( 1, FilterStr.. akey(1,1) )
Menu.Filter(1,1)
]]
,'FilterStr ++ '..c,
function() return Menu.Id == MenuId end)
пример нужен мне. я тут примитивный макрос для установки состояний папок. на данный момент есть установка сортировки с порядком и выполнение кода при заходе. так вот с сортировкой я смог придумать только два полезных примера. с кодом — только подсказанный @buniak_a_h пример с открытием пользовательского меню.
элементарно делается.
зачем? настройки редактора можно уже больше 20 лет поменять при открытии файла в редакторе.
интересны конкретные примеры.
функцию кладёте в _G и вызываете, никаких проблем быть не должно.
Я знаю только Ваш макрос обработки vim modeline. Все остальное - изменение характеристик редактора в зависимости от расширения файлов.
Возможно, я неточно понял задачу (проблему). «В этом же файле» - это в каком? В том, в котором вызывается
far.MacroAdd
? Легко:
А описать в condition правило типаgotar wrote: ↑Sun 05 Mar, 2023 17:17 Про горячие клавиши: есть куча полезных макросов, которые не нужны при каждодневном использовании, а только при редактировании конкретного файла. Если их положить %FarProfile%\macros\scripts фар начинает вести себя хаотично. Хотелось бы использовать макросы только тогда, когда они нужны.
return far.ProcessName(F.PN_CMPNAMELIST, [[…(список масок файлов, в т.ч. имён масок)]], Editor.FileName)
?filemask
? Не?