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 : предложения по улучшению формата
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
DV



Joined: 16 Nov 2006
Posts: 854
Location: Kyiv, Ukraine

PostPosted: Tue Jul 20, 2010 6:57 am    Post subject: Файлы .coder : предложения по улучшению формата Reply with quote

Самый первый, поверхностный, взгляд на файлы .coder выявляет следующее (на примере файла cs.coder):
Code:
;----------------------------------------------;
;                 AutoComplete                 ;
;----------------------------------------------;

;====================================
;Set variables for "Blocks:" section.
;
;VAR "VALUE"
;====================================
Variables:
INDENT "  "


Что я хочу сказать: в файлах .coder уже есть механизм поддержки внутренних переменных.
Соответственно, представляется разумным использовать этот же механизм для секции HighLight, дабы не задавать цвет для каждого ключевого слова в отдельности, а использовать для этого внутренние переменные.
Например,
Code:

;----------------------------------------------;
;                  HighLight                   ;
;----------------------------------------------;
Variables:
clr_delims #C048E0
clr_words1 #0000FF
clr_words2 #008080
...
Delimiters:
1   0   0   0   " "
1   0   0   0   "   "
;1   0   clr_delims   0   =>
1   0   clr_delims   0   (
1   0   clr_delims   0   )
1   0   clr_delims   0   {
...
;Keywords
1   0   clr_words1   0   abstract
1   0   clr_words1   0   as
1   0   clr_words1   0   base
...
1   0   clr_words2   0   break
1   0   clr_words2   0   case
1   0   clr_words2   0   catch
...


Можно пойти ещё дальше, и задавать не только цвета, но и стиль полностью, например:
Code:

;----------------------------------------------;
;                  HighLight                   ;
;----------------------------------------------;
Variables:
stl_delims "1 0 #C048E0 0"
stl_words1 "1 0 #0000FF 0"
stl_words2 "1 0 #008080 0"


Любой из этих подходов на порядок упростил бы модификацию файлов подсветки.
Back to top
View user's profile Send private message
se7h



Joined: 28 Sep 2009
Posts: 767
Location: Minsk, Belarus

PostPosted: Tue Jul 20, 2010 7:27 am    Post subject: Reply with quote

когда редактируешь файлы подсветки, невольно возникают такие же мысли

двумя руками ЗА стили

более того, предлагаю хранить стили ОДНИМ ОТДЕЛЬНЫМ файлом, тогда редактирование и создание новых цветовых схем сразу для всех языков колоссально упрощается и любой сможет сделать свою схему без особого напряжения и поделиться ей с другими


Last edited by se7h on Tue Jul 20, 2010 8:10 am; edited 1 time in total
Back to top
View user's profile Send private message
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Tue Jul 20, 2010 8:00 am    Post subject: Reply with quote

Уже высказывал это предложение когда-то.
Плюс, вот такая конструкция
Code:
Words:
1   0   #3333CC   0   bool
1   0   #3333CC   0   char
1   0   #3333CC   0   wchar_t
1   0   #3333CC   0   void

прямо просится в такую
Code:

Styles:
Keyword 1   0   #3333CC   0

Words:
Keyword bool char wchar_t void
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2653
Location: Киев, Русь

PostPosted: Tue Jul 20, 2010 8:41 am    Post subject: Reply with quote

Согласен с коллегами Very Happy

Но представлю свой вариант:
Code:
Variables:
fnt_0       = 0
fnt_cn      = Cоurier New
...
flg_0       = 0
flg_bi      = 4
...
clr_0       = 0
clr_cyan    = #0000FF
clr_sea     = #008080
clr_red     = #FF0000
...


Styles:
;==============================================
;Style          Flag    Font    Color    Color
;name                   style   text     bkgrnd
;==============================================
wrd_cmdbase =   flg_0   fnt_0   clr_cyan clr_0
wrd_cmdadd  =   flg_0   fnt_0   clr_sea  clr_0
...


Words:
;==================================
; Word          Style
;==================================
abstract        wrd_cmdbase
as              wrd_cmdbase
...
break           wrd_cmdadd
case            wrd_cmdadd
...

Можно не затачиваться в наименованиях стилей на цвета, как например, clr_cyan, можно оставить цифры, просто в комментах ставить описание, например:
clr_1 = #0000FF ;cyan
это даст большую динамику, т.е. каждый для себя прописав стили потом не будет их менять, и не будет постоянно менять файлы конфигурации...

Основные принципы:
1. Variables и Styles в отдельных файлах.
2. Формировать Styles на основе Variables.
3. Для каждого Word указывать ОДИН стиль, этого вполне достаточно.
4. Ключевые слова и команды в секции Words должны идти впереди и в алфавитном порядке.
- Впереди, т.к. при подсветке мы анализируем слова, т.е. нашли слово, проще в списке будет его найти и применить стиль; это будет работать быстрее всего, т.к. в списках значение вытягивается по указателю.
- По алфавиту - желательно для оптимизации, но если будут использоваться списки, то необязательно.

Умоляю! Сделайте переменные, в частности INDENT, где-нибудь в отдельном файле! После каждой смены формата запариваешься лазить и исправлять 2 пробела на символ табуляции. И ещё можно было бы брать разделитель из настроек, - это было само правильно. Например INDENT = $Settings брало бы разделитель из настроек.
Back to top
View user's profile Send private message Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2653
Location: Киев, Русь

PostPosted: Tue Jul 20, 2010 8:46 am    Post subject: Reply with quote

Fr0sT
Тогда так:
Code:
Words:
wrd_cmdbase: bool, char, wchar_t, void
/мы уже это обсуждали - "оно" может состоять из 2-й слов/
Back to top
View user's profile Send private message Visit poster's website
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Tue Jul 20, 2010 10:52 am    Post subject: Reply with quote

VladSh, а, точно, было. Ну да, разделитель уже сделать как удобнее, хоть ";", хоть "|".

И да, определения стилей, indent и прочего надо вынести в один общий файл. А то либо заколебаешься менять все подсветки, либо будут разношёрстные. В то же время, оставить возможность указать свои настройки для отдельного файла (если есть, они будут накатываться на общие). В таком случае, и время считывания файлов сократится намного, и редактировать удобнее будет.
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2653
Location: Киев, Русь

PostPosted: Tue Jul 20, 2010 1:15 pm    Post subject: Reply with quote

Fr0sT wrote:
разделитель уже сделать как удобнее, хоть ";", хоть "|".

Просто сейчас ";" - это комментарий.
Back to top
View user's profile Send private message Visit poster's website
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Tue Jul 20, 2010 1:51 pm    Post subject: Reply with quote

Quote:
Просто сейчас ";" - это комментарий.

Ну и что? Комментарий - когда он первым символом идёт, а если в середине строки - то очень даже разделитель
Back to top
View user's profile Send private message
se7h



Joined: 28 Sep 2009
Posts: 767
Location: Minsk, Belarus

PostPosted: Tue Jul 20, 2010 2:36 pm    Post subject: Reply with quote

Двоеточие логичней
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2653
Location: Киев, Русь

PostPosted: Tue Jul 20, 2010 2:58 pm    Post subject: Reply with quote

Fr0sT wrote:
Комментарий - когда он первым символом идёт, а если в середине строки - то очень даже разделитель
А когда я в конце строки коммент захотел поставить? Smile
Лучше принять какой-нить стандартный, который лучше видно... например //.
Back to top
View user's profile Send private message Visit poster's website
FeyFre



Joined: 07 Aug 2007
Posts: 2056
Location: Vinnitsa, Ukraine

PostPosted: Tue Jul 20, 2010 3:13 pm    Post subject: Reply with quote

VladSh, se7h, Fr0sT, хватит придумывать новый язык. Если Вам так нужно расширить конфигурационность плагина, то просите Инструткора не доделывать синтаксис конфига, а использовать один из пригодных для этого интерпретируемых/скриптовых языков, которых Вам с головой хватит сразу, и на всегда. Гибкости уйма. И ни вы, ни Инструктор не будете больше гадать как бы лучше правило в конфиг внести, и сразу можно будет позаботится о функционале.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
se7h



Joined: 28 Sep 2009
Posts: 767
Location: Minsk, Belarus

PostPosted: Tue Jul 20, 2010 3:32 pm    Post subject: Reply with quote

FeyFre wrote:
VladSh, se7h, Fr0sT, хватит придумывать новый язык. Если Вам так нужно расширить конфигурационность плагина, то просите Инструткора не доделывать синтаксис конфига, а использовать один из пригодных для этого интерпретируемых/скриптовых языков, которых Вам с головой хватит сразу, и на всегда. Гибкости уйма. И ни вы, ни Инструктор не будете больше гадать как бы лучше правило в конфиг внести, и сразу можно будет позаботится о функционале.


мы предлагаем доработать существующий, а Вы заново создать новый - чувствуете разницу?
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2056
Location: Vinnitsa, Ukraine

PostPosted: Tue Jul 20, 2010 3:48 pm    Post subject: Reply with quote

Quote:
мы предлагаем доработать существующий, а Вы заново создать новый - чувствуете разницу?
Вы предлагаете переизобретать велосипед, а я предлагаю использовать изобретенный 20 лет назад(5,10,15,25,30,35,40 нужной подчеркнуть). Да, разницу я вижу, а Вы?
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
se7h



Joined: 28 Sep 2009
Posts: 767
Location: Minsk, Belarus

PostPosted: Tue Jul 20, 2010 4:00 pm    Post subject: Reply with quote

FeyFre wrote:
Quote:
мы предлагаем доработать существующий, а Вы заново создать новый - чувствуете разницу?
Вы предлагаете переизобретать велосипед, а я предлагаю использовать изобретенный 20 лет назад(5,10,15,25,30,35,40 нужной подчеркнуть). Да, разницу я вижу, а Вы?


а что проще Александру, как Вы думаете??
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2056
Location: Vinnitsa, Ukraine

PostPosted: Tue Jul 20, 2010 4:44 pm    Post subject: Reply with quote

se7h
Не буду предполагать в принципе, ибо в принципе не лазил в исходники Coder-а, рылся только в AutoComplete и HighLight и то точно не в частях чтения конфигурации.
И тем не менее в SpellCheck-е я не занимался переизобретением велосипеда, а использовал готовый язык LUA для задания белых списков, что заняло у меня 10 минут в том числе скачивание исходников, подключения к постройке, дописывание одной вспомогательной функции(для того что-бы помирить Windows со стандартами C) и расширения языка на предметную область. Собственно реализация Scripts у Инструктора заняла не на много больше времени(если не учитывать капризы COM).
Вы предлагаете расширить конфигурацию одним путем, я - вторым. Чей лучше - по сути не важно. Главное - развитие функционала изза этого не притормозить.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page 1, 2, 3  Next
Page 1 of 3

 
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