From 88f7ab0e8d99647757d5f12f00039ef6b1157fce Mon Sep 17 00:00:00 2001 From: spy Date: Tue, 15 Mar 2022 15:37:38 +0000 Subject: [PATCH] new structure --- .vscode/settings.json | 5 -- core/__pycache__/cursor.cpython-310.pyc | Bin 311 -> 818 bytes core/__pycache__/mode.cpython-310.pyc | Bin 0 -> 497 bytes core/__pycache__/statusbar.cpython-310.pyc | Bin 822 -> 1016 bytes core/__pycache__/utils.cpython-310.pyc | Bin 732 -> 934 bytes core/buffer.py | 0 core/cursor.py | 26 ++++++++- core/mode.py | 17 ++++++ core/statusbar.py | 50 ++++++++++-------- core/utils.py | 23 +++++--- lambda | 58 ++++++++++++--------- modes/__pycache__/command.cpython-310.pyc | Bin 1130 -> 1335 bytes modes/__pycache__/insert.cpython-310.pyc | Bin 520 -> 640 bytes modes/__pycache__/normal.cpython-310.pyc | Bin 861 -> 813 bytes modes/command.py | 50 ++++++++++++------ modes/insert.py | 34 ++++++++---- modes/normal.py | 27 ++++++---- 17 files changed, 195 insertions(+), 95 deletions(-) delete mode 100644 .vscode/settings.json create mode 100644 core/__pycache__/mode.cpython-310.pyc create mode 100644 core/buffer.py create mode 100644 core/mode.py diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index c53b90f..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "python.analysis.extraPaths": [ - "./modes" - ] -} \ No newline at end of file diff --git a/core/__pycache__/cursor.cpython-310.pyc b/core/__pycache__/cursor.cpython-310.pyc index 634fb05f756b5cf9d0c1cfde489707dbbdbbfbd9..e726a47e009dcf09e749e73ebdb70eca9ff79403 100644 GIT binary patch literal 818 zcmZXS&2G~`5XX1dpD77QrH6zf6p0JIV5t(Es)B^XF_&^mkt)Z#!d9F(-E~7#rKj*9 zaOA{O@Djdq$}4bz|Ev?$f|X`=_O~1is1Uv39B-WybHI+k+!ph|o`Lx- z7J$6~3-^rTqt2-ICPkS}Z@uG-li^kE7WrJ!;q~xp>}R=@YJM9WU%VNfyeh`QGB^38 zPiasTK5_`l}3fVMdwVW2RMW{3gX2-;6sMQ3M##`LL8?HeXN5P#?E z?|cLJhSs-rvu>KSrAgG`F5R2j`<%-v+fvS3$o~XAP_qrM9aL=wic2% z5V3G}H5$Qz`OnVIZ)XP94hDUK_PUhQ4JG6yCi})PxkmS=C_sR=#L$`=Rx`tEP6;sJ zkE9kL#-z%&NRf(%d~TglZOCVHuU!{kXof0?Qn1z{{`7uVS4D0M&Plg75zIUa9I z6c<;lM8ZO$nr^mKolfYuG7=Gttmn{NCB()edrfG~^~od&8pQh;5a|)^lK5o4>EQKN8=Sv`w&5aViV|s z;!1plE>luPxN^llKszol15O8wmd!v$kT~Dqv?~OM3@xnx!p$=!(2{6HhoE8=4ds%l z68e%Be1j{#2*W^i+2xZgo+@_I-JpDcu`nlgt!!(4vZP!=89K9%M5wDeUENJkdo$ z;Ti$mVVn7AF`sMGj=WT9p87bjSVMVckARf;4(2W{H%~jGY^pnUe$i3-tTRcceU)|w znL*#Sz31}_ABPq#U9xQ=R9KVOM1$2?UDibt*9tfHFfgDlwj;(3eKP3s6E`_HcF8`< zC0~lATt*I7%(1mrsE%+V=PTh*_ZD2UoPU-la4i|?xto_qPFyl4H@T?ozjCocUb6e( zqD>9|{~D}~s8&VTY21SK*SCz@=pi&=!(Ae7>RJIRot*l3q{p8|xgik^$!X}pnxJ%a zK34gt5a?*f;Rb!2DrIwn$}No5)|Z2Vy?HuD-|ODV`*&}>nCMwM_OZ>C9T>Aue074` zG6#{@(7>oK89g-Gjvk;9eziJl@CK8=419Irsx8+|{%I literal 822 zcma)4&2AGh5FW3+-pwkl5JJ$vfd~*Hmxd#UsDjc9QWXx|0#&tHyWNHT3AR(HwBZuo z0#$0c@eI5J58x}OJOGzmV4QA5PYAF4>9gmX&*Sk{8ygYe7<}3uzhD4A-Qwz?xOj?F z-$W1~NDdm zoV99Jhdy*buqQxa0PpW#`kZ-d7i5hGvY>`@QWN2Cf#5Ya-Z{m3cn2k6S{1UdC#QWOPx^UWj78i}DusI{Hd8&0)%N7n21*_&sZ;!4LEl3N z34UJNYm-fKja?@ZjYvcu&`0z!-Jxv~{#JL~E!l9@1m&)*Tz1b>u0N~js)j3Y8v`~R R;7z8v+;OeaE+vFb`UeSyy3GIp diff --git a/core/__pycache__/utils.cpython-310.pyc b/core/__pycache__/utils.cpython-310.pyc index 5950a7f7636455211f423e2d409fd4b4d077c94f..e307307cedfef9107cb2de5d4932d886307a110b 100644 GIT binary patch literal 934 zcmZ`%&2AGh5cbdhHKeo>ttdi@Rvb{5L-zou3IP)0TBLBx1#Nb$B#BFX1bvyaFf28xmD*8Ofh#Job$JeXh2*Ta4`Iue5*WG4|U9*G*9HhK7DY z01SA+O5Wq#`Jxb|?8(NLh1c`I1OJlsdACDD>jvV>bteHj^=gM5m*!js(9 zUK{mh5skMr^j8Al7h=Y)*o=dC#6TV}SDm6@740#@uLQ^iUwE9|+&L3XHr!<8f?dd& zG#*5Aek$;}@#pOJx&Lx;qo4Zme)yOgA70$TydeaZRJ%_;m1ifLhBEd$%j@}2;AcX3;qe}wxR!mkNu^{=IAb&*CK@Py50BP;~3qyLEnL+dg(5FzI!-9rFEQ*>zEiyVssD2kRb8V zeRp(1V4J|oLXC0Tr6lgS)m?(#mO>;sNCvpXmy)Q@hRDJfhm|{l9p7#AN^g literal 732 zcmZvZ&uiN-6vy?;PMRfyZYzu)is@n0ht>Bny202rgY=fmaQsAUYEPb|baQcF(Eb-= z&>Z(K>AF+?fgN_*lRZiT6X>h2-jko7K2np(h~T)qJ74@}g#7ZG-GMRk7N=r(jCDA_&H@-7oRWcY@xMJud;@RnXN{n7@vWdEE0R|Vp`o!*?x zWLlO@^m$d-s7$K`q;I0LCQ>^36u*kL6#LX({?KUq2v&AR0k>P<@03F>%wF4q0E+U!zOyl< to open a file and edit", @@ -33,39 +33,35 @@ def start_screen(stdscr): stdscr.addstr(start_y, start_x, text) -def start(stdscr): +def start(stdscr, file): # Initialise data before starting - data = {"cursor_y": 0, "cursor_x": 0, "commands": []} - - # Clear and refresh the screen for a blank canvas - stdscr.clear() - stdscr.refresh() + data = { + "cursor_y": 0, + "cursor_x": 0, + "height": 0, + "width": 0, + "mode": "normal", + "icon": "λ", + "file": file, + "statusbar_theme": "filled" + } # Initialise colors colors.init_colors() - # Load the start screen - start_screen(stdscr) - # Change the cursor shape cursor.cursor_mode("block") + # Start the screen + start_screen(stdscr) + # Main loop while True: # Get the height and width of the screen - height, width = stdscr.getmaxyx() + data["height"], data["width"] = stdscr.getmaxyx() - # Activate normal mode - data = normal.activate(stdscr, height, width, data) - - # Calculate a valid cursor position from data - cursor_x = max(2, data["cursor_x"]) - cursor_x = min(width - 1, cursor_x) - cursor_y = max(0, data["cursor_y"]) - cursor_y = min(height - 3, cursor_y) - - # Move the cursor - stdscr.move(cursor_y, cursor_x) + # Activate the next mode + data = mode.activate(stdscr, data) # Refresh and clear the screen stdscr.refresh() @@ -73,12 +69,24 @@ def start(stdscr): def main(): + parser = argparse.ArgumentParser(description="Process some integers.") + parser.add_argument("file", metavar="file", type=str, nargs="?", + help="File to open") + + args = parser.parse_args() + # Check the file name + if args.file: + file = args.file + + else: + file = "[No Name]" + # Change the escape delay to 25ms # Fixes an issue where esc takes too long to press os.environ.setdefault("ESCDELAY", "25") # Initialise the screen - curses.wrapper(start) + curses.wrapper(start, file) if __name__ == "__main__": diff --git a/modes/__pycache__/command.cpython-310.pyc b/modes/__pycache__/command.cpython-310.pyc index 0fb2c77effb0c94f114a77452b84e84160877df1..474b6b80d223968703cec63fa380beeefc433f2e 100644 GIT binary patch literal 1335 zcmZWp&2Aev5ay8F)k=|MrwCHDDFU@fVF(B!^pZpB7IhT$&yAYK?oR|1#%f7PYwv1h zE+t3C>g2vcdMOH6$391&pod;~?a8m8Q->?1P+S6>of&e5!*4!rQmK>(j=%qG_I^d} zA8Tw5ipFO+)B7j{5fG6Wx)9SY1#8oYb(vs-|3bQ4IKsuRBj^EX6s|CWG^i=2+Sik` z=PTn(bQq;P~}$ws58zMMhID$N_$zke@%Avy2Hip{jD~qDE1xX>th}$zXvs zOm66{zyEk?<`@b!IZsQw=hT&(VI!*NTm|h z;Koh0NCRcK@U?HebyR8!YwZuBwlQ+~VRM+ovYC!&O(Cbv$d7x%Z^ns`X>+~x!FXm0 z@}&$WS~?cBcTsTQ)T16ylvSK%C_#zU7^mtjTn=m_Uk?|R0?r)rArLYkbGiv?W}yNB z2q&!(+g=M5dfA4TTKJ3B%NNA9Njt|bg5SCpO@*rq8NGm8B+o+CCmFr;76ie6h0Orr z?P6Q7;Y<`U{^^@O%v#hXQMv$>H*(2yS-yb2GbJk1H*8z+1U5%nT&vs?p|ZNi>io^@ zqB`fgoUseYIA(gas&gH&RU;?p!&)n=Jqtj}Z(mk3x`4TJ?IfBx|Ho*RPtdnXPSv}O zn;qj0WjGk>D}R%4S9fs5Kxqk;C46k0vry>a`9r@K2-zPD z!{d`E9wp;bmFmg#?B(pdzW2EGr2Y99Uw-xV{x?rM-#+{9`N84$Km7R9i|+eZw)uuM zwp6YZl+s_S4l*s92STIzWZ#0-P$NP(r{K`}Rg*-9dM5176#xvuYvFGQRyizG6Sa;@o?S6>R7pGiZ1eC`> z>Q`VKah#$Iw{S*U1UsFiv_(1P>_60E+~Yp%9w)~r3N9f6MZ}hrj`dizV`;sy?xm`k zFn6?G9_&6)9Z1~=W~gEu9m9Tr-fz#CVI22~tc-k+2uM2`U0{O@He^9D8u`vUqD_m> zEgnTgQpnN@I(g39QxSRASDLFtTE8oLovyatd5`O^4U;^};sIASSWEvSxdE}uyR~kf ziJBTtYg|lfX`HorT+4DURBi3LH=No)d=$x83s-{L2F5TWAqg=7suJ=qTgnQUzpEEe zMgdS!?;ZwJ@r-rQ%==aqCkuv=K^MeePIthAGgm2C=-NUTfPcwZ*aA6>w0GtMHosko zqTJVk@#gqCDxy94(0CW&0s&^mP(YaR0AlJZ88Vb~nTK->yfnwBbb_SN8!MzC&yR2N z4RNnqXNP>eJoELYVRLMJh&8L*!E0j&^+AW*E35MbhVI$Cs2Xp9XTjAso8bFOS2;Mn zfn3F-n^C1H0W|pE`irBZ{pP`?)0X(b$r9hX{2646%S&AObU$t-MGVc#EQ+WFZ7noJyg( z){i+?T3VLn6JfoM&!{e9x^@gRX7+5;YhqmMn8qJf&YfE#< zi*B$q=|V5Y!=V^(%g*xNAPS`$0qOcex(2a~$2zvOFQ&2tddr){X^*$IPGt|G(&>kF z8y5Y#Vw)~5j1%3P#9CYfP2B^=2*X=+8*gDkLsF)@gpo2~ATzQ8n;4Cehva$Tj!)TL_{p+NNlMp2-Y0*PGxeez@PK!hiM6HhRem(!?s7@b#j( z5j)G+99g;L(SE8yp`Jm6gBoB^M;`Hot`FvH*9VK{s1(yaWJh?=gGPI&={;s#C7*Hr zHN<>SgZ`!;xU#HfUfGjyIh6u$1cc$@^1P~>rf+)+$+qi_KfPmT$~QfAu1!`ZtqPKi zRFMBdKCDP45!cSA*H2r%k+_uI`q-?-$t#oc5HU1F8Anqta9%4FQeonnxZb(wg$j1RaE`xsB``vk`Xq%sNb zM&sN2heQ~nJ~H~zXj}MTrd?hnp&>&iARu)wRpv4u=1tWYYsk#ssD=c5oaL@uW=<2c x^jR@KVVuWYa&v+dt$3L?Mt73klwJMcqVDy6Zo9;nT2%Uqe!-H3KE$FgzX5TJWy1gf diff --git a/modes/__pycache__/normal.cpython-310.pyc b/modes/__pycache__/normal.cpython-310.pyc index 9cae3d912d66121c52a33975121653773e9706d3..3e8be884fa35cb41da7e96d5ea7141cdaea5bdd1 100644 GIT binary patch literal 813 zcmZuvJ#P~+81`%XKAK#rsFX@bAa$saZsFLdphA^cQI>95(BQ1Lca6SE$4ceTLug=(A6peG-`UF7` z0VS!R4;AfGAc6|^k@T71BET;f;RQ*fTl6F;wR_s+W~v9dvSBe*x>ki#`@7s3Ba%0` z^%sN&4C*gnOjWl*?SMQYg1sP&oRNlHYJZh|C)u#BWTvm?nUJ%r%&UROGbf_6 zNv*29e0DXrk-V10)JWG>Kd=P4lpiJE5D${?i2KP8#8&b%raV0Sg-F#Adf%H2!;8Dg zoT6dK5*qCP3TJNUlI@(ifE57FXBn)>4K-l{4PDS1XaN5O+Oxr+tc!6PDK~E$DS4@+ z9x4~ZbzvrL`%mLsH8yxJO)>O2rObxf2wf<3fZpnX1J{iWJah_iUYOA=H}V)QoggGM vVJ#Np#?qePMK293FKQ)y20pNt_vDVASKf%8VJg#7zIKDuAwrkLEP4DJNa?W^ literal 861 zcmZuwO>Yx15cSu7By7=AN+}WtgnC&Cb-7VNg^IXBK=hUi+N|Af$Zoc>ozO^|Q}`jt zk$=K(@Rd^~4oGl75eLQ&q%APgynXhY8QWuTy|K|oVBcnYy&ZaZCMjYaV&)@jCUe*UbqDlPu>7c zZd$l$;g*Fh3--h-xNTVsa35TS05J(^Oc{2wog^@xYl3U&s>v*`rEm+og