Невозможно использовать грабер на десктопе, открытым из редактора или просмотрщика по Ctrl+O

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Невозможно использовать грабер на десктопе, открытым из редактора или просмотрщика по Ctrl+O

Post by Yegor »

Собственно,

1) открыть любой файл на просмотр/редактирование;
2) нажать Ctrl+O;
3) нажать Alt+Ins чтобы выделить что-либо;

Expected: грабер работает
Actual: грабер не работает, десктоп переключается назад в редактор/просмотрщик.

Некритично, но иногда очень надо.

// Far 3.0 build 4809 x86 / Windows 10 x64
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Невозможно использовать грабер на десктопе, открытым из редактора или просмотрщика по Ctrl+O

Post by John Doe »

У меня есть макрос, который по CtrlO пытается переключиться в Desktop.
AltIns тогда работает.

К сожалению, для модальных окон это сейчас не работает http://bugs.farmanager.com/view.php?id=3302

В контексте данного топика:
У меня есть макрос, который по CtrlO пытается переключиться в Desktop.
Было бы неплохо, чтобы фар это делал по CtrlO самостоятельно, или хотя бы позволял переключиться через F12.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Невозможно использовать грабер на десктопе, открытым из редактора или просмотрщика по Ctrl+O

Post by zg »

1. всё таки это надо в следующий раздел.
2. просто показывать честный десктоп по ctrl-o не просто, а очень просто. но подозреваю многим это не понравится. поэтому хотелось бы большей формализации, что должно происходить.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Невозможно использовать грабер на десктопе, открытым из редактора или просмотрщика по Ctrl+O

Post by John Doe »

zg wrote: но подозреваю многим это не понравится. поэтому хотелось бы большей формализации, что должно происходить.
Хочется чтобы Desktop обрабатывал нажатия CtrlO и Esc, переключаясь при этом в предыдущее окно.

Причём это желательно независимо от сабжа, т.е. неважно как мы попали в Desktop, хоть из F12.
(Макросами опробовано, удобно)
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Невозможно использовать грабер на десктопе, открытым из редактора или просмотрщика по Ctrl+O

Post by zg »

решается макросом. кнопки для выхода допиливаются по вкусу.

Code: Select all

local F=far.Flags
Macro
{
  area="Editor";key="CtrlO";
  action=function()
    local id
    id=far.MacroAdd(F.MACROAREA_OTHER,0,"CtrlO",'if false then end',"",function()
      far.MacroDelete(id)
      panel.SetUserScreen()
      return true
    end)
    if id then panel.GetUserScreen() end
  end
}
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Невозможно использовать грабер на десктопе, открытым из редактора или просмотрщика по Ctrl+O

Post by John Doe »

zg wrote: Fri 14 Oct, 2016 13:02решается макросом
То что макрос выполняет свою работу в колбэке это плохо, и приводит к конфликтам.

У меня есть макрос на ту же клавишу в области Common, который в condition ориентируется на Area.Current.
В области Other он возвращает false, а в области Editor значение 55 (приоритет).

И вот при вызове в области Other, в результате вызова колбэка первого макроса контекст изменяется, и в момент выполнения condition второго у нас уже редактор, соответственно второй макрос тоже срабатывает.

Вот так лучше:

Code: Select all

local F = far.Flags
Macro { description="Advanced CtrlO in editor";
  area="Editor"; key="CtrlO";
  action=function()
    local id
    id=far.MacroAdd(F.MACROAREA_OTHER,0,"CtrlO","--","Advanced CtrlO in editor",function()
      far.MacroDelete(id)
      far.MacroPost("panel.SetUserScreen()")
      return true
    end)
    if id then panel.GetUserScreen() end
  end
}
Но и это не надёжно, потому что не учитывет возможность макроса с более высоким приоритетом: в результате выполнятся оба.

P.S.
Для написания полноценных макросов не хватает как минимум нормальной макрообласти.
Other у нас это вообще граббер

P.P.S.
Desktop: реализовать выход по Esc/Ctrl-O
Last edited by John Doe on Tue 19 Sep, 2017 15:53, edited 1 time in total.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Невозможно использовать грабер на десктопе, открытым из редактора или просмотрщика по Ctrl+O

Post by zg »

John Doe wrote: Tue 19 Sep, 2017 14:59Для написания полноценных макросов не хватает как минимум нормальной макрообласти.
так и двигали бы нормальное решение, не? я помню, смотрел этот тикет, хотел реализовать. для hmenu макрообласть есть. для оставшихся двух не предложено как их разделить в плане названий, констант и т.д. в общем вишь на отвали.
Last edited by zg on Tue 19 Sep, 2017 16:37, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Невозможно использовать грабер на десктопе, открытым из редактора или просмотрщика по Ctrl+O

Post by John Doe »

zg wrote: Tue 19 Sep, 2017 16:37для hmenu макрообласть есть
Есть MainMenu, но на практике для макросов есть разница открыто меню или нет.
Историю вопроса найду при случае.
zg wrote: Tue 19 Sep, 2017 16:37для оставшихся двух не предложено как их разделить в плане названий, констант и т.д.
Внутренние константы для окон есть, ничего мудрить не предлагаю, всё остальное по подобию.
Область "Other" зарезервировать, для граббера использовать "Grabber" (MACROAREA_GRABBER).
Для десктопа соответственно "Desktop" (MACROAREA_DESKTOP), хотя есть сомнения в удачности названия, но по большому счёту лично мне всё равно.
zg wrote: Tue 19 Sep, 2017 16:37и т.д.
Что ещё требуется предложу.
Post Reply

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