utashiro@sran84.sra.JUNET (Kazumasa Utashiro) (01/06/89)
I'm going to post some patches for command 'fep' which was posted to comp.sources.unix last November. Patches will contain 5 parts. Please apply all of them. I've received many requests for multiple command aliasing for cd'ing. Patch #2 and #3 will make it possible in following way. alias cd 'fep-cd !$; cd !$' However, I don't recommend to use fep as a front-end for any kind of shell. It is much better to use dedicated command like newcsh, tcsh or ksh. I'm assuming this command to be used for each single command. I got many comments, suggestions and requests for fep. I replied to most of them by e-mail, but I couldn't reach some of them for some e-mail link problem (especially to European countries). Please excuse me if you didn't get any response. Kazumasa Utashiro Software Research Associates, Inc. 1-1-1 Hirakawa-cho, Chiyoda-ku, Tokyo 102, Japan UUCP: kddlab!srava.sra.junet!utashiro ARPA: utashiro%sra.junet@uunet.uu.net JUNET: utashiro@sra.junet ---------------------------------------------------------------------- Description: * Added view-buffer function * Added some screen redrawing feature *** /tmp/,RCSt1008587 Tue Aug 23 01:43:06 1988 --- fep_funcs.c Mon Aug 22 02:01:12 1988 *************** *** 2,8 #ifndef lint static char rcsid[]= ! "$Header: fep_funcs.c,v 4.0 88/08/05 20:22:12 utashiro Rel $ (SRA)"; #endif lint #include <stdio.h> --- 2,8 ----- #ifndef lint static char rcsid[]= ! "$Header: fep_funcs.c,v 4.2 88/08/16 18:24:00 utashiro Exp $ (SRA)"; #endif lint #include <stdio.h> *************** *** 108,113 "End script"}, {fep_repaint, "repaint", "Repaint screen"}, {show_help, "help", "Show help"}, --- 108,115 ----- "End script"}, {fep_repaint, "repaint", "Repaint screen"}, + {view_buffer, "view-buffer", + "View buffer"}, {show_help, "help", "Show help"}, *** /tmp/,RCSt1008597 Tue Aug 23 01:43:13 1988 --- fep_set.c Mon Aug 22 02:01:15 1988 *************** *** 2,8 #ifndef lint static char rcsid[]= ! "$Header: fep_set.c,v 4.0 88/08/05 20:22:22 utashiro Rel $ (SRA)"; #endif lint #include <stdio.h> --- 2,8 ----- #ifndef lint static char rcsid[]= ! "$Header: fep_set.c,v 4.1 88/08/08 19:24:30 utashiro Exp $ (SRA)"; #endif lint #include <stdio.h> *************** *** 32,37 "History length used by show-history", (VAR*)0}, {"delimiters", " \t", "Argument delemiter characters", (VAR*)0}, {NULL, NULL, NULL, (VAR*)0} }; --- 32,39 ----- "History length used by show-history", (VAR*)0}, {"delimiters", " \t", "Argument delemiter characters", (VAR*)0}, + {"buffer", "5120", + "Output buffer size", (VAR*)0}, {NULL, NULL, NULL, (VAR*)0} }; *************** *** 97,104 char *name; char *value; { - set_only_var (name, value); - /* * Process special variable */ --- 99,104 ----- char *name; char *value; { /* * Process special variable */ *************** *** 102,110 /* * Process special variable */ ! if (eq (name, "history")) ! changeHistorySize (lookd_var ("history")); ! if (eq (name, "prompt")) { free (prompt); prompt = allocAndCopyThere (value); } --- 102,112 ----- /* * Process special variable */ ! if (eq (name, "history")) { ! if (!changeHistorySize (atoi (value))) ! return (0); ! } ! else if (eq (name, "prompt")) { free (prompt); prompt = allocAndCopyThere (value); } *************** *** 108,114 free (prompt); prompt = allocAndCopyThere (value); } ! if (eq (name, "editmode")) { if (eq (value, "emacs")) { editmode = EMACS; initEmacsBindings (curFuncTab, altFuncTab); --- 110,116 ----- free (prompt); prompt = allocAndCopyThere (value); } ! else if (eq (name, "editmode")) { if (eq (value, "emacs")) { editmode = EMACS; initEmacsBindings (curFuncTab, altFuncTab); *************** *** 120,126 else printf ("%s: Unknown editmode\n", value); } ! if (eq (name, "auto-tty-fix")) auto_tty_fix = ON; if (eq (name, "debug")) debug = ON; --- 122,128 ----- else printf ("%s: Unknown editmode\n", value); } ! else if (eq (name, "auto-tty-fix")) auto_tty_fix = ON; else if (eq (name, "debug")) debug = ON; *************** *** 122,128 } if (eq (name, "auto-tty-fix")) auto_tty_fix = ON; ! if (eq (name, "debug")) debug = ON; if (eq (name, "tty-fix-bell")) tty_fix_bell = ON; --- 124,130 ----- } else if (eq (name, "auto-tty-fix")) auto_tty_fix = ON; ! else if (eq (name, "debug")) debug = ON; else if (eq (name, "tty-fix-bell")) tty_fix_bell = ON; *************** *** 124,130 auto_tty_fix = ON; if (eq (name, "debug")) debug = ON; ! if (eq (name, "tty-fix-bell")) tty_fix_bell = ON; if (eq (name, "delimiters")) delimiters = look_var ("delimiters"); --- 126,132 ----- auto_tty_fix = ON; else if (eq (name, "debug")) debug = ON; ! else if (eq (name, "tty-fix-bell")) tty_fix_bell = ON; else if (eq (name, "delimiters")) { /* only in this case, variable points allocated area */ *************** *** 126,132 debug = ON; if (eq (name, "tty-fix-bell")) tty_fix_bell = ON; ! if (eq (name, "delimiters")) delimiters = look_var ("delimiters"); if (eq (name, "crt")) lines = atoi (look_var("crt")); --- 128,136 ----- debug = ON; else if (eq (name, "tty-fix-bell")) tty_fix_bell = ON; ! else if (eq (name, "delimiters")) { ! /* only in this case, variable points allocated area */ ! set_only_var (name, value); delimiters = look_var ("delimiters"); } else if (eq (name, "crt")) *************** *** 128,135 tty_fix_bell = ON; if (eq (name, "delimiters")) delimiters = look_var ("delimiters"); ! if (eq (name, "crt")) ! lines = atoi (look_var("crt")); } --- 132,142 ----- /* only in this case, variable points allocated area */ set_only_var (name, value); delimiters = look_var ("delimiters"); ! } ! else if (eq (name, "crt")) ! lines = atoi (value); ! else if (eq(name, "buffer")) { ! int s; if ((s = atoi(value)) <= 0) return; *************** *** 131,136 if (eq (name, "crt")) lines = atoi (look_var("crt")); } set_only_var (name, value) --- 138,151 ----- else if (eq(name, "buffer")) { int s; + if ((s = atoi(value)) <= 0) + return; + + if (!set_buffer (output_buffer, s)) + return; + } + + set_only_var (name, value); } set_only_var (name, value) *** /tmp/,RCSt1008607 Tue Aug 23 01:43:18 1988 --- fep_vi.c Mon Aug 22 02:01:17 1988 *************** *** 2,8 #ifndef lint static char rcsid[]= ! "$Header: fep_vi.c,v 4.0 88/08/05 20:22:27 utashiro Rel $ (SRA)"; #endif lint #include <stdio.h> --- 2,8 ----- #ifndef lint static char rcsid[]= ! "$Header: fep_vi.c,v 4.2 88/08/16 18:24:05 utashiro Exp $ (SRA)"; #endif lint #include <stdio.h> *************** *** 104,109 /* ^X-l */ {"\\^Xl", list_file_name}, /* ^X-L */ {"\\^XL", list_file_name}, /* ^X-^L */ {"\\^X\\^L", fep_repaint}, /* ^X-^X */ {"\\^X\\^X", expand_file_name}, /* ^X-? */ {"\\^X?", show_bindings}, /* ^X-^C */ {"\\^X\\^C", terminate}, --- 104,110 ----- /* ^X-l */ {"\\^Xl", list_file_name}, /* ^X-L */ {"\\^XL", list_file_name}, /* ^X-^L */ {"\\^X\\^L", fep_repaint}, + /* ^X-^V */ {"\\^X\\^V", view_buffer}, /* ^X-^X */ {"\\^X\\^X", expand_file_name}, /* ^X-? */ {"\\^X?", show_bindings}, /* ^X-^C */ {"\\^X\\^C", terminate}, *** /tmp/,RCSt1008639 Tue Aug 23 01:43:27 1988 --- fep_hist.c Mon Aug 22 02:01:14 1988 *************** *** 2,8 #ifndef lint static char rcsid[]= ! "$Header: fep_hist.c,v 4.0 88/08/05 20:22:14 utashiro Rel $ (SRA)"; #endif lint #include <stdio.h> --- 2,8 ----- #ifndef lint static char rcsid[]= ! "$Header: fep_hist.c,v 4.1 88/08/08 19:24:14 utashiro Exp $ (SRA)"; #endif lint #include <stdio.h> *************** *** 316,321 if (newsize > 0) newHistTable = (char **)calloc(sizeof(char *), newsize); newTop = (TailOfHist - newsize < TopOfHist) ? TopOfHist : TailOfHist - newsize; --- 316,325 ----- if (newsize > 0) newHistTable = (char **)calloc(sizeof(char *), newsize); + + if (newHistTable == 0) + return (0); + newTop = (TailOfHist - newsize < TopOfHist) ? TopOfHist : TailOfHist - newsize; *************** *** 346,351 printf ("history: top=%d, tail=%d, size=%d\n", TopOfHist, TailOfHist, HistorySize); } } /* --- 350,358 ----- printf ("history: top=%d, tail=%d, size=%d\n", TopOfHist, TailOfHist, HistorySize); } + + return (1); + } /* *************** *** 439,445 "%s: Argument or \"history-file\" variables is required\n", argv[0] ); ! recover_edit_line (); return; } file = mk_home_relative (cp); --- 446,452 ----- "%s: Argument or \"history-file\" variables is required\n", argv[0] ); ! recover_edit_line (1); return; } file = mk_home_relative (cp); *************** *** 476,482 if ((fp = fopen (file, "w")) == NULL) { clear_edit_line (); perror (file); ! recover_edit_line (); return; } --- 483,489 ----- if ((fp = fopen (file, "w")) == NULL) { clear_edit_line (); perror (file); ! recover_edit_line (1); return; } *************** *** 510,516 "%s: Argument or \"history-file\" variables is required\n", argv[0] ); ! recover_edit_line (); return; } file = mk_home_relative (cp); --- 517,523 ----- "%s: Argument or \"history-file\" variables is required\n", argv[0] ); ! recover_edit_line (1); return; } file = mk_home_relative (cp); *************** *** 531,537 if ((fp = fopen (file, "r")) == NULL) { clear_edit_line (); perror (file); ! recover_edit_line (); return; } --- 538,544 ----- if ((fp = fopen (file, "r")) == NULL) { clear_edit_line (); perror (file); ! recover_edit_line (1); return; } *** /tmp/,RCSt1008649 Tue Aug 23 01:43:36 1988 --- fep_com.c Tue Aug 23 01:29:15 1988 *************** *** 2,8 #ifndef lint static char rcsid[]= ! "$Header: fep_com.c,v 4.0 88/08/05 20:22:02 utashiro Rel $ (SRA)"; #endif lint #include <stdio.h> --- 2,8 ----- #ifndef lint static char rcsid[]= ! "$Header: fep_com.c,v 4.4 88/08/23 01:28:55 utashiro Exp $ (SRA)"; #endif lint #include <stdio.h> *************** *** 18,23 int tty_fix_bell = OFF; /* ring bell if the tty mode is changed */ /* * Check command line if it call built-in function or not and execute it */ --- 18,29 ----- int tty_fix_bell = OFF; /* ring bell if the tty mode is changed */ + typedef struct { + int cur_line; + int max_line; + } MORE; + MORE *create_more(); + /* * Check command line if it call built-in function or not and execute it */ *************** *** 433,438 } } int crt, sline; show_bindings () --- 439,452 ----- } } + putch (c) + int c; + { + putchar (c); + fflush (stdout); + } + + /* int crt, sline; */ *************** *** 434,439 } int crt, sline; show_bindings () { --- 448,454 ----- /* int crt, sline; + */ show_bindings () { *************** *** 437,446 show_bindings () { ! crt = lookd_var ("crt"); ! if (crt < 0) ! crt = 0; ! sline = 0; clear_edit_line (); (void) showBindingTbl (curFuncTab, ""); --- 452,458 ----- show_bindings () { ! MORE *m; m = create_more(lines); if (!m) { *************** *** 442,447 crt = 0; sline = 0; clear_edit_line (); (void) showBindingTbl (curFuncTab, ""); recover_edit_line (); --- 454,465 ----- { MORE *m; + m = create_more(lines); + if (!m) { + errorBell (); + return (0); + } + clear_edit_line (); (void) showBindingTbl (m, curFuncTab, ""); recover_edit_line (1); *************** *** 443,450 sline = 0; clear_edit_line (); ! (void) showBindingTbl (curFuncTab, ""); ! recover_edit_line (); } showBindingTbl (ft, prefix) --- 461,471 ----- } clear_edit_line (); ! (void) showBindingTbl (m, curFuncTab, ""); ! recover_edit_line (1); ! ! destroy_more(m); ! return (0); } showBindingTbl (m, ft, prefix) *************** *** 447,453 recover_edit_line (); } ! showBindingTbl (ft, prefix) FUNC ft[]; char *prefix; { --- 468,475 ----- return (0); } ! showBindingTbl (m, ft, prefix) ! MORE *m; FUNC ft[]; char *prefix; { *************** *** 466,472 sprintf (pf, "%s%s%c-", prefix, (i == 0 || isctlchar(i)) ? "^" : "", unctl(i)); ! if (showBindingTbl (maskIndirect(ft[i]), pf) == 0) break; continue; } --- 488,494 ----- sprintf (pf, "%s%s%c-", prefix, (i == 0 || isctlchar(i)) ? "^" : "", unctl(i)); ! if (showBindingTbl (m, maskIndirect(ft[i]), pf) == 0) break; continue; } *************** *** 477,483 for (fnte = FunctionNameTable; fnte->func; fnte++) { if (ft[i] == fnte->func) { ! if (!check_more()) return (0); /* --- 499,505 ----- for (fnte = FunctionNameTable; fnte->func; fnte++) { if (ft[i] == fnte->func) { ! if (!more(m)) return (0); /* *************** *** 509,517 show_help () { ! crt = lines; ! (crt < 0) && (crt = 0); ! sline = 0; clear_edit_line (); --- 531,537 ----- show_help () { ! MORE *m; m = create_more(lines); if (m == 0) { *************** *** 513,518 (crt < 0) && (crt = 0); sline = 0; clear_edit_line (); check_more() && --- 533,544 ----- { MORE *m; + m = create_more(lines); + if (m == 0) { + errorBell (); + return; + } + clear_edit_line (); more(m) && *************** *** 515,521 clear_edit_line (); ! check_more() && (printf ("Functions:\n") || 1) && showTable (FunctionNameTable) && check_more() && --- 541,547 ----- clear_edit_line (); ! more(m) && (printf ("Functions:\n") || 1) && showTable (m, FunctionNameTable) && more(m) && *************** *** 517,524 check_more() && (printf ("Functions:\n") || 1) && ! showTable (FunctionNameTable) && ! check_more() && (printf ("Commands:\n") || 1) && showTable (BuiltinFuncTable) && check_more() && --- 543,550 ----- more(m) && (printf ("Functions:\n") || 1) && ! showTable (m, FunctionNameTable) && ! more(m) && (printf ("Commands:\n") || 1) && showTable (m, BuiltinFuncTable) && more(m) && *************** *** 520,527 showTable (FunctionNameTable) && check_more() && (printf ("Commands:\n") || 1) && ! showTable (BuiltinFuncTable) && ! check_more() && (printf ("Variables:\n") || 1) && showVariables (); --- 546,553 ----- showTable (m, FunctionNameTable) && more(m) && (printf ("Commands:\n") || 1) && ! showTable (m, BuiltinFuncTable) && ! more(m) && (printf ("Variables:\n") || 1) && showVariables (m); *************** *** 523,529 showTable (BuiltinFuncTable) && check_more() && (printf ("Variables:\n") || 1) && ! showVariables (); recover_edit_line (); } --- 549,555 ----- showTable (m, BuiltinFuncTable) && more(m) && (printf ("Variables:\n") || 1) && ! showVariables (m); recover_edit_line (1); } *************** *** 525,531 (printf ("Variables:\n") || 1) && showVariables (); ! recover_edit_line (); } showTable (fnte) --- 551,557 ----- (printf ("Variables:\n") || 1) && showVariables (m); ! recover_edit_line (1); } showTable (m, fnte) *************** *** 528,534 recover_edit_line (); } ! showTable (fnte) FunctionTableEnt *fnte; { int i; --- 554,561 ----- recover_edit_line (1); } ! showTable (m, fnte) ! MORE *m; FunctionTableEnt *fnte; { int i; *************** *** 537,543 * Search function name table */ for (; fnte->func; fnte++) { ! if (!check_more()) return (0); printf ("\t%-30s %s\n", fnte->name, fnte->help); } --- 564,570 ----- * Search function name table */ for (; fnte->func; fnte++) { ! if (!more(m)) return (0); printf ("\t%-30s %s\n", fnte->name, fnte->help); } *************** *** 545,551 return (1); } ! showVariables () { extern VAR default_set_vars[], default_unset_vars[]; VAR *vp; --- 572,579 ----- return (1); } ! showVariables (m) ! MORE *m; { extern VAR default_set_vars[], default_unset_vars[]; VAR *vp; *************** *** 553,559 for (vp = default_set_vars; vp->v_name; ++vp) { if (!vp->v_help) continue; ! if (!check_more()) return (0); printf ("\t%-30s %s\n", vp->v_name, vp->v_help); } --- 581,587 ----- for (vp = default_set_vars; vp->v_name; ++vp) { if (!vp->v_help) continue; ! if (!more(m)) return (0); printf ("\t%-30s %s\n", vp->v_name, vp->v_help); } *************** *** 561,567 for (vp = default_unset_vars; vp->v_name; ++vp) { if (!vp->v_help) continue; ! if (!check_more()) return (0); printf ("\t%-30s %s\n", vp->v_name, vp->v_help); } --- 589,595 ----- for (vp = default_unset_vars; vp->v_name; ++vp) { if (!vp->v_help) continue; ! if (!more(m)) return (0); printf ("\t%-30s %s\n", vp->v_name, vp->v_help); } *************** *** 568,575 return (1); } ! putch (c) ! int c; { putchar (c); } --- 596,603 ----- return (1); } ! MORE *create_more(maxline) ! int maxline; { MORE *mp; *************** *** 571,577 putch (c) int c; { ! putchar (c); } check_more() --- 599,615 ----- MORE *create_more(maxline) int maxline; { ! MORE *mp; ! ! mp = (MORE *) malloc (sizeof (MORE)); ! ! if (mp == 0) ! return ((MORE*)0); ! else { ! mp->cur_line = 0; ! mp->max_line = maxline; ! return (mp); ! } } destroy_more(mp) *************** *** 574,580 putchar (c); } ! check_more() { if (sline == 0 && look_var ("clear-repaint") && term_clear) --- 612,619 ----- } } ! destroy_more(mp) ! MORE *mp; { if (mp) free (mp); *************** *** 576,581 check_more() { if (sline == 0 && look_var ("clear-repaint") && term_clear) tputs (term_clear, 1, putch); --- 615,623 ----- destroy_more(mp) MORE *mp; { + if (mp) + free (mp); + } more (mp) MORE *mp; *************** *** 577,584 check_more() { ! if (sline == 0 && look_var ("clear-repaint") && term_clear) ! tputs (term_clear, 1, putch); /* * Print more message --- 619,627 ----- free (mp); } ! more (mp) ! MORE *mp; ! { /* * Print more message *************** *** 585,592 */ # define PUTMORE printf ( "--More--"); # define DELMORE printf ("\r \r"); ! if (crt && ++sline >= crt) { ! PUTMORE; fflush (stdout); --- 628,635 ----- */ # define PUTMORE printf ( "--More--"); # define DELMORE printf ("\r \r"); ! if (mp->max_line && ++mp->cur_line >= mp->max_line) { ! PUTMORE; fflush (stdout); *************** *** 592,598 switch (getcharacter()) { case '\n': case '\r': case 'j': ! --sline; break; case 'd': case CTRL(D): --- 635,641 ----- switch (getcharacter()) { case '\n': case '\r': case 'j': ! --mp->cur_line; break; case 'd': case CTRL(D): *************** *** 596,602 break; case 'd': case CTRL(D): ! sline /= 2; break; case 'q': case 'Q': case CTRL(C): --- 639,645 ----- break; case 'd': case CTRL(D): ! mp->cur_line /= 2; break; case 'q': case 'Q': case CTRL(C): *************** *** 604,610 return (0); default: ! sline = 0; break; } DELMORE; --- 647,653 ----- return (0); default: ! mp->cur_line = 1; break; } DELMORE; *************** *** 609,614 } DELMORE; } return (1); } --- 652,661 ----- } DELMORE; } + + if (mp->cur_line == 1 && look_var ("clear-repaint") && term_clear) + tputs (term_clear, 1, putch); + return (1); } *************** *** 919,925 fix_tty(); if (look_var ("verbose")) printf ("Return to fep\n"); ! recover_edit_line (); } FILE *redirect_fp = NULL; --- 966,972 ----- fix_tty(); if (look_var ("verbose")) printf ("Return to fep\n"); ! recover_edit_line (1); } FILE *redirect_fp = NULL; *************** *** 1043,1049 clear_edit_line (); errorBell (); printf ("script is already running.\n"); ! recover_edit_line (); return; } --- 1090,1096 ----- clear_edit_line (); errorBell (); printf ("script is already running.\n"); ! recover_edit_line (1); return; } *************** *** 1050,1056 if (!name) { clear_edit_line (); printf ("script-file is not set.\n"); ! recover_edit_line (); return; } --- 1097,1103 ----- if (!name) { clear_edit_line (); printf ("script-file is not set.\n"); ! recover_edit_line (1); return; } *************** *** 1057,1063 if ((script_fp = fopen (name, "a")) == NULL) { clear_edit_line (); perror (name); ! recover_edit_line (); return; } --- 1104,1110 ----- if ((script_fp = fopen (name, "a")) == NULL) { clear_edit_line (); perror (name); ! recover_edit_line (1); return; } *************** *** 1065,1071 clear_edit_line (); printf ("script start (file=\"%s\").\n", script_file); ! recover_edit_line (); } fep_end_script () --- 1112,1118 ----- clear_edit_line (); printf ("script start (file=\"%s\").\n", script_file); ! recover_edit_line (1); } fep_end_script () *************** *** 1082,1088 clear_edit_line (); printf ("script end (file=\"%s\").\n", script_file); ! recover_edit_line (); return; } --- 1129,1135 ----- clear_edit_line (); printf ("script end (file=\"%s\").\n", script_file); ! recover_edit_line (1); return; } *************** *** 1094,1100 int line; CHAR ch; char *crt_hight; - char *save_prompt; BUFFER *bp = output_buffer; /* --- 1141,1146 ----- int line; CHAR ch; char *crt_hight; BUFFER *bp = output_buffer; /* *************** *** 1139,1147 if (look_var("clear-repaint") && term_clear) tputs (term_clear, 1, putch); ! for (; i < 0; i++) { ! char cd; ! cd = buf_char (bp, i); putchar (buf_char(bp, i)); } --- 1185,1191 ----- if (look_var("clear-repaint") && term_clear) tputs (term_clear, 1, putch); ! for (; i < 0; i++) putchar (buf_char(bp, i)); /* *************** *** 1143,1149 char cd; cd = buf_char (bp, i); putchar (buf_char(bp, i)); - } /* * In this case, prompt should not be printed. --- 1187,1192 ----- for (; i < 0; i++) putchar (buf_char(bp, i)); /* * In this case, prompt should not be printed. *************** *** 1149,1158 * In this case, prompt should not be printed. * Saving prompt is ugly solution, but... */ ! save_prompt = prompt; ! prompt = 0; ! recover_edit_line (); ! prompt = save_prompt; fflush (stdout); } --- 1192,1198 ----- * In this case, prompt should not be printed. * Saving prompt is ugly solution, but... */ ! recover_edit_line (0); fflush (stdout); } *************** *** 1156,1161 fflush (stdout); } #ifdef STAT #include "fep_stat.h" --- 1196,1247 ----- fflush (stdout); } + view_buffer (comline) + char *comline; + { + BUFFER *bp = output_buffer; + MORE *m; + int maxchar = buf_count (bp); + int i; + char c; + + /* + * Skip first line + */ + for (i = 0; (c = buf_char (bp, i)) != (char)-1 && c != '\n'; i++) + ; + i += 1; + + if (c == -1) + return (0); + + if (!(m = create_more (lines))) + return (0); + + clear_edit_line (); + for (; i < maxchar; i++) { + if (!more(m)) + break; + while ((c = buf_char (bp, i)) != (char)-1 && c != '\n') { + putchar (c); + i++; + } + if (c == '\n') + putchar ('\n'); + } + + /* + * If all output is shown, prompt not to be shown. + */ + if (i < maxchar) + recover_edit_line (1); + else + recover_edit_line (0); + + destroy_more(m); + return (0); + } + #ifdef STAT #include "fep_stat.h" *************** *** 1187,1196 printf ("\nI/O Buffer:\n"); printf ("\tMax : %d\n", bp->b_max); ! printf ("\tHiWtr: %d\n", bp->hiwater); ! printf ("\tCount: %d\n", bp->count); ! printf ("\tNext : %d\n", bp->next); ! printf ("\tStart: %d\n", bp->start); } #endif --- 1273,1281 ----- printf ("\nI/O Buffer:\n"); printf ("\tMax : %d\n", bp->b_max); ! printf ("\tHiWtr: %d\n", bp->b_hiwater); ! printf ("\tCount: %d\n", bp->b_count); ! printf ("\tNext : %d\n", bp->b_next); } #endif *** /tmp/,RCSt1008659 Tue Aug 23 01:43:50 1988 --- fep_edit.c Mon Aug 22 02:01:12 1988 *************** *** 2,8 #ifndef lint static char rcsid[]= ! "$Header: fep_edit.c,v 4.0 88/08/05 20:22:06 utashiro Rel $ (SRA)"; #endif lint #include <stdio.h> --- 2,8 ----- #ifndef lint static char rcsid[]= ! "$Header: fep_edit.c,v 4.2 88/08/16 18:23:46 utashiro Exp $ (SRA)"; #endif lint #include <stdio.h> *************** *** 77,82 /* ^X-^H */ {"\\^X\\^H", show_history}, /* ^X-H */ {"\\^XH", show_history}, /* ^X-h */ {"\\^Xh", show_history}, /* ^X-^K */ {"\\^X\\^K", kill_to_top_of_line}, /* ^X-^L */ {"\\^X\\^L", fep_repaint}, /* ^X-^C */ {"\\^X\\^C", terminate}, --- 77,83 ----- /* ^X-^H */ {"\\^X\\^H", show_history}, /* ^X-H */ {"\\^XH", show_history}, /* ^X-h */ {"\\^Xh", show_history}, + /* ^X-^V */ {"\\^X\\^V", view_buffer}, /* ^X-^K */ {"\\^X\\^K", kill_to_top_of_line}, /* ^X-^L */ {"\\^X\\^L", fep_repaint}, /* ^X-^C */ {"\\^X\\^C", terminate}, *************** *** 1428,1434 cp = ""; (void) clear_edit_line (); fprintf (stdout, "\"%s\": No match.\r\n", cp); ! (void) recover_edit_line (); } } --- 1429,1435 ----- cp = ""; (void) clear_edit_line (); fprintf (stdout, "\"%s\": No match.\r\n", cp); ! (void) recover_edit_line (1); } } *************** *** 1471,1477 errorBell (); (void) clear_edit_line (); printf ("EOF -- one more eof character to send eof to the process.\n"); ! (void) recover_edit_line (); } /* --- 1472,1478 ----- errorBell (); (void) clear_edit_line (); printf ("EOF -- one more eof character to send eof to the process.\n"); ! (void) recover_edit_line (1); } /* *************** *** 1484,1490 if (term_clear) { (void) clear_edit_line (); fputs (term_clear, stdout); ! (void) recover_edit_line (); } else errorBell (); --- 1485,1491 ----- if (term_clear) { (void) clear_edit_line (); fputs (term_clear, stdout); ! (void) recover_edit_line (1); } else errorBell (); *************** *** 1552,1565 */ show_history() { - int saveCP = CurrentPosition; - char *cp; - char *getHistory (); - int showhist; - - (void) end_of_line (); - CurrentPosition = saveCP; - fputs("\r\n", stdout); hist_showHistory (lookd_var ("showhist")); --- 1553,1558 ----- */ show_history() { (void) clear_edit_line (); hist_showHistory (lookd_var ("showhist")); *************** *** 1561,1566 CurrentPosition = saveCP; fputs("\r\n", stdout); hist_showHistory (lookd_var ("showhist")); fputs (prompt, stdout); --- 1554,1560 ----- show_history() { + (void) clear_edit_line (); hist_showHistory (lookd_var ("showhist")); (void) recover_edit_line (1); } *************** *** 1562,1570 fputs("\r\n", stdout); hist_showHistory (lookd_var ("showhist")); ! ! fputs (prompt, stdout); ! (void) print_com_line(); } /* --- 1556,1562 ----- (void) clear_edit_line (); hist_showHistory (lookd_var ("showhist")); ! (void) recover_edit_line (1); } /* *************** *** 1591,1597 { (void) clear_edit_line (); ! (void) recover_edit_line (); return (0); } --- 1583,1589 ----- { (void) clear_edit_line (); ! (void) recover_edit_line (1); return (0); } *************** *** 1803,1809 (void) clear_edit_line(); list_remote_file (host, pattern); ! (void) recover_edit_line(); return; } #endif --- 1795,1801 ----- (void) clear_edit_line(); list_remote_file (host, pattern); ! (void) recover_edit_line (1); return; } #endif *************** *** 1824,1830 (void) clear_edit_line(); ls (dirp, cp); closedir(dirp); ! (void) recover_edit_line(); return (0); } --- 1816,1822 ----- (void) clear_edit_line(); ls (dirp, cp); closedir(dirp); ! (void) recover_edit_line (1); return (0); } *************** *** 1842,1848 (void) fputs ("\r\n", stdout); } ! recover_edit_line () { if (editstatus == NOTEDITING) --- 1834,1841 ----- (void) fputs ("\r\n", stdout); } ! recover_edit_line (put_prompt) ! int put_prompt; { if (editstatus == NOTEDITING) *************** *** 1852,1858 return; CurrentPosition = rememberPosition; rememberPosition = -1; ! if (prompt) fputs (prompt, stdout); (void) print_com_line(); } --- 1845,1851 ----- return; CurrentPosition = rememberPosition; rememberPosition = -1; ! if (put_prompt && prompt) fputs (prompt, stdout); (void) print_com_line(); } *** /tmp/,RCSt1008669 Tue Aug 23 01:44:05 1988 --- fep_defs.h Mon Aug 22 02:01:11 1988 *************** *** 2,8 #ifndef lint # define FEP_DEFS \ ! "$Header: fep_defs.h,v 4.0 88/08/05 20:21:51 utashiro Rel $ (SRA)" #endif lint #define MAXCOMLEN 512 /* maximum command length */ --- 2,8 ----- #ifndef lint # define FEP_DEFS \ ! "$Header: fep_defs.h,v 4.2 88/08/16 18:22:13 utashiro Exp $ (SRA)" #endif lint #define MAXCOMLEN 512 /* maximum command length */ *************** *** 93,105 } VAR; typedef struct { ! char *buf; /* buffer */ ! char *last_buf; /* last i/o done pointer */ ! int b_max; /* max size */ ! int start; /* start point */ ! int next; /* next read point */ ! int count; /* count */ ! int hiwater; /* high water mark */ } BUFFER; #define buf_count(b) ((b)->count) --- 93,104 ----- } VAR; typedef struct { ! char *b_buf; /* buffer */ ! char *b_lastbuf; /* last i/o done pointer */ ! int b_max; /* max size */ ! int b_next; /* next read point */ ! int b_count; /* count */ ! int b_hiwater; /* high water mark */ } BUFFER; #define buf_count(b) ((b)->b_count) *************** *** 102,109 int hiwater; /* high water mark */ } BUFFER; ! #define buf_count(b) ((b)->count) ! #define buf_remain(b) ((b)->size - (b)->count) /* char buf_char (b, n) BUFFER *b; --- 101,108 ----- int b_hiwater; /* high water mark */ } BUFFER; ! #define buf_count(b) ((b)->b_count) ! #define buf_remain(b) ((b)->b_size-(b)->b_count) /* char buf_char (b, n) BUFFER *b; *************** *** 109,126 BUFFER *b; int n; { ! if (n >= 0) { ! if (n >= b->count) ! return ((char*)-1); ! return (b->buf[(b->start+n)%b->count]); ! } else { ! if (-n >= b->count) ! return (-1); ! if (b->next+n >= 0) ! return (b->buf[b->next+n]); ! else ! return (b->buf[b->next+n+b->count]); ! } } */ #define buf_char(b,n) \ --- 108,121 ----- BUFFER *b; int n; { ! if (n >= b->b_count || -n > b->b_count) ! return (-1); ! if (b->b_next+n >= b->b_count) ! return (b->b_buf[b->b_next+n-b->b_count]); ! else if (b->b_next+n < 0) ! return (b->b_buf[b->b_next+n+b->b_count]); ! else ! return (b->b_buf[b->b_next+n]); } */ #define buf_char(b,n) \ *************** *** 124,135 } */ #define buf_char(b,n) \ ! (((n)>=0) \ ! ?(((n)>=(b)->count) \ ! ? ((char)-1) \ ! : ((b)->buf[((b)->start+n)%(b)->count])) \ ! :((-(n) > (b)->count) \ ! ?((char)-1) \ ! :((((b)->next+n) >= 0) \ ! ? ((b)->buf[(b)->next+(n)]) \ ! : ((b)->buf[(b)->next+n+(b)->count])))) --- 119,128 ----- } */ #define buf_char(b,n) \ ! (((n) >= (b)->b_count || -(n) > (b)->b_count) \ ! ?((char)-1) \ ! :((((b)->b_next + (n)) >= (b)->b_count) \ ! ?((b)->b_buf[(b)->b_next + (n) - (b)->b_count]) \ ! :((((b)->b_next + (n)) < 0) \ ! ?((b)->b_buf[(b)->b_next + (n) + (b)->b_count]) \ ! :((b)->b_buf[(b)->b_next + (n)])))) *** /tmp/,RCSt1008683 Tue Aug 23 01:44:10 1988 --- fep_funcs.h Mon Aug 22 02:01:13 1988 *************** *** 2,8 #ifndef lint # define FEP_FUNCS \ ! "$Header: fep_funcs.h,v 4.0 88/08/05 20:21:53 utashiro Rel $ (SRA)" #endif lint /* --- 2,8 ----- #ifndef lint # define FEP_FUNCS \ ! "$Header: fep_funcs.h,v 4.2 88/08/16 18:24:03 utashiro Exp $ (SRA)" #endif lint /* *************** *** 91,96 int fep_else(); int fep_endif(); int fep_repaint(); #ifdef STAT int fep_showstat(); #endif --- 91,97 ----- int fep_else(); int fep_endif(); int fep_repaint(); + int view_buffer(); #ifdef STAT int fep_showstat(); #endif *** /tmp/,RCSt1008697 Tue Aug 23 01:44:17 1988 --- fep_main.c Mon Aug 22 02:01:15 1988 *************** *** 2,8 #ifndef lint static char rcsid[]= ! "$Header: fep_main.c,v 4.0 88/08/05 20:22:17 utashiro Rel $ (SRA)"; #endif lint #include <stdio.h> --- 2,8 ----- #ifndef lint static char rcsid[]= ! "$Header: fep_main.c,v 4.2 88/08/16 18:22:25 utashiro Exp $ (SRA)"; #endif lint #include <stdio.h> *************** *** 239,244 histlen = DFL_HISTLEN; } /* * Initialize output buffer. */ --- 239,247 ----- histlen = DFL_HISTLEN; } + init_hist (histlen); + init_edit_params (); + /* * Initialize output buffer. */ *************** *** 242,252 /* * Initialize output buffer. */ ! output_buffer->buf = (char *) malloc (5120); ! if (output_buffer->buf <= 0) { ! fprintf (stderr, "Can't allocate enough momory\n"); ! kill_process (); ! exit (1); } output_buffer->b_max = 5120; output_buffer->hiwater = 4096; --- 245,260 ----- /* * Initialize output buffer. */ ! if (!output_buffer->b_buf) { ! int size; ! ! if ((size = atoi (look_var ("buffer"))) <= 0) ! size = 5120; ! if (!set_buffer (output_buffer, size)) { ! fprintf (stderr, "Can't allocate enough momory\n"); ! kill_process (); ! exit (1); ! } } if (ptyflag) { *************** *** 248,256 kill_process (); exit (1); } - output_buffer->b_max = 5120; - output_buffer->hiwater = 4096; - output_buffer->count = output_buffer->next = output_buffer->start = 0; init_hist (histlen); init_edit_params (); --- 256,261 ----- exit (1); } } if (ptyflag) { child_pid = fork (); *************** *** 252,260 output_buffer->hiwater = 4096; output_buffer->count = output_buffer->next = output_buffer->start = 0; - init_hist (histlen); - init_edit_params (); - if (ptyflag) { child_pid = fork (); if (child_pid < 0) { --- 257,262 ----- } } if (ptyflag) { child_pid = fork (); if (child_pid < 0) { *************** *** 369,377 { char c; int n; - /* - char buf[INPUT_BUFFER_SIZE]; - */ int nfound, readfd, writefd = 0, execptfd = 0; #ifdef USE_TIMEOUT struct timeval **timeout = auto_tty_fix ? timeout_list : notimeout; --- 371,376 ----- { char c; int n; int nfound, readfd, writefd = 0, execptfd = 0; #ifdef USE_TIMEOUT struct timeval **timeout = auto_tty_fix ? timeout_list : notimeout; *************** *** 405,413 /* * Read from pty. */ - /* - nbyte = read (master, buf, INPUT_BUFFER_SIZE); - */ nbyte = buf_read (master, output_buffer); if (nbyte > 0) { --- 404,409 ----- /* * Read from pty. */ nbyte = buf_read (master, output_buffer); if (nbyte > 0) { *************** *** 414,423 /* * Write to stdout */ ! /* ! write (1, buf, nbyte); ! */ ! write (1, output_buffer->last_buf, nbyte); /* * Write to script file --- 410,416 ----- /* * Write to stdout */ ! write (1, output_buffer->b_lastbuf, nbyte); /* * Write to script file *************** *** 423,432 * Write to script file */ if (script_fp) ! /* ! fwrite (buf, sizeof(CHAR), nbyte, script_fp); ! */ ! fwrite (output_buffer->last_buf, sizeof(CHAR), nbyte, script_fp); #ifdef STAT --- 416,422 ----- * Write to script file */ if (script_fp) ! fwrite (output_buffer->b_lastbuf, sizeof(CHAR), nbyte, script_fp); #ifdef STAT *************** *** 493,498 goto RETRY; } int buf_read (fd, bp) int fd; /* file discriptor */ BUFFER *bp; /* buffer pointer */ --- 483,515 ----- goto RETRY; } + int set_buffer (bp, size) + BUFFER *bp; + int size; + { + char *newbuf, *malloc(), *realloc(); + + if (bp->b_buf) + newbuf = (char *) realloc (bp->b_buf, size); + else { + newbuf = (char *) malloc (size); + bp->b_count = bp->b_next = 0; + } + + if (newbuf == 0) + return (0); + + bp->b_buf = newbuf; + bp->b_max = size; + bp->b_hiwater = size * 4 / 5; + + if (bp->b_next > bp->b_hiwater) { + bp->b_count = bp->b_next; + bp->b_next = 0; + } + return (1); + } + int buf_read (fd, bp) int fd; /* file discriptor */ BUFFER *bp; /* buffer pointer */ *************** *** 502,508 /* * save previous next pointer */ ! bp->last_buf = bp->buf + bp->next; /* * read from fd as possible --- 519,525 ----- /* * save previous next pointer */ ! bp->b_lastbuf = bp->b_buf + bp->b_next; /* * read from fd as possible *************** *** 507,513 /* * read from fd as possible */ ! nbyte = read (fd, bp->buf + bp->next, bp->b_max - bp->next); /* * move next read pointer --- 524,530 ----- /* * read from fd as possible */ ! nbyte = read (fd, bp->b_buf + bp->b_next, bp->b_max - bp->b_next); /* * move next read pointer *************** *** 512,518 /* * move next read pointer */ ! bp->next += nbyte; /* * If count has not reached high-water mark, increment count --- 529,535 ----- /* * move next read pointer */ ! bp->b_next += nbyte; /* * If count has not reached high-water mark, increment count *************** *** 516,523 /* * If count has not reached high-water mark, increment count ! * by read count, otherwise start pointer should be pushed by ! * next pointer. */ if (bp->count < bp->hiwater) bp->count += nbyte; --- 533,539 ----- /* * If count has not reached high-water mark, increment count ! * by read count. */ if (bp->b_count < bp->b_hiwater) bp->b_count += nbyte; *************** *** 519,528 * by read count, otherwise start pointer should be pushed by * next pointer. */ ! if (bp->count < bp->hiwater) ! bp->count += nbyte; ! else ! bp->start += nbyte; /* * If next pointer goes further than high-water mark, discard contents --- 535,542 ----- * If count has not reached high-water mark, increment count * by read count. */ ! if (bp->b_count < bp->b_hiwater) ! bp->b_count += nbyte; /* * If next pointer goes further than high-water mark, discard contents *************** *** 526,532 /* * If next pointer goes further than high-water mark, discard contents ! * after next pointer, and move start and next pointer to buffer top. */ if (bp->next > bp->hiwater) { bp->count = bp->next; --- 540,546 ----- /* * If next pointer goes further than high-water mark, discard contents ! * after next pointer, and move next pointer to buffer top. */ if (bp->b_next > bp->b_hiwater) { bp->b_count = bp->b_next; *************** *** 528,537 * If next pointer goes further than high-water mark, discard contents * after next pointer, and move start and next pointer to buffer top. */ ! if (bp->next > bp->hiwater) { ! bp->count = bp->next; ! bp->start = 0; ! bp->next = 0; } return (nbyte); --- 542,550 ----- * If next pointer goes further than high-water mark, discard contents * after next pointer, and move next pointer to buffer top. */ ! if (bp->b_next > bp->b_hiwater) { ! bp->b_count = bp->b_next; ! bp->b_next = 0; } return (nbyte); *************** *** 548,555 while (nbyte > 0) { ! slen = min (bp->b_max - bp->next, nbyte); ! strncpy (bp->buf + bp->next, s, slen); s += slen; nbyte -= slen; bp->next += slen; --- 561,568 ----- while (nbyte > 0) { ! slen = min (bp->b_max - bp->b_next, nbyte); ! strncpy (bp->b_buf + bp->b_next, s, slen); s += slen; nbyte -= slen; bp->b_next += slen; *************** *** 552,558 strncpy (bp->buf + bp->next, s, slen); s += slen; nbyte -= slen; ! bp->next += slen; if (bp->count < bp->hiwater) bp->count += slen; --- 565,571 ----- strncpy (bp->b_buf + bp->b_next, s, slen); s += slen; nbyte -= slen; ! bp->b_next += slen; if (bp->b_count < bp->b_hiwater) bp->b_count += slen; *************** *** 554,563 nbyte -= slen; bp->next += slen; ! if (bp->count < bp->hiwater) ! bp->count += slen; ! else ! bp->start += slen; if (bp->next > bp->hiwater) { bp->count = bp->next; --- 567,574 ----- nbyte -= slen; bp->b_next += slen; ! if (bp->b_count < bp->b_hiwater) ! bp->b_count += slen; if (bp->b_next > bp->b_hiwater) { bp->b_count = bp->b_next; *************** *** 559,568 else bp->start += slen; ! if (bp->next > bp->hiwater) { ! bp->count = bp->next; ! bp->start = 0; ! bp->next = 0; } } } --- 570,578 ----- if (bp->b_count < bp->b_hiwater) bp->b_count += slen; ! if (bp->b_next > bp->b_hiwater) { ! bp->b_count = bp->b_next; ! bp->b_next = 0; } } } *************** *** 569,577 swallow_output() { - /* - char buf[INPUT_BUFFER_SIZE]; - */ int readfd = mastermask; int r; int nbyte; --- 579,584 ----- swallow_output() { int readfd = mastermask; int r; int nbyte; *************** *** 582,590 select (selectnfds, &readfd, 0, 0, TIMEOUT_NOBLOCK) > 0 && readfd & mastermask ) { - /* - nbyte = read (master, buf, INPUT_BUFFER_SIZE); - */ nbyte = buf_read (master, output_buffer); if (nbyte > 0) { /* --- 589,594 ----- select (selectnfds, &readfd, 0, 0, TIMEOUT_NOBLOCK) > 0 && readfd & mastermask ) { nbyte = buf_read (master, output_buffer); if (nbyte > 0) { write (1, output_buffer->b_lastbuf, nbyte); *************** *** 587,596 */ nbyte = buf_read (master, output_buffer); if (nbyte > 0) { ! /* ! write (1, buf, nbyte); ! */ ! write (1, output_buffer->last_buf, nbyte); #ifdef STAT stat_obyte += nbyte; stat_nselect++; --- 591,597 ----- ) { nbyte = buf_read (master, output_buffer); if (nbyte > 0) { ! write (1, output_buffer->b_lastbuf, nbyte); #ifdef STAT stat_obyte += nbyte; stat_nselect++; *************** *** 600,609 * Write to script file */ if (script_fp) ! /* ! fwrite (buf, sizeof(CHAR), nbyte, script_fp); ! */ ! fwrite (output_buffer->last_buf, sizeof(CHAR), nbyte, script_fp); } else if (nbyte < 0) { --- 601,607 ----- * Write to script file */ if (script_fp) ! fwrite (output_buffer->b_lastbuf, sizeof(CHAR), nbyte, script_fp); } else if (nbyte < 0) { *************** *** 898,903 } } } usageAndExit() { --- 896,902 ----- } } } + usageAndExit() { *** /tmp/,RCSt1008707 Tue Aug 23 01:44:24 1988 --- Makefile Mon Aug 22 02:01:07 1988 *************** *** 1,7 # # Copyright (c) 1987, 1988 by Software Research Associates, Inc. # ! # $Header: Makefile,v 4.0 88/08/05 20:24:19 utashiro Exp $ # # Options: # KANJI: SHIFT-JIS kanji code handling on ASCII KANJI UNIX --- 1,7 ----- # # Copyright (c) 1987, 1988 by Software Research Associates, Inc. # ! # $Header: Makefile,v 4.1 88/08/08 19:22:26 utashiro Exp $ # # Options: # KANJI: SHIFT-JIS kanji code handling on ASCII KANJI UNIX *************** *** 21,28 #KANJI = -DKANJI# Delete # for KANJI handling CONFIG = $(STAT) $(KANJI) ! DEBUG = -g ! #DEBUG = -O CFLAGS = $(DEBUG) $(CONFIG) LDFLAGS = -ltermlib --- 21,28 ----- #KANJI = -DKANJI# Delete # for KANJI handling CONFIG = $(STAT) $(KANJI) ! #DEBUG = -g ! DEBUG = -O CFLAGS = $(DEBUG) $(CONFIG) LDFLAGS = -ltermlib *** /tmp/,RCSt1008717 Tue Aug 23 01:44:29 1988 --- fep.1 Mon Aug 22 02:01:09 1988 *************** *** 1,5 .\" Copyright (c) 1987, 1988 by Software Research Associates, Inc. ! .\" $Header: fep.1,v 4.0 88/08/05 20:22:31 utashiro Rel $ .TH FEP 1L "5 Aug 1988" "SRA Distribution" .SH NAME fep \(em general purpose front end processor --- 1,5 ----- .\" Copyright (c) 1987, 1988 by Software Research Associates, Inc. ! .\" $Header: fep.1,v 4.2 88/08/16 18:22:50 utashiro Exp $ .TH FEP 1L "5 Aug 1988" "SRA Distribution" .SH NAME fep \(em general purpose front end processor *************** *** 51,56 ^X-^C terminate ^X-^D send-eof ^X-^L repaint ^X-( start-script ^X-) end-script esc-b backward-word --- 51,57 ----- ^X-^C terminate ^X-^D send-eof ^X-^L repaint + ^X-^V view-buffer ^X-( start-script ^X-) end-script esc-b backward-word *************** *** 99,104 ^R reprint ^^ toggle-transparency ^X-^B show-bindings ^X-^H show-history ^X-^L repaint ^X-^X expand-file-name --- 100,107 ----- ^R reprint ^^ toggle-transparency ^X-^B show-bindings + ^X-^C terminate + ^X-^D send-eof ^X-^H show-history ^X-^L repaint ^X-^X expand-file-name *************** *** 102,109 ^X-^H show-history ^X-^L repaint ^X-^X expand-file-name ! ^X-^C terminate ! ^X-^D send-eof ^X-l list-file-name ^X-L list-file-name ^X-? help --- 105,111 ----- ^X-^H show-history ^X-^L repaint ^X-^X expand-file-name ! ^X-^V view-buffer ^X-l list-file-name ^X-L list-file-name ^X-? help *************** *** 308,313 uses some variables. .RS 3n .ta 3i .IP "\fBeditmode\fP default: emacs" This variable defines the mode for command line editing. Key bindings will be set for the appropriate defaults --- 310,359 ----- uses some variables. .RS 3n .ta 3i + .\"@@@@@ + .IP "\fBalarm-on-eof\fP default: off" + If this variable is set + AND the function send-eof is not bound to the eof character + AND the variable ignore-eof is not set, + an alarm message will be displayed once + the first time eof is encountered on an empty line. + .\"@@@@@ + .IP "\fBauto-repaint\fP default: off" + If this variable is set, \fIfep\fP automatically repaints the screen + after restarting. + .\"@@@@@ + .IP "\fBauto-tty-fix\fP default: on" + If this variable is set, + .I fep + looks at the tty mode of the sub-command, + and if the tty mode has changed, + .I fep + fixes the tty mode of standard out and + sets the transparency flag according to the mode. + If this variable is not set, the automatic tty mode check is not done, + so you have to change the tty mode and transparency explicitly using the + \fItoggle-transparency\fP function. + .\"@@@@@ + .IP "\fBbuffer\fP default: 5120" + Specifies command output buffer size. + High-watermark used in buffer management mechanism + will be set 4/5 of this count. + .\"@@@@@ + .IP "\fBclear-repaint\fP default: off" + If this variable is set, \fIfep\fP clears the screen before repainting. + .\"@@@@@ + .IP "\fBcommand\fP default: \fIcommand-name\fR" + .I Fep + set this variable to the command name of the sub-process when it starts up. + .\"@@@@@ + .IP "\fBcrt\fP default: terminal size" + If set, more message is shown during printing the key bindings + on each number of line specified by this variable. + .\"@@@@@ + .IP "\fBdelimiters\fP default: SPACE & TAB" + The contents of this variable are treated as delimiting characters for + file name expantion and file name list. + .\"@@@@@ .IP "\fBeditmode\fP default: emacs" This variable defines the mode for command line editing. Key bindings will be set for the appropriate defaults *************** *** 319,324 and finally reads in the .I .feprc start-up file. .IP "\fBexpand-tilde\fP default: on" .I Fep expands "~" to the real home directory name by the expand-file-name function --- 365,371 ----- and finally reads in the .I .feprc start-up file. + .\"@@@@@ .IP "\fBexpand-tilde\fP default: on" .I Fep expands "~" to the real home directory name by the expand-file-name function *************** *** 323,340 .I Fep expands "~" to the real home directory name by the expand-file-name function when this variable is set. ! .IP "\fBignore-empty-line\fP default: on" ! If this variable is set, empty command lines are not saved in the history file. ! .IP "\fBignore-same-line\fP default: on" ! If this variable is set, ! command lines identical to the previous command line ! are not saved to the history file. ! .IP "\fBalarm-on-eof\fP default: off" ! If this variable is set ! AND the function send-eof is not bound to the eof character ! AND the variable ignore-eof is not set, ! an alarm message will be displayed once ! the first time eof is encountered on an empty line. .IP "\fBhistory\fR default: 100" .I Fep maintains a history file of the length specified by this variable. --- 370,376 ----- .I Fep expands "~" to the real home directory name by the expand-file-name function when this variable is set. ! .\"@@@@@ .IP "\fBhistory\fR default: 100" .I Fep maintains a history file of the length specified by this variable. *************** *** 338,352 .IP "\fBhistory\fR default: 100" .I Fep maintains a history file of the length specified by this variable. ! .IP "\fBsavehist\fR default: off" ! If ! .I savehist ! is set ! .I fep ! saves the number of history entries specified by ! value of this variable in the file named in the variable ! .I history-file ! on terminating. .IP "\fBhistory-file\fP default: .fephistory" Contains the name of the history file for reading from and writing to. If the file described by this variable exists, --- 374,380 ----- .IP "\fBhistory\fR default: 100" .I Fep maintains a history file of the length specified by this variable. ! .\"@@@@@ .IP "\fBhistory-file\fP default: .fephistory" Contains the name of the history file for reading from and writing to. If the file described by this variable exists, *************** *** 353,362 .I fep will read the file into the history buffer on start up and then save the current session's history when it exits. ! .IP "\fBshowhist\fR default: terminal size" ! This variable specifies the number of history lines to be displayed by the ! .I show-history ! function. .IP "\fBignore-eof\fP default: off" .I Fep never worries about the eof character if this variable is set. --- 381,390 ----- .I fep will read the file into the history buffer on start up and then save the current session's history when it exits. ! .\"@@@@@ ! .IP "\fBignore-empty-line\fP default: on" ! If this variable is set, empty command lines are not saved in the history file. ! .\"@@@@@ .IP "\fBignore-eof\fP default: off" .I Fep never worries about the eof character if this variable is set. *************** *** 360,365 .IP "\fBignore-eof\fP default: off" .I Fep never worries about the eof character if this variable is set. .IP "\fBnoalias\fP default: off" If set, command aliasing won't be done. .IP "\fBcrt\fP default: terminal size" --- 388,399 ----- .IP "\fBignore-eof\fP default: off" .I Fep never worries about the eof character if this variable is set. + .\"@@@@@ + .IP "\fBignore-same-line\fP default: on" + If this variable is set, + command lines identical to the previous command line + are not saved to the history file. + .\"@@@@@ .IP "\fBnoalias\fP default: off" If set, command aliasing won't be done. .\"@@@@@ *************** *** 362,405 never worries about the eof character if this variable is set. .IP "\fBnoalias\fP default: off" If set, command aliasing won't be done. ! .IP "\fBcrt\fP default: terminal size" ! If set, more message is shown during printing the key bindings ! on each number of line specified by this variable. ! .IP "\fBcommand\fP default: \fIcommand-name\fR" ! .I Fep ! set this variable to the command name of the sub-process when it starts up. ! .IP "\fBshell\fR default: /bin/sh" ! Describe the command name to be invoked by ! .IR invoke-shell . ! .IP "\fBauto-tty-fix\fP default: on" ! If this variable is set, ! .I fep ! looks at the tty mode of the sub-command, ! and if the tty mode has changed, ! .I fep ! fixes the tty mode of standard out and ! sets the transparency flag according to the mode. ! If this variable is not set, the automatic tty mode check is not done, ! so you have to change the tty mode and transparency explicitly using the ! \fItoggle-transparency\fP function. ! .IP "\fBtty-fix-bell\fP default: off" ! If this variable is set, ! .I fep ! rings the bell when the tty mode is changed. ! .IP "\fBscript-file\fP default: fepscript" ! This variable is used by the ! .I fep-start-script ! command and by the ! .I start-script ! function. ! .IP "\fBdelimiters\fP default: SPACE & TAB" ! The contents of this variable are treated as delimiting characters for ! file name expantion and file name list. ! .IP "\fBauto-repaint\fP default: off" ! If this variable is set, \fIfep\fP automatically repaints the screen ! after restarting. ! .IP "\fBclear-repaint\fP default: off" ! If this variable is set, \fIfep\fP clears the screen before repainting. .IP "\fBprompt\fP default: see below" .I Fep outputs a prompt after executing built-in functions. --- 396,402 ----- .\"@@@@@ .IP "\fBnoalias\fP default: off" If set, command aliasing won't be done. ! .\"@@@@@ .IP "\fBprompt\fP default: see below" .I Fep outputs a prompt after executing built-in functions. *************** *** 428,433 \h'\w'MMMMM'u'endif .fi .RE .RE .PP .B Start-Up File --- 425,462 ----- \h'\w'MMMMM'u'endif .fi .RE + .ta 3i + .\"@@@@@ + .IP "\fBsavehist\fR default: off" + If + .I savehist + is set + .I fep + saves the number of history entries specified by + value of this variable in the file named in the variable + .I history-file + on terminating. + .\"@@@@@ + .IP "\fBscript-file\fP default: fepscript" + This variable is used by the + .I fep-start-script + command and by the + .I start-script + function. + .\"@@@@@ + .IP "\fBshell\fR default: /bin/sh" + Describe the command name to be invoked by + .IR invoke-shell . + .\"@@@@@ + .IP "\fBshowhist\fR default: terminal size" + This variable specifies the number of history lines to be displayed by the + .I show-history + function. + .\"@@@@@ + .IP "\fBtty-fix-bell\fP default: off" + If this variable is set, + .I fep + rings the bell when the tty mode is changed. .RE .\" ------------------------------------------------------------ Startup file .PP *************** *** 429,434 .fi .RE .RE .PP .B Start-Up File .PP --- 458,464 ----- .I fep rings the bell when the tty mode is changed. .RE + .\" ------------------------------------------------------------ Startup file .PP .B Start-Up File .PP *************** *** 438,443 It looks for arguments on the command line first, and only then reads the ".feprc" file, so the file has higher priority. .PP .B "Functions" .PP --- 468,474 ----- It looks for arguments on the command line first, and only then reads the ".feprc" file, so the file has higher priority. + .\" ------------------------------------------------------------ Functions .PP .B "Functions" .PP *************** *** 499,504 vi-motion Vi cursor motion commands vi-new-line Vi new line vi-num Vi prefix number yank-from-kill-buffer Yank from kill buffer .fi .RE --- 530,536 ----- vi-motion Vi cursor motion commands vi-new-line Vi new line vi-num Vi prefix number + view-buffer View buffer yank-from-kill-buffer Yank from kill buffer .fi .RE