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

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

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

Post by Ariman »

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

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

Code: Select all

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

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

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

Post by HaRT »

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

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

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

Post by Shmuel »

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

IgorZ
Posts: 691
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 63 times

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

Post by IgorZ »

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: 691
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 63 times

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

Post by IgorZ »

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: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

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

Post by Shmuel »

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

IgorZ
Posts: 691
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 63 times

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

Post by IgorZ »

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

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

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

Post by HaRT »

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

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

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

Post by Shmuel »

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

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

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

Post by HaRT »

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

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

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

Post by zg »

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

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

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

Post by NightRoman »

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

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

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

Post by Shmuel »

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

User avatar
DrKnS
Posts: 5641
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 9 times
Been thanked: 305 times

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

Post by DrKnS »

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

IgorZ
Posts: 691
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 63 times

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

Post by IgorZ »

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

Post Reply

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