Макрос для "умного" перемещения по панели (Home/End)
- Alexey Samlyukov
- Posts: 1765
- Joined: Tue 15 Mar, 2005 17:28
- Been thanked: 7 times
- Contact:
Макрос для "умного" перемещения по панели (Home/End)
Хотелка: красивый макрос при перемещении по списку файлов по клавише Home прыгаем на первый файл (НЕ ПАПКУ!), при повторном нажатии - в начало панели. Для End - все наоборот.
Добавка:
но если находимся уже над папкой, то как обычно - по Home идем в начало панели.
Добавка:
но если находимся уже над папкой, то как обычно - по Home идем в начало панели.
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: вопросы и хотелки.
Alexey Samlyukov
Неплохая идея!
Программировать надо однако…
Кстати, тогда уж ShiftHome/ ShiftEnd тоже надо переопределять, а то получится неинтуитивно.
Неплохая идея!
Программировать надо однако…
Кстати, тогда уж ShiftHome/ ShiftEnd тоже надо переопределять, а то получится неинтуитивно.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: вопросы и хотелки.
Для тех (только), кто юзает PowerShellFar - если надо, скажите - сделаю, это вроде довольно просто.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: вопросы и хотелки.
В PowerShellFar это будет так
http://forum.farmanager.com/viewtopic.p ... 662#p32662
http://forum.farmanager.com/viewtopic.p ... 662#p32662
- Alexey Samlyukov
- Posts: 1765
- Joined: Tue 15 Mar, 2005 17:28
- Been thanked: 7 times
- Contact:
Re: вопросы и хотелки.
NightRoman спасибо за наводку (конечно за "на водку" было б лучше )
Т.к. никто не откликнулся, пришлось самому взяться за перо...
Т.к. никто не откликнулся, пришлось самому взяться за перо...
Code: Select all
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\Home]
"Sequence"="%i=APanel.CurPos; $If (panelitem(0,%i,2) & 0x00000010) Home $Else %j=1; $While (%j<=APanel.ItemCount) $If (!(panelitem(0,%j,2) & 0x00000010)) $If (%j==%i) Home $Exit $Else $If (Panel.SetPosIdx(0,%j)==2 && panel.fexist(0,\"..\")) Home $Exit $Else $Exit $End $End $End %j=%j+1; $End $End"
"DisableOutput"=dword:00000001
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\End]
"Sequence"="%i=APanel.CurPos; $If (!(panelitem(0,%i,2) & 0x00000010)) End $Else %j=1; $While (%j<=APanel.ItemCount) $If (!(panelitem(0,%j,2) & 0x00000010)) $If (%j==%i) End $Exit $Else $If (Panel.SetPosIdx(0,%j)==2 && panel.fexist(0,\"..\")) End $Exit $Else $Exit $End $End $End %j=%j+1; $End $If (%j>APanel.ItemCount) End $End $End"
"DisableOutput"=dword:00000001
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: вопросы и хотелки.
Ну не успели, не успели.Alexey Samlyukov wrote:никто не откликнулся
Раз просили красивые макросы, извольте:
Home
Code: Select all
%i = APanel.CurPos; %j = 1;
$While ( ( %j < %i ) && ( PanelItem ( ACTIVEPANEL, %j, PANELITEM_FILEATTR ) & FATTR_DIRECTORY ) )
%j = %j + 1;
$End
$If ( %j < %i )
$If ( 2 == Panel.SetPosIdx ( ACTIVEPANEL, %j ) && Panel.fExist ( ACTIVEPANEL, ".." ) )
Up
$End
$Else
Home
$End
Code: Select all
%i = APanel.CurPos; %j = APanel.ItemCount;
$While ( ( %j > %i ) && ! ( PanelItem ( ACTIVEPANEL, %j, PANELITEM_FILEATTR ) & FATTR_DIRECTORY ) )
%j = %j - 1;
$End
$If ( %j > %i )
Panel.SetPosIdx ( ACTIVEPANEL, %j )
$Else
End
$End
PS
Фар есть инструмент, а не нянька. © 2009 DrKnS
- HaRT
- Moderator
- Posts: 10869
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: вопросы и хотелки.
Эх, жаль только очень уж медленно это порой работает.
Фар есть инструмент, а не нянька. © 2009 DrKnS
-
- Posts: 41
- Joined: Sat 02 Oct, 2010 00:25
-
- Posts: 41
- Joined: Sat 02 Oct, 2010 00:25
- John Doe
- Бюрократ
- Posts: 13866
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Макрос для "умного" перемещения по панели (Home/End)
Если делиться со всеми, то стоит привести полные определения макросов, а не фрагменты.
Что касается случая с несортированной панелью, то это легко обработать в condition
Что касается случая с несортированной панелью, то это легко обработать в condition
-
- Posts: 41
- Joined: Sat 02 Oct, 2010 00:25
Re: Макрос для "умного" перемещения по панели (Home/End)
Данная концепция немного ломает user experience для тех кто любит Home Enter вместо ctrl+PgUp для перехода наверх. Я себе придумал другое - Home переходит на первый файл если курсор уже находится в самом начале (на ".."), так как в такой ситуации (по умолчанию) нажатие Home бессмысленно. Во всех остальных случаях оно ведёт себя как обычно. В корневой папке не работает (еже ли отключены там две точки).
API немного другой, что нарыл. И вот до кучи:
срабатывет на последнем файле.
API немного другой, что нарыл. И вот до кучи:
срабатывет на последнем файле.