ассоциации для shift-enter

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

ассоциации для shift-enter

Post by lvmm »

По shift-enter фар запускает программу не со своей ассоциацией, определенной в commands-file associations, а с виндовой. Как сделать, чтобы и в новом окне запускалось с фаровской ассоциацией? Пока что настраиваю \^pgdn на 'start что-надо !.!", но это же не забыть надо, и вообще криво.
Last edited by lvmm on Wed 12 Jan, 2022 12:12, edited 1 time in total.
2useven10
Posts: 5226
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 314 times

ассоциации для shift-enter

Post by 2useven10 »

Криво было бы не дать возможности использовать виндовую ассоциацию.
Last edited by 2useven10 on Thu 13 Jan, 2022 06:31, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

ассоциации для shift-enter

Post by buniak_a_h »

1.
lvmm wrote: Wed 12 Jan, 2022 12:12 это же не забыть надо
Макрос один раз пишется… Что тут забывать?
2.
lvmm wrote: Wed 12 Jan, 2022 12:12и вообще криво
Что может быть прямее cmd /c <command> !.! ?
  1. А я бы посоветовал во всех ассоциациях продублировать то, что записано для Enter-а в Ctrl+PgDn, предварив start
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

ассоциации для shift-enter

Post by lvmm »

2useven10 wrote: Wed 12 Jan, 2022 13:03 Криво было бы не дать возможности использовать виндовую ассоуиацию.
Возможно, это кому-то и нужно, но почему для этого используется команда "запустить в новом окне"? В ней этому кмк не место.
buniak_a_h wrote: Wed 12 Jan, 2022 13:14 Макрос один раз пишется… Что тут забывать?
В общем-то я именно это и ожидаю услышать - как именно пишется? Для меня ответ на вопрос "как вытащить в макрос ассоциацию фара для текущего файла", увы, неочевиден.
buniak_a_h wrote: Wed 12 Jan, 2022 13:14 А я бы посоветовал во всех ассоциациях продублировать то, что записано для Enter-а в Ctrl+PgDn, предварив start
Если прочитать мое письмо внимательно, то можно узнать, что именно так я сейчас и делаю, но, как правило, получается так: shift-enter, ммать, alt-f4, ^ pgdn - поэтому и криво.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

ассоциации для shift-enter

Post by buniak_a_h »

lvmm wrote: Wed 12 Jan, 2022 13:51 "как вытащить в макрос ассоциацию фара для текущего файла"
У меня есть скрипт (тесты ставил, но работает), выводящий ассоциации для текущего элемента активной панели. Дать? Он не оформленный, пару комментов допишу. Сама функция возвращает первую найденную ассоциацию для файла + типа ассоциации (0…5. 0 - Enter; 1 - Ctrl+PgDn и т.д.). Могу дать. Но полновесный макрос, полагаю, не сегодня.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

ассоциации для shift-enter

Post by buniak_a_h »

На самом деле можно, наверно, сделать список расширений, для которых 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;
}
User avatar
Konstantin
Posts: 234
Joined: Wed 14 Jun, 2006 19:29
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 5 times

ассоциации для shift-enter

Post by Konstantin »

buniak_a_h,

поле 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;
}
«Раньше я думал, что чудаки это те, кто делают странные вещи. Теперь я знаю, что это те, кто называют других странными.» (П. Маккартни)
2useven10
Posts: 5226
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 314 times

ассоциации для shift-enter

Post by 2useven10 »

Konstantin,
Ваша маска будет срабатывать, например, на "_lua.qq".
local Mask = "*.lua;*.pst;*.dbf" будет лучше работать, да и на маску больше похоже.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

ассоциации для shift-enter

Post by buniak_a_h »

Konstantin, спасибо, забыл.
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;
}
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

ассоциации для shift-enter

Post by buniak_a_h »

lvmm wrote: Wed 12 Jan, 2022 13:51 как вытащить в макрос ассоциацию фара для текущего файла
buniak_a_h wrote: Wed 12 Jan, 2022 17:20 Но полновесный макрос, полагаю, не сегодня.
"Полновесный" макрос выглядит так:

Идея следующая:
при загрузке макроса составляется список масок, для которых определена ассоциация на CtrlPgDn; причём учитываются только такие ассоциации, которые начинаются на start, cmd и command. Маски для таких ассоциаций объединяются в строку через запятуху, и именно эта строка в дальнейшем используется в condition. Для работы требуется sqlite3.dll и модуль ljsqlite3. Т.е. в %FarProfile%\Macros\modules должна быть папка ljsqlite3. Подробно - во вложении.
Ass.Full.7z
Модули, dll и скрипт
(669.43 KiB) Downloaded 121 times
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

ассоциации для shift-enter

Post by buniak_a_h »

P/S. Побочный эффект: если Вы изменяете ассоциации, надо перезагрузить макросы.
2useven10
Posts: 5226
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 314 times

ассоциации для shift-enter

Post by 2useven10 »

buniak_a_h, может макрос стоит переименовать?
2useven10
Posts: 5226
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 314 times

ассоциации для shift-enter

Post by 2useven10 »

А то 7z может обидеться, особенно если Ass.Full.7z прочитать наоборот.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

ассоциации для shift-enter

Post by buniak_a_h »

2useven10 wrote: Thu 13 Jan, 2022 14:59 buniak_a_h, может макрос стоит переименовать?
Наверно, стоит. Я писал (писал) ночью, заметил только утром. Надеюсь, те, кто его скачает и будет юзать, переименует :-) Развивать его не планировал.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

ассоциации для shift-enter

Post by buniak_a_h »

P/S. Если народ посчитает полезным, переименую и добавлю настройку (исключения). Ну, просто мне кажется, что не всегда для тех файлов, для которых установлена ассоциация на CtrlPgDn, надо выполнять в отдельном окне именно ассоциацию, а не виндовую связанную open-реакцию. А, значит, нужна настройка
Last edited by buniak_a_h on Thu 13 Jan, 2022 16:33, edited 1 time in total.
Post Reply

Return to “Нужна помощь”