home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / CPM68K / KMINCE.LBR / ELECTRIC.CQ / ELECTRIC.C
Text File  |  2000-06-30  |  2KB  |  88 lines

  1. /* -*-c,save-*- */
  2. /*
  3.  * electric.c - General Electric Code
  4.  * Robert Heller. Created: Thr Sep 26, 1985 19:53:58.50
  5.  * Last Mod: 
  6.  * 
  7.  */
  8.  
  9. #include "mince.gbl"
  10.  
  11. /* initialization routine */
  12.  
  13. EInitAbrv()
  14. {
  15.     register int i;
  16.  
  17.     NormAbr[0].Abrev = NULL;        /* no abrevs in the normal table */
  18.     
  19.     CAbrvInit();
  20. #ifdef LISPMODE
  21.     LispAbInit();
  22. #endif
  23.     }
  24. ECpyAbrv(to,from,count)
  25. register ABREVENT *to,*from;
  26. register int count;
  27. {
  28.     while(count-- > 0) {
  29.     to->Abrev = from->Abrev;
  30.     to->Expand = from->Expand;
  31.     to->Abrevfun = from->Abrevfun;
  32.     to++; from++;
  33.     }
  34.     }
  35. EDoAbrev(ch)
  36. register char ch;
  37. {
  38.     register int tmpmrk;
  39.     int IsAlpha();
  40.     char buffer[32];
  41.     register char *p;
  42.     regster int i,c;
  43.  
  44.     tmpmrk = BCreMrk();
  45.     MovePast(IsAlpha,BACKWARD);
  46.     p = (&buffer[0]); c = 0;
  47.     while (BIsBeforeMrk(tmpmrk) && c < 31) {
  48.     *p++ = Buff();
  49.     BMove(1); c++;
  50.     }
  51.     if (BIsBeforeMrk(tmpmrk)) {
  52.     BPntToMrk(tmpmrk);
  53.     BKillMrk(tmpmrk);
  54.     BInsert(ch);
  55.     }
  56.     else {
  57.     *p = '\0';
  58.     i = findabr(buffer,CurAbr);
  59.     if (i < 0) {
  60.         BPntToMrk(tmpmrk);
  61.         BKillMrk(tmpmrk);
  62.         BInsert(ch);
  63.         }
  64.     else {
  65.         p = CurAbr[i].Expand;
  66.         if (p != NULL) {
  67.         BMove(-c);
  68.         BDelete(c);
  69.         while (*p != '\0') BInsert(*p++);
  70.         (*(CurAbr[i].Abrevfun))(ch);
  71.         BKillMrk(tmpmrk);
  72.         }
  73.     }
  74.     }
  75. static findabr(str,abrptr)
  76. register char *str;
  77. register ABREVENT *abrptr;
  78. {
  79.     register int i;
  80.  
  81.     for (i=0;i < MAXABREVS && abrptr->Abrev != NULL;i++) {
  82.     if (strcmp(str,abrptr->Abrev) == 0) return(i);
  83.     abrptr++;
  84.     }
  85.     return(-1);
  86.     }
  87. REVS && abrptr->Abrev != NULL;i++) {
  88.     i