Макросы для редактора Журко

Здесь обсуждается всё, что касается макросов.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Макросы для редактора Журко

Post by Shmuel »

Latest post of the previous page:

John Doe wrote: Sun 21 Feb, 2021 17:15 насколько я могу судить (бегло взглянув) - своим вмешательством вы портите работу moonscript.
Насчёт вмешательства не знаю (не смотрел код автора), но чтобы испортить moonscript (непреднамеренно), это надо постараться :)
Другое дело, что обычно для макросов package.preload как бы не нужен, но о вкусах не спорят.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Макросы для редактора Журко

Post by John Doe »

Shmuel wrote: Sun 21 Feb, 2021 17:38 но чтобы испортить moonscript (непреднамеренно), это надо постараться :)
Тут происходит примерно это:

Code: Select all

package.preload = {}
Но да, мунскрипт вроде жив)
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Макросы для редактора Журко

Post by Shmuel »

John Doe wrote: Sun 21 Feb, 2021 18:01 Тут происходит примерно это:

Code: Select all

package.preload = {}
Но да, мунскрипт вроде жив)
Не, если так, то уже не жив.
Попробуйте после этой операции вызвать lm:about - в диалоге мунскрипта уже не будет.
(Если у вас установлен в системе мунскрипт отдельно от Фара, он подхватится, если нет, то мунскрипт этим действием наполовину (или больше) убит).
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

Макросы для редактора Журко

Post by Дмитрий Журко »

Shmuel wrote: Sun 21 Feb, 2021 18:10 (Если у вас установлен в системе мунскрипт отдельно от Фара, он подхватится, если нет, то мунскрипт этим действием наполовину (или больше) убит).
Пока я этот макрос не распространяю. Мало того, паранойя мешает и я начинаю грешить на этот приём, когда дело не в нём. И да, может быть не preload, а loaded. Причина в том, что переименованные функции сохраняются в кэше и работают. У меня, но не у пользователей, конечно. И прежние, а не обновлённые. Был бы рад получить совет. Пока переименовываю я часто, так как стиль ещё предстоит сформировать полностью, когда прочту больше чужого кода.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Макросы для редактора Журко

Post by Shmuel »

Дмитрий Журко wrote: Sun 21 Feb, 2021 19:40 переименованные функции сохраняются в кэше и работают. У меня, но не у пользователей, конечно. И прежние, а не обновлённые. Был бы рад получить совет.
Понимаете, если вы хотите получить помощь, вы должны предоставить минимальный пример: что делаете, что хотите получить, и что получается не так. Тогда будет о чём говорить. Пример не должен содержать ничего лишнего, не относящегося к рассматриваемому вопросу.
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

Макросы для редактора Журко

Post by Дмитрий Журко »

Shmuel wrote: Sun 21 Feb, 2021 19:48 Понимаете, если вы хотите получить помощь, вы должны предоставить минимальный пример: что делаете, что хотите получить, и что получается не так. Тогда будет о чём говорить. Пример не должен содержать ничего лишнего, не относящегося к рассматриваемому вопросу.
Я описал без лишнего. Но, пожалуй, спасибо, простите что беспокою. Предполагал, что с подобным сталкивались уже. Я дважды.

Просто мой рецепт работает. Проверил и moon (у меня только Color word), тоже работает. Важно мне лишь не забывать запускать загрузку макро по-новому. Впрочем, повторю: спасибо, остроты уже нет. Коплю замечания, чтобы потом их оформить.

Code: Select all

-- Экспериментальный. Пока непонятно, что делать, если при загрузке макросов ошибки.

function reloadmacro()
	Keys('F12') local i = Menu.Value:sub(1, 1) Keys('1 Esc') -- В i запоминаю номер экрана (а вдург их более 9?).
	package.loaded = nil -- Эти присваивания полностью (?) обновляют сведения о глобальной среде исполнения Lua.
	package.loaded = { }
	package.preload = nil -- Паранойя, видимо.
	package.preload = { }
	if Area.Shell then print('Far.exe -clearcache') Keys('Enter') end -- Ещё паранойи.
	if Area.Shell then print('macro: load') Keys('Enter F12') Keys(i) end
end

Macro {	key = '';				description = '¡Reload all macroses!';
	area = 'Common';			action = reloadmacro; }

Macro {	key = 'AltQ';				description = '¡Reload all macroses!';
	area = 'Editor';			action = function() Keys('F2') reloadmacro() end; }
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Макросы для редактора Журко

Post by Shmuel »

Здесь на форуме есть немало "рецептов" перезагрузки макросов. Я пользуюсь .

По поводу package.preload = {} - да, те библиотеки мунскрипта, что уже были загружены, продолжат работать.
Те же, что загружены ещё не были - к ним доступа уже не будет (что я продемонстрировал на примере lm:about).
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Макросы для редактора Журко

Post by John Doe »

Модуль annales не соответствует рекомендуемым практикам, т.к. создаёт глобальные переменные.
Это подход Lua 5.0, сейчас такое не надо.
Post Reply

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