Page 3 of 5

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

Posted: Mon 15 Oct, 2012 14:13
by Shmuel

Latest post of the previous page:

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

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

Posted: Mon 15 Oct, 2012 14:17
by NightRoman
Да это понятно. Только все это предполагает дополнительную квалификацию пользователя, что ли. Да иногда и лишние шаги даже и для квалифицированного.

В PowerShell тоже есть сходное понятие модулей, и они грузятся один раз. Но я все ж из опыта решил добавить авто-старт для редактора. Это просто удобно, оказывается.

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

Posted: Mon 15 Oct, 2012 14:19
by zg
NightRoman wrote:Но иногда имеет смысл и про оптимизацию не забыть. Фар нередко запускается для чего-то раз-два в панелях и выйти. Редактор не запускается. Под редактор же у юзера тяжелая инициализация инструментов может быть заряжена, в редакторе много всего делается хорошего. Запускать все это сразу при старте Фара часто может быть просто незачем.
в чём дороговизна добавления функции в таблицу?

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

Posted: Mon 15 Oct, 2012 14:21
by NightRoman
Хорошо, дольше обсуждать. Давайте начнем с одного, пока-то и этого нет (не совсем есть). Если все будет хорошо и удобно, значит, это и есть правильный подход.

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

Posted: Mon 15 Oct, 2012 14:23
by NightRoman
zg wrote:в чём дороговизна добавления функции в таблицу?
Если будет отдельное событие "Самый первый запуск редактора", то в принципе тогда можно и просто добавить функцию в таблицу. Это не дорого, согласен. Но это доп. событие нужно, имхо.

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

Posted: Mon 15 Oct, 2012 14:34
by Centaur
Shmuel wrote:
Max Rusov wrote:нужно только, чтобы он сработал до макроса использующего эти функции
Вот поэтому мне нравится идея zg, что автостартующий макрос должен быть только один. Не исключено, что так и будет сделано.
Автостартующий макрос не обязан быть один, достаточно, чтобы они все были независимы либо упорядочены.

Распространённый паттерн из Linux’ов — событие запускает все файлы в определённом каталоге в алфавитном порядке имён. Или конфигурационные файлы читаются из каталога в алфавитном порядке имён, причём более поздние настройки перетирают более ранние.

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

Posted: Mon 15 Oct, 2012 15:00
by zg
Centaur wrote:Распространённый паттерн из Linux’ов — событие запускает все файлы в определённом каталоге в алфавитном порядке имён. Или конфигурационные файлы читаются из каталога в алфавитном порядке имён, причём более поздние настройки перетирают более ранние.
какой бонус это даёт?

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

Posted: Mon 15 Oct, 2012 16:32
by Marble
zg wrote:какой бонус это даёт?
Это даёт бОльшую гибкость в оперировании настройками.
Включение (отключение) любых функций становиться тривиальной задачей - OS рулит.

Вдогонку... фишка с наследованием в некоторых плагинах очень показательный пример:
PluginXX_User.ini инициализирует свои и перебивает умолчальные переменные в PluginXX.ini
Удобство несомненное, нет?

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

Posted: Mon 15 Oct, 2012 16:37
by NightRoman
Marble
Верно, но кому это реально надо, могут сделать и руками из *одного* файла. Только уже без навязанных Фаром правил, а по своему вкусу, из любой папки, по любой сортировке, и т.п.

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

Posted: Mon 15 Oct, 2012 16:46
by zg
Marble wrote:Удобство несомненное, нет?
нет.

Code: Select all

require("autostart_user")

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

Posted: Mon 15 Oct, 2012 18:11
by SUSim
Минимум можно ничего не делать - пусть юзеры правят фай luamacro.lua, но это неудобно при обновлении, лучше сделать привычно - аналогично Far.exe.ini - сделать ссылку из упомянутого файла на luamacrouser.lua

Надо протестировать, намного ли ресурсов заберет загрузка одного авто-стартующего файла вместо десятка разбитых по областям автостартующих макросов - думаю соооооооовсем не много (файл luamacrouser.lua грузится незаметно), смотря конечно что в него понаписать (на глаз, разницу в скорости между скриптом и dll, я заметил только при циклах в 10000 повторов).

Я бы понятие области автостарта вообще не рассматривал.

Мне вместо area удобнее condition, объединив area с существующим flags (что-то типа editor&newfile, или Shell|CommandLine), и вместо key удобнее events (нажатие клавиши, отпускание, движение мышкой, условие по времени и события самого фара - запуск редактора, запуск меню и т.п.)

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

Posted: Mon 15 Oct, 2012 20:02
by SUSim
А лучше всего что-то типа RunOnce - при импорте макроса прописать/добавить в глобальную таблицу свои таблицы/свойства/константы/функции
Я подумываю над созданием своей уникальной таблицы и чисткой глобальной области от всяких переменных и констант.

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

Posted: Tue 16 Oct, 2012 03:55
by Centaur
zg wrote:
Centaur wrote:Распространённый паттерн из Linux’ов — событие запускает все файлы в определённом каталоге в алфавитном порядке имён. Или конфигурационные файлы читаются из каталога в алфавитном порядке имён, причём более поздние настройки перетирают более ранние.
какой бонус это даёт?
Бонусы начинаются, когда конфиг (скрипт реакции на событие) не принадлежит целиком администратору, а управляется несколькими пакетами. Пакет при установке (плагин при распаковке) подкладывает файл в каталог, и всё работает. При деинсталляции файл удаляется, и всё продолжает работать. С единым конфигом (скриптом) установка/обновление/удаление пакетов (плагинов) требует ручной (и иногда внимательной) правки.

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

Posted: Tue 16 Oct, 2012 06:09
by NightRoman
Centaur
Опять упомяну PowerShell, обычный, не Фаровский. Не факт, что повод для подражания, но все же пример и повод подумать. Они при дизайне много позаимствовали из разных шеллов и скриптовых языков. Но в итоге они стартуют только оговоренные скрипты из оговоренных папок. Такого, чтобы запустить все скрипты из какой-то папки, они не стали делать. Плюсы и минусы можно обсуждать, уверен, есть и те, и те. Но никто реально не жалуется, во всяком случае, я не в курсе, хотя слежу за их багтрекером и другими ресурсами регулярно и уже много лет. Так что нужда в твоем сценарии, предположительно, из практики - невелика.

Офф. Пакеты же, которые пишут себя в автозагрузку, особенно молча, у меня вызывают сложные выражения, часто непечатные.

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

Posted: Tue 16 Oct, 2012 14:06
by zg
Centaur wrote:Бонусы начинаются, когда конфиг (скрипт реакции на событие) не принадлежит целиком администратору, а управляется несколькими пакетами. Пакет при установке (плагин при распаковке) подкладывает файл в каталог, и всё работает. При деинсталляции файл удаляется, и всё продолжает работать.
я не против варианта, когда есть какой-нибудь _autostart.lua, который в официальной поставке загружает содержимое папки ./autostart. даже — за.

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

Posted: Tue 16 Oct, 2012 14:16
by NightRoman
Независимо от того, что делает этот скрипт - если он в официальной поставке, это не очень хорошо, по-моему. По соображениям легкости переключения настроек и простоты обновлений авто-стартовый скрипт пользователя должен бы и искаться в одной из папок профиля пользователя, а потому в поставку может входить разве что как пример, но не реально используемый авто-стартующий скрипт. (Но в примерном скрипте можно что угодно советовать и предлагать по умолчанию готовое, конечно)