RecentScreens — переключение между окнами как в MS Windows™

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

RecentScreens — переключение между окнами как в MS Windows™

Post by John Doe »

В большинстве приложений, которые я использую, переключение между окнами происходит в порядке их использования (MRU order).
Но не во всех, пример исключений: FAR manager, Google Chrome.
Для решения этой проблемы в фаре был когда-то такой плагинчик RecentScreens — меню «Экраны» в порядке использования

Вашему вниманию предлагается LuaMacro-реализация подобной функциональности.

Переключение окон-экранов по умолчанию заменяет LCtrlTab (только левый Ctrl).
В отличии от обычного переключения экранов — в процессе переключения может отображаться список окон (до тех пор, пока удерживается Ctrl).



Требуется FAR3 build 5547 или новее.

[download] https://chiselapp.com/user/johnd0e/repo ... creens.lua
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: RecentScreens — переключение между окнами как в MS Windo

Post by John Doe »

Latest post of the previous page:

А при использовании RecentScreens кто как предпочитает переключаться в панели?
CtrlTab или отдельной комбинацией?
Alt0?
gerser
Posts: 58
Joined: Tue 11 Oct, 2005 20:13
Location: Сургут
Contact:

Re: RecentScreens — переключение между окнами как в MS Windo

Post by gerser »

Я из редактора в панели переключался по комбинации Alt`, а из панелей по ней же в редактор в тот, из которого вышел последний раз. Было это во времена 1.7. В 3 хочу также :)
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: RecentScreens — переключение между окнами как в MS Windo

Post by HaRT »

Я без RecentScreens переключаюсь по Alt0 и не вижу, почему с RecentScreens это должно измениться.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Docent1
Posts: 561
Joined: Thu 31 Mar, 2005 23:13
Been thanked: 1 time

Re: RecentScreens — переключение между окнами как в MS Windo

Post by Docent1 »

А можно как-то заменить "Tab" на "`" (это на одну клавишу выше)? Я пробовал в скрипте macroKey = "Tab" заменить на macroKey = "`" но он работает только при CtrlSift`. Просто у меня на Tab повешено сравнение и вроде привык. А вообще бы в идеале клавиша назначается польвователем (но это вряд ли получится - как бы мкрос переписывается)?
Docent1
Docent1
Posts: 561
Joined: Thu 31 Mar, 2005 23:13
Been thanked: 1 time

Re: RecentScreens — переключение между окнами как в MS Windo

Post by Docent1 »

Вопрос снимается: разобрался
Docent1
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Re: RecentScreens — переключение между окнами как в MS Windo

Post by Tim Sobolev »

Открываем любой файл на редактирование, для которого в ESC "<lockfile value="on"/>", жмём F6 и вуаля, работать больше нельзя.

Проблемы как со скриптом из шапки, так и с фиксом на этой странице.

User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: RecentScreens — переключение между окнами как в MS Windo

Post by John Doe »

Там ошибка, eval(mf.waitkey()) надо исправить на Keys(mf.waitkey())
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

r3.6

Post by John Doe »

Исправлены ошибки, скрипт адаптирован к изменениям билда 4026.

В шапке.
Docent1 wrote:А можно как-то заменить "Tab" на "`" (это на одну клавишу выше)?
Теперь достаточно изменить переменную macroKey в начале файла.
IgorZ wrote:Идеальное для меня поведение, выявленное экспериментально - по CtrlTab немедленное переключение по списку без вывода меню, а по CtrlCapsLock вывод меню с переключением после отпускания Ctrl.
Теперь в комплекте отдельный макрос на CtrlCapsLock, по умолчанию неактивен (NoMacro).

P.S.
В режиме с отображением списка переключение происходит только при отпускании Ctrl (т.е. режим Instant не работает).
Причина: баг, внесённый в билде фара 3847: фаре http://bugs.farmanager.com/view.php?id=1301#c12736
Игорь Юдинцев
Posts: 726
Joined: Sun 03 Apr, 2005 22:00
Location: Казань
Been thanked: 2 times

Re: RecentScreens — переключение между окнами как в MS Windo

Post by Игорь Юдинцев »

John Doe
На вьюверах переключение сбоит. Открываем три файла, жмём и удерживаем Ctrl+Tab так, чтобы файл 1 сменился на файл 2, в появившемся меню выбираем файл 3. Результат: в заголовке консоли видим «просмотр файла 3», на экране по-прежнему просмотр файла 2.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: RecentScreens — переключение между окнами как в MS Windo

Post by John Doe »

Воспроизводится почти всегда при переключении между двумя вьюверами.
Если после этого во вьювере нажать (например) PgUp, то на экране проявляется правильный файл.

Скрипт честно посылает ACTL_SETCURRENTWINDOW и ACTL_COMMIT.
Похоже баг в фаре.

Update
Так и есть, после ACTL_COMMIT неправильно работает VCTL_GETINFO.
Можно убедиться, добавив после строки 78 проверку:
  1. if Area.Viewer and viewer.GetInfo().ViewerID~=far.AdvControl (F.ACTL_GETWINDOWINFO).Id then
  2.  
  3.   error"~="
  4.  
  5. end
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

r3.7

Post by John Doe »

  • Игнорируем окно Desktop
  • Вычурно обходим баги фара
В шапке.
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Re: RecentScreens — переключение между окнами как в MS Windows™

Post by Tim Sobolev »

Будет ли возвращена настраиваемая поддержка Desktop Screen и удалены костыли которые были добавлены до применения фиксов в FAR?
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: RecentScreens — переключение между окнами как в MS Windows™

Post by AleXH »

FAR3.4040 открыт в конему. Открываем в панелях редактор любого файла, ctrl-tab в панели, открываем вьювер любого файла, ESC - должны вернуться в панели, но вместо этого попадаем в редактор. Проявляется дефект и через скрипты.
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Re: RecentScreens — переключение между окнами как в MS Windows™

Post by fml2 »

FAR3.4040 открыт
Вроде ж уже 41хх на дворе?!
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: RecentScreens — переключение между окнами как в MS Windows™

Post by John Doe »

Tim Sobolev wrote:Будет ли возвращена настраиваемая поддержка Desktop Screen
Если объясните какая требуется поддержка.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

RecentScreens — переключение между окнами как в MS Windows™

Post by John Doe »

AleXH wrote:...но вместо этого попадаем в редактор.
Conemu обрабатывает комбинацию CtrlTab самостоятельно, в фар она не приходит, соответственно RecentScreens работает некорректно.
Если бы можно было как-то отловить событие перехода в панели, то такой проблемы не было бы.

Впрочем, насколько я знаю у Conemu есть собственная функция Recent, поэтому стоит запретить RecentScreens при наличии Conemu.
AleXH wrote:Проявляется дефект и через скрипты.
И без Conemu? Причина та же: если переход в панели выполнен не изнутри RecentScreens, то он просто не регистрируется.
Post Reply

Return to “Полезные макросы и скрипты”