Макрос для перехода к первому файлу панели

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Макрос для перехода к первому файлу панели

Post by John Doe »

Volodya wrote: Fri 24 Mar, 2023 23:49 Shell_SelectingEx.lua

Добавить пункт: "Перейти к первому файлу". Когда нужно? Есть много директорий и много файлов. Ты стоишь где-то посередине этого моря. Чтобы перейти к первому файлу сейчас я делаю следующее. Выбираю все файлы и перехожу к первому выделенному. Развыделяю файлы. При этом теряется старое выделение. Хотелось бы избежать этого.
Если я правильно понял вашу задачу, то с выделенными файлами она никак не связана, а значит нечего ей делать в этом наборе.
Кажется где-то был макрос "Smart Home", выполняющий следующее простое действие: если курсор уже находится на первом элементе, то переходит на первый файл.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Набор макросов от SimSU

Post by HaRT »

John Doe wrote: Mon 27 Mar, 2023 01:35 Кажется где-то был макрос "Smart Home", выполняющий следующее простое действие: если курсор уже находится на первом элементе, то переходит на первый файл.
Я по-быстрому не нашёл. Всё, что нашёл с таким названием, — для редактора.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Набор макросов от SimSU

Post by Shmuel »

Volodya wrote: Fri 24 Mar, 2023 23:49 Добавить пункт: "Перейти к первому файлу". Когда нужно? Есть много директорий и много файлов. Ты стоишь где-то посередине этого моря. Чтобы перейти к первому файлу сейчас я делаю следующее. Выбираю все файлы и перехожу к первому выделенному. Развыделяю файлы. При этом теряется старое выделение. Хотелось бы избежать этого.
Вроде у меня есть такой макрос (не помню, публиковал, или нет):
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Макрос для перехода к первому файлу панели

Post by John Doe »

А чтобы не использовать для него отдельных клавиш можно назначить его на тот же Home, добавив condition

Code: Select all

local pInfo
Macro {
  description="Find an upper non-directory item";
  area="Shell"; key="Home";
  condition=function()
    pInfo = panel.GetPanelInfo(nil,1)
    return pInfo and pInfo.CurrentItem==1 and bit.band(pInfo.Flags, far.Flags.PFLAGS_DIRECTORIESFIRST)~=0
  end;
  action=function()
    local lower, upper = 1, pInfo.ItemsNumber
    while upper-lower >= 2 do -- binary search
      local curr = math.floor((lower+upper)/2)
      local item = panel.GetPanelItem(nil,1,curr)
      if item.FileAttributes:find("d") then lower = curr
      else upper = curr
      end
    end
    panel.RedrawPanel(nil,1,{ CurrentItem=upper; })-- TopPanelItem=upper-8;
  end;
}
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Макрос для перехода к первому файлу панели

Post by Shmuel »

John Doe wrote: Mon 27 Mar, 2023 14:00 condition=function()
pInfo = panel.GetPanelInfo(nil,1)
return pInfo and pInfo.CurrentItem==1 and bit.band(pInfo.Flags, far.Flags.PFLAGS_DIRECTORIESFIRST)~=0
end;
Я использую этот макрос из произвольного положения курсора.
С вашим condition он не будет работать.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Макрос для перехода к первому файлу панели

Post by John Doe »

Shmuel wrote: Mon 27 Mar, 2023 14:29 С вашим condition он не будет работать.
Почему же, просто надо нажать Home дважды.
(разумеется я не утверждаю что так правильнее, а лишь демонстрирую наличие ещё и такого варианта)
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Макрос для перехода к первому файлу панели

Post by HaRT »

Я себе сделал : прыгает с не-первого файла на первый, с не-первой директории на первую (считая и ..), а также между первым файлом и первой директорией.
(Если директорий вообще нет, прыгает между первым и вторым файлами, но этот случай я не считаю практически значимым. Если нет файлов, то прыгает между первой и последней директориями.)

Но я пока не уверен, что такой вариант будет мне удобнее, чем базовый.
Last edited by HaRT on Tue 28 Mar, 2023 16:04, edited 1 time in total.
Reason: Добавлена приписка про случай отсутствия файлов
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Обсуждение макросов”