mf.usermenu

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

Re: mf.usermenu

Post by Shmuel » Fri 01 Mar, 2013 15:54

Latest post of the previous page:

Skirda wrote:Есть предложение в UserMenu добавить "выбор обработчика контента"
Идея интересная, только непонятно, почему её надо увязывать с DI_MEMO.

Shmuel
Posts: 5100
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: mf.usermenu

Post by Shmuel » Fri 01 Mar, 2013 16:03

John Doe wrote:
Smitis wrote:
Shmuel wrote:Вопрос ко всем: стоит ли попытаться сделать, чтобы это работало?
Открывать меню и возвращать управление макросу? Конечно!
Почему так категорично?
Могут быть разные сценарии.
Сейчас попробовал вариант с возвращением управления макросу, не дожидаясь закрытия меню, - вроде нормально работает. Может действительно сделать оба варианта, а выбор каким-то флагом?

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

Re: mf.usermenu

Post by John Doe » Fri 01 Mar, 2013 16:06

Можно Mode сделать набором битовых флагов (т.е. 1,2,4,8,16...).
Хотя может это и не принято в Lua

Shmuel
Posts: 5100
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: mf.usermenu

Post by Shmuel » Fri 01 Mar, 2013 16:15

John Doe wrote:Можно Mode сделать набором битовых флагов (т.е. 1,2,4,8,16...).
Хотя может это и не принято в Lua
Это уже проблема попроще, вернее, почти не проблема.
Главное, меня интересует: нужны ли оба варианта? Какие сценарии хороши для какого варианта?

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

Re: mf.usermenu

Post by John Doe » Fri 01 Mar, 2013 16:20

Shmuel wrote:Это уже проблема попроще, вернее, почти не проблема.
Подумалось, что в Lua есть более гибкое средство - таблицы.
Shmuel wrote:Главное, меня интересует: нужны ли оба варианта? Какие сценарии хороши для какого варианта?
1. Нужно показать пользователю меню и дождаться выбора.
2. Нужно сам выбор осуществить в макросе.

Shmuel
Posts: 5100
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: mf.usermenu

Post by Shmuel » Fri 01 Mar, 2013 16:29

John Doe wrote:
Shmuel wrote:Главное, меня интересует: нужны ли оба варианта? Какие сценарии хороши для какого варианта?
1. Нужно показать пользователю меню и дождаться выбора.
2. Нужно сам выбор осуществить в макросе.
Если mf.usermenu() - последняя операция в макросе, то второй вариант работает, как первый. Нужен ли первый вариант?

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

Re: mf.usermenu

Post by John Doe » Fri 01 Mar, 2013 16:35

Вот именно что "если".
Если после закрытия меню макрос должен продолжить работу.

P.S.
Возможностей много, я ещё не думал над конкретным применением функции, поэтому живых примеров нет

Shmuel
Posts: 5100
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: mf.usermenu

Post by Shmuel » Fri 01 Mar, 2013 16:38

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

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

Re: mf.usermenu

Post by John Doe » Fri 01 Mar, 2013 16:41

Назовите макрофункции, к которым такая возможность вообще применима.

А вообще есть mmode(3, или как его там

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

Re: mf.usermenu

Post by John Doe » Fri 01 Mar, 2013 16:53

Как вам такая мысль: что если поведением mf.usermenu будет управлять тот же mmode(3,x)?

Shmuel
Posts: 5100
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: mf.usermenu

Post by Shmuel » Fri 01 Mar, 2013 17:24

John Doe wrote:Как вам такая мысль: что если поведением mf.usermenu будет управлять тот же mmode(3,x)?
Мне кажется, что управление с помощью параметра функции элегантнее.

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

Re: mf.usermenu

Post by NightRoman » Fri 01 Mar, 2013 18:08

А не мог бы Фар сам предоставить какую-нибудь комбинацию клавиш для запуска меню повсюду прямо из коробки? Фича очень удобная получается, а многие юзера-не-гики так и не узнают, что она есть, если это только макросом через какую-то функцию делается. (Как, например, F11 есть везде, и все это знают и пользуют).

Smitis
Posts: 1452
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 23 times
Contact:

Re: mf.usermenu

Post by Smitis » Fri 01 Mar, 2013 21:30

NightRoman wrote:А не мог бы Фар сам предоставить какую-нибудь комбинацию клавиш для запуска меню повсюду прямо из коробки? Фича очень удобная получается, а многие юзера-не-гики так и не узнают, что она есть, если это только макросом через какую-то функцию делается. (Как, например, F11 есть везде, и все это знают и пользуют).
Жаль, что F2 в редакторе уже занята.
А вообще, понадобятся разные файлы меню по умолчанию, например, в редакторе врядли нужно меню, открываемое из панелей.
Разум когда-нибудь победит.

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

Re: mf.usermenu

Post by John Doe » Fri 01 Mar, 2013 21:52

Shmuel wrote:
John Doe wrote:Как вам такая мысль: что если поведением mf.usermenu будет управлять тот же mmode(3,x)?
Мне кажется, что управление с помощью параметра функции элегантнее.
Управление через mmode мне самому активно не нравится.

Но если функций, [а]синхронностью выполнения которых надо управлять, больше чем одна, то хочется какого-то общего решения.
Например, можно было бы для этого выделить некую сервисную функцию.
Если опираться на имеющиеся средства, то примерно так:

Code: Select all

function asyncCall(f,...)
  local prev=mmode(3,1)
  local r=f(...)
  mmode(3,prev)
  return r
end
Update
С DrawLine работает, что ожидаемо, т.к. это пример из Энциклопедии
Но с mf.usermenu пока не работает...

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

Re: mf.usermenu

Post by NightRoman » Sat 02 Mar, 2013 07:20

Smitis wrote:А вообще, понадобятся разные файлы меню по умолчанию, например, в редакторе врядли нужно меню, открываемое из панелей.
Сложный вопрос. Полно команд, которые могу отовсюду вызываться. В разных файлах их дублировать - нехорошо. Хуже, чем если в общем меню будут неприменимые к данной области команды (их юзер просто не будет вызывать).

Тут лучше доработать саму систему юзер-меню с учетом новых реалий. А именно, у команд и подменю иметь свойство - области, в которых эти элементы должны показываться

А может даже лучше не скрывать, а показывать серыми - такой вариант лучше с точки зрения редактирования меню на месте. Ибо при скрытых элементах возникают нюансы редактирования - неоднозначность вставки в некоторых случаях, невозможность отредактировать/удалить скрытые элементы и т.п.

Shmuel
Posts: 5100
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Re: mf.usermenu

Post by Shmuel » Sat 02 Mar, 2013 10:43

В 3226 mf.usermenu изменилась:
-- параметры поменялись местами
-- появился флаг, управляющий синхронностью/асинхронностью вызова

Описание функции в мануале приведено в соответствие с этими изменениями.

Smitis
Posts: 1452
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 23 times
Contact:

Re: mf.usermenu

Post by Smitis » Thu 07 Mar, 2013 07:34

Что-то после смены параметров совсем mf.usermenu перестало работать

Code: Select all

Macro { area="Editor"; key="AltJ"; flags="";
action=function()
	--mf.usermenu(2,"S:\\Far\\Far3\\Profile\\Menus\\editor.ini")
	mf.usermenu(3,"editor.ini")
end;
}
Не с mode=2 не работает, не с 3
Разум когда-нибудь победит.

Post Reply

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