Автостартующие макросы (и настройка среды)

Здесь обсуждается всё, что касается макросов.
User avatar
SUSim
Posts: 1636
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by SUSim »

Latest post of the previous page:

Причём тут макролиб?
Тут надо решать глобальнее, после того как всё почините, конечно же, "то что не работает" :)
Например, разбиение на области Shell, Editor, ... - хорошо, но вот условия "пустая комстрока", "не пустая" - как-то не очень:
есть макрос работающий при непустой комстроке, а как добавить макрос на туже кнопку при пустой комстроке? - обединять их в один с проверкой нелогично, тогда уж все макросы загонять в common и пусть макросописатель разруливает :(
Почему бы не разрешить несколько макросов на одну клавишу, и пусть сработает тот который подошёл по условиям первым (ну например условий у него меньше)...

это так мысли в слух, мне приходится делать макросы интеграторы которые с помощью eval запускают развешенные на непривычные клавиши другие макросы, это ради того, что собери я эти макросы в один, хрен его осмыслишь (я вот, с ходу перевел почти всё под луа, а вот с выделением мышкой завис, хотя это не самый крутой мой макрос).
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

NightRoman wrote:
Skirda wrote:скажем так - не договорились в свое время о деталях.
UPD: если продолжать, то не в рамках этой темы.
А какой?
Вот например Автостартующие макросы
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by NightRoman »

John Doe, понятно, это если они будут как класс. В *этой* теме уже звучало, нужны ли они вообще или пора что-то другое иметь.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

NightRoman wrote:John Doe, понятно, это если они будут как класс. В *этой* теме уже звучало, нужны ли они вообще или пора что-то другое иметь.
Заметьте, что выше я процитировал сообщение двухстраничной давности.
Сегодня вы в одной теме мешаете всё в кучу, а завтра никто это уже не найдёт, несмотря на то что оно "звучало".

Не бойтесь создавать новые темы.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by NightRoman »

Непонятка по глобальным переменным. Из spring_manual.chm цитирую
Скрипт может устанавливать “временные” глобальные переменные, значения которых будут сохраняться только в течение времени исполнения скрипта.
Пример: var = 15
Для установки “постоянных” глобальных переменных, значения которых будут сохраняться в течение всей сессии Фара и будут доступны всем скриптам, нужно использовать таблицу _G.
Пример: _G.var = 15
Пишу такой скрипт, запускаю его через macro:post dofile(...):

Code: Select all

if not myGlobal then
	msgbox("Setting my global")
	myGlobal = true
else
	msgbox("My global exists")
end
По хелпу myGlobal - “временная” глобальная переменная, а по запуску - она сохраняется между запусками. При 2+ запуске мы видим диалог "My global exists". Как это объяснить?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

NightRoman wrote:Пишу такой скрипт, запускаю его через macro:post dofile(...):
Функция dofile обходит механизм "временных" глобальных переменных. То же касается и конструкции loadfile(filename)(). Это нужно будет или поправить или оговорить в справке.
Если же использовать macro:post @filename, то всё будет согласно документации.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Max Rusov wrote:нужно только, чтобы он сработал до макроса использующего эти функции
Вот поэтому мне нравится идея zg, что автостартующий макрос должен быть только один. Не исключено, что так и будет сделано.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Skirda »

Shmuel wrote:автостартующий макрос должен быть только один. Не исключено, что так и будет сделано.
А кем будут являться событийные макросы (если такие будут) - какие-нить OnEnter для редактора и т.п.? Разве суть у них не "автостарт"? Или это "событийные"?
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by Aidar »

Shmuel wrote:
Max Rusov wrote:нужно только, чтобы он сработал до макроса использующего эти функции
Вот поэтому мне нравится идея zg, что автостартующий макрос должен быть только один. Не исключено, что так и будет сделано.
Я бы предложил использовать для этого _usermenu.lua по аналогии с LuaFAR-плагинами. Вдобавок можно добавить в него возможности _usermenu.lua из LuaFAR for Editor.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by HaRT »

Skirda wrote:А кем будут являться событийные макросы (если такие будут) - какие-нить OnEnter для редактора и т.п.? Разве суть у них не "автостарт"? Или это "событийные"?
На мой взгляд, наоборот, нынешние “автостарт” — это событийные на событие “Фар запущен в режиме Shell”. Макросы на другие события тоже крайне желательны. Строго говоря, нажатия клавиш/мыши — это тоже события, т.ч. разделение заведомо искусственное.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by zg »

Skirda wrote:
Shmuel wrote:автостартующий макрос должен быть только один. Не исключено, что так и будет сделано.
А кем будут являться событийные макросы (если такие будут) - какие-нить OnEnter для редактора и т.п.? Разве суть у них не "автостарт"? Или это "событийные"?
в автостартующем макросе что-нибудь типа:

Code: Select all

Far.Add('EditorEvent',MyHandler)
Far.Add('ExitEvent',MyAnotherHandler)
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by NightRoman »

Хоть не совсем по этой теме, но для примера *работающего* подхода, подумать просто. В PowerShellFar (хоть и не макросы, но тоже скриптовая оболочка, аналогия есть-таки) на данный момент есть 2 авто-стартующие команды в настройках - одна на любую сессию, другая для первого запуска редактора. Что делают эти команды - дело пользователя. У меня они вызывают скрипты, которые настраивают среду для других скриптов, а также то, что говорит zg, добавляют обработчики на имеющиеся события (события предоставляет Фарнет от Фара). По идее, надо бы иметь еще команду авто-старта и для вьюера, и для диалогов. Но практика как-то показывает, что особой нужды вроде пока нет. Но в 2-х имеющихся есть.

Переводя это на Фар, хотелось бы по аналогии иметь хотя бы 2 автостартующие Lua сущности (либо оговоренные макросы, либо оговоренны скрипты) - один, стартующий *всегда* (а не так как сейчас, только когда Фар с панелями стартует), и другой, стартующий перед первым запуском редактора. Отальное решается событиями и обработчиками (их, возможно, пока нет, но хочется со временем иметь). Если будут авто-старты для вьюера, диалогов и чего-то еще - хуже не будет, но пример PSF, может, стоит учесть и особо с этим не торопиться, может, они в реале и не особо будут нужны.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Max Rusov »

Мне кажется, все таки удобнее, чтобы условия запуска были свойствами макроса.

В MacroLib'е, например, есть автозапускающиеся макросы для редакторов/вьюверов и диалогов, причем в привязке к диалогу по GUID/Title или к редактору по маске. Не хватает события "по закрытию", чтобы можно было делать макросы-валидаторы, но это не получается, пока нет модального режима исполнения макросов.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by zg »

я бы делал один стартующий скрипт, который стартует всегда, не важно как фар запущен. а у уж из него регистрировать сколько угодно событий на всё что можно.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by NightRoman »

zg wrote:я бы делал один стартующий скрипт, который стартует всегда, не важно как фар запущен. а у уж из него регистрировать сколько угодно событий на всё что можно.
Минималистично, но можно и так. Остальное - оптимизация.

Но иногда имеет смысл и про оптимизацию не забыть. Фар нередко запускается для чего-то раз-два в панелях и выйти. Редактор не запускается. Под редактор же у юзера тяжелая инициализация инструментов может быть заряжена, в редакторе много всего делается хорошего. Запускать все это сразу при старте Фара часто может быть просто незачем.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

NightRoman wrote:Но иногда имеет смысл и про оптимизацию не забыть. Фар нередко запускается для чего-то раз-два в панелях и выйти. Редактор не запускается. Под редактор же у юзера тяжелая инициализация инструментов может быть заряжена, в редакторе много всего делается хорошего. Запускать все это сразу при старте Фара часто может быть просто незачем.
В Lua есть механизм модулей (библиотек). Они всегда загружаются "по первому требованию", кэшируются, и последующие вызовы уже дёшевы (из кэша). Поэтому можно автостартующий макрос и не перегружать особо.
Post Reply

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