Автоматически начинать выделение текста под панелями мышью
Автоматически начинать выделение текста под панелями мышью
Можно как-то настроить FAR включать автоматическое выделение текста мышью, если панели выключены? Т.е. когда панели выключены, я хотел бы иметь возможность сразу выделять текст на консоли, вместо того чтобы нажимать Alt+Ins или WindowMenu->Edit->Mark
Last edited by HaRT on Tue 20 Jul, 2021 17:45, edited 1 time in total.
Reason: Тема перенесена; улучшен Заголовок.
Reason: Тема перенесена; улучшен Заголовок.
- John Doe
- Бюрократ
- Posts: 13847
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Автоматические выделение текста под панелями
Прямого нет, но можно предложить вот такой извращённый:
Суть: фар и сам разрешает выделение, если промотать буфер.
Используя это, при первом клике мыши макрос проматывает буфер на 1, и дальше можно выделять.
Ctrl или Esc восстанавливают положение буфера.
Code: Select all
--https://forum.farmanager.com/viewtopic.php?p=167553#p167553
local function far_in_window () --vertical only
local f = far.AdvControl"ACTL_GETFARRECT"
local w = win.GetConsoleScreenBufferInfo()
local yDelta = f.Top-w.WindowTop
return yDelta==0, yDelta
end
Macro {
area="Shell QView Info Tree"; key="MSLClick";
condition=function()
return not APanel.Visible and far_in_window()
end;
id="36906AA6-B678-4C0C-AB52-0CF0AD603048";
action=function()
Far.Window_Scroll(-1)
end;
}
Macro {
area="Common"; key="CtrlO";
condition=function()
local outside, yDelta
if outside then
Far.Window_Scroll(-yDelta)
end
end;
id="6E8B2D6A-C49E-437F-815F-83DC6EA84B42";
action=function()end;
}
Используя это, при первом клике мыши макрос проматывает буфер на 1, и дальше можно выделять.
Ctrl или Esc восстанавливают положение буфера.
https://t.me/FarManager — Telegram чат
- HaRT
- Moderator
- Posts: 10854
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Автоматические выделение текста под панелями
А не получается ли при соблюдении условий по нажатию мыши засылать
AltIns
и сам клик?Фар есть инструмент, а не нянька. © 2009 DrKnS
- John Doe
- Бюрократ
- Posts: 13847
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Автоматические выделение текста под панелями
Или так, да.
Code: Select all
Macro {
area="Shell QView Info Tree"; key="MSLClick";
condition=function()
return not APanel.Visible
end;
id="9D672477-BC4B-4710-AB5C-FF2FD6E8C2C0";
action=function()
Keys("AltIns")
end;
}
Не знаю как побороть.
https://t.me/FarManager — Telegram чат
- HaRT
- Moderator
- Posts: 10854
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Автоматические выделение текста под панелями
Если бы нашёлся способ определить положение каретки, то можно было бы засылкой клавиш сместить её в положение мышиного курсора…
Фар есть инструмент, а не нянька. © 2009 DrKnS
- HaRT
- Moderator
- Posts: 10854
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Автоматические выделение текста под панелями
Code: Select all
--{ See https://forum.farmanager.com/viewtopic.php?p=167559#p167559
local function mouseInOrAbovePanel( panel )
local x0 = panel.Left and 0 or Far.Width - panel.Width
local x1 = panel.Left and panel.Width or Far.Width -- exclusive
local y1 = ( panel.Visible and panel.Height or 0 ) + ( Far.GetConfig'Interface.ShowMenuBar' and 1 or 0 )
return Mouse.X >= x0 and Mouse.X < x1 and Mouse.Y < y1
end
local function mouseAboveCmdLine()
return Mouse.Y < Far.Height - ( Far.GetConfig'Screen.KeyBar' and 2 or 1 )
end
local function mouseInOutputArea()
return mouseAboveCmdLine() and not mouseInOrAbovePanel( APanel ) and not mouseInOrAbovePanel( PPanel )
end
local function mouseInTogglePanelsCell() return Mouse.X == 0 and Mouse.Y == 0 end
Macro { description = 'Grab by mouse right away when over the output area (off other UI elements)';
area = 'Shell Tree QView Info Desktop'; key = 'MSLClick'; id = '26964FEA-72B5-4EF4-9620-1BDE05180F7E';
condition = function() return mouseInOutputArea() and not mouseInTogglePanelsCell() or Area.Desktop end;
action = function()
Keys( ('AltIns %d*Left %d*Up %d*Right %d*Down'):format( Far.Width, Far.Height, Mouse.X, Mouse.Y ) )
end
}
--}
Last edited by HaRT on Sun 25 Jul, 2021 16:48, edited 4 times in total.
Reason: Запрещён захват с позиции (0,0), препятствовавший переключению видимости панелей.
Reason: Запрещён захват с позиции (0,0), препятствовавший переключению видимости панелей.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- HaRT
- Moderator
- Posts: 10854
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Автоматически начинать выделение текста под панелями мышью
Думаю, макрос можно расширить, чтобы захват начинался с любого знакоместа, не занятого панелями, командной строкой, главным меню и строкой функциональных клавиш, — т.е. ниже панелей (потенциально разновысоких) и сбоку от активной панели, если пассивная выключена. Но сейчас мне лень это делать.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- HaRT
- Moderator
- Posts: 10854
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Автоматически начинать выделение текста под панелями мышью
В макрос добавлена поддержка области Scrollback (по недоразумению именуемой Desktop).
Фар есть инструмент, а не нянька. © 2009 DrKnS
- HaRT
- Moderator
- Posts: 10854
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Автоматически начинать выделение текста под панелями мышью
Сделал. Проверяйте со всевозможными конфигурациями перечисленного.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Автоматически начинать выделение текста под панелями мышью
HaRT, у меня на линейке функциональных клавишах (которые внизу) не работает,
если начинать выделение именно с нижней линии этой.
если же начать выделение не с нижней, то выделяется.
Far Manager, version 3.0.5836.0 x86
Вопще, как мышь может быть удобней клавиатуры для подобной задачи?
ujos, на всякий случай сообщаю, что АльтИнс + Ктрл<Стрелки> дают шаг в 5 по вертикали и 10 по горизонтали позиций,
что решает задачу быстрого перехода в нужную позицию лучше чем мышь
если начинать выделение именно с нижней линии этой.
если же начать выделение не с нижней, то выделяется.
Far Manager, version 3.0.5836.0 x86
Вопще, как мышь может быть удобней клавиатуры для подобной задачи?
ujos, на всякий случай сообщаю, что АльтИнс + Ктрл<Стрелки> дают шаг в 5 по вертикали и 10 по горизонтали позиций,
что решает задачу быстрого перехода в нужную позицию лучше чем мышь
Last edited by citRiks on Sun 25 Jul, 2021 10:19, edited 1 time in total.
- HaRT
- Moderator
- Posts: 10854
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Автоматически начинать выделение текста под панелями мышью
И не должно — перечитайте в цитате из меня же, какая задача решалась.
Если научите вешать разные действия на нажатие–отпускание и нажатие–протяжку мыши, можно будет ещё усовершенствовать скрипт.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- HaRT
- Moderator
- Posts: 10854
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Автоматически начинать выделение текста под панелями мышью
В макросе запрещён захват с позиции (0,0), препятствовавший переключению видимости панелей.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- HaRT
- Moderator
- Posts: 10854
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Автоматически начинать выделение текста под панелями мышью
Вместе с вышеприведённым макросом «авто-захвата» удобно использовать .
Фар есть инструмент, а не нянька. © 2009 DrKnS
- John Doe
- Бюрократ
- Posts: 13847
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Автоматически начинать выделение текста под панелями мышью
Макрос "сноса" действительно удобен. Назначил себе на
Замечу только что восстанавливать оригинальный буфер на самом деле не требуется.
CtrlEnter
.Замечу только что восстанавливать оригинальный буфер на самом деле не требуется.
https://t.me/FarManager — Telegram чат