zsh-workers
 help / color / mirror / code / Atom feed
* 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).