RecentScreens — переключение между окнами как в MS Windows™
Posted: Tue 09 Apr, 2013 13:02
by John Doe
В большинстве приложений, которые я использую, переключение между окнами происходит в порядке их использования (MRU order).
Но не во всех, пример исключений: FAR manager, Google Chrome.
Для решения этой проблемы в фаре был когда-то такой плагинчик RecentScreens — меню «Экраны» в порядке использования
http://plugring.farmanager.com/plugin.php?pid=813 wrote:Плагин RecentScreens может служить заменой стандартному меню Screens (Экраны). При этом список окон в меню отсортирован в порядке использования. Так же плагин позволяет переключаться между окнами с помощью Ctrl-Tab аналогично тому, как это происходит в Opera (или Visual Studio).
Переключение окон-экранов по умолчанию заменяет LCtrlTab (только левый Ctrl).
В отличии от обычного переключения экранов — в процессе переключения может отображаться список окон (до тех пор, пока удерживается Ctrl).
За исключением порядка элементов, вид списка соответствует стандартному меню Screens (F12).
- так же: (*) помечены редакторы с несохранёнными изменениями.
- отличие: для панелей отображаются путь папки, открытой на активной панели (а не файл под курсором)
- отличие: корректно обрабатываются модальные окна Update: после 4138 билда отображаемые номера окон не соответствуют
CtrlTab / CtrlShiftTab — вперёд/назад по списку.
Также работают и Ctrl- Up|Down|PgUp|PgDn|Home|End. Пока список на экране — перемещаться по его элементам можно и с помощью мыши.
Ctrl<hot_key> — переход к окну с заданной горячей клавишей (хоткей фиксированный, соответствует тому, что в стандартном Screens)
Если отображение списка отключено в настройках, то его можно вызвать по CtrlF12
Независимо от настроек список показывается при вызове из единственного окна, и в модальных редакторах/вьюверах
Настройка осуществляется прямо в списке окон, вот справка (доступна по F1).
Re: RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 13:09
by John Doe
P.S.
В тексте осталась пара ассертов, думаю не повредят.
Re: RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 13:42
by Shmuel
в процессе переключения отображается список окон
Это надо бы сделать опциональным. Может раздражать.
Re: RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 13:52
by John Doe
Если не отображать список, то теряется обратная связь, и тогда может раздражать кажущаяся непредсказуемость переключения.
"Кажущаяся" в том смысле, что за годы использования CtrlTab неизбежно сложился стереотип, и визуальный контроль помогает его преодолеть.
К тому же во всех известных мне приложениях список отображается.
Но я подумаю о такой опции.
P.S.
Без списка было бы в 2 раза меньше кода )
Re: RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 14:02
by Max Rusov
John Doe wrote:К тому же во всех известных мне приложениях список отображается
Обычно, если отображается список, то переключение происходит в момент отпускания префиксной клавиши. А в Вашем макросе переключение происходит сразу, т.ч. непредсказуемости нет.
Re: RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 14:08
by Shmuel
John Doe wrote:Если не отображать список, то теряется обратная связь, и тогда может раздражать кажущаяся непредсказуемость переключения.
"Кажущаяся" в том смысле, что за годы использования CtrlTab неизбежно сложился стереотип, и визуальный контроль помогает его преодолеть.
К тому же во всех известных мне приложениях список отображается.
1. Я так и не смог привыкнуть к родной последовательности переключения Фара, поэтому проблем не предвижу.
2. SciTE и ZeroBrane Studio - при переключении список окон не отображается.
Re: RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 14:14
by John Doe
Max Rusov wrote:Обычно, если отображается список, то переключение происходит в момент отпускания префиксной клавиши. А в Вашем макросе переключение происходит сразу, т.ч. непредсказуемости нет.
Действительно.
Значит сделаем.
P.S.
Эх, надеялся что всё уже, а теперь ещё придётся подумать над третьим вариантом (переключением в момент отпускания)
:-)
Re: RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 14:18
by John Doe
Shmuel wrote:Я так и не смог привыкнуть к родной последовательности переключения Фара
Как же выходите из положения?
И действительно ли список раздражает? (вопрос ко всем)
Re: RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 14:25
by Shmuel
John Doe wrote:
Shmuel wrote:Я так и не смог привыкнуть к родной последовательности переключения Фара
Как же выходите из положения?
Работаю в редакторе SciTE.
John Doe wrote:И действительно ли список раздражает? (вопрос ко всем)
Если переключаемых окон всего 2, например, то список вообще лишний. Поэтому и раздражает, и кроме того, он ярче фона редактора. Мелькает зря.
Но когда открытых окон больше, список становится более полезен.
Re: RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 14:32
by John Doe
Shmuel wrote:Если переключаемых окон всего 2, например, то список вообще лишний.
action=function()
if #Screens==2 then Keys("CtrlTab") return end
...
Re: RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 14:34
by Max Rusov
Меня больше раздражает то, что строка "Panels:..." заканчивается именем файла (текущего файла в панели). Это делает ее трудноотличимой от собственно файла, и я путаюсь. Было бы логичнее, чтобы "Panels:..." содержал только имя каталога. Это относится и к диалогу F12, конечно, но там она всегда первая - легче ориентироваться.
Re: RecentScreens — переключение между окнами как в MS Windo
local name = (w.Type == F.WTYPE_PANELS) and mf.fsplit(w.Name,0x1+0x2) or w.Name
Re: RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 14:52
by Max Rusov
Еще пожелание: если пользоваться макросами прямого переключения окон (Alt1, Alt2...) то переключение через RecentScreens ломается. Если возможно, хотелось бы, чтобы макросы прямого переключения окон были интегрированы в RecentScreens и совместимы с ним.
RecentScreens — переключение между окнами как в MS Windo
Posted: Tue 09 Apr, 2013 14:58
by John Doe
Я ими не пользуюсь, потому как они конфликтуют с быстрым поиском.
Но попробуйте так:
P.S.
Плохо что в фаре не предусмотрены события при переключении экранов.
Есть GOTFOCUS, но только для редактора/вьювера (не в панелях), и срабатывает на кучу всего лишнего (закрытие диалогов)
RecentScreens r1
Posted: Tue 09 Apr, 2013 15:10
by John Doe
Обновил шапку, с учётом приведённых выше изменений, пусть это будет r1
Макрос-замена AltScreens.lua находится в конце, кому надо раскомментируйте, добавлением ещё одного минуса перед --[[