После работы в *NIX c Midnight Commander очень не хватает навигации по папкам кнопками влево-вправо.
Если курсор стоит на папке и нажимается "вправо" - входит в эту папку. Клавиша влево если курсор находится на ".." - выходит из папки на уровень вверх.
PS.
Моя правка скрипта под спойлером - совмещает обычную навигацию по колонкам и Lynx Motion: "Вправо" переходит только по директориям, "Влево" выходит наверх только с "..". В итоге можно комфортно (на мой вкус) пользоваться стрелками и для навигации по текущей панели и для директорий
Вы там в соседней теме рассуждаете о поиске, значит, наверное, знаете, чем он может быть полезен.
Аналог "Lynx like motion" из Midnight Commander
Posted: Sun 02 Jun, 2019 09:49
by nightgryphon
DrKnS wrote: ↑Sun 02 Jun, 2019 02:06
чем он может быть полезен.
Не приходится лишний раз тянуться к Enter, для навигации становится достаточно стрелок. Особенно актуально для стесненной клавиатуры ноутбука. Особенно на весу или на коленке. Да и на обычной клавиатуре оказывается сильно быстрее удобнее ходить по разлапистым каталогам вроде исходников
Аналог "Lynx like motion" из Midnight Commander
Posted: Sun 02 Jun, 2019 09:54
by John Doe
Вам намекают на поиск по форуму.
Или по дистрибутиву.
Аналог "Lynx like motion" из Midnight Commander
Posted: Sun 02 Jun, 2019 09:54
by Shmuel
Скопируйте файл %FARHOME%\Addons\Macros\Panel.Lynx-mot.lua в %FARPROFILE%\Macros\Scripts и перезапустите Фар.
Аналог "Lynx like motion" из Midnight Commander
Posted: Sun 02 Jun, 2019 10:34
by nightgryphon
хм. действительно не искал. спасибо за подсказку, скопировал - работает.
Жаль нет встроенного из коробки менеджера для включения-выключения этих скриптов. А то вроде как они поставились, но что бы заработали оказывается надо скопировать в не особо очевидное место.
Аналог "Lynx like motion" из Midnight Commander
Posted: Sun 02 Jun, 2019 10:40
by nightgryphon
чего в этом скрипте не хватает - что бы в случае если открыть папку/файл нельзя, то просто переходить вправо по колонке. Ну и выбора пытаться ли открывать файлы/архивы что бы переходить стрелками только по директориям, не пытаться открывать файлы
Macro{
id="11C3A551-776B-46B2-AC48-57ACE7813370";
area="Shell";
key="Left";
description="LYNX-style motion";
-- filemask="";
flags="EmptyCommandLine";
-- priority=50;
-- sortpriority=50;
-- condition=function(key) return true end;
action=function()
if Panel.Item(0,0,0) == '..' then
Keys('CtrlPgUp')
else
Keys('Left')
end
end
;
}
Macro{
id="89838B24-8219-40F2-84A1-4AE0EAEFD894";
area="Shell";
key="Right";
description="LYNX-style motion";
-- filemask="";
flags="EmptyCommandLine";
-- priority=50;
-- sortpriority=50;
-- condition=function(key) return true end;
action=function()
if bit.band(Panel.Item(0,0,2), 0x10) > 0 then
Keys('CtrlPgDn')
else
Keys('Right')
end
end
;
}
. Но черт, полтора часа времени. Документация разнобойная и невнятная по интернетам
Мне такой вариант более удобен. Посмотрите, может пригодится кому
Аналог "Lynx like motion" из Midnight Commander
Posted: Sun 02 Jun, 2019 12:32
by Shmuel
Документация по макросам - в папке Encyclopedia, в поставке.
Сама Encyclopedia есть также он-лайн https://api.farmanager.com/
Насчёт 1.5 часов - для начала неплохо.
Аналог "Lynx like motion" из Midnight Commander
Posted: Sun 02 Jun, 2019 12:39
by nightgryphon
Основная заморочка для меня была не в апи как таковом, а в синтаксисе. В каких-то макросах $if ... $end и переменные с %, где-то if-then-else-end, где-то битовое И - оператор &, а в итоге bin.band и в примерах по разному. Вот этого самого начала где что не нашел внятного.
Аналог "Lynx like motion" из Midnight Commander
Posted: Sun 02 Jun, 2019 12:43
by Shmuel
В Far3 для макросов используются языки Lua и Moonscript. То, что в Энциклопедии - это для Far1/Far2. Основные документы - chm в папке Encyclopedia.
Аналог "Lynx like motion" из Midnight Commander
Posted: Sun 02 Jun, 2019 12:50
by nightgryphon
Хотел бы спросить у вас как у более опытного совет: можно ли подобным образом сделать в редакторе что бы перетаскивание мышью не выделяло текст, а скроллило? Точнее что бы когда возишь пальцем по правому полю окна получался скролл, а по центру осталась стандартная реакция на мышь. Или это что-то более серьезное чем просто скрипт?
Аналог "Lynx like motion" из Midnight Commander
Posted: Sun 02 Jun, 2019 12:55
by Shmuel
1. Прямого ответа у меня нет, сам пользуюсь скриптом Editor_MouseSelect.lua (автор SimSU). Можете найти на форуме и опробовать.
2. Постарайтесь, когда у вас появляются новые вопросы, поискать подходящий раздел (и, возможно, уже существующую тему на форуме), и задавать там.
Т.е. если у меня 2 или 3 колонки на панели, то я вообще не могу по горизонтали ходить??? Ну, круто!
Особенно порадовал флаг EmptyCommandLine. Т.е. если в командной строке не пусто, то стрелки - это навигация по панели, а если пусто - то вызов того, что висит на PgDn для файла??? Например, у меня некоторые программы запускаются с разными параметрами по Enter и по PgDn. Я встаю на такую программу, потом хочу пролистнуть, жму Right - вы ВЫЗЫВАЮ программу??? Да, жаль, что тут нельзя критиковать авторов…
package.nounload.ljsqlite3 = true
local sql = require "ljsqlite3"
-- Проверка, один ли столбец
local function OneColumn()
local fname = win.GetEnv("farprofile").."\\panelmodes.db"
local conn = assert(sql.open(fname, "ro"))
local wm = panel.GetPanelInfo(nil, 1).ViewMode
local iCurr = wm
if iCurr == 10 then iCurr = 0 end
if iCurr <= 9 then iCurr = iCurr + 1 end -- Одна из стандартных панелей. >9 - свои добавленные
local SQL = [[SELECT name, value FROM table_values WHERE key_id=]]..iCurr
local t = conn:exec(SQL)
conn:close()
if t then
for i, v in ipairs(t.name) do
if v == 'ColumnTitles' then
return (','..t.value[i]):find(",N.*,N") == nil
end
end
else
-- Почему-то база пустая. видимо, после установки не настраивали панели. Тогда по умолчанию
-- режимы 1 и 2 - многостолбцовые; остальные - по одному.
return not (wm == 1 or wm == 2)
end
end
Macro {
area="Shell";
key="Left"; flags="EmptyCommandLine"; description="LYNX-style motion";
condition=function()
return APanel.Visible and OneColumn()
end;
action = function()
Keys('CtrlPgUp')
end;
}
Macro {
area="Shell"; key="Right"; flags="EmptyCommandLine"; description="LYNX-style motion";
condition=function()
-- Проверка количества столбцов на панели
if APanel.Visible and APanel.Folder and APanel.Current ~= '..' then
return OneColumn()
end
end;
action = function()
local Dest=APanel.Path .. (APanel.Path:sub(-1)=='\\' and '' or '\\') .. APanel.Current
if APanel.Plugin then
local pd=panel.GetPanelDirectory(nil, 1)
pd.Name = Dest
if not panel.SetPanelDirectory(nil, 1, pd) then -- некоторые плагины не поддерживают...
Keys('CtrlPgDn')
end
else
Panel.SetPath(0, Dest)
end;
end
}
Смысл:
1. Переход вправо - только если под курсором папка и не .. (надо ли заходить в архивы по Right - не знаю…). Ну и уж всяко если APanel.Visible.
2. Вообще переходы допустимы только если на панели один столбец. Я определяю это через SQLite-чтение базы PanelModes.db; возможно, я неправ, и можно проще.
3. Переход вправо по возможности осуществляются не по PgDown, а через Panel.SetPath (в плагиновой панели - через panel.SetPnelDirectory)
Можно было бы (и, наверно, было бы правильно) ещё и ассоциации проверять.