From ca50a3a51c7aef045b41f1fd9d3960749ca0363b Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sun, 22 Jun 2014 02:12:22 +0200 Subject: [PATCH] r8 --- README.md | 46 ++-- lazproj/Gui.tease.kde.png | Bin 0 -> 145647 bytes lazproj/coedit.lpi | 12 +- lazproj/coedit.lpr | 3 +- lazproj/test/coeditproj/test.coedit | 4 +- src/ce_common.pas | 387 ++++++++-------------------- src/ce_d2syn.pas | 61 ++++- src/ce_dmdwrap.pas | 44 ++-- src/ce_editor.pas | 2 +- src/ce_main.pas | 11 +- src/ce_messages.pas | 2 +- src/ce_projconf.lfm | 1 - src/ce_projconf.pas | 10 +- src/ce_project.pas | 257 ++++++++++++++++++ src/ce_projinspect.pas | 2 +- src/ce_synmemo.pas | 8 +- src/ce_widget.pas | 3 +- src/ce_widgettypes.pas | 40 +++ 18 files changed, 533 insertions(+), 360 deletions(-) create mode 100644 lazproj/Gui.tease.kde.png create mode 100644 src/ce_project.pas create mode 100644 src/ce_widgettypes.pas diff --git a/README.md b/README.md index 921b346b..867bc2cb 100644 --- a/README.md +++ b/README.md @@ -3,34 +3,42 @@ Coedit Coedit is a simple IDE for the [D2](http://dlang.org) lang. (**Co** mpile & **Edit**). -Initial features (planed) -------------------------- -- targets Win/Macos/Linux +Current features +---------------- +- multi platform (Win/Linux/Macos). - projects. - multiple project configurations (set of switches and options). -- project configurations templates (release, debug, etc.). -- D syntax highlighter, folding. -- compile, run directly from UI. +- compile, run directly from the UI. - instant run (without saving, script-like). -- basic auto completion (brackets, key-words, ...) - synchronized edition in a block. +- D syntax highlighter, folding, identifier markup. + +Planed in version 1 +------------------- +- project configurations templates (release, debug, etc.). +- basic auto completion (brackets, key-words, ...). +- console input handling. +- static library explorer (using JSON infos). Project information ------------------- -- draft -- programmed in Object pascal. -- [Lazarus](http://www.lazarus.freepascal.org) is used as IDE. -- based on dmd (gdc or lmd characteristics are not hanlded). -- no other third party dependencies (so far...) +- state: alpha 1. +- programmed in Object pascal with [Lazarus](http://www.lazarus.freepascal.org). +- based on *dmd* (*gdc* or *lmd* characteristics are not handled). +- no other third party dependencies (so far...but using *dscanner* and/or *dcd* is envisaged.) -Setup ------ -- clone this repo. +Setup & test +------------ +Coedit must be build from the sources: +- clone this repository (even if not mandatory, preferably from the latest tag, as tagged versions are more tested then the others.) - both [dmd](http://dlang.org/download.html) and [Lazarus](http://www.lazarus.freepascal.org) must be setup. -- open "coedit.lpr" in Lazarus. -- press the Run button. +- open "coedit.lpr" in *Lazarus*, set the build mode to *Release* +- press the Run button (or build) +- in coedit open *"lazproj\test\coeditproj\test.coedit"* from the project menu. Preview ------- - -![Interface screen-cap, under Windows](lazproj/Gui.tease.png "Coedit GUI preview") \ No newline at end of file +Windows version: +![Win screen-cap](lazproj/Gui.tease.png "Coedit GUI preview") +Linux version: +![Nux screen-cap](lazproj/Gui.tease.kde.png "Coedit GUI preview") \ No newline at end of file diff --git a/lazproj/Gui.tease.kde.png b/lazproj/Gui.tease.kde.png new file mode 100644 index 0000000000000000000000000000000000000000..bc377f5ac0a25766a802f5850177c8ff530604d0 GIT binary patch literal 145647 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�iU7a6GcESiXq^z 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�nO552IR{Fky$SARs|DV7K4sg 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≺D3TI^fOJ*j>bE&T3PiKDj~oq8+X^(z>3hBp|q7A zN7$O`*YbncB9th|-|32~KveLpUyE*$T!sS`%C?242yJDe$ZafLIQhh%NAxDN&IwT< zohBUvU_dDWEHZne!sD6RH~)rnl`$0N=;C;;AVgi@!Buph%0yctFX^pe`^`~qqRLRN zuFqqGbhhWw$dM(++2i@e=$#5N*oC{*pFU)>Vo@oxSZK?toUXb!2coZ~Jq$_u!l3`- z*3>Jo*WuEhhK^dUVD~bz`<`)GZ|=y}e|9=w7BHSHZIM%RY)cQ@oSK`fhhx&wULON! z_B;AaCGXxPH2=nUKk+l?M)A2k=+9u*qeeI)$>zsNI(Auo(5s$TsHb{1|l z-xxpKJ5g4S07GnEx@uW49AFskIpg7^02|lPciZ&|#Ib}eo(Du&pg->7d|L9f59G;y zX`Y=(@RJ(Wpb`<)=lqC;LtADFbltb zuOD?S`s(0Q2OYw$OoRnyW4RPj!wUQ5SL!n#O~e!x3GVVg^&4q9`rL^`^CIMOD_CWF z4jNOYPpBP8PR%xK&Rq#>Ub3YQm{5YP#&DM~ASd&U4;cO(3Tw--@s z=|15|`7s3;0EPE@1jb^hWT@@FFRC0P14LGL%Cn@(3R`RlR*+jR9Lk_6cf*Y8DD=*- zCi27-_=0`$yFW`Nil@gp&j6{nk?`l6tc!qauEl2ecY00!6xo6)O|NU0U$smfBAk<) ztK=TCEOjK&CDfCmzKndt8$u9r-(nDBaNP8pzA#5D9=r^*!|Ddv_ugiR^`zbL&U`3` zBS9nnSP>A(%QLPghu#FNA9d@0HMNP~BuiG|($ElH&|@b+(u8D-#(uZF^+K;{IO!1= z_o!;h;~eAJOl>6yNGSC<49ADQeB%Y5n&=JVO?Ka!zW;@|HO^CpP^Fp)hTO1 z?Qklrx)J#cmb@?eGUNCs9$5Tp+c|V(fXY7BhqMx1{ypL$S+G--nC(aZ3ya2_X45m< z97=RUH9fpCjhEZ}{LY7n|NZ+^5zn3ntPpzs0~V8sGD|XY^2SsgwcD-HI$b=_Dk_`KZ18u*^x8()>;#smI@X63VtKj zrl#5xzk}XtS3L{JnhxEa;#G8U{QUO~V9WcyjPL6!J)qbDQ{Pn5h zEoXDvQODGRIFymFgE5)Su}b={RwujFt(vIt6= z>~0pN5C2&e4b&W%=4o=v?||HSNYx%J5l!Y$O!2zlEWbeTIQOw4$Z+0*b{bkjxNWx3 zocWv~R`dmkAO0KRcX4=Vl#RDo0DX@7?l<;-UrQ;!du$k&Rp?R3d&Xx_r__G0Vik^}b$w>VR%O3^dG{O#=R;$n;@etZjOWXCz& z)YPJpFXj24u*Kg0}n;^dOGE}^I|GsBW-p<~B)#M0@F~Bv?WbeaaOhIl2DHGstRGQH3*JTM7 z%e}{cHmFZ8BsiZ!x$_%_YXC36TBR2|N=L6~xE~ga3llkvxIcV+$jQmw26=h+miycZ zhqCyBSse*PqS80%9Pzvz|G5%krKh7SW!Lu!L(|PO-ZCM?ve)Fzu^{Xd<)o+v8e$8F zW8>gGfnDicbFym~OvtiBHv>o;!P z_yaEn)Ti?0a%h_-5V|7aEb7a>34rq71tGG7gF_TMzCq4|Xl2nTuezb35TM{IPj^17 z3}u-xIm0K3gQV}dgKp=OmLybJ+~#I;AR9P_!|L%`^3bZO(f2=53vkp0@}DX zg>`@if-0)VI-=2j`F9;zeuF;#C7W_Pq)EVqWYk>12&Pq4{#d2hnpKkfFI0Y^6M`_7 zdP{D5lIZ(U-v@yn7-x8u3Js^5{hoS7v-@2^b{w)Og2pnE%iVOQKAv$;vas}Ut;WfP zWZvFtbC8V)v+ox*df}X0Yw)&pkFqdk%YXvWDt!vO5FBI&R%9UP@-7aJYgII#W}{cn ze*xl)=q#nD8*5e>R~RR}-eq8%-DYh2hpxV%w8#!<_@roOVtLw?qP|@5lmSZVQn#7v zJC^vvv3Cdxt`|tUDke-<*)Q7!nl2cdc?c=#>FJ@+aOvd7VNw6zl&}`&4=u%p!(SLR z!agSVG2^}KH$cpVM%!CjVmI3u!i8tkvMQgfN&D2dC%5 z(05T5{z>Rcm5G``^TuwwgU-T;BNMWn`ARkBM5*b)nu70kFy4o^t+TXTT;cUs(DAv9 zY0)5}0+4{G|zVm4EM(+!K{>-&V6gQ|%Q zR`2iMH2pi*lc~^4IsR=x3E`5D9hwnX~XxY~+VTd@VlTE|%Y^W_E)R#RfEwhxSLxo3rkDXq0 zXsjza)!3cpnCQx;*!b%kq~EO{VEOLYD*M!ZVu~GpKzl2c)|Ha=+S{-3I!t;5INt|8 zy^?tF;H4JL$zZ>}Wtc3u&e4$1<3MT^G6qQjkZW-h^QI{`9xicbgJ%dDKzrJ?-_g5u z*Vs%K=I49X-Hah(kc9vf+#YCGxz;x^BSqa+P1IE1#7k&eN+j-R>~C*_>jGi)8>|@+ z{uN?tI93^{^&v##IYEx1(fp*Ev??tQm2ck632mi6=+SQ8xbc{bEJ5+uO?^azT#}z2h1O_L z^?rO<#TTR3=by((;5{OrA-l7?yS=;nl(}yoOp_1p-koNYHNnBfWpW&4;XRtV0{mb{ zR@Hgqa88s?bJ~hLfP>i(GPd{N?R0zCGbm`6*E*J`#r0}51R>jVZJqn_fs;WuZeY}F zNc0)lj4pp%WkYmltYWG*tfZ^zQeqOYei}Pir}U_G=0lFpTcO^v zgk zxd#ZV;rv zJQNcZT3Apr-sMCX^i-Z9!;rpM_P3UJqubg1L$%_G}D-!2ZKZeSq+U<2{K&+}={?oU&iHHV=$i2SD!OML~ zSGJDsi$QF|YZzqlnLgcs`H01E82bzK?L@iWR{PW)^NNMiE;Ap@kH9&+J~WN5;t?$8{~#^?HTf{I1@9gnQXml>T*G`3mNRzRRKvNs=6-*h+w z)>5tI@DFME?VOQ5`5*L9M+iVv;qLR50jKC>g<3S`BJhj zt#;lBnF8hc&C)&7e`D%!#7QDxDKcy-P2~P$981*LQ@69gMISo z9j(q5`7TUtPwi6Kz5vsfcTw#m5Pkq(nWliRjKM_EdApe$*2d_7R7u6LSL%v+Gmf*5 zEmuY)_UrzbhzMn<{A;Mo)6TV-)ZaztuFU)T@kV$y5jMucdnx+Fqe&r{l zad8sCaiP?v2>NT)lDbdGUIf+Dy_=eyogMzz;(%=-w=h zR94t8Jv1Q+j*9Sa?@wVK&OSHym-4sWNhyJ%NC@pH@(&1T>!%7>>O<}ndg4~S(td~g zs^%*B|sx_kHeLmlO7nec7!`IgbF89u|PBe!qGl4g)QjUid zh1jL%dc9ZnygaXbJah9l94@{IPAk>TI(}xI?%V{VC#5Co-Gpv$%@U1QmDTTF953CM zWJqMPADpMLN?5)B`03Mtvds!#OOgxs>X*nx8C6wc{etUiYCOJt+bjaUkAN1CCywCt zZup=|QK^G^ph905ymK8pY3_+HKW%+-dUl5I*he|(w5U>fv?dk8SmHS(Q%c#R~)tSz5LVi&0RM;|8Q)2ec^9oCXBzM;G^$@GCp`B{)gvkL`-( zn3<&EcXI@nNX@Wst!EidI(~D*ti>ln_{Tab^%R?4RXU8CYBE9(V|M&*LGU)ie(Edo zc#9t?o)6(SeGo9D=p(312cZO8hvtsHg^r}{xy*NBOGnUO#_Q~mgBWEyJ`Sy!5nn{LA zgXisNot9M-n51AV)9M&4vRw}ff&Rv8*5jt=(0G~bpF2o)v&^cGhPQHjeP!Tw0&sKf zw%YWF_2Hj2y445-iJBVn&9^+AE(_%ZFE6jh%xy2hGN#Uh%S(Vgaa-lO+&mv8g->%8&bHvuWxTEL<*yrF$x7Zl}SzljwwB*>my6GvNQ#OXd&noi=lruq&^Di?PlxW(xNucBC2!Dj}`bN6NL#3;saJwhS@4+;7=M(MWc)J>8&s zvjV@;UC{xeDl?OK?4Z~IU7|MClo!;7tjN!sumpll!>O|JV94VMRBh4l( zQp48Pwq0%OvcC739qi+zMq|ppzM@TS40Lk=meEXFqb{)Te9@C4hc~b`3t=2z3g~M3<`h&0$ujAfR%=L;TCB@Ih2ok+el%4j8hq;zCQ+fNa%p-Np{PmC4+c$4EYUlX{1bq1T z5zQm+mldy?=9bvm3`PUtt_je&;HYZd0hfQBet`y4 z_;$~7Gt(#AAfGg=aK6nEYR|k(vjQS%t;*WKg!u2+uYV{)z%daP>Gwm(FOTH3`nW2K z^ydV8LVL2@U#|G|Ykr9b4LS9-MTqs!<+#|`FYDYe**{nFhD~;E-haPFI26yN=BTCi zuGWxs7i>9yRLh%zaI!flISv&jcd&?BTnPRTEdVEM)j!{@+X|(piHM71qcs|8mW(AT z3#w0^E^;7~DtwGs3Cj-FVvUsS1tjBpGzvy2DJje2Y*qx`nN7WX;t`j9HnvF}=~iY% z^C-IJ<1_ZT)}e=4p5+xyIqf(C6;pRBalEav8 zbGj|?zIq*;}DZ9g;0ZXsgwx4Ps|1kVzgYW0{V^);8@dqD;R8+(eHouHX`p8qe#F%xogRc%v z-VQSA8Li2$5rZ~5A6l7F>}Jc(3%vNZ-V^C?M9a8WVeKl~Y|?ZY6BvH%OQjyWO|JVt zeG&3RIl%lS-xY%wb%d>lZCvab%5Ku`#2=O!%&-wLKPBMcPv1O6V+C#+_L|NIg^xnnLcevwsQ-3Y6nf zuAS@fN$ef5WS^kQ=i!vgpvrTd;Fj15KK>=(B%3mO z9$zMFck3+DbGNJlnT&d|A!VWm_ACH#g1hq#DlwjLo9C(`W?N9S`8&k}4@nn!SC8pp zXD8$7#LQEi!k)j?9P(?U*koBgTA-#~XFH^Rodke!z1gJi$f?1kePSF%NQR=ek9ZWDG6zd3C4R z(BVOSA$fv5rbc+IV-JnW*=mCYpq67#mFz1sCkK6!s>3NYQJW*u;C-nv$0e4$lgSek zqU%ce`#&X^J9nH8wrL}zDtIHC53V+1g6Ik)o%kJ=zk!W-u7&oGQL9>?L@#W%RBsMr zK?on3cWK0}nw6$LVX?FSm7-B4qmu)zK*Vv-j;ic{X8!YRRuNoOFw1my4(~ERZM^Mi z++2CJF#0oUpy%r98iX%o`x-}c+xuOxJ&y!5ASaOE-V@w#Fs%ra={I_X~G z<42o-++t%koW!1?7IgMMb>=)fG~9ao*i=dzBYI)HpyTS%jY9ckL2%Lv9d-Wfjui|D zIM4g~<|ilyRT;cuJ5;N@g1^JwfWUc2>k+;X}7`8Scb$qSsTakq^GQ zF&lrNR7ws=MHib;T@|gpK%={6>xG;}`mk}l>f{8SdPhQ)M#uY$#9-FRS6AnW2UHl_ z6A!PD92{SGZB7e)bxM`QSXoRQmC>yTxjFW&_+Fpyt0qr8 z#&DvxI@Q9OCfzw<5EO345*kFAn>NO@;Jq~wmek*{g)Zh{g#}{~Q z+|wY12@enfL04l0iF{EdBcXGhS(Vp`=U0cd)xF#99gF?ocnf0^1S0&)QuZU&jO8sg z`6KT_J(=ppbFjNIQ<*Yb(1|xt@ZyP9=<0UhT1)V|bDJRebFFDrk5&%^r>T2#an12g z6G-raY?U>i|M>lG>j{*M?CwL|*Ie%0jn9Dnt>&PWsc~ms&b^BlMJj9Ey2O~@i!yVu zT-16MwIr&7o)}#nX;G?`jpy)z1BZ2-C z`1pLPL~xp0g%$2Zbv^g1Bt~I?!&FW-&np!LYtjscC|Vr&L4z)usoXcAvXO1z^SE`s zWH@Np7-?3rzCTgoUXEeDS8_27DJJJB{LED1z~1V|pnzPZ3=<%xbdsJgo4b>Zbgpw4 zGMqZKdwB1a$k79+Ee&ABFCPiRT*+^rksnU&p~hapTwUXnH)6sk(_ZbaCXq8{O=0rF zEu40VF9%nJ3=NGdgI+?BN~0D4-h=byV}Lr(d+gj<9_bK4cg&=dlf$6QhRl=WpG98P zyDLIXuIwzq03L7F?_6(9tNOK%cG>m5 z`eE;Sxc{&cb3yBw1jN^sv7&dL$IJ0jACPZ5B~bxv4@tBdV=4<0zJasnsxuG{YFOb_bDtG37vtI;}+qDl_;z1NN_ zUuzORR+r)g$Yhx!R`mzA#LyvQ3iJD}cQeKFpF_es9FAkWWUTJrmo~pj=WZ7*X8%QU zCvg{6yY^I`Mr};(;cki3q^Ij{(5r!lDC=?r0J=04)vm7x3lds|?B-;!Yt|={)8F5< z$L$lrSjqe;N0Zn6KVwUBvMM%*{mu@@-I!oOGD8GYPN*o!ab4!UmpQA*_EcI*m6a@) zGz>YRP~-N^VNB>3zlG{`)snNh$R;0qx~r#L75jR%Ga{m+1EkV#k2SqU5pz%S&00#|>0z|`Ouil;X=WMj3JbpeoTSnOvX zp+e%HKD+O>X6#ZFBYRIG_-l)0jE|4cnB(CJ>(<`Nx9wj5DgKMcD~-Tj zFh5x@q9;-rh*|4SrUM?T&g@cl`|8Mm3NzT^oYxyFoI2WT2)(h?J~&A3<>iIlK{)Y2 zAf=NG`P~9)X!YH|rfDg?=S0I2234lPltRAX{PVI*qez|Ey~KeDc5a6k6Qfqu;|dcE zepg(yb(~E3Xme-FvP-6Um!{oDwFOju*Fxsb|M|1rRwJ=I|9|1?Jh1$a4|mzIk(ziE z4t=r~`^M(M6%GB0*2tWk2}UUeix5Ae>0%G@)W^SHbzqrQM{SzBa!e(os3#S2SVb5& zYSU3KRA44)pzQY)?-oUWeWm9lysr1cG87)G%aXZSlRh7Qq;N`gP$|&Q$LG}UlrTGc zf!_t4ul5)JG(@vzs@DB4u*e7ArQ1WeDW+|8Olwz;gumNCyDiD+?3G(uOO%t+o&!I+ z^vh`cj`Ct0w;M;K~JKeLHr zxvdO)f4AJ#(X7%xn`-qn0N^?j@$Y&Mz%lFeql0v5F>%RLMBofWzckR3H|%hCmxn6& zKd?Jp0}ggquJ`l^Epo+e@Xv_p*Ei^w=0_{oV6=@vPhp&8?w+-sH}RWG{RNjSC0sZ=5d0e$$&l9 zl#E7H^v5%a?fMBzSGzgEhFnB#D`b7pead*4t5yPJWKmI3m`HqylH)y3)X1P5d$dfR zdQn`gRWYF{>>3nn$4f%ru#&&%N?vUNj(QC`_^=lDjN8cYuoxsc>(-!|1Mb7$++TFNxD~Z`&<2Jv7??|*~81+*qjg}Nj}Vmie%mDNckUNeCMQO@=59b z5&}HrV^REvU~p48bAkY3*7^j5eA= zV@L+sy0o|D4^MNo>B9aWCT z#RP$n_|&TK&utq7(c2~}v`l0JD}tTx2g_ei62z)+_vlz~6U1vYeGWIeBXHN}>ak|E zto5&?$1wUmCQ3)^DS*xMq?2Lb3|X?!hM=CDX4R;9FCusH7?P56+iQ{*@6HKscQfN9 zBy3%R`)oUC>G26H%7B1m1-e5GeV|g}Z=t&~<=1q$m;u6u+16htUZ0^6C`E&fQbZ1e znjms9e|`PJJ-HY$cp@dcJ4LEw=-k25=<6kx3g@87SoN`voEQ+5Cx@g~?0=muu#`q! zyLL?!EXsvuT-SkiyV)2f@0wSFvmX5FU=C47c1>ra=BQU1APU!rMt$yBnv&O!CX*qM z))g+au?2*Lu=22YgFCT-k_F6a;KgCka+!22EWu!NPy~0#TzmA4gNt_htd#gjsePQo zLhbSQ^J~?Do4r9ZrusYSo+W6Wn6A;Pej{zwlujPjxmi-N=M%6LPN zA1(S9cD#%xu<~^D!U8-&pMzANBU(DnOOb7;E3;EqJ?8^|s6r3BRhI}-aAM}dgLz+x z2dQj`y0C8nLqrFS4>OgPOdd_8Bzxz(g@i@L{je)(lFC%@H&>UCFb=qwD29AC?t&gc z@SvH3C*)La;!+*CGMNx1i|1Oz8V~bPbMJ}W%QkK{Db|JVa_W)` zFCuWtgazNj4X}+K)UpmH&n3LVm^)rSRX)yaTeiOWb)UHH};3Y#AF} z`vmGm7TJTQ))O^8Qw@Hf0D5nH)@RavlPtEwx5Y5Sqq=;|4x`=J)TI2vb9IwE<$%|T zn#nV<7S&<{=XOD%jD(QzR%1j!P@b1~JTK%{0&8{XJ?-3{LdPAc37zT~uiBDGZp)GN zc?0>^w`Sj>j#@R}Rj2H$y{~WysDH3_PbGhkR1!jjs4~q01HM9CP>>90>%@DbIZb|2 zjg(t9{B9wpL3kat@RwVShsdopaLS7WNTjmb-0d~tDz-o}%8>@^ec@U-<=TWiwVNCH z-;IG>)mm{mE7q_KnVIhkeNv5}1)|_|C0U4K-AI%l*l2DbjHujfM5Fl39d$h7UIzP^I!@IHZ9awsu&r{!(*x~+I$(S9_A5<0uSzrA{`%TkaZDaZe`o-o!EJe^cJZN6De!PBuqjNO3Y9(@`W^+*=+RqD> ztrV1$QyduyLT>AQUGcESiUet5rH!CrVGfZ|bcgYk8~lwB!0?95Azri_yYjKn+uq%eQu9RD9AMUP)dAEmcvtS+>#dhh#E+0X+HvMnQ~?GtZV~u@ zMd>|AQp~=9f5~2u973zHF&Q3+caoBB;+;Ny)Y8_*6ea|pzgMm(J&#sWzh0Z0j6N^4G0;ZAhT=-GxgRn8PI0)rH8IokNDc3|;FYCnM7@8KyR63KVVi3GDc%)_jol ztK))VvL)iq$!4qW$hT9+!)0!Sm-P+i2jzXU19Rvz8FA-+K>=-2rr~P81~jBYNPCi;UF4_pD{W4ZI&(yso&b<2=NC$P%GTsLk*7hH};pwMB78xKrD z+iP6dK+jw>0-lE?k*tlBjwm{#Y>_Z>8 zvYC4A-$nc`Tv0^&MDv2pFto%9_501BtL=+Vs{Pe|4yXiEiU)U3pE>=2B1k4qkhFFp zs;WycK+&u?`+vb@@&135H;eY_V;DhKg5sbL zWY>=2Dx?7Tiub>^&MD70JUfg~z zABe%=mQl8PrFJ3Kc3*+g773yGeb(7tS&|g9c-{?xF5yFYiA%Jqqsc!johIE9*Xl;U zzw65c%cbX|Q~qB&+lW8fQ{!Gb<_-@Zz5)w~@)s!T4%F;UCf8=M^^=;TFa2|Uo#<)) z;>cx5#RO~wuujx|K#kV7%*&{P?2`C*xjr_M8^8f3DmHZ!>d~B^{=P8P9Xi~x|72uy z3;FjS-)Z62w*rAwfs@9D-6v)gZsGmRN}1)2yHQN-M-;U(S}h3`h`hJQq?ccM_itxI zEh+S%Zm8YjHYHZj>y2GY_GZ>BDiO{08h+z>yu(Ww)hk^ZmEJ9ebat9hxVt)OFErw%&bT9Q}4s-|z=1 zxGNC)T_GYSeOBA;8iFpdD-H+@KpHZ_n9XXz6G+8TyI>~2?vB0x@70gFLr&&Hr1s_~ zLAL$MMA#h85>GI?EI+vzw_?=d58E=LSXZ$mt4NHI{pN+m+*cNp}T38A|-AW^6AO> zD=8}GAfFXO&%8tG7u0@()uROK~CiG+CdI^SPOrDp+i*R${Ct*ZDimpS^r}3%qKRp7@36tXOl$MvHjez>K+BM=X1# zZ-fv01<>oHdcVfB{K;)nVqRFPUh=u4DT!MCc@d7SUy>?L z)>cW@L>0T0u?z2L4Hkn#ALO*L?3sA9YE2OkTtK( z^{gFym!UnP=sPDOrLHIDgCX1{bhsXynH%IOj15}zr0??+?A*Q;+Q;}c-yqS?S4dWC zOIW7LhP%YKYwBQVH{|&CyHuB?lS>(wJ;U$wbY|E%b4DEs2_8}Mb1jM{4!rxqk!8WZ zx`|*t#H?j%Vpd`6S5#7}I;pGg<19E|>xSfX+imzgH)jhy4&Wl%EZgB8n2ufW-r$)G z0%)=B6*ah7gEMX%Xt{hUZ;S^(p#mHvg{k8%7#-+Oe}91s*VgQBjlhB3{|$yG|AoV zp*#+CKJ8{zyDeDOGBU~!e;rX>yim) zsp6rVfr(!%0~dLr{*t+Sr8x_aL+x3wS`X6?k31kN_URvuDqLxfx;srd=1GF;JZW#W z{4nHYOWwdAVpB6$GdVyPOEK&s$ahvk)k~9`Mt)z-FJ8d08dkLdDP20 zev%&WF!f^RBGhqIT@^{Z91asU9V$EpZ3X{>tIHxEn}=*>)GOD0q?RWO#RUHYJikRJ zqI)E7+yV>w_wTij>?Qh>eD7VSkZ?x5?c%y85T~ECX8I)SfR59PL%F;^j+X(k^0QdnU?iiFIM-kWn z8w(vhzynq4{jkhJqqaGz^h^f)ig8B)JZNd7*OQ;kZIZY_TuwW_my zk1wkKKaFneCDJ%7R`!iL;>3IHrcpRf^bTn_dBHH|ElO3&^$yLhRz z!VdcH;JmAY#NAH7MFu1Xk1CkzFEBdel-uWl2K(U42(}k+k9{*Mds#B9HK)KYo9pK` zh`9UjRP{8!wgyOdc&P>{%r5iuG@m_g(m?^yM8stb9KHQ0xJoEq-y)eSF5u zyIfZng7EOj-#in0tZeS?aWs|z!w-9w-0yRdCk^f^>ak}1#7;D`w$IH7t$q9yt26B) zA1@oM(YCkhwB9q}^h`=X-0(FQ29v0h4r^Zf;>GQS(evJ*{K64_-@W-rbV%C0Egj__ z7$TZF5I*m3WJEcZVOpgAfGQaFWdkm%i}+Ux*0G%%$`TM>!|uubnvoyqsj$`stgXp^ zs(~@Svp=aA!%Y^JoP*n9FH6aH{rcUa1d0Q@llK9*Z=1jG_x5p`32@!2DL=XrKQnbS z7Ew5yca(5&y;ftyj~d+EUCZa&tXm|TSr(Ng{t-Xjo&1s<<*ADF)kv4f+_>*5k!)#k z9#2EOV#>W~SZY<*r9SgWYS7pQ&*Y(ogu@Mae=niX!+8f+F0;$oz9hvyI>d&Q zKrpiIV1r=stS_hKdaBF~m_Frx#?5mwVAyQ>aI)OaY3-Q|#e*>AnX@Qi_zRlz#Bg9e zGa!HPLT-nYw>1%LCvv0bXofeIBBfT=f@$hKpM12w(05*>>GvDLFm1iYk5LOYi8Vj8 zuF0>w+)VPTs-Lv?lotMhTvlFPe3&e;$rie$;oEs42ZFyI1= zu=hG!`Cr^g1p^dNCy#lUVR<#`Mze zGA<34sVN2M^S%K=;z)&)kY!!HZVTnrtxY@Wqt%&I`iFO;Z_%M{HVz=TiAae*s4DFi z-1*QiY9__8^JAPaHjf1?gKy=U_FqO^BDnCXHMqpZreTaxdP{>ehD5HSV4S)>QNSsI zy<$RV=J;)2=1G$L+C-du9sj+!Y*}c4T|Uv4gxE;kWrQ{)hSzUV_U|yJo2sVy(r%37 z-`|)F`CY{7mfdHp zd1M4HqD_P9XI1eDwkqw}%OX>uWUygb@7Yi4GrNd?=}w!;@6r5GJW|GoS1;n z8euxH%uku2As*o&m$6@8*bPy6OxX9h$-b5tvKd{9WWcFF%6Rto#>x&94=C9DEasy+6;nrPbWg zk-b9n{`_ot=;@9aUCHDYW&O)CYS8HL$qvS)maNU38 zig=~Xs?0V1_``H-eEdxldu==S?Yg*=EqM#$l9|BNoS&qU5gJcYjR&t%(!9IXx6|JA zH+17(2O2f)KH-L?A}3F0;2(&H<{dAjX7L4fNLX22c_n}H9sVdP`gYt3rmjOSOAHQr z7O4`fQ9}$sa|Vi_p;4Ma$qQ{Oy1!VDF9``*lBkakf^AC!qANaro$I8Azl{G^It#yDdN; z1*C&tXf)bcSVSa|*7L|G=^Gxuy@}d~tN03su1%QY6S{NzFW!k@?ye-is(%Aa+E{&! zT0*RUuGGVcNXEg~KXo;T;sk->3@v*H=K7c1v3$0_aUZUb8*t3LQe{vI8RMkz>l*Zepjn9qB{cYfMK2yNNgx?=B<1NT4D+6m#tt630l2b9MJ_=Q zNhosE*bSf-mDl6t#u6?bLTzIonoIA*c()M3@g4;1z|e91*MT=I$*npf~ca(_;9 zS6lwD9vtCO`W<@Rn|%AC(Ozm|0U@b!=82AKxCJ$F-`aKCBK3{`x@)QV!)%a;CnS7__XTU{IqXGZ7#cJOyA{}xE1R5Lqd@_p#hP}1M7$r+Ws32I=6LZ)m8Mll&BSSfrFCC49R} zHgDg)!$o^g0RlJw%|B<)+bs{yP?VIk$)+~u<+#$)0{=3bob6+D^r;-P5880#mE{b2 z9I@+LTTe1sym~jG{NBJ|=;_!H=iU;-ajQA*wkPiG?LDv*yI6K?`Ll%(Vlu*3-gBgWHQ|v%Ym@E*}IX{C<|Ha3M70hEUV!TFnP`f$O>b zO*{FT8{O^arI}yR(Hclpod2&azJ61;Qkh-aJbOOYjf&# zKiYQn>Q(GAC{xEP)L@1wgt$idedhKVMZP5mDMDNk3wQ_LU)H^0r;>bkm69a16A`Q$ zKit+%VzZU*sk{Ixcb**jnVcMJTO?w72Z^|L_3A0D)wF!=+TJ2eZXvmTaOj{3HQ(Sxgz!t|n&trW*!4!nmHJd_s_ zirPyM0wb5{*(kEl0CcAytv^P85`X^sCSgaM91!Rr^LkOPPnsDR$?`uidZA~71h>W5 zdx`wV2+UM6K=H%H;+F>%cSZ|shFW(N!$gGpNp##JYZqRo8tt z8#N@Q8*Jb22&C~9|23bpTc>zGetD`DdP7aw%fV;Z(Dpf=yYI2q~*v@M_y5X+n>4QQlPi{vem9-Rp&wtxzxQoylIWx zKqQp_73G)1_C83ibX;d23hz79Jn_4{`^C{X@(q|3a#$`J{tx=j4(SGX%6Bj!SdDjD zXY*bhlAXeysws0MH8qX;!e`EHuBsajN-UQJ%@xKd}#AEGi9$R7erIIYAhMKwFXvez4i3|=K6 zaqrOTh1h7bqeSAfY(b}4hYbw3Yl#!Ki=4~XY+L8Lwa6PGh5W$Qjt-MQX{(=bOB^I) zNtTZ4Y>#7)2V@jvWakNKri)O;4$X11`iG^RF6J)AJfFdRY2co=6ej7znsY9 zx$Xp_eXV%#K02>IK-82H;r!1GJ@}ng#q_6NLel?E2Z3%w)Ef_dytN$|nhK=V9Tf={ z=#2kg?z*MRib{;#^>E`d4N7jq3wW@`(TcA8dTZP9{|{B&@PQjPWyw1|?9R;(EXbJ9CxV)m-*Ewd z0@QzCPm%1tJ>>_o(ho=wh8%{ZX4=s{dinSiDl{?8w4@2@5VcqH5b}L|eL0MJ#WG}K znitaUOu&f3NM@IJQ9ACx9PB_6M3-I^*A;Mv(x9ZH zdiPfbXCQO3=O4s8TJ*3VYR3mfOj-mdaVTyVyj~o94p`dBJ!akH$L!N`;+-D+@q{k> z`$tE8R|~BBV*LHr7cXe~*O!)-N^5OWCl3o<6TL$WsC|}Yh{{^*pzZX_->Msk&U#?PdNq#CLFpSyH~j!Ipd}yh0q)ZL+73^ zBb{7SIXIl)KC{*y2cl;4cJTFwaN&x~yKan>mpRG6L=qsB&eWeA2OX|fla~y)qjlXM zuT5;cCvjlxN;nRK{cB^zNnmU)b#Q6nXVDqW3agp9SQJbJdpS_Ib0t@eg&tVLbq8hy z#PnmK!xqNK)`v%vC*u-8Z-d!@x9k#K@M&pjfxzEV@P7QEGUr2j28IiG2IZf+KRyo~ zjU3dW3MR|#ka+xfiWI3N!twdc`D+W~OcS}uXV zLay?A-$+YTULLbWps2b~m)h$#dumegsZga%J}2Smta+1jgg1U5e{K~B1bb_wi{_us z?a-Juv=*^r$|6A}5+nIYL=^0&Q5%vHJ-OmudO`SVGq*Cu z@0j{8X#t(k+(WlrX54nP#A9`vm)9Sl$$z~6mnPQ#CN9W9aF_+?ATn*jn&P0{16LSR ziHm6>x8FiIvg?{$GdL*C)ck!04igw+-Ae-4c|z%#=*Ab`XN#t*@?oiq zyqNM>4~$3mV~qmqdK?cL8Z&+!`90g%>YP+%5=Uf{AU9Tuj$^Hm_v>4|Qdi=9j|sz4 ztV`qdAFC8=DeBxu{JAUg4`=h$*y7lP4@pGg32i)FXJ+hNn$3(lJvzClSQL6L@6C(Q zo`xyklA<{a36fs*-q-5Uvr*Kp=%poTDO-*w5^G-t(BK8ry^aXe8#1yJ7$!1h(g-e1bmqE&1NB zTBjVr&=)1Nv(^=pp8c|};n4|lGVjho3pCuhuG?ak_QW|7Waq{mF^}~g;qg^f)oe6z zT#}$8AZwRIY}JTLK#H7_nzArdM2DyASyd#H(OF6re0)dS-b&S?JjKt$nK<23jU={@ zTbvNJg&&x2LYp}$EzBw+xlwLZt~4fy7G{w@)b7lTD^08U_ruc6Y$FgqR*z`)#BOem zq4ScGyxHohE21_)|_WX0VrRX-JLHke-Ol1H3>C=nR zWV{E~*e&;37Xm!Mz4N<+5D`1j_t)c&4Ony8VL?u<*3wd4YmduBzrHUN|IoVjiIp6y z`Gl*V^uj{Bi|dtSQi@1T<18~z&l@m=`!2(s_d?Z<8x5f%J)jIcIy!1y&KuAX-pJ`^ zR5rWZ*$}}x8J_1&`c1+od-;S36!!g+y5fmUfk}-OL&$|QA=Y_q(y2AyC2{AcsW^c@ z%QovEc5^m=bMx)AvP7Axl0JhaEQBab3p$Dp#n8-_oWkzd2+QAUX^}17U zW~~{p*MJAHvc^PieT7d|%m|7d4vzyavU=<}f;l0zrG|~Qy2C4x%rBZ=C3-!E4JcIT z;B`cXE{LLY`psQ7Hzdt#^Cn)`V5D2R+R_zL)o-}3Kb~;klASx6;lnfTjC+~CIj#m=iL^*HZly-^-b7+aHAm295Lq4XIh^E!2L8^fefX-`j`fUqLmehF5u z@WC|O@ZUFksKHET7tq1zx_ai&mRjU!ofGn|IgBhk%|wW5$3m8|lUD^q1J~_nJx9e4$|%P0^3fM6;5G|$LtkzW6;Y3QeVYyc%}+~v`t9i= z!xwz^dLlgA^Afe|ucL?w|D?d*GZ=o)QSjOSx~WkX`R&AdEktd^H-$IkBr-PRWBIQy zs%lipy^<881PmVMjI4zpoA}w-EhsK)lw!zEzC1Bqv8=w|v3NRVWota8R zib;V@xN5FP@0tU3^^Ug3-nN33Z9a3g`)ZeZt48L{*Rfa5oPC)eVHb)%Q+2vVtIkXJ z^T9FgfxB&9Lj&DPf5pzqwEL`6*JV^RDT;LECnh`rGndh(!uT*iDJYQBG;$uz%22OxI!8xSS)Ii4T8!9AtpTXGHRdh(vygk;-D(c zqPJ>DetI{%)Ryt@%@z|+F;!0r@Yqnx_4P8;D5~IrYKOv7n{DDfyWQ3l%jFLF_N1=qD&9cRdd?zaoL%c-G*w5&XI1IG zle`OO@N`1IQSg~ZU^rzne=_0W4Q$8 - + @@ -205,6 +205,16 @@ + + + + + + + + + + diff --git a/lazproj/coedit.lpr b/lazproj/coedit.lpr index eb187889..e791f700 100644 --- a/lazproj/coedit.lpr +++ b/lazproj/coedit.lpr @@ -8,7 +8,8 @@ uses {$ENDIF}{$ENDIF} Interfaces, Forms, lazcontrols, runtimetypeinfocontrols, ce_widget, ce_dmdwrap, ce_common, ce_synmemo, ce_main, ce_messages, ce_editor, - ce_projinspect, ce_projconf, ce_jsoninfos, jsonparser; + ce_projinspect, ce_projconf, ce_jsoninfos, jsonparser, ce_project, +ce_widgettypes; {$R *.res} diff --git a/lazproj/test/coeditproj/test.coedit b/lazproj/test/coeditproj/test.coedit index 18dbe6fe..0108656e 100644 --- a/lazproj/test/coeditproj/test.coedit +++ b/lazproj/test/coeditproj/test.coedit @@ -1,4 +1,4 @@ -object TCEProject +object _1: TCEProject OptionsCollection = < item name = 'default' @@ -54,7 +54,7 @@ object TCEProject outputOptions.release = False outputOptions.unittest = True outputOptions.versionIdentifier = 'revision_1' - pathsOptions.outputFilename = '..\output\main.exe' + pathsOptions.outputFilename = '..\output\main.exe' end> Sources.Strings = ( '..\src\main.d' diff --git a/src/ce_common.pas b/src/ce_common.pas index 63aa6290..2bbf61d9 100644 --- a/src/ce_common.pas +++ b/src/ce_common.pas @@ -5,92 +5,39 @@ unit ce_common; interface uses - Classes, SysUtils, ce_dmdwrap, ActnList; - -type - - TCEProject = class; + Classes, SysUtils, ActnList; (** - * An implementer is informed when a new document is added, focused or closed. + * Save a component with a readable aspect. *) - ICEMultiDocMonitor = interface - procedure docChange(const aNewIndex: integer); - procedure docClose(const aNewIndex: integer); - end; - - (** - * An implementer adds some menu actions when its context is valid. - *) - ICEContextualActions = interface - function contextName: string; - function contextActionCount: integer; - function contextAction(index: integer): TAction; - end; - - (** - * An implementer is informed when a project changes. - *) - ICEProjectMonitor = interface - procedure projNew(const aProject: TCEProject); - procedure projChange(const aProject: TCEProject); - procedure projClose(const aProject: TCEProject); - end; - - (***************************************************************************** - * Writable project. - *) - TCEProject = class(TComponent) - private - fOnChange: TNotifyEvent; - fModified: boolean; - fFilename: string; - fBasePath: string; - fOptsColl: TCollection; - fSrcs, fSrcsCop: TStringList; - fConfIx: Integer; - fChangedCount: NativeInt; - procedure doChanged; - procedure subMemberChanged(sender : TObject); - procedure setOptsColl(const aValue: TCollection); - procedure setFname(const aValue: string); - procedure setSrcs(const aValue: TStringList); - procedure setConfIx(aValue: Integer); - function getConfig(const ix: integer): TCompilerConfiguration; - function getSrcs: TStringList; - function getCurrConf: TCompilerConfiguration; - published - property OptionsCollection: TCollection read fOptsColl write setOptsColl; - property Sources: TStringList read fSrcs write setSrcs; // 'read' should return a copy to avoid abs/rel errors - property ConfigurationIndex: Integer read fConfIx write setConfIx; - public - constructor create(aOwner: TComponent); override; - destructor destroy; override; - procedure beforeChanged; - procedure afterChanged; - procedure reset; - function getAbsoluteSourceName(const aIndex: integer): string; - function getAbsoluteFilename(const aFilename: string): string; - procedure addSource(const aFilename: string); - function addConfiguration: TCompilerConfiguration; - procedure getOpts(const aList: TStrings); - // - property configuration[ix: integer]: TCompilerConfiguration read getConfig; - property currentConfiguration: TCompilerConfiguration read getCurrConf; - property fileName: string read fFilename write setFname; - property onChange: TNotifyEvent read fOnChange write fOnChange; - end; - procedure saveCompToTxtFile(const aComp: TComponent; const aFilename: string); + + (** + * Load a component. + *) procedure loadCompFromTxtFile(const aComp: TComponent; const aFilename: string); + + (** + * Converts a relative path to an absolute path. + *) function expandFilenameEx(const aBasePath, aFilename: string): string; + + (** + * Extracts the module name of a D source file. + *) function getModuleName(const aSource: TStrings): string; + (** + * Patches the directory separators from a string. + * This is used to ensure a that project saved on a plateform can be loaded + * on another one. + *) + function patchPlateformPath(const aPath: string): string; + procedure patchPlateformPaths(const sPaths: TStrings); + + implementation -(***************************************************************************** - * Routines - *) procedure saveCompToTxtFile(const aComp: TComponent; const aFilename: string); var str1, str2: TMemoryStream; @@ -144,6 +91,87 @@ begin end; end; +function patchPlateformPath(const aPath: string): string; +var + i: Integer; +begin + result := aPath; + {$IFDEF MSWINDOWS} + i := pos('/',result); + if i <> 0 then + begin + repeat + result[i] := directorySeparator; + i := pos('/',result); + until + i = 0; + end; + i := pos(':',result); + if i <> 0 then + begin + repeat + result[i] := directorySeparator; + i := pos(':',result); + until + i = 0; + end; + {$ENDIF} + + {$IFDEF LINUX} + i := pos('\',result); + if i <> 0 then + begin + repeat + result[i] := directorySeparator; + i := pos('\',result); + until + i = 0; + end; + i := pos(':',result); + if i <> 0 then + begin + repeat + result[i] := directorySeparator; + i := pos(':',result); + until + i = 0; + end; + {$ENDIF} + + {$IFDEF MACOS} + i := pos('\',result); + if i <> 0 then + begin + repeat + result[i] := directorySeparator; + i := pos('\',result); + until + i = 0; + end; + i := pos('/',result); + if i <> 0 then + begin + repeat + result[i] := directorySeparator; + i := pos('/',result); + until + i = 0; + end; + {$ENDIF} +end; + +procedure patchPlateformPaths(const sPaths: TStrings); +var + i: Integer; + str: string; +begin + for i:= 0 to sPaths.Count-1 do + begin + str := sPaths.Strings[i]; + sPaths.Strings[i] := patchPlateformPath(str); + end; +end; + // TODO: block comments handling function getModuleName(const aSource: TStrings): string; var @@ -197,211 +225,4 @@ begin end; end; -(***************************************************************************** - * TProject - *) -constructor TCEProject.create(aOwner: TComponent); -begin - inherited create(aOwner); - fSrcs := TStringList.Create; - fSrcs.OnChange := @subMemberChanged; - fSrcsCop := TStringList.Create; - fOptsColl := TCollection.create(TCompilerConfiguration); - reset; -end; - -destructor TCEProject.destroy; -begin - fOnChange := nil; - fSrcs.free; - fSrcsCop.Free; - fOptsColl.free; - inherited; -end; - -function TCEProject.addConfiguration: TCompilerConfiguration; -begin - result := TCompilerConfiguration(fOptsColl.Add); - result.onChanged := @subMemberChanged; -end; - -procedure TCEProject.setOptsColl(const aValue: TCollection); -var - i: nativeInt; -begin - fOptsColl.Assign(aValue); - for i:= 0 to self.fOptsColl.Count-1 do - Configuration[i].onChanged := @subMemberChanged; -end; - -procedure TCEProject.addSource(const aFilename: string); -var - relSrc, absSrc: string; -begin - for relSrc in fSrcs do - begin - absSrc := expandFilenameEx(fBasePath,relsrc); - if aFilename = absSrc then exit; - end; - fSrcs.Add(ExtractRelativepath(fBasePath,aFilename)); -end; - -procedure TCEProject.setFname(const aValue: string); -var - oldAbs, newRel, oldBase: string; - i: NativeInt; -begin - if fFilename = aValue then exit; - // - beforeChanged; - - fFilename := aValue; - oldBase := fBasePath; - fBasePath := extractFilePath(fFilename); - // - for i:= 0 to fSrcs.Count-1 do - begin - oldAbs := expandFilenameEx(oldBase,fSrcs[i]); - newRel := ExtractRelativepath(fBasePath, oldAbs); - fSrcs[i] := newRel; - end; - // - afterChanged; -end; - -procedure TCEProject.setSrcs(const aValue: TStringList); -begin - beforeChanged; - fSrcs.Assign(aValue); - afterChanged; -end; - -procedure TCEProject.setConfIx(aValue: Integer); -begin - if fConfIx = aValue then exit; - beforeChanged; - if aValue < 0 then aValue := 0; - if aValue > fOptsColl.Count-1 then aValue := fOptsColl.Count-1; - fConfIx := aValue; - afterChanged; -end; - -procedure TCEProject.subMemberChanged(sender : TObject); -begin - beforeChanged; - fModified := true; - afterChanged; -end; - -procedure TCEProject.beforeChanged; -begin - Inc(fChangedCount); -end; - -procedure TCEProject.afterChanged; -begin - Dec(fChangedCount); - if fChangedCount > 0 then - begin - {$IFDEF DEBUG} - writeln('project update count > 0'); - {$ENDIF} - exit; - end; - fChangedCount := 0; - doChanged; -end; - -procedure TCEProject.doChanged; -{$IFDEF DEBUG} -var - lst: TStringList; -{$ENDIF} -begin - fModified := true; - if assigned(fOnChange) then fOnChange(Self); - {$IFDEF DEBUG} - lst := TStringList.Create; - try - lst.Add('---------begin----------'); - getOpts(lst); - lst.Add('---------end----------'); - writeln(lst.Text); - finally - lst.Free; - end; - {$ENDIF} -end; - -function TCEProject.getConfig(const ix: integer): TCompilerConfiguration; -begin - result := TCompilerConfiguration(fOptsColl.Items[ix]); - result.onChanged := @subMemberChanged; -end; - -function TCEProject.getCurrConf: TCompilerConfiguration; -begin - result := TCompilerConfiguration(fOptsColl.Items[fConfIx]); -end; - -function TCEProject.getSrcs: TStringList; -var - str: TMemoryStream; -begin - if not (csReading in componentState) or (csWriting in componentState) then - begin - str := TMemoryStream.Create; - try - fSrcs.SaveToStream(str); - str.Position:=0; - fSrcsCop.Clear; - fSrcsCop.LoadFromStream(str); - finally - str.Free; - end; - result := fSrcsCop; - end - else result := fSrcs; -end; - -procedure TCEProject.reset; -var - defConf: TCompilerConfiguration; -begin - beforeChanged; - fConfIx := 0; - fOptsColl.Clear; - defConf := addConfiguration; - defConf.name := 'default'; - fSrcs.Clear; - fFilename := ''; - afterChanged; -end; - -procedure TCEProject.getOpts(const aList: TStrings); -var - rel, abs: string; -begin - if fConfIx = -1 then exit; - for rel in fSrcs do if rel <> '' then - begin - abs := expandFilenameEx(fBasePath,rel); - aList.Add(abs); // process.inc ln 249. double quotes are added anyway if there's a space... - end; - TCompilerConfiguration(fOptsColl.Items[fConfIx]).getOpts(aList); -end; - -function TCEProject.getAbsoluteSourceName(const aIndex: integer): string; -begin - if aIndex < 0 then exit(''); - if aIndex > fSrcs.Count-1 then exit(''); - result := expandFileNameEx(fBasePath, fSrcs.Strings[aIndex]); -end; - -function TCEProject.getAbsoluteFilename(const aFilename: string): string; -begin - result := expandFileNameEx(fBasePath, aFilename); -end; - end. - diff --git a/src/ce_d2syn.pas b/src/ce_d2syn.pas index 8c38727a..1c8e3aa9 100644 --- a/src/ce_d2syn.pas +++ b/src/ce_d2syn.pas @@ -47,7 +47,7 @@ type TD2Dictionary = object private fLongest: NativeInt; - fEntries: array[0..1024] of TD2DictionaryEntry; + fEntries: array[0..1023] of TD2DictionaryEntry; function toHash(const aValue: string): word; procedure addEntry(const aValue: string); public @@ -80,6 +80,7 @@ type fRange: TRangeKind; fFoldKinds: TFoldKinds; fAttribLut: array[TTokenKind] of TSynHighlighterAttributes; + // readNext is mostly used to advanced the reader head. function readNext: Char; function readCurr: Char; function readPrev: Char; @@ -96,6 +97,7 @@ type procedure setCurrIdent(const aValue: string); procedure doChanged; published + // Defines which kind of ranges can be folded, among curly brackets, block comments and nested comments property FoldKinds: TFoldKinds read fFoldKinds write setFoldKinds; property WhiteAttrib: TSynHighlighterAttributes read fWhiteAttrib write setWhiteAttrib; property NumbrAttrib: TSynHighlighterAttributes read fNumbrAttrib write setNumbrAttrib; @@ -122,7 +124,7 @@ type function GetRange: Pointer; override; property CurrentIdentifier: string read fCurrIdent write setCurrIdent; end; - + implementation function isWhite(const c: Char): boolean; {$IFNDEF DEBUG}inline;{$ENDIF} @@ -437,6 +439,7 @@ begin result := fLineBuf[fTokStop]; end; +// unlike readNext, readPrev doesn't change the reader head position. function TSynD2Syn.readPrev: Char; {$IFNDEF DEBUG}inline;{$ENDIF} begin result := fLineBuf[fTokStop-1]; @@ -444,14 +447,15 @@ end; { TODO: -- binary literals. - alternative attributes for ddoc comments. -- asm range. -- stricter number literals. -- string literals: custom token, escape "\" not handled. -- correct nested comments handling. +- range: asm range. +- number literals: stricter. +- number literals: binary. +- string literals: delimited strings. +- string literals: token strings. +- string literals: escape bug: std.path/std.regex: "\\" +- comments: correct nested comments handling. } - procedure TSynD2Syn.next; begin @@ -581,7 +585,7 @@ begin // string 1 if fRange = rkString1 then begin - if (readCurr <> '"') then while ((readNext <> '"') and (not (readCurr = #10))) do (*!*); + if (readCurr <> '"') then while (((readNext <> '"') or (readPrev = '\')) and (not (readCurr = #10))) do (*!*); if (readCurr = #10) then begin fRange := rkString1; @@ -593,16 +597,35 @@ begin fTokKind := tkStrng; fRange := rkNone; readNext; + // check postfix + if readCurr in ['c','w','d'] then + readNext; exit; end; end; - if fRange <> rkString2 then if (readCurr = '"') then + if fRange <> rkString2 then if (readCurr in ['r','x','"']) then begin if fRange = rkNone then begin - while ((readNext <> '"') and (not (readCurr = #10))) do (*!*); + // check hex/WYSIWYG prefix + if readCurr in ['r','x'] then + begin + if not (readNext = '"') then + begin + fTokKind := tkIdent; + exit; // warning: a goto is avoided but any other r/x is not detectable since it's truncated as tkIdent + end; + end; + // go to end of string/eol + while (((readNext <> '"') or (readPrev = '\')) and (not (readCurr = #10))) do (*!*); if (readCurr = #10) then fRange := rkString1 - else readNext; + else + begin + readNext; + // check postfix + if readCurr in ['c','w','d'] then + readNext; + end; fTokKind := tkStrng; exit; end; @@ -623,6 +646,9 @@ begin fTokKind := tkStrng; fRange := rkNone; readNext; + // check postfix + if readCurr in ['c','w','d'] then + readNext; exit; end; end; @@ -630,9 +656,16 @@ begin begin if fRange = rkNone then begin + // go to end of string/eol while ((readNext <> '`') and (not (readCurr = #10))) do (*!*); if (readCurr = #10) then fRange := rkString2 - else readNext; + else + begin + readNext; + // check postfix + if readCurr in ['c','w','d'] then + readNext; + end; fTokKind := tkStrng; exit; end; @@ -641,7 +674,7 @@ begin // char literals if fRange = rkNone then if (readCurr = #39) then begin - while ((readNext <> #39) and (not (readCurr = #10))) do (*!*); + while (((readNext <> #39) or (readPrev = '\')) and (not (readCurr = #10))) do (*!*); if (readCurr = #39) then begin fTokKind := tkStrng; diff --git a/src/ce_dmdwrap.pas b/src/ce_dmdwrap.pas index dc63e1b3..34b54ad0 100644 --- a/src/ce_dmdwrap.pas +++ b/src/ce_dmdwrap.pas @@ -22,7 +22,6 @@ type protected property onChange: TNotifyEvent read fOnChange write fOnChange; public - //function getOpts: string; virtual; abstract; procedure getOpts(const aList: TStrings); virtual; abstract; end; @@ -60,7 +59,7 @@ type *) TMsgOpts = class(TOptsGroup) private - fDepHandling : TDepHandling; // could be also related to analysis + fDepHandling : TDepHandling; fVerb: boolean; fWarn: boolean; fWarnEx: boolean; @@ -136,7 +135,7 @@ type procedure getOpts(const aList: TStrings); override; end; - (** + (***************************************************************************** * Encapsulates the options/args related to the debuging *) TDebugOpts = class(TOptsGroup) @@ -248,6 +247,9 @@ type implementation +uses + ce_common; + (******************************************************************************* * TOptsGroup *) @@ -276,8 +278,8 @@ begin src := TDocOpts(aValue); fGenDoc := src.fGenDoc; fGenJson := src.fGenJson; - fDocDir := src.fDocDir; - fJsonFname:= src.fJsonFname; + fDocDir := patchPlateformPath(src.fDocDir); + fJsonFname:= patchPlateformPath(src.fJsonFname); end else inherited; end; @@ -299,14 +301,14 @@ end; procedure TDocOpts.setDocDir(const aValue: string); begin if fDocDir = aValue then exit; - fDocDir := aValue; + fDocDir := patchPlateformPath(aValue); doChanged; end; procedure TDocOpts.setJSONFile(const aValue: string); begin if fJsonFname = aValue then exit; - fJsonFname := aValue; + fJsonFname := patchPlateformPath(aValue); doChanged; end; @@ -573,6 +575,13 @@ end; (******************************************************************************* * TPathsOpts *) +constructor TPathsOpts.create; +begin + fSrcs := TStringList.Create; + fIncl := TStringList.Create; + fImpt := TStringList.Create; +end; + procedure TPathsOpts.getOpts(const aList: TStrings); var str: string; @@ -587,13 +596,6 @@ begin if fObjDir <> '' then aList.Add('-od' + fObjDir); end; -constructor TPathsOpts.create; -begin - fSrcs := TStringList.Create; - fIncl := TStringList.Create; - fImpt := TStringList.Create; -end; - procedure TPathsOpts.assign(aValue: TPersistent); var src: TPathsOpts; @@ -604,8 +606,8 @@ begin fSrcs.Assign(src.fSrcs); fIncl.Assign(src.fIncl); fImpt.Assign(src.fImpt); - fFName := src.fFname; - fObjDir := src.fObjDir; + fFName := patchPlateformPath(src.fFname); + fObjDir := patchPlateformPath(src.fObjDir); end else inherited; end; @@ -621,32 +623,35 @@ end; procedure TPathsOpts.setFname(const aValue: string); begin if fFname = aValue then exit; - fFname := aValue; + fFname := patchPlateformPath(aValue); doChanged; end; procedure TPathsOpts.setObjDir(const aValue: string); begin if fObjDir = aValue then exit; - fObjDir := aValue; + fObjDir := patchPlateformPath(aValue); doChanged; end; procedure TPathsOpts.setSrcs(const aValue: TStringList); begin fSrcs.Assign(aValue); + patchPlateformPaths(fSrcs); doChanged; end; procedure TPathsOpts.setIncl(const aValue: TStringList); begin fIncl.Assign(aValue); + patchPlateformPaths(fIncl); doChanged; end; procedure TPathsOpts.setImpt(const aValue: TStringList); begin fImpt.Assign(aValue); + patchPlateformPaths(fImpt); doChanged; end; @@ -808,4 +813,7 @@ begin fOthers.Assign(aValue); end; +initialization + RegisterClasses([TCompilerConfiguration, TOtherOpts, TPathsOpts, + TDebugOpts, TOutputOpts, TMsgOpts, TDocOpts]); end. diff --git a/src/ce_editor.pas b/src/ce_editor.pas index 1ac429ff..2f394292 100644 --- a/src/ce_editor.pas +++ b/src/ce_editor.pas @@ -180,7 +180,7 @@ end; procedure TCEEditorWidget.autoWidgetUpdate; const - modstr: array[boolean] of string = ('...','MODIFIED'); + modstr: array[boolean] of string = ('...', 'MODIFIED'); var ed: TCESynMemo; begin diff --git a/src/ce_main.pas b/src/ce_main.pas index 2b8638b9..8a772c85 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -6,10 +6,10 @@ interface uses Classes, SysUtils, FileUtil, SynEditKeyCmds, SynHighlighterLFM, Forms, - AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg, - Controls, Graphics, Dialogs, Menus, ActnList, ExtCtrls, process, ce_jsoninfos, ce_common, - ce_dmdwrap, ce_synmemo, ce_widget, ce_messages, ce_editor, ce_projinspect, - ce_projconf, ce_staticexplorer; + AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg, Controls, Graphics, + Dialogs, Menus, ActnList, ExtCtrls, process, + ce_jsoninfos, ce_common, ce_dmdwrap, ce_project, ce_synmemo, + ce_widget, ce_messages, ce_editor, ce_projinspect, ce_projconf, ce_staticexplorer; type @@ -659,7 +659,7 @@ begin temppath := GetTempDir(false); chDir(temppath); {$IFDEF DEBUG}{$WARNINGS OFF}{$HINTS OFF}{$ENDIF} - fname := temppath + format('temp_%.8x', [NativeInt(@dmdproc)]); + fname := temppath + format('temp_%.8x', [NativeUInt(@dmdproc)]); {$IFDEF DEBUG}{$WARNINGS ON}{$HINTS ON}{$ENDIF} fEditWidg.editor[edIndex].Lines.SaveToFile(fname + '.d'); @@ -931,6 +931,7 @@ begin fProject.beforeChanged; fProject.fileName := aFilename; loadCompFromTxtFile(fProject, aFilename); + fProject.afterLoad; fProject.afterChanged; end; diff --git a/src/ce_messages.pas b/src/ce_messages.pas index 97739205..2881ff9e 100644 --- a/src/ce_messages.pas +++ b/src/ce_messages.pas @@ -89,7 +89,7 @@ end; procedure TCEMessagesWidget.scrollToBack; begin if not Visible then exit; - List.ViewOrigin := Point(0,List.Items.Count * 25); + List.ViewOrigin := Point(0, List.Items.Count * 25); end; procedure TCEMessagesWidget.addCeInf(const aMsg: string); diff --git a/src/ce_projconf.lfm b/src/ce_projconf.lfm index 86d2fba0..9d426827 100644 --- a/src/ce_projconf.lfm +++ b/src/ce_projconf.lfm @@ -233,7 +233,6 @@ inherited CEProjectConfigurationWidget: TCEProjectConfigurationWidget Indent = 16 NameFont.Color = clWindowText OnEditorFilter = GridEditorFilter - OnModified = GridModified PreferredSplitterX = 145 SplitterX = 145 ValueFont.Color = clMaroon diff --git a/src/ce_projconf.pas b/src/ce_projconf.pas index 508ad511..2dd1b0d5 100644 --- a/src/ce_projconf.pas +++ b/src/ce_projconf.pas @@ -6,8 +6,8 @@ interface uses Classes, SysUtils, FileUtil, RTTIGrids, Forms, Controls, Graphics, Dialogs, - ExtCtrls, ComCtrls, StdCtrls, Menus, Buttons, ce_widget, ce_common, - ce_dmdwrap, PropEdits, ObjectInspector; + ExtCtrls, ComCtrls, StdCtrls, Menus, Buttons, PropEdits, ObjectInspector, + ce_dmdwrap, ce_project, ce_widget; type @@ -26,7 +26,6 @@ type procedure btnDelConfClick(Sender: TObject); procedure btnCloneCurrClick(Sender: TObject); procedure GridEditorFilter(Sender: TObject; aEditor: TPropertyEditor;var aShow: boolean); - procedure GridModified(Sender: TObject); procedure selConfChange(Sender: TObject); procedure TreeChange(Sender: TObject; Node: TTreeNode); private @@ -95,11 +94,6 @@ begin if aEditor.ClassType = TCollectionPropertyEditor then aShow := false; end; -procedure TCEProjectConfigurationWidget.GridModified(Sender: TObject); -begin - setFocus; -end; - procedure TCEProjectConfigurationWidget.btnAddConfClick(Sender: TObject); var nme: string; diff --git a/src/ce_project.pas b/src/ce_project.pas new file mode 100644 index 00000000..0be60792 --- /dev/null +++ b/src/ce_project.pas @@ -0,0 +1,257 @@ +unit ce_project; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, ce_dmdwrap; + +type + +(***************************************************************************** + * Represents a D project. + * + * It includes all the options defined in ce_dmdwrap, organized in + * a collection to allow multiples configurations. + * + * Basically it' s designed to provide the options for the dmd process. + *) + TCEProject = class(TComponent) + private + fOnChange: TNotifyEvent; + fModified: boolean; + fFilename: string; + fBasePath: string; + fOptsColl: TCollection; + fSrcs, fSrcsCop: TStringList; + fConfIx: Integer; + fChangedCount: NativeInt; + procedure doChanged; + procedure subMemberChanged(sender : TObject); + procedure setOptsColl(const aValue: TCollection); + procedure setFname(const aValue: string); + procedure setSrcs(const aValue: TStringList); + procedure setConfIx(aValue: Integer); + function getConfig(const ix: integer): TCompilerConfiguration; + function getCurrConf: TCompilerConfiguration; + published + property OptionsCollection: TCollection read fOptsColl write setOptsColl; + property Sources: TStringList read fSrcs write setSrcs; // 'read' should return a copy to avoid abs/rel errors + property ConfigurationIndex: Integer read fConfIx write setConfIx; + public + constructor create(aOwner: TComponent); override; + destructor destroy; override; + procedure beforeChanged; + procedure afterChanged; + procedure reset; + function getAbsoluteSourceName(const aIndex: integer): string; + function getAbsoluteFilename(const aFilename: string): string; + procedure addSource(const aFilename: string); + function addConfiguration: TCompilerConfiguration; + procedure getOpts(const aList: TStrings); + procedure afterLoad; + // + property configuration[ix: integer]: TCompilerConfiguration read getConfig; + property currentConfiguration: TCompilerConfiguration read getCurrConf; + property fileName: string read fFilename write setFname; + property onChange: TNotifyEvent read fOnChange write fOnChange; + end; + +implementation + +uses + ce_common; + +constructor TCEProject.create(aOwner: TComponent); +begin + inherited create(aOwner); + fSrcs := TStringList.Create; + fSrcs.OnChange := @subMemberChanged; + fSrcsCop := TStringList.Create; + fOptsColl := TCollection.create(TCompilerConfiguration); + reset; +end; + +destructor TCEProject.destroy; +begin + fOnChange := nil; + fSrcs.free; + fSrcsCop.Free; + fOptsColl.free; + inherited; +end; + +function TCEProject.addConfiguration: TCompilerConfiguration; +begin + result := TCompilerConfiguration(fOptsColl.Add); + result.onChanged := @subMemberChanged; +end; + +procedure TCEProject.setOptsColl(const aValue: TCollection); +var + i: nativeInt; +begin + fOptsColl.Assign(aValue); + for i:= 0 to self.fOptsColl.Count-1 do + Configuration[i].onChanged := @subMemberChanged; +end; + +procedure TCEProject.addSource(const aFilename: string); +var + relSrc, absSrc: string; +begin + for relSrc in fSrcs do + begin + absSrc := expandFilenameEx(fBasePath,relsrc); + if aFilename = absSrc then exit; + end; + fSrcs.Add(ExtractRelativepath(fBasePath,aFilename)); +end; + +procedure TCEProject.setFname(const aValue: string); +var + oldAbs, newRel, oldBase: string; + i: NativeInt; +begin + if fFilename = aValue then exit; + // + beforeChanged; + + fFilename := aValue; + oldBase := fBasePath; + fBasePath := extractFilePath(fFilename); + // + for i:= 0 to fSrcs.Count-1 do + begin + oldAbs := expandFilenameEx(oldBase,fSrcs[i]); + newRel := ExtractRelativepath(fBasePath, oldAbs); + fSrcs[i] := newRel; + end; + // + afterChanged; +end; + +procedure TCEProject.setSrcs(const aValue: TStringList); +begin + beforeChanged; + fSrcs.Assign(aValue); + patchPlateformPaths(fSrcs); + afterChanged; +end; + +procedure TCEProject.afterLoad; +begin + patchPlateformPaths(fSrcs); +end; + +procedure TCEProject.setConfIx(aValue: Integer); +begin + if fConfIx = aValue then exit; + beforeChanged; + if aValue < 0 then aValue := 0; + if aValue > fOptsColl.Count-1 then aValue := fOptsColl.Count-1; + fConfIx := aValue; + afterChanged; +end; + +procedure TCEProject.subMemberChanged(sender : TObject); +begin + beforeChanged; + fModified := true; + afterChanged; +end; + +procedure TCEProject.beforeChanged; +begin + Inc(fChangedCount); +end; + +procedure TCEProject.afterChanged; +begin + Dec(fChangedCount); + if fChangedCount > 0 then + begin + {$IFDEF DEBUG} + writeln('project update count > 0'); + {$ENDIF} + exit; + end; + fChangedCount := 0; + doChanged; +end; + +procedure TCEProject.doChanged; +{$IFDEF DEBUG} +var + lst: TStringList; +{$ENDIF} +begin + fModified := true; + if assigned(fOnChange) then fOnChange(Self); + {$IFDEF DEBUG} + lst := TStringList.Create; + try + lst.Add('---------begin----------'); + getOpts(lst); + lst.Add('---------end-----------'); + writeln(lst.Text); + finally + lst.Free; + end; + {$ENDIF} +end; + +function TCEProject.getConfig(const ix: integer): TCompilerConfiguration; +begin + result := TCompilerConfiguration(fOptsColl.Items[ix]); + result.onChanged := @subMemberChanged; +end; + +function TCEProject.getCurrConf: TCompilerConfiguration; +begin + result := TCompilerConfiguration(fOptsColl.Items[fConfIx]); +end; + +procedure TCEProject.reset; +var + defConf: TCompilerConfiguration; +begin + beforeChanged; + fConfIx := 0; + fOptsColl.Clear; + defConf := addConfiguration; + defConf.name := 'default'; + fSrcs.Clear; + fFilename := ''; + afterChanged; +end; + +procedure TCEProject.getOpts(const aList: TStrings); +var + rel, abs: string; +begin + if fConfIx = -1 then exit; + for rel in fSrcs do if rel <> '' then + begin + abs := expandFilenameEx(fBasePath,rel); + aList.Add(abs); // process.inc ln 249. double quotes are added anyway if there's a space... + end; + TCompilerConfiguration(fOptsColl.Items[fConfIx]).getOpts(aList); +end; + +function TCEProject.getAbsoluteSourceName(const aIndex: integer): string; +begin + if aIndex < 0 then exit(''); + if aIndex > fSrcs.Count-1 then exit(''); + result := expandFileNameEx(fBasePath, fSrcs.Strings[aIndex]); +end; + +function TCEProject.getAbsoluteFilename(const aFilename: string): string; +begin + result := expandFileNameEx(fBasePath, aFilename); +end; + +initialization + RegisterClasses([TCEProject]); +end. diff --git a/src/ce_projinspect.pas b/src/ce_projinspect.pas index e35cc6df..38c1ec5f 100644 --- a/src/ce_projinspect.pas +++ b/src/ce_projinspect.pas @@ -6,7 +6,7 @@ interface uses Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Graphics, - Dialogs, ExtCtrls, ComCtrls, Menus, Buttons, ce_common, ce_widget; + Dialogs, ExtCtrls, ComCtrls, Menus, Buttons, ce_project, ce_widget; type { TCEProjectInspectWidget } diff --git a/src/ce_synmemo.pas b/src/ce_synmemo.pas index 7defcb26..12e56eca 100644 --- a/src/ce_synmemo.pas +++ b/src/ce_synmemo.pas @@ -5,8 +5,8 @@ unit ce_synmemo; interface uses - Classes, SysUtils, SynEdit, SynMemo, ce_common, ce_d2syn, - SynPluginSyncroEdit, SynEditKeyCmds; + Classes, SysUtils, SynEdit, SynMemo, ce_d2syn, + SynPluginSyncroEdit, SynEditKeyCmds, ce_project; type @@ -43,8 +43,8 @@ begin // Gutter.LineNumberPart.ShowOnlyLineNumbersMultiplesOf := 5; Gutter.LineNumberPart.MarkupInfo.Foreground := clGray; - Gutter.SeparatorPart.LineOffset:=1; - Gutter.SeparatorPart.LineWidth:=1; + Gutter.SeparatorPart.LineOffset := 1; + Gutter.SeparatorPart.LineWidth := 1; Gutter.SeparatorPart.MarkupInfo.Foreground := clGray; Gutter.CodeFoldPart.MarkupInfo.Foreground := clGray; // diff --git a/src/ce_widget.pas b/src/ce_widget.pas index 987ae8e5..967b7f46 100644 --- a/src/ce_widget.pas +++ b/src/ce_widget.pas @@ -6,7 +6,8 @@ interface uses Classes, SysUtils, FileUtil, Forms, Controls, ExtCtrls, - AnchorDocking, AnchorDockStorage, ActnList, Menus, ce_common; + AnchorDocking, AnchorDockStorage, ActnList, Menus, + ce_widgettypes, ce_project; type diff --git a/src/ce_widgettypes.pas b/src/ce_widgettypes.pas new file mode 100644 index 00000000..8f7163dd --- /dev/null +++ b/src/ce_widgettypes.pas @@ -0,0 +1,40 @@ +unit ce_widgettypes; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, actnList, ce_project; + +type + + (** + * An implementer is informed when a new document is added, focused or closed. + *) + ICEMultiDocMonitor = interface + procedure docChange(const aNewIndex: integer); + procedure docClose(const aNewIndex: integer); + end; + + (** + * An implementer adds some menu actions when its context is valid. + *) + ICEContextualActions = interface + function contextName: string; + function contextActionCount: integer; + function contextAction(index: integer): TAction; + end; + + (** + * An implementer is informed when a project changes. + *) + ICEProjectMonitor = interface + procedure projNew(const aProject: TCEProject); + procedure projChange(const aProject: TCEProject); + procedure projClose(const aProject: TCEProject); + end; + +implementation +end. +