unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* multi-tty breakage on MS-Windows
@ 2007-09-08  9:56 Eli Zaretskii
  2007-09-08 15:32 ` Dan Nicolaescu
  0 siblings, 1 reply; 23+ messages in thread
From: Eli Zaretskii @ 2007-09-08  9:56 UTC (permalink / raw)
  To: emacs-devel

I've just built the current CVS HEAD on MS-Windows, and immediately
saw two problems:

  . emacsclient is incompatible with Emacs 22.1's server: it causes
    Emacs 22.1 to spew all kinds of weirdo error messages; here are a
    few examples:

     File no longer exists: -env, write buffer to file? (y or n) 
     File no longer exists: -file, write buffer to file? (y or n) 
     File no longer exists: -dir, write buffer to file? (y or n) 
     Use M-x make-directory RET RET to create the directory and its parents [3 times]
     error in process filter: basic-save-buffer-2: d:/gnu/emacs/windir=C:/USERPROFILE=C:/Documents and Settings/TMPDIR=D:/usr/TMP=C:/DOCUME~1/Zaretzky/LOCALS~1/TEMP=C:/DOCUME~1/Zaretzky/LOCALS~1/SystemRoot=C:/: no such directory

    Is this incompatibility an absolute must?

  . "emacs -nw" crashes on startup; backtrace attached below.

 emacs.exe caused an Access Violation at location 01095c7c in module emacs.exe Reading from location 00000148.

 Registers:
 eax=00000000 ebx=00000003 ecx=01717a00 edx=00000001 esi=00000052 edi=00000000
 eip=01095c7c esp=0082e6d0 ebp=0082e798 iopl=0         nv up ei pl nz na pe nc
 cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202

 Call stack:
 01095C7C  emacs.exe:01095C7C  update_frame_line  dispnew.c:5781
	 ...

	   tem = (nlen - nsp) - (olen - osp);
 >	  if (endmatch && tem
	       && (!FRAME_CHAR_INS_DEL_OK (f)
		   || endmatch <= char_ins_del_cost (f)[tem]))
	 ...

 010969DF  emacs.exe:010969DF  update_frame  dispnew.c:5286
	 ...
	   /* Update the individual lines as needed.  Do bottom line first.  */
	   if (MATRIX_ROW_ENABLED_P (desired_matrix, desired_matrix->nrows - 1))
 >	    update_frame_line (f, desired_matrix->nrows - 1);

	   /* Now update the rest of the lines.  */
	 ...

 0102F2BE  emacs.exe:0102F2BE  echo_area_display  xdisp.c:8770
	 ...
	     }
	   else
 >	    update_frame (f, 1, 1);

	   /* If cursor is in the echo area, make sure that the next
	 ...

 0102FAF1  emacs.exe:0102FAF1  message2_nolog  xdisp.c:7517
	 ...
	       do_pending_window_change (0);
	       echo_area_display (1);
 >	      do_pending_window_change (0);
	       if (FRAME_TERMINAL (f)->frame_up_to_date_hook != 0 && ! gc_in_progress)
	 (*FRAME_TERMINAL (f)->frame_up_to_date_hook) (f);
	 ...

 0102FBE0  emacs.exe:0102FBE0  message1_nolog  xdisp.c:7650
	 ...
	      char *m;
	 {
 >	  message2_nolog (m, (m ? strlen (m) : 0), 0);
	 }

	 ...

 01066102  emacs.exe:01066102  Fgarbage_collect  alloc.c:5156
	 ...

	   if (garbage_collection_messages)
 >	    message1_nolog ("Garbage collecting...");

	   BLOCK_INPUT;
	 ...

 0100B496  emacs.exe:0100B496  Feval  eval.c:2259
	 ...
	     {
	       GCPRO1 (form);
 >	      Fgarbage_collect ();
	       UNGCPRO;
	     }
	 ...

 010763C3  emacs.exe:010763C3  readevalloop  lread.c:1562
	 ...

	       /* Now eval what we just read.  */
 >	      val = (*evalfun) (val);

	       if (printflag)
	 ...

 01077090  emacs.exe:01077090  Fload  lread.c:1031
	 ...
	   readevalloop (Qget_file_char, stream, hist_file_name,
	 Feval, 0, Qnil, Qnil, Qnil, Qnil);
 >	  unbind_to (count, Qnil);

	   /* Run any eval-after-load forms for this file */
	 ...

 0100CC22  emacs.exe:0100CC22  do_autoload  eval.c:2208
	 ...

	   /* Save the old autoloads, in case we ever do an unload.  */
 >	  queue = Vautoload_queue;
	   while (CONSP (queue))
	     {
	 ...

 0100B3D7  emacs.exe:0100B3D7  Feval  eval.c:2290
	 ...

	   /* Optimize for no indirection.  */
 >	  fun = original_fun;
	   if (SYMBOLP (fun) && !EQ (fun, Qunbound)
	       && (fun = XSYMBOL (fun)->function, SYMBOLP (fun)))
	 ...

 010763C3  emacs.exe:010763C3  readevalloop  lread.c:1562
	 ...

	       /* Now eval what we just read.  */
 >	      val = (*evalfun) (val);

	       if (printflag)
	 ...

 01076A75  emacs.exe:01076A75  Feval_buffer  lread.c:1627
	 ...
	   readevalloop (buf, 0, filename, Feval,
	 !NILP (printflag), unibyte, Qnil, Qnil, Qnil);
 >	  unbind_to (count, Qnil);

	   return Qnil;
	 ...

 0100C233  emacs.exe:0100C233  Ffuncall  eval.c:3050
	 ...
	   goto done;
	 case 5:
 >	  val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1],
	   internal_args[2], internal_args[3],
	   internal_args[4]);
	 ...

 01110643  emacs.exe:01110643  Fbyte_code  bytecode.c:679
	 ...
	       }
	 #endif
 >	    TOP = Ffuncall (op + 1, &TOP);
	     AFTER_POTENTIAL_GC ();
	     break;
	 ...

 0100BB87  emacs.exe:0100BB87  funcall_lambda  eval.c:3228
	 ...
	     }

 >	  return unbind_to (count, val);
	 }

	 ...

 0100C07C  emacs.exe:0100C07C  Ffuncall  eval.c:3105
	 ...
	  done:
	   CHECK_CONS_LIST ();
 >	  lisp_eval_depth--;
	   if (backtrace.debug_on_exit)
	     val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
	 ...

 0100C414  emacs.exe:0100C414  call4  eval.c:2892
	 ...
	   RETURN_UNGCPRO (Ffuncall (5, &fn));
	 #endif /* not NO_ARG_ARRAY */
 >	}

	 /* Call function fn with 5 arguments arg1, arg2, arg3, arg4, arg5 */
	 ...

 01077358  emacs.exe:01077358  Fload  lread.c:986
	 ...
		NILP (noerror) ? Qnil : Qt,
		NILP (nomessage) ? Qnil : Qt);
 >	  return unbind_to (count, val);
	 }
	     }
	 ...

 0100C233  emacs.exe:0100C233  Ffuncall  eval.c:3050
	 ...
	   goto done;
	 case 5:
 >	  val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1],
	   internal_args[2], internal_args[3],
	   internal_args[4]);
	 ...

 01110643  emacs.exe:01110643  Fbyte_code  bytecode.c:679
	 ...
	       }
	 #endif
 >	    TOP = Ffuncall (op + 1, &TOP);
	     AFTER_POTENTIAL_GC ();
	     break;
	 ...

 0100BB87  emacs.exe:0100BB87  funcall_lambda  eval.c:3228
	 ...
	     }

 >	  return unbind_to (count, val);
	 }

	 ...

 0100C07C  emacs.exe:0100C07C  Ffuncall  eval.c:3105
	 ...
	  done:
	   CHECK_CONS_LIST ();
 >	  lisp_eval_depth--;
	   if (backtrace.debug_on_exit)
	     val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
	 ...

 01110643  emacs.exe:01110643  Fbyte_code  bytecode.c:679
	 ...
	       }
	 #endif
 >	    TOP = Ffuncall (op + 1, &TOP);
	     AFTER_POTENTIAL_GC ();
	     break;
	 ...

 0100B7AB  emacs.exe:0100B7AB  Feval  eval.c:2373
	 ...
	   goto done;
	 case 3:
 >	  val = (*XSUBR (fun)->function) (argvals[0], argvals[1],
	   argvals[2]);
	   goto done;
	 ...

 0100DAF4  emacs.exe:0100DAF4  internal_lisp_condition_case  eval.c:1437
	 ...
	   handlerlist = &h;

 >	  val = Feval (bodyform);
	   catchlist = c.next;
	   handlerlist = h.next;
	 ...

 01110C23  emacs.exe:01110C23  Fbyte_code  bytecode.c:869
	 ...
	     body = POP;
	     BEFORE_POTENTIAL_GC ();
 >	    TOP = internal_lisp_condition_case (TOP, body, handlers);
	     AFTER_POTENTIAL_GC ();
	     break;
	 ...

 0100BB87  emacs.exe:0100BB87  funcall_lambda  eval.c:3228
	 ...
	     }

 >	  return unbind_to (count, val);
	 }

	 ...

 0100C07C  emacs.exe:0100C07C  Ffuncall  eval.c:3105
	 ...
	  done:
	   CHECK_CONS_LIST ();
 >	  lisp_eval_depth--;
	   if (backtrace.debug_on_exit)
	     val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
	 ...

 01110643  emacs.exe:01110643  Fbyte_code  bytecode.c:679
	 ...
	       }
	 #endif
 >	    TOP = Ffuncall (op + 1, &TOP);
	     AFTER_POTENTIAL_GC ();
	     break;
	 ...

 0100BB87  emacs.exe:0100BB87  funcall_lambda  eval.c:3228
	 ...
	     }

 >	  return unbind_to (count, val);
	 }

	 ...

 0100BE04  emacs.exe:0100BE04  apply_lambda  eval.c:3147
	 ...
	     }
	   backtrace_list->evalargs = 0;
 >	  tem = funcall_lambda (fun, XINT (numargs), arg_vector);

	   /* Do the debug-on-exit now, while arg_vector still exists.  */
	 ...

 0100B4CC  emacs.exe:0100B4CC  Feval  eval.c:2434
	 ...
	   CHECK_CONS_LIST ();

 >	  lisp_eval_depth--;
	   if (backtrace.debug_on_exit)
	     val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
	 ...

 010512C1  emacs.exe:010512C1  top_level_2  keyboard.c:1415
	 ...
	 {
	   return Feval (Vtop_level);
 >	}

	 Lisp_Object
	 ...

 0100A3E5  emacs.exe:0100A3E5  internal_condition_case  eval.c:1495
	 ...

	   val = (*bfun) ();
 >	  catchlist = c.next;
	   handlerlist = h.next;
	   return val;
	 ...

 010512F3  emacs.exe:010512F3  top_level_1  keyboard.c:1427
	 ...
	   else
	     message ("Bare Emacs (standard Lisp code not loaded)");
 >	  return Qnil;
	 }

	 ...

 0100A31A  emacs.exe:0100A31A  internal_catch  eval.c:1229
	 ...
	   /* Call FUNC.  */
	   if (! _setjmp (c.jmp))
 >	    c.val = (*func) (arg);

	   /* Throw works by a longjmp that comes right here.  */
	 ...

 01051098  emacs.exe:01051098  command_loop  keyboard.c:1384
	 ...
		 any_kboard_state ();
	 #endif
 >	internal_catch (Qtop_level, command_loop_2, Qnil);
	 executing_kbd_macro = Qnil;

	 ...

 0105114A  emacs.exe:0105114A  recursive_edit_1  keyboard.c:994
	 ...

	   val = command_loop ();
 >	  if (EQ (val, Qt))
	     Fsignal (Qquit, Qnil);
	   /* Handle throw from read_minibuf when using minibuffer
	 ...

 0105126B  emacs.exe:0105126B  Frecursive_edit  keyboard.c:1056
	 ...

	   recursive_edit_1 ();
 >	  return unbind_to (count, Qnil);
	 }

	 ...

 010029C6  emacs.exe:010029C6  main  emacs.c:1781
	 ...
	   /* NOTREACHED */
	   return 0;
 >	}

	 /* Sort the args so we can find the most important ones
	 ...

 010011E7  emacs.exe:010011E7
 01001238  emacs.exe:01001238
 7C816D4F  kernel32.dll:7C816D4F  RegisterWaitForInputIdle

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-08  9:56 multi-tty breakage on MS-Windows Eli Zaretskii
@ 2007-09-08 15:32 ` Dan Nicolaescu
  2007-09-08 16:29   ` Eli Zaretskii
  2007-09-09 19:51   ` Stefan Monnier
  0 siblings, 2 replies; 23+ messages in thread
From: Dan Nicolaescu @ 2007-09-08 15:32 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

  > I've just built the current CVS HEAD on MS-Windows, and immediately
  > saw two problems:
  > 
  >   . emacsclient is incompatible with Emacs 22.1's server: it causes
  >     Emacs 22.1 to spew all kinds of weirdo error messages; here are a
  >     few examples:
  > 
  >      File no longer exists: -env, write buffer to file? (y or n) 
  >      File no longer exists: -file, write buffer to file? (y or n) 
  >      File no longer exists: -dir, write buffer to file? (y or n) 
  >      Use M-x make-directory RET RET to create the directory and its parents [3 times]
  >      error in process filter: basic-save-buffer-2: d:/gnu/emacs/windir=C:/USERPROFILE=C:/Documents and Settings/TMPDIR=D:/usr/TMP=C:/DOCUME~1/Zaretzky/LOCALS~1/TEMP=C:/DOCUME~1/Zaretzky/LOCALS~1/SystemRoot=C:/: no such directory
  > 
  >     Is this incompatibility an absolute must?

I think so, the communication between the emacsclient and emacs is
more complex now, more stuff is sent over the wire.

  >   . "emacs -nw" crashes on startup; backtrace attached below.

This is a known problem, Jason Rumney stated that this does not work
in his message announcing that multi-tty was ported to Windows. 
Can you please help fixing it? 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-08 15:32 ` Dan Nicolaescu
@ 2007-09-08 16:29   ` Eli Zaretskii
  2007-09-08 17:24     ` Dan Nicolaescu
                       ` (2 more replies)
  2007-09-09 19:51   ` Stefan Monnier
  1 sibling, 3 replies; 23+ messages in thread
From: Eli Zaretskii @ 2007-09-08 16:29 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: emacs-devel

> Cc: emacs-devel@gnu.org
> From: Dan Nicolaescu <dann@ics.uci.edu>
> Date: Sat, 08 Sep 2007 08:32:38 -0700
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
>   >     Is this incompatibility an absolute must?
> 
> I think so, the communication between the emacsclient and emacs is
> more complex now, more stuff is sent over the wire.

Too bad.  This will make life harder for those who, like me, routinely
run several different versions of Emacs (to test each one of them at
least to some extent).

>   >   . "emacs -nw" crashes on startup; backtrace attached below.
> 
> This is a known problem, Jason Rumney stated that this does not work
> in his message announcing that multi-tty was ported to Windows. 
> Can you please help fixing it? 

I will, if I find enough time.  This is made harder by almost complete
lack of documentation of how multi-tty works.  Can someone please make
an effort of explaining it in plain English?  The changes installed as
result of the merge are extensive and very invasive, and it's hard to
figure them out without some guidance.  Judging by the amount of
problems we had lately on any platform but GNU/Linux, I think we will
need much more working knowledge of this feature before we can go on
with merging unicode-2 etc.

Also, how come Karoly is suddenly silent or unavailable for help when
his work is being installed and used on platforms he obviously didn't
try?  It's annoying, to say the least: such a significant change
becomes almost completely unsupported the moment it's merged into the
trunk.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-08 16:29   ` Eli Zaretskii
@ 2007-09-08 17:24     ` Dan Nicolaescu
  2007-09-08 17:48       ` martin rudalics
       [not found]       ` <E1IUCJC-0000YJ-0c@fencepost.gnu.org>
  2007-09-08 19:48     ` Stephen J. Turnbull
  2007-09-22 13:00     ` Eli Zaretskii
  2 siblings, 2 replies; 23+ messages in thread
From: Dan Nicolaescu @ 2007-09-08 17:24 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

  > > Cc: emacs-devel@gnu.org
  > > From: Dan Nicolaescu <dann@ics.uci.edu>
  > > Date: Sat, 08 Sep 2007 08:32:38 -0700
  > > 
  > > Eli Zaretskii <eliz@gnu.org> writes:
  > > 
  > >   >   . "emacs -nw" crashes on startup; backtrace attached below.
  > > 
  > > This is a known problem, Jason Rumney stated that this does not work
  > > in his message announcing that multi-tty was ported to Windows. 
  > > Can you please help fixing it? 
  > 
  > I will, if I find enough time.  This is made harder by almost complete
  > lack of documentation of how multi-tty works.  Can someone please make
  > an effort of explaining it in plain English?  

IHMO there's nobody beside the multi-tty author that understands the
design well enough to be able to write correct documentation... 

  > The changes installed as result of the merge are extensive and
  > very invasive, and it's hard to figure them out without some
  > guidance.  Judging by the amount of problems we had lately on any
  > platform but GNU/Linux, 

I have a different impression, things have not been bad at all. It
might be misleading that the same problems were reported over and over
followed by very long discussions.

Here's a summary of what I can remember right now:
Cygwin: 
 - 1 problem that was solved with a 2 line patch by people that (from
 the sound of it) didn't have much experience hacking  either emacs or
 cygwin. Pretty good in my book.

Mac:
  - 2 problems: 
    - bootstrap problem because of requiring 'url from
      term/mac-win.el. The fix is simple, but nobody has done it.
    - input is very slow
    Unfortunately nobody is willing to do any work on this platform,
    the plan seems to be to abandon this port and switch to a
    different toolkit (or whatever is called on a mac).
    Nobody has done any testing on this platform since multi-tty has
    been in CVS and until after the merge. 
    I am inclined to say that we should disable/or print a big warning
    when configuring this platform.

Windows: 
  - 2 problems:
    - -nw not working
    - Some issue with setting the invisible property in default-frame-alist
  Those were both known at the time the Windows port first worked on
  the multi-tty branch.

  > Also, how come Karoly is suddenly silent or unavailable for help when
  > his work is being installed 

Don't know, last I heard from him was about 2 months ago...

  > and used on platforms he obviously didn't try?

To his defense, this was documented as such.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-08 17:24     ` Dan Nicolaescu
@ 2007-09-08 17:48       ` martin rudalics
       [not found]       ` <E1IUCJC-0000YJ-0c@fencepost.gnu.org>
  1 sibling, 0 replies; 23+ messages in thread
From: martin rudalics @ 2007-09-08 17:48 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: Eli Zaretskii, emacs-devel

 > I have a different impression, things have not been bad at all. It
 > might be misleading that the same problems were reported over and over
 > followed by very long discussions.

I think time has come to praise Dan for devoting so much of his time to
fix these problems.  This was and is a non-trivial endeavour.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
@ 2007-09-08 18:18 Angelo Graziosi
  0 siblings, 0 replies; 23+ messages in thread
From: Angelo Graziosi @ 2007-09-08 18:18 UTC (permalink / raw)
  To: emacs-devel; +Cc: Eli Zaretskii, Dan Nicolaescu


A stange coincidence.

I flag this for the sake of completeness.


Eli Zaretskii wrote:

> "emacs -nw" crashes on startup;

After these changes:

---------------------------------------------------------------------
2007-09-08  Fredrik Axelsson  <f.axelsson@gmail.com>

	* window.c (prefer_window_split_horizontally): New variable.
	(display_buffer): Consider splitting window horizontally depending
	on prefer_window_split_horizontally.

2007-09-08  Eli Zaretskii  <eliz@gnu.org>

	* sysdep.c [WINDOWSNT]: Don't include sysselect.h
--------------------------------------------------------------

this happens also on Cygwin BUT ONLY IF "emacs -nw" is started from the
DOS-like shell (cygwin.bat).

If it is started from an X shell it works fine ("emacs &" and "emacs
-nw").

The build I did after these changes (CVS cheched out less than 24 hours
ago):
------------------------------------------
2007-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>

	* s/cygwin.h (GC_MARK_STACK): Enable conservative stack marking.

	* frame.c (x_set_frame_parameters): Check number is positive
before
	using XFASTINT.

	* window.c (freeze_window_start): Don't presume selected_window
holds
	a window object.
	(Fdisplay_buffer): Remove `register' since `buffer' needs to be
gcpro'd.
------------------------------------------

works fine from all shells (X, Dos-like).


Cheers,

   Angelo.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-08 16:29   ` Eli Zaretskii
  2007-09-08 17:24     ` Dan Nicolaescu
@ 2007-09-08 19:48     ` Stephen J. Turnbull
  2007-09-09 20:05       ` Richard Stallman
  2007-09-22 13:00     ` Eli Zaretskii
  2 siblings, 1 reply; 23+ messages in thread
From: Stephen J. Turnbull @ 2007-09-08 19:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Dan Nicolaescu, emacs-devel

Eli Zaretskii writes:

 > Also, how come Karoly is suddenly silent or unavailable for help when
 > his work is being installed and used on platforms he obviously didn't
 > try?

He did say he had a window when he would be available.  IIRC, it was
about 4-6 weeks long.  It appears the merge occurred after his window
ended, and obviously he is no longer readily available.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-08 15:32 ` Dan Nicolaescu
  2007-09-08 16:29   ` Eli Zaretskii
@ 2007-09-09 19:51   ` Stefan Monnier
  2007-09-09 20:03     ` David Kastrup
  1 sibling, 1 reply; 23+ messages in thread
From: Stefan Monnier @ 2007-09-09 19:51 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: Eli Zaretskii, emacs-devel

> I think so, the communication between the emacsclient and emacs is
> more complex now, more stuff is sent over the wire.

AFAICT we could very well make it backward compatible.
The first thing to do for that is to change the "-c" argument of emacsclient
so that by default it "behaves as before".  Then we can make sure that when
it "behaves as before" it sends the same data to the server.


        Stefan

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-09 19:51   ` Stefan Monnier
@ 2007-09-09 20:03     ` David Kastrup
  2007-09-10  3:21       ` Eli Zaretskii
  0 siblings, 1 reply; 23+ messages in thread
From: David Kastrup @ 2007-09-09 20:03 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, Dan Nicolaescu, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> I think so, the communication between the emacsclient and emacs is
>> more complex now, more stuff is sent over the wire.
>
> AFAICT we could very well make it backward compatible.
> The first thing to do for that is to change the "-c" argument of emacsclient
> so that by default it "behaves as before".  Then we can make sure that when
> it "behaves as before" it sends the same data to the server.

Where is the point of having an emacsclient not matching the emacs
version one is using?  At least as long as we are only talking about
local connections.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-08 19:48     ` Stephen J. Turnbull
@ 2007-09-09 20:05       ` Richard Stallman
  0 siblings, 0 replies; 23+ messages in thread
From: Richard Stallman @ 2007-09-09 20:05 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: eliz, dann, emacs-devel

Karoly should have documented the functions and features when he was
available.  Also, people should not have said that this branch was
ready for installation while its doc was incomplete.  However, that's
the past.

For now, we either have to revert those changes or figure them out and
document them.  It would be a shame to revert them, but it is simply
impossible to go ahead with them undocumented.

So if you don't want the multi-tty code taken out, start studying the code
and commenting all the new functions, and writing up the new features
for etc/NEWS.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
@ 2007-09-09 21:18 Angelo Graziosi
  0 siblings, 0 replies; 23+ messages in thread
From: Angelo Graziosi @ 2007-09-09 21:18 UTC (permalink / raw)
  To: emacs-devel; +Cc: Eli Zaretskii, Dan Nicolaescu, Stefan Monnier, f.axelsson


As I described here

http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg00756.html

the changes to emacs/src/window.c and to emacs/lisp/cus-start.el
-------------------------------------
2007-09-08  Fredrik Axelsson  <f.axelsson@gmail.com>

	* cus-start.el (all): Add prefer-window-split-horizontally from
	window.c.
-------------------------------------

make Emacs-CVS to crash when started as "emacs -nw" from the Cygwin
Dos-like shell (cygwin.bat) but not from an X shell.

If one, after a fresh CVS check out, substitutes window.c and cus-start.el
with the previous version, Emacs works fine when started from all shells
(Dos-like, rxvt, urxvt, xterm). Also emacsclient works fine.

Since I read this

http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg00773.html,

should the changes to window.c and cus-start.el be reverted?

If not, we have to file an Emacs bug on Cygwin.


   Angelo.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-09 20:03     ` David Kastrup
@ 2007-09-10  3:21       ` Eli Zaretskii
  0 siblings, 0 replies; 23+ messages in thread
From: Eli Zaretskii @ 2007-09-10  3:21 UTC (permalink / raw)
  To: David Kastrup; +Cc: dann, monnier, emacs-devel

> Cc: Dan Nicolaescu <dann@ics.uci.edu>,  Eli Zaretskii <eliz@gnu.org>,
> 	  emacs-devel@gnu.org
> From: David Kastrup <dak@gnu.org>
> Date: Sun, 09 Sep 2007 22:03:59 +0200
> 
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
> 
> >> I think so, the communication between the emacsclient and emacs is
> >> more complex now, more stuff is sent over the wire.
> >
> > AFAICT we could very well make it backward compatible.
> > The first thing to do for that is to change the "-c" argument of emacsclient
> > so that by default it "behaves as before".  Then we can make sure that when
> > it "behaves as before" it sends the same data to the server.
> 
> Where is the point of having an emacsclient not matching the emacs
> version one is using?

I explained when this is incompatibility is an annoyance: when you
use several different versions of Emacs at once.  In that case, it
might well happen that the Emacs that is running the server is
incompatible with emacsclient that's invoked by some application that
calls $EDITOR.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
       [not found]       ` <E1IUCJC-0000YJ-0c@fencepost.gnu.org>
@ 2007-09-10  3:35         ` Dan Nicolaescu
  2007-09-10  4:44           ` dhruva
  2007-09-10 23:54           ` Richard Stallman
  0 siblings, 2 replies; 23+ messages in thread
From: Dan Nicolaescu @ 2007-09-10  3:35 UTC (permalink / raw)
  To: rms; +Cc: eliz, emacs-devel

Richard Stallman <rms@gnu.org> writes:

  > The really bad problem is that lots of functions (in xterm.c, for
  > instance) have no comments.  I don't know what they are supposed to
  > do.

There must be some confusion here that it would be good if you could
clarify: multi-tty only added 2 new functions to xterm.c. Only one of
which does not have comments: x_create_terminal. But I doubt there can
be any misunderstanding of what that function does. I added some
comments to it, I'll commit it soon.

Looking that the multi-tty diff for that file, most of the changes are
because of adding another level of indirection, and using some new
macros, not much new code added, and for the added code the comments
added seem on par with what was there before.

Or maybe you are referring to term.c, not xterm.c?
2 new functions there don't have much comments: set_tty_hooks and
clear_tty_hooks, but they are pretty simple: what used to be global
variables in term.c are now fields in struct terminal, those 2
functions set/reset those fields. I'll add some comments.

There's a boatload of functions in term.c that don't have much
comments, most of them are called tty_*. Maybe that is what you are
referring to? 
The multi-tty patch renamed a lot of those functions, to start with
"tty_", but it did not introduce them. Some of these functions have
been around for at least 16 years, so I don't think you'd want
multi-tty to document them. Anyway reverting the multi-tty patch as
you said in another message will not help with that.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-10  3:35         ` Dan Nicolaescu
@ 2007-09-10  4:44           ` dhruva
  2007-09-10 23:54           ` Richard Stallman
  1 sibling, 0 replies; 23+ messages in thread
From: dhruva @ 2007-09-10  4:44 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: eliz, rms, emacs-devel

Hi,

On 9/10/07, Dan Nicolaescu <dann@ics.uci.edu> wrote:
> multi-tty to document them. Anyway reverting the multi-tty patch as
> you said in another message will not help with that.

IMHO, the best way forward is that someone with best knowledge of
multi-tty as on today actively involved (maybe Dan) make a short write
up on the files modified and some top level functions that need to be
explored in depth. If possible, platform specific functions that need
special attention or porting. This document could be just a seed at
first cut and can evolve as more developers find out during exploring
the code.
 Though I do not have any GUI/rendering related programming, I can
start exploring as a learning experience. What do people say for this
approach?
From a programmer's ego (I know should not be there), reverting the
multi-tty patch will send wrong signals about the abilities. It is
just a temporary phase of turbulence, we just need to sail past. I am
sure more complex issues were fixed. If nothing else, we will try to
disable parts which break the features on some platforms (ex: M$)
inside some MACRO and add the same in TODO. We can take a second sweep
and fix them. We will know the code better in the process.

-dky

-- 
Dhruva Krishnamurthy
Contents reflect my personal views only!

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-10  3:35         ` Dan Nicolaescu
  2007-09-10  4:44           ` dhruva
@ 2007-09-10 23:54           ` Richard Stallman
  1 sibling, 0 replies; 23+ messages in thread
From: Richard Stallman @ 2007-09-10 23:54 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: eliz, emacs-devel

    There must be some confusion here that it would be good if you could
    clarify: multi-tty only added 2 new functions to xterm.c. Only one of
    which does not have comments: x_create_terminal. But I doubt there can
    be any misunderstanding of what that function does. I added some
    comments to it, I'll commit it soon.

There are a number of functions there which lack comments.  I came
across that one and others.  Maybe they are not new, but they are
problems.

Adding comments to these functions is a very important thing to do, so
thanks for working on it.

I wrote comments for two of these functions, a couple of days ago.
I installed them just now.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-08 16:29   ` Eli Zaretskii
  2007-09-08 17:24     ` Dan Nicolaescu
  2007-09-08 19:48     ` Stephen J. Turnbull
@ 2007-09-22 13:00     ` Eli Zaretskii
  2007-09-22 21:16       ` Jason Rumney
  2007-09-25  9:01       ` Jason Rumney
  2 siblings, 2 replies; 23+ messages in thread
From: Eli Zaretskii @ 2007-09-22 13:00 UTC (permalink / raw)
  To: emacs-devel

> Date: Sat, 08 Sep 2007 19:29:45 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: emacs-devel@gnu.org
> 
> >   >   . "emacs -nw" crashes on startup; backtrace attached below.
> > 
> > This is a known problem, Jason Rumney stated that this does not work
> > in his message announcing that multi-tty was ported to Windows. 
> > Can you please help fixing it? 
> 
> I will, if I find enough time.

I fixed a few problems, and now "emacs -nw" starts on Windows.  Please
test.

Some problems that are still to be fixed, before "emacs -nw" can be
considered operable on Windows:

  o Colors don't work.  Details:

     . Emacs knows it has 16 colors, but draws only white on black and
       reverse video.  (Try "M-x list-colors-display".)

     . Mode line and menu bar are not in reverse video, as they should
       be.

     . Under a debugger, each face returns the value 7 (white on
       black) as character attribute from w32_face_attributes.

  o Ctrl-C keystrokes are swallowed and don't get to Emacs input
    queue.  For example, "C-x C-c" will not kill Emacs.

  o The screen buffer dimensions are not restored by Emacs when it
    exits.  You will see that the scroll bar of the DOS box is not
    restored, for example.  (Use the Properties of the DOS box to
    restore manually.)

After these problems are solved, I think we need to decide whether it
makes sense to use several tty's on Windows.  I know that one use case
for the multi-tty Emacs on Posix platforms is to connect to the same
Emacs session remotely; I think this use case doesn't make much sense
on MS-Windows (but if I'm wrong, please correct me).  Are there other
use cases? if so, what are they?

If we find legitimate use cases for multi-tty on MS-Windows, more
coding will be needed to provide the Windows equivalents of opening
a non-default tty device, emulate suspension, etc.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-22 13:00     ` Eli Zaretskii
@ 2007-09-22 21:16       ` Jason Rumney
  2007-09-23  4:16         ` Eli Zaretskii
  2007-09-25  9:01       ` Jason Rumney
  1 sibling, 1 reply; 23+ messages in thread
From: Jason Rumney @ 2007-09-22 21:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii wrote:
> After these problems are solved, I think we need to decide whether it
> makes sense to use several tty's on Windows.
If that is even possible, I don't think it is.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-22 21:16       ` Jason Rumney
@ 2007-09-23  4:16         ` Eli Zaretskii
  2007-09-23 11:37           ` Jason Rumney
  0 siblings, 1 reply; 23+ messages in thread
From: Eli Zaretskii @ 2007-09-23  4:16 UTC (permalink / raw)
  To: Jason Rumney; +Cc: emacs-devel

> Date: Sat, 22 Sep 2007 22:16:27 +0100
> From: Jason Rumney <jasonr@gnu.org>
> Cc: emacs-devel@gnu.org
> 
> Eli Zaretskii wrote:
> > After these problems are solved, I think we need to decide whether it
> > makes sense to use several tty's on Windows.
> If that is even possible, I don't think it is.

Well, we could allocate several consoles and switch between them, I
think.

But as I wrote, I don't think this will be useful.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-23  4:16         ` Eli Zaretskii
@ 2007-09-23 11:37           ` Jason Rumney
  2007-09-23 13:18             ` dhruva
  0 siblings, 1 reply; 23+ messages in thread
From: Jason Rumney @ 2007-09-23 11:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii wrote:
>> Date: Sat, 22 Sep 2007 22:16:27 +0100
>> From: Jason Rumney <jasonr@gnu.org>
>> Cc: emacs-devel@gnu.org
>>
>> Eli Zaretskii wrote:
>>     
>>> After these problems are solved, I think we need to decide whether it
>>> makes sense to use several tty's on Windows.
>>>       
>> If that is even possible, I don't think it is.
>>     
>
> Well, we could allocate several consoles and switch between them, I
> think.
>   
I looked into this, and only one console can be opened at a time. We
might be able to close and reopen consoles, which might be a good
implementation of suspend/resume, but if the user can see both consoles,
they might not expect that.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-23 11:37           ` Jason Rumney
@ 2007-09-23 13:18             ` dhruva
  2007-09-23 13:28               ` Jason Rumney
  0 siblings, 1 reply; 23+ messages in thread
From: dhruva @ 2007-09-23 13:18 UTC (permalink / raw)
  To: Jason Rumney; +Cc: Eli Zaretskii, emacs-devel

Hi,

On 9/23/07, Jason Rumney <jasonr@gnu.org> wrote:
> might be able to close and reopen consoles, which might be a good
> implementation of suspend/resume, but if the user can see both consoles,

Another (not tried out) approach for suspend/resume:

For suspend: Walk through all the threads in the running emacs process
and suspend each thread.
For resume: Need a separate process to create a remote thread in emacs
process (CreateRemoteThread API) and that thread can resume all other
threads in Emacs.

Is it feasible or useful?

-dky

-- 
Dhruva Krishnamurthy
Contents reflect my personal views only!

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-23 13:18             ` dhruva
@ 2007-09-23 13:28               ` Jason Rumney
  0 siblings, 0 replies; 23+ messages in thread
From: Jason Rumney @ 2007-09-23 13:28 UTC (permalink / raw)
  To: dhruva; +Cc: Eli Zaretskii, emacs-devel

dhruva wrote:
> Another (not tried out) approach for suspend/resume:
>
> For suspend: Walk through all the threads in the running emacs process
> and suspend each thread.
>   
We are talking about C-z functionality here, which is not the same as
suspending threads. The main purpose is to use the console for something
else, so Emacs must reliquish the console.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-22 13:00     ` Eli Zaretskii
  2007-09-22 21:16       ` Jason Rumney
@ 2007-09-25  9:01       ` Jason Rumney
  2007-09-26 15:24         ` Eli Zaretskii
  1 sibling, 1 reply; 23+ messages in thread
From: Jason Rumney @ 2007-09-25  9:01 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii wrote:
> Some problems that are still to be fixed, before "emacs -nw" can be
> considered operable on Windows:
>   
>   o Ctrl-C keystrokes are swallowed and don't get to Emacs input
>     queue.  For example, "C-x C-c" will not kill Emacs.
>   
This was due to terminal->set_terminal_modes_hook not being called.

>   o The screen buffer dimensions are not restored by Emacs when it
>     exits.  You will see that the scroll bar of the DOS box is not
>     restored, for example.  (Use the Properties of the DOS box to
>     restore manually.)
>   
I think this was due to terminal->reset_terminal_modes_hook not being
called, but my scrollbars do not change when Emacs starts, so I don't
know know for sure.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: multi-tty breakage on MS-Windows
  2007-09-25  9:01       ` Jason Rumney
@ 2007-09-26 15:24         ` Eli Zaretskii
  0 siblings, 0 replies; 23+ messages in thread
From: Eli Zaretskii @ 2007-09-26 15:24 UTC (permalink / raw)
  To: Jason Rumney; +Cc: emacs-devel

> Date: Tue, 25 Sep 2007 10:01:05 +0100
> From: Jason Rumney <jasonr@gnu.org>
> Cc: emacs-devel@gnu.org
> 
> Eli Zaretskii wrote:
> > Some problems that are still to be fixed, before "emacs -nw" can be
> > considered operable on Windows:
> >   
> >   o Ctrl-C keystrokes are swallowed and don't get to Emacs input
> >     queue.  For example, "C-x C-c" will not kill Emacs.
> >   
> This was due to terminal->set_terminal_modes_hook not being called.
> 
> >   o The screen buffer dimensions are not restored by Emacs when it
> >     exits.  You will see that the scroll bar of the DOS box is not
> >     restored, for example.  (Use the Properties of the DOS box to
> >     restore manually.)
> >   
> I think this was due to terminal->reset_terminal_modes_hook not being
> called, but my scrollbars do not change when Emacs starts, so I don't
> know know for sure.

Yes, these two problems are now fixed, thanks.

The problem with colors is still there.

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2007-09-26 15:24 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-09-08  9:56 multi-tty breakage on MS-Windows Eli Zaretskii
2007-09-08 15:32 ` Dan Nicolaescu
2007-09-08 16:29   ` Eli Zaretskii
2007-09-08 17:24     ` Dan Nicolaescu
2007-09-08 17:48       ` martin rudalics
     [not found]       ` <E1IUCJC-0000YJ-0c@fencepost.gnu.org>
2007-09-10  3:35         ` Dan Nicolaescu
2007-09-10  4:44           ` dhruva
2007-09-10 23:54           ` Richard Stallman
2007-09-08 19:48     ` Stephen J. Turnbull
2007-09-09 20:05       ` Richard Stallman
2007-09-22 13:00     ` Eli Zaretskii
2007-09-22 21:16       ` Jason Rumney
2007-09-23  4:16         ` Eli Zaretskii
2007-09-23 11:37           ` Jason Rumney
2007-09-23 13:18             ` dhruva
2007-09-23 13:28               ` Jason Rumney
2007-09-25  9:01       ` Jason Rumney
2007-09-26 15:24         ` Eli Zaretskii
2007-09-09 19:51   ` Stefan Monnier
2007-09-09 20:03     ` David Kastrup
2007-09-10  3:21       ` Eli Zaretskii
  -- strict thread matches above, loose matches on Subject: below --
2007-09-08 18:18 Angelo Graziosi
2007-09-09 21:18 Angelo Graziosi

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).