[BACK]Return to macro.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / mg

Diff for /src/usr.bin/mg/macro.c between version 1.1 and 1.2

version 1.1, 2000/02/25 19:08:48 version 1.2, 2000/04/13 06:12:16
Line 1 
Line 1 
 /* keyboard macros for MicroGnuEmacs 1x */  /* keyboard macros for Mg 2 */
   
 #ifndef NO_MACRO  #ifndef NO_MACRO
 #include "def.h"  #include "def.h"
Line 7 
Line 7 
 #define INIT(i) = (i)  #define INIT(i) = (i)
 #include "macro.h"  #include "macro.h"
   
 /*ARGSUSED*/  /* ARGSUSED */
 definemacro(f, n)  definemacro(f, n)
 int     f, n;          int             f, n;
 {  {
         register LINE *lp1;          register LINE  *lp1;
         LINE *lp2;          LINE           *lp2;
   
         macrocount = 0;          macrocount = 0;
         if(macrodef) {          if (macrodef) {
             ewprintf("already defining macro");                  ewprintf("already defining macro");
             return macrodef = FALSE;                  return macrodef = FALSE;
         }          }
         /* free lines allocated for string arguments */          /* free lines allocated for string arguments */
         if(maclhead != NULL) {          if (maclhead != NULL) {
             for(lp1 = maclhead->l_fp; lp1 != maclhead; lp1 = lp2) {                  for (lp1 = maclhead->l_fp; lp1 != maclhead; lp1 = lp2) {
                 lp2 = lp1->l_fp;                          lp2 = lp1->l_fp;
                 free((char *)lp1);                          free((char *) lp1);
             }                  }
             free((char *)lp1);                  free((char *) lp1);
         }          }
         if((maclhead = lp1 = lalloc(0)) == NULL) return FALSE;          if ((maclhead = lp1 = lalloc(0)) == NULL)
                   return FALSE;
         ewprintf("Defining Keyboard Macro...");          ewprintf("Defining Keyboard Macro...");
         maclcur = lp1->l_fp = lp1->l_bp = lp1;          maclcur = lp1->l_fp = lp1->l_bp = lp1;
         return macrodef = TRUE;          return macrodef = TRUE;
 }  }
   
 /*ARGSUSED*/  /* ARGSUSED */
 finishmacro(f, n)  finishmacro(f, n)
 int     f, n;          int             f, n;
 {  {
     macrodef = FALSE;          macrodef = FALSE;
     ewprintf("End Keyboard Macro Definition");          ewprintf("End Keyboard Macro Definition");
     return TRUE;          return TRUE;
 }  }
   
 /*ARGSUSED*/  /* ARGSUSED */
 executemacro(f, n)  executemacro(f, n)
 int     f, n;          int             f, n;
 {  {
         int     i, j;          int             i, j;
         PF      funct;          PF              funct;
         int     universal_argument();          int             universal_argument();
         int     flag, num;          int             flag, num;
   
     if(macrodef ||          if (macrodef ||
             (macrocount >= MAXMACRO && macro[MAXMACRO].m_funct != finishmacro))           (macrocount >= MAXMACRO && macro[MAXMACRO].m_funct != finishmacro))
         return FALSE;  
     if(macrocount == 0) return TRUE;  
     inmacro = TRUE;  
     for(i = n; i > 0; i--) {  
         maclcur = maclhead->l_fp;  
         flag = 0;  
         num = 1;  
         for(j = 0; j < macrocount-1; j++) {  
             funct = macro[j].m_funct;  
             if(funct == universal_argument) {  
                 flag = FFARG;  
                 num = macro[++j].m_count;  
                 continue;  
             }  
             if((*funct)(flag, num) != TRUE) {  
                 inmacro = FALSE;  
                 return FALSE;                  return FALSE;
             }          if (macrocount == 0)
             lastflag = thisflag;                  return TRUE;
             thisflag = 0;          inmacro = TRUE;
             flag = 0;          for (i = n; i > 0; i--) {
             num = 1;                  maclcur = maclhead->l_fp;
                   flag = 0;
                   num = 1;
                   for (j = 0; j < macrocount - 1; j++) {
                           funct = macro[j].m_funct;
                           if (funct == universal_argument) {
                                   flag = FFARG;
                                   num = macro[++j].m_count;
                                   continue;
                           }
                           if ((*funct) (flag, num) != TRUE) {
                                   inmacro = FALSE;
                                   return FALSE;
                           }
                           lastflag = thisflag;
                           thisflag = 0;
                           flag = 0;
                           num = 1;
                   }
         }          }
     }          inmacro = FALSE;
     inmacro = FALSE;          return TRUE;
     return TRUE;  
 }  }
 #endif  #endif

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2