version 1.22, 2006/05/28 23:30:16 |
version 1.23, 2006/06/01 09:00: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--; |
} |
} |
|
|
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++; |
|
|
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); |
} |
} |
|
|
|
|
(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); |
} |
} |
|
|
|
|
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); |
} |
} |
|
|
|
|
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; |
|
|
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 */ |
|
|
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 */ |
|
|
{ |
{ |
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; |
} |
} |
|
|
/* |
/* |
|
|
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"); |
|
|
} |
} |
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); |
} |
} |
|
|
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++; |
} |
} |