Mercurial > vim
view src/libvterm/doc/seqs.txt @ 34686:83875247fbc0 v9.1.0224
patch 9.1.0224: cursor may move too many lines over "right" & "below" virt text
Commit: https://github.com/vim/vim/commit/515f734e687f28f7199b2a8042197624d9f3ec15
Author: Dylan Thacker-Smith <dylan.ah.smith@gmail.com>
Date: Thu Mar 28 12:01:14 2024 +0100
patch 9.1.0224: cursor may move too many lines over "right" & "below" virt text
Problem: If a line has "right" & "below" virtual text properties,
where the "below" property may be stored first due to lack of
ordering between them, then the line height is calculated to
be 1 more and causes the cursor to far over the line.
Solution: Remove some unnecessary setting of a
`next_right_goes_below = TRUE` flag for "below" and "above"
text properties. (Dylan Thacker-Smith)
I modified a regression test I recently added to cover this case,
leveraging the fact that "after", "right" & "below" text properties are
being stored in the reverse of the order they are added in. The
previous version of this regression test was crafted to workaround this
issue so it can be addressed by this separate patch.
closes: #14317
Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 28 Mar 2024 12:15:03 +0100 |
parents | 82336c3b679d |
children |
line wrap: on
line source
Sequences documented in parens are implicit ones from parser.c, which move between states. 1 = VT100 2 = VT220 3 = VT320 x = xterm C0 controls 123 0x00 = NUL 123x 0x07 = BEL 123x 0x08 = BS 123x 0x09 = HT 123x 0x0A = LF 123x 0x0B = VT 123x 0x0C = FF 123x 0x0D = CR 123x 0x0E = LS1 123x 0x0F = LS0 (0x18 = CAN) (0x1A = SUB) (0x1B = ESC) 123 0x7f = DEL (ignored) C1 controls 123x 0x84 = IND 123x 0x85 = NEL 123x 0x88 = HTS 123x 0x8D = RI 23x 0x8E = SS2 23x 0x8F = SS3 (0x90 = DCS) (0x98 = SOS) (0x9B = CSI) (0x9C = ST) (0x9D = OSC) (0x9E = PM) (0x9F = APC) Escape sequences - excluding sequences that are C1 aliases 123x ESC ( = SCS, select character set G0 123x ESC ) = SCS, select character set G1 23x ESC * = SCS, select character set G2 23x ESC + = SCS, select character set G3 123x ESC 7 = DECSC - save cursor 123x ESC 8 = DECRC - restore cursor 123x ESC # 3 = DECDHL, double-height line (top half) 123x ESC # 4 = DECDHL, double-height line (bottom half) 123x ESC # 5 = DECSWL, single-width single-height line 123x ESC # 6 = DECDWL, double-width single-height line 123x ESC # 8 = DECALN 123 ESC < = Ignored (used by VT100 to exit VT52 mode) 123x ESC = = DECKPAM, keypad application mode 123x ESC > = DECKPNM, keypad numeric mode 23x ESC Sp F = S7C1T 23x ESC Sp G = S8C1T (ESC P = DCS) (ESC X = SOS) (ESC [ = CSI) (ESC \ = ST) (ESC ] = OSC) (ESC ^ = PM) (ESC _ = APC) 123x ESC c = RIS, reset initial state 3x ESC n = LS2 3x ESC o = LS3 3x ESC | = LS3R 3x ESC } = LS2R 3x ESC ~ = LS1R DCSes 3x DCS $ q ST = DECRQSS 3x m = Request SGR x Sp q = Request DECSCUSR 3x " q = Request DECSCA 3x r = Request DECSTBM x s = Request DECSLRM CSIs 23x CSI @ = ICH 123x CSI A = CUU 123x CSI B = CUD 123x CSI C = CUF 123x CSI D = CUB x CSI E = CNL x CSI F = CPL x CSI G = CHA 123x CSI H = CUP x CSI I = CHT 123x CSI J = ED 23x CSI ? J = DECSED, selective erase in display 123x CSI K = EL 23x CSI ? K = DECSEL, selective erase in line 23x CSI L = IL 23x CSI M = DL 23x CSI P = DCH x CSI S = SU x CSI T = SD 23x CSI X = ECH x CSI Z = CBT x CSI ` = HPA x CSI a = HPR x CSI b = REP 123x CSI c = DA, device attributes 123 0 = DA 23x CSI > c = DECSDA 23 0 = SDA x CSI d = VPA x CSI e = VPR 123x CSI f = HVP 123x CSI g = TBC 123x CSI h = SM, Set mode 123x CSI ? h = DECSM, DEC set mode CSI j = HPB CSI k = VPB 123x CSI l = RM, Reset mode 123x CSI ? l = DECRM, DEC reset mode 123x CSI m = SGR, Set Graphic Rendition CSI ? m = DECSGR, private Set Graphic Rendition 123x CSI n = DSR, Device Status Report 23x 5 = operating status 23x 6 = CPR = cursor position 23x CSI ? n = DECDSR; behaves as DSR but uses CSI ? instead of CSI to respond 23x CSI ! p = DECSTR, soft terminal reset 3x CSI ? $ p = DECRQM, request private mode x CSI Sp q = DECSCUSR (odd numbers blink, even numbers solid) 1 or 2 = block 3 or 4 = underline 5 or 6 = I-beam to left x CSI > q = XTVERSION, request version string 23x CSI " q = DECSCA, select character attributes 123x CSI r = DECSTBM x CSI s = DECSLRM x CSI ' } = DECIC x CSI ' ~ = DECDC OSCs x OSC 0; = Set icon name and title x OSC 1; = Set icon name x OSC 2; = Set title x OSC 52; = Selection management Standard modes 23x SM 4 = IRM 123x SM 20 = NLM, linefeed/newline DEC modes 123x DECSM 1 = DECCKM, cursor keys 123x DECSM 5 = DECSCNM, screen 123x DECSM 6 = DECOM, origin 123x DECSM 7 = DECAWM, autowrap x DECSM 12 = Cursor blink 23x DECSM 25 = DECTCEM, text cursor enable x DECSM 69 = DECVSSM, vertical screen split x DECSM 1000 = Mouse click/release tracking x DECSM 1002 = Mouse click/release/drag tracking x DECSM 1003 = Mouse all movements tracking x DECSM 1004 = Focus in/out reporting x DECSM 1005 = Mouse protocol extended (UTF-8) - not recommended x DECSM 1006 = Mouse protocol SGR x DECSM 1015 = Mouse protocol rxvt x DECSM 1047 = Altscreen x DECSM 1048 = Save cursor x DECSM 1049 = 1047 + 1048 x DECSM 2004 = Bracketed paste Graphic Renditions 123x SGR 0 = Reset 123x SGR 1 = Bold on x SGR 3 = Italic on 123x SGR 4 = Underline single SGR 4:x = Underline style 123x SGR 5 = Blink on 123x SGR 7 = Reverse on x SGR 8 = Conceal on x SGR 9 = Strikethrough on SGR 10-19 = Select font x SGR 21 = Underline double 23x SGR 22 = Bold off x SGR 23 = Italic off 23x SGR 24 = Underline off 23x SGR 25 = Blink off 23x SGR 27 = Reverse off x SGR 28 = Conceal off x SGR 29 = Strikethrough off x SGR 30-37 = Foreground ANSI x SGR 38 = Foreground alternative palette x SGR 39 = Foreground default x SGR 40-47 = Background ANSI x SGR 48 = Background alternative palette x SGR 49 = Background default SGR 73 = Superscript on SGR 74 = Subscript on SGR 75 = Superscript/subscript off x SGR 90-97 = Foreground ANSI high-intensity x SGR 100-107 = Background ANSI high-intensity The state storage used by ESC 7 and DECSM 1048/1049 is shared. Unimplemented sequences: The following sequences are not recognised by libvterm. 123x 0x05 = ENQ 3 0x11 = DC1 (XON) 3 0x13 = DC3 (XOFF) x ESC % @ = Select default character set x ESC % G = Select UTF-8 character set x ESC 6 = DECBI, Back Index 12 ESC Z = DECID, identify terminal x DCS + Q = XTGETXRES, Request resource values DCS $ q = [DECRQSS] 3x " p = Request DECSCL x t = Request DECSLPP x $ | = Request DECSCPP x * | = Request DECSLNS 3 $ } = Request DECSASD 3 $ ~ = Request DECSSDT x DCS + p = XTSETTCAP, set termcap/terminfo data x DCS + q = XTGETTCAP, request termcap/terminfo 23 DCS { = DECDLD, down-line-loadable character set 23x DCS | = DECUDK, user-defined key x CSI Sp @ = Shift left columns x CSI Sp A = Shift right columns x CSI # P = XTPUSHCOLORS, push current dynamic colours to stack x CSI # Q = XTPOPCOLORS, pop dynamic colours from stack x CSI # R = XTREPORTCOLORS, report current entry on palette stack x CSI ? S = XTSMGRAPHICS, set/request graphics attribute x CSI > T = XTRMTITLE, reset title mode features 23x CSI i = DEC printer control x CSI > m = XTMODKEYS, set key modifier options x CSI > n = (XTMODKEYS), reset key modifier options x CSI $ p = DECRQM, request ANSI mode 23x CSI " p = DECSCL, set compatibility level x CSI > p = XTSMPOINTER, set resource value pointer mode 1 x CSI q = DECLL, load LEDs x CSI ? r = XTRESTORE, restore DEC private mode values x CSI $ r = DECCARA, change attributes in rectangular area x CSI > s = XTSHIFTESCAPE, set/reset shift-escape options x CSI ? s = XTSAVE, save DEC private mode values x CSI t = XTWINOPS, window operations x CSI > t = XTSMTITLE, set title mode features x CSI $ t = DECRARA, reset attributes in rectangular area 3 CSI $ u = DECRQTSR, request terminal state report 3 1 = terminal state report 3 CSI & u = DECRQUPSS, request user-preferred supplemental set x CSI $ v = DECCRA, copy rectangular area 3x CSI $ w = DECRQPSR, request presentation state report 3x 1 = cursor information report 3x 2 = tab stop report x CSI ' w = DECEFR, enable filter rectangle 1 x CSI x = DECREQTPARM, request terminal parameters x CSI * x = DECSACE, select attribute change extent x CSI $ x = DECFRA, fill rectangular area 123 CSI y = DECTST, invoke confidence test x CSI $ z = DECERA, erase rectangular area x CSI # { = XTPUSHSGR, push video attributes onto stack x CSI $ { = DECSERA, selective erase in rectangular area x CSI # | = XTREPORTSGR, report selected graphic rendition x CSI $ | = DECSCPP, select columns per page x CSI # } = XTPOPSGR, pop video attributes from stack 3 CSI $ } = DECSASD, select active status display 3 CSI $ ~ = DECSSDT, select status line type 23 SM 2 = KAM, keyboard action 123 SM 12 = SRM, send/receive 123 DECSM 2 = DECANM, ANSI/VT52 123 DECSM 3 = DECCOLM, 132 column 123 DECSM 4 = DECSCLM, scrolling 123 DECSM 8 = DECARM, auto-repeat 12 DECSM 9 = DECINLM, interlace 23 DECSM 18 = DECPFF, print form feed 23 DECSM 19 = DECPEX, print extent 23 DECSM 42 = DECNRCM, national/multinational character