CtrlX и CtrlV "как в Windows"

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

CtrlX и CtrlV "как в Windows"

Postby John Doe » Wed 01 Jul, 2015 17:57

Latest post of the previous page:

HaRT wrote:Source of the postв Фаре не поддерживается цепочка макросов на одно и то же кнопкосочетание
Расскажите как вы это представляете (может оказаться что всё поддерживается).

HaRT wrote:Source of the post где ещё и реализовывать моё предложение, как тут в макросе на CtrlV.
Например полно других сочетаний.
Во всяком случае мне пока не ясно как именно вы предлагаете на одной и той же клавише совместить два на первый взгляд несовместимых действия.

User avatar
HaRT
Moderator
Posts: 7877
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

CtrlX и CtrlV "как в Windows"

Postby HaRT » Wed 01 Jul, 2015 18:09

John Doe wrote:Source of the post как вы это представляете
Некий аналог наследования функциональности или делегирования функций: обработчик (макрос) верхнего уровня может выполнить действия до/после/вместо перехватываемого действия. При этом перехватываемое действие может само являться подобным обработчиком, который оборачивает следующий и т.д.
Насколько я знаю, сейчас подобной функциональности можно частично добиться использованием условий и приоритетов. Кстати, сейчас попробуй задействовать условие, чтобы можно было на вставку в командную строку навесить отдельный макрос…
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

CtrlX и CtrlV "как в Windows"

Postby John Doe » Wed 01 Jul, 2015 18:19

Для начала, в фаре нет даже самого понятия "действие", и это действительно неудобно.
(обсуждалось, например тут: Расширение API - Intent)

HaRT wrote:Source of the post можно частично добиться использованием условий и приоритетов.
А если отвлечься от деталей реализации?
Какого конкретно поведения вы хотите достичь?
Не вообще, а в контексте вашей практической задачи.

User avatar
HaRT
Moderator
Posts: 7877
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

CtrlX и CtrlV "как в Windows"

Postby HaRT » Wed 01 Jul, 2015 19:00

John Doe wrote:Source of the post Какого конкретно поведения вы хотите достичь?
Чтобы вставку файлов как файлов (на панель) и как их путей (в командную строку) можно было настраивать разными макросами.
Впрочем, первого я уже достиг, несколько модифицировав Ваш вышеприведённый макрос:
Code: [Select all] [Expand/Collapse] [Download] (Shell_Clipboard.lua)
  1. local function AllBitsSet( val, mask )
  2.   return mask == band( val, mask )
  3. end
  4.  
  5. local function APanelRealFiles()
  6.   local PANEL_OPIFLAGS_REGULAR, PANEL_OPIFLAGS_REALNAMES = 0, 0x20
  7.   return APanel.Visible and
  8.     ( APanel.OPIFlags == PANEL_OPIFLAGS_REGULAR or
  9.       AllBitsSet( APanel.OPIFlags, PANEL_OPIFLAGS_REALNAMES ) )
  10. end
  11.  
  12. local function APanelPasteOK()
  13.   return APanel.Visible and APanelRealFiles()
  14. end
  15.  
  16. local function ClipboardDropAvailable()
  17.   local CF_HDROP = 15
  18.   return C.IsClipboardFormatAvailable( CF_HDROP ) ~= 0
  19. end
  20.  
  21. Macro {
  22.   area="Shell"; key="CtrlV";
  23.   condition = function()
  24.     return CmdLine.Empty and APanelPasteOK() and ClipboardDropAvailable()
  25.   end;
  26.   action = function()
  27.     EMenuCommand( 'paste "' .. APanel.Path .. '"' )
  28.   end;
  29. }
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

CtrlX и CtrlV "как в Windows"

Postby John Doe » Wed 01 Jul, 2015 20:00

HaRT wrote:Source of the post APanelRealFiles
Кстати да, макросы в шапке этого пока не учитывают.
HaRT wrote:Source of the post разными макросами.
Т.е. вставку в командную строку отдельно, а не на CtrlV?

User avatar
HaRT
Moderator
Posts: 7877
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

CtrlX и CtrlV "как в Windows"

Postby HaRT » Wed 01 Jul, 2015 20:05

John Doe wrote:Source of the post вставку в командную строку отдельно, а не на CtrlV?
Да, отдельно, но как раз таки тоже на CtrlV.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

CtrlX и CtrlV "как в Windows"

Postby John Doe » Wed 01 Jul, 2015 20:12

В одном случае я хочу запустить paste, в другом просто вставить в командную строку.
В обоих случаях в клипборде содержится CF_HDROP.

Откуда машине знать чего я хочу?

User avatar
HaRT
Moderator
Posts: 7877
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

CtrlX и CtrlV "как в Windows"

Postby HaRT » Wed 01 Jul, 2015 20:14

John Doe wrote:Source of the post Откуда машине знать чего я хочу?
Так ведь на то и есть condition'ы, чтобы я, человек, объяснил тупой машине, когда что.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

CtrlX и CtrlV "как в Windows"

Postby John Doe » Wed 01 Jul, 2015 20:19

HaRT wrote:Source of the post Так ведь на то и есть condition'ы
Так каковы же они, в вашем случае?

User avatar
HaRT
Moderator
Posts: 7877
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

CtrlX и CtrlV "как в Windows"

Postby HaRT » Wed 01 Jul, 2015 20:34

John Doe wrote:Source of the post каковы же они
Для вставки файлов, как и написано в моём коде выше,

Code: Select all

  condition = function()
    return CmdLine.Empty and APanelPasteOK() and ClipboardDropAvailable()
  end;
А макрос на вставку путей я ещё не делал.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

CtrlX и CtrlV "как в Windows"

Postby sToLp » Wed 01 Jul, 2015 21:01

Возможно я чего то не понимаю, но ведь, кажется, после сабжевого макроса на CtrlX в комстроку по ShiftIns можно вставить имя вырезанного файла с путём к нему.

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

CtrlX и CtrlV "как в Windows"

Postby John Doe » Wed 01 Jul, 2015 21:28

HaRT wrote:Source of the post как и написано в моём коде выше
Действительно, проглядел.

sToLp wrote:Source of the post после сабжевого макроса на CtrlX в комстроку по ShiftIns можно вставить имя вырезанного файла с путём к нему.
И?

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

CtrlX и CtrlV "как в Windows"

Postby sToLp » Wed 01 Jul, 2015 22:18

HaRT wrote: А макрос на вставку путей я ещё не делал.

John Doe wrote:
sToLp wrote:Source of the post после сабжевого макроса на CtrlX в комстроку по ShiftIns можно вставить имя вырезанного файла с путём к нему.
И?

Например, пишу в комстроке: 'goto:', запускаю сабжевый же CtrlV и потом запускаю команду. Или же надо ещё что-то другое?

Упс! Кажется дошло: адрес файла то после его переноса изменился. Речь ведь об этом?

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

CtrlX и CtrlV "как в Windows"

Postby John Doe » Thu 02 Jul, 2015 11:54

sToLp wrote:Source of the post адрес файла то после его переноса изменился. Речь ведь об этом?
Возможно вас ввело в заблуждение, что в шапке не описан макрос на Ctrl-C, но о чём вы пытаетесь спросить до сих пор непонятно.
После Ctrl-X с файлом физически ничего не происходит, для перемещения необходимо следом выполнить Ctrl-V при пустой командной строке.

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

CtrlX и CtrlV "как в Windows"

Postby sToLp » Thu 02 Jul, 2015 15:08

John Doe wrote:Возможно вас ввело в заблуждение, что в шапке не описан макрос на Ctrl-C
Да, подзапутался, кажись.
Убедительная просьба, по возможности, сопровождать текст макросов комментариями и приводить поясняющие description.

John Doe wrote:После Ctrl-X с файлом физически ничего не происходит, для перемещения необходимо следом выполнить Ctrl-V при пустой командной строке.
Это я, кажется, понимаю. Ведь это, вроде бы, и есть главная фишка конструкции. И, по-моему, весьма полезная.

John Doe wrote: но о чём вы пытаетесь спросить до сих пор непонятно
Правильно ли я понимаю, что:
Пока что связка макросов Ctrl-X — Ctrl-V работает так, что после переноса файлов можно по ShiftIns в комстроку вставить полные (с путями, но старыми, бывшими до переноса) имена вырезанных файлов?
И Вы с HaRT`ом добиваетесь того, чтобы пути вставлялись новые, и не только по ShiftIns, а, при определённых условиях, и по Ctrl-V?

User avatar
HaRT
Moderator
Posts: 7877
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

CtrlX и CtrlV "как в Windows"

Postby HaRT » Thu 02 Jul, 2015 15:58

sToLp wrote:Source of the post в комстроку вставить полные (с путями, но старыми, бывшими до переноса) имена вырезанных файлов
Да
sToLp wrote:Source of the post чтобы пути вставлялись новые
Нет
sToLp wrote:Source of the post не только по ShiftIns, а, при определённых условиях, и по Ctrl-V
Да
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

CtrlX и CtrlV "как в Windows"

Postby John Doe » Thu 02 Jul, 2015 17:26

sToLp wrote:Source of the post при определённых условиях, и по Ctrl-V?
Да, при непустой командной строке пути вставляются туда.
Сейчас при вставке имена с пробелами (и пр.) не берутся в кавычки, но это можно исправить, об этом и разговор.


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

Who is online

Users browsing this forum: No registered users and 2 guests