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

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

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

Post by John Doe »

В большинстве приложений, которые я использую, переключение между окнами происходит в порядке их использования (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 319 times
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

P.S.
В тексте осталась пара ассертов, думаю не повредят.
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

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

Post by Shmuel »

в процессе переключения отображается список окон
Это надо бы сделать опциональным. Может раздражать.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

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

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

P.S.
Без списка было бы в 2 раза меньше кода )
Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 12 times

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

Post by Max Rusov »

John Doe wrote:К тому же во всех известных мне приложениях список отображается
Обычно, если отображается список, то переключение происходит в момент отпускания префиксной клавиши. А в Вашем макросе переключение происходит сразу, т.ч. непредсказуемости нет.
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

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

Post by Shmuel »

John Doe wrote:Если не отображать список, то теряется обратная связь, и тогда может раздражать кажущаяся непредсказуемость переключения.
"Кажущаяся" в том смысле, что за годы использования CtrlTab неизбежно сложился стереотип, и визуальный контроль помогает его преодолеть.
К тому же во всех известных мне приложениях список отображается.
1. Я так и не смог привыкнуть к родной последовательности переключения Фара, поэтому проблем не предвижу.
2. SciTE и ZeroBrane Studio - при переключении список окон не отображается.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

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

P.S.
Эх, надеялся что всё уже, а теперь ещё придётся подумать над третьим вариантом (переключением в момент отпускания)
:-)
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

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

И действительно ли список раздражает? (вопрос ко всем)
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

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

Post by Shmuel »

John Doe wrote:
Shmuel wrote:Я так и не смог привыкнуть к родной последовательности переключения Фара
Как же выходите из положения?
Работаю в редакторе SciTE.
John Doe wrote:И действительно ли список раздражает? (вопрос ко всем)
Если переключаемых окон всего 2, например, то список вообще лишний. Поэтому и раздражает, и кроме того, он ярче фона редактора. Мелькает зря.
Но когда открытых окон больше, список становится более полезен.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

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

Code: Select all

  action=function()
    if #Screens==2 then Keys("CtrlTab") return end
...
Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 12 times

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

Post by Max Rusov »

Меня больше раздражает то, что строка "Panels:..." заканчивается именем файла (текущего файла в панели). Это делает ее трудноотличимой от собственно файла, и я путаюсь. Было бы логичнее, чтобы "Panels:..." содержал только имя каталога. Это относится и к диалогу F12, конечно, но там она всегда первая - легче ориентироваться.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

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

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: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 12 times

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

Post by Max Rusov »

Еще пожелание: если пользоваться макросами прямого переключения окон (Alt1, Alt2...) то переключение через RecentScreens ломается. Если возможно, хотелось бы, чтобы макросы прямого переключения окон были интегрированы в RecentScreens и совместимы с ним.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

Я ими не пользуюсь, потому как они конфликтуют с быстрым поиском.
Но попробуйте так:
  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: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

RecentScreens r1

Post by John Doe »

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

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