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

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

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

Post by John Doe » Tue 09 Apr, 2013 13:02

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

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

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



Требуется FAR3 build 4096 или новее.
Attachments
RecentScreens_r3.9.7z
r3.9 work in progress
(5.13 KiB) Downloaded 125 times

User avatar
Tim Sobolev
Posts: 693
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Contact:

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

Post by Tim Sobolev » Tue 07 Oct, 2014 21:42

Latest post of the previous page:

John Doe wrote:
Tim Sobolev wrote:Будет ли возвращена настраиваемая поддержка Desktop Screen
Если объясните какая требуется поддержка.
Показ в списке, переключение из/в по CtrlTab

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Wed 08 Oct, 2014 07:43

Tim Sobolev wrote:
John Doe wrote:
Tim Sobolev wrote:Будет ли возвращена настраиваемая поддержка Desktop Screen
Если объясните какая требуется поддержка.
Показ в списке, переключение из/в по CtrlTab
Настроить легко, добавьте в конец строки 73 это: [F.WTYPE_DESKTOP]="Desktop",
И дайте знать, полностью ли устраивает итоговое поведение.

User avatar
Tim Sobolev
Posts: 693
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Contact:

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

Post by Tim Sobolev » Wed 08 Oct, 2014 20:31

В общем, пока что поведение устраивает.
John Doe wrote:
Tim Sobolev wrote:Показ в списке, переключение из/в по CtrlTab
Настроить легко, добавьте в конец строки 73 это: [F.WTYPE_DESKTOP]="Desktop",
И дайте знать, полностью ли устраивает итоговое поведение.

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

r3.8

Post by John Doe » Wed 15 Oct, 2014 14:14

  • В списке теперь отображается т.н. "Desktop Screen".
    Не знаю правда зачем )
  • Убран ненужный более обход бага.
  • При загрузке добавлена проверка на Conemu: если фар запущен во вкладке, то скрипт не загружается.
    (Conemu перехватывает CtrlTab)
  • Исправлен баг: скрипт не учитывал, что событие VE_READ может приходить в один и тот же экземпляр вьювера неоднократно.
В шапке.

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Contact:

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

Post by Kildor » Thu 16 Oct, 2014 05:03

А как отключить третий пункт?
У меня конэму, фар во вкладке, но перехват CtrlTab отключен именно заради RecentScreens.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Post by sToLp » Thu 16 Oct, 2014 05:31

Kildor wrote:У меня конэму, фар во вкладке, но перехват CtrlTab отключен именно заради RecentScreens.
Аналогичная ситуация. Закоммитил строку:
--- if Plugin.SyncCall("4b675d80-1d4a-4ea9-8436-fdc23f2fc14b","IsConEmu()") then return end --do not work under conemu
и макрос работает в КонЭму.

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Thu 16 Oct, 2014 07:10

Kildor
sToLp
Расскажите зачем вам "RecentScreens.lua" при наличии в Conemu функции "Recent mode"?

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Contact:

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

Post by Kildor » Thu 16 Oct, 2014 09:39

Ну например затем, что сейчас у меня в конэму 3 фара и 4 sh-консоли. В двух фарах открыто по модальному файлу через SCP, в третьем -- три локальных файла. Каждый фар и консоль -- отдельный контекст работы. Если мне нужно сменить контекст, я пользуюсь Win-Number.
Recent mode бегает между всеми консолями и файлами, что мне не нужно. Кроме того, нифига неочевидно, какая вкладка откроется следующей. В твоём меню мне сразу очевидно, что будет следующим, а заодно и состояния открытых файлов. Мне не нужно бегать глазами между панелью вкладок и собственно содержимым вкладки.

PS: Строчку с выходом я тоже закомментировал, но по мне это не совсем правильный подход.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Thu 16 Oct, 2014 09:45

>Строчку с выходом я тоже закомментировал, но по мне это не совсем правильный подход.
Тогда какой подход правильный?

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Contact:

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

Post by Kildor » Thu 16 Oct, 2014 10:23

Ну во первых, если человек ставит этот макрос, то он наверное хочет им пользоваться? Поэтому не стоит как-то его в этом ограничивать.

А если хочется как-то ограничить, то можно либо воткнуть переключатель в конфиге, как это сделано с показом меню, либо по умолчанию закомментировать эту проверку. Опять же, потому что человек поставил этот скрипт чтоб им пользоваться.

Я конечно могу представить ситуацию одновременного использования фара as-is и фара as-conemu, где в первом случае хочется пользоваться скриптом, во втором нет, но по моему, это куда более редкий случай чем варианты "хочу использовать скрипт" и "не хочу использовать скрипт"
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Post by sToLp » Thu 16 Oct, 2014 13:54

John Doe wrote:Kildor
sToLp
Расскажите зачем вам "RecentScreens.lua" при наличии в Conemu функции "Recent mode"?
Ответ банальный: наглядность. Я даже предлог visual к названию добавляю.
Спасибо за полезный и удобный макрос!

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

r3.9

Post by John Doe » Mon 20 Oct, 2014 14:02

Обновление: r3.9
  • Альтернативный обход конфликта с ConEmu.
  • Рефакторинг. Теперь в редакторе и вьювере устанавливается по одному обработчику событий, а не по 3.

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Post by sToLp » Mon 20 Oct, 2014 15:10

Code: Select all

[/] Instant - определяет момент переключения
- true  - при каждом нажатии CtrlTab
Переключение происходит не при "каждом" нажатии шортката, а только при первом. Так же и в 3.8, и в 3.7.
Far 3.0.4149x86

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Mon 20 Oct, 2014 15:17

Увы, это баг в фаре, ещё со времён 3847: http://bugs.farmanager.com/view.php?id=1301#c12736

rival
Posts: 5
Joined: Tue 13 Jan, 2015 14:27

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

Post by rival » Tue 21 Feb, 2017 14:27

там один вызов showRecentScreens без второго параметра идёт, из-за этого у меня new_pos падает (nil на строке 275)

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Tue 21 Feb, 2017 16:35

Делал какие-то мелкие фиксы, проверьте воспроизводится ли ваша проблема.
И если да, тогда подробнее опишите ошибку, и как её воспроизвести.
Attachments
RecentScreens.lua
3.9.1
(16.01 KiB) Downloaded 26 times

rival
Posts: 5
Joined: Tue 13 Jan, 2015 14:27

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

Post by rival » Wed 22 Feb, 2017 08:14

John Doe wrote: Делал какие-то мелкие фиксы, проверьте воспроизводится ли ваша проблема.
Всё работает, спасибо.

Post Reply

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

Who is online

Users browsing this forum: No registered users and 1 guest