home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol076 / ed5.c < prev    next >
C/C++ Source or Header  |  1985-02-18  |  2KB  |  130 lines

  1. /* ED5.C */
  2.  
  3. #include ed0.c
  4. #include ed1.ccc
  5. int fmttab;
  6. int fmtdev;
  7. int fmtwidth;
  8. int fmtcol[MAXLEN1];
  9. fmtassn(listflag) int listflag;
  10. {
  11.     if (listflag==YES) {
  12.         fmtdev=YES;
  13.         fmtwidth=LISTW;
  14.     }
  15.     else {
  16.         fmtdev=NO;
  17.         fmtwidth=SCRNW1;
  18.     }
  19. }
  20. fmtadj(buf,minind,maxind) char *buf; int minind,maxind;
  21. {
  22. int k;
  23.     fmtcol[0]=0;
  24.     k=minind;
  25.     while (k<maxind) {
  26.         if (buf[k]==CR) {
  27.             break;
  28.         }
  29.         fmtcol[k+1]=fmtcol[k]+fmtchlen(buf[k],fmtcol[k]);
  30.         k++;
  31.     }
  32. }
  33. fmtlen(buf,i) char *buf; int i;
  34. {
  35.     return(fmtcol[i]);
  36. }
  37. fmtsubs(buf,i,j) char *buf; int i,j;
  38. {
  39. int k;
  40.     if (fmtcol[i]>=fmtwidth) {
  41.         return;
  42.     }
  43.     outxy(fmtcol[i],outyget());
  44.     while (i<j) {
  45.         if (buf[i]==CR) {
  46.             break;
  47.         }
  48.         if (fmtcol[i+1]>fmtwidth) {
  49.             break;
  50.         }
  51.         fmtoutch(buf[i],fmtcol[i]);
  52.         i++;
  53.     }
  54.     if (fmtcol[i]<SCRNW1) {    /* modified to allow full screen width */
  55.     outdeol();
  56.     }
  57. }
  58. fmtsout(buf,offset) char *buf; int offset;
  59. {
  60. char c;
  61. int col,k;
  62.     col=0;
  63.     while (c= *buf++) {
  64.         if (c==CR) {
  65.             break;
  66.         }
  67.         k=fmtchlen(c,col);
  68.         if ((col+k+offset)>fmtwidth) {
  69.             break;
  70.         }
  71.         fmtoutch(c,col);
  72.         col=col+k;
  73.     }
  74.     return(col);        /* fmtsout() now returns column value */
  75. }
  76. fmtchlen(c,col) char c; int col;
  77. {
  78.     if (c==TAB) {
  79.         return(fmttab-(col%fmttab));
  80.     }
  81.     else if (c<32) {
  82.         return(2);
  83.     }
  84.     else {
  85.         return(1);
  86.     }
  87. }
  88. fmtoutch(c,col) char c; int col;
  89. {
  90. int k;
  91.     if (c==TAB) {
  92.         k=fmtchlen(TAB,col);
  93.         while ((k--)>0) {
  94.             fmtchdev(' ');
  95.         }
  96.     }
  97.     else if (c<32) {
  98.         fmtchdev('^');
  99.         fmtchdev(c+64);
  100.     }
  101.     else {
  102.         fmtchdev(c);
  103.     }
  104. }
  105. fmtchdev(c) char c;
  106. {
  107.     if (fmtdev==YES) {
  108.         syslout(c);
  109.     }
  110.     else {
  111.         outchar(c);
  112.     }
  113. }
  114. fmtcrlf()
  115. {
  116.     if (fmtdev==YES) {
  117.         syslout(CR);
  118.         syslout(LF);
  119.     }
  120.     else {
  121.         outxy(0,SCRNL1);
  122.         syscout(CR);
  123.         syscout(LF);
  124.     }
  125. }
  126. fmtset(n) int n;
  127. {
  128.     fmttab=max(1,n);
  129. }
  130.