переписал ещё один свой плагин на lua. вместо тысячи слов:
ссылка
c&c like input — замена одноимённого плагина
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
c&c like input - замена одноимённого плагина
1. использование ECF_AUTODELETE должно упростить код.
2.
2.
string.match(param.UnicodeChar, match)
нужно заменить на param.UnicodeChar:match(match)
. то что оно сейчас вроде бы работает — просто везенье.c&c like input — замена одноимённого плагина
да, действительно упростило, спасибо.
а вот здесь - нет. после простой замены вообще перестало работать. если убрать сравнение с nil, то обрабатывает все нажатия на клавиши, т.е. всегда возвращает истину.
мои познания в lua не позволяют увидеть разницу между двумя этими операторами. в мануалах, которые мне удалось найти разница тоже незаметна. сможете объяснить подробней?
too much raVen over paradise...
- John Doe
- Бюрократ
- Posts: 13851
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
c&c like input — замена одноимённого плагина
string.match не знает про utf8
Для работы с юникодом у нас unicode.utf8.match
Индексируя через двоеточие вы обращаетесь именно к unicode.utf8.match
В мануале см. разделы "Unicode support" и "Selene Unicode"
P.S
Вижу у вас в коде %g и не понимаю что это
P.P.S.
Code: Select all
if(param.EventType ~= 1) then
И ещё хотел бы посоветовать темы называть содержательнее, давая хотя бы намёк пользователю, о чём скрипт.
c&c like input — замена одноимённого плагина
искал, но не нашёл, пришлось выяснять методом тыка. надеюсь на подсказку :)
да, не работало из-за
%g
, теперь работает.too much raVen over paradise...
- John Doe
- Бюрократ
- Posts: 13851
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
c&c like input — замена одноимённого плагина
- John Doe
- Бюрократ
- Posts: 13851
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
c&c like input — замена одноимённого плагина
Code: Select all
if(param.UnicodeChar:match(pattern) == nil) then
if not param.UnicodeChar:match(pattern) then
И два условия у вас вполне можно объединить.
Равно как и в следующем обработчике всю громоздкую конструкцию заменить на
Code: Select all
if event==far.Flags.EE_REDRAW and (cx ~= -1) and (cy ~= -1) then
editor.AddColor(eid, cy, cx, cx, far.Flags.ECF_AUTODELETE, cccolor)
cx, cy = -1, -1
end