version 1.11, 2004/07/22 01:25:25 |
version 1.12, 2005/04/03 02:09:28 |
|
|
int s; |
int s; |
|
|
if ((s = readpattern("Search")) != TRUE) |
if ((s = readpattern("Search")) != TRUE) |
return s; |
return (s); |
if (forwsrch() == FALSE) { |
if (forwsrch() == FALSE) { |
ewprintf("Search failed: \"%s\"", pat); |
ewprintf("Search failed: \"%s\"", pat); |
return FALSE; |
return (FALSE); |
} |
} |
srch_lastdir = SRCH_FORW; |
srch_lastdir = SRCH_FORW; |
return TRUE; |
return (TRUE); |
} |
} |
|
|
/* |
/* |
|
|
return (s); |
return (s); |
if (backsrch() == FALSE) { |
if (backsrch() == FALSE) { |
ewprintf("Search failed: \"%s\"", pat); |
ewprintf("Search failed: \"%s\"", pat); |
return FALSE; |
return (FALSE); |
} |
} |
srch_lastdir = SRCH_BACK; |
srch_lastdir = SRCH_BACK; |
return TRUE; |
return (TRUE); |
} |
} |
|
|
/* |
/* |
|
|
if (srch_lastdir == SRCH_FORW) { |
if (srch_lastdir == SRCH_FORW) { |
if (forwsrch() == FALSE) { |
if (forwsrch() == FALSE) { |
ewprintf("Search failed: \"%s\"", pat); |
ewprintf("Search failed: \"%s\"", pat); |
return FALSE; |
return (FALSE); |
} |
} |
return TRUE; |
return (TRUE); |
} |
} |
if (srch_lastdir == SRCH_BACK) { |
if (srch_lastdir == SRCH_BACK) { |
if (backsrch() == FALSE) { |
if (backsrch() == FALSE) { |
ewprintf("Search failed: \"%s\"", pat); |
ewprintf("Search failed: \"%s\"", pat); |
return FALSE; |
return (FALSE); |
} |
} |
return TRUE; |
return (TRUE); |
} |
} |
ewprintf("No last search"); |
ewprintf("No last search"); |
return FALSE; |
return (FALSE); |
} |
} |
|
|
/* |
/* |
|
|
int |
int |
forwisearch(int f, int n) |
forwisearch(int f, int n) |
{ |
{ |
return isearch(SRCH_FORW); |
return (isearch(SRCH_FORW)); |
} |
} |
|
|
/* |
/* |
|
|
int |
int |
backisearch(int f, int n) |
backisearch(int f, int n) |
{ |
{ |
return isearch(SRCH_BACK); |
return (isearch(SRCH_BACK)); |
} |
} |
|
|
/* |
/* |
|
|
#ifndef NO_MACRO |
#ifndef NO_MACRO |
if (macrodef) { |
if (macrodef) { |
ewprintf("Can't isearch in macro"); |
ewprintf("Can't isearch in macro"); |
return FALSE; |
return (FALSE); |
} |
} |
#endif /* !NO_MACRO */ |
#endif /* !NO_MACRO */ |
for (cip = 0; cip < NSRCH; cip++) |
for (cip = 0; cip < NSRCH; cip++) |
cmds[cip].s_code = SRCH_NOPR; |
cmds[cip].s_code = SRCH_NOPR; |
|
|
(void)strlcpy(opat, pat, sizeof opat); |
(void)strlcpy(opat, pat, sizeof(opat)); |
cip = 0; |
cip = 0; |
pptr = -1; |
pptr = -1; |
clp = curwp->w_dotp; |
clp = curwp->w_dotp; |
|
|
curwp->w_flag |= WFMOVE; |
curwp->w_flag |= WFMOVE; |
srch_lastdir = dir; |
srch_lastdir = dir; |
(void)ctrlg(FFRAND, 0); |
(void)ctrlg(FFRAND, 0); |
(void)strlcpy(pat, opat, sizeof pat); |
(void)strlcpy(pat, opat, sizeof(pat)); |
return ABORT; |
return (ABORT); |
case CCHR(']'): |
case CCHR(']'): |
case CCHR('S'): |
case CCHR('S'): |
if (dir == SRCH_BACK) { |
if (dir == SRCH_BACK) { |
|
|
curwp->w_marko = cbo; |
curwp->w_marko = cbo; |
ewprintf("Mark set"); |
ewprintf("Mark set"); |
curwp->w_flag |= WFMOVE; |
curwp->w_flag |= WFMOVE; |
return TRUE; |
return (TRUE); |
} /* and continue */ |
} /* and continue */ |
case CCHR('I'): |
case CCHR('I'): |
case CCHR('J'): |
case CCHR('J'): |
|
|
pat[pptr++] = c; |
pat[pptr++] = c; |
if (pptr == NPAT) { |
if (pptr == NPAT) { |
ewprintf("Pattern too long"); |
ewprintf("Pattern too long"); |
return FALSE; |
return (FALSE); |
} |
} |
pat[pptr] = '\0'; |
pat[pptr] = '\0'; |
is_lpush(); |
is_lpush(); |
|
|
static int |
static int |
is_peek(void) |
is_peek(void) |
{ |
{ |
return cmds[cip].s_code; |
return (cmds[cip].s_code); |
} |
} |
|
|
/* this used to always return TRUE (the return value was checked) */ |
/* this used to always return TRUE (the return value was checked) */ |
|
|
if (forwsrch() == FALSE) { |
if (forwsrch() == FALSE) { |
curwp->w_doto = odoto; |
curwp->w_doto = odoto; |
curwp->w_dotp = odotp; |
curwp->w_dotp = odotp; |
return FALSE; |
return (FALSE); |
} |
} |
return TRUE; |
return (TRUE); |
} |
} |
if (dir == SRCH_BACK) { |
if (dir == SRCH_BACK) { |
(void)forwchar(FFARG | FFRAND, plen); |
(void)forwchar(FFARG | FFRAND, plen); |
if (backsrch() == FALSE) { |
if (backsrch() == FALSE) { |
curwp->w_doto = odoto; |
curwp->w_doto = odoto; |
curwp->w_dotp = odotp; |
curwp->w_dotp = odotp; |
return FALSE; |
return (FALSE); |
} |
} |
return TRUE; |
return (TRUE); |
} |
} |
ewprintf("bad call to is_find"); |
ewprintf("bad call to is_find"); |
return FALSE; |
return (FALSE); |
} |
} |
return FALSE; |
return (FALSE); |
} |
} |
|
|
/* |
/* |
|
|
#ifndef NO_MACRO |
#ifndef NO_MACRO |
if (macrodef) { |
if (macrodef) { |
ewprintf("Can't query replace in macro"); |
ewprintf("Can't query replace in macro"); |
return FALSE; |
return (FALSE); |
} |
} |
#endif /* !NO_MACRO */ |
#endif /* !NO_MACRO */ |
|
|
if ((s = readpattern("Query replace")) != TRUE) |
if ((s = readpattern("Query replace")) != TRUE) |
return (s); |
return (s); |
if ((rep = ereply("Query replace %s with: ", news, NPAT, pat)) == NULL) |
if ((rep = ereply("Query replace %s with: ", news, NPAT, pat)) == NULL) |
return ABORT; |
return (ABORT); |
else if (rep[0] == '\0') |
else if (rep[0] == '\0') |
news[0] = '\0'; |
news[0] = '\0'; |
ewprintf("Query replacing %s with %s:", pat, news); |
ewprintf("Query replacing %s with %s:", pat, news); |
|
|
ewprintf("(1 replacement done)"); |
ewprintf("(1 replacement done)"); |
else |
else |
ewprintf("(%d replacements done)", rcnt); |
ewprintf("(%d replacements done)", rcnt); |
return TRUE; |
return (TRUE); |
} |
} |
|
|
/* |
/* |
|
|
curwp->w_dotp = tlp; |
curwp->w_dotp = tlp; |
curwp->w_doto = tbo; |
curwp->w_doto = tbo; |
curwp->w_flag |= WFMOVE; |
curwp->w_flag |= WFMOVE; |
return TRUE; |
return (TRUE); |
} |
} |
fail: ; |
fail: ; |
} |
} |
return FALSE; |
return (FALSE); |
} |
} |
|
|
/* |
/* |
|
|
if (cbo == 0) { |
if (cbo == 0) { |
clp = lback(clp); |
clp = lback(clp); |
if (clp == curbp->b_linep) |
if (clp == curbp->b_linep) |
return FALSE; |
return (FALSE); |
cbo = llength(clp) + 1; |
cbo = llength(clp) + 1; |
} |
} |
if (--cbo == llength(clp)) |
if (--cbo == llength(clp)) |
|
|
curwp->w_dotp = tlp; |
curwp->w_dotp = tlp; |
curwp->w_doto = tbo; |
curwp->w_doto = tbo; |
curwp->w_flag |= WFMOVE; |
curwp->w_flag |= WFMOVE; |
return TRUE; |
return (TRUE); |
} |
} |
fail: ; |
fail: ; |
} |
} |
|
|
bc = CHARMASK(bc); |
bc = CHARMASK(bc); |
pc = CHARMASK(pc); |
pc = CHARMASK(pc); |
if (bc == pc) |
if (bc == pc) |
return TRUE; |
return (TRUE); |
if (ISUPPER(bc)) |
if (ISUPPER(bc)) |
return TOLOWER(bc) == pc; |
return (TOLOWER(bc) == pc); |
if (ISUPPER(pc)) |
if (ISUPPER(pc)) |
return bc == TOLOWER(pc); |
return (bc == TOLOWER(pc)); |
return FALSE; |
return (FALSE); |
} |
} |
|
|
/* |
/* |
|
|
readpattern(char *prompt) |
readpattern(char *prompt) |
{ |
{ |
char tpat[NPAT], *rep; |
char tpat[NPAT], *rep; |
int retval; |
int retval; |
|
|
if (tpat[0] == '\0') |
if (tpat[0] == '\0') |
rep = ereply("%s: ", tpat, NPAT, prompt); |
rep = ereply("%s: ", tpat, NPAT, prompt); |
|
|
|
|
/* specified */ |
/* specified */ |
if (rep != NULL && *rep != '\0') { |
if (rep != NULL && *rep != '\0') { |
(void) strlcpy(pat, tpat, sizeof pat); |
(void) strlcpy(pat, tpat, sizeof(pat)); |
retval = TRUE; |
retval = TRUE; |
} else if (*rep == '\0' && pat[0] != '\0') { |
} else if (*rep == '\0' && pat[0] != '\0') { |
retval = TRUE; |
retval = TRUE; |
} else |
} else |
retval = FALSE; |
retval = FALSE; |
return retval; |
return (retval); |
} |
} |
|
|