уважать ли TERM?
Oct. 11th, 2022 03:30 pmА вот тут у меня спор с автором ripgrep'а: надо ли уважать TERM? Всем понятно, что TERM=dumb надо уважать. А вот какой-нибудь t10, который от dumb отличается едва-едва, надо?
https://www.reddit.com/r/rust/comments/y0oz86/comment/irvo53s/?utm_source=share&utm_medium=web2x&context=3
Говорит, что не надо, иначе никакого спасения от всяких TERM=screen.linux.
А вот мне кажется, что надо уважать. Не только от практичности, но и с целью закрыть все corner case'ы. По крайней мере, для меня тотальность и отсутствие исключений - это привлекательные черты раста.
https://www.reddit.com/r/rust/comments/y0oz86/comment/irvo53s/?utm_source=share&utm_medium=web2x&context=3
Говорит, что не надо, иначе никакого спасения от всяких TERM=screen.linux.
А вот мне кажется, что надо уважать. Не только от практичности, но и с целью закрыть все corner case'ы. По крайней мере, для меня тотальность и отсутствие исключений - это привлекательные черты раста.
no subject
Date: 2022-10-11 04:59 pm (UTC)В terminfo есть капабилитя
colors. Если она отсутствует, цвет выводить нельзя. Если её значение меньше 16, нельзя выводить\x1b[90m…\x1b[97m. Если меньше 256, нельзя выводить 256 цветов. С\x1b[38;2;RR;GG;BBmвсё сложно.Нельзя предполагать, что 256-цветные последовательности — это всегда
\x1b[38;5;XXXm. Есть такой эмулятор терминалаfbterm(на графическом фреймбуфере в линуксовой консоли), где\x1b[1;XXX}. По-хорошему — только через капабилитиsetabиsetaf.Ещё есть Emacs, который иногда вызывает внешние команды и интерпретирует некоторые, но не все, ANSI-последовательности в их выхлопе.
И ещё никогда нельзя выводить
\x1b[1;30;40m(bold black on black) и\x1b[34;40m(blue on black); в том числе когда чёрный фон получен по умолчанию. Первое не видно в Kitty и других терминалах, которые честно отрисовывают bold только как bold без дополнительного эффекта bright; а второе не видно в терминалах, настроенных под Midnight Commander.no subject
Date: 2022-10-11 05:07 pm (UTC)(Внимательный водитель Ansible может меня упрекнуть, что я же и приделал ему поддержку 256 цветов в нарушение правила «256 цветов не всегда
CSI 38;5;XXX m». Меня извиняет только то, что я это делал в ответ на нарушение правила «нельзя писать синим по чёрному».)