If I am opening a lot of files into an editor but with the intention
of not changing the contents (or more usually only amending a couple
of files), a la:
> mg *
I like to open them all read-only, then change the ones I want to edit
to read-write as required, that way I know when I close them all I
know that any changes are there because I wanted to make them. Instead
of thinking 'did I really want that change' when I'm asked to save a
file I didn't want to edit, but edited it accidentally.
This diff allows mg to open all command specified files read-only:
> mg -R *
ok?
Mark
Index: mg.1
===================================================================
RCS file: /cvs/src/usr.bin/mg/mg.1,v
retrieving revision 1.96
diff -u -p -r1.96 mg.1
--- mg.1 21 Dec 2015 09:04:52 -0000 1.96
+++ mg.1 23 Dec 2015 15:53:03 -0000
@@ -10,6 +10,7 @@
.Sh SYNOPSIS
.Nm mg
.Op Fl n
+.Op Fl R
.Op Fl f Ar mode
.Op + Ns Ar number
.Op Ar
@@ -40,6 +41,8 @@ arguments on the command line, including
scratch buffer and all files.
.It Fl n
Turn off backup file generation.
+.It Fl R
+Files specified on the command line will be opened read-only.
.El
.Sh WINDOWS AND BUFFERS
When a file is loaded into
Index: main.c
===================================================================
RCS file: /cvs/src/usr.bin/mg/main.c,v
retrieving revision 1.80
diff -u -p -r1.80 main.c
--- main.c 19 Nov 2015 19:30:44 -0000 1.80
+++ main.c 23 Dec 2015 15:53:03 -0000
@@ -53,14 +53,17 @@ main(int argc, char **argv)
char *cp, *init_fcn_name = NULL;
PF init_fcn = NULL;
int o, i, nfiles;
- int nobackups = 0;
+ int nobackups = 0, bro = 0;
struct buffer *bp = NULL;
if (pledge("stdio rpath wpath cpath fattr getpw tty proc exec", NULL)
== -1)
err(1, "pledge");
- while ((o = getopt(argc, argv, "nf:")) != -1)
+ while ((o = getopt(argc, argv, "Rnf:")) != -1)
switch (o) {
+ case 'R':
+ bro = 1;
+ break;
case 'n':
nobackups = 1;
break;
@@ -170,6 +173,8 @@ notnum:
init_fcn(FFOTHARG, 1);
nfiles++;
}
+ if (bro)
+ curbp->b_flag |= BFREADONLY;
}
}
}