Path: utzoo!mnetor!spectrix!yunexus!ists!mike
From: mike@ists (Mike Clarkson)
Newsgroups: comp.mail.elm
Subject: vt100 cursor fix for elm
Message-ID: <203@ists>
Date: 8 May 88 06:22:05 GMT
Organization: Institute for Space and Terrestrial Science
Lines: 132
Keywords: bug fixes, enhancements...


Here are a couple of changes for elm 1.7beta.

1) The screen is not redrawn after entering an editor.  That works for
vi, but not for microemacs.  redraw is now set for edit and forward.

2) The cursor keys are only checked for the first character after an 
escape for a cursor movement.  This won't work for a vt100, so the patch
makes it look for the second character after an escape iff the first
char. is the same for cursor up and cursor down (I know groddy groddy).

Feed to patch.

-------------------------------------------------------------------------------

*** elm.c.old
--- elm.c
**************
*** 222,228
  
  	    case 'e'    :  PutLine0(LINES-3,strlen("Command: "),"Edit mailbox");
  			   if (current > 0) {
! 			     edit_mailbox();
  	    		     if (cursor_control)
  	                       transmit_functions(ON);	/* insurance */
  	   		   }
--- 222,228 -----
  
  	    case 'e'    :  PutLine0(LINES-3,strlen("Command: "),"Edit mailbox");
  			   if (current > 0) {
! 			     redraw = edit_mailbox();
  	    		     if (cursor_control)
  	                       transmit_functions(ON);	/* insurance */
  	   		   }
**************
*** 232,238
  		
  	    case 'f'    :  PutLine0(LINES-3, strlen("Command: "), "Forward");
  			   define_softkeys(YESNO);
! 			   if (current > 0)  
  	                     redraw = forward();   
  			   else 
  	                     error("No mail to forward!");
--- 232,238 -----
  		
  	    case 'f'    :  PutLine0(LINES-3, strlen("Command: "), "Forward");
  			   define_softkeys(YESNO);
! 			   if (current > 0)  {
  	                     redraw = forward();   
  			     redraw++;
  			     }
**************
*** 234,239
  			   define_softkeys(YESNO);
  			   if (current > 0)  
  	                     redraw = forward();   
  			   else 
  	                     error("No mail to forward!");
  			   define_softkeys(MAIN);
--- 234,241 -----
  			   define_softkeys(YESNO);
  			   if (current > 0)  {
  	                     redraw = forward();   
+ 			     redraw++;
+ 			     }
  			   else 
  	                     error("No mail to forward!");
  			   define_softkeys(MAIN);
**************
*** 454,460
  
  	    case NO_OP_COMMAND : break;	/* noop for timeout loop */
  
! 	    case ESCAPE : if (cursor_control) {
  			    ch = ReadCh(); 
  	                    if (ch == up[1]) {
  			      if (selected)
--- 456,463 -----
  
  	    case NO_OP_COMMAND : break;	/* noop for timeout loop */
  
! 	    case ESCAPE : 
! 			if (cursor_control > 0) {
  			    ch = ReadCh(); 
  			    i = 1;
  			    if ( up[i] == down[i] ) {
**************
*** 456,462
  
  	    case ESCAPE : if (cursor_control) {
  			    ch = ReadCh(); 
! 	                    if (ch == up[1]) {
  			      if (selected)
  			        current = previous_visible(current);
  			      else 
--- 459,471 -----
  	    case ESCAPE : 
  			if (cursor_control > 0) {
  			    ch = ReadCh(); 
! 			    i = 1;
! 			    if ( up[i] == down[i] ) {
! 				   /* Ansi or vt100 escape sequence */
! 				    ch = ReadCh(); 
! 				    i++;
! 				}
! 	                    if (ch == up[i]) {
  			      if (selected)
  			        current = previous_visible(current);
  			      else 
**************
*** 466,472
  			      else
  			        nucurr++;			
  	                    }
! 			    else if (ch == down[1]) {
  			      if (selected) {
  			        if ((current = next_visible(current)) < 0)
  	                          current = visible_to_index(selected)+1;
--- 475,481 -----
  			      else
  			        nucurr++;			
  	                    }
! 			    else if (ch == down[i]) {
  			      if (selected) {
  			        if ((current = next_visible(current)) < 0)
  	                          current = visible_to_index(selected)+1;

-- 
Mike Clarkson					mike@ists.UUCP
Institute for Space and Terrestrial Science	mike@ists.yorku.ca
York University, North York, Ontario,		uunet!mnetor!yunexus!ists!mike
CANADA M3J 1P3					+1 (416) 736-5611