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

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

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

Post by John Doe »

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

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

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



Требуется FAR3 build 5547 или новее.

[download] https://chiselapp.com/user/johnd0e/repo ... creens.lua
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

Вроде я указал как и где можно 'исправить' этот т.н. 'баг', не?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

John Doe wrote:Вроде я указал как и где можно 'исправить' этот т.н. 'баг', не?
1. Если "т.н.", то вы не считаете это багом?
2. Такими вещами не занимаюсь, то-есть при наличии развивающегося плагина/скрипта, я не буду править что-то сам, а затем делать merge с новыми версиями. Либо беру готовое, либо не пользуюсь.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

2. У себя я исправил.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Мне одному кажется, что “MS Windows™” в заголовке темы не слишком удачно?
Во-первых, реализованный способ не специфичен для Винды; во-вторых, не вполне ясно, в каком смысле “как” (например, где трёхмерные аэро-эффекты?!).
Я бы предложил термин MRU order. К сожалению, общепринятого русскоязычного термина не знаю, Майкрософт тоже не блещет.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

Я исходил из того, что разницу в порядке переключения окон в фаре и в Windows видят все (а фар и Windows есть у каждого).
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

John Doe wrote:"Переключение между окнами в порядке их использования" тоже коряво.
Согласен.
Можно что-нибудь в духе порядок «недавние первее», или «недавние выше» или «недавние ближе»
Фар есть инструмент, а не нянька. © 2009 DrKnS
2useven10
Posts: 5208
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

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

Post by 2useven10 »

LRU и MRU переводить не надо, как и Windows.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

HaRT wrote:Можно что-нибудь в духе порядок «недавние первее», или «недавние выше» или «недавние ближе»
Вы находите это лучше?
2useven10 wrote:LRU и MRU переводить не надо, как и Windows.
И кто поймёт?
RecentScreens и то понятнее
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

RecentScreens r2.11

Post by John Doe »

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

PS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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 »

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: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

RecentScreens r2.15

Post by John Doe »

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: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

RecentScreens r3

Post by John Doe »

r3
  • Пользовательские настройки теперь хранятся в базе LuaMacro, сохраняются при любом изменении.
  • Изменить их можно интерактивно, делается это прямо в списке окон,
    горячие клавиши (цифровая клавиатура) перечислены на рамке, помощь доступна по F1
    /Возможно у кого-то на клавиатуре отсутствует NumPad, дайте знать, добавлю другие хоткеи/
  • Если даже отображение списка отключено, то его всегда можно вызвать по CtrlF12
    /Кроме того меню всегда показывается при вызове из единственного окна, и в модальных редакторах/вьюверах/
  • При закрытии какого-либо окна перемещаемся в "предыдущее" (в смысле MRU)
  • Окна "нумеруются" как в Screens: 0-9,A-Z
    Первые 36 окон можно вызвать по хоткею /[RL]Ctrl\w/
  • Панели в списке дополнительно помечаются
  • При загрузке проверяется билд фара (в последних билдах были важные исправления)
    /Если хотите остаться на "стабильном" 3355 - можно изменить значение minfarbuild, в начале скрипта/
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

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: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Code: Select all

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

А со вторым однозначно перемудрил )
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

John Doe wrote:

Code: Select all

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

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