I have revised the "win" terminal interface to create what I consider to be a better terminal experience. The added features include the ability to send end-of-file and signals to subprocesses, optional scrolling of the window when output occurs, as well as some communication with gdb. I have put up a web page describing my additions in more detail and giving access to the source at http://plg.uwaterloo.ca/~rcbilson/win. I know that it works on Linux and Solaris and am fairly confident that it will not work on BSD; I'm willing to accept portability patches. I did make use of a small patch to wily, which I include here (it was made against the 9libs version, if that matters). Its intent is to allow an rpc client to make a goto request that changes the selection without warping the mouse cursor. I found this essential for some of the changes I made to win, and I believe it could have other applications as well. I'm happy to receive any feedback, either on the patch or on the program. There is still room for improvement of win, I'm sure, but I have been using this version for a while now and am quite happy with it. - Richard --- include/msg.h 21 Jun 2003 20:42:57 -0000 1.1.1.1 +++ include/msg.h 21 Jun 2003 21:27:52 -0000 1.2 @@ -62,6 +62,12 @@ char * s; }; +typedef enum GOTOtype { + WMGOTO_NOSHOW, + WMGOTO_SHOWWARP, + WMGOTO_SHOW +} GOTOtype; + /* ../libmsg/connect.c */ int client_connect (void); --- wily/msg.c 21 Jun 2003 20:42:57 -0000 1.1.1.1 +++ wily/msg.c 21 Jun 2003 21:28:14 -0000 1.2 @@ -265,10 +265,11 @@ static void handlegoto(Msg*m, View*v) { - Bool show; + Bool show, warp; Range r; - show = (m->t == WEgoto) || m->flag; + show = (m->t == WEgoto) || (m->flag != WMGOTO_NOSHOW); + warp = (m->t == WEgoto) || (m->flag == WMGOTO_SHOWWARP); /* We get the search start position * either from 'm' or 'dot' in the view. @@ -281,6 +282,8 @@ if (show) { view_show(v, r); view_select(v, r); + } + if (warp) { view_warp(v, r); } m->r = r;