On Fri, Jun 30, 2017 at 09:19:31AM -0600, Anthony J. Bentley wrote: > Christian Weisgerber writes: > > On 2017-06-29, "Anthony J. Bentley" <anth...@anjbe.name> wrote: > > > > > The vi manual is long enough. It doesn't seem very helpful to keep stubs > > > that have been stubs for 20 years. > > > > Should we retain some documentation along the lines of "nex/nvi > > does not implement the following options from the original ex/vi: > > ..."? > > Here's a diff that updates the STANDARDS section in the manual. > I think it will be enough to talk about our POSIX compliance. POSIX > discusses its differences from historical ex/vi in great detail, > including an explicit recommendation to delete modelines and sourceany. >
man page changes read fine. i'm ok with this. jmc > Index: common/main.c > =================================================================== > RCS file: /cvs/src/usr.bin/vi/common/main.c,v > retrieving revision 1.39 > diff -u -p -r1.39 main.c > --- common/main.c 18 Apr 2017 01:45:35 -0000 1.39 > +++ common/main.c 30 Jun 2017 15:16:56 -0000 > @@ -52,7 +52,7 @@ editor(GS *gp, int argc, char *argv[]) > SCR *sp; > size_t len; > u_int flags; > - int ch, flagchk, lflag, secure, startup, readonly, rval, silent; > + int ch, flagchk, secure, startup, readonly, rval, silent; > char *tag_f, *wsizearg, path[256]; > > static const char *optstr[3] = { > @@ -114,7 +114,7 @@ editor(GS *gp, int argc, char *argv[]) > /* Parse the arguments. */ > flagchk = '\0'; > tag_f = wsizearg = NULL; > - lflag = secure = silent = 0; > + secure = silent = 0; > startup = 1; > > /* Set the file snapshot flag. */ > @@ -163,9 +163,6 @@ editor(GS *gp, int argc, char *argv[]) > case 'F': /* No snapshot. */ > F_CLR(gp, G_SNAPSHOT); > break; > - case 'l': /* Set lisp, showmatch options. */ > - lflag = 1; > - break; > case 'R': /* Readonly. */ > readonly = 1; > break; > @@ -260,11 +257,7 @@ editor(GS *gp, int argc, char *argv[]) > goto err; > > { int oargs[5], *oargp = oargs; > - if (lflag) { /* Command-line options. */ > - *oargp++ = O_LISP; > - *oargp++ = O_SHOWMATCH; > - } > - if (readonly) > + if (readonly) /* Command-line options. */ > *oargp++ = O_READONLY; > if (secure) > *oargp++ = O_SECURE; > Index: common/options.c > =================================================================== > RCS file: /cvs/src/usr.bin/vi/common/options.c,v > retrieving revision 1.24 > diff -u -p -r1.24 options.c > --- common/options.c 30 Jun 2017 14:42:05 -0000 1.24 > +++ common/options.c 30 Jun 2017 15:16:56 -0000 > @@ -89,12 +89,6 @@ OPTLIST const optlist[] = { > {"leftright", f_reformat, OPT_0BOOL, 0}, > /* O_LINES 4.4BSD */ > {"lines", f_lines, OPT_NUM, OPT_NOSAVE}, > -/* O_LISP 4BSD > - * XXX > - * When the lisp option is implemented, delete the OPT_NOSAVE flag, > - * so that :mkexrc dumps it. > - */ > - {"lisp", f_lisp, OPT_0BOOL, OPT_NOSAVE}, > /* O_LIST 4BSD */ > {"list", f_reformat, OPT_0BOOL, 0}, > /* O_LOCKFILES 4.4BSD > @@ -109,15 +103,6 @@ OPTLIST const optlist[] = { > {"matchtime", NULL, OPT_NUM, 0}, > /* O_MESG 4BSD */ > {"mesg", NULL, OPT_1BOOL, 0}, > -/* O_MODELINE 4BSD > - * !!! > - * This has been documented in historical systems as both "modeline" > - * and as "modelines". Regardless of the name, this option represents > - * a security problem of mammoth proportions, not to mention a stunning > - * example of what your intro CS professor referred to as the perils of > - * mixing code and data. Don't add it, or I will kill you. > - */ > - {"modeline", NULL, OPT_0BOOL, OPT_NOSET}, > /* O_NOPRINT 4.4BSD */ > {"noprint", f_print, OPT_STR, OPT_EARLYSET}, > /* O_NUMBER 4BSD */ > @@ -126,8 +111,6 @@ OPTLIST const optlist[] = { > {"octal", f_print, OPT_0BOOL, OPT_EARLYSET}, > /* O_OPEN 4BSD */ > {"open", NULL, OPT_1BOOL, 0}, > -/* O_OPTIMIZE 4BSD */ > - {"optimize", NULL, OPT_1BOOL, 0}, > /* O_PARAGRAPHS 4BSD */ > {"paragraphs", f_paragraph, OPT_STR, 0}, > /* O_PATH 4.4BSD */ > @@ -140,8 +123,6 @@ OPTLIST const optlist[] = { > {"readonly", f_readonly, OPT_0BOOL, OPT_ALWAYS}, > /* O_RECDIR 4.4BSD */ > {"recdir", NULL, OPT_STR, 0}, > -/* O_REDRAW 4BSD */ > - {"redraw", NULL, OPT_0BOOL, 0}, > /* O_REMAP 4BSD */ > {"remap", NULL, OPT_1BOOL, 0}, > /* O_REPORT 4BSD */ > @@ -168,17 +149,6 @@ OPTLIST const optlist[] = { > {"showmode", NULL, OPT_0BOOL, 0}, > /* O_SIDESCROLL 4.4BSD */ > {"sidescroll", NULL, OPT_NUM, OPT_NOZERO}, > -/* O_SLOWOPEN 4BSD */ > - {"slowopen", NULL, OPT_0BOOL, 0}, > -/* O_SOURCEANY 4BSD (undocumented) > - * !!! > - * Historic vi, on startup, source'd $HOME/.exrc and ./.exrc, if they > - * were owned by the user. The sourceany option was an undocumented > - * feature of historic vi which permitted the startup source'ing of > - * .exrc files the user didn't own. This is an obvious security problem, > - * and we ignore the option. > - */ > - {"sourceany", NULL, OPT_0BOOL, OPT_NOSET}, > /* O_TABSTOP 4BSD */ > {"tabstop", f_reformat, OPT_NUM, OPT_NOZERO}, > /* O_TAGLENGTH 4BSD */ > @@ -241,16 +211,12 @@ static OABBREV const abbrev[] = { > {"ht", O_HARDTABS}, /* 4BSD */ > {"ic", O_IGNORECASE}, /* 4BSD */ > {"li", O_LINES}, /* 4.4BSD */ > - {"modelines", O_MODELINE}, /* HPUX */ > {"nu", O_NUMBER}, /* 4BSD */ > - {"opt", O_OPTIMIZE}, /* 4BSD */ > {"para", O_PARAGRAPHS}, /* 4BSD */ > - {"re", O_REDRAW}, /* O'Reilly */ > {"ro", O_READONLY}, /* 4BSD (undocumented) */ > {"scr", O_SCROLL}, /* 4BSD (undocumented) */ > {"sect", O_SECTIONS}, /* O'Reilly */ > {"sh", O_SHELL}, /* 4BSD */ > - {"slow", O_SLOWOPEN}, /* 4BSD */ > {"sm", O_SHOWMATCH}, /* 4BSD */ > {"smd", O_SHOWMODE}, /* 4BSD */ > {"sw", O_SHIFTWIDTH}, /* 4BSD */ > @@ -508,14 +474,6 @@ opts_set(SCR *sp, ARGS *argv[], char *us > if (F_ISSET(op, OPT_NOUNSET) && turnoff) { > msgq_str(sp, M_ERR, name, > "set: the %s option may not be turned off"); > - rval = 1; > - break; > - } > - > - /* Some options may not be set. */ > - if (F_ISSET(op, OPT_NOSET) && !turnoff) { > - msgq_str(sp, M_ERR, name, > - "set: the %s option may never be turned on"); > rval = 1; > break; > } > Index: common/options.h > =================================================================== > RCS file: /cvs/src/usr.bin/vi/common/options.h,v > retrieving revision 1.8 > diff -u -p -r1.8 options.h > --- common/options.h 8 Jan 2006 21:05:39 -0000 1.8 > +++ common/options.h 30 Jun 2017 15:16:56 -0000 > @@ -88,7 +88,6 @@ struct _optlist { > #define OPT_ALWAYS 0x002 /* Always call the support > function. */ > #define OPT_NDISP 0x004 /* Never display the option. */ > #define OPT_NOSAVE 0x008 /* Mkexrc command doesn't save. > */ > -#define OPT_NOSET 0x010 /* Option may not be set. */ > #define OPT_NOUNSET 0x020 /* Option may not be unset. */ > #define OPT_NOZERO 0x040 /* Option may not be set to 0. > */ > #define OPT_EARLYSET 0x080 /* Func called after value is > set */ > Index: common/options_f.c > =================================================================== > RCS file: /cvs/src/usr.bin/vi/common/options_f.c,v > retrieving revision 1.11 > diff -u -p -r1.11 options_f.c > --- common/options_f.c 6 Jan 2016 22:28:52 -0000 1.11 > +++ common/options_f.c 30 Jun 2017 15:16:56 -0000 > @@ -121,16 +121,6 @@ f_lines(SCR *sp, OPTION *op, char *str, > } > > /* > - * PUBLIC: int f_lisp(SCR *, OPTION *, char *, u_long *); > - */ > -int > -f_lisp(SCR *sp, OPTION *op, char *str, u_long *valp) > -{ > - msgq(sp, M_ERR, "The lisp option is not implemented"); > - return (0); > -} > - > -/* > * PUBLIC: int f_paragraph(SCR *, OPTION *, char *, u_long *); > */ > int > Index: docs/USD.doc/vi.man/vi.1 > =================================================================== > RCS file: /cvs/src/usr.bin/vi/docs/USD.doc/vi.man/vi.1,v > retrieving revision 1.69 > diff -u -p -r1.69 vi.1 > --- docs/USD.doc/vi.man/vi.1 30 Jun 2017 14:42:05 -0000 1.69 > +++ docs/USD.doc/vi.man/vi.1 30 Jun 2017 15:16:56 -0000 > @@ -106,8 +106,6 @@ Start editing in ex mode, as if the comm > Don't copy the entire file when first starting to edit. > (The default is to make a copy in case someone else modifies > the file during your edit session.) > -.\" .It Fl l > -.\" Start editing with the lisp and showmatch options set. > .It Fl R > Start editing in read-only mode, as if the command name was > .Nm view , > @@ -2376,11 +2374,6 @@ Do left-right scrolling. > .Nm vi > only. > Set the number of lines in the screen. > -.It Cm lisp Bq off > -.Nm vi > -only. > -Modify various search commands and options to work with Lisp. > -This option is not yet implemented. > .It Cm list Bq off > Display lines in an unambiguous fashion. > .It Cm lock Bq on > @@ -2404,11 +2397,6 @@ pauses on the matching character when th > option is set. > .It Cm mesg Bq on > Permit messages from other users. > -.It Cm modelines , modeline Bq off > -Read the first and last few lines of each file for > -.Nm ex > -commands. > -This option will never be implemented. > .It Cm noprint Bq \&"\&" > Characters that are never handled as printable characters. > .It Cm number, nu Bq off > @@ -2424,11 +2412,6 @@ If this option is not set, the > and > .Cm visual > commands are disallowed. > -.It Cm optimize , opt Bq on > -.Nm vi > -only. > -Optimize text throughput to dumb terminals. > -This option is not yet implemented > .It Cm paragraphs , para Bq "IPLPPPQPP LIpplpipbpBlBdPpLpIt" > .Nm vi > only. > @@ -2449,11 +2432,6 @@ Display a command prompt. > Mark the file and session as read-only. > .It Cm recdir Bq /tmp/vi.recover > The directory where recovery files are stored. > -.It Cm redraw , re Bq off > -.Nm vi > -only. > -Simulate an intelligent terminal on a dumb one. > -This option is not yet implemented. > .It Cm remap Bq on > Remap keys until resolved. > .It Cm report Bq 5 > @@ -2509,12 +2487,6 @@ flag. > .Nm vi > only. > Set the amount a left-right scroll will shift. > -.It Cm slowopen , slow Bq off > -Delay display updating during text input. > -This option is not yet implemented. > -.It Cm sourceany Bq off > -Read startup files not owned by the current user. > -This option will never be implemented. > .It Cm tabstop , ts Bq 8 > This option sets tab widths for the editor display. > .It Cm taglength , tl Bq 0 > @@ -2766,9 +2738,40 @@ and >0 if an error occurs. > .Nm nex Ns / Ns Nm nvi > is close to > .St -p1003.1-2008 . > -That document differs from historical > -.Nm ex Ns / Ns Nm vi > -practice in several places; there are changes to be made on both sides. > +It deviates in the following respects: > +.Bl -bullet > +.It > +The > +.Ic s > +.Nm ex > +command may not be called as > +.Ic substitute . > +.It > +The > +.Ic directory , redraw > +and > +.Ic slowopen > +settings are not implemented. > +.It > +The > +.Ic paragraphs > +and > +.Ic sections > +settings default to values useful for editing > +.Xr mdoc 7 > +manuals. > +.It > +The > +.Ev TMPDIR > +environment variable is ignored. > +.It > +In insert mode, entering > +.Ic Aq control-H , > +.Ic Aq erase , > +or > +.Ic Aq kill > +following a backslash will not embed the control character in the text. > +.El > .Sh HISTORY > The > .Nm ex > Index: include/com_extern.h > =================================================================== > RCS file: /cvs/src/usr.bin/vi/include/com_extern.h,v > retrieving revision 1.14 > diff -u -p -r1.14 com_extern.h > --- include/com_extern.h 27 May 2016 09:18:12 -0000 1.14 > +++ include/com_extern.h 30 Jun 2017 15:16:56 -0000 > @@ -69,7 +69,6 @@ void opts_free(SCR *); > int f_altwerase(SCR *, OPTION *, char *, u_long *); > int f_columns(SCR *, OPTION *, char *, u_long *); > int f_lines(SCR *, OPTION *, char *, u_long *); > -int f_lisp(SCR *, OPTION *, char *, u_long *); > int f_paragraph(SCR *, OPTION *, char *, u_long *); > int f_print(SCR *, OPTION *, char *, u_long *); > int f_readonly(SCR *, OPTION *, char *, u_long *); > Index: include/options_def.h > =================================================================== > RCS file: /cvs/src/usr.bin/vi/include/options_def.h,v > retrieving revision 1.7 > diff -u -p -r1.7 options_def.h > --- include/options_def.h 1 Aug 2016 18:27:35 -0000 1.7 > +++ include/options_def.h 30 Jun 2017 15:16:56 -0000 > @@ -24,25 +24,21 @@ enum { > O_KEYTIME, > O_LEFTRIGHT, > O_LINES, > - O_LISP, > O_LIST, > O_LOCKFILES, > O_MAGIC, > O_MATCHTIME, > O_MESG, > - O_MODELINE, > O_NOPRINT, > O_NUMBER, > O_OCTAL, > O_OPEN, > - O_OPTIMIZE, > O_PARAGRAPHS, > O_PATH, > O_PRINT, > O_PROMPT, > O_READONLY, > O_RECDIR, > - O_REDRAW, > O_REMAP, > O_REPORT, > O_RULER, > @@ -56,8 +52,6 @@ enum { > O_SHOWMATCH, > O_SHOWMODE, > O_SIDESCROLL, > - O_SLOWOPEN, > - O_SOURCEANY, > O_TABSTOP, > O_TAGLENGTH, > O_TAGS, >