From 9691268d3d273d45098729ece52ec96a3f9e0297 Mon Sep 17 00:00:00 2001 From: Rushmore75 Date: Tue, 27 Jan 2026 16:53:46 -0700 Subject: [PATCH] readme and create issue --- README.md | 4 ++++ readme/demo.nscim | 21 +++++++++++++++++++++ readme/screenshot.png | Bin 0 -> 21156 bytes src/app/clipboard.rs | 18 ++++++++++++++++++ 4 files changed, 43 insertions(+) create mode 100644 readme/demo.nscim create mode 100644 readme/screenshot.png diff --git a/README.md b/README.md index ee8cbfb..73a225a 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,12 @@ *New* Spreadsheet Calculator Improved +![Screenshot](readme/screenshot.png) + Based loosely off sc-im (spreadsheet calculator improvised), which has dumb keybinds and not many features. +[Checkout a demo file](readme/demo.nscim), download, then open with `neoscim demo.nscim`. + ## Keybinds ### Normal mode diff --git a/readme/demo.nscim b/readme/demo.nscim new file mode 100644 index 0000000..ab48685 --- /dev/null +++ b/readme/demo.nscim @@ -0,0 +1,21 @@ +,,, +Most of vim's movement works here as well,,, +,,, +,i,, +j,Movement,l, +,j,, +,,, +,"insert text with r, i, or a",, +,,, +1,,, +1,Text can overflow cells,, +1,But may get cut off if it's too long,,10 +1,,,If it reaches another cell +1,,, +Total:,=sum(A:A),Sum A:A, +,=math::log2(B14),Do math on the output of another function, +,,, +,,, +,,11,Number. +,,=C18+1,Referencing the number and adding 1 +,,,Copying the cell down will translate the reference diff --git a/readme/screenshot.png b/readme/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..9506f2f6e5d44132ad1bc3955535b5b1bf36c993 GIT binary patch literal 21156 zcma&O2RxQ-|37{rNkk|Tsg%8vy%iA|p&~mnvPV{C=4C`#$w)>rviHsoiR`^)WhQ(4 zKWE+d{d=D0`~1GYzgOLNuIs$c^SF-jIo_Z5`~5lm?2I(hyif*_}4Zc8d72=+FD zV4Xg39A0S{L0-ZCuxyp3Zz5S=spsLBV@5aRZy-o+2*Lg%T=*T|>h?oh1R;Hj{>2(K zyy%D^$^tTyH|{xVFO4|6s2Egn9JaT-FFpOvw-@^f)1clAd)Ekd60Q{QnXj0+{ZG$d zFs^njeb1xB+jw`q>4k<8zj`}iQjUP22W^tX0aGG}tTnrMh~FJP4JM4e@mb?E-6toC zHKQNTY)R*lH!t`+E}W-x8O>JJ9yD^z-<@uj-N|AY`^8$LmwQZH68*uykz{s>7Jd?! z1Mx*k;71Ajk*6a1R=9Z7I2rm1-D&!5^aV+L?|-?Z+sACUgv5Dk`97}-RnP??@^bs7 z+TKi!h!_k8LrO~KLMv-rT3UK7rtS0R&vz~05wf@CR{a?hD%TpRwpZ(jbKMS}&CtV> zz3Y#~V@OA-EGwQb4HdJ*_`~Nzb#v9QTcl_Ms?V}K7{7Qpaq(qzbinTJv+(e6-Ho|# zpPQR&yz$9s_3(&kf}}6Hp1C3w9Y4{NKac$M1DO4X;Nr0CUn z;;xs-SiA2HjpaP)O2Mej6cR>6L^w|RGtdsc)B6H_QzmGxtlY_LaD}9yFO=@iHP_vz zCp!iX z)XdBV4=kK(#vSkI;hTzV4SU`2I-X!TRy8+}&j8&sbAB71^kcMABlv=lJ?n!^b)PEN zz1sPwiA6=^r%s(RHa7nBhRcX{7afg09rp_`!l#d6jk#`J&}65$e*OA2o9WwXtmM?9 zE^5JwckW2szkfD8Jslo+iJO~yJilEutoV)|B^Ns1Jm>@^<8=48*ANd19T$>}2bs0$ z_cK;^7qj`CFVAtf@7zgFNtqn4@rn|#rGM) zPBp&3xtTww{Bc9AklAK=;&t^t9kl-L!-xLpWKtAfJNEr+T%b|BD>=;YhWNvc518#j z)4rAvDu4UmgNOrb;sPrV&)KxJwA7Cu>!0J`O>g4h5xq-Ep{FHBe2Fg-A&kt-p+gIc zi)+Qz2d9viZ{9E!UkO)}mKd~@k?|k4AOD0!E%NNliA>QhazCOAp-0tKRaFCh^bw2G zv$Og=>GvJy68xfLb8aUeS`6gTC4QNOL02m@xgXXUuO=yE2rF^~i_9gFs8@Y*SUvHf zre;v3^HxiUG>wxaWheW>!a}%wx@3O5d<^fzh{M<|2?-o}xhRiYf#i?sd{6b4*|DU^ zy-6g*yNNFXtGqA>UsMTC$YvUoCu7JP6Ct1Hg-4v2oSfV|wK3n-(!o1FR$ZOPl*Ma4 z=nd0d@B5cGYSnHco694CK|zG9T4eIH z6b+o;*KZ2OLd*%j+2PnXRVzK`B~f9JJcV-TfUj_z|C zl`juIsy){#x4%{K7XI7Jvge&$(lyBcW3Z4#uUaKVt_I@6G#;Xs`Cw;ub4~~XrfS2n z_*AlwTIJ+)baW;5OXtyEPLS|}&O2sbu0?qgQ7bZ|l$Dj8KE}tufCs_Is(hrSBekcm zPk(29hX2_Hqq2(1tFSPy-HvDbEoaSYRN;93Lz+MZ?%z z_d_QG$H1wMj*io7FKR!(y21(ZYUg=JLtAHil5_~s5DTq{uCyZ7hq@w?T zpp1t4W3>=);fL}0)7JC*>zS$%^4&7L7q?eh=oha3Y&ujlAhQd#tiE4#*QoTTf&qaY zxf^>K5&R8ybY90#Ms2S?s_;fBP$tw+2uV4${zNy$XGenHnEmvA0bY` z*2#|P6NrZg&S@6x)dQyWXssvJB*N$ij&yKNhv-=HR!|C#ts-v?Xc2J@MsWxC)t$qG zngfT~K(nyWrb|2y#K^m~7Nzcs?00>ivW%?J4pDL$jw>{rm4cpwP_;cBrZ{fJPg`V1 zF|tEDH0tp2d0P8b<2Ek@NgTr;i%2TDcVKD!l=_~pgVS1>G4tETuL9V%HdgyspH}Q@ z=lT81$W{_Jw>3y|M`Ro-qH@|XTe@dfg%l@;pKBV}zV5pqMsX#j%CCD!!;K?0 zIE+6hbFY$OWX%=}5$r-XXg02IRJvhjUcP`_dPdbTw~hT;K@=~3F=(AhOS?jpLf&wd z2M6~=F_XrXC%#y_xaW;+j$zK$)C-ND5EoMLa7&|oLrkKGJ1zYQ7v7npFpfUb@*Q76 z5cyym{jJ`lqa*~W{y;7xBF)UFf>-9UbNz?C5d7JACIYc+Rq<#;vE^Doe)q7l+I8|9 z*ZRkEk8qcF<4!n!rDbwr{pdAz&sQZ@-~z+M(^&60hXkXA+tWcDwHLNND)}nmtvZ`b zIJ`AmUo9=yA?+G*%Ia;2f3fPfcXBK+IFaj=xa_jUIh7T^cbqj^)nss21kqnOC^5Lb z6^Ft2(c_CEbM$;etX&Fc5u9;nK4e9Tq)H6e=%7Ib3%-l7G@tx>W%hCXitOVZCCc7v zln9}R{o}`G<1VX1NLz<)`9|i=#A_R0{pQR)7MsRz3@mOMgn&lk)q1w^r^GNQ!q@LJBJ3E+Y2{lR2aV!nYA`N zH!tl!@*7$`n0P(0CHRWdhNRO^B#ZDpf4R+q`^50`VfqjPopsx9-xMzF=&T!E*@3~HS^a`J- zGIeh%jQ)inb!=iPzDf-1&njE!1Co-b%dwEnDS~L1!e=|>Jo1C7`mU-~$HgAF6C$_E z^?hx)NR<3K-W*Bvk-EInJ+0}^3kDlLI-yZ2SMA%BZ;3fWxPWDqr)G|+;vhj zRlCe(*JV7UOL0%c9{1)J{~0#!f2_<%<|&!Tb#g33nBwSo{37B0TlKkT!wG~*L^fL^ z4*K5`Z>bd+lc3vh$%w^|Vak0&pGgiTCqnLB(N!Tu`&Pldn1-#HYy^=L;R*)`DCnJ_ zcr9&9dq=j^U%lgM4YA8bxzWO@XvI~7wyWPWzlpJZ4oU7gZ!C3eYl6k}+4b=;3Pjk$ z{;6KX?A2e?xQNx^sx;!UweEf+X$7Y%lbDe?%T%Gwk)jY6&>Y6VBH@n_jO~3% zl<9Q0-b>K0CX~o_{T)U+l=D8N)CER^?j{n3>dKXIJ!B$Ue)V7vyM{nZnx$Bi;VNI) ze(}9x;!pW%-bT5Y#y-zho!Zm;MepcF?XVol14&wq?Tth_FZxND`o81T5<8cFh=+)e zEi$xNE$H&_@Ho!KIlu(+^@+4fELqnUA>Y54DO2iSb}75uXW(1_mGq2F?7^LEv{zbO zTi0ImIo}d4`?;Pw@?xk8!s$01v9wM~uRb1G;<#61*L_WSYw(a#w#{agDlt zut?gF+J#LHXs6$?Dq?MJmaBMuCDjk3l#i$o@uZcm$GlRoN|e{nHE^Zo=g57~=N2To zxgnImlbj?is46y>o=kUrMAZaM5(K@uFDEYwkP50?!xC}0^qQe6)0nenD*|_Moaf3J zs`H*RTsLi2>DBT?`|doex76UsSaT;S^Y3}Fuuq1mn$>m^{^6O5ML#431gAXOXV<8I)6&b^FlHHfjU%-RV<}GC^1wrg^ z=(G)%#B)*|h@p_g#=rF#Hh-XBZ&*w7M6B*#>l24sY4u$CytV zY?PV%tTUZ4>csV)IviVh#Z`4ey^=EcB2f-?0vWf%EAz2j>6h1;OP(@)YpXwO)5DA& zH$F9gyKTg)YAg1H8~w6C0^$1yWcxX9?CI9{$4AaoJdAirtxhp^wjwFhL1nSIQc{~s zEJ}rrdw#j_g=*D3i<567*0YM@XkE_6X;(h0nSVM7dCc}kmm;)KdX{K<(xh!yH}T?w z+V9XETj~V)glG7mb>}njRTn}g_v$#NK1<8@#ieYUF4GR_W?FOcU51k4zl%w#|{R2y&aMYGRY%WvrVt0eIM-tB(gs$z4@dzv3}B z4a%G7r=F@PMT{@X;k*njr;=&bpD4FE^LtmbtroZtIo%$^N31CF>&*JkpA+`w5on5v z!C1(qlkUGQ79oHg{zWiOs+cmyH^5IxN0bHt##AOTbKTTrtq(zem8(#SVtjC)wzGWc z8}x&7Dap(=d>dc!5Y5a|QH>SbxaTV^O2!3-8@JtsSp`KQZQ&B$nGR#*;7~;qXIk2_ zCuy>)xL&6an00t^#iAY>zGfa@xsk+T8br4sSXI~yy)Q=4GyRxO5>M+*C-ki z>ECZ(xO3n0;%Y1|5@q3vya@Ixd9X*0i0gkjhD0u$M!5ky();*Tvz?C+4})==(zd6I zIJXxBNa6d>61x)yLUs>uGniJ5HBx-1H=||q!94VEbTRRH*NZT{k5$be0`o2+KyOTqs|=2Cu8nf!~7bH;;G4oK*R&muSrNCRfNOPugaL47G1Md`t@Cv zi!dx`Sw+H1en)q)W%<6Bm;;aLA0!=J_h-uf3zEK8!+?HS z*-Ia57!uj_tBmMG-z!PGX8ADO&mKN$*HX z`roqibax)*DxsS)ntOAd6r#efu_eh{GEKt`4`f$gvuXHRPc=U3&v^u7N`Ij#1 $ zP6Pf1C0iM9<-$$w2hjoHZPvMih17+$0%q4NR4fwNEfSoG8uz4d67-LI>}wnD;U#{0 zjfZ?D$Gg-T@1#PXksBnznhR@1?Ow!OGO;st@r;Q3K@;~LS{-C(eXr&nRgt?7wZ z%~=^7kwW{C`)o6V$^AiL>NriE`^nAw7ZR##gquR#!Y^HJ#MF zz1-0XPyV0lMey_Mvh111X7AHZ%#`UP9v5Vsqpv=ZWTRZTcnsnHcyJP)(1On8GdMkT zf}tCaLarFOD18W@yZyZ_#_zR`+Z#GTtxqoPa%Y|qtfpAAv^UC&s&>?Ct-OQHt`LKo#rTwtYPQRNp1T1sQoy-GeOQLF0z@j zlV>Q$f*lpOSBCIZ`WDMW<1T=eO+pY^BE3K(WfNb z)1hbZhpuPrc@6(Q?oBE%Kf7wrqb$kt){a9mp%|f$x|=ETB0u_Pj{lRW5&l#8R3C2D z_dWUA{9cBa^VF1U(pviB!(>b^hF>PZf!cz^IZ565JbR7T#38lt#G6dQK=lCQ23d#I z`p@kAaHmtImr9$rA3RZP9+KMemHHteiwSwcGE<~BTCD6!*uI*f5Gli1eWx+Ur2SlY?jsvN$^tb6j@wPptg z$=G_fk}HijWY>G5r^~5QJh0$e= zSg$hYJu{WF%!phXbEoK~EYkI|rs6$Uj7!$n!AA|F$+$uOu0!LJyVt9k_VA&TmAG>h zwr9BQWKlp;Bf2s#W6m%@3ZjHYu=9QE@oz_#w#VJW;c&?wboF zN?SnU3U*&Rx`22%go=g^u^a#B&lVy?+zbS>t?|ie}=T` ziwh3Y;cYHyd*`WwhN9WtGp)`%vY+Dqvh_tW?z=EN{Tg$fN6uBM1nbnUf+f$#Y1Mnb zYStuEvpdaPw!dsplwFZmV1)HDUC*!iaV4gnoqzTHvgwY|d_7(Q+4F~y@1qPJGP}1b zr*ni289t2UWt#DSP%w3=(tZB9?#&fa;ndDpf5+?wQ-H(~mBQ86&p(f0Gy^qsY|i@q2kU-B+@s-)<8qMWqsChk4i@A|nZgM=2g8cG0%5xE}}N=$`fBnJY9Go)7rm|EgZFYDuQ7w*i*mDBpPkVXn1M zQ_6r?mKjSf3?|iC*HbYrQB(C>vO*Q?EEm0>88901DTHxsJAV=?ZFsin813Q}=!m6j zKXrh3Ks-X@18Zw1CeTYr#eMC80U7f7J-70kuh-m(zM6b3jtXyFud=(<_QFfUDyh1k zf;X4L#K$(rl=|B7pmol^-ahiS+$-}x)()=D+p_XyH37WLlu&AJWY9F>a!AI)OTpRCuyFhFhm8^@{oVHhJ|er0Z-RqWUdF^=7JGSp5NcpX09@`!>O zg6OMO+e5CW&&^8I#)=(7-BfLx%dSRR=McPxo9Ld}@YOJue3M1Z%PF7Ls=7CrC}RK4 z#wCdoPlh%3gll=ew2tqoMswKGh*dtFRvNt}DXA5cZg732#OT!Swnit(vh;MB}Zs91@mCPd{HJ!x7K7TCbjcz=!(7iV6BaN>qyAuc0TMA zBz?fNk2$NB3QqB;HemkOs7|a$N zRv?!&Xdt2@$)as1!ord72+*L)!!CaLZa&2wS$*crRa!QZwC+y+OFvv&iAF?v&dAOq^;F>_*#THBw6suP|B>@{5}GnX~abIs%e z<$5NbK!$tj^qn8Dr3U?+k=DfP)cL^@k}&xGravZi3P2g(rktOE)9EkGUb;ESILJn$ zsEtM_=OKmnfEn*&1B1&fECkS5h;E_!Oi_6FnHiPTK*xp>toOUu1rolj8_~jM$w0eU z7{B_(m*-`W$nL>9;bUuMe3+a`9U2{GTB|}b7ZWs9vC79^Zc$aeEk4iotB;+ZwuKzx z+qju=PuNXMtXQk5%H#{FU9nzp3*j+Li4LpN4gDtQa(?pk%-6dQ&qu#7|2n%nZo&?` z5ron<`YmGv>e{hlx99f&DNKj4K6%nod#>f4#WWhz!|ZF>`KR4Vj)iD)aWueg+WG53 zuXvv3$t#sc=9Rwh-gBzZ2xT@fi&2CcH(riZdjee;Gt=%(zz!jNwai+je-zeg#&6ge z&R2#aMcTwm_qqP)YTZ1Xf1^iG$WU}kib3_S8I5w)Q*NW0y?;_39>2e?|2G{D1+f1j z)%8#eY*y)?k}Do1&b;i%paBFS&7P>HaPD2o!R6#Yv;Qla9B^s>Lhry_NI-PYw0%4- zIYhmJ%cS5zd1TT9{=R9V6vQhmGre%%CP!A04dBsFjZdiyiH>JFYiF)(Z{E zR0d$Z^_DE>F{>v~gZf7V!@qT)wA1ql$O#E&@#CW;eu)kCj)_%?rujcmp4eoowLB0V42;!O@&-mX` zGQk>HZfZ}MYh_hP-ttyr10IYNQ=yc4s)CuZ>|UQ~eUv|7wY~aCc=Z#G9a zW7uKLwZ#g?@j)8CD{Q?%7+eqHtSpH?V4ik!AR0EWmXy@n)dUFx<2G8j3*57umDZ#`JaMwA z_!4BDWrN3DmhMMkAHTH0b}QohnSd}^TG^0)gN~6ymIZ9;KSj7+%~BBoWU;S#4oC@- zl22Cd3SritH;L$wA5!M!<*l|K?YD3L$ZwzC1flQ}3}(B?7Il%?0O=YvbV+1tbd6;& zB&a8PCcE0^pEowEEvX0hWX(AC{9uLF`I$%Wm~X8x7DT%F^XamB(ja;C)l!2?MgURqX{+WBY` zFCe~qptZwVCRzFx4TuxaGDKO?k;{;PO=7J)7O*CIO{<>!r4oUATh-9LzH{~&K~9H= zba3G8HiTv2MQz5dQh1;d&+H?zu50Di=V2pN5uNd!92m=br&H~Qc(jY|5ds~0(GB!n zT37`X?3xHNY}+mpUFNCzebGaPa_>O_Xe|ARe?+L;aa!*@QSq=?`Pbc_8gj%F6Iy()|RG zk;EEJfjW{!TE!56$|B5R9oUwu-uiKm2;c^f0NX(b{6wF^B*EG2!1wX_V+cNIR$)`x z4SR0T)(fd3_e-Z|*Wv&{7Iolv{Wt6h6cyi@_CtGI!=Jy}n=ReUZepN04+V+&Lh0y@fy7?O*zZh zWWuGV774!sX(C`4(NqBDq|yfgVgwKc38%8ZfA~wBPq428&g9Rs*%ZB1P<#Hi6fA|R zZdbNqcR+_m5(g*vzPRHdXjqyqA~-L!xk!YA?BXiVY&yQ$T}^OvkfiK_JTbSXB(p7p zd4x4fyE0(3()qWSz#_E`-whZ^H9vDtDbvP6u4z3r3cCEw9;#4iR#{(a>&_6U~V6x;_o$$(7oc4>(iz+%P zb~&L}AWmWD$f*78i`lo%M2ez2SIu}eB&mUA;2sPg-@5Hi?YcaOb;GD3VnwHMW~G-= z0u!BimY5;p#nW5)R4aH03ZML)&O*OULe?4aD6g(83Gr|lyM2i}W+ZYw){?uYh5pSt zmABPQSpYrH0&JA~m%3RbrVR61$jY-^gzH<0#r6@TWTk5FuC_M2&fS<-udoo-p3Ag} zQK_=4ztythGtC0GPHg|MiruE5-|F_}?lPyKwuvFDc{uxYZCCJnOQ3p8*i3spjDvx# z=GlLRV5J51L6KyOkifX)F2VbdKlaQBoQUWvIYtb#o5Vl6z>;o0+VfCPU2>#s~6oCDig{l>}9zhWcu;MDcz0si&t$jxTAv?{r`5%vTYJDzt{K3!t4m>8AW1!Cpo zPUAy>;Z%_a1+VRV+15{TL-gdIXmpkly8A%@54I18neyzK2bxBm&U16v~Ynk(^)_ns)! z&^bbc&uT7GYgp$?Pf0nh@55x9UUK=0=&Wq|1maB{`0g-VOWj;FI2 z%e=I-=f&;(HWS0wfRY%k3!Q+rqm{Re^~QbcH%= zTOW^4y#R5@+q!BWL!dLJxO)b6G#Zi*jT?^(I|0fOmq{PcCaNv)Hl55v|cli+n%-kd~l0NuJSk| zgogj5xr5tJ`Cu@5JY!sBC^IyfL6lwgCO~ z6P$zd-pu(r{*au-OQ3^yFtutlr!H?0FmgU z5-}dX{c|c+pp0hk$cn0Jc;^zcEKMWGya-~ue#yX5Q?tYhYpB?=30y2|gQnR`d}Jhc z>58GEugNw5^B|u9{6SlMcfH)jh)t_+Mr?-L*v3@GZ!m4nwT1(;7_K{*d0fo3f9f-( zj`!}0ePZJDBba6HKi0(aS<+~`?HGVJgdjv@Q>~ttHt{RD`AF`WzPCI@EjI6f`k`ky z*STWe24s$b%Dr0mqdl2;Yy^mwoa3R;iy+iY!&Z`JP@HVypM@87rG_$;=8 zc2FOWb3>K1)kri_jTUvPrRxNl-Yb%x>HUHCl4qCi^L}&oH=|FL+Y>QcR+HI*;g6P< zr}C09@hfGE>~gXEBn*mg>%YbcT`2-?u}JAK;WIfGK$uUI@>=yp*g7=y&sK;U2t9aS z65c?rH#`kmCvIRox~q9MHpjHPXJU&`4cI;}lO@W>fp1DuOTDWXh$S1};jy25J#(&n z{F9q&>3#*g>+)WRWG&YC7onP!k}W>uaDZU_tIF5jZ<@yT#y043Qq>(ew8$t!Z`m&U zKohKQl>`VbIjP|kk1HH4-9DSS-QK}>In?Fogl4y9?X5Pt#{s;AXS&w7#?)LAgs?x1 zhfe(=GwT_TPK%$ml5!?zufd6l@&$r&E};&njpsRA=@hIT5`Hj?PGDPo5F?<}6APcu zX7JD5Z~&^qZAsgsK>VbpCzajcPn$8tCnhl!Mc~^4vbLP(rRUq{G^t&0{qX7g>kABZ zh60xj*7qKK5Fw7~rx?&Ptp9sRY+y)$!;L(YOGjTB>v6k{*d)fSo8 z1!J(m-ZNF48hcUQWF+I>K;uf8&SNz0cQJn9h?$|b(;3YIGvuo4pn2OFhsg4;;0AF{ zt>uh@G2=a<9wDp&J$hgpCvbn3VXF9EZ^J~jeyOcdnS#~Y#?g9k@WzrA-C+B80Vf7O zVOa~>ai7fI#Yydrtr4km|0K?N!P(Al{EQ~&MWMCxV`{N|C0SY@0cqNbay z(%}`&OmbLm-khnLu@Y3E{k6IG>ge>MkUu7|5JJu$Ix(R0uB!`dq82d*57WyE-eu$x z5CMUye(3Z*jWN+hKkA4G`6MLM#}M#00g5uJLv*-R!T^DMfqVv10uMQd(}+3uiK3ulGsr1bnrKO(CrLgM`lpj@Y6ZCq$~KQGOXp^2@^Wt5 zrlyJWD}Mk1ov8iZfOH+Xh9#RrgXSp2#TGM{oh`%(`SR+coCG%M&1lF-a4n7N8%_F0Qa|aKI^75=rv?jI=?4#)wL1E9|CKp>mp)C` zYmM>Q7;JR7!ZGHFF%V&EB zFw?M+4Jj6&$&ijmt&gkzpQNIs0B&#jx6?`3?{eE7I@k8^s*^B~gVvjO3`+$&EMzw}|lo`Xt)rtkRHU9Ql&Io!$4 z{#>eDHDs~vc!Sfhv-9PD09`@~O(1A$74Wt8shEpco%pajOA`4gEg$m^judDCVr zo>br6Z~$!6xU+s`VPr4Rb>{sUieHY}79qD-r%tz;f_?@Jz{lZgH22MmhG#@q?x=Hv zqTnhXK9%vEKk(Ka*Sjc{mgv*&vdw>I4LHddtzItJi-0Xd#!J-+U{{X{!@FVm1Lwok z)he-lo8d5L|29L32M@@Bn9$7!rU$^X#T^+LB~c$tY8~X2&^p>ycUL>=m?-*UJ8w|n zP>v7p=0T`iq=I;DW!MG@NJu#Z!Sn|q_p8O3VbjPxeFPp;pCc8P&1x#{n-(_DQtiBTTpiN6e~H~uY^+l5AW4x z)-IKTaBz?u2f~2BD4nD3*_dDrG+r653dO8TslxJs1(f{kZ~dC)zv|cTTuispYuaO4 z0eqs&<9Dk+*E2rD*bCJNT@jqD=NlEsMPo_Gu!#yC>CHqrQF0zVkEMm}l^ zzL1)pep5^9!l>JxxxookR{tgsLiU)@qWdL*54Q(~AE5&5hqup8?(FPXmB&=$a{s=l zP0G$Qn}^tQOoaffkTxoQB~}yIMV4d1^IadN3j4HGEPlHN%9sFO$`^|w$ZEMsc#Pl| z@M8Ni#JiBr%*?d>QSJHI?*C5gftL9dXY;#Mfy9p14&SX^2|>1el+oe>_*sAu;F8IN zgL)_Y{^hc&%NG*I{HydsB!v<2YyB^;FX+#xpyVqi6{kM-cjgY3sOSV9;sD3nOM+9s z3fF#fv#C??u1S|@9Q8~a4O!WMb*A4p!dFDSFQ_?pNlSfH zGcfP>!!cz)34fPqknn)(7;WsojG+dXC&CjO0lT-;rYvjz zhwY$(DEm6#gB*$OBZ!rphJQ~AU&Q6~deds?3ay7RvQPK58NgsmLcA5h1u)0qtO8(( zR^sw;1Of5&^$iPE;@~PMYmk&gD9)3v@7F!=Fj5obd_uf7$N>qrYHteVesEN#WpJLP5rjC1 z5sqCYXAR2MG3F+&R(4u2!;OQx`y^v)X3bn@P3N~mt8SQNw@W)~0QIR+KMGPgs&1lm zPe_#EN044hgMo5s72{UKzcmke1Ixw*uGnZZcCB*`c zXixkj7osiUXV|6Hj6P|7h=JM%h~aAU+Ck8FkgB4IJ$TVSZA-&!8q4Sce0B;yo%I5UjtmlwUqs{8y|D1vV$ab1SQbXv5eyp?Vz%*6rKAESy$ z1D^?ppl%f&i(?2dq>*83s8Y{Dj8O2ro{p~@s>=i)O9)B?_1*sjx_;=2g+VHF4B^n4 zOy}(Oy(5a56!s6&Av9p=Pfbnr_-0%m#i@@Lv2Zo7h#QpIR6rsrhlK-7aviD=R~Z?W z$65{k7sfa6VNn!5vdyv7hj>g4R-@ZGkZrf7?Y_CNcmIHy!bp;;u*$N<)|5cJZtdud z73^{kbKqWb3cPx?x-!y@m|HEY3Op!Hs#|@SGrS2>I56LTL&E<7K&1?#n3ZeoZ|JL9 zEGYMWeCUN1zEtn_WUqeVYS)G84zw--t>`fy$m!Zg_ zCezG>qHbRRbp>6V(s`nYAj|8-N|M?X|BS=)g=5tKKCQHZHAzyI>&w9^-oAm^%t}}I znUu#w58$>R#0*yZ_68tiz>!ek{7}*%*LlkV3bmvQBErKF#AsFM2F$I1Aj_#IT`aJY zYG5eRjI_(YOc#HEq!M}<7$40ku{t5#6GEJ-SG3W2yg&rzHizN-<6zSNU?vrs7Lu2C zXOUwx-7KK_N8=tA5<}Rarl;)#qw6R(uVSE9tC6FN1@#{ZW>VSOmErQ;H7JTVV~o7h zWU*m>UxPjJzJ3%(l$pkFNYO%!fTq;vU1 zmh4oOG8OsAPIB}FxNl0$0d!U*Hu6QAl!|CZisd)t9e?7RBWruodBebl(t|Sd_4nHp zH>8|xE=L?aEqv2wbwxV3zB^4N_i;06DH{|VK~dT<4|=Y>Gh)Ct@(37$>ihBeD2X{T zE}1h;FY@DNPmv~TMx&KG5l~v7A6%j7^k2VwbZJJ#gHe>iWD6W;;U@}YWMnejIJ1-n zMwxGPTsF|X{46EN!~C;mzb~8kcg4uMjwB9YRnxVlDxI3y(qtF)@|_Y^rpeiV&*ym& zeg@4??JoMDmsn*xu(~ZA;iouxHP4EUBwz+zWFY$ky#~#{Ac>aSI5;B)obBuJMoRe$ zUyT=5ZC5Ix10febw_HueRjI-$UT}k0#NupbiOQFomAZafwyw=L8HR0i8h711*Q#8; z7{>;*MrX8b9^m$6bHYq7=$K^D%JD5>DFg2P+T+isQT_p~(Mbvs4RAZyO#pHc6)K@l zAVM*L-!XaZhTKnu`u55#+A%R~GFP#Nqp7$6jRsMey&=Vf7eD8M*aR{Xn#?EdOP~#0 z#TNy_J4*LvQItPU*%6q(p%H*yAxHJtciOv_cI-{!shz4<0FM24w!eU?)?O)wCb8=) zueL8wYLBTQ;%}%__)Gsbf#s?pq9&*^3>>uyxuJN5KW~#$NR<62wgAn+`Q{wR1*!kPRn1@FFoY40TrJ&dm|gHK|05mpmA$hO@SF?C=I>c|Z>+h9i)rOC`~p8Wz)&R*^RN%&FiF#{CB zjd=fK0>01lw>*wIi|%pT0vkvjlAC&#bTbV|9hkxWiO|g3m7A9llv+t-AZ@5Ce^v&d7x)J!cai2C~bwuN# zr7mFXW~m!IOSYe71ht;q1MP0UQ2vI9%gdi4x*+JyH|i)sc|MHpPNXhq8tWt0aS9B~ z%*=Q1-RqtvD$U)PfD*Y{MYnabpmUtqhWV6GF{V~-pLv}Sx%O9CDJ=J6gSo_OIe+YY zJ4Ua^ZvZ;kTqJgAb>E22|Bbmy$yaW^IJVs+dY;(W|9pkdtl`Z`|h{d&*CAL+cSWe5?P)5hp6tm*r($t6J+E87)>D3)~75ZGi1b zKP*8F3IOEnJmUe&pZiF5c{i>^J)dUwXysb$o|uHyTK!D}M!FKzEP&S08GeoRzn}5o z5r{^PhdZ-aP&jc)#aB8rHT48YX%_Wv@lfr8e0q1oi&js6z7DDcR{=iiP1O2q*Ihh3 zohv_Ig9j$mitWij64$?W%he7E;^y4kjmx9S?pMiwInuxu1IrHOez0}kUJu8Re!AD zZ9g+G0zEo;4z^*QStamgO(v6ScJ$Ajn_t}O^{zH#asx63mj3#p5QrI4b$cXx!S@UF z$w&PlW|uxqXLH4D@&6mg-7#qz2v^WwsBXDVFdwD(Gd@h42 zq3?`g#)rtHI&uJmo8rVk+s;P~asBkO?5#zjsj%esE1Lu7XL4yoEl#**P>;4-eWND6 zyEbTH4@tH22staC)!RKXLf4ZL?*-qN7<@iHCx;V0@svzfULN-*&zw0ARH=Sc%f+tV z8(Fz#^p(0|Z@HXLF8y1uD^yqb<>AwZ$qaOV++2{*aLwAoMmofvVo}_5?^i9OfKJB) zo*MEe;3NR(z=Boi&)4tM`4Ol-K@A2cl)*n};C4D{u_OV@$8;zy5YB5=-%!_tvSbFe z%3qENiF|SUn#)JvB;_7`P0SU9x^Tg`04vF{mP><@oQFsM!Q2HuNIGglnZUj!T5n4Y zeGyqo0agiY_7c=kOD30DRb-q>nNOu8MC3DSz0Qvs)uDxVM1Il+7aFH6NpL4#$Omu* zffR5neO|+Ob>+Y$QfiL=a)48}NgZP>8Z(h7(3|9HZqig-8S?9Y@#6MXH@tXIF~(QF zstryH42&6AjQ`VZfpf2lBGa6JVrlI(dvu=^Gnq>qr=z&Z)5=$|D#x@!sISt6_>_)O zCr>XMhAKw!vTge%l$EKMG8ux>6vkn*)b$}GmV4~B^F{)c#6x&B?fqB-K`+$TKAL_q_vMSt*;=u6_!r}k1*0;d(NpTIn`7M zpc**xMvDVCgL9`JC=`HW_uoEoEj(33aJBSu#Lv_ zoAQvKF%*3NAH#0Dq2UhKOc8YAE^gwU^FZu>4g|D?y7vMuGQGD_3rs##1=Jm%DjN5{ zF-H}wR=?*eLAc_>#=Wx+?q#%@K&tkh=hKT{ekshE{JqlHT%*J|#Lwzm1+Vg(@jC^+ zRW?fpJ4Zr_bHmk)M|ZN z20bMKT_xdAFS_q@BD!CqI2~sqRC6BH9fyD7z!3ubvekuwPlqyy*RKEfrn|Ap|HK1f>1ztcIQVzSF-6^IT;vL%+hB0Woid0$4k=MGoG^jW?c| z18}-pjDjj13YSb1G9n&*a*l}=TtvXSd}OSU{yofb=&Ub!tPQX+I;9kVv%R=2kJVgd z=Y-zAnUw8E>Ak`3fZ1FNkkDr|JN*?u3QoEP&QxyStrkkGn1O)RuRGj(nU2FG*w0v- zDoyTBozC{As?9-VyWR1xWe!jdtp7|>ctrR(99Dt4L||rW6q!BA3wo>pXDv{nS=U|I zNZ|;IBL1+kx32w_&V1zTnwZc~QuKrX011v8-=x1~>xdzr;G%Fvtie*^rDk^iaC!Oe zCvNw68`}OduxQVG0Fz`^#z8+1pIhZpLLuj3s%Qayq-e#2rVm)m!Y+39Z7gLLat6MR zY^(|TPS%^1a-~VG%_#r<+6yV?$|AMh(~G$@i}kmR0>BTcs9qM(8|L@FR}^~qNR%r2xv4yAMphaAVo`As$!WeDMECtZYTwrR z+#C0FI;ugVG%HcY)jX|=Q0&B#bLjb{s5G`yCc*a!wIx%hB^UiQoHrBLU@SK~zQwl% zyO@Ut3-(SWh=epZ^OblMaXoEZdua^Wpqu-(ngy;&ky3f1^N6jw)q9fo@&^_l>iHl- zd<0z6F8q`5{Q2{%lYtyk5#0)JuH)W`WPM^sul=MYoM~M?+kRz~tvF*zf)yP~01p#@ zli)mqfxP$4o5sIS#XzASTQD@tlL0*pUGzAp6Gq?7XJG!~q+&DZc1!ZN9tX ztzJyJ;wZYCYn{&aN_r#ThN==AWs8>vRg6O3C_4vxZ43h6LBdnqDX~QAmK*dY-1tLa zU*Et3?eLLU;!@NtdE4fZ9YOz=T5`%56NbYSz6`lm4P1%&b%*B%;;f`CuEE#yK|A8Rn6mD zl9$6N?%#*Lh{ItlKQ_n3^kA<0N4*&h(oxGOcO%{UXyUZv9~6a81#q<+@ccdA~1zozxm-W(cZ43{0!~CcE8f z-kE2J+T_Mt>%edp?#qV9z*bkR=y1X!fdsazb2w74+a~m|LE+#*{FTERtz|btrz+h< z`bq^b0zo~|blLs+E#}t|rcWrp88=)vTwCzEN;7qLT9Zi!H1X;q1A;rlBez-g zc~K7$J(?8#@es-V@epD3&v6EO6;#UF9`6;mbgEX2(S8-y@A&I7ISiQOvlkQb*+rO{ ze9Bhql<$SNxT)Q8Nd3IZMz91?{B#z+KoZC} z7Kp8*U5_u3P<%=62V{TRo?MYrmwWr{^TAB)p1H}!&-^+G&OtEVaDB&vXW88`$L~QP zJ!tv;Raty&Y%G09q~V<6TVebUUH&W8N7|(_4^&jha^r!Ng*y7G0Wxg=^(~e?IL?K+ z*y!8fNNHNppivx~oM*XzenxIR2kXcl` zF2F(S9gc^BKlR(RXE9Wb+$_z)23%9EFn^VPw5&EtW|EUA`yAgp2+14~3`<*5bgY^F z246&FcBz4`{$oG00x#3e+o+d`d_s@X&$X-$tp8wa5eK3Wa_HQzIdqeHwT@et&*ug` ztVrE4lagpNHCw;7P`lOyt{(fBPe3pL6pW5Epq*q_u z-|qKu4@>#(_-+n7tt)1zvnSEGko%{!WOyo6hQ!=T$Im1uD$XoEDN(y5F zIJy&KUZnpKTxb`fj|Dc6_Lt>B3fr#L_E+`b|1TM4fp*A0kb@DdM8-3r70AMGh}mxW|^fB@%ZU} zbeB@$cjkRT95k563p|L3igfLwh4^2h=x^x*9D{MeVOBZiZ(TzVV+VdenwCtVpokR6~jni$h#rA*c(BKUo@O;iU;lrv_xxKp!z=`v zHNBwngR^yNObW3PI1T_@Fn(YNJx1gwK{=Y`_{zMmCeW;$Nc%VcaaYJIJ|-p*DmxRv zJh~0q(CSk0*knrt3!Inr=}L%j;@=~g$XrvsR5XMjI&M33huckJlXb*m^}D|ot#{T9 z&@&Oh72opVcR8*S-rb1tJHr+Z_3fhZ9Fs zFcp9*YCPB)BaTz>v#dTKA9LGdgF9L6Efr6FlfHQ0_ph;oN>9aTZv1DJGz|?6=*eGe zkVa3&IgHjo`89fYklb70hdXEfv=xE2{wY@HO)ES)+*_IXYwoSV0|8qAbb>RdNS2bM zUSK1R!f*eceCObEP!fQHpl2|k2l}8VR^;m8?rts-WcLN;~Jl_il6$Qt~`xa{=#iqHrdS&c7LIViRq2G)FWnue*dc%{TlM&%mJm@0b3MqUX&kG%6)P zx!CJ(poGrL9k%Z!k%Q*!$>s;8<`0gqk`;XWPJ1~c!!%&?9U2FQz&HTSiB9po@Tyt^ zlr=z;rND_=V2N?z)mhN`!@RR~3@85{d(c;XZ9)30*i!+JXmtQa&#cA&85um@nTs9f zzVG@@|J#E96DoHE{TF38aJ|CyBM(F&2T^}{@ z@#sygd|0v)Izf7c5mKgpTD8eG4K&IxsVsgFcy14{#G4A7tweq)LFDyLI9!mi_L(9>1u(UF_i{$K9a^ zTqOxQ3gO8+x1diEKi0{#?ygg3IB+MQZ!%;hK-n^_gW}S!AO1;{e%0>-T%R5nme+UT z^R{%*i5(XU8NRx6T@3hW@apt&=P%ZYd%ilRT0m@ST*Y$#>tjCP#v%dWxd5kpeI=@% zGc&Ba7Bhb>a993;@~0XmQO3Z<19D=%-~uCeq1M6v)`Sg=3nw!Hk8^o2O;LIQ@Zg&l zYk`ZQ);<B}F-%N9O+<#AHVt*PeB}DvDNs8RkGEVXO0Kk6(hXYU;IAt zwu$G;qBX$2B5=I#;tLCg3?JZNv*Q=D13wR&g`NZ*&IX*4fAgO`d&-A@9qcpK08f@= N@O1TaS?83{1OTNFlequ@ literal 0 HcmV?d00001 diff --git a/src/app/clipboard.rs b/src/app/clipboard.rs index 7dbab49..c056f37 100644 --- a/src/app/clipboard.rs +++ b/src/app/clipboard.rs @@ -367,3 +367,21 @@ fn copy_paste_var_in_function() { let a = app.grid.get_cell("A2").as_ref().expect("Should've been set by paste"); assert_eq!(a.to_string(), "=math::log2(A1)"); } + +#[test] +fn copy_paste_range_in_function() { + let mut app = App::new(); + app.grid.set_cell("A0", 1.to_string()); + app.grid.set_cell("A1", 1.to_string()); + app.grid.set_cell("A2", 1.to_string()); + + app.grid.set_cell("B0", "=sum(A:A)".to_string()); + app.grid.mv_cursor_to(1, 0); + app.mode = super::mode::Mode::Chord(Chord::new('y')); + Mode::process_key(&mut app, 'y'); + Mode::process_key(&mut app, 'l'); + Mode::process_key(&mut app, 'p'); + + let a = app.grid.get_cell("C0").as_ref().expect("Should've been set by paste"); + assert_eq!(a.to_string(), "=sum(B:B)"); +}