Console Control

Здесь можно обсудить ваш любимый плагин.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Console Control

Post by Max Rusov »

Console Control for FAR 3

Микроплагин для управления размером и шрифтом консольного окна FAR с помощью мыши или клавиатуры.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Console Control

Post by John Doe »

Latest post of the previous page:

Для интереса "свернул" ваш модуль.

Code: Select all

local cc = {}

cc.ID = "94624B7B-FFDB-435F-B955-F99DBBC3BFE0"
                     
for c in ("Exist Call Command Config Menu"):gmatch("%w+") do
  cc[c] = function(...)
    return Plugin[c](cc.ID,...)
  end
end

cc.Installed = cc.Exist

for c in ("WindowSize BufferSize FontSize FontSizeDelta FontName Maximize Topmost Transparency"):gmatch("%w+") do
  cc[c] = function(...)
    return Plugin.Call(cc.ID,c,...)
  end
end

cc.WindowSizeDelta = function(DX, DY)
  local X, Y = cc.WindowSize()
  return cc.WindowSize(X+DX, Y+DY)
end

cc.BufferSizeDelta = function(DX, DY)
  local X, Y = cc.BufferSize()
  return cc.BufferSize(X+DX, Y+DY)
end

ConsoleControl = cc
Вместо ConsoleControl = cc лучше return cc, как я предлагал ранее.
Добавил ещё Config и Command (или вы намеренно пропустили?)

А вот вся "документация:"
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Console Control

Post by Max Rusov »

John Doe wrote:Для интереса "свернул" ваш модуль
Что то оно у меня не заработало
...Far3\Config\Macros\scripts\ConsoleControl-Macros.lua:68: attempt to call field 'Maximize' (a nil value)
stack traceback:
...Far3\Config\Macros\scripts\ConsoleControl-Macros.lua:68: in function <...Far3\Config\Macros\scripts\ConsoleControl-Macros.lua:67>
Да и по любому - это brainfuck у не интерфейс :). А документацией он станет только при наличии комментариев, конечно.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Console Control

Post by Max Rusov »

John Doe wrote:А вот вся "документация:"

Code: Select all

ID = "94624B7B-FFDB-435F-B955-F99DBBC3BFE0"
Installed ()
Call ()
Menu ()
WindowSize (X, Y)
WindowSizeDelta (DX, DY)
BufferSize (X, Y)
BufferSizeDelta (DX, DY)
FontSize (Size)
FontSizeDelta (D)
FontName (Name, Size)
Maximize (On)
Topmost (On)
Transparency (Value)
Вот этого, кстати не понял. Что это?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Console Control

Post by John Doe »

Max Rusov wrote:Что то оно у меня не заработало
Ну я же не думал что вы его на самом деле попробуете запустить!
Я лично не пробовал :-)
(набросал на скорую руку)

В любом случае, предлагаю вам более интересную версию, на этот раз проверил )

Code: Select all

-- https://forum.farmanager.com/viewtopic.php?p=105959#p105959
--
-- Console Control
-- (c) Max Rusov
-- https://github.com/MaxRusov/far-plugins/tree/master/ConsoleControl
--
-- Интерфейсный модуль
-- Поместите файл в %FARPROFILE%\Macros\Modules
--
local cc = {}
cc.ID = "94624B7B-FFDB-435F-B955-F99DBBC3BFE0"
local interface=[[
  Width, Height = WindowSize ([Width], [Height]) -- размеры окна
  Width, Height = BufferSize ([Width], [Height]) -- размеры буфера
  Size,  Name   = FontSize ([Size])              -- размер шрифта
  Size,  Name   = FontSizeDelta ([DeltaSize])    -- +/- размер шрифта
  Size,  Name   = FontName ([Name], [Size])      -- параметры шрифта
  {0|1}         = Maximize ([On])                -- максимизация/восстановление
                                                 -- размеров окна (-1 - переключить)
  {0|1}         = Topmost ([On])                 -- Always On Top (-1 - переключить)
  {0-255}       = Transparency ([Value])         -- прозрачность
]]
--Width, Height = WindowSizeDelta (DX, DY)       -- +/- размеры окна
--Width, Height = BufferSizeDelta (DX, DY)       -- +/- размеры буфера

for c in interface:gmatch("=%s*(%w+)%s*%(.-\n") do
--for c in interface:gmatch("(%w+)%s*%(.-\n") do
  cc[c] = function(...)  return Plugin.Call(cc.ID,c,...)  end
end

for c in ("Call SyncCall Command"):gmatch("%w+") do
  cc[c] = function(...) return Plugin[c](cc.ID,...)  end
end
for c in ("Exist Config Menu"):gmatch("%w+") do
  cc[c] = function() return Plugin[c](cc.ID)  end
end

cc.Installed = cc.Exist

cc.WindowSizeDelta = function(DX, DY)
  local X, Y = cc.WindowSize()
  return cc.WindowSize(X+DX, Y+DY)
end

cc.BufferSizeDelta = function(DX, DY)
  local X, Y = cc.BufferSize()
  return cc.BufferSize(X+DX, Y+DY)
end

return cc
Этот вариант мне нравится тем, что модуль как бы "автогенерируется" из собственной "документации" (interface).

P.S.
Если эту тему немного развить, то возможно сделать и универсальную функцию, на манер Plugin.require
А LuaMacroComplit можно будет снабдить подсказкой!
Last edited by John Doe on Thu 30 Jan, 2020 08:37, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Console Control

Post by John Doe »

Поигрался с плагином.
Поведение некоторых функций изменилось по сравнению с прошлой версией.

Неудобно что некоторые параметры в документации называются иначе чем в модуле (Width - X, Height - Y, ...)
Составил для себя "конспект" Readme.txt (см. выше).

Maximize и Topmost возвращают 1|0
Но в Lua 0 - это true, поэтому лучше бы использовать вместо него false/nil, удобнее в условиях

P.S.
В текст вложения выше закралась (некритичная) ошибка. Файл заменил.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Console Control

Post by John Doe »

Большинство макросов ConsoleControl-Macros.*lua работают как с левыми, так и с правыми модификаторами.
Кроме Change Windows Size: всё дело в local S = akey(1):sub(9);
Стоит изменить на local S = akey(1):match("R?AltShift(.+)");

P.S.
Заметил что в .fmlua используются регэкспы в именах ключей, а в .lua нет.
Вот как будет в .lua

Code: Select all

key="/[LR]AltShift(Up|Down|Left|Right)/";
key="/[LR]CtrlMsWheel(Up|Down)/";
key="/[LR]Ctrl[LR]AltMsWheel(Up|Down)/";
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Console Control

Post by John Doe »

По поводу того же макроса: Macro { description="Console Control: Change Windows Size";
Он перехватывает клавиши, занятые в редакторе для пометки вертикального блока.

Надо либо отключать этот макрос в редакторе , либо ограничить его действие только левыми (или только правыми) модификаторами.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Console Control

Post by Max Rusov »

Вообще-то вертикальные блоки в редакторе и при одном Alt выделяются, так что раскорячиваться с AltShift не обязательно. Но, конечно, макрос можно переназначить как угодно - он идет только в качестве примера. Мне, вообще, мышкой удобнее размер менять.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Console Control

Post by John Doe »

Вот блин.

Code: Select all

Alt-серые клав.курсора  Пометка вертикального блока
Alt-Shift-Клав.курсора  Пометка вертикального блока
Кто мне скажет как выглядят серые клавиши на чёрной клавиатуре?

Был уверен что это клавиши Numpad, но начинаю сомневаться:
Аlt - <стрелки NumPad> не срабатывает.
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: Console Control

Post by Alexey Samlyukov »

когда-то давно курсорные клавиши были серыми. http://www.vintagecomputer.net/ibm/5140 ... rtible.jpg
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Console Control

Post by John Doe »

Да нет, тут ерунда какая-то
Что тогда по вашему Alt-Shift-Клав.курсора Пометка вертикального блока?
Не NumPad же

Update
Таки да, судя по функциям "не серые" подразумевают NumPad
Крайне неудачно сформулировано
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Re: Console Control

Post by 2useven10 »

Не NumPad же, с шифтом-то
почему нет ? нумпад с выключенным нумлоком - пометка вертикального блока.
на старых клавиатурах отдельных курсорных клавиш не было, а когда они появились, то были серыми (обычно).
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Console Control

Post by John Doe »

Разобрались...

Но что тогда это:

Code: Select all

   #Ctrl-Alt-серые клавиши#  Пометка вертикального блока
У меня не работает.

Зато (сюрприз) почему-то работает CtrlAltNum4 и CtrlAltNum6

P.S.
Max Rusov
Эту часть обсуждения отделю потом, т.к. оффтопик
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Re: Console Control

Post by 2useven10 »

у меня работает.
клавиатура
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Console Control

Post by John Doe »

У меня полноразмерная клавиатура, и #Ctrl-Alt-серые клавиши# не выполняют никаких действий в редакторе.
Нужна статистика, у кого как?
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Console Control

Post by Max Rusov »

У меня работает как выделение прямоугольного блока по словам.
Только Ctrl-Alt-Num8 / Ctrl-Alt-Num2 не работают почему то.
Post Reply

Return to “Обсуждение плагинов”