From a43c63111fcd0ef4116ebf1e45f64aa111132300 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 24 Jul 2022 09:36:21 -0700 Subject: [PATCH] count = 0 implies 1 for all cursor movement, fixes one line of vttest --- src/terminal/Terminal.zig | 22 ++++++++++++++++++---- test/cases/vttest/1_1.sh.ghostty.png | Bin 10493 -> 10486 bytes test/cases/vttest/1_2.sh.ghostty.png | Bin 10749 -> 10745 bytes 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index 71ee8f37f..2c6cd940e 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -417,6 +417,9 @@ pub fn eraseDisplay( .complete => { const all = self.screen.getVisible(); std.mem.set(Screen.Cell, all, self.screen.cursor.pen); + + // Unsets pending wrap state + self.screen.cursor.pending_wrap = false; }, .below => { @@ -438,6 +441,9 @@ pub fn eraseDisplay( cell.char = 0; } } + + // Unsets pending wrap state + self.screen.cursor.pending_wrap = false; }, .above => { @@ -459,6 +465,9 @@ pub fn eraseDisplay( cell.char = 0; } } + + // Unsets pending wrap state + self.screen.cursor.pending_wrap = false; }, else => { @@ -483,6 +492,9 @@ pub fn eraseLine( .left => { const row = self.screen.getRow(self.screen.cursor.y); std.mem.set(Screen.Cell, row[0..self.screen.cursor.x], self.screen.cursor.pen); + + // Unsets pending wrap state + self.screen.cursor.pending_wrap = false; }, .complete => { @@ -558,7 +570,8 @@ pub fn cursorRight(self: *Terminal, count: usize) void { const tracy = trace(@src()); defer tracy.end(); - self.screen.cursor.x += count; + self.screen.cursor.x += if (count == 0) 1 else count; + self.screen.cursor.pending_wrap = false; if (self.screen.cursor.x >= self.cols) { self.screen.cursor.x = self.cols - 1; } @@ -572,7 +585,7 @@ pub fn cursorDown(self: *Terminal, count: usize) void { const tracy = trace(@src()); defer tracy.end(); - self.screen.cursor.y += count; + self.screen.cursor.y += if (count == 0) 1 else count; if (self.screen.cursor.y >= self.rows) { self.screen.cursor.y = self.rows - 1; } @@ -586,7 +599,8 @@ pub fn cursorUp(self: *Terminal, count: usize) void { const tracy = trace(@src()); defer tracy.end(); - self.screen.cursor.y -|= count; + self.screen.cursor.y -|= if (count == 0) 1 else count; + self.screen.cursor.pending_wrap = false; } /// Backspace moves the cursor back a column (but not less than 0). @@ -594,7 +608,7 @@ pub fn backspace(self: *Terminal) void { const tracy = trace(@src()); defer tracy.end(); - self.screen.cursor.x -|= 1; + self.cursorLeft(1); } /// Horizontal tab moves the cursor to the next tabstop, clearing diff --git a/test/cases/vttest/1_1.sh.ghostty.png b/test/cases/vttest/1_1.sh.ghostty.png index e1b728f670bff80284853b576eb1a00aad42cc64..eb7a1382db7640bdad454309f975c06b4d08a7a0 100644 GIT binary patch delta 6670 zcmewx_$_clF>`&Mr;B4q#jUq@xo4=R)~Y{nU}X_0ZIRPYc1dLmsNQo?;h2O}T8RTo zqi8P|Q{TZgoLxnn+G|#P?3%vjQC7h93RgoR{hIdQbGtYj*{P zkP3Yr1}BiiUIj34+)AI%#BlA!^ZK|31_1>J29B5PC+dFd*B?5Nz{Tdk{EM+@I`cI9 z!~_FY<^_y<87x06*nRKqgWdNZ&ueWwD8kdg#+-6_FP~*e+ULFRgC!(<4l-o88#r`5 z+V}l-(f@nL+1P>&7-nsdQP^K_f|;-S!6TT6hyuIZhXs%R@yGqR0Jf@`F-Rs(Bzn7U zT@KhX&bY~j9CDKv$g|XYglVweeVWPRdx~pmpT(sE3sy6?23=Tk&}rq~Ki`rsyliyR z%(#)TaLVrqj^*rJOBWjS}Q?;eh z(Tu?=?^0_}|18U@yu7??2Na}z8k{sUE-m3+DrZ{U)9Cm%;W5Z@KDz==&ApUx1 z3;V`L#mp~uaEf}FUXpWB*PPOnX}Hj7rRTnnf_Ik%a4kF9!nKrzL)*^WtPd2_EnG|0 zZpyiAhpFq_%6_quYiUB1&x(Lk+c!jf+_@3rnh*_D2M`b9m=F!qliw6}`7RXk>F(S& zA)s0yd7dW@wTVJ!h_S==qeAX}Gy7Rq0PPu&E;`4ml(uZbd#cv}0tADKzF@MMZ%)j>7 zC!3q^o+{4!xn}eE%Ce0mtE2a6>#HAlv-A1f`s)XOe<|*}U3;rITYTEJU^b8X+3~jN z-&xN`*Qms2)pf+&vYqR9_Rz28m+$}hz+IR7aB=eg%DX|IIki9Q)W^4c39x!v^zpCu zHVK9E|G(ass6KdFd)haz&pmZ{kOX1Iwe%Nb(W#Z<`yO2Ib^Um#JFetQcX@2g%}0~G z^{ro-&);aUqvrbl8~+wekJ(sY{i2DB9~}u7J$lELe?9kv?E4dIm%o_HUBBn`lU=P-U%z~B zx8ZE@f8V!3pPjF~eml=^d0OJ%%bwEq^`~Pt-v7C|)cdTu&T~)3OZ6Iai=t|FC8^K( z@$T$?>w;yb!r#jMtCvX|F~`G+*7@m752|xdiS#P{{I_W{pd; zcJpV~q8(38+*et!xTMDI~eBZpKzPjqg`E7rGipK9qd-#7|xlQ8hv)?0jY1e-^INd(u;ri)weja6> zZ(K2d-vjUPnx7k@Ux`h-Ho46Iw#*l9_q$)FuC|NXe&v+nz70=%zlQ6)op&u}^M-%U znU9lhuQT7D{2(G(&F7M<2J@17aAfJSoY=PB?%|`2aF^F3JAKKH^N!a1b;nAl>b|Qx zk@#Hp)7GOGtM}ENGL^r#???7RW8?qpzDL~JVSnO%dgk{}3wO`k`B|F#zlvsG<$YfN z>VyCG?*5c|-{$u3U2CvMe5(?S6)@V>D1@@mRcV?sqS7 z#u-9PEDZvTOb#B_j6&Jrw?6Y*JrdX$w|ZUNbJMv-7ZTsJvm&wTS2-6dPuPP|!Web1!x>l(NEv)OrPqP}WsPie}$ShFzX=Hx5-8mlzrUws!6 zJ$i6D&-uC2er-+H^_@|FYx%FR;Bz6Cm#02InLX{3-?Bdf?t1^`e=G0acr~)}<&~rI zH;q0ow6>4g{V`*;)zg11_xInA`MBD8{kk_(yEa{#^_$UXd+JBl_w(n;|9Eun%$-1y z(z8LUEmK>A40LDdPw}$#T)99)U*2o4i~P-+7w^vAUt<##EH&lT;z?Jh7(Y#~w@RD0 zCr$Hx$|?ShUmcCvzuo(s=~EgOXZ7`gx_#PZ_ji$3a&3-f`C0l_+?T#*RDG^~#XGRQ zm-jo!m7RZjZq=nbcS5}xCz*P$g$C5V0IjboQ)N9Oe+Il#wW|8fYo51%(I*ez%z#z> zQX7ISgX@+hKZE#nmUI1*_s@IQojc{doUbk|@Xxa|4;Nc4Iu`MA%4yE`MOUl$7ZsPT z-=v}aTkKk0^fs~c_Qfx({Z1p>wkKfK8&56k3BR5?d*1Y(QqQfe&Fl3w@TAtMnOWyb z&e&9*4GLQscwH*=Z{vZES8Mi^ygK~<fW@8 zVdu}L^`iA(E-gH)%kJ^d?bm9HR8UAt=}*zBo^*gyvFR#?**M2>BJ1*kN_nh7>v+PzC9eSO&``Mkwy{8tf z`P2U5epO82zXI>eubAsq?72Y}K%y#@JxEL;RXQu->dcP zeWuptn)GCX?Jz|tfFP6XD46Rc{;b=r?h>? z<2vj8pKd3w-u&s(%I^9f3ukigt2%w)m~!@tYh|ZS3&)k;KIvL`<)3;;_sUa?);u+x z-Wz$;Hl6Lh(~rJ;*T49`I^7a(2acvaGat#N-QF$!PyCnR```Y|^K-Vhy|S0LiDpP) zIU$#JTk^i$vwh+JGd^6O7qxcbu3wS*^&e6hvp6Q$o}DkdrTF>ozTNp>gV$aQ*!!bt z`|m{zr7RqeW%pk-Wyk{c*uG6+@Vx4t{obLgRQ#ydyk};jm(%8|MjW`e`YOZ9FG5SN z`{?r>+b+r5T`JytFZ;ubX8mXL;%{#}wk2_G@pm=v4Pop0nZ9|w74gzt{Y8kE<-`xO z#rx{FUNhyD+I;=M#p|L9$+tEr?GD#Vo2(kK`1RsVd&53YaMGM1_EyB}DI0T2Xs%oK z+H5J4vh}@O6ZY_C$L*YlsomMK}`+oQHzh}(+J2zhPp0cW6 zOV;CW^p6)oOAYV3rv4A!R-M(W_5GC9qDvP)`z`zVT&8~e?=8=->8;U8*V5hJW4Cts ze&0&LEWd)1nPE?p%)*;O>t=3Bep>x>Zs^puRY^yJlm3EQ_)_{)tRB7jUGwJZ|EGVi zi>2xZuCiNIqM&>K(D5l+y)X5={`&uXx6)MW?bLFYrHh}>_4&NM?yPeB?_H~3r};hg z@yt5x_4;Lga9m4G{k)5*QKsAPv3YH{G+om^Y+v}j$k5CcQk7z_mj!S|U94DmMUY** zTqeNg!xC`Jj2we())jAR&a*>KOIuM zre^(~&8zerM7$1`Wb6sh;-9eT*NRJxTkfQptP9EXDG&UAFLHnNdZd8wuFkdouUl$7 z{cZ5lhYXM~2O0Wx`#sL-38Ja>4LtJN_qE@zS!EK^YujB4?yl_#Shc5oS==H>Smzm^ zdfnl*cz1Wu|KNSqS-oD>Ph|sNzNl2c{D(Du*Q3+zcZ1A}wbEBb_%&>q_YV@*!ONzG z8=3|*P2K17bK|GIpU$oFa=v8a}USE^oD-KW;`EvcIwc<(@n)XmtC zZ}zF6pe|a!1{#_FuZ5T2|0cfGc=}VHrC+l5oCc+upXm{GO^Z)&`J}ZBGu1elR~oxQ z1~{N?g%ev?PrTuhXWroWZ3RPQedk5)`8MVsK6cmrne10zS${2V{ncwz*}vIUdo2v{ zUn8~ZQTOlqvJb+W<$oSI>wJ67<|mm?9;pZIF}d^2WM$s+()h{*{VnbyUTfD&tt$Db zY`4v1$IpN1`ukgwZuhT~zm+jp)n8eB|Efnzw@UF%__H9p;L@2hiQDJK{9ZK6F#O++ znKSQRzn8u3Ptdy;e{DB!)~NThOnUf{|6bh9XXp6u28pP@i?|Ew6x%Ke$f~^>uynd@ z<uUf1%l>e#>ep*_^QiQbmroq^Khm-9<_$;xTc+h_y3ehzU4BL|{NMh(XpZ*p zXJtQc?f$pzPtdt@XKf3w-??)wtKrM`oyFIUr!hTwwS3K=J2MzSBPhqXm)h;E|049{ zbA5oB=+zMCr$O35`*~I_>w4L+UH|XjQ{GzokN!Qo&+BIr^C{%qWM7N=cW=|@e0%ij zV(`kKeLud;oVE1Z+Rbk@?O)8Av*pLL2=jS?mSMho!;apcUva=*r{!?Jc-#5va|fn> zTC#NeO)cgn`_InZF27-|xI+H@+E*X7ZOzU4>YX$*Tpzav=~t(3eEjA#U;T^tX}+$e zs%|qkiLQ)qn-Xrgw{+Q`Yax;f+v_)3`Nw^l^6aGg9Q&vHbAP>Ww_8^9WmAY|bj>fH zeOFTE=K7nm$9CV#{ckEB(l_;b_SC-r^1Ii^|KV*pT2OJmJZ^VV!cl#H+h`QO=cL^<4Oa%pr=K7>vna>WG=rKR} zS06A}UBA-n^Aq87^&2#{)jmIV>f-99Ue4YA^G{B266DTbD|E(>r|5nfTY1#a`SBEy9@9kX-E%JiP z#IMKI|E+ue#ZH26!l~#Ee#s11sa5^2cCRc7*JXb4-p2>qS?cpQe4pI7JT~64 zYHLVlNW&9v-)pzOZ8^tKdG}fHx?l0~Yh|?8U-$C+bMuqGW?%K;Z{{_tCH@4ZF2UM>E` zH^)-D_cX)I|2H4_9F~>MoL6%wu3=8`JBO3Ok*iF!96l{od!1VymEQ2DDA7cyDV9m|k6R>K>r~LgNuXx*k-(UUs>FvbW&WjVSbcF=VPu=r+`sEEg6Z-l8 z=2TcXT(bGuvNt*Q%d*Bv%QuB&W_)~U{4;3s*KM{}WxnXzSDnh*uW@?&-^N#K9#*Zr z^znVfFUuc~&YQpcyXEFChM%^__ecJz`WKu!yOp8xDC7Kl8$Y~UUh_B7ea#2xs6nr| zm+1F@_WHVdzb;PK@^!834Ak4I^z>`s(tqWXHDwg)7cUQ5S_84Pberu{cHJ&rar!HGGD{Do}eo@W!{aSyYTw8kovF#%B;`P2SpBS z<+Ihz{0$SAy}4VF|LfO-*_!vB*57!2&2TmYqlB;g35omr@0v15xHd2dC^;~22r4kN za0oCsMd?mS%73ECcsZ$GV@gu~q5!UCpgjNPtq7!J)wOpnsGZX*?zM4yFr*=)`K=5( zTz2%HA86?A8TZl~r$Ix17i$)ZR9iyZ%t`vs*)$n1ABvtiIZ#=$-Xpm+h>gwaSi&xo zFpbm%gP(nd;F6AODGyH@o3#5vku8fhI%zUDFN6+Et_e7GAR$RM88kf9E9xaF;j=8+ zXQ9ZJrBGFnvm}uD5X8c$Y4gq@fo0k3vOM7wlISe%j73YQocSb0=RBH$mH>z z6|hjm!~-;1?9>``L7_G1LKml~mt!-i0i_nA!RiZ2=QBZyTtP#sn2PpLb#NHVAamqG z5e7xBrHd}L8X4R;%x(Z;-ve-3?uXxDeCiLS==ZN#FoI$dKUxjttNoLNh3Sf(;m?cqW8^ zB8ZiF!9fO3u%IEsEQ1J;m?-lCPG_(XSluR26mhXR2=AF7u=%6n8@98LFFtIRP g^J`!b`1GGKP)JM5pKZAU0|Nttr>mdKI;Vst08ZHz9smFU delta 7006 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 diff --git a/test/cases/vttest/1_2.sh.ghostty.png b/test/cases/vttest/1_2.sh.ghostty.png index e7c72d55214c5dc344837fdffae723449bd6a788..2b7af46134413b51043994906284be8326fba3d0 100644 GIT binary patch delta 6733 zcmewx{4;n%F>`⪻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 U`e{(Yz`(%Z>FVdQ&MBb@0FFX=Z2$lO delta 6784 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