lexical #2/6, linewrap
This commit is contained in:
parent
5d245c9dab
commit
5656203a6c
|
|
@ -204,8 +204,7 @@ gotchar:
|
|||
goto done;
|
||||
|
||||
case '\'':
|
||||
while (((c = (string ? *string++ :
|
||||
input(cp_inp_cur))) != '\'')
|
||||
while (((c = (string ? *string++ : input(cp_inp_cur))) != '\'')
|
||||
&& (i < NEW_BSIZE_SP - 1)) {
|
||||
if ((c == '\n') || (c == EOF) || (c == ESCAPE))
|
||||
goto gotchar;
|
||||
|
|
@ -221,14 +220,13 @@ gotchar:
|
|||
case '`':
|
||||
d = c;
|
||||
buf[i++] = (char) d;
|
||||
while (((c = (string ? *string++ : input(cp_inp_cur)))
|
||||
!= d) && (i < NEW_BSIZE_SP - 2)) {
|
||||
while (((c = (string ? *string++ : input(cp_inp_cur))) != d)
|
||||
&& (i < NEW_BSIZE_SP - 2)) {
|
||||
if ((c == '\n') || (c == EOF) || (c == ESCAPE))
|
||||
goto gotchar;
|
||||
else if (c == '\\') {
|
||||
linebuf[j++] = (char) c;
|
||||
c = (string ? *string++ :
|
||||
input(cp_inp_cur));
|
||||
c = (string ? *string++ : input(cp_inp_cur));
|
||||
buf[i++] = (char) quote(c);
|
||||
linebuf[j++] = (char) c;
|
||||
} else {
|
||||
|
|
@ -242,14 +240,10 @@ gotchar:
|
|||
|
||||
case '\004':
|
||||
case EOF:
|
||||
if (cp_interactive && !cp_nocc &&
|
||||
(string == NULL)) {
|
||||
if (cp_interactive && !cp_nocc && (string == NULL)) {
|
||||
if (j == 0) {
|
||||
if (cp_ignoreeof && (numeofs++
|
||||
< 23)) {
|
||||
fputs(
|
||||
"Use \"quit\" to quit.\n",
|
||||
stdout);
|
||||
if (cp_ignoreeof && (numeofs++ < 23)) {
|
||||
fputs("Use \"quit\" to quit.\n", stdout);
|
||||
} else {
|
||||
fputs("quit\n", stdout);
|
||||
cp_doquit();
|
||||
|
|
@ -297,42 +291,47 @@ gotchar:
|
|||
wl_free(wlist);
|
||||
wlist = cw = NULL;
|
||||
goto nloop;
|
||||
} goto ldefault; /* else continue with default ... */
|
||||
}
|
||||
goto ldefault;
|
||||
case ',':
|
||||
if (paren < 1 && i > 0) {
|
||||
newword;
|
||||
break;
|
||||
} goto ldefault;
|
||||
}
|
||||
goto ldefault;
|
||||
case ';': /*CDHW semicolon inside parentheses is part of expression CDHW*/
|
||||
if (paren > 0) {
|
||||
buf[i++] = (char) c;
|
||||
break;
|
||||
} goto ldefault;
|
||||
}
|
||||
goto ldefault;
|
||||
case '&': /* va: $&name is one word */
|
||||
if (i==1 && buf[i-1]=='$' && c=='&') {
|
||||
buf[i++] = (char) c;
|
||||
break;
|
||||
} goto ldefault; /* else continue with default ... */
|
||||
}
|
||||
goto ldefault;
|
||||
case '<':
|
||||
case '>': /* va: <=, >= are unbreakable words */
|
||||
if(string)
|
||||
if (i==0 && (*string=='=')) {
|
||||
buf[i++] = (char) c;
|
||||
break;
|
||||
} goto ldefault; /* else continue with default ... */
|
||||
}
|
||||
goto ldefault;
|
||||
default:
|
||||
/* We have to remember the special case $<
|
||||
* here
|
||||
*/
|
||||
ldefault: if ((cp_chars[c] & CPC_BRL) && (i > 0)) {
|
||||
ldefault:
|
||||
if ((cp_chars[c] & CPC_BRL) && (i > 0)) {
|
||||
if ((c != '<') || (buf[i - 1] != '$')) {
|
||||
newword;
|
||||
}
|
||||
}
|
||||
buf[i++] = (char) c;
|
||||
if (cp_chars[c] & CPC_BRR) {
|
||||
if ((c != '<') || (i < 2) ||
|
||||
(buf[i - 2] != '$')) {
|
||||
if ((c != '<') || (i < 2) || (buf[i - 2] != '$')) {
|
||||
newword;
|
||||
}
|
||||
}
|
||||
|
|
@ -340,7 +339,8 @@ ldefault: if ((cp_chars[c] & CPC_BRL) && (i > 0)) {
|
|||
}
|
||||
done:
|
||||
|
||||
if (wlist->wl_word) pwlist_echo(wlist,"Command>");
|
||||
if (wlist->wl_word)
|
||||
pwlist_echo(wlist,"Command>");
|
||||
return wlist;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue