| View previous topic :: View next topic |
| Author |
Message |
DV
Joined: 16 Nov 2006 Posts: 724 Location: Kyiv, Ukraine
|
Posted: Tue Jul 20, 2010 6:57 am Post subject: Файлы .coder : предложения по улучшению формата |
|
|
Самый первый, поверхностный, взгляд на файлы .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 |
|
 |
se7h
Joined: 28 Sep 2009 Posts: 764 Location: Minsk, Belarus
|
Posted: Tue Jul 20, 2010 7:27 am Post subject: |
|
|
когда редактируешь файлы подсветки, невольно возникают такие же мысли
двумя руками ЗА стили
более того, предлагаю хранить стили ОДНИМ ОТДЕЛЬНЫМ файлом, тогда редактирование и создание новых цветовых схем сразу для всех языков колоссально упрощается и любой сможет сделать свою схему без особого напряжения и поделиться ей с другими
Last edited by se7h on Tue Jul 20, 2010 8:10 am; edited 1 time in total |
|
| Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 850
|
Posted: Tue Jul 20, 2010 8:00 am Post subject: |
|
|
Уже высказывал это предложение когда-то.
Плюс, вот такая конструкция
| 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 |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Tue Jul 20, 2010 8:41 am Post subject: |
|
|
Согласен с коллегами
Но представлю свой вариант:
| 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 |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Tue Jul 20, 2010 8:46 am Post subject: |
|
|
Fr0sT
Тогда так:
| Code: | Words:
wrd_cmdbase: bool, char, wchar_t, void | /мы уже это обсуждали - "оно" может состоять из 2-й слов/ |
|
| Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 850
|
Posted: Tue Jul 20, 2010 10:52 am Post subject: |
|
|
VladSh, а, точно, было. Ну да, разделитель уже сделать как удобнее, хоть ";", хоть "|".
И да, определения стилей, indent и прочего надо вынести в один общий файл. А то либо заколебаешься менять все подсветки, либо будут разношёрстные. В то же время, оставить возможность указать свои настройки для отдельного файла (если есть, они будут накатываться на общие). В таком случае, и время считывания файлов сократится намного, и редактировать удобнее будет. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Tue Jul 20, 2010 1:15 pm Post subject: |
|
|
| Fr0sT wrote: | | разделитель уже сделать как удобнее, хоть ";", хоть "|". |
Просто сейчас ";" - это комментарий. |
|
| Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 850
|
Posted: Tue Jul 20, 2010 1:51 pm Post subject: |
|
|
| Quote: | | Просто сейчас ";" - это комментарий. |
Ну и что? Комментарий - когда он первым символом идёт, а если в середине строки - то очень даже разделитель |
|
| Back to top |
|
 |
se7h
Joined: 28 Sep 2009 Posts: 764 Location: Minsk, Belarus
|
Posted: Tue Jul 20, 2010 2:36 pm Post subject: |
|
|
| Двоеточие логичней |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Киев, Русь
|
Posted: Tue Jul 20, 2010 2:58 pm Post subject: |
|
|
| Fr0sT wrote: | | Комментарий - когда он первым символом идёт, а если в середине строки - то очень даже разделитель | А когда я в конце строки коммент захотел поставить?
Лучше принять какой-нить стандартный, который лучше видно... например //. |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1892 Location: Vinnitsa, Ukraine
|
Posted: Tue Jul 20, 2010 3:13 pm Post subject: |
|
|
| VladSh, se7h, Fr0sT, хватит придумывать новый язык. Если Вам так нужно расширить конфигурационность плагина, то просите Инструткора не доделывать синтаксис конфига, а использовать один из пригодных для этого интерпретируемых/скриптовых языков, которых Вам с головой хватит сразу, и на всегда. Гибкости уйма. И ни вы, ни Инструктор не будете больше гадать как бы лучше правило в конфиг внести, и сразу можно будет позаботится о функционале. |
|
| Back to top |
|
 |
se7h
Joined: 28 Sep 2009 Posts: 764 Location: Minsk, Belarus
|
Posted: Tue Jul 20, 2010 3:32 pm Post subject: |
|
|
| FeyFre wrote: | | VladSh, se7h, Fr0sT, хватит придумывать новый язык. Если Вам так нужно расширить конфигурационность плагина, то просите Инструткора не доделывать синтаксис конфига, а использовать один из пригодных для этого интерпретируемых/скриптовых языков, которых Вам с головой хватит сразу, и на всегда. Гибкости уйма. И ни вы, ни Инструктор не будете больше гадать как бы лучше правило в конфиг внести, и сразу можно будет позаботится о функционале. |
мы предлагаем доработать существующий, а Вы заново создать новый - чувствуете разницу? |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1892 Location: Vinnitsa, Ukraine
|
Posted: Tue Jul 20, 2010 3:48 pm Post subject: |
|
|
| Quote: | | мы предлагаем доработать существующий, а Вы заново создать новый - чувствуете разницу? | Вы предлагаете переизобретать велосипед, а я предлагаю использовать изобретенный 20 лет назад(5,10,15,25,30,35,40 нужной подчеркнуть). Да, разницу я вижу, а Вы? |
|
| Back to top |
|
 |
se7h
Joined: 28 Sep 2009 Posts: 764 Location: Minsk, Belarus
|
Posted: Tue Jul 20, 2010 4:00 pm Post subject: |
|
|
| FeyFre wrote: | | Quote: | | мы предлагаем доработать существующий, а Вы заново создать новый - чувствуете разницу? | Вы предлагаете переизобретать велосипед, а я предлагаю использовать изобретенный 20 лет назад(5,10,15,25,30,35,40 нужной подчеркнуть). Да, разницу я вижу, а Вы? |
а что проще Александру, как Вы думаете?? |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1892 Location: Vinnitsa, Ukraine
|
Posted: Tue Jul 20, 2010 4:44 pm Post subject: |
|
|
se7h
Не буду предполагать в принципе, ибо в принципе не лазил в исходники Coder-а, рылся только в AutoComplete и HighLight и то точно не в частях чтения конфигурации.
И тем не менее в SpellCheck-е я не занимался переизобретением велосипеда, а использовал готовый язык LUA для задания белых списков, что заняло у меня 10 минут в том числе скачивание исходников, подключения к постройке, дописывание одной вспомогательной функции(для того что-бы помирить Windows со стандартами C) и расширения языка на предметную область. Собственно реализация Scripts у Инструктора заняла не на много больше времени(если не учитывать капризы COM).
Вы предлагаете расширить конфигурацию одним путем, я - вторым. Чей лучше - по сути не важно. Главное - развитие функционала изза этого не притормозить. |
|
| Back to top |
|
 |
|
|
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
|
Powered by phpBB © 2001, 2005 phpBB Group
|