# HG changeset patch # User Kim F. Storm # Date 1097661036 0 # Node ID fb60234070b034aeff33fe00432f2c3d8b5bd9a3 # Parent 5b9aedebc39619821959b231ae9df359cb35a6c0 (Fcall_process): Simplify handling of display arg. Resume `display_on_the_fly' once a coding system is determined. diff -r 5b9aedebc396 -r fb60234070b0 src/callproc.c --- a/src/callproc.c Wed Oct 13 09:50:15 2004 +0000 +++ b/src/callproc.c Wed Oct 13 09:50:36 2004 +0000 @@ -216,7 +216,8 @@ int nargs; register Lisp_Object *args; { - Lisp_Object infile, buffer, current_dir, display, path; + Lisp_Object infile, buffer, current_dir, path; + int display_p; int fd[2]; int filefd; register int pid; @@ -372,7 +373,7 @@ UNGCPRO; } - display = nargs >= 4 ? args[3] : Qnil; + display_p = INTERACTIVE && nargs >= 4 && !NILP (args[3]); filefd = emacs_open (SDATA (infile), O_RDONLY, 0); if (filefd < 0) @@ -747,7 +748,7 @@ int first = 1; int total_read = 0; int carryover = 0; - int display_on_the_fly = !NILP (display) && INTERACTIVE; + int display_on_the_fly = display_p; struct coding_system saved_coding; int pt_orig = PT, pt_byte_orig = PT_BYTE; int inserted; @@ -823,12 +824,15 @@ { /* We have detected some coding system. But, there's a possibility that the detection was - done by insufficient data. So, we give up - displaying on the fly. */ + done by insufficient data. So, we try the code + detection again with more data. */ xfree (decoding_buf); display_on_the_fly = 0; process_coding = saved_coding; carryover = nread; + /* This is to make the above condition always + fails in the future. */ + saved_coding.type = coding_type_no_conversion; continue; } @@ -929,12 +933,16 @@ bufptr = tempptr; } - if (!NILP (display) && INTERACTIVE) + if (display_p) { if (first) prepare_menu_bars (); first = 0; redisplay_preserve_echo_area (1); + /* This variable might have been set to 0 for code + detection. In that case, we set it back to 1 because + we should have already detected a coding system. */ + display_on_the_fly = 1; } immediate_quit = 1; QUIT;