Subject: bug#35918: [PATCH] bookmark.el: Make bookmark-maybe-message obsolete

From: Stefan Kangas <[email-masked]>
Date: Thu, 30 May 2019 21:51:33 +0200

Basil L. Contovounesios <[email-masked]> writes:
> I agree with making it an obsolete function alias of message, but
> instead of replacing its calls with message, why not use a progress
> reporter?

Good idea.  Please see this updated patch.

Thanks,
Stefan Kangas
From a405b7252736b664f8865925913b2e8323a0a022 Mon Sep 17 00:00:00 2001
From: Stefan Kangas <[email-masked]>
Date: Sun, 26 May 2019 14:32:55 +0200
Subject: [PATCH] Make bookmark-maybe-message obsolete

* bookmark.el (bookmark-maybe-message): Redefine as obsolete function
alias for `message'.
(bookmark-write-file): Use a progress reporter.
(bookmark-load-file): Use a progress reporter.
---
 lisp/bookmark.el | 147 +++++++++++++++++++++++++++----------------------------
 1 file changed, 71 insertions(+), 76 deletions(-)

diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index b1fe690dac..1de5480733 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -745,16 +745,10 @@ bookmark-insert-file-format-version-stamp
 ;;; end file-format stuff
 
 
-;;; Generic helpers.
-
-(defun bookmark-maybe-message (fmt &rest args)
-  "Apply `message' to FMT and ARGS, but only if the display is fast enough."
-  (if (>= baud-rate 9600)
-      (apply 'message fmt args)))
-
-
 ;;; Core code:
 
+(define-obsolete-function-alias 'bookmark-maybe-message 'message "27.1")
+
 (defvar bookmark-minibuffer-read-name-map
   (let ((map (make-sparse-keymap)))
     (set-keymap-parent map minibuffer-local-map)
@@ -1429,47 +1423,46 @@ bookmark-save
 
 (defun bookmark-write-file (file)
   "Write `bookmark-alist' to FILE."
-  (bookmark-maybe-message "Saving bookmarks to file %s..." file)
-  (with-current-buffer (get-buffer-create " *Bookmarks*")
-    (goto-char (point-min))
-    (delete-region (point-min) (point-max))
-    (let ((coding-system-for-write
-           (or coding-system-for-write
-               bookmark-file-coding-system 'utf-8-emacs))
-          (print-length nil)
-          (print-level nil)
-          ;; See bug #12503 for why we bind `print-circle'.  Users
-          ;; can define their own bookmark types, which can result in
-          ;; arbitrary Lisp objects being stored in bookmark records,
-          ;; and some users create objects containing circularities.
-          (print-circle t))
-      (insert "(")
-      ;; Rather than a single call to `pp' we make one per bookmark.
-      ;; Apparently `pp' has a poor algorithmic complexity, so this
-      ;; scales a lot better.  bug#4485.
-      (dolist (i bookmark-alist) (pp i (current-buffer)))
-      (insert ")")
-      ;; Make sure the specified encoding can safely encode the
-      ;; bookmarks.  If it cannot, suggest utf-8-emacs as default.
-      (with-coding-priority '(utf-8-emacs)
-        (setq coding-system-for-write
-              (select-safe-coding-system (point-min) (point-max)
-                                         (list t coding-system-for-write))))
+  (let ((reporter (make-progress-reporter (format "Saving bookmarks to file %s..." file))))
+    (with-current-buffer (get-buffer-create " *Bookmarks*")
       (goto-char (point-min))
-      (bookmark-insert-file-format-version-stamp coding-system-for-write)
-      (let ((version-control
-             (cond
-              ((null bookmark-version-control) nil)
-              ((eq 'never bookmark-version-control) 'never)
-              ((eq 'nospecial bookmark-version-control) version-control)
-              (t t))))
-        (condition-case nil
-            (write-region (point-min) (point-max) file)
-          (file-error (message "Can't write %s" file)))
-        (setq bookmark-file-coding-system coding-system-for-write)
-        (kill-buffer (current-buffer))
-        (bookmark-maybe-message
-         "Saving bookmarks to file %s...done" file)))))
+      (delete-region (point-min) (point-max))
+      (let ((coding-system-for-write
+             (or coding-system-for-write
+                 bookmark-file-coding-system 'utf-8-emacs))
+            (print-length nil)
+            (print-level nil)
+            ;; See bug #12503 for why we bind `print-circle'.  Users
+            ;; can define their own bookmark types, which can result in
+            ;; arbitrary Lisp objects being stored in bookmark records,
+            ;; and some users create objects containing circularities.
+            (print-circle t))
+        (insert "(")
+        ;; Rather than a single call to `pp' we make one per bookmark.
+        ;; Apparently `pp' has a poor algorithmic complexity, so this
+        ;; scales a lot better.  bug#4485.
+        (dolist (i bookmark-alist) (pp i (current-buffer)))
+        (insert ")")
+        ;; Make sure the specified encoding can safely encode the
+        ;; bookmarks.  If it cannot, suggest utf-8-emacs as default.
+        (with-coding-priority '(utf-8-emacs)
+          (setq coding-system-for-write
+                (select-safe-coding-system (point-min) (point-max)
+                                           (list t coding-system-for-write))))
+        (goto-char (point-min))
+        (bookmark-insert-file-format-version-stamp coding-system-for-write)
+        (let ((version-control
+               (cond
+                ((null bookmark-version-control) nil)
+                ((eq 'never bookmark-version-control) 'never)
+                ((eq 'nospecial bookmark-version-control) version-control)
+                (t t))))
+          (condition-case nil
+              (write-region (point-min) (point-max) file)
+            (file-error (message "Can't write %s" file)))
+          (setq bookmark-file-coding-system coding-system-for-write)
+          (kill-buffer (current-buffer))
+          (progress-reporter-done reporter))))))

 (defun bookmark-import-new-list (new-list)
@@ -1526,34 +1519,36 @@ bookmark-load
   (setq file (abbreviate-file-name (expand-file-name file)))
   (if (not (file-readable-p file))
       (error "Cannot read bookmark file %s" file)
-    (if (null no-msg)
-        (bookmark-maybe-message "Loading bookmarks from %s..." file))
-    (with-current-buffer (let ((enable-local-variables nil))
-                           (find-file-noselect file))
-      (goto-char (point-min))
-      (bookmark-maybe-upgrade-file-format)
-      (let ((blist (bookmark-alist-from-buffer)))
-        (if (listp blist)
-            (progn
-              (if overwrite
-                  (progn
-                    (setq bookmark-alist blist)
-                    (setq bookmark-alist-modification-count 0))
-                ;; else
-                (bookmark-import-new-list blist)
-                (setq bookmark-alist-modification-count
-                      (1+ bookmark-alist-modification-count)))
-              (if (string-equal
-                   (abbreviate-file-name
-                    (expand-file-name bookmark-default-file))
-                   file)
-                  (setq bookmarks-already-loaded t))
-              (bookmark-bmenu-surreptitiously-rebuild-list)
-              (setq bookmark-file-coding-system buffer-file-coding-system))
-          (error "Invalid bookmark list in %s" file)))
-      (kill-buffer (current-buffer)))
-    (if (null no-msg)
-        (bookmark-maybe-message "Loading bookmarks from %s...done" file))))
+    (let ((reporter
+           (when (null no-msg)
+             (make-progress-reporter
+              (format "Loading bookmarks from %s..." file)))))
+      (with-current-buffer (let ((enable-local-variables nil))
+                             (find-file-noselect file))
+        (goto-char (point-min))
+        (bookmark-maybe-upgrade-file-format)
+        (let ((blist (bookmark-alist-from-buffer)))
+          (if (listp blist)
+              (progn
+                (if overwrite
+                    (progn
+                      (setq bookmark-alist blist)
+                      (setq bookmark-alist-modification-count 0))
+                  ;; else
+                  (bookmark-import-new-list blist)
+                  (setq bookmark-alist-modification-count
+                        (1+ bookmark-alist-modification-count)))
+                (if (string-equal
+                     (abbreviate-file-name
+                      (expand-file-name bookmark-default-file))
+                     file)
+                    (setq bookmarks-already-loaded t))
+                (bookmark-bmenu-surreptitiously-rebuild-list)
+                (setq bookmark-file-coding-system buffer-file-coding-system))
+            (error "Invalid bookmark list in %s" file)))
+        (kill-buffer (current-buffer)))
+      (when (null no-msg)
+        (progress-reporter-done reporter)))))

 
-- 
2.11.0