View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003134 | Wishes.Plugins | LuaMacro / Macro Browser | public | 2015-12-15 08:47 | 2016-09-12 18:25 |
Reporter | JouriM | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | always |
Status | new | Resolution | open | ||
Product Version | 3.0 | ||||
Summary | 0003134: Скорректировать и расширить функционал far.Menu() | ||||
Description | Предлагаю внести следующие изменения в поведение вунции реализующей far.Menu() Описанные изменения реализуются приложенным патчем файла plugins\luamacro\luafar\service.c MenuItems * menu items scanned until first non-table item (no more errors if menu items table contains enumerable non-items) BreakKeys + Case sensitiveness of keys is removed. Now "Left", "LEFT" or even "lEfT" are the same key. NOTE: If you specify single char it can be specified as lower or upper case but will break menu only by pressing just char itself + Added all symbols: "`~@#$%^&*()-_=+\|{[}];:'",<.>/?" NOTE: If symbol need shift to be pressed to enter in text its need to press it to break menu too If '[' is set as break you need to press '[' to break If '{' is set as break you need to press Shift+'[' to break + Added set []. For every char inside [] separate break item will be generated NOTE: Chars are case sensitive! 'a' != 'A', you need to press Shift to break with 'A' NOTE: If char need shift to be pressed to enter it in text, the shift must be pressed in menu too ([ and { is differ by shift) NOTE: Set only can contain characters! (it impossible to add keys like arows or Ctrl|Shift|Alt+Keys) + Removed numpad and arrows difference. Now "Left" will break on arrow left and numpad4 NOTE: If you need to differ numpad keys use NUMPADX or NUMX keys * Support for Right control and alt modifiers as RC[trl] and RA[lt] (left will be used only if right not found in key string) + On return by BreakKey in break item table the pair "KeyNum"=<number> will be added, where <number> is number of character is used to break menu (usefull if several break keys is set in single item) NOTE: Keynum is added allways, it allways equals 1 for single-key items + Added additional key names: BS (as backspace), BSPACE (as backspace), DEL (as DELETE), ENTER (as RETURN), INS (as INSERT), NUM0, NUM1, NUM2, NUM3, NUM4, NUM5, NUM6, NUM7, NUM8, NUM9, PGDN (as NEXT), PGUP (as PRIOR) ------------------ MenuItems * Элементы меню сканируются до первого элемента не таблицы (не будет больше ошибок при хранении в этой же таблице другой информации) BreakKeys + Удалена разница регистра кнопок. Теперь "Left", "LEFT" или даже "lEfT" одна и та же кнопка. NOTE: Если указан одиночный символ, то он может быть как в верхнем так и в нижнем регистре, но прерывать меню будет нажатый без модификаторов + Добавлены символы: "`~@#$%^&*()-_=+\|{[}];:'",<.>/?" NOTE: Если символ требует нажатия shift для ввода его в редакторе, то его так же нужно будет нажать и для прерывания меню. Если '[' установлен как прерыватель, то нажать надо будет '[' Если '{' установлен как прерыватель, то нажать надо будет Shift+'[' + Добавлена возможность указывать наборы символов []. Прерывать меню будет любой символ внутри [] NOTE: Символы чувствительны к реестру! 'a' != 'A', нужно будет нажать Shift чтобы прервать меню символом 'A' NOTE: Если символ требует нажатия shift для ввода его в редакторе, то его так же нужно будет нажать и для прерывания меню ([ и { различаются нажатием shift) NOTE: Набор может содержать ТОЛЬКО символы! (невозможно указат, к примеру, стрелки или сочетания Ctrl|Shift|Alt+Keys) + Удалена разница между стралками и расширенной клавиатурой. Теперь при указании "Left" меню будет прервано как стрелкой влево так и кнопкой numpad4 NOTE: Если нужно различное поведение, то нужно использовать обозначения расширенных кнопок NUMPADX или NUMX * Поддержка правых control и alt с помощью RC[trl] и RA[lt] (левый будет использоваться только если в модификаторах явно не указан правый) + При возвращении из функции по прерыванию кнопкой в элемент таблицы прерывающих кнопок, для сработавшего элемента будет добавлена пара "KeyNum"=<номер>, где <номер> - это номер символа, которым фактически прервано меню (полезно, если указано несколько кнопок прерывателей в одном элементе) NOTE: Пара "KeyNum" добавляется всегда, для одиночных кнопок значение равно единице + Добавлены дополнительные кнопки: BS (как backspace), BSPACE (как backspace), DEL (как DELETE), ENTER (как RETURN), INS (как INSERT), NUM0, NUM1, NUM2, NUM3, NUM4, NUM5, NUM6, NUM7, NUM8, NUM9, PGDN (as NEXT), PGUP (as PRIOR) | ||||
Tags | No tags attached. | ||||
|
|
|
Буду смотреть по мере наличия времени. Спасибо. |
|
Если нужно хранить в таблице другую информацию, можно ведь использовать нечисловой ключ, например:
Что, собственно, мы выигрываем предложенным изменением (я лично в упор не вижу)? |
|
Это если создавать одно меню Я на это нарвался, когда пытался сдлать "класс" который имеет clear() и add(), где перед показом делаю menu[count]=nil При втором вызове с меньшим числом пунктов имею ошибку т.к. размер таблицы по # не изменился |
|
Принудительное окончание массива каким-то элементом-не таблицей выглядит частным случаем, который решает узкую и специфическую задачу "обрезания хвостовых элементов меню". Уж если расширять far.Menu, то не таким способом. Можно, например, ввести поле __count и/или поля __start и __end. Можно много чего ещё сделать. Но ведь всё это можно сделать и на Lua. LuaFAR - это в основном оболочка над API плагинов Фара, а не конструктор. Я наверняка кое-что позаимствую из ваших предложений. Что именно - пока не решил. |
|
Да, блин весь ФАР можно написать на ЛУА и он даже при этом станет не хуже, и чего? О чем обсуждение-то? О десятке символов в сорсе, изменение которых никак не повлияет ни на кого, но чуть облегчит жизнь для 0.01% пользователей? Пусть даже 0.0001 Даж не знаю что сказать... Разумеется, делай что хочешь Или не делай Мне один фиг придется на форках сидеть и этот будет не самым большим и важным, так что мне, в сущности, все равно. |
|
С кнопками в BreakKeys имхо не особо хорошо, т.к. предлагается какой-то новый стандарт. А ведь есть привычные фаровские названия клавиш, которые очень просто внедрить, ведь есть FarNameToInputRecord (правда есть подводный камень, с шифтом). Возможность указывать несколько клавиш полезна, но можно и без классов [], а через пробел. Update: 0003303 |
|
Что касается различения правых и левых модификаторов, то насколько я могу судить, то ничего не выйдет пока сам фар их не различает http://sourceforge.net/p/farmanager/code/HEAD/tree/trunk/unicode_far/plugapi.cpp#l967 |
Date Modified | Username | Field | Change |
---|---|---|---|
2015-12-15 08:47 | JouriM | New Issue | |
2015-12-15 08:47 | JouriM | File Added: service.c.zip | |
2015-12-15 09:24 | shmuel | Note Added: 0014129 | |
2015-12-22 14:24 | shmuel | Note Added: 0014155 | |
2015-12-22 14:36 | JouriM | Note Added: 0014156 | |
2015-12-22 15:12 | shmuel | Note Added: 0014157 | |
2015-12-24 03:02 | JouriM | Note Added: 0014159 | |
2016-07-17 16:55 | JohnDoe | Note Added: 0014667 | |
2016-07-17 17:09 | JohnDoe | Note Added: 0014668 | |
2016-09-12 18:25 | JohnDoe | Note Edited: 0014667 |