AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Coder plugin (2)
Goto page Previous  1, 2, 3 ... 27, 28, 29 ... 52, 53, 54  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
Skif_off



Joined: 20 Oct 2013
Posts: 256

PostPosted: Wed Jan 08, 2014 2:58 pm    Post subject: Reply with quote

Drugmix
Я подумал, что если парсер сразу читает содержимое coder-файла и, соотв., секции Blocks в память, то, наверное, можно указать ему читать всю строку $~xxx до конца, игнорируя какие бы то ни было разделители (кроме перевода строки). Хотя, наверное, я ошибаюсь, т.к. есть опция "Дополнять словами из документа"... В любом случае поддерживаю это предложение:
Drugmix wrote:
+ добавить возможность выбирать то, что считать разделителем (конкретно для секции Blocks:), а что нет - вот это будет супер.


Instructor
А как работает опция "Дополнять словами из документа"? Плагин просто берет все подряд между разделителями?
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5293

PostPosted: Wed Jan 08, 2014 3:30 pm    Post subject: Reply with quote

VladSh wrote:
Подскажите пожалуйста, чем "быстрый" от "умного" кэша отличается? И можно ли добавить это в доку?
http://akelpad.sourceforge.net/forum/viewtopic.php?p=22881#22881

VladSh wrote:
Похоже баг
"Сохраняется" Sessions плагином. Плагин сохраняет сессию при закрытии, в состав которой уже не входит закрытый пользователем файл.

Skif_off wrote:
Плагин просто берет все подряд между разделителями?
Почти. Можете глянуть StackFillDocWord в AutoComplete.c
Back to top
View user's profile Send private message Send e-mail
Drugmix



Joined: 08 Apr 2013
Posts: 383

PostPosted: Wed Jan 08, 2014 3:48 pm    Post subject: Reply with quote

Skif_off wrote:
Я подумал, что если парсер сразу читает содержимое coder-файла и, соотв., секции Blocks в память, то, наверное, можно указать ему читать всю строку $~xxx до конца

Так в том то и дело, что, скорей всего, так уже и происходит (или ещё не происходит, но всего лишь этого изменения было бы всё равно не достаточно).
Но это лишь список того, с чем сравнивать.
Но а что сравнивать-то? Вот Instructor же и рассказал про то, как работает плагин: его парсер начинает сдвигаться от текущей позиции каретки влево до тех пор, пока не дойдёт до первого разделителя. Как дошёл - он останавливается, копирует содержимое строки (от разделителя до каретки) и потом делает сравнение этой строки со списком строк из Blocks: и Words: секций .coder файла.

Сейчас, если у скопированной строки нет частичных совпадений с этим списком, то парсер на этом и останавливается, не предлагая вариантов автозавершения.

Я же предлагаю изменить подход и заставить в таком случае парсер продолжать идти влево и снова выполнять все те же самые действия (идти до разделителя, остановиться, скопировать строку [от места остановки до каретки], сравнить со списком из .coder) до тех пор, пока парсер не упрётся в начало строки или начало документа.

p.s.: да поправит меня Instructor, если я не правильно понял работу .coder плагина из того, что он сказал.
Back to top
View user's profile Send private message
DrakonHaSh



Joined: 19 Mar 2011
Posts: 117

PostPosted: Fri Jan 10, 2014 11:36 am    Post subject: Reply with quote

Call("Coder::HighLight", 4, 0, 0, 0, {0,1})
Call("Coder::HighLight", 4, -1, 0, 0, {0,1})
работают одинаково Sad

вроде как, насколько я помню, задумывалось что
Call("Coder::HighLight", 4, 0, 0, 0, 0) должен искать вперед любую отметку
а
Call("Coder::HighLight", 4, -1, 0, 0, 0) должен искать вперед отметку такого же цвета, как на которой, в данный момент, стоит курсор
Back to top
View user's profile Send private message
Andrey_A_A



Joined: 03 Jun 2010
Posts: 547
Location: Сочи, Хоста

PostPosted: Sat Jan 11, 2014 5:35 am    Post subject: Reply with quote

Подскажите как в окне редактирования свернуть/развернуть все блоки сразу.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Serge Yolkin



Joined: 27 Jul 2010
Posts: 248

PostPosted: Sat Jan 11, 2014 8:18 am    Post subject: Reply with quote

Вкладка CodeFold 2 в настройках кодера - не то?
Back to top
View user's profile Send private message
Andrey_A_A



Joined: 03 Jun 2010
Posts: 547
Location: Сочи, Хоста

PostPosted: Sat Jan 11, 2014 8:24 am    Post subject: Reply with quote

Serge Yolkin wrote:
Вкладка CodeFold 2 в настройках кодера - не то?


Спасибо, то! Но как сделать это во время работы без этой опции? Наверно скриптом...
Back to top
View user's profile Send private message Send e-mail Visit poster's website
San_dr



Joined: 06 Dec 2010
Posts: 144
Location: г.Харьков, Русь

PostPosted: Sat Jan 11, 2014 8:51 am    Post subject: Reply with quote

Andrey_A_A
Code:
"Свернуть/развернуть все блоки" Call("Coder::CodeFold::AllCollapse")
"Свернуть/развернуть текущий блок" Call("Coder::CodeFold::CurrentCollapse")
"Выделить текущий блок" Call("Coder::CodeFold::CurrentSelect")
-?
Back to top
View user's profile Send private message
Andrey_A_A



Joined: 03 Jun 2010
Posts: 547
Location: Сочи, Хоста

PostPosted: Sat Jan 11, 2014 9:00 am    Post subject: Reply with quote

San_dr
Ой, спасибо, знал, да забыл)))
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Drugmix



Joined: 08 Apr 2013
Posts: 383

PostPosted: Sat Jan 11, 2014 1:17 pm    Post subject: Reply with quote

Instructor
а как управлять приоритетами у правил из QuotesRE?
Путём эксперимента - было установлено, что чем правило в списке выше - тем оно главнее.
Но не всегда: у меня никак не получается заставить такое правило
Code:
0   `(")((?:[^"]*?(?:"")?)*?)("(?!"))` `\1=(2,#ff0000,0) \2=(3,#00ff00,0) \3=(3,#ff0000,0)`

перебивать остальные (если какое-то из них тоже сработало и окрасило строку по своему).

Если же правило заменить на
Code:
0   `^.*(")((?:[^"]*?(?:"")?)*?)("(?!")).*$` `\1=(2,#ff0000,0) \2=(3,#00ff00,0) \3=(3,#ff0000,0)`

то оно начинает перебивать остальные, но так, что части, которые подпадают под .* становятся не окрашенными совсем.

Можно ли как-то задать правило так, чтобы у частей, которые не находятся ни в одной суб-группе - не терялась раскраска от остальных правил?

EDIT:
Видимо, того, о чём я спрашивал выше - сейчас нет.
В связи с этим, предлагаю добавить новый аргумент в правила QuotesRE, который бы принимал бы целочисленные значения от -2 до n (512 должно хватить).

Правила с рейтингом 0 - обрабатывались бы так же, как они обрабатываются сейчас.

Если есть несколько правил, которые срабатывают на каком-то куске текста - то из них применится только одно: то, которое в списке правил идёт выше.


Правила с рейтингом от 1 и выше - обрабатывались бы так:
- если несколько таких правил срабатывают на каком-то куске текста, то приоритет отдаётся правилу с наивысшим рейтингом, а не определялся бы их позицией в списке правил;
- если же правил с наивысшим рейтингом несколько (т.е. если он одинаковый для нескольких сработавших правил), то все эти правила применяются к строке каскадно, т.е. накладываясь один поверх предыдущего. Наложение правил должно идти снизу вверх (сначала те, что ниже, а потом поверх них - те, что выше).
- правила с рейтингом 0 по-прежнему будут перебивать (не накладываться, а перебивать) любые другие правила с положительным рейтингом, если они расположены вверху списка.

Правила со значениями -1 - срабатывали бы так:
- если строка подпадает сразу и под правило с рейтингом -1 и под одно или несколько правил с положительным рейтингом, то примениться должны все из них, а правило с рейтингом -1 - должно примениться последним, т.е. наложиться поверх остальных. В случае если правил -1 было несколько, то их каскадное наложение определяется из позицией в списке (самое верхнее накладывается самым последним);
- но если строка подпадает сразу и под правило с рейтингом -1 и под правило(а) с рейтингом 0, то примениться должно только одно из них: то, что идёт в списке выше.
- если строка подпадает сразу и под правило(а) с рейтингом -1, и под правило(а) с рейтингом 0 и под правило(а) с положительным рейтингом, то применится только одно: наивысшее из всех правил с не положительным рейтингом.
Т.е. правила с рейтингом -1 ведут себя по-разному в зависимости от того, с какими правилами в группе они оказались: с 0-правилами они себя ведут как 0-правила, с р+ правилами - как р+ правило с наивысшим рейтингом.

Правила с рейтингом -2 - должны срабатывать как правила с рейтингом -1, за одним лишь исключением, что в группе с р+ правилами - они срабатывают как правила с наинизшим рейтингом.


Summary: есть правила с положительным рейтингом (р+) и с не положительным (р0 и р-). Правила могут накладываться или перебиваться.
Если срабатывают сразу несколько правил с разными типами рейтингов, то они себя ведут так:
если среди сработавших правил есть р0 - то сработает только 1 правило (наивысшее в списке).
если среди сработавших правил нет р0 - то сработают правила с наивысшим рейтингом и правила с рейтингом -1. Первым применится -2 (если есть), потом р+ (если есть), потом -1 (если есть).
Получается, что -1 - правило с наивысшим рейтингом, -2 - правило с наинизшим рейтингом.


Last edited by Drugmix on Mon Jan 13, 2014 3:09 pm; edited 3 times in total
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5293

PostPosted: Sat Jan 11, 2014 7:04 pm    Post subject: Reply with quote

Добавлено: параметр -2 для внешнего вызова с кодом 4 - найти отметки выделенного текста (Coder::HighLight).

Added: parameter -2 of external call with code 4 - find selected text marks (Coder::HighLight).


Coder plugin v12.3


Last edited by Instructor on Tue Feb 04, 2014 2:34 pm; edited 2 times in total
Back to top
View user's profile Send private message Send e-mail
DrakonHaSh



Joined: 19 Mar 2011
Posts: 117

PostPosted: Sat Jan 11, 2014 7:57 pm    Post subject: Reply with quote

Instructor wrote:
Добавлено: параметр -2 для внешнего вызова с кодом 4 - найти отметки выделенного текста (Coder::HighLight).

Added: parameter -2 of external call with code 4 - find selected text marks (Coder::HighLight).


Coder plugin v12.3

Спасибо!
если выделить всю отметку, то все работает.
но хотелось бы чтобы можно было просто стать курсором в любое место отметки и найти следующую или предыдущую отметку такого же цвета. я думал что -1 такое делать и должно, а так вообще не понял чем отличается -1 от 0 - работает вроде на 100% одинаково.
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 27 Jul 2010
Posts: 248

PostPosted: Sat Jan 11, 2014 9:07 pm    Post subject: Reply with quote

Drugmix
Вывод из экспериментов: если последующее правило ЦЕЛИКОМ захватывает захваченное предыдущим, то сработает второе. Я для "особо важных" правил что-нибудь типа предваряющего пробела в правило включаю: пробел не подсветится, а менее важные, если пробелы не захватывают, не смогут сожрать.
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 383

PostPosted: Sat Jan 11, 2014 9:49 pm    Post subject: Reply with quote

Serge Yolkin
не понял ничего: "последующее" - это то, которое выше, или то, которое ниже? (обычно в тексте "последующее = ниже", но тут же список так составлен, что более важные - вверху)
"второе" - это то которое "предыдущее" или "последующее"?
и примеры можно, пожалуйста?

У меня проблема в том, что есть 2 таких правила:
одно для раскрашивания текста в кавычках и оно составлено без якорей
Code:
0   `(")((?:[^"]*?(?:"")?)*?)("(?!"))` `\1=(2,#ff0000,0) \2=(3,#00ff00,0) \3=(3,#ff0000,0)`

а другое - правило для раскрашивания команд и оно составлено с якорями (привязками к концу и начала строки)
Code:
0   `^(.*::)?\s*(#ClipboardTimeout)(?:\s*,\s*|\s+)([^;,]+?)(\s+;.*)?$` `\1=(2,${STR},0) \2=(2,${OP},0) \3=(2,${VAR},#ff0000) \6=(3,${COMM},0)`


Если я напишу
Code:
"text"

то эта строка раскрасится 1-ым правилом, и если напишу
Code:
#ClipboardTimeout, text

то эта строка раскрасится 2-ым правилом.

Но если я напишу
Code:
#ClipboardTimeout, "text"

то эта строка окрасится так, будто 1-го правила вообще нет, потому что 1-ое правило задано без якорей, а это, видимо, понижает его приоритете так, что любое правило с якорями - легко перебьёт его.

А хочется, чтобы строку раскрасили оба правила: чтобы она сначала целиком окрасилась 2-ым правилом, а потом те её части, которые подпадают под 1-ое правило - окрасились бы и им.
Back to top
View user's profile Send private message
DrakonHaSh



Joined: 19 Mar 2011
Posts: 117

PostPosted: Sun Jan 12, 2014 9:23 am    Post subject: Reply with quote

понял: при ID = -1 необходимо напрямую в вызове указывать цвета:
Call("Coder::HighLight", 4, -1, 0, "#FFFF9B", 0)

а такой вызов
Call("Coder::HighLight", 4, -1, 0, 0, 0)
полностью эквивалентен такому:
Call("Coder::HighLight", 4, 0, 0, 0, 0)


можно ли добавить возможность поиска следующей/предыдущей отметки такого же цвета, на котором в данный момент стоит курсор ? (т.е. как при новой фиче с ID = -2, но без необходимости выделения всей отметки - а то как бы совсем лишнее действие получается необходимо, а если текст с отметкой длинный, то довольно таки неудобное)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page Previous  1, 2, 3 ... 27, 28, 29 ... 52, 53, 54  Next
Page 28 of 54

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group