Skip to content

Commit 34e271b

Browse files
Tachi107chrisbra
authored andcommitted
runtime(doc): use standard SGR format at :h xterm-true-color
By default, Vim uses the non-standard, but widely supported, legacy xterm/Konsole format for setting "direct colors" with set setaf and setbf escape codes, which use semicolons as separators. The documentation for xterm-true-color mentions that, as an alternative, users can set alternative sequences that use colons instead of semicolons. This format, though, isn't standard and it is unclear how widely supported it is; it was added by xterm patch 282 due to a misinterpretation of the ISO 8613-6 (ITU T.416) standard, and was later changed to the format suggested by this patch, which is the one specified in the standard. Today, looking at ncurses' [terminfo], it seems that all terminal emulators use either the standard format (named "xterm+direct" in the terminfo source) or the legacy format (named "xterm+indirect" in the terminfo source). Hence, I believe it makes sense to align the docs with reality. If you're interested in the story of this escape sequence, I'd recommend reading <https://invisible-island.net/ncurses/ncurses.faq.html#xterm_16MegaColors>. [terminfo]: https://invisible-island.net/ncurses/terminfo.ti.html closes: #16350 Signed-off-by: Christian Brabandt <cb@256bit.org> Signed-off-by: Andrea Pappacoda <andrea@pappacoda.it>
1 parent 39a4eb0 commit 34e271b

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

runtime/doc/term.txt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
*term.txt* For Vim version 9.1. Last change: 2024 Oct 05
1+
*term.txt* For Vim version 9.1. Last change: 2024 Dec 31
22

33

44
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -688,10 +688,11 @@ The default values are set like this: >
688688
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
689689
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
690690
691-
Some terminals accept the same sequences, but with all semicolons replaced by
692-
colons (this is actually more compatible, but less widely supported): >
693-
let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum"
694-
let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum"
691+
Some terminals accept similar sequences, with semicolons replaced by colons
692+
and an extra colon after the number 2 (this is conformant to the ISO 8613-6
693+
standard, but less widely supported): >
694+
let &t_8f = "\<Esc>[38:2::%lu:%lu:%lum"
695+
let &t_8b = "\<Esc>[48:2::%lu:%lu:%lum"
695696
696697
These options contain printf strings, with |printf()| (actually, its C
697698
equivalent hence `l` modifier) invoked with the t_ option value and three

0 commit comments

Comments
 (0)