Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > SynUniHighlighter и SynEdit > Хранение произвольных параметров в подсветке |
Автор: Sep. 15.7.2006, 13:17 |
Столкнулся с проблемой хранения различных свойств разных для каждого языка. В каком то смысле они тоже имеют отношение к подсветке и хотелось бы их хранить прямо в файлах подсветки и иметь доступ примерно как сейчас к полям SynUni.Info. Соответственно в редакторе тогда надо бы добавить возможность изменения этих значений. Пока хотелось бы хранить такие параметры: CommentBlockStart, CommentBlockMid, CommentBlockEnd тремя строковыми параметрами можно будет охватить все типы коментариев от простого // в начале каждой строки до блокового /* */ CodeBlockStart, CodeBlockEnd начало и конец блоков кода ({}, begin end;) для определения видимости переменных И еще регексп строки для определения имен переменных, имен функций/процедур, классов и их методов. Тогда надо будет видимо и еще и символ отделения класса от метода ('.', '->') Регексп строка для определения имени подключаемых файлов ( require(lib.php) ) В общем можно было бы стандартизировать такую систему и мы могли бы своих программах использовать универсальные фишки типа Comment/Uncomment или CodeExplorer, FunctionList на базе текущей подсветки. Конечно можно символы коментария и из атрибутов подсветуи прочитать, но тогда надо имена атрибутов стандартизировать. Кто что думает по этому поводу? |
Автор: Vitalik 23.7.2006, 20:46 |
Сделал в новой версии компонента (2.0b4) возможность хранения произвольных параметров в подсветке, вот только как обозвать это свойство?.. ![]() Я пока что назвал его Options, но что-то такое название меня смущает ![]() Есть какие-нибудь другие предложения? |
Автор: navykeds 23.7.2006, 21:42 |
Custom |
Автор: Sep. 24.7.2006, 09:30 |
Да все равно как обозвать, главное чтобы работало =) Но options это наверно немного не то, это же данные. Может CustomData, UserData или просто Data. Но это не принципиально... Давайте лучше имена строк в этих данных стандартизируем. Потому как охота сразу в syn0.6 сделать эту фишку =) Предлагаю, пока: CommentBlockStart, CommentBlockMid, CommentBlockEnd (коментарий блоком), CommentLine (однострочный кометарий) CodeBlockStart, CodeBlockEnd (begin,end,{,} - начало и конец блока кода для определения видимости переменных) ProcedureDetect, FunctionDetect, VariableDetect, IncludeDetect -регексповые строки для детектирования типов данных Если никто лучше не подскажет, то именно так и сделаю Для регексповых строк имя должно находиться в Matches[2] (вторых скобках) а дополнительная часть (параметры функции, или часть имени переменной которая служит индексом массива) в Matches[3] например для переменной php : ([^\$])(\$[a-z_]+[0-9a-z_]+)(\[[^\]\$]+\])? мне кажется так удобно будет и, главное что эта система уже работает |
Автор: Vitalik 24.7.2006, 13:15 | ||
Далеко не все равно.. Если только со временем выяснится, что оно "режет глаз", то придется его менять, чего очень не хотелось. Поэтому желательно заранее выяснить все возможные варианты и выбрать действительно достойный. Согласен.. Я его просто выбрал, так как хотелось бы, чтобы название этого свойства было в множественном числе, а отдельные пункты - в единственном. Options - Option, Customs - Custom... Хотя в последнем случае Customs - это немножко не то.. ![]() Гм... Так пойдет?..
Не очень понятно назначение этого свойства, поясни, пожалуйста, и, если не сложно, приведи пример ![]() Вот только я думаю, что в версиях UniHighlighter 2.0 этого пока лучше не добавлять.. Так как это все таки весомое отличие от предыдущих версий 2.0 (и среди объектной структуры и в формате файла)... Возможно я уже сейчас начну параллельную работу над новой версией 2.2 с новыми возможностями.. Не забывая при этом про стабилизацию версии 2.0 ![]() |
Автор: navykeds 24.7.2006, 14:24 | ||||
Вполне. |
Автор: Sep. 24.7.2006, 18:59 | ||||||
конечно.
а когда планируется бетка? т.е. можно смело 0.6 релизить и не ждать? =) а то я думал что уже готово просто...
Ну так чтоб на примере, то пожалуста =) В syn0.5 Option->Code->Comment Block mid char . Он добавляется в начало каждой строки блока. Ну это я так придумал, чтобы охватить все возможные типы комметариев |
Автор: Sep. 27.7.2006, 12:24 | ||
Круто! Небольшой хелп: значения лежат в SynUni.CustomData.Values['CommentBlockStart'] и т.д. также можно делать SynUni.CustomData.IndexOfName
ну типа того |
Автор: Sagara 2.8.2006, 15:51 | ||
Я там понял, это данные для "третьих" инструментов (т.е. не для подсветки), поэтому предлагаю назвать ToolsSettings (или ToolsParameters). |