home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / smart21b.zip / MACROS / SMARTC.REX < prev    next >
OS/2 REXX Batch file  |  1992-10-20  |  3KB  |  166 lines

  1. /* smart c template  */
  2. 'S_GET_CURR_WORD CCODE'
  3.  
  4. SELECT
  5.     
  6.     WHEN abbrev( 'if', CCode, 1 ) THEN
  7.        do
  8.         call insertcode( "if( )" )
  9.         'S_PREV_CHAR'
  10.         end
  11.  
  12.     WHEN abbrev( 'while', CCode, 1 ) THEN 
  13.         do
  14.         call insertcode( "while( )" )
  15.         'S_PREV_CHAR'
  16.         end
  17.         
  18.     WHEN abbrev( 'switch', CCode, 1 ) THEN 
  19.         do
  20.         call insertcode( "switch( )" )
  21.         'S_PREV_CHAR'
  22.         end
  23.  
  24.     WHEN abbrev( 'case', CCode, 1 ) THEN
  25.        do
  26.         call insertcode( "case :" )
  27.         'S_PREV_CHAR'
  28.         end
  29.  
  30.     WHEN abbrev( 'for', CCode, 1 ) THEN
  31.        do
  32.         call insertcode( "for( ; ; )" )
  33.         'S_PREV_CHAR'
  34.         'S_PREV_CHAR'
  35.         'S_PREV_CHAR'
  36.         'S_PREV_CHAR'
  37.         'S_PREV_CHAR'
  38.         end
  39.  
  40.     WHEN abbrev( 'do', CCode, 1 ) THEN 
  41.         do
  42.         call insertline( "do" )             /* do                 */
  43.         ADDSTR = '{'  
  44.         'S_INSERT_LINE' ADDSTR                /* {                  */
  45.         'S_INDENT'
  46.         ADDSTR = ' '  
  47.         'S_INSERT_LINE' ADDSTR                /* blank line         */
  48.         'S_INDENT'
  49.         'S_PREV_CHAR'
  50.         ADDSTR = '} while( )'  
  51.         'S_INSERT_LINE' ADDSTR                /* } while ()        */
  52.         'S_PREV_LINE'
  53.         'S_PREV_LINE'
  54.         'S_INDENT'
  55.         ADDSTR = ' ' 
  56.         'S_INSERT_STRING' ADDSTR  
  57.         end
  58.         
  59.     WHEN CCode = 'b' | CCode = '{' THEN 
  60.         do
  61.         call insertline( "{" )                 
  62.         ADDSTR = ' '  
  63.         'S_INSERT_LINE' ADDSTR        
  64.         'S_INDENT' 
  65.         'S_PREV_CHAR'
  66.         ADDSTR = '}'  
  67.         'S_INSERT_STRING' ADDSTR        
  68.         'S_PREV_LINE'
  69.         ADDSTR = ' ' 
  70.         'S_INSERT_STRING' ADDSTR  
  71.         end
  72.  
  73.  
  74.     WHEN CCode = 'cl' THEN
  75.         do
  76.         'S_PROMPT' 'Enter Comment,' 'Comment' 
  77.         NEWCODE = '/* ' || Comment '*/'
  78.         call insertcode( NEWCODE ) 
  79.         'S_INSERT_LINE' ' '
  80.         'S_INDENT'     
  81.         end
  82.  
  83.     WHEN CCode = 'ce' THEN
  84.         do
  85.         'S_PROMPT' 'Enter Comment,' 'Comment' 
  86.         'S_SELECT_WORD'
  87.         'S_DEL_SELECTED'
  88.         StrLen = LENGTH( Comment )
  89.         Justify = 'LEFT'
  90.  
  91.         IF Justify = 'RIGHT'  THEN 
  92.            IF ( StrLen >= 70 ) THEN
  93.               CommentCol = 1
  94.            ELSE
  95.               CommentCol = 70 - StrLen + 1
  96.         ELSE
  97.            CommentCol = 45
  98.  
  99.         'S_END_OF_LINE'
  100.         IF rc \= 0 THEN DO
  101.            SAY 'S_ Error = ' rc
  102.            EXIT
  103.            END
  104.  
  105.         'S_GET_COL_NUM CURRCOL'
  106.         IF rc \= 0 THEN DO
  107.            SAY 'S_ Error = ' rc
  108.            EXIT
  109.            END
  110.  
  111.         IF CurrCol < CommentCol THEN
  112.            DO
  113.            'S_GOTO_COL' CommentCol
  114.            'S_INSERT_STRING' '// ' || Comment
  115.            END
  116.         ELSE
  117.            DO
  118.            'S_PREV_LINE'
  119.            'S_END_OF_LINE'
  120.            ForceNewLine = ' '
  121.            'S_INSERT_LINE' ForceNewLine
  122.            NewComment = COPIES(' ', CommentCol - 1 ) || '// ' || Comment 
  123.            'S_INSERT_STRING' NewComment
  124.            END
  125.  
  126.         end
  127.         
  128.     WHEN CCode = 'h' THEN
  129.         do
  130.         'S_SELECT_WORD'
  131.         'S_DEL_SELECTED'
  132.         'S_PROMPT' 'Enter Function Comments,' 'NEWFILENAME'
  133.       
  134.         comment = '/'|| copies('*',67)
  135.         'S_INSERT_LINE' comment
  136.  
  137.         'S_INSERT_LINE' '*'
  138.         'S_INSERT_LINE' '*  ' || NEWFILENAME 
  139.         'S_INSERT_LINE' '*'
  140.         comment = copies('*',67) || '/'
  141.         'S_INSERT_LINE' comment
  142.  
  143.         end
  144.  
  145.        OTHERWISE
  146.         NOP
  147. end 
  148. exit        
  149.  
  150. insertcode: procedure
  151.         parse arg CodeToAdd
  152.         'S_SELECT_WORD'
  153.         'S_DEL_SELECTED'
  154.         'S_INSERT_STRING' CodeToAdd
  155.         return    
  156.  
  157. insertline: procedure
  158.         parse arg CodeToAdd
  159.         'S_SELECT_WORD'
  160.         'S_DEL_SELECTED'
  161.         'S_INSERT_LINE' CodeToAdd
  162.         'S_INDENT'
  163.         return    
  164.  
  165.  
  166.