Code Viewer - просмотр исходного кода

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

olegvsk
Сообщения: 115
Зарегистрирован: Чт дек 17, 2020 16:34

Сообщение olegvsk »

Destiny
Не понимаю я озвученных вами проблем. Любой плагин заточен на конкретные типы файлов. Открытие любых файлов - только как опция и только с согласия пользователя. Какие типы открываются сразу, вы могли бы прочитать в документации, но я её не делал, так как, на мой взгляд, всё достаточно прозрачно и понятно.
Destiny писал(а):Все равно не ясно - почему при вызове "Синтаксисы" и при вводе нового расширения не происходит
автосверки расширения текущего файла с этим новым вводом и автоподключения выбранной/модифицированной схемы подсветки?
Какой автосверки? Это и есть GUI-диалог настроек. Кнопок нет потому, что настройки применяются сразу.
Destiny писал(а):внесение нового расширения автоматом приводит к применению подсветки, увязанной к этому расширению.
Да с чего, если у вас открыт файл с другим расширением?
Destiny писал(а):Кстати в диалоге "Перейти" кнопка Отмены не переведена на русский
Спасибо, исправлю.
Destiny писал(а):Пункт меню "Информация" - почему-то оказался пунктом "О плагине".
Обычный пункт меню с информацией о плагине.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

А разве Я сам себя ограничил? Я поставил плагин и попробовал вызвать его на файле и он с настройками
этой галочки по умолчанию не отработал. Это вроде как плагин МЕНЯ ограничил, а не я себя.
Так я и не вам писал, а именно автору, поскольку столкнулся ровно с такой же проблемой при первом своем знакомстве с плагином, о чем и писал пару страниц назад. Объяснения автора на этот счет понятны:
[cut]
olegvsk писал(а):Вот по этому поводу я хотел бы увидеть мнение других участников. Меня, например, не устраивает, когда плагины лезут туда, куда их не спрашивали. Для этого есть всеми нами любимый универсальный Lister.
[/cut]
Вот только я уж забыл совсем, когда последний раз пользовался штатным листером для просмотра текстовых файлов :lol:
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

olegvsk писал(а):Какой автосверки? Это и есть GUI-диалог настроек. Кнопок нет потому, что настройки применяются сразу.
Какой? А той, что я описал по возможности подробно выше.
ЕСЛИ БЫ ваше заявление, что настройки применяются сразу, реально работало - вопросов бы и предложений и не было сразу.
Еще раз - я добавил нужное расширение схх в настройках для С++ подсветки, а открытый файл с этим расширением как показывался с подсветкой "none" (кстати, это тоже надо бы перевести) - так и продолжил показываться без подсветки. И где тут заявленное автоприменение?
olegvsk писал(а):Да с чего, если у вас открыт файл с другим расширением?
С того, что именно это "другое" расширение "ZZZ" я только что внес в список принимаемых для подсветки "ХХХ". И с этой секунды оно уже не другое, а известное и связанное с неким типом подсветки. И именно с 1 секунды! Потому как кнопки ОК нет и я ожидаю мгновенную реакцию на любое действие внутри этого окна.
olegvsk писал(а):Обычный пункт меню с информацией о плагине.
В таком случае и название пункта должно звучать "О плагине"/"О программе". About, короче говоря.

olegvsk
Т.е. еще раз - именно потому, что вы сделали CodeViewer ожидалось, что я САМ смогу настроить нужные срабатывания по типу файлов, чтоб по умолчанию плагин открывал любые небинарные файлы, ибо на то он и плагин для просмотра. А уж потом - я, получив возможность заходить в его настройки, буду там что-то допиливать для срабатывания лишь на нужных мне файлах.
А то ведь сейчас я ТУПО не могу войти в настройки плагина, ибо он не сработает на новом, неизвестном ему расширении! ДАЖЕ принудительно не открывается!
Нет просмотра-то!
Последний раз редактировалось Destiny Пт май 17, 2024 20:04, всего редактировалось 3 раза.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

olegvsk
Взгляните, пожалуйста, на этот файлик: кодировка у него UTF 16 LE с BOM (и BOM точно есть, видно его в hex-представлении FEFF), но плагин определяет его как 866 OEM. При этом не на всех файлах в UTF 16 LE BOM плагин ошибается, некоторые определяются корректно. От чего это зависит я пока не смог уловить — вроде обычные файлы, в одном и том же редакторе и созданы и отредактированы (AkelPad), но плагин некоторые так, а некоторые сяк.
Amo ergo sum
Аватара пользователя
imig73
Сообщения: 285
Зарегистрирован: Вт июн 18, 2013 13:21
Откуда: г. Иркутск

Сообщение imig73 »

yozhik
encinfo определяет правильно binary UTF-16LE, а binary это ошибка в плаге. Если допустим BOM убрать то будет вообще binary binary.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

imig73
Ага, я тоже сразу в EncInfo стал смотреть проверять )) И Encoding Check в PCREsearch.wdx тоже корректно определяет кодировку.
Amo ergo sum
olegvsk
Сообщения: 115
Зарегистрирован: Чт дек 17, 2020 16:34

Сообщение olegvsk »

yozhik писал(а):Взгляните, пожалуйста, на этот файлик
Да, есть ошибка в определении OEM - не всегда учитывается BOM. В обновлении будет исправление.
Аватара пользователя
imig73
Сообщения: 285
Зарегистрирован: Вт июн 18, 2013 13:21
Откуда: г. Иркутск

Сообщение imig73 »

yozhik
А я с этим BOM вообще попал. AkelPad если сигнатуру не увидит то и сохранит без BOM. В ANSI то вообще этого нету, вот мне и на сохранял тоталовские панели с настройками в UTF-16 LE без BOM. Я три дня искал почему всё как попало работает, пока не разобрался что для TC BOM обязателен :)
olegvsk
Сообщения: 115
Зарегистрирован: Чт дек 17, 2020 16:34

Сообщение olegvsk »

Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

olegvsk
Спасибо огромное, после нескольких проб все нововведения и поправки работают исправно, пока никаких неполадок не замечено. Только фокус пока ещё улетает на долю секунды, мелькая окном др. приложения, когда закрываешь Color Picker, но на основную бо́льшую часть работы с плагином это совершенно не влияет, так что можно не обращать внимания (тем более Вы кажется писали, что там какая-то нетривиальная проблема).

Тень для границы MiniMap отлично смотрится, спасибо.

В диалоге Подсветки строк стандартные регулярки опробовал — работают, но хорошо бы где-то подсказать какая именно библиотека («диалект») используется и где описание синтаксиса почитать (не TRegExpr ли это Сорокина?).

Тёмные стили чётко работают — я их удалял, добавлял другие со стороны — всё исправно. Да, они и не большие оказались, всего-то по нескольку Кб. Вообще со стилем плагин теперь как влитой, очень качественно смотрится. Только единственное: PopUp-контекстное меню ПКМ по-прежнему белое, но вот есть такие vcl-styles-utils, которые, кажется, помогают с подобными случаями справляться, Вы в их сторону не смотрели? Если это не громоздко / не трудоёмко, то, может, стоит воспользоваться? Последний шаг до безупречности :)

Пара наблюдений в Диалоге настройки темы.

Отображение hex-кодов цвета в правой части TVirtualStringTree — очень удобно, спасибо. Тут же, в правой части TVirtualStringTree, ПКМ по плашке с цветом открывает Color Picker напрямую — тоже очень удобно, спасибо. Быть может не слишком трудоёмко было бы сделать в левой части TVirtualStringTree, чтобы ПКМ по плашке с именем ключа вызывала менюшку с 2мя командами: "Copy color" и "Paste color" — которые бы копировали в БО / вставляли из БО код цвета (hex, TColor или ключевые слова). Не представляю себе, к сожалению, насколько это хлопотно в реализации (ибо не программер), но с точки зрения пользователя это было бы существенное подспорье, скорость настройки возрасла бы в разы, и настраивать тему стало бы как семечки щёлкать. Вот, как то так бы это выглядело:

Изображение

Настройку SpecialCharSelection быть может логичней было бы переместить из группы Editor в группу Selection?

А MapActiveLine может быть лучше бы переехать из группы Search в группу Minimap? Потому что она не зависит от состояния поиска.

LeftMarginLineStateNormal отвечает за отредактированные и свежесохранённые строки? Если да, то не работает. Или я опять где-то недоглядел...

Ещё иногда проявляется несогласованность расположения курсора с подсветкой фолдинга, вот пример:

Изображение

— файл, на котором это проявилось, можно взять здесь.

Я попробовал у себя пооткрывать файлы больше 10 Мб, но, по-видимому, этот порог не случайно Вами выставлен по умолчанию. Больше 10 Мб у меня на машине плагин уже не обрабатывает: файл открывается, но кол-во строк показывается неверно и при попытке переместиться в конец файла по Ctrl+End ТК зависает, а если к концу подбираться аккуратно, перелистывая по одной строчке, то в самом низу окна после текста появляются кракозябры и видно, что это не конец файла, а конец обработки плагином. Но, впрочем, это же Code Viewer, и он не предназначен для таких размеров. В целом это мне не кажется недостатком, скорее особенностью. Просто решил написать про это наблюдение. Вот как это выглядит:

Изображение

и, да, шрифт в этом случае роли не играет, с системным Consolas то же самое.

Вообще, толковый плагин получился, пока всё в нём радует Изображение
Amo ergo sum
olegvsk
Сообщения: 115
Зарегистрирован: Чт дек 17, 2020 16:34

Сообщение olegvsk »

yozhik
Спасибо за обстоятельный обзор.
yozhik писал(а):какая именно библиотека («диалект») используется и где описание синтаксиса почитать
Стандартный дельфовый модуль. Подсказки по регулярным выражениям мне обычно хватает в хелпе AkelPad'а.
yozhik писал(а):PopUp-контекстное меню ПКМ по-прежнему белое
Неожиданно. С системными стилевыми хуками (меню и системные окна сообщений) вообще проблема - если я их включаю, то в плагине они работают, но при этом ломается цветовая схема самого TC, что, понятно, недопустимо. Поэтому стили для меню выключены, но у меня, например, меню всё равно остаются тёмными, их раскрашивает сам TC в соответствии со своей темой. У вас, похоже, по-другому. Какая у вас версия Windows и самого TC?
yozhik писал(а):но вот есть такие vcl-styles-utils
Спасибо, посмотрю.
yozhik писал(а):чтобы ПКМ по плашке с именем ключа вызывала менюшку с 2мя командами: "Copy color" и "Paste color"
Да без проблем :).
yozhik писал(а):Настройку SpecialCharSelection быть может логичней было бы переместить из группы Editor в группу Selection?
А MapActiveLine может быть лучше бы переехать из группы Search в группу Minimap? Потому что она не зависит от состояния поиска.
Да, логично.
yozhik писал(а):LeftMarginLineStateNormal отвечает за отредактированные и свежесохранённые строки?
Подсветка свежесохранённых строк сейчас отключена, лично я никогда не интересовался этой возможностью. Но включу, пусть будет.
yozhik писал(а):Ещё иногда проявляется несогласованность расположения курсора с подсветкой фолдинга
Видимо баг, проверю.
yozhik писал(а):Больше 10 Мб у меня на машине плагин уже не обрабатывает: файл открывается, но кол-во строк показывается неверно и при попытке переместиться в конец файла по Ctrl+End ТК зависает, а если к концу подбираться аккуратно, перелистывая по одной строчке, то в самом низу окна после текста появляются кракозябры и видно, что это не конец файла, а конец обработки плагином.
Нет, так быть не должно. Плагин может долго думать, но не сыпать ошибками. Не покажете файл?
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

olegvsk
Ух, ты! Прям, реально, классный плагин! Супер!

Из навскидку выявленных мелких "косячков"...
1. sql-файл в кодировке OEM-866 с текстом, начинающимся на "--", по горячей клавише Ctrl+W не переключает в кодировку WIN-1251, хотя по "Кодировка/Все поддерживаемые" переключает. Пример содержимого:

Код: Выделить всё

-- Тест
2. Сворачивание кода, по крайней мере для sql, "глючит" при наличии конструкции в одну строку. Пример содержимого:

Код: Выделить всё

declare @q int
if @q is null
begin
  select @q = case when 1=1 then 1 else 0 end
end
Огромное спасибо!!!
Нет, я не сплю. Я просто медленно моргаю.
olegvsk
Сообщения: 115
Зарегистрирован: Чт дек 17, 2020 16:34

Сообщение olegvsk »

Batya писал(а):по горячей клавише Ctrl+W не переключает в кодировку WIN-1251
Да, косяк с переключением. Сразу поправил и выложил исправленный файл, не меняя номер версии. Можно перекачать.
Batya писал(а):Сворачивание кода, по крайней мере для sql, "глючит"
Буду разбираться.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

olegvsk писал(а):но у меня, например, меню всё равно остаются тёмными, их раскрашивает сам TC в соответствии со своей темой. У вас, похоже, по-другому. Какая у вас версия Windows и самого TC?
А, теперь понятно. Windows у меня 11 23H2 x64, а TC 11.03 32/64, но дело, похоже, не в них, а в значении ключа ForceDarkModeOptions в wincmd.ini. Дело в том, что если значение 1 (оно же умолчательное на Win 10 и выше при отсутствии самого ключа), то менюхи используются системные, а если 2, то TC рисует их сам, но не все, а только те, которые может. Это, как оказалось, неоднозначная, во многом субъективная и немного запутанная тема, поэтому я вначале кратко резюмирую, а потом, если Вам интересны подробности, то загляните по cut.

Кратко, на что влияет упомянутый ключ (в контексте нашего разговора):
  • При ForceDarkModeOptions=1
    1. меню главного окна TCx64 рисует сам;
    2. меню главного окна TCx32 вызывает системные тёмные (при условии, если отключено отображение иконок в меню);
    3. меню контекстные в обеих битностях вызываются системные тёмные (вне зависимости от того, какая тема в системе активна, тёмная или светлая).
  • При ForceDarkModeOptions=2
    1. меню главного окна TCx64 рисует сам;
    2. меню главного окна TCx32 рисует сам (вне зависимости от отображения иконок в меню);
    3. меню контекстные в обеих битностях вызываются системные текущие (т.е. если в системе активна светлая тема, то и менюхи будут светлые).
Подчёркнутые места выделяют разницу. И у меня как раз выпал такой «тяжёлый» случай (подробнее под cut'ом), что TCx32, иконки в меню отключены, ForceDarkModeOptions=2 и в системе светлая тема — поэтому и менюхи по ПКМ у меня светлые.

Вопрос теперь причём здесь плагин. Я изложу свои pro et contra, а выбор, естественно, за Вами ))
  • Если всё оставить как есть, и не прибегать к vcl-styles-utils (или чего-либо др.), то менюхи будут соответствовать более интерфейсу TC, чем плагина. Вследствие чего: большинство пользователей ничего не заметят, у них всё будет смотреться нормально-приемлемо, а малый процент таких как я будут лицезреть белые менюхи, хотя, справедливости ради, не только в плагине, но и во всём TC (ибо это — неизбежное следствие метаморфоз с настройками).
  • Если же прибегнуть к vcl-styles-utils, то менюхи станут соответствовать более интерфейсу плагина, чем TC. Вследствие чего: у большинства пользователей по-прежнему всё нормально-приемлемо, а малый процент таких как я улыбнутся шире )) Ну и, справедливости ради, интерфейс плагина будет более целостным.
Теперь чуть подробностей (вдруг интересно), [cut="почему я так сделал:"]Ну, собственно, разницу видно на скриншоте:

Изображение

TC либо рисует сам меню и полосы прокрутки, либо заимствует из системы. А системный чёрный не такой, как я назначил в TC. Но тут есть существенный момент: системные цвета в Win 11 (что на скриншоте) мягче, чем были в Win 10. В Win 10 всё было контрастней, чёрный фон чернее, а буквы и рамки белее, что тогда на 10-ке никак не вязалось с моими настройками в TC. Поэтому я тогда и тему на оф.-форуме поднял (жаль, там скрины не сохранились), и по результатам её обсуждений выбрал ForceDarkModeOptions=2 и, вынужденно, его побочные последствия. Теперь же на 11-ой вроде стало по-приличней (хотя и не безупречно), и я теперь чешу себе башку, что может наконец смириться и переключиться на ForceDarkModeOptions=1 :)[/cut]
olegvsk писал(а):Подсветка свежесохранённых строк сейчас отключена, лично я никогда не интересовался этой возможностью. Но включу, пусть будет.
А я ею сейчас заинтересовался только потому, что ключ есть, его видно, но он не работает — когнитивный диссонанс получается )) Наверное лучше чтоб эта подсветка работала, а желающие могут её «отключить», присвоив ей цвет фона. Я, кстати, так и сделаю себе, не люблю когда много цветовых акцентов, ибо теряется смысл акцентов.
olegvsk писал(а):Плагин может долго думать, но не сыпать ошибками. Не покажете файл?
Конечно, вот пожалуйста. Перепроверил сейчас на TCx64 — та ж беда. Но у меня и на других файлах это проявляется: на всех, которые больше 10,2 Мб.
olegvsk писал(а):Стандартный дельфовый модуль
Понятно, спасибо. Он там с PCRE взаимодействует. Тогда, если когда-нибудь руки дойдут до краткого руководства, то можно использовать следующие ссылки:
  1. Исчерпывающий конспект по синтаксису PCRE.
  2. Подробнее о дельфовом TRegEx.
  3. Подробнее о PCRE.
  4. На русском неплохой, вроде, конспект по синтаксису PCRE.
Amo ergo sum
Аватара пользователя
BeTeP
Сообщения: 135
Зарегистрирован: Чт мар 31, 2005 00:57
Откуда: Санкт-Петербург

Сообщение BeTeP »

yozhik писал(а):Но у меня и на других файлах это проявляется: на всех, которые больше 10,2 Мб.
Осмелюсь предположить, что дело не в размере файла, а в количестве строк в этом самом файле.
У меня без проблем открывается файл 13,4 МБ, но в нём, в отличие от вашего файла, всего 9493 строки.
Ответить