home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / wp_dtp / xdme1820.lha / XDME / Macros / BN / c-edrc < prev    next >
Text File  |  1993-03-09  |  7KB  |  190 lines

  1. #
  2. #    C-EDRC
  3. #
  4. #    configuration file to create C-language programs with DME
  5. #
  6. #    (c) 1992  by Bernd Noll
  7. #
  8.  
  9. addpath dinclude:
  10. addpath autodoc:
  11. addpath dice:doc
  12. addpath dice:man
  13. addpath man3:cclib
  14.  
  15. map sac-, (last left ifelse !c=59 (right (;)) (right) -return)
  16. map sac-m (split down split down c-tab)
  17.  
  18. set getname (escimm (set name `))
  19. set gettype (escimm (set type `))
  20. #setmacro getname 0 (escimm (set name `))
  21. #setmacro gettype 0 (escimm (set type `))
  22. #set blockbeginner (while for if switch case FOREVER)
  23.  
  24. setmacro freeline 0 (last ifelse l adjustline cr)
  25. setmacro splitlastword 2 (eval (rx (" x='$$arg1'; y=words(x); 'set $arg2' word(x,y); 'set $arg1 ('delword(x,y,1)')';")))
  26.  
  27.  
  28. #C-language support
  29. menuoff
  30.  
  31. menuadd Declare (Char)                  ((char  ;)  left)
  32. menuadd Declare (Short)                 ((short ;)  left)
  33. menuadd Declare (Int)                   ((int   ;)  left)
  34. menuadd Declare (Long)                  ((long  ;)  left)
  35. menuadd Declare (uns.Char)              ((unsigned char  ;) left)
  36. menuadd Declare (uns.Short)             ((unsigned short ;) left)
  37. menuadd Declare (uns.Int)               ((unsigned int   ;) left)
  38. menuadd Declare (uns.Long)              ((unsigned long  ;) left)
  39.  
  40. menubar Declare
  41. menuadd Declare (Struct-Type)           ($getname (struct \$name {) spdw cr (} /* struct \$name */) adjustline  up tab)
  42.  
  43. menuadd States (Switch-Constr.  a-s)    ( a-s)
  44. menuadd States (Case-Label      a-c)    ( a-c $getname (\$name) right cr)
  45. menuadd States (If-Statement    a-i)    ( a-i)
  46. menuadd States (Else-Part       a-e)    ( a-e)
  47. menuadd States (ElsIf-Part     sa-e)    (sa-e)
  48. menuadd States (For-Loop        a-f)    ( a-f)
  49. menuadd States (While-Loop      a-w)    ( a-w)
  50. menuadd States (} /*  */           )    ( pushdot (} /*  */) popdot cr col +5)
  51. menuadd States ({\\n} /*  */       )    ( freeline ({) cr (} /*  */) adjustline col +5)
  52. menubar States
  53. menuadd States (referred to)            (insert (->))
  54. menuadd States (<line-end>)             (sac-,)
  55.  
  56. menuon
  57.  
  58. setmacro c-case   0 (freeline (case :) adjustline last left)
  59. setmacro c-elif   0 (freeline (} else if () {) adjustline last rundzu prev)
  60. setmacro c-else   0 (freeline (} else {) adjustline last)
  61. setmacro c-for      0 (freeline (for (;;) {) cr (} /* for */) adjustline up last findstr (;;) prev)
  62. setmacro c-if      0 (freeline (if () {) cr (} /* if */) adjustline rundzu prev)
  63. setmacro c-switch 0 (freeline (switch () {) cr (} /* switch */) adjustline rundzu prev)
  64. setmacro c-while  0 (freeline (while () {) cr (} /* while */) adjustline rundzu prev)
  65. setmacro c-struct 0 ((struct  {) cr (} /* struct */) up up col -7)
  66. setmacro c-proc   2 (freeline first (\$arg1) cr (\$arg2 ()) cr ({) cr (} /* \$arg2 */) adjustline last cr goto -3 last left)
  67. #setmacro c-proc   0 (freeline first (\$type) cr (\$name()) cr ({) cr (} /* \$name */) adjustline last cr goto -3 last left)
  68.  
  69. # with that macro it is possible to surround a block with
  70. # one of the 2-line c-constructs
  71. # the only things, that are bugs/not supported is that after that call
  72. # the ranges of the block are not set right any more and
  73. # that the block is not tabbed and that we had to insert 1 line, that cannot be deleted
  74. #setmacro surroundblock 1 (ifelse !cb (\$arg1) (while cb down pushdot up while cb up eval (\$arg1) pushmark unblock down block block swapdot down bmove popdot up popmark))
  75. setmacro surroundblock 2 (ifelse !cb (\$arg1) (while cb up down eval (\$arg2) up insline eval (\$arg1) down bmove up))
  76.  
  77. map  s-nk* ((/*  */) col -3)
  78.  
  79. map  a-a ((&& ))
  80. map sa-a ((& ))
  81. map sA-a ((void* ))
  82.  
  83. map  a-c (c-case)
  84. map sa-c ((const) cr tab)
  85. map  A-c ((char  ; ) left )
  86.  
  87. map  a-d ((/ ))
  88.  
  89. map  a-e (c-else)
  90. map sa-e (c-elif)
  91. map  A-e ((extern ))
  92.  
  93. map  a-f (c-for)
  94. map  A-f ((FALSE))
  95.  
  96. map  a-i (c-if)
  97. map sa-i (surroundblock  (first (#if ) spdw (#endif /*  */) up col 5) ())
  98. map  A-i ((int  ;) left)
  99.  
  100. map  a-k (firstnb `/* ' last right `*/')
  101. map sa-k (first findstr (*) next left del del del last prev del del bs firstnb)
  102.  
  103. map  A-l ((long ;) left)
  104. map sA-l ((unsigned long ;) left)
  105.  
  106. map  a-m ((% ))
  107.  
  108. map  a-n ((!))
  109. map  A-n ((NULL ))
  110. map sa-n ($getname)
  111. map sA-n ($gettype)
  112.  
  113. map  a-p ($gettype $getname if !vlname (splitlastword type name) first (\$type) cr (\$name()) cr ({) cr (} /* \$name */) adjustline last cr goto -3 last left)
  114. map  A-p ((Prototype ))
  115.  
  116. map sa-r ((return ) if c=32 ((();) col -2))
  117. map  A-r ((register ))
  118.  
  119. map  a-s (c-switch)
  120. map  A-s (c-struct)
  121. map sA-s ((static ))
  122.  
  123. map  a-t ((typedef) -tab)
  124. map  A-t ((TRUE))
  125.  
  126. map  A-v  ((void))
  127.  
  128. map  a-w (c-while)
  129.  
  130. map  a-z ((printf("",,0);) col -6)
  131.  
  132. map   help ctags
  133. map s-help ref
  134.  
  135.  
  136.  
  137.  
  138. #map -return (split down set crline \$lineno up firstnb while r (up firstnb) set crcol \$colno (if c=123 add crcol 4) goto \$crline first ifelse ca
  139.  
  140. # you should test for , { \ ) ( you do test for {
  141. #map -return (split down set _crl \$lineno prevline firstnb set _crc \$colno ifelse ca (rx ("trace results; if ~(find('\$blockbeginner','\\\$currentword')=0) then 'add _crc 4')) (last left if c=123 (add _crc 4)) goto \$_crl first while x<\$_crc (( ))
  142.  
  143.  
  144. set blockbeginner (if else while for switch case FOREVER)
  145. set blockender      (else case)
  146. ## some c-possibilities are not respected here:
  147. ## (it did not disturb me, as I do not use such style too much)
  148. ##    "if ((...) <cr> (...)) { <cr>" would cause 2 tabs
  149. ##    "} else { /* bla bla */ <cr>"  would cause no tab
  150. ##    "#if/#ifdef/#endif/..."-lines are not ignored
  151. ##    "if (...) <cr> state <cr> does not go back to old-insertion */
  152. ## (in comments the used formatting is disgusting, too)
  153. setmacro checkblockers     1 (unfail (last left if !ca (add $arg1 \$tabstop if c=123 abort if c=58 abort sub $arg1 \$tabstop) if c=59 abort firstnb if ca (rx ("if find('\$blockbeginner','\$currentword') ~= 0 then 'add $arg1 \$tabstop'"))))
  154. setmacro checkunblockers 1 (firstnb ifelse c=125 (sub $arg1 \$tabstop) (firstnb if ca (rx ("if find('\$blockender','\$currentword') ~= 0 then 'sub $arg1 \$tabstop'"))))
  155. setmacro adjustline     0 (quiet (getlineno _crl prevline firstnb getcolno _crc checkblockers _crc goto \\\$_crl) firstnb checkunblockers _crc eval (while x<\\\$_crc space while x>\\\$_crc bs))
  156.  
  157. #         __that part calls the right indention also for the currentline__ :-) only the last three commands are neccessary for return
  158. map -return (set _crx -\$colno last math2 add _crx \$colno adjustline last col -\$_crx split down adjustline)
  159. map c-tab (adjustline)
  160.  
  161.  
  162.  
  163.  
  164. ##########################################################
  165. ##
  166. ##  DICE-ERROR-SUPPORT
  167. ##
  168. ##  it is supposed that U call the compiler with "-E \$errsrc"
  169. ##  and create that file starting with "DJMP <cr>TPLT..." (see below)
  170. ##  before compiling ( to be able to correctly read the errors)
  171. ##  (else that has to be done in readerrs via something like :)
  172. ##  execute (echo > \$errfile "DJMP...") execute (type >> \$errfile \$errsrc)
  173. ##
  174. set errsrc  errors
  175. set errfile errors
  176. set errnum  0
  177. ##
  178. setmacro readerrs   0 (readjumps \$errfile g set errnum 0)
  179. setmacro currenterr 0 (gotojump  \$errfile \$errnum g)
  180. setmacro nexterr    0 (inc errnum currenterr)
  181. setmacro preverr    0 (dec errnum currenterr)
  182. setmacro firsterr   0 (set errnum 1      currenterr)
  183. setmacro gotoerr    1 (set errnum \$arg1 currenterr)
  184. setmacro clearerrs  0 (execute (echo > \$errfile "DJMP*NTPLT%**s%**s%**s%Xld%Ts%C99c") readerrs)
  185. ##
  186. ##########################################################
  187.  
  188.  
  189.  
  190.