Panel.JumpToSelectedFile.lua — прыжки по выделенным файлам

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

Panel.JumpToSelectedFile.lua — прыжки по выделенным файлам

Post by John Doe » Sat 02 Feb, 2013 20:35


Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: FAR вешается макрокоммандой

Post by Shmuel » Sat 02 Feb, 2013 22:23

Тигрёнок wrote:Если из макроса вызывается Panel.SetPosIdx(0,-1,1), а выделенных файлов в панели нет, FAR (3143, x86) виснет.
3147.

User avatar
Тигрёнок
Posts: 390
Joined: Wed 03 May, 2006 06:07
Location: Россия
Contact:

Re: FAR вешается макрокоммандой

Post by Тигрёнок » Sun 03 Feb, 2013 04:30

Merci beaucoup!
Теперь вместо страшного-престрашного можно использовать весьма компактный код:

Code: Select all

  description="Jump to the previous selected file"; 
  action = function() Panel.SetPosIdx(0,Panel.SetPosIdx(0,0,1)-1,1) end;

  description="Jump to the next selected file"; 
  action = function() Panel.SetPosIdx(0,Panel.SetPosIdx(0,0,1)+1,1) end;

  description="Jump to the first selected file"; 
  action = function() Panel.SetPosIdx(0,1,1) end;

  description="Jump to the last selected file"; 
  action = function() Panel.SetPosIdx(0,-1,1) end;
P.S.
Примечание модератора
Часть обсуждения переехала в Избавиться от дублирирования в LuaMacro
Съешь мыша – стань настоящим клавишником!

Smitis
Posts: 1593
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 18 times
Been thanked: 35 times

Re: FAR вешается макрокоммандой

Post by Smitis » Sun 03 Feb, 2013 20:11

Тигрёнок wrote:Теперь вместо страшного-престрашного Panel.JumpToSelectedFile.lua можно использовать весьма компактный код
Твои варианты макросов, перемещающие к следующему и предыдущему выделеному, сработают неправильно, если текущий файл не выделен.
Разум когда-нибудь победит.

User avatar
Тигрёнок
Posts: 390
Joined: Wed 03 May, 2006 06:07
Location: Россия
Contact:

Re: FAR вешается макрокоммандой

Post by Тигрёнок » Sun 03 Feb, 2013 20:26

Smitis wrote:Твои варианты макросов, перемещающие к следующему и предыдущему выделеному, сработают неправильно, если текущий файл не выделен.
Есть такое дело :(
Ради этого случая и был написан столь сложный код?
Съешь мыша – стань настоящим клавишником!

Smitis
Posts: 1593
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 18 times
Been thanked: 35 times

Re: FAR вешается макрокоммандой

Post by Smitis » Sun 03 Feb, 2013 20:31

Тигрёнок wrote:Ради этого случая и был написан столь сложный код?
У меня чуток попроще
Разум когда-нибудь победит.

User avatar
Тигрёнок
Posts: 390
Joined: Wed 03 May, 2006 06:07
Location: Россия
Contact:

Re: FAR вешается макрокоммандой

Post by Тигрёнок » Sun 03 Feb, 2013 20:54

Smitis wrote:У меня чуток попроще
Всё равно - цикл.
Если уж лепить заплатки, то так:

Code: Select all

local Jump = function(Delta)
  local Index = Panel.SetPosIdx(0,0,1)
  if Index == 0
  then
    Index = Panel.SetPosIdx(0,Index,0)
    if (Delta > 0) or (Index > 1)
    then
      Panel.Select(0,1,1,Index)
      Panel.SetPosIdx(0,Panel.SetPosIdx(0,0,1)+Delta,1)
      Panel.Select(0,0,1,Index)
    end
  else 
    Panel.SetPosIdx(0,Index+Delta,1)  
  end
end
Съешь мыша – стань настоящим клавишником!

Smitis
Posts: 1593
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 18 times
Been thanked: 35 times

Re: FAR вешается макрокоммандой

Post by Smitis » Sun 03 Feb, 2013 21:22

Тигрёнок wrote:Если уж лепить заплатки, то так:
Интересный вариант. Побочный эффект - выделение меняется, хоть и временно, и CtrlM восстановит не предыдущее, с точки зрения пользователя, выделение, а с выделеным из макроса текущим файлом.
Разум когда-нибудь победит.

User avatar
Тигрёнок
Posts: 390
Joined: Wed 03 May, 2006 06:07
Location: Россия
Contact:

Re: FAR вешается макрокоммандой

Post by Тигрёнок » Sun 03 Feb, 2013 21:26

Smitis wrote:Побочный эффект - выделение меняется, хоть и временно, и CtrlM восстановит не предыдущее, с точки зрения пользователя, выделение, а с выделеным из макроса текущим файлом.
Поскольку я ни разу в жизни не пользовался этой функцией, то просто про неё забыл
:oops:
Съешь мыша – стань настоящим клавишником!

Smitis
Posts: 1593
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 18 times
Been thanked: 35 times

Re: FAR вешается макрокоммандой

Post by Smitis » Sun 03 Feb, 2013 21:48

Вот ещё циклом, только не while а for

Code: Select all

local function _select_jump2( dir )
  local index
  local limit = dir > 0 and APanel.ItemCount or 0
  for index=APanel.CurPos+dir,limit,dir do
    if Panel.Item(0,index,8) then
      Panel.SetPosIdx(0,index)
      break
    end
  end
end
Разум когда-нибудь победит.

User avatar
Тигрёнок
Posts: 390
Joined: Wed 03 May, 2006 06:07
Location: Россия
Contact:

Re: FAR вешается макрокоммандой

Post by Тигрёнок » Sun 03 Feb, 2013 22:00

Smitis wrote:Побочный эффект - выделение меняется, хоть и временно
А почему оно меняется, если я ставлю flags="DisableOutput"? По-моему, это - бага.
Съешь мыша – стань настоящим клавишником!

Smitis
Posts: 1593
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 18 times
Been thanked: 35 times

Re: FAR вешается макрокоммандой

Post by Smitis » Mon 04 Feb, 2013 06:39

Тигрёнок wrote:А почему оно меняется, если я ставлю flags="DisableOutput"? По-моему, это - бага.
Почему бага? Есть выделенные файлы. Потом выделяется ещё один. Потом с него выделение снимается. А DisableOutput лишь временное отключение отображения происходящего на экране.
Разум когда-нибудь победит.

User avatar
Тигрёнок
Posts: 390
Joined: Wed 03 May, 2006 06:07
Location: Россия
Contact:

Re: FAR вешается макрокоммандой

Post by Тигрёнок » Mon 04 Feb, 2013 07:24

Smitis wrote:
Тигрёнок wrote:А почему оно меняется, если я ставлю flags="DisableOutput"? По-моему, это - бага.
Почему бага? Есть выделенные файлы. Потом выделяется ещё один. Потом с него выделение снимается. А DisableOutput лишь временное отключение отображения происходящего на экране.
Cltrl-M восстанавливает то выделение, которое видел пользователь. А этого выделения он не мог видеть, значит, и запоминаться оно, по идее, не должно.
Съешь мыша – стань настоящим клавишником!

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 189 times

Re: Panel.JumpToSelectedFile.lua

Post by John Doe » Mon 04 Feb, 2013 12:33

Неверная идея.

User avatar
SUSim
Posts: 1531
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: Panel.JumpToSelectedFile.lua

Post by SUSim » Mon 04 Feb, 2013 14:58

Блин, баг давно поправили, а вы всё офтопите...

ЗЫ смотри подпись, там тоже есть макрос шагания по выделению
SimSU ··· ·· -- ··· ··-

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 189 times

Re: Panel.JumpToSelectedFile.lua

Post by John Doe » Thu 21 Mar, 2013 16:51

А как должен себя в идеале вести макрос при достижении конца/начала списка?
Циклически?

Post Reply

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