* PATCH: pws-25: another line number problem
@ 1999-07-07 8:56 Peter Stephenson
1999-07-07 9:44 ` Peter Stephenson
0 siblings, 1 reply; 2+ messages in thread
From: Peter Stephenson @ 1999-07-07 8:56 UTC (permalink / raw)
To: Zsh hackers list
Consider:
% fpath=(.)
% cat alf
[[ foo bar ]] && print That did\'t work
#
print foo
% autoload alf
% alf
alf: parse error: condition expected: foo [5]
The line number reported is the last line of the file. The answer,
thankfully, is simple: don't flush the input queue until the error message
has been printed. In fact, we ought to be able to tell that the input
queue is a string and will be flushed automatically when it's popped off
the input stack. Maybe I'll put this on my to-do list. Maybe.
--- Src/parse.c.uln Thu Jun 17 15:28:47 1999
+++ Src/parse.c Wed Jul 7 10:49:02 1999
@@ -72,7 +72,7 @@
#define YYERROR { tok = LEXERR; return NULL; }
#define YYERRORV { tok = LEXERR; return; }
-#define COND_ERROR(X,Y) do{herrflush();zerr(X,Y,0);YYERROR}while(0)
+#define COND_ERROR(X,Y) do{zerr(X,Y,0);herrflush();YYERROR}while(0)
#define make_list() allocnode(N_LIST)
#define make_sublist() allocnode(N_SUBLIST)
@@ -143,8 +143,8 @@
yyerror();
return NULL;
}
- herrflush();
yyerror();
+ herrflush();
return NULL;
} else {
l->right = par_event();
--
Peter Stephenson <pws@ibmth.df.unipi.it> Tel: +39 050 844536
WWW: http://www.ifh.de/~pws/
Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: PATCH: pws-25: another line number problem
1999-07-07 8:56 PATCH: pws-25: another line number problem Peter Stephenson
@ 1999-07-07 9:44 ` Peter Stephenson
0 siblings, 0 replies; 2+ messages in thread
From: Peter Stephenson @ 1999-07-07 9:44 UTC (permalink / raw)
To: Zsh hackers list
Peter Stephenson wrote:
> Consider:
>
> % fpath=(.)
> % cat alf
> [[ foo bar ]] && print That did\'t work
>
> #
> print foo
> % autoload alf
> % alf
> alf: parse error: condition expected: foo [5]
>
> The line number reported is the last line of the file. The answer,
> thankfully, is simple: don't flush the input queue until the error message
> has been printed.
Gag. Now I've found out why the error had to come second: if errflag is
set, history flushing won't work, so if the parse error occurred
interactively, you don't get the rest of the line in the history. Let's
just try something like my other proposal: don't do a full history flush
if reading from a string. This *replaces* the previous patch.
--- Src/hist.c.uln2 Thu Jun 17 14:22:18 1999
+++ Src/hist.c Wed Jul 7 11:39:09 1999
@@ -291,7 +291,7 @@
void
herrflush(void)
{
- while (!lexstop && inbufct)
+ while (!lexstop && inbufct && !strin)
hwaddc(ingetc());
}
--
Peter Stephenson <pws@ibmth.df.unipi.it> Tel: +39 050 844536
WWW: http://www.ifh.de/~pws/
Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~1999-07-07 10:13 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-07-07 8:56 PATCH: pws-25: another line number problem Peter Stephenson
1999-07-07 9:44 ` Peter Stephenson
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).