changable escape character.
[unix-history] / usr / src / usr.bin / window / cmd.c
index 931a442..c4bf534 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
 #ifndef lint
-static char *sccsid = "@(#)cmd.c       1.2 83/07/19";
+static char *sccsid = "@(#)cmd.c       1.5 83/07/22";
 #endif
 
 #include "defs.h"
 #endif
 
 #include "defs.h"
@@ -16,11 +16,18 @@ docmd()
 
 top:
        Wunhide(cmdwin->ww_win);
 
 top:
        Wunhide(cmdwin->ww_win);
+       if (selwin != 0)
+               Woncursor(selwin->ww_win, 1);
        while ((c = bgetc()) >= 0) {
                wwputs("\r\n", cmdwin);
                switch (c) {
                case 'r':
                case 'R':
        while ((c = bgetc()) >= 0) {
                wwputs("\r\n", cmdwin);
                switch (c) {
                case 'r':
                case 'R':
+               case 'h': case 'j': case 'k': case 'l':
+               case CTRL(u):
+               case CTRL(d):
+               case CTRL(b):
+               case CTRL(f):
                case CTRL([):
                case ESCAPE:
                        if (selwin == 0) {
                case CTRL([):
                case ESCAPE:
                        if (selwin == 0) {
@@ -43,9 +50,13 @@ top:
                        setselwin(w);
                        break;
                case 'c':
                        setselwin(w);
                        break;
                case 'c':
+                       doclose(CLOSE_ONE, getwin());
+                       break;
                case 'C':
                case 'C':
+                       doclose(CLOSE_DEAD, (struct ww *)0);
+                       break;
                case 'Z':
                case 'Z':
-                       doclose(c);
+                       doclose(CLOSE_ALL, (struct ww *)0);
                        break;
                case 'w':
                        dowindow();
                        break;
                case 'w':
                        dowindow();
@@ -59,12 +70,39 @@ top:
                case 'R':
                        selwin->ww_refresh = 1;
                        break;
                case 'R':
                        selwin->ww_refresh = 1;
                        break;
+               case 's':
+                       dostat();
+                       break;
                case 't':
                        dotime(RUSAGE_SELF);
                        break;
                case 'T':
                        dotime(RUSAGE_CHILDREN);
                        break;
                case 't':
                        dotime(RUSAGE_SELF);
                        break;
                case 'T':
                        dotime(RUSAGE_CHILDREN);
                        break;
+               case 'h':
+                       Wcurleft(selwin->ww_win, 1);
+                       break;
+               case 'j':
+                       Wcurdown(selwin->ww_win, 1);
+                       break;
+               case 'k':
+                       Wcurup(selwin->ww_win, 1);
+                       break;
+               case 'l':
+                       Wcurright(selwin->ww_win, 1);
+                       break;
+               case CTRL(d):
+                       doscroll(1);
+                       break;
+               case CTRL(u):
+                       doscroll(-1);
+                       break;
+               case CTRL(f):
+                       doscroll(2);
+                       break;
+               case CTRL(b):
+                       doscroll(-2);
+                       break;
                case CTRL(l):
                        ScreenGarbaged = 1;
                        break;
                case CTRL(l):
                        ScreenGarbaged = 1;
                        break;
@@ -80,11 +118,13 @@ top:
                        wwsuspend();
                        break;
                case '.':
                        wwsuspend();
                        break;
                case '.':
-                       quit++;
-                       goto out;
+                       doquit();
+                       if (quit)
+                               goto out;
+                       break;
                default:
                        Ding();
                default:
                        Ding();
-                       wwprintf(cmdwin, "(%x) Type ? for help.  ", c);
+                       wwprintf(cmdwin, "Type ? for help.  ");
                        break;
                }
        }
                        break;
                }
        }
@@ -95,7 +135,9 @@ top:
        goto top;
 out:
        if (!quit)
        goto top;
 out:
        if (!quit)
-               wwsetcurrent(selwin);
+               wwsetcurwin(selwin);
+       if (selwin != 0)
+               Woncursor(selwin->ww_win, 0);
        Whide(cmdwin->ww_win);
 }
 
        Whide(cmdwin->ww_win);
 }
 
@@ -119,14 +161,16 @@ getwin()
 setselwin(w)
 register struct ww *w;
 {
 setselwin(w)
 register struct ww *w;
 {
-       if (selwin)
+       if (selwin) {
                labelwin(selwin, 0);
                labelwin(selwin, 0);
-       selwin = w;
-       if (w) {
+               Woncursor(selwin->ww_win, 0);
+       }
+       if (selwin = w) {
                labelwin(w, WINVERSE);
                /* bring it to the top just below cmdwin */
                labelwin(w, WINVERSE);
                /* bring it to the top just below cmdwin */
-               wwsetcurrent(w);
-               wwsetcurrent(cmdwin);
+               wwsetcurwin(w);
+               wwsetcurwin(cmdwin);
+               Woncursor(w->ww_win, 1);
        }
 }
 
        }
 }