insert mode bug fix and cleanup
[unix-history] / usr / src / usr.bin / window / wwinschar.c
index 3036a1c..715a2da 100644 (file)
@@ -1,6 +1,23 @@
+/*
+ * Copyright (c) 1983 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley.  The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
 #ifndef lint
 #ifndef lint
-static char *sccsid = "@(#)wwinschar.c 3.12 83/12/02";
-#endif
+static char sccsid[] = "@(#)wwinschar.c        3.18 (Berkeley) %G%";
+#endif /* not lint */
 
 #include "ww.h"
 #include "tt.h"
 
 #include "ww.h"
 #include "tt.h"
@@ -75,19 +92,14 @@ short c;
        /*
         * Can/Should we use delete character?
         */
        /*
         * Can/Should we use delete character?
         */
-       if (tt.tt_hasinsert && nvis > (wwncol - col) / 2) {
+       if ((tt.tt_inschar || tt.tt_setinsert) && nvis > (wwncol - col) / 2) {
                register union ww_char *p, *q;
 
                register union ww_char *p, *q;
 
-               tt.tt_ninsert = 1;
-               tt.tt_nmodes = c >> WWC_MSHIFT & tt.tt_availmodes;
-               (*tt.tt_move)(row, col);
-               (*tt.tt_putc)(c & WWC_CMASK);
-               tt.tt_ninsert = 0;
-
+               xxinschar(row, col, c & wwavailmodes << WWC_MSHIFT);
                p = &wwos[row][wwncol];
                q = p - 1;
                for (i = wwncol - col; --i > 0;)
                        *--p = *--q;
                p = &wwos[row][wwncol];
                q = p - 1;
                for (i = wwncol - col; --i > 0;)
                        *--p = *--q;
-               q->c_w = c;
+               q->c_w = tt.tt_setinsert ? c : ' ';
        }
 }
        }
 }