Subject: bug#26796: 26.0.50; (2 characters) is usually wrong

From: Paul Eggert <[email-masked]>
Date: Sat, 6 May 2017 18:11:51 -0700

Appending " (NNNN characters)" to the "Wrote FOO" messages appears to be 
unpopular and at times confusing. At least it should be off by default, so I 
installed the attached. It'd be fine with me if we removed them entirely.
From 33c96bacd656cffeedf32038686c0ea99b7c411b Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email-masked]>
Date: Sat, 6 May 2017 18:00:23 -0700
Subject: [PATCH] New var write-region-verbose, default nil

By popular demand, write-region char counts are now off by default
(Bug#26796).
* src/fileio.c (write-region-verbose): New Lisp var.
(write_region): Output char count only if the var is non-nil.
* doc/emacs/files.texi (Misc File Ops), etc/NEWS: Document this.
---
 doc/emacs/files.texi |  7 ++++---
 etc/NEWS             |  6 +++---
 src/fileio.c         | 34 +++++++++++++++++++++++-----------
 3 files changed, 30 insertions(+), 17 deletions(-)

diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index bc977b7..d36fe65 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -1657,9 +1657,10 @@ Misc File Ops
 copies the contents of the region into the specified file.  @kbd{M-x
 append-to-file} adds the text of the region to the end of the
 specified file.  @xref{Accumulating Text}.  When called interactively,
-these commands will print a message in the echo area giving the name
-of the file affected as well as the number of characters which were
-added.  The variable @code{write-region-inhibit-fsync} applies to
+these commands print a message in the echo area giving the name
+of the file affected; if the variable @code{write-region-verbose} is
+non-nil the message also reports the number of characters written.
+The variable @code{write-region-inhibit-fsync} applies to
 these commands, as well as saving files; see @ref{Customize Save}.
 
 @findex set-file-modes
diff --git a/etc/NEWS b/etc/NEWS
index 2918c6e..1f1f4b4 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -94,9 +94,9 @@ required capabilities are found in terminfo.  See the FAQ node
 * Changes in Emacs 26.1
 
 +++
-** The functions write-region, append-to-file, and the like now output
-the number of characters added in addition to the name of the file
-affected.
+** The functions write-region, append-to-file, and the like now also
+output the number of characters added in addition to the name of the
+file affected, if the new variable 'write-region-verbose' is non-nil.
 
 ** The variable 'emacs-version' no longer includes the build number.
 This is now stored separately in a new variable, 'emacs-build-number'.
diff --git a/src/fileio.c b/src/fileio.c
index ad5ab61..6138bfc 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -5153,17 +5153,24 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename,
     {
       EMACS_INT nchars = (STRINGP (start) ? SCHARS (start)
 			  : XINT (end) - XINT (start));
-      AUTO_STRING (format, NUMBERP (append)
-                   ? (nchars != 1
-		      ? "Updated `%s' (%d characters)"
-		      : "Updated `%s' (%d character)")
-                   : ! NILP (append)
-		   ? (nchars != 1
-		      ? "Added to `%s' (%d characters)"
-		      : "Added to `%s' (%d character)")
-                   : (nchars != 1
-		      ? "Wrote `%s' (%d characters)"
-		      : "Wrote `%s' (%d character)"));
+      AUTO_STRING (format,
+		   (NUMBERP (append)
+		    ? (NILP (Vwrite_region_verbose)
+		       ? "Updated `%s'"
+		       : nchars == 1
+		       ? "Updated `%s' (1 character)"
+		       : "Updated `%s' (%d characters)")
+		    : ! NILP (append)
+		    ? (NILP (Vwrite_region_verbose)
+		       ? "Added to `%s'"
+		       : nchars == 1
+		       ? "Added to `%s' (1 character)"
+		       : "Added to `%s' (%d characters)")
+		    : (NILP (Vwrite_region_verbose)
+		       ? "Wrote `%s'"
+		       : nchars == 1
+		       ? "Wrote `%s' (1 character)"
+		       : "Wrote `%s' (%d characters)")));
       CALLN (Fmessage, format, visit_file, make_number (nchars));
     }
   return Qnil;
@@ -6135,6 +6142,11 @@ These are the annotations made by other annotation functions
 that were already called.  See also `write-region-annotate-functions'.  */);
   Vwrite_region_annotations_so_far = Qnil;
 
+  DEFVAR_LISP ("write-region-verbose",
+	       Vwrite_region_verbose,
+	       doc: /* If non-nil, be more verbose when writing a region.  */);
+  Vwrite_region_verbose = Qnil;
+
   DEFVAR_LISP ("inhibit-file-name-handlers", Vinhibit_file_name_handlers,
 	       doc: /* A list of file name handlers that temporarily should not be used.
 This applies only to the operation `inhibit-file-name-operation'.  */);
-- 
2.7.4