Как не группировать историю (команд/...) по дате?

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 8 times

Как вызвать стандартную историю команд, не показывая ее?

Post by fml2 »

Latest post of the previous page:

У меня в Фар комбинация клавиш Alt+F8 переназначена на вызов плагина AltHistory. Стандартную историю можно вызвать с помощью Ctrl+Alt+F8.

Как из макро, написанном на Луа, вызвать стандартную историю команд Фар так, чтобы это не зависело от того, есть переназначение клавиш или нет? Имеется ли у стандартной истории какой-то внутренний ID, и, если да, как по нему вызвать историю?

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

Такое возможно? Как?

Заранее спасибо за дельные советы.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 11 times

Re: Как вызвать стандартную историю команд, не показывая ее?

Post by Max Rusov »

Keys("AltF8")

fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 8 times

Re: Как вызвать стандартную историю команд, не показывая ее?

Post by fml2 »

Спасибо, работает! И кнопки передвижения курсора вверх/вниз и удаления записи тоже отрабатываются (я опасался, что, т.к. диалог модальный, то будут проблемы).

Но у меня есть еще пара вопросов:
  1. Как узнать, какой элемент выбран в данный момент (его текст и позицию в списке)?
  2. Как узнать общее количество пунктов в списке/меню (не включая разделительных линий)?

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 11 times

Re: Как вызвать стандартную историю команд, не показывая ее?

Post by Max Rusov »

Почитайте документацию, там же все есть.

Пример

fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 8 times

Re: Как вызвать стандартную историю команд, не показывая ее?

Post by fml2 »

Спасибо, Max! Я не знал, что в макро автоматически имеются "глобальные" переменные Area, Object и Menu. В luafar_manual я этого не нашел.

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

Post by John Doe »

fml2
В форуме "Обсуждение макросов" есть прилепленная тема о LuaMacro. Настоятельно рекомендую ознакомиться с шапкой, это избавит вас (и нас) от глупых вопросов.

Также рекомендую попробовать скрипт lua explorer, очень облегчает понимание.

fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 8 times

Re:

Post by fml2 »

John Doe wrote:Также рекомендую попробовать скрипт lua explorer, очень облегчает понимание.
Спасибо за ссылку. Загрузил. Действительно, помогает во многом разобраться. Спасибо!

Хотя мне и не очень понятны некоторые вещи. Например, зачем имеется два объекта: Far и far (почему все это не в одном). Но это уже другая тема.

Насчет глупых вопросов есть стандартный ответ, который я лучше приводить не буду, а то еще заблокируют :-)

Спасибо всем за помощь!

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

Re: Как вызвать стандартную историю команд, не показывая ее?

Post by John Doe »

fml2 wrote:Хотя мне и не очень понятны некоторые вещи. Например, зачем имеется два объекта: Far и far (почему все это не в одном).
Видимо вы так и не изучили шапку LuaMacro.
https://t.me/FarManager — Telegram чат

fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 8 times

Re: Как вызвать стандартную историю команд, не показывая ее?

Post by fml2 »

John Doe wrote:Видимо вы так и не изучили шапку LuaMacro.
Наизусть не выучил, спорить не буду. Но посмотел. Я для себя понял, что Far -- это из макро АПИ, а far -- из LuaFar. Но я не очень понимаю, в чем разница (почему должно быть две этих сущности) и, следовательно, зачем два объекта. Ведь и то, и другое предоставляет доступ к АПИ Фара (к немного разным его частям, но все равно к Фар). Если это чисто по историческим причинам, то ведь, насколько я понял, при введении Луа как языка макро производилась глобальная переработка всего, и тогда можно было бы все это объединить.

Но я не буду продолжать, а то еще отправят в баню за обсуждение посторонних тем. Тут, я смотрю, народ суровый.

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

Re: Как вызвать стандартную историю команд, не показывая ее?

Post by John Doe »

fml2 wrote:Наизусть не выучил, спорить не буду. Но посмотел.
Там под спойлером есть файл, весьма облегчающий знакомство с фунциями API макросов, вас он почему-то не заинтересовал.
fml2 wrote:Если это чисто по историческим причинам, то ведь, насколько я понял, при введении Луа как языка макро производилась глобальная переработка всего, и тогда можно было бы все это объединить.
По историческим. Глобальная переработка - не производилась. Но вы правы, продолжать обсуждение этого лучше в соответствующих темах (и предварительно изучить уже написанное, поскольку не впервые обсуждается).

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

Re: Как вызвать стандартную историю команд, не показывая ее?

Post by Shmuel »

fml2
Пространство имён far существовало в библиотеке LuaFAR c 2006 года, за 6 лет до того, как эта библиотека стала доступна макросам. С другой стороны, в (прежнем) макроязыке существовало пространство Far, сохранившееся после замены макроязыка на Lua. Объединять эти пространства нет смысла, т.к. это разные библиотеки, даже физически находящиеся в разных файлах. Кроме того, содержимое пространства Far недоступно напрямую LuaFAR-плагинам (кроме LuaMacro, естественно).

Post Reply

Return to “Нужна помощь”