View Issue Details

IDProjectCategoryView StatusLast Update
0002469WishesMacropublic2014-08-30 07:15
Reporterladserg Assigned Toshmuel  
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Product Version3.0 
Summary0002469: Общие макросы
DescriptionНужно заставить FAR подключать макросы из каталога с программой (например %FARHOME%\Macros\scripts), с меньшим, чем макросы пользователя приоритетом.

Понимаю что есть варианты из области скриптологии и костылестроения, но раз FAR при запуске все равно подключает общие плагины, смотрит общие настройки, подключает макросы пользователя, то по идее организовать подключение общих макросов не должно занять много труда и времени (да и деструктивности привнести не должно).

В итоге можно будет, скажем, централизованно (в сетях с доменом) назначать общие хоткеи.

П.С. При рассмотрении сабжа прошу учесть что FAR используют люди далекие от ИТ премудростей, и быть к ним (к премудростям) ближе они никак не должны.
TagsNo tags attached.
BuildLMb423

Relationships

related to 0002267 closedshmuel Организовать подключение макросов из подкаталога Macros каталога Far Manager. 

Activities

JohnDoe

2013-12-27 10:33

updater   bugnote:0011610

Источник: http://forum.farmanager.com/viewtopic.php?f=3&t=8152

ladserg

2014-08-21 06:21

reporter   bugnote:0012879

Может хотя бы импорт макросов из файла/каталога сделать, желательно бы ещё и автоматически при пустом профиле пользователя, на подобии Default.farconfig?

shmuel

2014-08-21 10:49

developer   bugnote:0012881

А вариант специального конфигурационного файла в папке плагина LuaMacro, в котором бы указывался список папок, откуда грузятся макросы, подходит?

ladserg

2014-08-21 11:00

reporter   bugnote:0012882

Да, пожалуй, подходит. В моём случае так же вполне может подойти и указание загружать макросы исключительно из каталога FAR'а, т.к. не встречал ещё пользователей активно кодящих макросы... Да и воообще мне еще не встретился ни один пользователь изменивший хоть один хот-кей или написавший/подключивший сам хоть один макрос :-)

shmuel

2014-08-21 11:09

developer   bugnote:0012883

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

JohnDoe

2014-08-21 11:12

updater   bugnote:0012886

>А вариант специального конфигурационного файла в папке плагина LuaMacro
А может использовать Far.exe.ini в папке %FARHOME%?

ladserg

2014-08-21 11:16

reporter   bugnote:0012887

JohnDoe: Вариант с Far.exe.ini был бы предпочтителен, но я не нашел там как указать загрузку макросов из каталога Far'а, оставив при этом пользователю профиль в его распоряжении.

JohnDoe

2014-08-21 11:19

updater   bugnote:0012888

Этого пока нет, но теоретически можно сделать.

ladserg

2014-08-21 11:23

reporter   bugnote:0012889

JohnDoe: Это бы очень облегчило жизнь. Особенно если учесть, что макросы теперь не только хот-кеи переопределяют, но и успешно конкурируют с системой плагинов. Не удивлюсь если в своё время весь дополнительный функционал из папки с плагинами переедет в папку с макросами.

ladserg

2014-08-21 11:26

reporter   bugnote:0012890

shmuel: да у мне по большей части проблемой встало хот-кеи раскидать автоматизированно, так что мои запросы вполне могут вписаться в иные :-)

shmuel

2014-08-21 11:36

developer   bugnote:0012891

Last edited: 2014-08-21 11:36

Вариант с Far.exe.ini может быть чуть удобнее для пользователя, но кривой с точки зрения общей архитектуры, поскольку содержимое новых конфигурационных установок будет обрабатывать именно плагин, а не Фар.

JohnDoe

2014-08-21 11:40

updater   bugnote:0012892

Last edited: 2014-08-21 11:42

shmuel
http://forum.farmanager.com/viewtopic.php?p=113289#p113289

P.S.
Вполне можно рассматривать это как настройку фара, а плагин просто её учитывает.

ladserg

2014-08-21 11:41

reporter   bugnote:0012894

shmuel: Вариант с Far.exe.ini - это скорее для администраторов, если бы речь шла бы только обо мне любимом, то я бы просто расположил бы профиль пользователя в каталоге FAR'а и не грустил :-)

А так, распространяя Far в большой сети, где не все компы в силу спицифики состоят в домене, хотелось бы макросы ставить централизовано, в частности хот-кеи.

А что удобнее вам было бы я не знаю, т.к. мне не известны ваши нужды и желания.

shmuel

2014-08-21 11:48

developer   bugnote:0012895

> Вполне можно рассматривать это как настройку фара, а плагин просто её учитывает.
Это понятно, но во-первых это не настройка Фара, а во вторых не вижу заметного выигрыша. И мне это кажется кривым решением, поскольку появляется ничем не обоснованная зависимость от файла конфигурации Фара.

shmuel

2014-08-21 12:47

developer   bugnote:0012896

ladserg:
А вариант БЕЗ конфигурационного файла, но с диалогом конфигурации плагина, при этом данные сохраняются в базе данных плагина, вам подходит?

JohnDoe

2014-08-21 13:10

updater   bugnote:0012897

Last edited: 2014-08-21 13:11

В базу плагина можно ведь поместить данные посредством Default.farconfig?

shmuel

2014-08-21 13:16

developer   bugnote:0012898

Да, при условии изначального отсутствия профиля Фара.

ladserg

2014-08-21 13:21

reporter   bugnote:0012899

shmuel: я не понимаю о каком плагине идет речь, у меня есть несколько макросов, где переопределяются хоткеи, мне надо как то их подключать пользователям на компьютерах.

Файлы с макросами стандартными средствами ни импортирутся ни экспортируются. Да я могу организовать сторонние решения по подключению этих (и возможно будующих) макросов пользователям, но это всё, мягко говоря неудобно.

Самый простой способ, это например указать где то глобально, что макросы будут лежать в папке %FARHOME%\Macros, при этом остальной профиль Far'а должен остаться в локальном каталоге профиля. Минус такого подхода - сами пользователи ничего изменить не смогут, ибо они работают под ограниченными правами, плюс такого подхода в том, что если я все таки решу туда добавить макрос реализующий, например калькулятор (на днях такой смотрел, и плагин не надо), то мне достаточно перезакатать MSI и распространить его заново, и макрос подключится у всех.

Пользователи между компами перемещаются, все документы у них в сети, настройки либо доменом раздаются, либо по умолчанию, сейчас второй фар у всех стоит, там всё просто - политика импортирует настройки в реестр пользователя и всё, как с третьим быть я не знаю, благо вот сделали Default.farconfig.

shmuel

2014-08-21 13:34

developer   bugnote:0012900

Last edited: 2014-08-21 13:34

> я не понимаю о каком плагине идет речь

* Стандартный плагин LuaMacro, входит в поставку Фара.
* Его база данных находится в папке %FARPROFILE%\PluginsData.
* Как уже было отмечено выше, данные из Default.farconfig (если они там имеются), попадают в базу данных плагина.

Я думаю так, наверное сделаю экспериментальный вариант, а вы попробуете. А то мы так долго можем ходить вокруг да около.

ladserg

2014-08-21 14:03

reporter   bugnote:0012901

shmuel: А макросы из файлов каталога %FARUSERPROFILE%\Macros\scripts тоже плагин LuaMacro выполняет?

shmuel

2014-08-21 14:06

developer   bugnote:0012902

Да, без этого плагина нет макросов (начиная с Far 3.0.2851).

ladserg

2014-08-21 14:36

reporter   bugnote:0012905

shmuel: Так это он виноват в моих бедах? :-)

Ну, выходит, что если его убедить как то брать макросы из каталога фара а не из каталога пользователя, или из обоих каталогов, то выходит всё получится.

Хм, всё таки как то неудобно, что макросы нельзя средствами фара забакапить :-/

shmuel

2014-08-21 15:41

developer  

LuaMacro-1.7z (12,710 bytes)

shmuel

2014-08-21 15:47

developer   bugnote:0012906

ladserg:
Первый экспериментальный вариант залит здесь: http://bugs.farmanager.com/file_download.php?file_id=1228&type=bug
- Нужно распаковать в папку плагина LuaMacro и перезапустить Фар.
- Вызвать диалог конфигурации LuaMacro через AltShiftF9, ввести %FARHOME%\Macros (или любую другую последовательность путей, разделённых точкой с запятой) и нажать Enter.
- Перезапустить Фар или перезагрузить макросы.

ladserg

2014-08-21 17:13

reporter   bugnote:0012907

shmuel: сейчас попробую. А просто строчку где то поправить нельзя?

ladserg

2014-08-21 17:24

reporter   bugnote:0012908

Last edited: 2014-08-21 17:26

shmuel: работает, причем именно так как я просил в самом первом посте.

А можно сделать так, что бы я в папке плагина где то путь прописал и он применялся даже к уже созданному профилю? Сейчас через Default.farconfig всё экспортируется/импортируется нормально, уже проверил.

Можно, кстати, брать строку с путями из, скажем, файла, %FARHOME%\luafar.ini, если таковой существует.

JohnDoe

2014-08-21 17:38

updater   bugnote:0012909

Last edited: 2014-08-21 17:39

>где то путь прописал и он применялся даже к уже созданному профилю
Берёте базу данных плагина с прописанным путём, и копируете в профиль фара

Или же путь можно импортировать из xml-файла.

shmuel

2014-08-21 17:53

developer   bugnote:0012910

> А можно сделать так, что бы я в папке плагина где то путь прописал
> и он применялся даже к уже созданному профилю?

Сделать можно, конечно, но я как раз хотел обойтись без новых сущностей (т.е. дополнительного файла). Объясните, какими для вас недостатками обладает данный вариант?

ladserg

2014-08-21 19:26

reporter   bugnote:0012911

JohnDoe: чот от меня тогда ускользает смысл всего этого топика, если всё делать руками (или строгать велосипеды из скриптов) то увы, тогда все труды нашего собеседника (shmuel) на смарку.

JohnDoe

2014-08-21 19:34

updater   bugnote:0012912

А строчку в файле вы не руками собираетесь менять?

ladserg

2014-08-21 19:36

reporter   bugnote:0012913

Last edited: 2014-08-21 19:39

shmuel: Данный способ очень хорош, при пустом профиле настройки импортируются и макросы даже берутся из обоих каталогов (не знаю правда так и должно быть или нет, но макросы считываются и из каталога профиля пользователя и из каталога что указан в диалоговом меню).

Глобализация данной настройки позволит подключать макросы независимо от пользовательских настроек, сейчас если профиль был уже создан, то придется настройки импортировать вручную, как предлагает JohnDoe, там кстати нет нужды что то копировать, достаточно выгрузить настройки плагина в XML файл а потом импортировать, но всё равно это ручной труд.

Кстати, такой настройкой можно будет отключать локальные (пользовательские) макросы, поверьте, немало администраторов одобрят такое новшество.

Возможно не понятно почему для меня это важно, но я уверен, что в дальнейшем макросов станет больше, а то и макросы заменят плагины, тогда при такой вот глобальной настройке на компьютерах, где уже используют Far добавить новый макрос (а то и удалить, такое тоже вполне возможно) будет просто, всего лишь распространив новый MSI пакет, как такой пакет создавать при помощи MAKEMSI я на форуме уже писал.

Но даже если и не будет такой глобальной настройки, то что вы сделали уже намного больше, чем я ожидал. А если это ещё попадёт в официальную сборку то будет совсем прекрасно.

П.С. Кстати, а если не секрет чем создаётся официальный пакет MSI и где то можно глянуть исходники из любопытства (а мож и чего перенять)?

ladserg

2014-08-21 19:44

reporter   bugnote:0012914

Last edited: 2014-08-21 19:45

JohnDoe: Дык её же один раз поменял, закатал в MSI и забыл про неё. Потом только обновляй файлы, меняй версию и дату, запускай батник (в принципе обновлять можно и батником) и снова распространяй пакет, строчку меняю в одном месте, один раз, а эффект распространится на каждый профиль пользователя на каждом компьютере.

Тут кстати, строчка вне каталога с плагином была бы удобнее, что бы при обновлении плагина строчку не менять. А если она в ini файле так там делов то, сам MSI при установке пакета её добавлять будет.

JohnDoe

2014-08-21 19:47

updater   bugnote:0012915

>Дык её же один раз поменял, закатал в MSI и забыл про неё
Один раз перезаписал базу плагина всем существующим пользователям и забыл (новым пользователям применяется из Default.farconfig)

ladserg

2014-08-21 20:01

reporter   bugnote:0012916

Last edited: 2014-08-21 20:03

Для меня это около 400 компьютеров, на каждом из них по 4-5 профилей.

Не, если не будет такой возможности, то конечно придется руками вносить, куда деваться, при чем ничего копировать не надо. Запускаем:

Far.exe /export luafar.farconfig

Затем выкусываем всё лишнее, у меня осталось вот это:

<?xml version="1.0" encoding="UTF-8"?>
<farconfig version="3.0.4062">
    <generalconfig>
        <setting key="System.KnownIDs" name="Luamacro" type="text" value="4EBBEFC8-2084-4B7F-94C0-692CE136894D"/>
    </generalconfig>
    <pluginsconfig>
        <plugin guid="4EBBEFC8-2084-4B7F-94C0-692CE136894D">
            <hierarchicalconfig>
                <key name="4EBBEFC8-2084-4B7F-94C0-692CE136894D" description="LuaMacro">
                    <key name="LuaMacroConfig" description="">
                        <value name="ExtraMacrosPath" type="text" value="%FARHOME%\Macros"/>
                    </key>
                </key>
            </hierarchicalconfig>
        </plugin>
    </pluginsconfig>
</farconfig>

И потом ручками,запускаем под каждым пользователем:

Far /import luafar.farconfig

Не забыв предварительно распространить новый пакет с этим файлом. Можно батник с командой выше добавить.

Только согласитесь, вот если что то можно поручить компьютеру, то зачем делать самому?

shmuel

2014-08-22 07:22

developer   bugnote:0012917

ladserg: а то, что любой пользователь сможет через диалог конфигурации плагина стереть %FARHOME%\Macros, для вас проблемой не является? (Спрашиваю просто из любопытства).

ladserg

2014-08-22 07:37

reporter   bugnote:0012918

shmuel: если этот параметр будет глобальный, то пользователь его поменять не сможет, он же будет в одном из файлов в каталоге Far'а, а туда у пользователей прав на изменение нет. Ведь глобальный параметр будет перебивать локальный, и пусть они изменяют, что хотят, всё равно действия не возымеет.

Ну а пока - да, напрягает.

shmuel

2014-08-22 17:35

developer  

LuaMacro-2.7z (8,652 bytes)

shmuel

2014-08-22 17:38

developer   bugnote:0012921

Попробуйте 2-й экспериментальный вариант: http://bugs.farmanager.com/file_download.php?file_id=1229&type=bug
- Распаковать в папку плагина LuaMacro (оригинальную, не патченую)
- Отредактировать файл luamacro.dll.ini (для вашего случая я уже это сделал)
- Перезапустить Фар

ladserg

2014-08-22 18:10

reporter   bugnote:0012922

shmuel: Вы просто волшебник. Вы очень сильно облегчили мне и ещё много кому жизнь. Патч проверил, работает. Правда как и в предыдущем случае если в ini файле указан только каталог в FARHOME, то макросы всё равно берутся как из указанного каталога, так и из локального профиля пользователя. Указал несколько каталогов через точку с запятой. Работает, берется из обоих каталогов.

Спас ибо вам огромное.

Не могли бы вы ответить на пару вопросов:
1. Можно ли ожидать данный патч в официальных релизах Far Manager?
2. Можно ли сделать так, что бы при пустой переменной ExtraMacrosPath макросы считывались только из локального каталога, а если ExtraMacrosPath не пуста, то макросы считывались бы только из каталогов указанных в ExtraMacrosPath?

shmuel

2014-08-22 18:23

developer   bugnote:0012923

1. Естественно, цель данных экспериментов - улучшение Far Manager. Но хотелось бы это сделать наилучшим образом.
2. Сделать можно, но не очень ясно зачем. Вы хотите своим пользователям вообще перекрыть воздух?

ladserg

2014-08-22 18:45

reporter   bugnote:0012924

shmuel:

>Сделать можно, но не очень ясно зачем. Вы хотите своим пользователям вообще перекрыть воздух?

Не совсем, если честно то мои пользователи очень хорошие специалисты в своих профессиях, но вот файл с макросом скопировать им не под силу, а если быть точным они и не задумываются о том, что есть такая вещь как макросы в Far Manager. Так что они совсем не пострадают от этого.

Прежде всего мне хотелось бы исключить возможность инициализации двух макросов, из локального каталога (там где уже засунуто) и из каталога Far'а одновременно, т.к., например, это удобную кнопочку Esc (скрывающую панели) превратит в запускалку непонятного окна с непонятным выбором из двух непонятных строк :-)

Так же иногда требуется больше контроля в возможности завернуть гайки исходя из специфики и требований местных служб безопасности, и в некоторых случаях отключение возможности подключать свои макросы в Far пользователями желательна.

Ну и к тому же всегда можно добавить два каталога, примерно так:

ExtraMacrosPath=%FARHOME%\Macros;%FARPROFILE%\Macros\scripts

Но скажу честно, это желательно, но так сейчас есть - не смертельно, и даже наоборот, появилось очень большое удобство и гибкости стало больше.

shmuel

2014-08-22 18:59

developer   bugnote:0012925

Подумаю над этим. Но "клавиатурные" (записываемые вручную) макросы, скорее всего, останутся в %FARPROFILE%\Macros\internal, независимо от установок в ini-файле.

ladserg

2014-08-22 19:02

reporter   bugnote:0012926

shmuel: думаю что это уже не страшно.

shmuel

2014-08-23 00:48

developer   bugnote:0012927

Можете пробовать сегодняшнюю ночную сборку Фара.

ladserg

2014-08-23 10:54

reporter   bugnote:0012928

shmuel: Спасибо вам огромное, в ночной сборке Far всё работает превосходно, правда в файле luamacro.example.ini в строке:

MacroPath=%FARPROFILE%\Macros\scripts%

последний знак процента кажется лишним.

Макросы как и хотелось только из указанных каталогов, от куда не надо не грузятся. Проверялось на пустых и только созданных профилях.

Спасибо вам большое за вашу помощь.

П.С. А как закрыть обе мои хотелки на данную тему, с флагом выполнено?

shmuel

2014-08-23 11:00

developer   bugnote:0012929

> последний знак процента кажется лишним.
Спасибо, что заметили (поздно уже было, сильно спать хотелось).

> А как закрыть обе мои хотелки на данную тему, с флагом выполнено?
Сейчас закрою.

ladserg

2014-08-27 21:51

reporter   bugnote:0012937

Last edited: 2014-08-27 21:52

Прошу прощения.

Может стоит параметр MacroPath переместить в секцию [General]? А то он сейчас без секции и это не совсем соответствует привычному формату INI файла, согласно котором программы и библиотеки функций видят значения в INI файлах исключительно в виде:

Секция[Параметр] = Значение

В принципе не существенно, можно наплевать, но я давеча с удивлением обнаружил, что тот же MAKEMSI может внести изменение только в именованную секцию, Inno Setup, если мне не изменяет память, значение без секции тоже внести не может, в то время как после переноса переменной MacroPath в какую либо секцию плагин LuaMacro перестаёт её понимать.

shmuel

2014-08-28 05:54

developer   bugnote:0012938

Если "не существенно", то не стоило поднимать этот вопрос, тем более дублировать здесь и на форуме. По-видимому для вас это существенно. Хорошо, в ближайшие дни будет.

ladserg

2014-08-28 05:58

reporter   bugnote:0012939

shmuel: Спасибо, что ответили.

Для меня это существенно. Несущественно это может оказаться для других. Я не точно выразился.

Ещё раз спасибо.

shmuel

2014-08-28 18:51

developer   bugnote:0012942

Сделано, будет в очередной ночной сборке.

Issue History

Date Modified Username Field Change
2013-08-21 07:43 ladserg New Issue
2013-08-21 07:56 shmuel Severity minor => feature
2013-08-21 07:56 shmuel Category _Common => Macro
2013-08-21 08:45 alexy Project Far Manager => Wishes
2013-12-27 10:33 JohnDoe Note Added: 0011610
2014-02-09 15:45 shmuel Relationship added related to 0002267
2014-08-21 06:21 ladserg Note Added: 0012879
2014-08-21 10:49 shmuel Note Added: 0012881
2014-08-21 11:00 ladserg Note Added: 0012882
2014-08-21 11:09 shmuel Note Added: 0012883
2014-08-21 11:12 JohnDoe Note Added: 0012886
2014-08-21 11:16 ladserg Note Added: 0012887
2014-08-21 11:19 JohnDoe Note Added: 0012888
2014-08-21 11:23 ladserg Note Added: 0012889
2014-08-21 11:26 ladserg Note Added: 0012890
2014-08-21 11:36 shmuel Note Added: 0012891
2014-08-21 11:36 shmuel Note Edited: 0012891
2014-08-21 11:40 JohnDoe Note Added: 0012892
2014-08-21 11:41 ladserg Note Added: 0012894
2014-08-21 11:42 JohnDoe Note Edited: 0012892
2014-08-21 11:48 shmuel Note Added: 0012895
2014-08-21 12:47 shmuel Note Added: 0012896
2014-08-21 13:10 JohnDoe Note Added: 0012897
2014-08-21 13:11 JohnDoe Note Edited: 0012897
2014-08-21 13:16 shmuel Note Added: 0012898
2014-08-21 13:21 ladserg Note Added: 0012899
2014-08-21 13:34 shmuel Note Added: 0012900
2014-08-21 13:34 shmuel Note Edited: 0012900
2014-08-21 14:03 ladserg Note Added: 0012901
2014-08-21 14:06 shmuel Note Added: 0012902
2014-08-21 14:36 ladserg Note Added: 0012905
2014-08-21 15:41 shmuel File Added: LuaMacro-1.7z
2014-08-21 15:47 shmuel Note Added: 0012906
2014-08-21 17:13 ladserg Note Added: 0012907
2014-08-21 17:24 ladserg Note Added: 0012908
2014-08-21 17:26 ladserg Note Edited: 0012908
2014-08-21 17:38 JohnDoe Note Added: 0012909
2014-08-21 17:39 JohnDoe Note Edited: 0012909
2014-08-21 17:53 shmuel Note Added: 0012910
2014-08-21 19:26 ladserg Note Added: 0012911
2014-08-21 19:34 JohnDoe Note Added: 0012912
2014-08-21 19:36 ladserg Note Added: 0012913
2014-08-21 19:39 ladserg Note Edited: 0012913
2014-08-21 19:44 ladserg Note Added: 0012914
2014-08-21 19:45 ladserg Note Edited: 0012914
2014-08-21 19:47 JohnDoe Note Added: 0012915
2014-08-21 20:01 ladserg Note Added: 0012916
2014-08-21 20:03 ladserg Note Edited: 0012916
2014-08-22 07:22 shmuel Note Added: 0012917
2014-08-22 07:37 ladserg Note Added: 0012918
2014-08-22 17:35 shmuel File Added: LuaMacro-2.7z
2014-08-22 17:38 shmuel Note Added: 0012921
2014-08-22 18:10 ladserg Note Added: 0012922
2014-08-22 18:23 shmuel Note Added: 0012923
2014-08-22 18:45 ladserg Note Added: 0012924
2014-08-22 18:59 shmuel Note Added: 0012925
2014-08-22 19:02 ladserg Note Added: 0012926
2014-08-23 00:48 shmuel Note Added: 0012927
2014-08-23 10:54 ladserg Note Added: 0012928
2014-08-23 11:00 shmuel Note Added: 0012929
2014-08-23 11:03 shmuel Build => LMb414
2014-08-23 11:03 shmuel Status new => closed
2014-08-23 11:03 shmuel Assigned To => shmuel
2014-08-23 11:03 shmuel Resolution open => fixed
2014-08-27 21:51 ladserg Note Added: 0012937
2014-08-27 21:51 ladserg Status closed => feedback
2014-08-27 21:51 ladserg Resolution fixed => reopened
2014-08-27 21:52 ladserg Note Edited: 0012937
2014-08-28 05:54 shmuel Note Added: 0012938
2014-08-28 05:58 ladserg Note Added: 0012939
2014-08-28 05:58 ladserg Status feedback => assigned
2014-08-28 18:51 shmuel Note Added: 0012942
2014-08-30 07:15 shmuel Build LMb414 => LMb423
2014-08-30 07:15 shmuel Status assigned => closed
2014-08-30 07:15 shmuel Resolution reopened => fixed