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

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

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

Post by John Doe » Mon 15 Apr, 2013 18:40

Latest post of the previous page:

Вроде я указал как и где можно 'исправить' этот т.н. 'баг', не?

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

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

Post by Shmuel » Mon 15 Apr, 2013 18:50

John Doe wrote:Вроде я указал как и где можно 'исправить' этот т.н. 'баг', не?
1. Если "т.н.", то вы не считаете это багом?
2. Такими вещами не занимаюсь, то-есть при наличии развивающегося плагина/скрипта, я не буду править что-то сам, а затем делать merge с новыми версиями. Либо беру готовое, либо не пользуюсь.

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

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

Post by John Doe » Mon 15 Apr, 2013 18:56

1. Баг это когда функция работает иначе, чем заявлено. А заявлено было не много.
Для меня это вообще не функция, но раз люди просят, почему бы и нет

2. У себя я исправил.

User avatar
HaRT
Moderator
Posts: 8111
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 104 times

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

Post by HaRT » Mon 15 Apr, 2013 18:57

Мне одному кажется, что “MS Windows™” в заголовке темы не слишком удачно?
Во-первых, реализованный способ не специфичен для Винды; во-вторых, не вполне ясно, в каком смысле “как” (например, где трёхмерные аэро-эффекты?!).
Я бы предложил термин MRU order. К сожалению, общепринятого русскоязычного термина не знаю, Майкрософт тоже не блещет.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

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

'MRU' настолько устойчиво ассоциируется с 'list', что я с удивлением обнаружил что предложенный вами термин тоже используется.
А для русского языка тем более нет термина, так что приходится на пальцах, "как в Opera", "как в Visual Studio", "как в Windows".
"Переключение между окнами в порядке их использования" тоже коряво.

Я исходил из того, что разницу в порядке переключения окон в фаре и в Windows видят все (а фар и Windows есть у каждого).

User avatar
HaRT
Moderator
Posts: 8111
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 104 times

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

Post by HaRT » Tue 16 Apr, 2013 10:43

John Doe wrote:"Переключение между окнами в порядке их использования" тоже коряво.
Согласен.
Можно что-нибудь в духе порядок «недавние первее», или «недавние выше» или «недавние ближе»
Фар есть инструмент, а не нянька. © 2009 DrKnS

2useven10
Posts: 3045
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 83 times

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

Post by 2useven10 » Tue 16 Apr, 2013 10:53

LRU и MRU переводить не надо, как и Windows.

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

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

Post by John Doe » Tue 16 Apr, 2013 11:15

HaRT wrote:Можно что-нибудь в духе порядок «недавние первее», или «недавние выше» или «недавние ближе»
Вы находите это лучше?
2useven10 wrote:LRU и MRU переводить не надо, как и Windows.
И кто поймёт?
RecentScreens и то понятнее

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

RecentScreens r2.11

Post by John Doe » Tue 16 Apr, 2013 22:32

r2.11
- для панелей отображается текущий путь, независимо от элемента под курсором
- теперь игнорируются события QView

PS

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

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

Post by John Doe » Tue 16 Apr, 2013 23:50

Shmuel wrote:F12 показывает элемент под курсором, ему простительно. А сабж показывает текущую папку, независимо от элемента под курсором
На плагиновых панелях F12 показывает чёрт-те что (баг там).

А макрос показывает путь от корня плагиновой панели.
Если у вас иное видение, то дайте знать.
Желательно вместе с кодом.

User avatar
Mr.Merak
Posts: 178
Joined: Sun 10 Jan, 2010 16:22
Been thanked: 1 time

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

Post by Mr.Merak » Wed 17 Apr, 2013 08:05

Code: Select all

   ╔═══════════════════════════════════════════════════════════════ LuaMacro ════════════════════════════════════════════════════════════════╗
   ║ ...\FAR3\Profile\Macros\scripts\SimSU\RecentScreens.lua:261: View0/Просмотр0                                                            ║
   ║ stack traceback:                                                                                                                        ║
   ║ ○[C]: in function 'assert'                                                                                                              ║
   ║ ○...\FAR3\Profile\Macros\scripts\SimSU\RecentScreens.lua:261: in function <...\FAR3\Profile\Macros\scripts\SimSU\RecentScreens.lua:257> ║
   ╟─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
   ║                                                                 { OK }                                                                  ║
   ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
far3333
Проблема фары №1: нет печати "из коробки"

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

RecentScreens r2.15

Post by John Doe » Wed 17 Apr, 2013 09:57

r2.15
- исправлена работа при языках интерфейса отличных от English

Есть косметический дефект, вызванный неюникодностью функции format.
Пока не трогаю, возможно стоит исправить format.

Update
Временный фикс.
Перед строкой 205 надо вставить это:

Code: Select all

    w.TypeName = w.TypeName..(" "):rep(10-w.TypeName:len())
Update 2
Функция format исправлена в FAR build 3349

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

RecentScreens r3

Post by John Doe » Tue 23 Apr, 2013 21:10

r3
  • Пользовательские настройки теперь хранятся в базе LuaMacro, сохраняются при любом изменении.
  • Изменить их можно интерактивно, делается это прямо в списке окон,
    горячие клавиши (цифровая клавиатура) перечислены на рамке, помощь доступна по F1
    /Возможно у кого-то на клавиатуре отсутствует NumPad, дайте знать, добавлю другие хоткеи/
  • Если даже отображение списка отключено, то его всегда можно вызвать по CtrlF12
    /Кроме того меню всегда показывается при вызове из единственного окна, и в модальных редакторах/вьюверах/
  • При закрытии какого-либо окна перемещаемся в "предыдущее" (в смысле MRU)
  • Окна "нумеруются" как в Screens: 0-9,A-Z
    Первые 36 окон можно вызвать по хоткею /[RL]Ctrl\w/
  • Панели в списке дополнительно помечаются
  • При загрузке проверяется билд фара (в последних билдах были важные исправления)
    /Если хотите остаться на "стабильном" 3355 - можно изменить значение minfarbuild, в начале скрипта/

Shmuel
Posts: 5230
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 23 Apr, 2013 21:39

Code: Select all

local switchInstant = S.switchInstant==nil and true or S.switchInstant
"and true" - лишнее.

Code: Select all

local Lock = { ['Num']=0, ['Caps']=1, ['Scroll']=2 }
Можно короче:

Code: Select all

local Lock = { Num=0, Caps=1, Scroll=2 }

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

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

Post by John Doe » Tue 23 Apr, 2013 21:41

Code: Select all

local switchInstant = S.switchInstant==nil and true or S.switchInstant
"and true" - лишнее.
Не совсем так.
true выступает как дефолтное значение, применяемое при отсутствии записи в базе.

А со вторым однозначно перемудрил )

Shmuel
Posts: 5230
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 23 Apr, 2013 21:48

John Doe wrote:

Code: Select all

local switchInstant = S.switchInstant==nil and true or S.switchInstant
"and true" - лишнее.
Не совсем так.
true выступает как дефолтное значение, применяемое при отсутствии записи в базе.
А вы подумайте ещё.

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

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

Post by John Doe » Tue 23 Apr, 2013 21:54

Что тут думать, вы безусловно правы в том, что СЕЙЧАС его можно безболезненно отбросить, упростив таким образом выражение.
Но представьте, что там не значение, а переменная switchInstantDefault

Post Reply

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