RecentScreens — переключение между окнами как в MS Windows™
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
RecentScreens — переключение между окнами как в MS Windows™
В большинстве приложений, которые я использую, переключение между окнами происходит в порядке их использования (MRU order).
Но не во всех, пример исключений: FAR manager, Google Chrome.
Для решения этой проблемы в фаре был когда-то такой плагинчик RecentScreens — меню «Экраны» в порядке использования
Вашему вниманию предлагается LuaMacro-реализация подобной функциональности.
Переключение окон-экранов по умолчанию заменяет LCtrlTab (только левый Ctrl).
В отличии от обычного переключения экранов — в процессе переключения может отображаться список окон (до тех пор, пока удерживается Ctrl).
Требуется FAR3 build 5547 или новее.
[download] https://chiselapp.com/user/johnd0e/repo ... creens.lua
Но не во всех, пример исключений: FAR manager, Google Chrome.
Для решения этой проблемы в фаре был когда-то такой плагинчик RecentScreens — меню «Экраны» в порядке использования
Вашему вниманию предлагается LuaMacro-реализация подобной функциональности.
Переключение окон-экранов по умолчанию заменяет LCtrlTab (только левый Ctrl).
В отличии от обычного переключения экранов — в процессе переключения может отображаться список окон (до тех пор, пока удерживается Ctrl).
Требуется FAR3 build 5547 или новее.
[download] https://chiselapp.com/user/johnd0e/repo ... creens.lua
- t-rex
- Страшный и ужасный
- Posts: 4910
- Joined: Tue 15 Mar, 2005 16:17
- Location: Tel-Aviv
- Has thanked: 1 time
- Been thanked: 8 times
- Contact:
Re: RecentScreens — переключение между окнами как в MS Windo
Latest post of the previous page:
и то хорошо. но вообще при обработке этих эвентов не стоит выводить ничего интерактивного.- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: RecentScreens — переключение между окнами как в MS Windo
100%t-rex wrote:но вообще при обработке этих эвентов не стоит выводить ничего интерактивного.
Но это ведь не пользовательские сообщения, а ошибки.
Что например делать если far.AdvControl (F.ACTL_GETWINDOWINFO) не срабатывает?
Проблемы только при переходе через F6.
Re: RecentScreens — переключение между окнами как в MS Windo
Не совсем. Идеальное для меня поведение, выявленное экспериментально - по CtrlTab немедленное переключение по списку без вывода меню, а по CtrlCapsLock вывод меню с переключением после отпускания Ctrl. Сейчас я добился этого путём установки menuDelayDefault в -1 и добавления приведённый макрос трёх строчек (помечены в начале --[[!!]]).John Doe wrote:Есть хоткей для открытия меню - CtrlF12. Не оно?IgorZ wrote:Отдельный хоткей лично мне был бы удобнее. Может, настройку вариантов поведения сделать, если будут и другие пожелания?
Пока, вроде, всё удобно (с учётом моей модификации).John Doe wrote:Тогда выключите в настройках отображение списка, и добавьте ещё один макрос на отдельный хоткей (CtrlCapsLock) Через пару дней сообщите, удобно ли это, и всё ли работает ожидаемым образом.
Для меня это работает как два разных подхода. По CtrlTab я или вообще переключаюсь на автомате, заранее зная, сколько раз нажать надо, или ориентируюсь по содержимому окна. По CtrlCapsLock я переключаюсь, ориентируясь по заголовку окна. У меня эти два разных подхода не пересекаются на практике. Следовательно, вызывать меню для CtrlTab не понадобится.John Doe wrote:Есть ещё один момент: после того, как вы начали переключение CtrlTab (без списка), но до того, как вы отпустите Ctrl, вам тоже может понадобиться отобразить меню. CtrlF12 в этом случае сработает, а CtrlCapsLock - нет. Надо ли?
Кстати, по поводу F6. Нельзя ли назначить на неё макрос, в котором временно отключать события, вызывать Keys("F6"), и снова включать события? Или это я перемудрил?
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: RecentScreens — переключение между окнами как в MS Windo
Подумаю как можно аккуратно совместить требуемый вам способ переключения с имеющимися.
Желательно исправить проблему в фаре, не хотелось бы укоренять какие-то костыли.
P.S.
В качестве очень временного workaround:
С лёту может не заработать, сейчас не могу протестировать, демонстрирую лишь идею
Edit:
Вроде работает, сейчас глубже ковырять некогда, поэтому держите полный текст с заплаткой для F6
Да, макросом можно, но если вместо F6 кликнуть на линейке клавиш, то...IgorZ wrote:Кстати, по поводу F6. Нельзя ли назначить на неё макрос, в котором временно отключать события, вызывать Keys("F6"), и снова включать события? Или это я перемудрил?
Желательно исправить проблему в фаре, не хотелось бы укоренять какие-то костыли.
P.S.
В качестве очень временного workaround:
С лёту может не заработать, сейчас не могу протестировать, демонстрирую лишь идею
Edit:
Вроде работает, сейчас глубже ковырять некогда, поэтому держите полный текст с заплаткой для F6
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: RecentScreens — переключение между окнами как в MS Windo
А при использовании RecentScreens кто как предпочитает переключаться в панели?
CtrlTab или отдельной комбинацией?
Alt0?
CtrlTab или отдельной комбинацией?
Alt0?
Re: RecentScreens — переключение между окнами как в MS Windo
Я из редактора в панели переключался по комбинации Alt`, а из панелей по ней же в редактор в тот, из которого вышел последний раз. Было это во времена 1.7. В 3 хочу также
- HaRT
- Moderator
- Posts: 10865
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: RecentScreens — переключение между окнами как в MS Windo
Я без RecentScreens переключаюсь по Alt0 и не вижу, почему с RecentScreens это должно измениться.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Re: RecentScreens — переключение между окнами как в MS Windo
А можно как-то заменить "Tab" на "`" (это на одну клавишу выше)? Я пробовал в скрипте macroKey = "Tab" заменить на macroKey = "`" но он работает только при CtrlSift`. Просто у меня на Tab повешено сравнение и вроде привык. А вообще бы в идеале клавиша назначается польвователем (но это вряд ли получится - как бы мкрос переписывается)?
Docent1
- Tim Sobolev
- Posts: 729
- Joined: Fri 01 Apr, 2005 14:46
- Location: Украина
- Has thanked: 1 time
- Been thanked: 7 times
Re: RecentScreens — переключение между окнами как в MS Windo
Открываем любой файл на редактирование, для которого в ESC "<lockfile value="on"/>", жмём F6 и вуаля, работать больше нельзя.
Проблемы как со скриптом из шапки, так и с фиксом на этой странице.
Проблемы как со скриптом из шапки, так и с фиксом на этой странице.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: RecentScreens — переключение между окнами как в MS Windo
Там ошибка,
eval(mf.waitkey())
надо исправить на Keys(mf.waitkey())
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
r3.6
Исправлены ошибки, скрипт адаптирован к изменениям билда 4026.
В шапке.
P.S.
В режиме с отображением списка переключение происходит только при отпускании Ctrl (т.е. режим Instant не работает).
Причина: баг, внесённый в билде фара 3847: фаре http://bugs.farmanager.com/view.php?id=1301#c12736
В шапке.
Теперь достаточно изменить переменнуюDocent1 wrote:А можно как-то заменить "Tab" на "`" (это на одну клавишу выше)?
macroKey
в начале файла.Теперь в комплекте отдельный макрос на CtrlCapsLock, по умолчанию неактивен (NoMacro).IgorZ wrote:Идеальное для меня поведение, выявленное экспериментально - по CtrlTab немедленное переключение по списку без вывода меню, а по CtrlCapsLock вывод меню с переключением после отпускания Ctrl.
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
John Doe
На вьюверах переключение сбоит. Открываем три файла, жмём и удерживаем Ctrl+Tab так, чтобы файл 1 сменился на файл 2, в появившемся меню выбираем файл 3. Результат: в заголовке консоли видим «просмотр файла 3», на экране по-прежнему просмотр файла 2.
На вьюверах переключение сбоит. Открываем три файла, жмём и удерживаем Ctrl+Tab так, чтобы файл 1 сменился на файл 2, в появившемся меню выбираем файл 3. Результат: в заголовке консоли видим «просмотр файла 3», на экране по-прежнему просмотр файла 2.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: RecentScreens — переключение между окнами как в MS Windo
Воспроизводится почти всегда при переключении между двумя вьюверами.
Если после этого во вьювере нажать (например) PgUp, то на экране проявляется правильный файл.
Скрипт честно посылает ACTL_SETCURRENTWINDOW и ACTL_COMMIT.
Похоже баг в фаре.
Update
Так и есть, после ACTL_COMMIT неправильно работает VCTL_GETINFO.
Можно убедиться, добавив после строки 78 проверку:
Если после этого во вьювере нажать (например) PgUp, то на экране проявляется правильный файл.
Скрипт честно посылает ACTL_SETCURRENTWINDOW и ACTL_COMMIT.
Похоже баг в фаре.
Update
Так и есть, после ACTL_COMMIT неправильно работает VCTL_GETINFO.
Можно убедиться, добавив после строки 78 проверку:
- Tim Sobolev
- Posts: 729
- Joined: Fri 01 Apr, 2005 14:46
- Location: Украина
- Has thanked: 1 time
- Been thanked: 7 times
Re: RecentScreens — переключение между окнами как в MS Windows™
Будет ли возвращена настраиваемая поддержка Desktop Screen и удалены костыли которые были добавлены до применения фиксов в FAR?