Пользовательское меню как замена WEB Editor

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
lurii
Posts: 13
Joined: Fri 25 Nov, 2011 11:54
Been thanked: 1 time

Пользовательское меню как замена WEB Editor

Post by lurii »

Тоже пытаюсь создать свое меню для редактора и пока туго ...

FarMenu.ini

Code: Select all

a:	Раздел A
{
d:	Команда D
e:	Команда E
}

b:	Раздел B
{
c:	Команда C
f:	Команда F
}
Editor_AltO.lua

Code: Select all

Macro{
	area="Editor"; key="AltO"; description="User menu"; action=function()
	mf.usermenu(0, "")
	end;
}
1) как при выборе конечного пункта "Команда D" вставить в позицию курсора нужный текст?
2) как бы сделать так чтобы при сочетании "Alt+A" сразу выводить пункты из "Раздел A"?
(т.е. не начинать выбор с главных разделов а сразу проваливаться в список команд)
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Пользовательское меню в редакторе

Post by John Doe »

1)

Code: Select all

d:  Команда D
    lua:print("нужный текст")
2)Это должен быть отдельный макрос?
Можно как-то так:

Code: Select all

Macro{
  area="Editor"; key="AltA"; description="User menu: Раздел A";
  action=function()
    mf.usermenu(0, "")
    Keys("a")
  end;
}
lurii
Posts: 13
Joined: Fri 25 Nov, 2011 11:54
Been thanked: 1 time

Пользовательское меню в редакторе

Post by lurii »

Да, отлично, заработало.
undefined wrote: 2)Это должен быть отдельный макрос?
Не владею глубокими познаниями в макросах ...
Вообще, по большому счету пытаюсь перевести на макросы устаревший и не поддерживаемый более плагин "WEB Editor".
(http://plugring.farmanager.com/plugin.php?pid=196)
Руки уже много лет поставлены под эти комбинации клавиш для вставки, ну и далее по минимуму попытаюсь сделать обрамление выделенного фрагмента тегами.

Может я двигаюсь не в том направлении? - подскажите.
User avatar
Wave
Posts: 1887
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 15 times
Been thanked: 26 times

Пользовательское меню в редакторе

Post by Wave »

А зачем основное меню в редакторе? Там, по идее куча всякого, что в контексте редактора просто бесполезно. Не лучше ли сделать как-то так?
mf.usermenu (3, "FarMenu.Editor.ini");
Вообще, по большому счету пытаюсь перевести на макросы устаревший и не поддерживаемый более плагин "WEB Editor".
А, ну из аналогичных соображений

Code: Select all

Macro {
  area = "Editor"; key = "Apps"; description = "Editor: Меню редактора"; action = function()
    mf.usermenu (3, "FarMenu.Editor.ini");
  end
}
И файл %FarProfile%\Menus\FarMenu.Editor.ini полон подобными пунктами:

Code: Select all

v:  Visualiser
    lua: Keys("AltShiftF9 AltM Subtract Enter"); Keys("F11 * C AltH Subtract Enter"); Keys("F11 V AltT Add AltS Add AltU Add AltM Add Enter");

Code: Select all

d:  Рисовать линии
    lua: local guid = "C941E865-9C29-485C-99B3-0C710940F2D8"; if Plugin.Exist(guid) ~= true then Plugin.Load(mf.env("FARHOME") .. "\\Plugins.off\\Editor\\DrawLine\\DrawLine.dll"); end; Plugin.Call(guid);
Attention: LuaMacro довольно сильно отличается от формата WEB Editor и разбираться придётся много для непрограммиста.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Пользовательское меню в редакторе

Post by John Doe »

По теме: http://forum.farmanager.com/viewtopic.php?f=15&t=9182
(не уверен, но можно ещё попробовать шаблоны типа http://forum.farmanager.com/viewtopic.php?f=60&t=7517)
lurii
Posts: 13
Joined: Fri 25 Nov, 2011 11:54
Been thanked: 1 time

Пользовательское меню в редакторе

Post by lurii »

John Doe wrote: По теме: Макросы для работы с ХТМЛ
Спасибо, это я обязательно почитаю когда дойдет до обрамления текста тегами.

Перенес меню в FarMenu.Editor.ini

Code: Select all

p:	Page
{
1:	html
	lua:print("<html>\n<head>\n\t<title></title>\n</head>\n<body>\n\n</body>\n</html>\n")
	lua:Keys("Home");Keys("Up");Keys("Up");Keys("Up");Keys("Tab");

s:	script
	lua:print("<script type=\"text/javascript\">\n\n</script>\n")
	lua:Keys("Home");Keys("Up");Keys("Up");Keys("Tab");

c:	style
	lua:print("<style type=\"text/css\">\n\n</style>\n")
	lua:Keys("Home");Keys("Up");Keys("Up");Keys("Tab");
}
...
Wave wrote: Attention: LuaMacro довольно сильно отличается от формата WEB Editor и разбираться придётся много для непрограммиста.
Я пользую только примитивы - вставка и обрамление, но сочетания клавиш за 10лет крепко засели в мозгу и не могу перейти на другие комбинации...
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Пользовательское меню в редакторе

Post by NightRoman »

Wave wrote:А зачем основное меню в редакторе?
Например, если там полно команд, которые для любой области годятся. Чем думать, как быть с дублированием, мне оказалось проще иметь одно меню. Статистику не вел, но кажется, что из редактора я чаще вызываю именно "общие" команды. Так что у каждого свой подход может быть.
Last edited by NightRoman on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [quote="Wave"]
User avatar
Wave
Posts: 1887
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 15 times
Been thanked: 26 times

Пользовательское меню в редакторе

Post by Wave »

NightRoman wrote:
Wave wrote:А зачем основное меню в редакторе?
Например, если там полно команд, которые для любой области годятся. Чем думать, как быть с дублированием, мне оказалось проще иметь одно меню. Статистику не вел, но кажется, что из редактора я чаще вызываю именно "общие" команды. Так что у каждого свой подход может быть.
В принципе принятно, но вообще тот факт, что пользовательское меню можно вызвать макросом, даёт возможность хранить разные части меню в разных файлах и делать этакий инклюд посредством lua: mf.usermenu(…) (и даже возвращение на уровень выше по бэкспейсу легко макросом сдеалать).
Просто я ещё со времён первого фара привык к editor user menu (был такой плуг тогда), а там, естессно, меню было совсем другим. Так у меня и повелось, что редакторное меню практически не пересекается с панельным.
lurii wrote:Вообще, по большому счету пытаюсь перевести на макросы устаревший и не поддерживаемый более плагин "WEB Editor".
lurii, поделитесь итоговым результатом? Я тоже WEB Editor пользуюсь и тоже хотел его на макросы перевести, но всё было лень, очень уж он большой. Там ведь кроме обрамления тегами идёт ещё и редактирование свойств тегов и много подобного прочего. И кстати, на случай, если вы об этом не знаете, у плагина все эти теги и свойства лежат в конфигах в xml, я для себя даже какие-то мелочи там правил. Единственное неудобство от плагина в том, что он неюникодный.
Last edited by Wave on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [quote="Wave"]
Пользуюсь ФАРом больше 20 лет © собирательный.
lurii
Posts: 13
Joined: Fri 25 Nov, 2011 11:54
Been thanked: 1 time

Пользовательское меню в редакторе

Post by lurii »

Не подскажите, как задать для пункта меню горячую клавишу "Пробел"?
Пробовал писать Space, "Space", \s и еще через само меню задавать - один фиг F1 предлагает ...
(в веб-эдиторе это была комбинация Alt+S+Space для неразрывного пробела)

Code: Select all

s:	Symbols
{
q:	&laquo;
	lua:print("&laquo;")
w:	&raquo;
	lua:print("&raquo;")
"Space":	&nbsp;
	lua:print("&nbsp;")
,:	<
	lua:print("<")
.:	>
	lua:print(">")
':	"
	lua:print(""")
7:	&
	lua:print("&")
r:	&reg;
	lua:print("&reg;")
t:	&trade;
	lua:print("&trade;")
c:	&copy;
	lua:print("&copy;")
}
Wave wrote: Там ведь кроме обрамления тегами идёт ещё и редактирование свойств тегов и много подобного прочего.
Даааа, вот с этим то как раз и самая большая засада, я этим совсем не пользовался - отключал... Так что в лучшем случае на выходе от меня будет мега-кастрированный вариант.
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Пользовательское меню в редакторе

Post by John Doe »

lurii wrote: Не подскажите, как задать для пункта меню горячую клавишу "Пробел"?
Имхо для решения вашей задачи меню пользователя не очень подходит.
Проще всего как-то так: http://forum.farmanager.com/viewtopic.p ... 12#p131612
User avatar
Wave
Posts: 1887
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 15 times
Been thanked: 26 times

Пользовательское меню в редакторе

Post by Wave »

Code: Select all

Macro {
  area="UserMenu"; key="Space"; action = function()
    -- тут можно сколько-то проверок добавить или ещё чего, но идея типа 
    Menu.Select('пункт меню', …); Key("Enter");
    -- точнее if Menu.Select() > 0 then Key("Enter"); end;
end;
Имхо, уродливый костыль, но раз уж «за годы пользования руки искривились под ФАР» ©

P.s. Вроде замечал, что тут ворчат на точки с запятыми при использовании их в луа, мол, не нужны. Но это уже моя привычка.
Пользуюсь ФАРом больше 20 лет © собирательный.
lurii
Posts: 13
Joined: Fri 25 Nov, 2011 11:54
Been thanked: 1 time

Пользовательское меню в редакторе

Post by lurii »

John Doe wrote: Имхо для решения вашей задачи меню пользователя не очень подходит.
Вот как раз менюшка то и нужна, вызвали ее сочетанием AltS - она появилась, далее можно отпустить Alt и бегать курсором по пунктам на случай если мы забыли сочетание.
MacroEx тоже выводить сообщение с подсказкой, но при этом необходимо постоянно удерживать клавишу Alt чтобы сработала 3-я клавиша и тянуться на другой край клавы не всегда получится.
Ну и Пробел тем макросом не сработал.
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Пользовательское меню в редакторе

Post by John Doe »

Ответил в соответствующей теме.
Но даже если какие-то детали реализации MacroEx вам не нравятся, вы можно написать свой (сравнительно простой) макрос, решающий задачу с большим удобством, чем это позволяет меню пользователя.
lurii
Posts: 13
Joined: Fri 25 Nov, 2011 11:54
Been thanked: 1 time

Пользовательское меню в редакторе

Post by lurii »

Вот по поводу вот этого кода:

Code: Select all

Macro {
  area="UserMenu"; key="Space"; action = function()
    -- тут можно сколько-то проверок добавить или ещё чего, но идея типа
    Menu.Select('пункт меню', …); Key("Enter");
    -- точнее if Menu.Select() > 0 then Key("Enter"); end;
end;
Попробовал создать свой файлик с кодом.
Обозвал его AltSSpace.lua и положил вместе с Macros/internal где и лежать другие макросы, но ничего не сработало.

Code: Select all

Macro{
	area="UserMenu";
	key="Space";
	action=function()
	Menu.Select('Space',3);
	if Menu.Select() > 0 then Keys("Enter");end;
	end;
}
На сколько я понимаю, строка Menu.Select('Space',3); должна найти пункт в котором есть слово "Space".
1) как назвать файл?
2) куда его положить?

Сейчас лежит файл обработчик AltS в Macros/internal:

Code: Select all

Macro{
	area="Editor";
	key="AltS";
	description="Editor: Меню редактора";
	action=function()
	mf.usermenu(3,"FarMenu.Editor.ini")
	Keys("s")
	end;
}
а в Menus/FarMenu.Editor.ini

Code: Select all

s:	Symbols
{
q:	&laquo;
	lua:print("&laquo;")
w:	&raquo;
	lua:print("&raquo;")
s:	Space
	lua:print("&nbsp;")
,:	<
	lua:print("<")
.:	>
	lua:print(">")
':	"
	lua:print(""")
7:	&
	lua:print("&")
r:	&reg;
	lua:print("&reg;")
t:	&trade;
	lua:print("&trade;")
c:	&copy;
	lua:print("&copy;")
}
lurii
Posts: 13
Joined: Fri 25 Nov, 2011 11:54
Been thanked: 1 time

Пользовательское меню в редакторе

Post by lurii »

Аа, ну все заработал костыль.
Надо было AltSSpace.lua положить в Macros/scripts

Code: Select all

Macro{
	area="UserMenu";
	key="Space";
	action=function()
	Menu.Select('Space',3);Keys("Enter");
	end;
}
Post Reply

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