/* Clear current window and set as requested. * ^L - clear current window and redisplay it (default top) * <arg>^L - select new window so that current line is * the <arg>'th from top of window (0 = top line) * ^U^L - clear current line and redisplay. */ f_newwin() { register int i, n; register struct window *w; d_fixcur(); /* Ensure screen vars correct */ w = cur_win; if (exp_p) { if((n = exp) == 4 && exp_p == 4 /* CTRL-U? */ && (i = d_line(cur_dot)) >= 0) /* On valid line? */ { d_lupd(w, i); /* Update it */ return; } } else /* No argument given */ { redp(RD_SCREEN); /* Clear whole screen (later just window? */ #if IMAGEN return; #else n = (ev_nwpct*w->w_ht)/100; /* Set new window using % */ #endif /*-IMAGEN*/ } if (n < 0) n = 0; /* Ensure # is reasonable */ else if (n >= w->w_ht) n = w->w_ht - 1; d_fgoloff(-n); /* Go up given # of lines */ w->w_topldot = e_dot(); /* Set new top-line dot */ e_gocur(); /* Move back to cur_dot */ redp(RD_FIXWIN); /* Say to re-hack window */ }
f_ekmac() { if(km_flag > 0 && (--km_exp >= 0)) { ex_go((SBBUF *)km_buf, (chroff)0); } else if(km_flag) { km_flag = 0; kdef_mode = 0; /* Flush minor mode */ redp(RD_MODE); } }
/* EFUN: "Other New Screen" (not EMACS) - from IMAGEN config */ f_othnscreen() { if (! oth_win) return; f_othwind(); if (exp_p) /* With arg, back up */ d_screen(-1); else d_screen(1); f_othwind(); redp(RD_WINDS); /* Look at all windows */ }
f_skmac() { register struct buffer *b; struct buffer *make_buf(); if(km_flag) { ding("Kbd macro active, ignoring \"Start Kbd Macro\""); return; } if((b = km_buf) == 0) b = km_buf = make_buf(" *KBDMAC*"); ex_reset(b); km_flag = -1; /* Say starting macro collection */ kdef_mode = 1; redp(RD_MODE); }