Несколько префиксов в одном плагине

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
Ariman
Posts: 1153
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 10 times
Been thanked: 23 times
Contact:

Несколько префиксов в одном плагине

Post by Ariman » Thu 10 Dec, 2015 16:31

Решил тут к себе в плагин добавить ещё один префикс. И обнаружил, что работа с несколькими префиксами не очень удобная. Чтобы узнать, с какого префикса вызвали плагин, надо использовать PF_FULLCMDLINE и самому парсить строку. Это имело смысл, когда на вход в плагин подавалась просто строка, но теперь туда заходит уже структура, в которую можно поля добавлять. Да и парсинг строки Фар уже сделал за нас, зачем повторять.

Поэтому предложение: а не добавить ли, для удобства и красоты, в OpenCommandLineInfo ещё одно поле с префиксом, с которого плагин вызвали? Будет что-то вроде:

Code: Select all

struct OpenCommandLineInfo
{
  size_t StructSize;
  const wchar_t *CommandLine;
  const wchar_t* CallPrefix;
};

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

Использование префиксов

Post by HaRT » Tue 26 Jan, 2016 09:33

IgorZ wrote: Дополнительная проверка показала, что односимвольные префиксы вообще не работают, хоть и появляются в списке префиксов плагина (кроме ":").
Это странно, ведь, например, плагин FarNet успешено использует префикс ‘>’. То ли что-то не то с проверкой, то ли баг при наличии каких-то специфичных условий.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

Менеджер закладок для папок

Post by Shmuel » Tue 26 Jan, 2016 10:30

HaRT wrote:
IgorZ wrote:Дополнительная проверка показала, что односимвольные префиксы вообще не работают, хоть и появляются в списке префиксов плагина (кроме ":").
Это странно, ведь, например, плагин FarNet успешено использует префикс ‘>’. То ли что-то не то с проверкой, то ли баг при наличии каких-то специфичных условий.
Префикс : не пропускает LuaMacro. Остальные односимвольные (но не все, например, цифры работают) не пропускает Far.
Префикс > Far вроде не пропускает, так что сомнительно, чтобы FarNet мог его использовать.

IgorZ
Posts: 459
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Менеджер закладок для папок

Post by IgorZ » Tue 26 Jan, 2016 10:44

HaRT wrote:
IgorZ wrote:Дополнительная проверка показала, что односимвольные префиксы вообще не работают, хоть и появляются в списке префиксов плагина (кроме ":").
Это странно, ведь, например, плагин FarNet успешено использует префикс ‘>’. То ли что-то не то с проверкой, то ли баг при наличии каких-то специфичных условий.
Сейчас специально взял чистый дистрибутив Far 3.0.4514, UseSystemProfiles=0, из скриптов только этот, вбил prefixes = "#$:(:):{:}:*:&:^:%:$:#:@:!:~:`:[:]:1:=:-:_:,:.:>:bm:bma:bmal:bmag:bme:bmel:bmeg:bmr:bmrl:bmrg" и вывод на экран любого пришедшего префикса. Из всех вариантов однобуквенных префиксов среагировал только на "1". На "#$", кстати, тоже не сработал. Возможно, дело в том, что здесь обработка проходит через LuaFar . Напишу, пожалуй, Шмуэлю. Посмотрим, что он скажет.

IgorZ
Posts: 459
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Менеджер закладок для папок

Post by IgorZ » Tue 26 Jan, 2016 10:52

Shmuel wrote:
HaRT wrote:
IgorZ wrote:Дополнительная проверка показала, что односимвольные префиксы вообще не работают, хоть и появляются в списке префиксов плагина (кроме ":").
Это странно, ведь, например, плагин FarNet успешено использует префикс ‘>’. То ли что-то не то с проверкой, то ли баг при наличии каких-то специфичных условий.
Префикс : не пропускает LuaMacro. Остальные односимвольные (но не все, например, цифры работают) не пропускает Far.
Префикс > Far вроде не пропускает, так что сомнительно, чтобы FarNet мог его использовать.
О, как хорошо! С односимвольными всё понятно, но почему, например, не работает префикс "#$"? Тестовый пример:

Code: Select all

CommandLine { 
  description = "Test prefix";
  prefixes = "#$:$:#:1:12";
  action = function(pref,line) far.Show(pref) end; }

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

Менеджер закладок для папок

Post by Shmuel » Tue 26 Jan, 2016 11:01

IgorZ wrote: но почему, например, не работает префикс "#$"?
LuaMacro не пропускает только : и префиксы, содержащие пробелы. Следовательно этот не пропускается Фаром.

IgorZ
Posts: 459
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Менеджер закладок для папок

Post by IgorZ » Tue 26 Jan, 2016 11:23

Shmuel wrote:
IgorZ wrote: но почему, например, не работает префикс "#$"?
LuaMacro не пропускает только : и префиксы, содержащие пробелы. Следовательно этот не пропускается Фаром.
Ясно, спасибо. В общем, слушайте Ваши "Валенки" пользуйтесь только буквенно-цифровыми префиксами, дорогие товарищи фароюзеры. Ладно, я, собственно, так и делал, пока меня не попросили добавить односимвольный префикс.

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

Менеджер закладок для папок

Post by HaRT » Tue 26 Jan, 2016 12:50

Shmuel wrote: Префикс > Far вроде не пропускает, так что сомнительно, чтобы FarNet мог его использовать.
Совершенно точно это было (искать “>:”). И у меня есть ощущение, что я совсем недавно читал тут на форуме какой-то живой пример (багрепорт?) от NightRoman с использованием этого префикса.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

Менеджер закладок для папок

Post by Shmuel » Tue 26 Jan, 2016 13:12

HaRT wrote: Совершенно точно это было
Охотно верю, но простой опыт показывает, что в текущих билдах Far этот префикс не работает. Если вы пользователь FarNet, проверьте.

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

Менеджер закладок для папок

Post by HaRT » Tue 26 Jan, 2016 13:13

Shmuel wrote: Если вы пользователь FarNet
Увы, нет, т.ч. надеюсь, что кто-то другой прольёт свет на историю вопроса.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5245
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Менеджер закладок для папок

Post by zg » Tue 26 Jan, 2016 13:54

попробовал на регэдите (который reg2:), > — работает, #$ — тоже. как мог работать : — непонятно, это ж разделитель префиксов. хотя конечно если префикс задан только в виде :, можно обработать отдельно.

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Менеджер закладок для папок

Post by NightRoman » Tue 26 Jan, 2016 13:54

Случайно проходил мимо, не уверен о чем речь, но если нужны подробности по префиксу ">:", то вот они. Он был и работал в самом Фаре и Фарнет без каких-либо проблем несколько лет. Но одно "но" появилось. По этому префиксу нельзя запустить команду при старте Фара из комстроки (изначально такой фичи и не было). Для меня эта фича важна, используется в авто-тестах, поэтому необычный префикс был заменен на обычный.

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

Менеджер закладок для папок

Post by Shmuel » Tue 26 Jan, 2016 15:22

zg wrote:попробовал на регэдите (который reg2:), > — работает, #$ — тоже. как мог работать : — непонятно, это ж разделитель префиксов. хотя конечно если префикс задан только в виде :, можно обработать отдельно.
Да, это была ошибка в LuaMacro. Исправлено.
Shmuel wrote: простой опыт показывает, что в текущих билдах Far этот префикс не работает.
Я ошибался (см. выше).

User avatar
DrKnS
Posts: 4581
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 115 times
Contact:

Менеджер закладок для папок

Post by DrKnS » Tue 26 Jan, 2016 20:24

sToLp wrote:Касательно же префикса : будем надеяться
Сейчас такой префикс невозможен.
Немного поприседать и сделать можно, но нужно ли?

IgorZ
Posts: 459
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

Использование префиксов

Post by IgorZ » Wed 27 Jan, 2016 10:23

DrKnS wrote:
sToLp wrote:Касательно же префикса : будем надеяться
Сейчас такой префикс невозможен.
Немного поприседать и сделать можно, но нужно ли?
Вот какое соображение: у префикса : есть один недостаток. Он очень удобен для набора, больше, чем какой-либо другой, поэтому высока вероятность конфликтов из-за него. Я бы предложил сделать его вызовом последнего набранного префикса или чем-то в этом роде. Или не реализовывать вообще, во избежание. Потому что, если есть :, почему бы не быть ::, ::: и так далее? Некрасиво, во всех смыслах.

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

Использование префиксов

Post by Shmuel » Wed 27 Jan, 2016 10:36

DrKnS wrote: Немного поприседать и сделать можно, но нужно ли?
Не нужно. Никакой ощутимой выгоды это не даст, а вероятность конфликта префиксов возрастёт, да и синтаксис задания группы префиксов усложнится.

Post Reply

Return to “Разработка плагинов”