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

Diff for /src/usr.bin/mg/basic.c between version 1.22 and 1.23

version 1.22, 2006/05/28 23:30:16 version 1.23, 2006/06/01 09:00:50
Line 50 
Line 50 
                         curwp->w_dotp = lp;                          curwp->w_dotp = lp;
                         curwp->w_doto = llength(lp);                          curwp->w_doto = llength(lp);
                         curwp->w_flag |= WFMOVE;                          curwp->w_flag |= WFMOVE;
                           curwp->w_dotline--;
                 } else                  } else
                         curwp->w_doto--;                          curwp->w_doto--;
         }          }
Line 89 
Line 90 
                                 return (FALSE);                                  return (FALSE);
                         }                          }
                         curwp->w_doto = 0;                          curwp->w_doto = 0;
                           curwp->w_dotline++;
                         curwp->w_flag |= WFMOVE;                          curwp->w_flag |= WFMOVE;
                 } else                  } else
                         curwp->w_doto++;                          curwp->w_doto++;
Line 108 
Line 110 
         curwp->w_dotp = lforw(curbp->b_linep);          curwp->w_dotp = lforw(curbp->b_linep);
         curwp->w_doto = 0;          curwp->w_doto = 0;
         curwp->w_flag |= WFFULL;          curwp->w_flag |= WFFULL;
           curwp->w_dotline = 1;
         return (TRUE);          return (TRUE);
 }  }
   
Line 122 
Line 125 
         (void) setmark(f, n);          (void) setmark(f, n);
         curwp->w_dotp = lback(curbp->b_linep);          curwp->w_dotp = lback(curbp->b_linep);
         curwp->w_doto = llength(curwp->w_dotp);          curwp->w_doto = llength(curwp->w_dotp);
           curwp->w_dotline = curwp->w_bufp->b_lines;
         curwp->w_flag |= WFFULL;          curwp->w_flag |= WFFULL;
         return (TRUE);          return (TRUE);
 }  }
Line 141 
Line 145 
   
         if (n < 0)          if (n < 0)
                 return (backline(f | FFRAND, -n));                  return (backline(f | FFRAND, -n));
           if ((dlp = curwp->w_dotp) == curbp->b_linep)
                   return(TRUE);
         if ((lastflag & CFCPCN) == 0)   /* Fix goal. */          if ((lastflag & CFCPCN) == 0)   /* Fix goal. */
                 setgoal();                  setgoal();
         thisflag |= CFCPCN;          thisflag |= CFCPCN;
         if (n == 0)          if (n == 0)
                 return (TRUE);                  return (TRUE);
         dlp = curwp->w_dotp;          while (n--) {
         while (dlp != curbp->b_linep && n--)  
                 dlp = lforw(dlp);                  dlp = lforw(dlp);
         curwp->w_flag |= WFMOVE;                  if (dlp == curbp->b_linep) {
         if (dlp == curbp->b_linep) {    /* ^N at end of buffer creates lines                          curwp->w_dotp = lback(dlp);
                                          * (like gnu) */                          curwp->w_doto = llength(curwp->w_dotp);
                 if (!(curbp->b_flag & BFCHG)) { /* first change */                          curwp->w_flag |= WFMOVE;
                         curbp->b_flag |= BFCHG;                          return (TRUE);
                         curwp->w_flag |= WFMODE;  
                 }                  }
                 curwp->w_doto = 0;                  curwp->w_dotline++;
                 while (n-- >= 0) {  
                         if ((dlp = lalloc(0)) == NULL)  
                                 return (FALSE);  
                         dlp->l_fp = curbp->b_linep;  
                         dlp->l_bp = lback(dlp->l_fp);  
                         dlp->l_bp->l_fp = dlp->l_fp->l_bp = dlp;  
                 }  
                 curwp->w_dotp = lback(curbp->b_linep);  
         } else {  
                 curwp->w_dotp = dlp;  
                 curwp->w_doto = getgoal(dlp);  
         }          }
           curwp->w_flag |= WFMOVE;
           curwp->w_dotp = dlp;
           curwp->w_doto = getgoal(dlp);
   
         return (TRUE);          return (TRUE);
 }  }
   
Line 191 
Line 188 
                 setgoal();                  setgoal();
         thisflag |= CFCPCN;          thisflag |= CFCPCN;
         dlp = curwp->w_dotp;          dlp = curwp->w_dotp;
         while (n-- && lback(dlp) != curbp->b_linep)          while (n-- && lback(dlp) != curbp->b_linep) {
                 dlp = lback(dlp);                  dlp = lback(dlp);
                   curwp->w_dotline--;
           }
         curwp->w_dotp = dlp;          curwp->w_dotp = dlp;
         curwp->w_doto = getgoal(dlp);          curwp->w_doto = getgoal(dlp);
         curwp->w_flag |= WFMOVE;          curwp->w_flag |= WFMOVE;
Line 273 
Line 272 
                 n *= curwp->w_ntrows;           /* to lines.             */                  n *= curwp->w_ntrows;           /* to lines.             */
 #endif  #endif
         lp = curwp->w_linep;          lp = curwp->w_linep;
         while (n-- && lforw(lp) != curbp->b_linep)          while (n-- && lforw(lp) != curbp->b_linep) {
                 lp = lforw(lp);                  lp = lforw(lp);
                   curwp->w_dotline++;
           }
         curwp->w_linep = lp;          curwp->w_linep = lp;
         curwp->w_flag |= WFFULL;          curwp->w_flag |= WFFULL;
         /* if in current window, don't move dot */          /* if in current window, don't move dot */
Line 311 
Line 312 
                 n *= curwp->w_ntrows;           /* to lines.             */                  n *= curwp->w_ntrows;           /* to lines.             */
 #endif  #endif
         lp = curwp->w_linep;          lp = curwp->w_linep;
         while (n-- && lback(lp) != curbp->b_linep)          while (n-- && lback(lp) != curbp->b_linep) {
                 lp = lback(lp);                  lp = lback(lp);
                   curwp->w_dotline--;
           }
         curwp->w_linep = lp;          curwp->w_linep = lp;
         curwp->w_flag |= WFFULL;          curwp->w_flag |= WFFULL;
         /* if in current window, don't move dot */          /* if in current window, don't move dot */
Line 379 
Line 382 
 {  {
         curwp->w_markp = curwp->w_dotp;          curwp->w_markp = curwp->w_dotp;
         curwp->w_marko = curwp->w_doto;          curwp->w_marko = curwp->w_doto;
           curwp->w_markline = curwp->w_dotline;
 }  }
   
 /*  /*
Line 407 
Line 411 
 swapmark(int f, int n)  swapmark(int f, int n)
 {  {
         struct line  *odotp;          struct line  *odotp;
         int    odoto;          int odoto, odotline;
   
         if (curwp->w_markp == NULL) {          if (curwp->w_markp == NULL) {
                 ewprintf("No mark in this window");                  ewprintf("No mark in this window");
Line 415 
Line 419 
         }          }
         odotp = curwp->w_dotp;          odotp = curwp->w_dotp;
         odoto = curwp->w_doto;          odoto = curwp->w_doto;
           odotline = curwp->w_dotline;
         curwp->w_dotp = curwp->w_markp;          curwp->w_dotp = curwp->w_markp;
         curwp->w_doto = curwp->w_marko;          curwp->w_doto = curwp->w_marko;
           curwp->w_dotline = curwp->w_markline;
         curwp->w_markp = odotp;          curwp->w_markp = odotp;
         curwp->w_marko = odoto;          curwp->w_marko = odoto;
           curwp->w_markline = odotline;
         curwp->w_flag |= WFMOVE;          curwp->w_flag |= WFMOVE;
         return (TRUE);          return (TRUE);
 }  }
Line 435 
Line 442 
 gotoline(int f, int n)  gotoline(int f, int n)
 {  {
         struct line  *clp;          struct line  *clp;
         char   buf[32], *bufp, *tmp;          char   buf[32], *bufp;
         long   nl;          const char *err;
   
         if (!(f & FFARG)) {          if (!(f & FFARG)) {
                 if ((bufp = eread("Goto line: ", buf, sizeof(buf),                  if ((bufp = eread("Goto line: ", buf, sizeof(buf),
                     EFNUL | EFNEW | EFCR)) == NULL)                      EFNUL | EFNEW | EFCR)) == NULL)
                         return (ABORT);                          return (ABORT);
                 nl = strtol(bufp, &tmp, 10);                  n = (int)strtonum(buf, INT_MIN, INT_MAX, &err);
                 if (bufp[0] == '\0' || *tmp != '\0') {                  if (err) {
                         ewprintf("Invalid number");                          ewprintf("Line number %s", err);
                         return (FALSE);                          return (FALSE);
                 }                  }
                 if (nl >= INT_MAX || nl <= INT_MIN) {  
                         ewprintf("Out of range");  
                         return (FALSE);  
                 }  
                 n = (int)nl;  
         }          }
         if (n >= 0) {          if (n >= 0) {
                   if (n == 0)
                           n++;
                   curwp->w_dotline = n;
                 clp = lforw(curbp->b_linep);    /* "clp" is first line */                  clp = lforw(curbp->b_linep);    /* "clp" is first line */
                 while (--n > 0) {                  while (--n > 0) {
                         if (lforw(clp) == curbp->b_linep)                          if (lforw(clp) == curbp->b_linep) {
                                   curwp->w_dotline = curwp->w_bufp->b_lines;
                                 break;                                  break;
                           }
                         clp = lforw(clp);                          clp = lforw(clp);
                 }                  }
         } else {          } else {
                   curwp->w_dotline = curwp->w_bufp->b_lines + n;
                 clp = lback(curbp->b_linep);    /* "clp" is last line */                  clp = lback(curbp->b_linep);    /* "clp" is last line */
                 while (n < 0) {                  while (n < 0) {
                         if (lback(clp) == curbp->b_linep)                          if (lback(clp) == curbp->b_linep) {
                                   curwp->w_dotline = 1;
                                 break;                                  break;
                           }
                         clp = lback(clp);                          clp = lback(clp);
                         n++;                          n++;
                 }                  }

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.23