ассоциации для shift-enter
ассоциации для shift-enter
По shift-enter фар запускает программу не со своей ассоциацией, определенной в commands-file associations, а с виндовой. Как сделать, чтобы и в новом окне запускалось с фаровской ассоциацией? Пока что настраиваю \^pgdn на 'start что-надо !.!", но это же не забыть надо, и вообще криво.
Last edited by lvmm on Wed 12 Jan, 2022 12:12, edited 1 time in total.
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
ассоциации для shift-enter
1.
2.
Макрос один раз пишется… Что тут забывать?
2.
Что может быть прямее
cmd /c <command> !.!
?
- А я бы посоветовал во всех ассоциациях продублировать то, что записано для
Enter
-а вCtrl+PgDn
, предваривstart
ассоциации для shift-enter
Возможно, это кому-то и нужно, но почему для этого используется команда "запустить в новом окне"? В ней этому кмк не место.
В общем-то я именно это и ожидаю услышать - как именно пишется? Для меня ответ на вопрос "как вытащить в макрос ассоциацию фара для текущего файла", увы, неочевиден.
Если прочитать мое письмо внимательно, то можно узнать, что именно так я сейчас и делаю, но, как правило, получается так: shift-enter, ммать, alt-f4, ^ pgdn - поэтому и криво.buniak_a_h wrote: ↑Wed 12 Jan, 2022 13:14 А я бы посоветовал во всех ассоциациях продублировать то, что записано для Enter-а в Ctrl+PgDn, предварив start
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
ассоциации для shift-enter
У меня есть скрипт (тесты ставил, но работает), выводящий ассоциации для текущего элемента активной панели. Дать? Он не оформленный, пару комментов допишу. Сама функция возвращает первую найденную ассоциацию для файла + типа ассоциации (0…5. 0 - Enter; 1 - Ctrl+PgDn и т.д.). Могу дать. Но полновесный макрос, полагаю, не сегодня.
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
ассоциации для shift-enter
На самом деле можно, наверно, сделать список расширений, для которых Shift+Enter преобразовывать в Ctrl+PgDn. И тогда собственно назначенная ассоциация не нужна. Макрос будет примерно такой:
Code: Select all
Macro{
id="A46355B5-7030-41AE-B63F-1E476C37EC2C";
area="Shell";
key="ShiftEnter";
description="ShiftEnter -> CtrlPgDn";
filemask="*.dbf,*.pst,*.lua";
flags="";
action=function(data)
Keys"CtrlPgDn"
end;
}
- Konstantin
- Posts: 234
- Joined: Wed 14 Jun, 2006 19:29
- Location: Санкт-Петербург
- Has thanked: 109 times
- Been thanked: 5 times
ассоциации для shift-enter
buniak_a_h,
поле filemask применимо только для областей Editor и Viewer,
поэтому, видимо, приходится применять кондишн, примерно так:
поле filemask применимо только для областей Editor и Viewer,
поэтому, видимо, приходится применять кондишн, примерно так:
Code: Select all
local Mask="/.+(dbf|pst|lua)/i";
Macro{
id="A46355B5-7030-41AE-B63F-1E476C37EC2C";
area="Shell";
key="ShiftEnter";
condition = function() return mf.fmatch(APanel.Current,Mask)==1 end;
description="ShiftEnter -> CtrlPgDn";
flags="";
action=function(data)
Keys"CtrlPgDn"
end;
}
«Раньше я думал, что чудаки это те, кто делают странные вещи. Теперь я знаю, что это те, кто называют других странными.» (П. Маккартни)
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
ассоциации для shift-enter
Konstantin, спасибо, забыл.
2useven10, согласен. А ещё стоило бы вместо
Итак, что получилось:
2useven10, согласен. А ещё стоило бы вместо
mf.fmatch
использовать far.ProcessName
, т.к. тогда можно указать флаг PN_SKIPPATH
, что полезно для работы из временной панели.Итак, что получилось:
Code: Select all
local F = far.Flags
local Mask = "*.dbf,*.pst,<Videos>,<media>"
Macro{
id="A46355B5-7030-41AE-B63F-1E476C37EC2C";
area="Shell";
key="ShiftEnter";
description="ShiftEnter -> CtrlPgDn";
flags="";
condition=function(key, data)
return far.ProcessName(F.PN_CMPNAMELIST, Mask, APanel.Current, F.PN_SKIPPATH)
end;
action=function(data)
Keys"CtrlPgDn"
end;
}
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
ассоциации для shift-enter
"Полновесный" макрос выглядит так:
Идея следующая:
при загрузке макроса составляется список масок, для которых определена ассоциация на
CtrlPgDn
; причём учитываются только такие ассоциации, которые начинаются на start
, cmd
и command
. Маски для таких ассоциаций объединяются в строку через запятуху, и именно эта строка в дальнейшем используется в condition. Для работы требуется sqlite3.dll и модуль ljsqlite3. Т.е. в %FarProfile%\Macros\modules должна быть папка ljsqlite3. Подробно - во вложении.
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
ассоциации для shift-enter
P/S. Побочный эффект: если Вы изменяете ассоциации, надо перезагрузить макросы.
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
ассоциации для shift-enter
Наверно, стоит. Я писал (писал) ночью, заметил только утром. Надеюсь, те, кто его скачает и будет юзать, переименует Развивать его не планировал.
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
ассоциации для shift-enter
P/S. Если народ посчитает полезным, переименую и добавлю настройку (исключения). Ну, просто мне кажется, что не всегда для тех файлов, для которых установлена ассоциация на
CtrlPgDn
, надо выполнять в отдельном окне именно ассоциацию, а не виндовую связанную open-реакцию. А, значит, нужна настройка
Last edited by buniak_a_h on Thu 13 Jan, 2022 16:33, edited 1 time in total.