Ctrl-<Gray +> на папках

Здесь обсуждается всё, что касается макросов.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Ctrl - Gray+ на папках

Post by DrKnS »

Latest post of the previous page:

Menu.Select ( \"Folders │ ........D+................ .. │\", MENUSELECT_MATCH_ENTIRE )
Есть мнение, что это будет работать и с /ag, и с левыми cp.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Ctrl - Gray+ на папках

Post by HaRT »

DrKnS wrote:это будет работать и с /ag, и с левыми cp
Действительно, работает… Но механизм неясен. :?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Re: Ctrl - Gray+ на папках

Post by t-rex »

/ag влияет только при отрисовке но сам текст (аски коды) всегда один и тот же, тоже самое и при левых cp.
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Re: Ctrl - Gray+ на папках

Post by Ariman »

HaRT wrote:Скорее всего, символы одинарной вертикальной рамки (‘│’) импортнулись неправильно. Проверьте: при просмотре кода макроса плагином Registry Browser в кодировке OEM (DOS) они должны отображаться именно так, как в интерфейсе Фара.
При копировании с Оперы в редактор фара, вертикальная черта скопировалась как символ с кодом 166, вбил вручную с клавиатуры (получился код 124). И снова импортнул в реестр. Разницы никакой. :(
Registry Browser не стоит, поэтому не глянул как там отображается.
HaRT wrote:Полсекунды показались слишком долгим сроком, и я сделал 300 мс (посмотрите в коде макросов). ;)
Действительно, Пятачок (с) :) Я в код, если честно, и не заглядывал.
HaRT wrote: какая у Вас включена кодировка в консоли (так, на всякий случай: проверяется командой chcp)?
Active code page: 866
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Ctrl - Gray+ на папках

Post by HaRT »

HaRT wrote: Когда будет исправлена ошибка в Menu.Select, эти макросы можно будет немного упростить.
В исходное сообщение внесено примечание.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Re: Ctrl - Gray+ на папках

Post by Ariman »

HaRT wrote:В исходное сообщение внесено примечание.
О, после замены на новый вызов Menu.Select, все заработало. Спасибо, буду пока так пользоваться в 1.7.
Жалко, только, что макрос работает в одну сторону, только если на папке стоишь. Если стоишь на файле, то выделение загребает и файлы и папки.

Я тут наваял небольшой патчик для 1.8, со своей идеей выделения с учетом аттрибутов, чтобы с макросами не заморачиваться. Может кому тоже пригодиться. Если добавят в основной код, вообще счастье будет :).
Attachments
far_patch.rar
(810 Bytes) Downloaded 177 times
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Ctrl—<Gray +> на папках

Post by John Doe »

В справке сказано:
Пометить файлы с расширением как у текущего файла Ctrl-<Gray +> Снять пометку с файлов с расширением, как у текущего Ctrl-<Gray ->
Предлагаемый макрос изменяет поведение этих шорткатов для папок.
Ctrl-<Gray +> — выделяет папки
Ctrl-<Gray -> — снимает выделение с папок
  1. Macro {
  2.  
  3.   key="CtrlAdd CtrlSubtract";
  4.  
  5.   area="Shell Search";
  6.  
  7.   description="Select folders";
  8.  
  9.   uid="1A75635A-E78A-4589-81B5-D2DE8B3D90FC";
  10.  
  11.   condition=function()
  12.  
  13.     return APanel.Visible and not APanel.Empty and APanel.Folder
  14.  
  15.   end;
  16.  
  17.   action=function()
  18.  
  19.     local folders = {}
  20.  
  21.     for i=1,APanel.ItemCount do
  22.  
  23.       if panel.GetPanelItem(nil,1,i).FileAttributes:find("d") then
  24.  
  25.         folders[#folders+1] = i
  26.  
  27.       end
  28.  
  29.     end
  30.  
  31.     panel.SetSelection(nil,1,folders,mf.akey(1,1)=="CtrlAdd")
  32.  
  33.     panel.RedrawPanel(nil,1)
  34.  
  35.   end;
  36.  
  37. }
Post Reply

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