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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 11395
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 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 144 times

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

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

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

P.S.
В тексте осталась пара ассертов, думаю не повредят.

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Tue 09 Apr, 2013 13:42

в процессе переключения отображается список окон
Это надо бы сделать опциональным. Может раздражать.

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

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

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

Если не отображать список, то теряется обратная связь, и тогда может раздражать кажущаяся непредсказуемость переключения.
"Кажущаяся" в том смысле, что за годы использования CtrlTab неизбежно сложился стереотип, и визуальный контроль помогает его преодолеть.
К тому же во всех известных мне приложениях список отображается.

Но я подумаю о такой опции.

P.S.
Без списка было бы в 2 раза меньше кода )

Max Rusov
Posts: 3600
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 7 times

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

Post by Max Rusov » Tue 09 Apr, 2013 14:02

John Doe wrote:К тому же во всех известных мне приложениях список отображается
Обычно, если отображается список, то переключение происходит в момент отпускания префиксной клавиши. А в Вашем макросе переключение происходит сразу, т.ч. непредсказуемости нет.

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Tue 09 Apr, 2013 14:08

John Doe wrote:Если не отображать список, то теряется обратная связь, и тогда может раздражать кажущаяся непредсказуемость переключения.
"Кажущаяся" в том смысле, что за годы использования CtrlTab неизбежно сложился стереотип, и визуальный контроль помогает его преодолеть.
К тому же во всех известных мне приложениях список отображается.
1. Я так и не смог привыкнуть к родной последовательности переключения Фара, поэтому проблем не предвижу.
2. SciTE и ZeroBrane Studio - при переключении список окон не отображается.

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

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

Post by John Doe » Tue 09 Apr, 2013 14:14

Max Rusov wrote:Обычно, если отображается список, то переключение происходит в момент отпускания префиксной клавиши. А в Вашем макросе переключение происходит сразу, т.ч. непредсказуемости нет.
Действительно.
Значит сделаем.

P.S.
Эх, надеялся что всё уже, а теперь ещё придётся подумать над третьим вариантом (переключением в момент отпускания)
:-)

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

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

Post by John Doe » Tue 09 Apr, 2013 14:18

Shmuel wrote:Я так и не смог привыкнуть к родной последовательности переключения Фара
Как же выходите из положения?

И действительно ли список раздражает? (вопрос ко всем)

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Tue 09 Apr, 2013 14:25

John Doe wrote:
Shmuel wrote:Я так и не смог привыкнуть к родной последовательности переключения Фара
Как же выходите из положения?
Работаю в редакторе SciTE.
John Doe wrote:И действительно ли список раздражает? (вопрос ко всем)
Если переключаемых окон всего 2, например, то список вообще лишний. Поэтому и раздражает, и кроме того, он ярче фона редактора. Мелькает зря.
Но когда открытых окон больше, список становится более полезен.

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

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

Post by John Doe » Tue 09 Apr, 2013 14:32

Shmuel wrote:Если переключаемых окон всего 2, например, то список вообще лишний.
А если так?

Code: Select all

  action=function()
    if #Screens==2 then Keys("CtrlTab") return end
...

Max Rusov
Posts: 3600
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 7 times

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

Post by Max Rusov » Tue 09 Apr, 2013 14:34

Меня больше раздражает то, что строка "Panels:..." заканчивается именем файла (текущего файла в панели). Это делает ее трудноотличимой от собственно файла, и я путаюсь. Было бы логичнее, чтобы "Panels:..." содержал только имя каталога. Это относится и к диалогу F12, конечно, но там она всегда первая - легче ориентироваться.

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

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

Post by John Doe » Tue 09 Apr, 2013 14:51

Согласен.
Подправить:

Code: Select all

    w.text = ("&%d. %-9s %1s %s"):format(w.Pos-1,w.TypeName,EditorSaved==0 and "*" or "" ,name)
А перед ней добавить

Code: Select all

    local name = (w.Type == F.WTYPE_PANELS) and mf.fsplit(w.Name,0x1+0x2) or w.Name

Max Rusov
Posts: 3600
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 7 times

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

Post by Max Rusov » Tue 09 Apr, 2013 14:52

Еще пожелание: если пользоваться макросами прямого переключения окон (Alt1, Alt2...) то переключение через RecentScreens ломается. Если возможно, хотелось бы, чтобы макросы прямого переключения окон были интегрированы в RecentScreens и совместимы с ним.

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

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

Post by John Doe » Tue 09 Apr, 2013 14:58

Я ими не пользуюсь, потому как они конфликтуют с быстрым поиском.
Но попробуйте так:
  1. Macro { description="Use Alt-digit to switch between screens";
  2.   area=allScreens; key="/^[LR]Alt[0-9]$/"; priority=60;
  3.   condition = function(akey) return tonumber(akey:sub(-1))<#Screens end;
  4.   action = function() gotoWindow(akey(1):sub(-1)+1) end;
  5. }
P.S.
Плохо что в фаре не предусмотрены события при переключении экранов.
Есть GOTFOCUS, но только для редактора/вьювера (не в панелях), и срабатывает на кучу всего лишнего (закрытие диалогов)

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

RecentScreens r1

Post by John Doe » Tue 09 Apr, 2013 15:10

Обновил шапку, с учётом приведённых выше изменений, пусть это будет r1
Макрос-замена AltScreens.lua находится в конце, кому надо раскомментируйте, добавлением ещё одного минуса перед --[[

Max Rusov
Posts: 3600
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 7 times

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

Post by Max Rusov » Tue 09 Apr, 2013 15:13

Макрос AltScreens надо бы доработать - выдает ошибку, если нажать Alt-Цифру, больше чем есть окон.

Post Reply

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