View previous topic :: View next topic |
Author |
Message |
yozhik
Joined: 04 May 2014 Posts: 219 Location: Электросталь
|
(Separately) 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 |
|
Back to top |
|
|
olegvsk
Joined: 17 Dec 2020 Posts: 93
|
(Separately) Posted: Fri May 24, 2024 21:31 Post subject: |
|
|
yozhik
Мы имеем концепцию "Все настройки в одном файле (json)", вполне понятную и близкую и мне и, думаю, большинству пользователей. Аналог тех же стилей VCL, LookAndFeel в Java и тем несчётного числа IDE и редакторов. Проблема установки шрифта мне кажется надуманной, поскольку шрифт устанавливается для темы за несколько секунд.
Вот именно этого мне и не хватало в существующих средствах просмотра для TC - наглядной настройки тем и легкого назначения этих тем разным типам файлов (помимо простого назначения файловых ассоциаций, без копания в инишниках). Соответсвенно, плагин написан прежде всего по моим представлениям, как это должно работать, и менять что-то в архитектуре для меня смысла нет. Наверное, многие предпочтут другой подход, но, как заметил наш остроумный коллега выше, привычные альтернативы - есть. Так что продолжу дорабатывать плагин в сложившемся виде, конструктивная критика по-прежнему приветствуется. |
|
Back to top |
|
|
yozhik
Joined: 04 May 2014 Posts: 219 Location: Электросталь
|
(Separately) Posted: Fri May 24, 2024 23:36 Post subject: |
|
|
olegvsk
Ну, вот, надеюсь, точки над «и» мы расставили
Пара наблюдений:
Косячок в Theme-редакторе: Editor -> Common backgroung
Во время настройки цвета в Theme-редакторе: начинаю менять цвет -> активируется кнопка Save -> чтобы сохранить последние текущие изменения, нажимаю Save; а чтобы сбросить последние текущие изменения, закрываю редактор по Close или Esc. Может быть удобнее было бы добавить маленькую кнопку сброса, которая делала бы то же самое без закрытия редактора: сбрасывала изменения к состоянию до активации кнопки Save. Как-то так:
Т.е. если Save нажал, то уже не сбросишь, а если ещё не нажал, то можно. Это было бы удобнее в случае, когда настраиваешь элементы друг за другом по очереди, чтобы после каждой неудачной попытки не переоткрывать редактор.
В Theme-редакторе, в выпадающих списках цветов сейчас не понятно значение пункта None. Если его выбрать, то элемент окрашивается в чёрный цвет:
Но чёрный — это не None. Чёрный — это отсутствие света, но не цвета. Не знаю что тут предложить. Для чего вообще замышлялся этот None?
Далее, в Editor -> Common Background (далее CB) None вроде бы оправдан, но если открыть этот список и снова выбрать тот же None, то все зависимые от Common элементы *Background зальются чёрным с именем None. Может было бы очевидней, если бы вместо None в CB значилось <mixed>. Т.е. если во всех зависимых от CB элементах цвет одинаковый, то в CB отображается этот цвет, а если хоть в одном зависимом элементе другой цвет, то в CB — <mixed>. _________________ Amo ergo sum |
|
Back to top |
|
|
olegvsk
Joined: 17 Dec 2020 Posts: 93
|
(Separately) Posted: Sat May 25, 2024 00:49 Post subject: |
|
|
yozhik wrote: | Косячок в Theme-редакторе: Editor -> Common backgroung | Поправил.
yozhik wrote: | добавить маленькую кнопку сброса | Сделаю.
yozhik wrote: | не понятно значение пункта None | Для разных настроек он работает по-разному. Например, для фона он даёт чёрный цвет, а для foreground выделения - прозрачность (видна расцветка синтаксиса).
yozhik wrote: | Common Background | Это не настройка, а просто "команда", заполняющая нужным значением цвета соответствующие настройки. <mixed> можно показать, согласен. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Sat May 25, 2024 18:43 Post subject: |
|
|
yozhik
После такого разбора философий как-то и шутить больше не хочется
Вы правильно выразились: ваш пост - памятник коструктивизму. И разумеется, мы все ждем продолжения! ) Мне, например, интересен разбор хайлайтеров и самой темы подсветки, поскольку я не стал бы сводить проблему "на нет", говоря, что эта настройка занимает несколько секунд. Может, для знающего человека, который постоянно с этим работает и имеет большой опыт, это и выглядит довольно просто. Но новичку или обычному пользователю придётся попробовать и пощупать каждый параметр в отдельности, чтобы посмотреть, где и как отражается его изменение; побаловаться с цветами, чтобы найти для себя приемлемые; сохранить и еще потом не раз откатить всю тему, применив ее на других файлах и т.д и т.п. Какие же это секунды? Тут часами можно возиться. И именно это я имел в виду, когда говорил о танцах.
А что касается философии глобального шрифта, то она тут явно напрашивается, хотя и не является большой проблемой в действительности. Скорее просто "неудобством" при переключении на другие темы.
Опция Open any files - безусловно облегчила жизнь, но всё-равно считаю, что она должа быть включена по-умолчанию. Или нужна детект-строка (за шпору спасибо).
Кроме того, предложенной вами кнопки отмены мало - здесь нужна полноценная и широкоизвестная система дефолтных настроек с пометками измененных параметров и возможности отката каждого из них по отдельности. Почему автор компонента сразу это не сделал - остается только гадать, наверное, ему просто было лень. А вот автору плагина можно сказать только спасибо, что вообще решился взяться за это дело. И спешить тут не нужно. Если проект будет постоянно развиваться, то, думаю, со временем мало кому будет интересно Cuda уехал текст.) |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Sun May 26, 2024 11:54 Post subject: |
|
|
olegvsk
Поймал при переключении между кодировками UTF8 и ANSI на простом ini-файле:
Quote: | No mapping for the Unicode character exists in the target multi-byte code page. |
yozhik
Я как-то вчера размыто написал. В принципе, интересен ваш взгляд на настройку темы в плагине. Можно ли здесь провести такое же отличие в философиях с AkelPad (необязательно в подробных деталях). Правильно ли сейчас всё сделано, на ваш взгляд, в плагине в плане настройки тем?
Я, например, делаю тему на ini-файл. Секция - чёрный жирный, ключ - тёмно-синий, значение - чёрный, символ -красный, комментарий - зелёный. Остальное оставляю пока как есть. Подобный вариант мне более-менее нравится: для первой пробы сойдет. Тема смотрится неплохо на .inf, .reg и .bat файлах (хотя в AkelPad .bat смотрится, конечно, получше), но на .vbs уже есть проблемы, а про akh и говорить не приходится. Я так понимаю, здесь есть два варианта: либо дальше файнтюнить основную тему, что как кажется, занятие бесперпективное, либо для каждого синтаксиса делать свою отдельную тему, что является процессом более творческим и интересным. В общем, здесь всё упирается во время. Но, думаю, заняться этим можно. По крайней мере, попробовать. |
|
Back to top |
|
|
olegvsk
Joined: 17 Dec 2020 Posts: 93
|
(Separately) Posted: Sun May 26, 2024 14:45 Post subject: |
|
|
Orion9 wrote: | No mapping for the Unicode character exists in the target multi-byte code page. |
Обычное сообщение при невозможности показать текст (точнее, набор байт) в требуемой кодировке. Вы пытаетесь однобайтный ANSI перевести на двухбайтный UTF. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Sun May 26, 2024 18:16 Post subject: |
|
|
olegvsk
Quote: | Обычное сообщение при невозможности показать текст (точнее, набор байт) в требуемой кодировке. |
Ну вообще-то, этого сообщения не должно быть и кодировка должна переключаться в любом случае, как это сделано в других просмотрщиках и редакторах.
Quote: | Вы пытаетесь однобайтный ANSI перевести на двухбайтный UTF. |
Мне следовало сразу это написать: плагин открыл обычный ini-файл как UTF-8 со всеми вытекающими квадратиками вместо русских символов. Я переключил его в ANSI - все сработало. Мне стало интересно, что могло привести к тому, что файл открылся как UTF-8, поэтому я снова попытался его переключить в UTF-8 и словил вышеуказанную ошибку. Окно плагина при этом стало пустым.
Еще заметил, что переключение в UTF-16 происходит гораздо медленнее, чем в Cuda и AkelPad. Но вы вроде собирались что-то исправить, может это поможет. |
|
Back to top |
|
|
olegvsk
Joined: 17 Dec 2020 Posts: 93
|
(Separately) Posted: Sun May 26, 2024 19:16 Post subject: |
|
|
Orion9 wrote: | плагин открыл обычный ini-файл как UTF-8 со всеми вытекающими квадратиками вместо русских символов | По идее, должен был сразу показать ошибку. Не поделитесь файлом?
Orion9 wrote: | Ну вообще-то, этого сообщения не должно быть и кодировка должна переключаться в любом случае, как это сделано в других просмотрщиках и редакторах. | Это если в других редакторах свои таблицы перекодировки. Здесь используется MultiByteToWideChar от Windows, которая просто возвращает пустой текст. Впрочем, пока ничего не утверждаю, с кодировками тут ещё надо разбираться. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Mon May 27, 2024 00:28 Post subject: |
|
|
Quote: | По идее, должен был сразу показать ошибку. Не поделитесь файлом? |
Кажется, разобрался в чём проблема. Не совсем обычный это был ini-файл. В нём был редирект секций из wincmd.ini, связанных с историей панелей, командной строки и т.п. Не так давно я переименовывал ряд файлов, содержащих юникодные символы в именах, и в секции [RenameSearchFind] осталась история замены символов. ТС их хранит примерно в таком виде "п»їв§ё", т.е. в данном случае это "знак солидуса" ))
https://symbl.cc/ru/29F8/
Если эти символы убрать из истории (а уменя их всего было два), то файл определяется нормально как ANSI. По идее, конечно, не должно быть такой реакции на пару символов и, разумеется, должно быть обратное переключение кодировки "туда-сюда" в случае неудачного срабатывания. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Mon May 27, 2024 20:50 Post subject: |
|
|
При первом ознакомлении с json-файлами становится понятно, чего не хватает плагину и почему процесс редактирования главной темы выглядит таким сложным, путаным и бесперспективным занятием. Отсутствие промежуточного звена в виде прямого редактирования синтаксисов усложняет настройку хайлайтеров в контексте той или иной темы. Изменение главной темы хорошо сказывается лишь на некоторых хайлайтерах, но хуже смотрится на других, а третьим - вообще не подходит.
Более того, в контексте определенного хайлайтера многие параметры основной темы становятся просто избыточными и декоративными, поскольку не имеют никакого отношения к этому хайлайтеру. Самый яркий пример - обычный ini-файл, файл синтаксиса которого содержит всего 5 правил подсветки (SubRules 4, KeyList 1). Но чтобы изменить эти правила, нужно открыть всю тему и при этом увидеть кучу нерелевантных и сбивающих с толку параметров, типа AssemblerComment, AssemblerReservedWord, CharacterForeground, DirectiveForeground и т.д.
Поскольку в окне редактирования темы не предусмотрен фильтр по правилам конкретного синтаксиса, процесс создания отдельной темы для него не представляется такой уж лёгкой и простой задачей. Сейчас все это выглядит довольно неудобно и ненаглядно. Вероятно, здесь нужна отдельная прослойка в виде редактора темы в контексте определенного хайлайтера на основе выбранной (эталонной) темы. Все-равно одна (эталонная) тема не может подойти всем хайлайтерам, а следовательно их так и так придется создавать кастомно, чтобы полностью удовлетворить все потребности. |
|
Back to top |
|
|
olegvsk
Joined: 17 Dec 2020 Posts: 93
|
(Separately) Posted: Tue May 28, 2024 03:07 Post subject: |
|
|
Orion9 wrote: | Отсутствие промежуточного звена в виде прямого редактирования синтаксисов усложняет настройку хайлайтеров | Была идея сделать и редактор синтаксисов, но уж больно объёмная задача. Всё же речь о простом вьюере.
Orion9 wrote: | нужна отдельная прослойка в виде редактора темы в контексте определенного хайлайтера | Нет. Либо темы универсальны, либо каждую привязываем к синтаксису и настраиваем их вместе, это два разных подхода. Если их смешивать, только прибавится путаницы. |
|
Back to top |
|
|
Orion9
Joined: 01 Jan 2024 Posts: 300
|
(Separately) Posted: Tue May 28, 2024 17:40 Post subject: |
|
|
olegvsk wrote: | только прибавится путаницы. |
Путаница и так уже есть. Одну тему на все синтаксисы натянуть не получается, как выяснилось. При этом явным образом нигде не указывается, что нужно создавать дополнительные темы, чтобы добиться желаемого результата. Хуже всего, нет никаких удобств для быстрого и эффективного создания таких тем, как и нет никакой документации по json-файлам. И вообще, в плагине нет никакой справки, даже простого readme файла, что выглядит довольно странно и ясности ему точно не добавляет. Словно тут и так всё ясно и понятно - только бери и пользуйся. Но на деле оказывается далеко не так. |
|
Back to top |
|
|
Destiny
Joined: 15 Dec 2015 Posts: 221
|
(Separately) Posted: Wed May 29, 2024 13:19 Post subject: |
|
|
А почему для случая, если что-то не найдено в поиске - не выскакивает окошко с сообщением, что ничего не найдено? Неужели лучшим и оптимизированным решением является то, что сейчас сделано - вывод в статус-бар инфы, что "буббу": не найдено? |
|
Back to top |
|
|
olegvsk
Joined: 17 Dec 2020 Posts: 93
|
(Separately) Posted: Wed May 29, 2024 13:56 Post subject: |
|
|
Destiny wrote: | не выскакивает окошко с сообщением, что ничего не найдено |
Меня, например, такие окошки раздражают, поскольку требуют реакции. Есть "дзынь", есть информации в строке состояния, курсор остаётся на месте. |
|
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
|