yozhik

|
Posted: Fri May 24, 2024 20:31 Post subject: |
|
|
Orion9 wrote: | Не являюсь специалистом по написанию плагинов и детект-строк к ним. Это надо было в справку лезть. |
Не надо лезть, конспект лучше возьмите
 Конспект по детект-строке и не только Code: | MIME-Version: 1.0
Content-Type: application/octet-stream; name="TC.Extra.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="TC.Extra.7z"
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
ABQKAQAAM503ipbVARUGAQAgAAAAAAA=
|
Лучше когда он под рукой, т.к. нередко бывает, что нужно что-то подправить в ДС. Ну, и вообще ясности больше, когда хоть раз прочтёшь всё подряд.
olegvsk wrote: | Так построен исходный компонент |
Ага, я так же приблизительно и понял, что мы тут имеем дело не с чистым белым листом, а с уже готовой системой, логика которой хоть и несколько непривычна, но внутренне не противоречива — вот это то и главное, что в ней самой нет противоречий, а это значит что перекраивать её — дело долгое и часто неблагодарное, поломаешь больше, чем наладишь. Тут два пути: либо отказаться от неё и строить своё с нуля, либо вникнуть в неё и попытаться подстроиться. 2й тип пути тоже интересный, потому что часто оказывается, что новый ракурс не хуже, чем был до этого ))
Добро, я попытаюсь переформулировать пожелания Orion9, как я их понял (если что, поправьте, пожалуйста). Но придётся излагать постепенно, блоками, чтобы не валить в кучу. Начнём со шрифтов. Только со шрифтов (т.к. с цветом дела более разветвлённые).
Для примера посмотрим как устроен AkelPad. Схема в AkelPad иерархическая, где умолчания задаются верхним уровнем:- Первый уровень (он же верхний) — настройки шрифта редактора: гарнитура, размер, стиль — глобальные, распространяются на все нижние уровни.
- Второй уровень — настройки тем: три переменные ${HighLight_FontStyle} ${HighLight_FontSize} ${HighLight_FaceName} локальные, но действие распространяется также на всё подмножество нижнего уровня (точнее «полуглобальные»: вниз да, вверх нет). Если в перем. 2го уровня пусто, или ноль, то значение заимствуется из верхнего уровня.
- Третий уровень — настройки кодеров (хайлайтеров): опять те же перем. ${HighLight_FontStyle} ${HighLight_FontSize} ${HighLight_FaceName}, чисто локальные, распространяются только на данный кодер. Если в перем. 3го уровня пусто, то значение заимствуется из верхнего уровня, т.е. из 2го, а если пусто во 2м, то из 1го.
- Исходное состояние настроек (т.с. из коробки):
- На 1м уровне прописаны начальные гарнитура (Courier New), размер (10), стиль.
- На 2м и 3м пусто, т.е. всё наследуется из 1го.
- Пользователь настраивает 1й уровень, глобально, а затем, спускаясь вниз, корректирует настройки на 2м и 3м: если хочет, то может это сделать отдельно для каждой темы, а затем и отдельно для каждого хайлайтера.
- «Философия» схемы: более удобна для того, чтобы пользователь использовал сразу несколько тем, регулярно переключаясь между ними по настроению. Исходное множество тем для него — простор для переключений.
А как в плагине?- Первый уровень: настройки глобальные, распространяются на всё подмножество нижнего уровня. Этот уровень нередактируемый, как я понял — значения прописаны в коде плагина.
- Второй уровень: настройки тем. У каждой темы свои настройки, но если удалить один из параметров (это делается только вручную, в Тема.json, просто удаляется всё, что в кавычках: "Consolas" -> "" или "9" -> ""), то он заимствуется из верхнего уровня.
- Третий уровень: настройки хайлайтеров. Своих настроек шрифта здесь нет, всё заимствуется из верхнего уровня.
- Исходное состояние настроек:
- Уровень 1й есть, но он нередактируемый.
- Редактирование начинается со 2го уровня. У каждой темы свои настройки шрифта, т.е. фактически 2й уровень становится 1ым, но отсчёт ведётся как-бы не от одной вершины, а от нескольких вершин.
- Пользователь просматривает все темы, выбирает себе подходящую базовую и на её основе строит свою собственную. Если пользователь хочет поменять тему (вершину), то ему нужно повторить процесс настроек сначала, как в предыдущей теме, отталкиваясь уже от другой вершины.
- «Философия» схемы: более удобна для того, чтобы пользователь настроил себе одну тему и далее пользовался ей регулярно, по преимуществу. Исходное множество тем для него — простор для единоразового выбора одной, своей постоянной.
Пожелание Orion9 в том, чтобы сделать так, как в AkelPad. Т.е. поменять «философию». Если olegvsk согласен менять «философию», то в CodeViewer потребуется добавить:- Сделать 1й уровень редактируемым:
- Либо расположить его в CodeViewer.ini, но тогда придётся делать для него отдельную вкладку в диалоге Settings, потому что настроек у шрифта много.
- Либо расположить его в Default.json и использовать имеющийся Theme-редактор, но тогда, учитывая, что потом в рамках изменённой «философии» понадобится корректировать ещё и работу с цветом, придётся делать два дефолта (две вершины): Default_Light.json и Default_Dark.json.
- Отладить обработку нулевых значений в шрифтовых ключах тем (0 для числовых и <none> для строковых), чтобы работала схема заимствования из верхнего редактируемого уровня.
- Добавить в редактор тем возможность устанавливать нулевые значения: <none> в выпадающих списках гарнитур, и 0 в числовых переключателях.
- Исходное (из коробки) состояние настроек тогда имеет смысл сделать таким:
- На 1м уровне (CodeViewer.ini или Default_*.json) прописаны начальные параметры: гарнитура, размер, стиль.
- На 2м уровне во всех *.json параметры шрифтовых ключей по нулям.
Ну, как-то так, если пытаться конструктивно. Время только отнимает: у одного на написание, у остальных на чтение. Если появится желание двигаться в этом направлении, то можно и дальше так расписывать, с цветом (представление есть). А если не появится, то пусть этот пост станет памятником конструктивизму  _________________ Amo ergo sum |
|