summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Src/hist.c15
-rw-r--r--Src/lex.c9
3 files changed, 22 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 888c64577..6b7efffe7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2000-07-13 Sven Wischnowsky <wischnow@zsh.org>
+
+ * 12237: Src/hist.c, Src/lex.c: slightly improved (z) flag for
+ parsing conditions; recognising glob flags in conditions still
+ doesn't work
+
2000-07-12 Peter Stephenson <pws@cambridgesiliconradio.com>
* 12231: Completion/Core/compinstall: fix setting of list-prompt.
diff --git a/Src/hist.c b/Src/hist.c
index 35ab2b1fd..4a7a0fa58 100644
--- a/Src/hist.c
+++ b/Src/hist.c
@@ -2057,16 +2057,16 @@ unlockhistfile(char *fn)
mod_export LinkList
bufferwords(LinkList list, char *buf, int *index)
{
- int num = 0, cur = -1, got = 0, ne = noerrs, ocs = cs;
- int owb = wb, owe = we, oadx = addedx, ozp = zleparse, oexp = expanding;
+ int num = 0, cur = -1, got = 0, ne = noerrs, ocs = cs, oll = ll;
+ int owb = wb, owe = we, oadx = addedx, ozp = zleparse, onc = nocomments;
char *p;
if (!list)
list = newlinklist();
- zleparse = 3;
+ zleparse = 1;
addedx = 0;
- noerrs = expanding = 1;
+ noerrs = 1;
lexsave();
if (buf) {
int l = strlen(buf);
@@ -2076,7 +2076,8 @@ bufferwords(LinkList list, char *buf, int *index)
p[l] = ' ';
p[l + 1] = '\0';
inpush(p, 0, NULL);
- cs = 0;
+ cs = strlen(p) + 1;
+ nocomments = 1;
} else if (!isfirstln && chline) {
p = (char *) zhalloc(hptr - chline + ll + 2);
memcpy(p, chline, hptr - chline);
@@ -2092,6 +2093,7 @@ bufferwords(LinkList list, char *buf, int *index)
p[ll + 1] = '\0';
inpush(p, 0, NULL);
}
+ ll = strlen(p);
if (cs)
cs--;
strinbeg(0);
@@ -2133,10 +2135,11 @@ bufferwords(LinkList list, char *buf, int *index)
inpop();
errflag = 0;
zleparse = ozp;
- expanding = oexp;
+ nocomments = onc;
noerrs = ne;
lexrestore();
cs = ocs;
+ ll = oll;
wb = owb;
we = owe;
addedx = oadx;
diff --git a/Src/lex.c b/Src/lex.c
index 5aa63ece5..db2c2c8bd 100644
--- a/Src/lex.c
+++ b/Src/lex.c
@@ -116,7 +116,12 @@ mod_export int parbegin;
/**/
mod_export int parend;
+
+/* don't recognize comments */
+/**/
+mod_export int nocomments;
+
/* text of puctuation tokens */
/**/
@@ -672,8 +677,8 @@ gettok(void)
/* chars in initial position in word */
- if (c == hashchar &&
- ((zleparse != 3 && isset(INTERACTIVECOMMENTS)) ||
+ if (c == hashchar && !nocomments &&
+ (isset(INTERACTIVECOMMENTS) ||
(!zleparse && !expanding &&
(!interact || unset(SHINSTDIN) || strin)))) {
/* History is handled here to prevent extra *