Allow all non-ephemeral buffers to be toggled write/read-only. This
toggle works while mg is running, unlike the -R option which is only
during mg startup.

ok?

Index: buffer.c
===================================================================
RCS file: /cvs/src/usr.bin/mg/buffer.c,v
retrieving revision 1.104
diff -u -p -u -p -r1.104 buffer.c
--- buffer.c    6 Aug 2017 04:39:45 -0000       1.104
+++ buffer.c    27 Nov 2018 19:52:41 -0000
@@ -31,6 +31,28 @@ extern int globalwd;

 /* ARGSUSED */
 int
+togglereadonlyall(int f, int n)
+{
+       struct buffer *bp = NULL;
+       int len = 0;
+
+       allbro = !allbro;
+       for (bp = bheadp; bp != NULL; bp = bp->b_bufp) {
+               len = strlen(bp->b_bname);
+               if (bp->b_bname[0] != '*' && bp->b_bname[len - 1] != '*') {
+                       if (allbro)
+                               bp->b_flag |= BFREADONLY;
+                       else
+                               bp->b_flag &= ~BFREADONLY;
+               }
+       }
+       curwp->w_rflag |= WFMODE;
+
+       return (TRUE);
+}
+
+/* ARGSUSED */
+int
 togglereadonly(int f, int n)
 {
        int s;
Index: def.h
===================================================================
RCS file: /cvs/src/usr.bin/mg/def.h,v
retrieving revision 1.156
diff -u -p -u -p -r1.156 def.h
--- def.h       29 Aug 2018 07:50:16 -0000      1.156
+++ def.h       27 Nov 2018 19:52:41 -0000
@@ -417,6 +417,7 @@ int          delwind(int, int);

 /* buffer.c */
 int             togglereadonly(int, int);
+int             togglereadonlyall(int, int);
 struct buffer   *bfind(const char *, int);
 int             poptobuffer(int, int);
 int             killbuffer(struct buffer *);
@@ -737,6 +738,7 @@ extern int           defb_flag;
 extern int              doaudiblebell;
 extern int              dovisiblebell;
 extern int              dblspace;
+extern int              allbro;
 extern char             cinfo[];
 extern char            *keystrings[];
 extern char             pat[NPAT];
Index: funmap.c
===================================================================
RCS file: /cvs/src/usr.bin/mg/funmap.c,v
retrieving revision 1.54
diff -u -p -u -p -r1.54 funmap.c
--- funmap.c    29 Aug 2018 07:50:16 -0000      1.54
+++ funmap.c    27 Nov 2018 19:52:41 -0000
@@ -201,6 +201,7 @@ static struct funmap functnames[] = {
        {usebuffer, "switch-to-buffer",},
        {poptobuffer, "switch-to-buffer-other-window",},
        {togglereadonly, "toggle-read-only" },
+       {togglereadonlyall, "toggle-read-only-all" },
        {twiddle, "transpose-chars",},
        {transposepara, "transpose-paragraphs",},
        {transposeword, "transpose-words",},
Index: main.c
===================================================================
RCS file: /cvs/src/usr.bin/mg/main.c,v
retrieving revision 1.84
diff -u -p -u -p -r1.84 main.c
--- main.c      16 Sep 2016 17:17:40 -0000      1.84
+++ main.c      27 Nov 2018 19:52:41 -0000
@@ -28,6 +28,7 @@ int            startrow;                      /* row to start 
        */
 int             doaudiblebell;                 /* audible bell toggle  */
 int             dovisiblebell;                 /* visible bell toggle  */
 int             dblspace;                      /* sentence end #spaces */
+int             allbro;                        /* all buffs read-only  */
 struct buffer  *curbp;                         /* current buffer       */
 struct buffer  *bheadp;                        /* BUFFER list head     */
 struct mgwin   *curwp;                         /* current window       */
@@ -65,6 +66,7 @@ main(int argc, char **argv)
                switch (o) {
                case 'R':
                        bro = 1;
+                       allbro = 1;
                        break;
                case 'n':
                        nobackups = 1;
Index: mg.1
===================================================================
RCS file: /cvs/src/usr.bin/mg/mg.1,v
retrieving revision 1.108
diff -u -p -u -p -r1.108 mg.1
--- mg.1        18 Nov 2018 07:57:28 -0000      1.108
+++ mg.1        27 Nov 2018 19:52:41 -0000
@@ -884,6 +884,10 @@ Prompt and switch to a new buffer in the
 Switch to buffer in another window.
 .It toggle-read-only
 Toggle the read-only flag on the current buffer.
+.It toggle-read-only-all
+Toggle the read-only flag on all non-ephemeral buffers.
+A simple toggle that switches a global read-only flag either on
+or off.
 .It transpose-chars
 Transpose the two characters in front of and under dot,
 then move forward one character.

Reply via email to