Экспериментально: ProcessFarCommandLine

Здесь обсуждается всё, что касается макросов.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Экспериментально: ProcessFarCommandLine

Post by Shmuel »

А что если сделать так:
  • При вызове плагина с комстроки, плагин проверяет наличие глобальной функции LuaMacroCommandLine.
  • Если такая ф-ция есть - она вызывается, и ей передаётся комстрока.
  • Если ф-ция возвращает true, то плагин больше ничего не делает.
  • Если ф-ции нет, либо она возвращает nil/false/ничего, происходит обычная обработка комстроки.
???
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: lm:post2

Post by John Doe »

Вот если это в апи фара, и можно было бы любую комстроку обработать...
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: lm:post2

Post by Shmuel »

John Doe wrote:Вот если это в апи фара, и можно было бы любую комстроку обработать...
Можно, не трогая API Фара, передавать любую комстроку в LuaMacro и задействовать механизм, аналогичный изложенному в моём предыдущем посте. Попробовал, работает. Однако делать не буду без одобрения Far Group. Если одобрено не будет, сделаю только для комстроки LuaMacro.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: lm:post2

Post by John Doe »

Для одобрения или неодобрения нужно больше информации.
Что именно предлагается, и как именно реализовать.

Не зная деталей я сомневаюсь, что описанное можно нормально сделать без апи.
В идеале должно быть так: при запуске чего-либо из командной строки фар передаёт текст комстроки плагину (может быть и не один).
Плагин либо выполняет какие-либо действия самостоятельно, либо трансформирует текст и передаёт на запуск фару.

Делать это только для комстроки LuaMacro - это совсем другое, применений несравнимо меньше.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: lm:post2

Post by Shmuel »

John Doe wrote:Для одобрения или неодобрения нужно больше информации.
Что именно предлагается, и как именно реализовать.
Да вроде всю информацию изложил. Что неясно?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: lm:post2

Post by John Doe »

Как именно плагин будет получать управление?
Где это может работать (комстрока? история? асооциации? ...?)
Преимущества такой реализации перед плагиновым АПИ?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: lm:post2

Post by Shmuel »

Предполагается использовать уже изложенный механизм.
Фар перед исполнением введенной комстроки вызывает LuaMacro по уже имеющемуся приватному API и передаёт ему комстроку. LuaMacro вызывает предопределённую глобальную ф-цию, например ProcessFarCommandLine, затем передаёт Фару результат: нужно исполнять комстроку, или нет.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: lm:post2

Post by zg »

John Doe wrote:Не зная деталей я сомневаюсь, что описанное можно нормально сделать без апи.
а вы не сомневайтесь. кастомная сортировка работает же.
Shmuel wrote:затем передаёт Фару результат: нужно исполнять комстроку, или нет.
может: true — исполнять то, что есть, false — не иссполнять, string — исполнять то, что в строке?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: lm:post2

Post by John Doe »

Shmuel wrote:перед исполнением введенной комстроки вызывает LuaMacro
Из истории? Через ассоциации? Из меню пользователя? Из Apply Command?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: lm:post2

Post by zg »

John Doe wrote:
Shmuel wrote:перед исполнением введенной комстроки вызывает LuaMacro
Из истории? Через ассоциации? Из меню пользователя? Из Apply Command?
оно из одного места выполняется. какие проблемы?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

lm:post2

Post by John Doe »

Проблем нет, идея отличная, неоднократно высказывалась в разных формах (например).
Хочу чтобы всё было предусмотрено.

Имхо функция на входе должна иметь не только саму строку, но и информацию откуда вызывается.
И на выходе не только false/true, но и возможность вернуть трансформированую строку.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: lm:post2

Post by NightRoman »

John Doe wrote:
Shmuel wrote:перед исполнением введенной комстроки вызывает LuaMacro
Из истории? Через ассоциации? Из меню пользователя? Из Apply Command?
Иногда хочется различать. В PowerShellFar я хотел бы различать, чтобы знать, добавлять команду в историю (комстрока) или нет (меню и ассоциации). Возможности нет, пришлось костыль ввести - если команда заканчивается на #, то она не добавляется в историю.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: lm:post2

Post by John Doe »

Вроде когда-то обсуждалась идея о том, чтобы перед выполнением отправлять событие плагинам.
Каким-то плагинам надо вести историю, а какие-то могли бы трансформировать комстроку, или выполнять свои действия.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: lm:post2

Post by Shmuel »

zg wrote:может: true — исполнять то, что есть, false — не иссполнять, string — исполнять то, что в строке?
Сделать элементарно, но никто ещё не привёл пример полезности подмены комстроки.
John Doe wrote:Из истории? Через ассоциации? Из меню пользователя? Из Apply Command?
Честно говоря, изначальной идеей был только перехват собственно комстроки.
John Doe wrote:Хочу чтобы всё было предусмотрено.
Если что-то забудем, можно будет позже добавить. Необязательно, чтобы в первом же билде всё было учтено.

Насколько я понимаю, zg не против, другие разработчики могут высказать своё мнение.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: lm:post2

Post by John Doe »

Shmuel wrote:Сделать элементарно, но никто ещё не привёл пример полезности подмены комстроки.
Собственные алиасы.
Поиск файлов для запуска в нестандартных местах.
Запуск lua-скриптов без указания префикса + поиск их в заданных папках.
Различная обработка командной строки в зависимости от контекста. Например, файлы по одной и той же маске из какой-то папки надо запускать иначе, чем из другой.
...
Post Reply

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