unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt'
@ 2021-03-20 22:22 Gabriel
  2021-03-21  6:07 ` Eli Zaretskii
  2021-03-21 15:53 ` Kévin Le Gouguec
  0 siblings, 2 replies; 11+ messages in thread
From: Gabriel @ 2021-03-20 22:22 UTC (permalink / raw)
  To: 47286

[-- Attachment #1: Type: text/plain, Size: 233 bytes --]

This patches replaces several occurences of the hardcoded minibuffer
default prompt "(default %s)" with a call to 'format-prompt'.  It also
removes the suffix ": ", when applicable, that is automatically handled
by 'format-prompt'.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Replace-minibuffer-default-prompt-default-s-with-for.patch --]
[-- Type: text/x-diff, Size: 35189 bytes --]

From 64b7aa2700c7281589a52317a898e7d401e52465 Mon Sep 17 00:00:00 2001
From: Gabriel do Nascimento Ribeiro <gabriel.nascimento@nubank.com.br>
Date: Fri, 19 Mar 2021 19:28:05 -0300
Subject: [PATCH] Replace minibuffer default prompt "(default %s)" with
 'format-prompt'

* lisp/cmuscheme.el (scheme-load-file, scheme-compile-file): Remove
prompt suffix ": ".

* lisp/comint.el (comint-get-source): Use 'format-prompt'.

* lisp/emulation/viper-cmd.el (viper-quote-region, viper-kill-buffer)
(viper-query-replace): Remove prompt suffix ": ".
(viper-read-string-with-history): Use 'format-prompt'.

* lisp/eshell/esh-mode.el (eshell-find-tag): Remove prompt suffix ": ".

* lisp/gnus/gnus-sum.el (gnus-articles-to-read)
(gnus-summary-search-article-forward)
(gnus-summary-search-article-backward): Use 'format-prompt'.

* lisp/international/mule-cmds.el (set-input-method, toggle-input-method)
(describe-input-method, set-language-environment)
(describe-language-environment): Use 'format-prompt'.

* lisp/mh-e/mh-gnus.el (mh-mml-minibuffer-read-disposition):
Use 'format-prompt'.

* lisp/mh-e/mh-letter.el (mh-insert-letter): Use 'format-prompt'.

* lisp/mh-e/mh-mime.el (mh-display-with-external-viewer)
(mh-mime-save-parts, mh-mh-forward-message)
(mh-mml-query-cryptographic-method, mh-minibuffer-read-type):
Use 'format-prompt'.

* lisp/mh-e/mh-seq.el (mh-read-seq, mh-read-range): Use 'format-prompt'.

* lisp/mh-e/mh-utils.el (mh-prompt-for-folder): Use 'format-prompt'.

* lisp/progmodes/cc-styles.el (c-read-offset): Use 'format-prompt'.

* lisp/progmodes/etags.el (find-tag-tag): Use 'format-prompt'.
(find-tag-noselect, find-tag, find-tag-other-window)
(find-tag-other-frame, find-tag-regexp): Remove prompt suffix ": ".

* lisp/progmodes/idlwave.el (idlwave-find-module): Use 'format-prompt'.

* lisp/progmodes/inf-lisp.el (lisp-load-file, lisp-compile-file):
Remove prompt suffix ": ".

* lisp/progmodes/project.el (project--completing-read-strict)
(project--completing-read-strict): Use 'format-prompt'.

* lisp/progmodes/tcl.el (tcl-load-file, tcl-restart-with-file):
Remove prompt suffix ": ".

* lisp/progmodes/verilog-mode.el (verilog-surelint-off)
(verilog-goto-defun): Use 'format-prompt'.

* lisp/progmodes/xref.el (xref--read-identifier): Use 'format-prompt'.
(xref-find-definitions, xref-find-definitions-other-window)
(xref-find-definitions-other-frame, xref-find-references):
Remove prompt suffix ": ".

* lisp/ses.el (ses-read-printer): Use 'format-prompt'.
(ses-read-cell-printer, ses-read-column-printer)
(ses-read-default-printer, ses-define-local-printer):
Remove prompt suffix ": ".

* lisp/subr.el (read-number): Use 'minibuffer-default-prompt-format'.

* lisp/term.el (term-get-source): Use 'format-prompt'.

* src/minibuf.c (read-buffer): Use 'format-prompt'.
---
 lisp/cmuscheme.el               |  4 ++--
 lisp/comint.el                  |  6 ++----
 lisp/emulation/viper-cmd.el     | 31 ++++++++++++-------------------
 lisp/eshell/esh-mode.el         |  2 +-
 lisp/gnus/gnus-sum.el           | 31 ++++++++++++++-----------------
 lisp/international/mule-cmds.el | 10 +++++-----
 lisp/mh-e/mh-gnus.el            |  2 +-
 lisp/mh-e/mh-letter.el          |  5 +----
 lisp/mh-e/mh-mime.el            | 20 +++++++-------------
 lisp/mh-e/mh-seq.el             | 16 +++++-----------
 lisp/mh-e/mh-utils.el           |  7 +++----
 lisp/progmodes/cc-styles.el     |  2 +-
 lisp/progmodes/etags.el         | 16 ++++++----------
 lisp/progmodes/idlwave.el       |  2 +-
 lisp/progmodes/inf-lisp.el      |  4 ++--
 lisp/progmodes/project.el       |  6 ++----
 lisp/progmodes/tcl.el           |  4 ++--
 lisp/progmodes/verilog-mode.el  |  9 +++++----
 lisp/progmodes/xref.el          | 15 +++++----------
 lisp/ses.el                     | 12 +++++-------
 lisp/subr.el                    |  4 ++--
 lisp/term.el                    |  6 ++----
 src/minibuf.c                   |  4 ++--
 23 files changed, 88 insertions(+), 130 deletions(-)

diff --git a/lisp/cmuscheme.el b/lisp/cmuscheme.el
index 772891d5d3..d43cdb15c0 100644
--- a/lisp/cmuscheme.el
+++ b/lisp/cmuscheme.el
@@ -421,7 +421,7 @@ scheme-prev-l/c-dir/file
 
 (defun scheme-load-file (file-name)
   "Load a Scheme file FILE-NAME into the inferior Scheme process."
-  (interactive (comint-get-source "Load Scheme file: " scheme-prev-l/c-dir/file
+  (interactive (comint-get-source "Load Scheme file" scheme-prev-l/c-dir/file
 				  scheme-source-modes t)) ; t because `load'
                                                           ; needs an exact name
   (comint-check-source file-name) ; Check to see if buffer needs saved.
@@ -433,7 +433,7 @@ scheme-load-file
 
 (defun scheme-compile-file (file-name)
   "Compile a Scheme file FILE-NAME in the inferior Scheme process."
-  (interactive (comint-get-source "Compile Scheme file: "
+  (interactive (comint-get-source "Compile Scheme file"
 				  scheme-prev-l/c-dir/file
 				  scheme-source-modes
 				  nil)) ; nil because COMPILE doesn't
diff --git a/lisp/comint.el b/lisp/comint.el
index 65072b0137..b04d404676 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -2946,7 +2946,7 @@ comint-get-source
 then the filename reader will only accept a file that exists.
 
 A typical use:
- (interactive (comint-get-source \"Compile file: \" prev-lisp-dir/file
+ (interactive (comint-get-source \"Compile file\" prev-lisp-dir/file
                                  \\='(lisp-mode) t))"
   (let* ((def (comint-source-default prev-dir/file source-modes))
 	 (stringfile (comint-extract-string))
@@ -2959,9 +2959,7 @@ comint-get-source
                     (car def)))
 	 (deffile (if sfile-p (file-name-nondirectory stringfile)
                     (cdr def)))
-	 (ans (read-file-name (if deffile (format "%s(default %s) "
-						  prompt    deffile)
-                                prompt)
+	 (ans (read-file-name (format-prompt prompt deffile)
 			      defdir
 			      (concat defdir deffile)
 			      mustmatch-p)))
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index 42d6c1eb19..728f790a96 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -1786,7 +1786,7 @@ viper-quote-region
 	(do-not-change-default t))
     (setq quote-str
 	  (viper-read-string-with-history
-	   "Quote string: "
+	   "Quote string"
 	   nil
 	   'viper-quote-region-history
            ;; FIXME: Use comment-region.
@@ -1995,24 +1995,17 @@ viper-read-string-with-history
 	    #'viper-minibuffer-standard-hook
 	    (if (or (not (listp old)) (eq (car old) 'lambda))
 		(list old) old))))
-	(val "")
-	(padding "")
-	temp-msg)
+	(val ""))
 
     (setq keymap (or keymap minibuffer-local-map)
 	  initial (or initial "")
-	  viper-initial initial
-	  temp-msg (if default
-		       (format "(default %s) " default)
-		     ""))
+	  viper-initial initial)
 
     (setq viper-incomplete-ex-cmd nil)
-    (setq val (read-from-minibuffer prompt
-				    (concat temp-msg initial val padding)
-				    keymap nil history-var))
-    (setq minibuffer-setup-hook nil
-	  padding (viper-array-to-string (this-command-keys))
-	  temp-msg "")
+    (setq val (read-from-minibuffer (format-prompt prompt default)
+				    nil
+				    keymap nil history-var default))
+    (setq minibuffer-setup-hook nil)
     ;; the following tries to be smart about what to put in history
     (if (not (string= val (car (symbol-value history-var))))
 	(push val (symbol-value history-var)))
@@ -3825,7 +3818,7 @@ viper-kill-buffer
   (let (buffer buffer-name)
     (setq buffer-name
 	  (funcall viper-read-buffer-function
-		   (format "Kill buffer (%s): "
+		   (format-prompt "Kill buffer"
 			   (buffer-name (current-buffer)))))
     (setq buffer
 	  (if (null buffer-name)
@@ -4171,8 +4164,8 @@ viper-query-replace
   (interactive)
   (let (str)
     (setq str (viper-read-string-with-history
-	       (if viper-re-query-replace "Query replace regexp: "
-		 "Query replace: ")
+	       (if viper-re-query-replace "Query replace regexp"
+		 "Query replace")
 	       nil  ; no initial
 	       'viper-replace1-history
 	       (car viper-replace1-history) ; default
@@ -4187,7 +4180,7 @@ viper-query-replace
 	  (query-replace-regexp
 	   str
 	   (viper-read-string-with-history
-	    (format-message "Query replace regexp `%s' with: " str)
+	    (format-message "Query replace regexp `%s' with" str)
 	    nil  ; no initial
 	    'viper-replace1-history
 	    (car viper-replace1-history) ; default
@@ -4195,7 +4188,7 @@ viper-query-replace
 	(query-replace
 	 str
 	 (viper-read-string-with-history
-	  (format-message "Query replace `%s' with: " str)
+	  (format-message "Query replace `%s' with" str)
 	  nil  ; no initial
 	  'viper-replace1-history
 	  (car viper-replace1-history) ; default
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index d29b010ea0..f9dbce9770 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -458,7 +458,7 @@ eshell-find-tag
   (let ((inhibit-read-only t)
 	(no-default (eobp))
 	(find-tag-default-function 'ignore))
-    (setq tagname (car (find-tag-interactive "Find tag: " no-default)))
+    (setq tagname (car (find-tag-interactive "Find tag" no-default)))
     (with-suppressed-warnings ((obsolete find-tag))
       (find-tag tagname next-p regexp-p))))
 
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 97da550353..c30f9a5f35 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -5977,14 +5977,15 @@ gnus-articles-to-read
 			 (input
 			  (read-string
 			   (if only-read-p
-			       (format
-				"How many articles from %s (available %d, default %d): "
-				(gnus-group-real-name gnus-newsgroup-name)
-				number default)
-			     (format
-			      "How many articles from %s (%d default): "
-			      (gnus-group-real-name gnus-newsgroup-name)
-			      default))
+			       (format-prompt
+				    "How many articles from %s (available %d)"
+				    default
+				    (gnus-group-real-name gnus-newsgroup-name)
+				    number)
+			     (format-prompt
+			      "How many articles from %s"
+			      default
+			      (gnus-group-real-name gnus-newsgroup-name)))
 			   nil
 			   nil
 			   (number-to-string default))))
@@ -9514,11 +9515,9 @@ gnus-summary-search-article-forward
   (interactive
    (list
     (read-string
-     (format "Search article %s (regexp%s): "
-	     (if current-prefix-arg "backward" "forward")
-	     (if gnus-last-search-regexp
-		 (concat ", default " gnus-last-search-regexp)
-	       "")))
+     (format-prompt "Search article %s (regexp)"
+                    gnus-last-search-regexp
+                    (if current-prefix-arg "backward" "forward")))
     current-prefix-arg)
    gnus-summary-mode)
   (if (string-equal regexp "")
@@ -9537,10 +9536,8 @@ gnus-summary-search-article-backward
   (interactive
    (list
     (read-string
-     (format "Search article backward (regexp%s): "
-	     (if gnus-last-search-regexp
-		 (concat ", default " gnus-last-search-regexp)
-	       ""))))
+     (format-prompt "Search article backward (regexp)"
+                    gnus-last-search-regexp)))
    gnus-summary-mode)
   (gnus-summary-search-article-forward regexp 'backward))
 
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index e4bdf50f52..743b638d06 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -1524,7 +1524,7 @@ set-input-method
   (interactive
    (let* ((default (or (car input-method-history) default-input-method)))
      (list (read-input-method-name
-	    (if default "Select input method (default %s): " "Select input method: ")
+	    (format-prompt "Select input method" default)
 	    default t)
 	   t)))
   (activate-input-method input-method)
@@ -1569,7 +1569,7 @@ toggle-input-method
        (if (or arg (not default))
 	   (progn
 	     (read-input-method-name
-	      (if default "Input method (default %s): " "Input method: " )
+	      (format-prompt "Input method" default)
 	      default t))
 	 default))
       (unless default-input-method
@@ -1620,7 +1620,7 @@ describe-input-method
   "Describe input method INPUT-METHOD."
   (interactive
    (list (read-input-method-name
-	  "Describe input method (default current choice): ")))
+          (format-prompt "Describe input method" current-input-method))))
   (if (and input-method (symbolp input-method))
       (setq input-method (symbol-name input-method)))
   (help-setup-xref (list #'describe-input-method
@@ -1929,7 +1929,7 @@ set-language-environment
 the new language environment, it runs `set-language-environment-hook'."
   (interactive (list (read-language-name
 		      nil
-		      "Set language environment (default English): ")))
+		      (format-prompt "Set language environment" "English"))))
   (if language-name
       (if (symbolp language-name)
 	  (setq language-name (symbol-name language-name)))
@@ -2144,7 +2144,7 @@ describe-language-environment
   (interactive
    (list (read-language-name
 	  'documentation
-	  "Describe language environment (default current choice): ")))
+	  (format-prompt "Describe language environment" current-language-environment))))
   (if (null language-name)
       (setq language-name current-language-environment))
   (if (or (null language-name)
diff --git a/lisp/mh-e/mh-gnus.el b/lisp/mh-e/mh-gnus.el
index 6a9851662a..7898d7eece 100644
--- a/lisp/mh-e/mh-gnus.el
+++ b/lisp/mh-e/mh-gnus.el
@@ -129,7 +129,7 @@ mh-mml-minibuffer-read-disposition
   (unless default
     (setq default (mml-content-disposition type filename)))
   (let ((disposition (completing-read
-		      (format "Disposition (default %s): " default)
+		      (format-prompt "Disposition" default)
 		      '(("attachment") ("inline") (""))
 		      nil t nil nil default)))
     (if (not (equal disposition ""))
diff --git a/lisp/mh-e/mh-letter.el b/lisp/mh-e/mh-letter.el
index f5ad73d800..107a0ae5e4 100644
--- a/lisp/mh-e/mh-letter.el
+++ b/lisp/mh-e/mh-letter.el
@@ -390,10 +390,7 @@ mh-insert-letter
                 (or mh-sent-from-msg (nth 0 (mh-translate-range folder "cur")))
               (nth 0 (mh-translate-range folder "cur"))))
           (message
-           (read-string (concat "Message number"
-                                (or (and default
-                                         (format " (default %d): " default))
-                                    ": "))
+           (read-string (format-prompt "Message number" default)
                         nil nil
                         (if (numberp default)
                             (int-to-string default)
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el
index 70df9e6b0f..df3c711e3d 100644
--- a/lisp/mh-e/mh-mime.el
+++ b/lisp/mh-e/mh-mime.el
@@ -259,9 +259,7 @@ mh-display-with-external-viewer
               (methods (mapcar (lambda (x) (list (cdr (assoc 'viewer x))))
                                (mailcap-mime-info type 'all)))
               (def (caar methods))
-              (prompt (format "Viewer%s: " (if def
-                                               (format " (default %s)" def)
-                                             "")))
+              (prompt (format-prompt "Viewer" def))
               (method (completing-read prompt methods nil nil nil nil def))
               (folder mh-show-folder-buffer)
               (buffer-read-only nil))
@@ -395,9 +393,9 @@ mh-mime-save-parts
           ((and (or prompt
                     (equal t mh-mime-save-parts-default-directory))
                 mh-mime-save-parts-directory)
-           (read-directory-name (format
-                            "Store in directory (default %s): "
-                            mh-mime-save-parts-directory)
+           (read-directory-name (format-prompt
+                                 "Store in directory"
+                                 mh-mime-save-parts-directory)
                            "" mh-mime-save-parts-directory t ""))
           ((stringp mh-mime-save-parts-default-directory)
            mh-mime-save-parts-default-directory)
@@ -1258,11 +1256,7 @@ mh-mh-forward-message
   (interactive (list
                 (mml-minibuffer-read-description)
                 (mh-prompt-for-folder "Message from" mh-sent-from-folder nil)
-                (read-string (concat "Messages"
-                                     (if (numberp mh-sent-from-msg)
-                                         (format " (default %d): "
-                                                 mh-sent-from-msg)
-                                       ": ")))))
+                (read-string (format-prompt "Messages" mh-sent-from-msg))))
   (beginning-of-line)
   (insert "#forw [")
   (and description
@@ -1596,7 +1590,7 @@ mh-mml-query-cryptographic-method
   (if current-prefix-arg
       (let ((def (or (car mh-mml-cryptographic-method-history)
                      mh-mml-method-default)))
-        (completing-read (format "Method (default %s): " def)
+        (completing-read (format-prompt "Method" def)
                          '(("pgp") ("pgpmime") ("smime"))
                          nil t nil 'mh-mml-cryptographic-method-history def))
     mh-mml-method-default))
@@ -1731,7 +1725,7 @@ mh-minibuffer-read-type
          (type (or (and (not (equal probed-type "application/octet-stream"))
                         probed-type)
                    (completing-read
-                    (format "Content type (default %s): " default)
+                    (format-prompt "Content type" default)
                     (mapcar #'list (mailcap-mime-types))))))
     (if (not (equal type ""))
         type
diff --git a/lisp/mh-e/mh-seq.el b/lisp/mh-e/mh-seq.el
index e8a03f6704..4a464a3f55 100644
--- a/lisp/mh-e/mh-seq.el
+++ b/lisp/mh-e/mh-seq.el
@@ -390,10 +390,7 @@ mh-read-seq
 the NOT-EMPTY flag is non-nil, and supply an optional DEFAULT
 sequence. A reply of `%' defaults to the first sequence
 containing the current message."
-  (let* ((input (completing-read (format "%s sequence%s: " prompt
-                                         (if default
-                                             (format " (default %s)" default)
-                                           ""))
+  (let* ((input (completing-read (format-prompt "%s sequence" default prompt)
                                  (mh-seq-names mh-seq-list)
                                  nil nil nil 'mh-sequence-history))
          (seq (cond ((equal input "%")
@@ -646,13 +643,10 @@ mh-read-range
                         ((stringp default) default)
                         ((symbolp default) (symbol-name default))))
          (prompt (cond ((and guess large default)
-                        (format "%s (folder has %s messages, default %s)"
-                                prompt (car counts) default))
-                       ((and guess large)
-                        (format "%s (folder has %s messages)"
-                                prompt (car counts)))
+                        (format-prompt "%s (folder has %s messages)"
+                                default prompt (car counts)))
                        (default
-                         (format "%s (default %s)" prompt default))))
+                         (format-prompt prompt default))))
          (minibuffer-local-completion-map mh-range-completion-map)
          (seq-list (if (eq folder mh-current-folder)
                        mh-seq-list
@@ -662,7 +656,7 @@ mh-read-range
                   (mh-seq-names seq-list)))
          (input (cond ((and (not ask-flag) unseen) (symbol-name mh-unseen-seq))
                       ((and (not ask-flag) (not large)) "all")
-                      (t (completing-read (format "%s: " prompt)
+                      (t (completing-read prompt
                                           'mh-range-completion-function nil nil
                                           nil 'mh-range-history default))))
          msg-list)
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index d7c607df5c..8cb68f5cf1 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -758,10 +758,9 @@ mh-prompt-for-folder
 used in searching."
   (if (null default)
       (setq default ""))
-  (let* ((default-string (cond (default-string (format " (default %s)" default-string))
-                               ((equal "" default) "")
-                               (t (format " (default %s)" default))))
-         (prompt (format "%s folder%s: " prompt default-string))
+  (let* ((default-string (or default-string
+                             (if (equal default "") nil default)))
+         (prompt (format-prompt "%s folder" default-string prompt))
          (mh-current-folder-name mh-current-folder)
          read-name folder-name)
     (while (and (setq read-name (mh-folder-completing-read
diff --git a/lisp/progmodes/cc-styles.el b/lisp/progmodes/cc-styles.el
index aec259f1b3..7d02e1d702 100644
--- a/lisp/progmodes/cc-styles.el
+++ b/lisp/progmodes/cc-styles.el
@@ -442,7 +442,7 @@ c-read-offset
 	 (errmsg  (concat "Offset must be int, func, var, vector, list, "
 			  "or [+,-,++,--,*,/] "
 			  defstr))
-	 (prompt (concat symname " offset " defstr))
+	 (prompt (format-prompt "%s offset" oldoff symname))
 	 (keymap (make-sparse-keymap))
 	 (minibuffer-completion-table obarray)
 	 (minibuffer-completion-predicate 'fboundp)
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 023c90cca5..13717b1b89 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -836,11 +836,7 @@ find-tag-tag
   "Read a tag name, with defaulting and completion."
   (let* ((completion-ignore-case (find-tag--completion-ignore-case))
 	 (default (find-tag--default))
-	 (spec (completing-read (if default
-				    (format "%s (default %s): "
-					    (substring string 0 (string-match "[ :]+\\'" string))
-					    default)
-				  string)
+	 (spec (completing-read (format-prompt string default)
 				(tags-lazy-completion-table)
 				nil nil nil nil default)))
     (if (equal spec "")
@@ -899,7 +895,7 @@ find-tag-noselect
 Contrast this with the ring of marks gone to by the command.
 
 See documentation of variable `tags-file-name'."
-  (interactive (find-tag-interactive "Find tag: "))
+  (interactive (find-tag-interactive "Find tag"))
 
   (setq find-tag-history (cons tagname find-tag-history))
   ;; Save the current buffer's value of `find-tag-hook' before
@@ -971,7 +967,7 @@ find-tag
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-definitions "25.1"))
-  (interactive (find-tag-interactive "Find tag: "))
+  (interactive (find-tag-interactive "Find tag"))
   (let* ((buf (find-tag-noselect tagname next-p regexp-p))
 	 (pos (with-current-buffer buf (point))))
     (condition-case nil
@@ -1000,7 +996,7 @@ find-tag-other-window
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-definitions-other-window "25.1"))
-  (interactive (find-tag-interactive "Find tag other window: "))
+  (interactive (find-tag-interactive "Find tag other window"))
 
   ;; This hair is to deal with the case where the tag is found in the
   ;; selected window's buffer; without the hair, point is moved in both
@@ -1041,7 +1037,7 @@ find-tag-other-frame
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-definitions-other-frame "25.1"))
-  (interactive (find-tag-interactive "Find tag other frame: "))
+  (interactive (find-tag-interactive "Find tag other frame"))
   (let ((pop-up-frames t))
     (with-suppressed-warnings ((obsolete find-tag-other-window))
       (find-tag-other-window tagname next-p))))
@@ -1065,7 +1061,7 @@ find-tag-regexp
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-apropos "25.1"))
-  (interactive (find-tag-interactive "Find tag regexp: " t))
+  (interactive (find-tag-interactive "Find tag regexp" t))
   ;; We go through find-tag-other-window to do all the display hair there.
   (funcall (if other-window 'find-tag-other-window 'find-tag)
 	   regexp next-p t))
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index e8e55ae96d..b72d9da748 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -7820,7 +7820,7 @@ idlwave-find-module
 	 (name (idlwave-completing-read
 		(if (or (not this-buffer)
 			(assoc default list))
-		    (format "Module (Default %s): " default)
+		    (format-prompt "Module" default)
 		  (format "Module in this file: "))
 		list))
 	 type class)
diff --git a/lisp/progmodes/inf-lisp.el b/lisp/progmodes/inf-lisp.el
index 146ed4dca4..af6ccce3d6 100644
--- a/lisp/progmodes/inf-lisp.el
+++ b/lisp/progmodes/inf-lisp.el
@@ -487,7 +487,7 @@ lisp-source-modes
 
 (defun lisp-load-file (file-name)
   "Load a Lisp file into the inferior Lisp process."
-  (interactive (comint-get-source "Load Lisp file: " lisp-prev-l/c-dir/file
+  (interactive (comint-get-source "Load Lisp file" lisp-prev-l/c-dir/file
 				  lisp-source-modes nil)) ; nil because LOAD
 					; doesn't need an exact name
   (comint-check-source file-name) ; Check to see if buffer needs saved.
@@ -500,7 +500,7 @@ lisp-load-file
 
 (defun lisp-compile-file (file-name)
   "Compile a Lisp file in the inferior Lisp process."
-  (interactive (comint-get-source "Compile Lisp file: " lisp-prev-l/c-dir/file
+  (interactive (comint-get-source "Compile Lisp file" lisp-prev-l/c-dir/file
 				  lisp-source-modes nil)) ; nil = don't need
 					; suffix .lisp
   (comint-check-source file-name) ; Check to see if buffer needs saved.
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index bd552c917a..98a56bb6a4 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -869,9 +869,7 @@ project--completing-read-strict
   ;; removing it when it has no matches.  Neither seems natural
   ;; enough.  Removal is confusing; early expansion makes the prompt
   ;; too long.
-  (let* ((new-prompt (if (and default (not (string-equal default "")))
-                         (format "%s (default %s): " prompt default)
-                       (format "%s: " prompt)))
+  (let* ((new-prompt (format-prompt prompt default))
          (res (completing-read new-prompt
                                collection predicate t
                                nil ;; initial-input
@@ -879,7 +877,7 @@ project--completing-read-strict
     (when (and (equal res default)
                (not (test-completion res collection predicate)))
       (setq res
-            (completing-read (format "%s: " prompt)
+            (completing-read (format-prompt prompt nil)
                              collection predicate t res hist nil)))
     res))
 
diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el
index 82e1343e05..f6a50bf1a8 100644
--- a/lisp/progmodes/tcl.el
+++ b/lisp/progmodes/tcl.el
@@ -1413,7 +1413,7 @@ tcl-load-file
    (list
     ;; car because comint-get-source returns a list holding the
     ;; filename.
-    (car (comint-get-source "Load Tcl file: "
+    (car (comint-get-source "Load Tcl file"
 			    (or (and
 				 (derived-mode-p 'tcl-mode)
 				 (buffer-file-name))
@@ -1433,7 +1433,7 @@ tcl-restart-with-file
 Prefix argument means switch to the Tcl buffer afterwards."
   (interactive
    (list
-    (car (comint-get-source "Restart with Tcl file: "
+    (car (comint-get-source "Restart with Tcl file"
 			    (or (and
 				 (derived-mode-p 'tcl-mode)
 				 (buffer-file-name))
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 55c04e1332..14a9dff869 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -5466,8 +5466,9 @@ verilog-surelint-off
                     (let* ((pop-up-windows t))
                       (let ((name (expand-file-name
                                    (read-file-name
-                                    (format "Find this error in: (default %s) "
-                                            file)
+                                    (format-prompt
+                                     "Find this error in"
+                                     file)
                                     dir file t))))
                         (if (file-directory-p name)
                             (setq name (expand-file-name filename name)))
@@ -7863,8 +7864,8 @@ verilog-goto-defun
 	 (verilog-buffer-to-use (current-buffer))
 	 (label (if (not (string= default ""))
 		    ;; Do completion with default
-		    (completing-read (concat "Goto-Label: (default "
-					     default ") ")
+		    (completing-read (format-prompt "Goto-Label"
+					            default)
 				     'verilog-comp-defun nil nil "")
 		  ;; There is no default value. Complete without it
 		  (completing-read "Goto-Label: "
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index ea52befec5..3cb4247b4b 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -1192,12 +1192,7 @@ xref--read-identifier
                (xref--prompt-p this-command))
            (let ((id
                   (completing-read
-                   (if def
-                       (format "%s (default %s): "
-                               (substring prompt 0 (string-match
-                                                    "[ :]+\\'" prompt))
-                               def)
-                     prompt)
+                   (format-prompt prompt def)
                    (xref-backend-identifier-completion-table backend)
                    nil nil nil
                    'xref--read-identifier-history def)))
@@ -1257,19 +1252,19 @@ xref-find-definitions
 definition for IDENTIFIER, display it in the selected window.
 Otherwise, display the list of the possible definitions in a
 buffer where the user can select from the list."
-  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (interactive (list (xref--read-identifier "Find definitions of")))
   (xref--find-definitions identifier nil))
 
 ;;;###autoload
 (defun xref-find-definitions-other-window (identifier)
   "Like `xref-find-definitions' but switch to the other window."
-  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (interactive (list (xref--read-identifier "Find definitions of")))
   (xref--find-definitions identifier 'window))
 
 ;;;###autoload
 (defun xref-find-definitions-other-frame (identifier)
   "Like `xref-find-definitions' but switch to the other frame."
-  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (interactive (list (xref--read-identifier "Find definitions of")))
   (xref--find-definitions identifier 'frame))
 
 ;;;###autoload
@@ -1280,7 +1275,7 @@ xref-find-references
 With prefix argument, or if `xref-prompt-for-identifier' is t,
 always prompt for the identifier.  If `xref-prompt-for-identifier'
 is nil, prompt only if there's no usable symbol at point."
-  (interactive (list (xref--read-identifier "Find references of: ")))
+  (interactive (list (xref--read-identifier "Find references of")))
   (xref--find-xrefs identifier 'references identifier nil))
 
 ;;;###autoload
diff --git a/lisp/ses.el b/lisp/ses.el
index a11c754abc..6058d48ed1 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -2653,9 +2653,7 @@ ses-read-printer
   (barf-if-buffer-read-only)
   (if (eq default t)
       (setq default "")
-    (setq prompt (format "%s (default %S): "
-			 (substring prompt 0 -2)
-			 default)))
+    (setq prompt (format-prompt prompt default)))
   (dolist (key ses-completion-keys)
     (define-key ses-mode-edit-map key 'ses-read-printer-complete-symbol))
   ;; make it globally visible, so that it can be visible from the minibuffer.
@@ -2702,7 +2700,7 @@ ses-read-cell-printer
                ;;Range contains differing printer functions
                (setq default t)
                (throw 'ses-read-cell-printer t))))))
-     (list (ses-read-printer (format "Cell %S printer: " ses--curcell)
+     (list (ses-read-printer (format "Cell %S printer" ses--curcell)
 			     default))))
   (unless (eq newval t)
     (ses-begin-change)
@@ -2716,7 +2714,7 @@ ses-read-column-printer
   (interactive
    (let ((col (cdr (ses-sym-rowcol ses--curcell))))
      (ses-check-curcell)
-     (list col (ses-read-printer (format "Column %s printer: "
+     (list col (ses-read-printer (format "Column %s printer"
 					 (ses-column-letter col))
 				 (ses-col-printer col)))))
 
@@ -2731,7 +2729,7 @@ ses-read-default-printer
   "Set the default printer function for cells that have no other.
 See `ses-read-cell-printer' for input forms."
   (interactive
-   (list (ses-read-printer "Default printer: " ses--default-printer)))
+   (list (ses-read-printer "Default printer" ses--default-printer)))
   (unless (eq newval t)
     (ses-begin-change)
     (ses-set-parameter 'ses--default-printer newval)
@@ -3773,7 +3771,7 @@ ses-define-local-printer
      (setq name (intern name))
      (let* ((cur-printer (gethash name ses--local-printer-hashmap))
             (default (and cur-printer (ses--locprn-def cur-printer))))
-            (setq def (ses-read-printer (format "Enter definition of printer %S: " name)
+            (setq def (ses-read-printer (format "Enter definition of printer %S" name)
                                         default)))
             (list name def)))
 
diff --git a/lisp/subr.el b/lisp/subr.el
index ef0e5e6f78..a2c1280fc1 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2806,9 +2806,9 @@ read-number
     (when default1
       (setq prompt
 	    (if (string-match "\\(\\):[ \t]*\\'" prompt)
-		(replace-match (format " (default %s)" default1) t t prompt 1)
+		(replace-match (format minibuffer-default-prompt-format default1) t t prompt 1)
 	      (replace-regexp-in-string "[ \t]*\\'"
-					(format " (default %s) " default1)
+					(format minibuffer-default-prompt-format default1)
 					prompt t t))))
     (while
 	(progn
diff --git a/lisp/term.el b/lisp/term.el
index 6beb17fb66..d41895ad3d 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -2535,7 +2535,7 @@ term-check-source
 ;; then the filename reader will only accept a file that exists.
 ;;
 ;; A typical use:
-;; (interactive (term-get-source "Compile file: " prev-lisp-dir/file
+;; (interactive (term-get-source "Compile file" prev-lisp-dir/file
 ;;                                 '(lisp-mode) t))
 
 ;; This is pretty stupid about strings.  It decides we're in a string
@@ -2566,9 +2566,7 @@ term-get-source
                       (car def)))
 	 (deffile (if sfile-p (file-name-nondirectory stringfile)
                       (cdr def)))
-	 (ans (read-file-name (if deffile (format "%s(default %s) "
-						  prompt    deffile)
-				  prompt)
+	 (ans (read-file-name (format-prompt prompt deffile)
 			      defdir
 			      (concat defdir deffile)
 			      mustmatch-p)))
diff --git a/src/minibuf.c b/src/minibuf.c
index 4b1f4b1ff7..1c5ce52404 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -1417,8 +1417,8 @@ DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 4, 0,
 					      STRING_MULTIBYTE (prompt));
 	    }
 
-	  AUTO_STRING (format, "%s (default %s): ");
-	  prompt = CALLN (Fformat, format, prompt,
+	  prompt = CALLN (Ffuncall, intern("format-prompt"),
+			  prompt,
 			  CONSP (def) ? XCAR (def) : def);
 	}
 
-- 
2.27.0


[-- Attachment #3: Type: text/plain, Size: 189 bytes --]


Thread on emacs-devel:
https://lists.gnu.org/archive/html/emacs-devel/2021-03/msg00817.html

Let me know if something is missing, wrong or can be improved in this
patch.

Regards,
Gabriel

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt'
  2021-03-20 22:22 bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt' Gabriel
@ 2021-03-21  6:07 ` Eli Zaretskii
  2021-03-21 18:22   ` Gabriel
  2021-03-21 15:53 ` Kévin Le Gouguec
  1 sibling, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2021-03-21  6:07 UTC (permalink / raw)
  To: Gabriel; +Cc: 47286

> From: Gabriel <gabriel376@hotmail.com>
> Date: Sat, 20 Mar 2021 19:22:52 -0300
> 
> This patches replaces several occurences of the hardcoded minibuffer
> default prompt "(default %s)" with a call to 'format-prompt'.  It also
> removes the suffix ": ", when applicable, that is automatically handled
> by 'format-prompt'.

Thanks.  A minor nit about formatting the commit log messages in such
cases, where the same change is made in many places.

> * lisp/cmuscheme.el (scheme-load-file, scheme-compile-file): Remove
> prompt suffix ": ".
> 
> * lisp/comint.el (comint-get-source): Use 'format-prompt'.
> 
> * lisp/emulation/viper-cmd.el (viper-quote-region, viper-kill-buffer)
> (viper-query-replace): Remove prompt suffix ": ".
> (viper-read-string-with-history): Use 'format-prompt'.
> 
> * lisp/eshell/esh-mode.el (eshell-find-tag): Remove prompt suffix ": ".
> 
> * lisp/gnus/gnus-sum.el (gnus-articles-to-read)
> (gnus-summary-search-article-forward)
> (gnus-summary-search-article-backward): Use 'format-prompt'.

Instead of having a long series of basically identical text, it is
better to format this as follows:

* lisp/cmuscheme.el (scheme-load-file, scheme-compile-file):
* lisp/comint.el (comint-get-source):
* lisp/emulation/viper-cmd.el (viper-quote-region, viper-kill-buffer)
(viper-query-replace, viper-read-string-with-history):
* lisp/eshell/esh-mode.el (eshell-find-tag):
* lisp/gnus/gnus-sum.el (gnus-articles-to-read)
(gnus-summary-search-article-forward)
(gnus-summary-search-article-backward):
* lisp/international/mule-cmds.el (set-input-method, toggle-input-method)
(describe-input-method, set-language-environment)
(describe-language-environment):
* lisp/mh-e/mh-gnus.el (mh-mml-minibuffer-read-disposition)
(mh-insert-letter)
* lisp/mh-e/mh-mime.el (mh-display-with-external-viewer)
(mh-mime-save-parts, mh-mh-forward-message)
(mh-mml-query-cryptographic-method): Remove prompt suffix and
use 'format-prompt'.

That is, have the list of files and functions, and put the description
of the change only in the last one.  IME, this makes the long list
easier to read and understand.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt'
  2021-03-20 22:22 bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt' Gabriel
  2021-03-21  6:07 ` Eli Zaretskii
@ 2021-03-21 15:53 ` Kévin Le Gouguec
  2021-03-21 18:31   ` Gabriel
  1 sibling, 1 reply; 11+ messages in thread
From: Kévin Le Gouguec @ 2021-03-21 15:53 UTC (permalink / raw)
  To: Gabriel; +Cc: 47286

Gabriel <gabriel376@hotmail.com> writes:

> * lisp/progmodes/project.el (project--completing-read-strict)
> (project--completing-read-strict): Use 'format-prompt'.

Mmm, project.el is released on ELPA as a :core package; IIUC it strives
for backward-compatibility as far back as Emacs 26.1
(cf. Package-Requires field at the top of the file), so maybe it's a bit
early to use format-prompt there?

Apologies if I'm misunderstanding something.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt'
  2021-03-21  6:07 ` Eli Zaretskii
@ 2021-03-21 18:22   ` Gabriel
  0 siblings, 0 replies; 11+ messages in thread
From: Gabriel @ 2021-03-21 18:22 UTC (permalink / raw)
  To: 47286

[-- Attachment #1: Type: text/plain, Size: 377 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:
>
> That is, have the list of files and functions, and put the description
> of the change only in the last one.  IME, this makes the long list
> easier to read and understand.

Hi Eli, thank you for your suggestion, looks much better! I will make
sure my next patches follow this format, if applicable.

Patch with commit message updated:

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Replace-default-s-with-format-prompt.patch --]
[-- Type: text/x-diff, Size: 34550 bytes --]

From aa87da8e03ecb1532c13be22160556b1d4547299 Mon Sep 17 00:00:00 2001
From: Gabriel do Nascimento Ribeiro <gabriel.nascimento@nubank.com.br>
Date: Sun, 21 Mar 2021 14:44:32 -0300
Subject: [PATCH] Replace "(default %s)" with 'format-prompt'

* lisp/cmuscheme.el (scheme-load-file, scheme-compile-file):
* lisp/comint.el (comint-get-source):
* lisp/emulation/viper-cmd.el (viper-quote-region, viper-kill-buffer)
(viper-query-replace, viper-read-string-with-history):
* lisp/eshell/esh-mode.el (eshell-find-tag):
* lisp/gnus/gnus-sum.el (gnus-articles-to-read)
(gnus-summary-search-article-forward)
(gnus-summary-search-article-backward):
* lisp/international/mule-cmds.el (set-input-method, toggle-input-method)
(describe-input-method, set-language-environment)
(describe-language-environment):
* lisp/mh-e/mh-gnus.el (mh-mml-minibuffer-read-disposition):
* lisp/mh-e/mh-letter.el (mh-insert-letter):
* lisp/mh-e/mh-mime.el (mh-display-with-external-viewer)
(mh-mime-save-parts, mh-mh-forward-message)
(mh-mml-query-cryptographic-method, mh-minibuffer-read-type):
* lisp/mh-e/mh-seq.el (mh-read-seq, mh-read-range):
* lisp/mh-e/mh-utils.el (mh-prompt-for-folder):
* lisp/progmodes/cc-styles.el (c-read-offset):
* lisp/progmodes/etags.el (find-tag-tag):
(find-tag-noselect, find-tag, find-tag-other-window)
(find-tag-other-frame, find-tag-regexp):
* lisp/progmodes/idlwave.el (idlwave-find-module):
* lisp/progmodes/inf-lisp.el (lisp-load-file, lisp-compile-file):
* lisp/progmodes/project.el (project--completing-read-strict)
(project--completing-read-strict):
* lisp/progmodes/tcl.el (tcl-load-file, tcl-restart-with-file):
* lisp/progmodes/verilog-mode.el (verilog-surelint-off)
(verilog-goto-defun):
* lisp/progmodes/xref.el (xref--read-identifier):
(xref-find-definitions, xref-find-definitions-other-window)
(xref-find-definitions-other-frame, xref-find-references):
* lisp/ses.el (ses-read-printer):
(ses-read-cell-printer, ses-read-column-printer)
(ses-read-default-printer, ses-define-local-printer):
* lisp/subr.el (read-number):
* lisp/term.el (term-get-source):
* src/minibuf.c (read-buffer): Remove prompt suffix and
use 'format-prompt'.
---
 lisp/cmuscheme.el               |  4 ++--
 lisp/comint.el                  |  6 ++----
 lisp/emulation/viper-cmd.el     | 31 ++++++++++++-------------------
 lisp/eshell/esh-mode.el         |  2 +-
 lisp/gnus/gnus-sum.el           | 31 ++++++++++++++-----------------
 lisp/international/mule-cmds.el | 10 +++++-----
 lisp/mh-e/mh-gnus.el            |  2 +-
 lisp/mh-e/mh-letter.el          |  5 +----
 lisp/mh-e/mh-mime.el            | 20 +++++++-------------
 lisp/mh-e/mh-seq.el             | 16 +++++-----------
 lisp/mh-e/mh-utils.el           |  7 +++----
 lisp/progmodes/cc-styles.el     |  2 +-
 lisp/progmodes/etags.el         | 16 ++++++----------
 lisp/progmodes/idlwave.el       |  2 +-
 lisp/progmodes/inf-lisp.el      |  4 ++--
 lisp/progmodes/project.el       |  6 ++----
 lisp/progmodes/tcl.el           |  4 ++--
 lisp/progmodes/verilog-mode.el  |  9 +++++----
 lisp/progmodes/xref.el          | 15 +++++----------
 lisp/ses.el                     | 12 +++++-------
 lisp/subr.el                    |  4 ++--
 lisp/term.el                    |  6 ++----
 src/minibuf.c                   |  4 ++--
 23 files changed, 88 insertions(+), 130 deletions(-)

diff --git a/lisp/cmuscheme.el b/lisp/cmuscheme.el
index 772891d5d3..d43cdb15c0 100644
--- a/lisp/cmuscheme.el
+++ b/lisp/cmuscheme.el
@@ -421,7 +421,7 @@ scheme-prev-l/c-dir/file
 
 (defun scheme-load-file (file-name)
   "Load a Scheme file FILE-NAME into the inferior Scheme process."
-  (interactive (comint-get-source "Load Scheme file: " scheme-prev-l/c-dir/file
+  (interactive (comint-get-source "Load Scheme file" scheme-prev-l/c-dir/file
 				  scheme-source-modes t)) ; t because `load'
                                                           ; needs an exact name
   (comint-check-source file-name) ; Check to see if buffer needs saved.
@@ -433,7 +433,7 @@ scheme-load-file
 
 (defun scheme-compile-file (file-name)
   "Compile a Scheme file FILE-NAME in the inferior Scheme process."
-  (interactive (comint-get-source "Compile Scheme file: "
+  (interactive (comint-get-source "Compile Scheme file"
 				  scheme-prev-l/c-dir/file
 				  scheme-source-modes
 				  nil)) ; nil because COMPILE doesn't
diff --git a/lisp/comint.el b/lisp/comint.el
index 65072b0137..b04d404676 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -2946,7 +2946,7 @@ comint-get-source
 then the filename reader will only accept a file that exists.
 
 A typical use:
- (interactive (comint-get-source \"Compile file: \" prev-lisp-dir/file
+ (interactive (comint-get-source \"Compile file\" prev-lisp-dir/file
                                  \\='(lisp-mode) t))"
   (let* ((def (comint-source-default prev-dir/file source-modes))
 	 (stringfile (comint-extract-string))
@@ -2959,9 +2959,7 @@ comint-get-source
                     (car def)))
 	 (deffile (if sfile-p (file-name-nondirectory stringfile)
                     (cdr def)))
-	 (ans (read-file-name (if deffile (format "%s(default %s) "
-						  prompt    deffile)
-                                prompt)
+	 (ans (read-file-name (format-prompt prompt deffile)
 			      defdir
 			      (concat defdir deffile)
 			      mustmatch-p)))
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index 42d6c1eb19..728f790a96 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -1786,7 +1786,7 @@ viper-quote-region
 	(do-not-change-default t))
     (setq quote-str
 	  (viper-read-string-with-history
-	   "Quote string: "
+	   "Quote string"
 	   nil
 	   'viper-quote-region-history
            ;; FIXME: Use comment-region.
@@ -1995,24 +1995,17 @@ viper-read-string-with-history
 	    #'viper-minibuffer-standard-hook
 	    (if (or (not (listp old)) (eq (car old) 'lambda))
 		(list old) old))))
-	(val "")
-	(padding "")
-	temp-msg)
+	(val ""))
 
     (setq keymap (or keymap minibuffer-local-map)
 	  initial (or initial "")
-	  viper-initial initial
-	  temp-msg (if default
-		       (format "(default %s) " default)
-		     ""))
+	  viper-initial initial)
 
     (setq viper-incomplete-ex-cmd nil)
-    (setq val (read-from-minibuffer prompt
-				    (concat temp-msg initial val padding)
-				    keymap nil history-var))
-    (setq minibuffer-setup-hook nil
-	  padding (viper-array-to-string (this-command-keys))
-	  temp-msg "")
+    (setq val (read-from-minibuffer (format-prompt prompt default)
+				    nil
+				    keymap nil history-var default))
+    (setq minibuffer-setup-hook nil)
     ;; the following tries to be smart about what to put in history
     (if (not (string= val (car (symbol-value history-var))))
 	(push val (symbol-value history-var)))
@@ -3825,7 +3818,7 @@ viper-kill-buffer
   (let (buffer buffer-name)
     (setq buffer-name
 	  (funcall viper-read-buffer-function
-		   (format "Kill buffer (%s): "
+		   (format-prompt "Kill buffer"
 			   (buffer-name (current-buffer)))))
     (setq buffer
 	  (if (null buffer-name)
@@ -4171,8 +4164,8 @@ viper-query-replace
   (interactive)
   (let (str)
     (setq str (viper-read-string-with-history
-	       (if viper-re-query-replace "Query replace regexp: "
-		 "Query replace: ")
+	       (if viper-re-query-replace "Query replace regexp"
+		 "Query replace")
 	       nil  ; no initial
 	       'viper-replace1-history
 	       (car viper-replace1-history) ; default
@@ -4187,7 +4180,7 @@ viper-query-replace
 	  (query-replace-regexp
 	   str
 	   (viper-read-string-with-history
-	    (format-message "Query replace regexp `%s' with: " str)
+	    (format-message "Query replace regexp `%s' with" str)
 	    nil  ; no initial
 	    'viper-replace1-history
 	    (car viper-replace1-history) ; default
@@ -4195,7 +4188,7 @@ viper-query-replace
 	(query-replace
 	 str
 	 (viper-read-string-with-history
-	  (format-message "Query replace `%s' with: " str)
+	  (format-message "Query replace `%s' with" str)
 	  nil  ; no initial
 	  'viper-replace1-history
 	  (car viper-replace1-history) ; default
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index d29b010ea0..f9dbce9770 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -458,7 +458,7 @@ eshell-find-tag
   (let ((inhibit-read-only t)
 	(no-default (eobp))
 	(find-tag-default-function 'ignore))
-    (setq tagname (car (find-tag-interactive "Find tag: " no-default)))
+    (setq tagname (car (find-tag-interactive "Find tag" no-default)))
     (with-suppressed-warnings ((obsolete find-tag))
       (find-tag tagname next-p regexp-p))))
 
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 97da550353..c30f9a5f35 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -5977,14 +5977,15 @@ gnus-articles-to-read
 			 (input
 			  (read-string
 			   (if only-read-p
-			       (format
-				"How many articles from %s (available %d, default %d): "
-				(gnus-group-real-name gnus-newsgroup-name)
-				number default)
-			     (format
-			      "How many articles from %s (%d default): "
-			      (gnus-group-real-name gnus-newsgroup-name)
-			      default))
+			       (format-prompt
+				    "How many articles from %s (available %d)"
+				    default
+				    (gnus-group-real-name gnus-newsgroup-name)
+				    number)
+			     (format-prompt
+			      "How many articles from %s"
+			      default
+			      (gnus-group-real-name gnus-newsgroup-name)))
 			   nil
 			   nil
 			   (number-to-string default))))
@@ -9514,11 +9515,9 @@ gnus-summary-search-article-forward
   (interactive
    (list
     (read-string
-     (format "Search article %s (regexp%s): "
-	     (if current-prefix-arg "backward" "forward")
-	     (if gnus-last-search-regexp
-		 (concat ", default " gnus-last-search-regexp)
-	       "")))
+     (format-prompt "Search article %s (regexp)"
+                    gnus-last-search-regexp
+                    (if current-prefix-arg "backward" "forward")))
     current-prefix-arg)
    gnus-summary-mode)
   (if (string-equal regexp "")
@@ -9537,10 +9536,8 @@ gnus-summary-search-article-backward
   (interactive
    (list
     (read-string
-     (format "Search article backward (regexp%s): "
-	     (if gnus-last-search-regexp
-		 (concat ", default " gnus-last-search-regexp)
-	       ""))))
+     (format-prompt "Search article backward (regexp)"
+                    gnus-last-search-regexp)))
    gnus-summary-mode)
   (gnus-summary-search-article-forward regexp 'backward))
 
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index e4bdf50f52..743b638d06 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -1524,7 +1524,7 @@ set-input-method
   (interactive
    (let* ((default (or (car input-method-history) default-input-method)))
      (list (read-input-method-name
-	    (if default "Select input method (default %s): " "Select input method: ")
+	    (format-prompt "Select input method" default)
 	    default t)
 	   t)))
   (activate-input-method input-method)
@@ -1569,7 +1569,7 @@ toggle-input-method
        (if (or arg (not default))
 	   (progn
 	     (read-input-method-name
-	      (if default "Input method (default %s): " "Input method: " )
+	      (format-prompt "Input method" default)
 	      default t))
 	 default))
       (unless default-input-method
@@ -1620,7 +1620,7 @@ describe-input-method
   "Describe input method INPUT-METHOD."
   (interactive
    (list (read-input-method-name
-	  "Describe input method (default current choice): ")))
+          (format-prompt "Describe input method" current-input-method))))
   (if (and input-method (symbolp input-method))
       (setq input-method (symbol-name input-method)))
   (help-setup-xref (list #'describe-input-method
@@ -1929,7 +1929,7 @@ set-language-environment
 the new language environment, it runs `set-language-environment-hook'."
   (interactive (list (read-language-name
 		      nil
-		      "Set language environment (default English): ")))
+		      (format-prompt "Set language environment" "English"))))
   (if language-name
       (if (symbolp language-name)
 	  (setq language-name (symbol-name language-name)))
@@ -2144,7 +2144,7 @@ describe-language-environment
   (interactive
    (list (read-language-name
 	  'documentation
-	  "Describe language environment (default current choice): ")))
+	  (format-prompt "Describe language environment" current-language-environment))))
   (if (null language-name)
       (setq language-name current-language-environment))
   (if (or (null language-name)
diff --git a/lisp/mh-e/mh-gnus.el b/lisp/mh-e/mh-gnus.el
index 6a9851662a..7898d7eece 100644
--- a/lisp/mh-e/mh-gnus.el
+++ b/lisp/mh-e/mh-gnus.el
@@ -129,7 +129,7 @@ mh-mml-minibuffer-read-disposition
   (unless default
     (setq default (mml-content-disposition type filename)))
   (let ((disposition (completing-read
-		      (format "Disposition (default %s): " default)
+		      (format-prompt "Disposition" default)
 		      '(("attachment") ("inline") (""))
 		      nil t nil nil default)))
     (if (not (equal disposition ""))
diff --git a/lisp/mh-e/mh-letter.el b/lisp/mh-e/mh-letter.el
index f5ad73d800..107a0ae5e4 100644
--- a/lisp/mh-e/mh-letter.el
+++ b/lisp/mh-e/mh-letter.el
@@ -390,10 +390,7 @@ mh-insert-letter
                 (or mh-sent-from-msg (nth 0 (mh-translate-range folder "cur")))
               (nth 0 (mh-translate-range folder "cur"))))
           (message
-           (read-string (concat "Message number"
-                                (or (and default
-                                         (format " (default %d): " default))
-                                    ": "))
+           (read-string (format-prompt "Message number" default)
                         nil nil
                         (if (numberp default)
                             (int-to-string default)
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el
index 70df9e6b0f..df3c711e3d 100644
--- a/lisp/mh-e/mh-mime.el
+++ b/lisp/mh-e/mh-mime.el
@@ -259,9 +259,7 @@ mh-display-with-external-viewer
               (methods (mapcar (lambda (x) (list (cdr (assoc 'viewer x))))
                                (mailcap-mime-info type 'all)))
               (def (caar methods))
-              (prompt (format "Viewer%s: " (if def
-                                               (format " (default %s)" def)
-                                             "")))
+              (prompt (format-prompt "Viewer" def))
               (method (completing-read prompt methods nil nil nil nil def))
               (folder mh-show-folder-buffer)
               (buffer-read-only nil))
@@ -395,9 +393,9 @@ mh-mime-save-parts
           ((and (or prompt
                     (equal t mh-mime-save-parts-default-directory))
                 mh-mime-save-parts-directory)
-           (read-directory-name (format
-                            "Store in directory (default %s): "
-                            mh-mime-save-parts-directory)
+           (read-directory-name (format-prompt
+                                 "Store in directory"
+                                 mh-mime-save-parts-directory)
                            "" mh-mime-save-parts-directory t ""))
           ((stringp mh-mime-save-parts-default-directory)
            mh-mime-save-parts-default-directory)
@@ -1258,11 +1256,7 @@ mh-mh-forward-message
   (interactive (list
                 (mml-minibuffer-read-description)
                 (mh-prompt-for-folder "Message from" mh-sent-from-folder nil)
-                (read-string (concat "Messages"
-                                     (if (numberp mh-sent-from-msg)
-                                         (format " (default %d): "
-                                                 mh-sent-from-msg)
-                                       ": ")))))
+                (read-string (format-prompt "Messages" mh-sent-from-msg))))
   (beginning-of-line)
   (insert "#forw [")
   (and description
@@ -1596,7 +1590,7 @@ mh-mml-query-cryptographic-method
   (if current-prefix-arg
       (let ((def (or (car mh-mml-cryptographic-method-history)
                      mh-mml-method-default)))
-        (completing-read (format "Method (default %s): " def)
+        (completing-read (format-prompt "Method" def)
                          '(("pgp") ("pgpmime") ("smime"))
                          nil t nil 'mh-mml-cryptographic-method-history def))
     mh-mml-method-default))
@@ -1731,7 +1725,7 @@ mh-minibuffer-read-type
          (type (or (and (not (equal probed-type "application/octet-stream"))
                         probed-type)
                    (completing-read
-                    (format "Content type (default %s): " default)
+                    (format-prompt "Content type" default)
                     (mapcar #'list (mailcap-mime-types))))))
     (if (not (equal type ""))
         type
diff --git a/lisp/mh-e/mh-seq.el b/lisp/mh-e/mh-seq.el
index e8a03f6704..4a464a3f55 100644
--- a/lisp/mh-e/mh-seq.el
+++ b/lisp/mh-e/mh-seq.el
@@ -390,10 +390,7 @@ mh-read-seq
 the NOT-EMPTY flag is non-nil, and supply an optional DEFAULT
 sequence. A reply of `%' defaults to the first sequence
 containing the current message."
-  (let* ((input (completing-read (format "%s sequence%s: " prompt
-                                         (if default
-                                             (format " (default %s)" default)
-                                           ""))
+  (let* ((input (completing-read (format-prompt "%s sequence" default prompt)
                                  (mh-seq-names mh-seq-list)
                                  nil nil nil 'mh-sequence-history))
          (seq (cond ((equal input "%")
@@ -646,13 +643,10 @@ mh-read-range
                         ((stringp default) default)
                         ((symbolp default) (symbol-name default))))
          (prompt (cond ((and guess large default)
-                        (format "%s (folder has %s messages, default %s)"
-                                prompt (car counts) default))
-                       ((and guess large)
-                        (format "%s (folder has %s messages)"
-                                prompt (car counts)))
+                        (format-prompt "%s (folder has %s messages)"
+                                default prompt (car counts)))
                        (default
-                         (format "%s (default %s)" prompt default))))
+                         (format-prompt prompt default))))
          (minibuffer-local-completion-map mh-range-completion-map)
          (seq-list (if (eq folder mh-current-folder)
                        mh-seq-list
@@ -662,7 +656,7 @@ mh-read-range
                   (mh-seq-names seq-list)))
          (input (cond ((and (not ask-flag) unseen) (symbol-name mh-unseen-seq))
                       ((and (not ask-flag) (not large)) "all")
-                      (t (completing-read (format "%s: " prompt)
+                      (t (completing-read prompt
                                           'mh-range-completion-function nil nil
                                           nil 'mh-range-history default))))
          msg-list)
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index d7c607df5c..8cb68f5cf1 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -758,10 +758,9 @@ mh-prompt-for-folder
 used in searching."
   (if (null default)
       (setq default ""))
-  (let* ((default-string (cond (default-string (format " (default %s)" default-string))
-                               ((equal "" default) "")
-                               (t (format " (default %s)" default))))
-         (prompt (format "%s folder%s: " prompt default-string))
+  (let* ((default-string (or default-string
+                             (if (equal default "") nil default)))
+         (prompt (format-prompt "%s folder" default-string prompt))
          (mh-current-folder-name mh-current-folder)
          read-name folder-name)
     (while (and (setq read-name (mh-folder-completing-read
diff --git a/lisp/progmodes/cc-styles.el b/lisp/progmodes/cc-styles.el
index aec259f1b3..7d02e1d702 100644
--- a/lisp/progmodes/cc-styles.el
+++ b/lisp/progmodes/cc-styles.el
@@ -442,7 +442,7 @@ c-read-offset
 	 (errmsg  (concat "Offset must be int, func, var, vector, list, "
 			  "or [+,-,++,--,*,/] "
 			  defstr))
-	 (prompt (concat symname " offset " defstr))
+	 (prompt (format-prompt "%s offset" oldoff symname))
 	 (keymap (make-sparse-keymap))
 	 (minibuffer-completion-table obarray)
 	 (minibuffer-completion-predicate 'fboundp)
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 023c90cca5..13717b1b89 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -836,11 +836,7 @@ find-tag-tag
   "Read a tag name, with defaulting and completion."
   (let* ((completion-ignore-case (find-tag--completion-ignore-case))
 	 (default (find-tag--default))
-	 (spec (completing-read (if default
-				    (format "%s (default %s): "
-					    (substring string 0 (string-match "[ :]+\\'" string))
-					    default)
-				  string)
+	 (spec (completing-read (format-prompt string default)
 				(tags-lazy-completion-table)
 				nil nil nil nil default)))
     (if (equal spec "")
@@ -899,7 +895,7 @@ find-tag-noselect
 Contrast this with the ring of marks gone to by the command.
 
 See documentation of variable `tags-file-name'."
-  (interactive (find-tag-interactive "Find tag: "))
+  (interactive (find-tag-interactive "Find tag"))
 
   (setq find-tag-history (cons tagname find-tag-history))
   ;; Save the current buffer's value of `find-tag-hook' before
@@ -971,7 +967,7 @@ find-tag
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-definitions "25.1"))
-  (interactive (find-tag-interactive "Find tag: "))
+  (interactive (find-tag-interactive "Find tag"))
   (let* ((buf (find-tag-noselect tagname next-p regexp-p))
 	 (pos (with-current-buffer buf (point))))
     (condition-case nil
@@ -1000,7 +996,7 @@ find-tag-other-window
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-definitions-other-window "25.1"))
-  (interactive (find-tag-interactive "Find tag other window: "))
+  (interactive (find-tag-interactive "Find tag other window"))
 
   ;; This hair is to deal with the case where the tag is found in the
   ;; selected window's buffer; without the hair, point is moved in both
@@ -1041,7 +1037,7 @@ find-tag-other-frame
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-definitions-other-frame "25.1"))
-  (interactive (find-tag-interactive "Find tag other frame: "))
+  (interactive (find-tag-interactive "Find tag other frame"))
   (let ((pop-up-frames t))
     (with-suppressed-warnings ((obsolete find-tag-other-window))
       (find-tag-other-window tagname next-p))))
@@ -1065,7 +1061,7 @@ find-tag-regexp
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-apropos "25.1"))
-  (interactive (find-tag-interactive "Find tag regexp: " t))
+  (interactive (find-tag-interactive "Find tag regexp" t))
   ;; We go through find-tag-other-window to do all the display hair there.
   (funcall (if other-window 'find-tag-other-window 'find-tag)
 	   regexp next-p t))
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index e8e55ae96d..b72d9da748 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -7820,7 +7820,7 @@ idlwave-find-module
 	 (name (idlwave-completing-read
 		(if (or (not this-buffer)
 			(assoc default list))
-		    (format "Module (Default %s): " default)
+		    (format-prompt "Module" default)
 		  (format "Module in this file: "))
 		list))
 	 type class)
diff --git a/lisp/progmodes/inf-lisp.el b/lisp/progmodes/inf-lisp.el
index 146ed4dca4..af6ccce3d6 100644
--- a/lisp/progmodes/inf-lisp.el
+++ b/lisp/progmodes/inf-lisp.el
@@ -487,7 +487,7 @@ lisp-source-modes
 
 (defun lisp-load-file (file-name)
   "Load a Lisp file into the inferior Lisp process."
-  (interactive (comint-get-source "Load Lisp file: " lisp-prev-l/c-dir/file
+  (interactive (comint-get-source "Load Lisp file" lisp-prev-l/c-dir/file
 				  lisp-source-modes nil)) ; nil because LOAD
 					; doesn't need an exact name
   (comint-check-source file-name) ; Check to see if buffer needs saved.
@@ -500,7 +500,7 @@ lisp-load-file
 
 (defun lisp-compile-file (file-name)
   "Compile a Lisp file in the inferior Lisp process."
-  (interactive (comint-get-source "Compile Lisp file: " lisp-prev-l/c-dir/file
+  (interactive (comint-get-source "Compile Lisp file" lisp-prev-l/c-dir/file
 				  lisp-source-modes nil)) ; nil = don't need
 					; suffix .lisp
   (comint-check-source file-name) ; Check to see if buffer needs saved.
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index b6a886f731..11f33dc919 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -869,9 +869,7 @@ project--completing-read-strict
   ;; removing it when it has no matches.  Neither seems natural
   ;; enough.  Removal is confusing; early expansion makes the prompt
   ;; too long.
-  (let* ((new-prompt (if (and default (not (string-equal default "")))
-                         (format "%s (default %s): " prompt default)
-                       (format "%s: " prompt)))
+  (let* ((new-prompt (format-prompt prompt default))
          (res (completing-read new-prompt
                                collection predicate t
                                nil ;; initial-input
@@ -879,7 +877,7 @@ project--completing-read-strict
     (when (and (equal res default)
                (not (test-completion res collection predicate)))
       (setq res
-            (completing-read (format "%s: " prompt)
+            (completing-read (format-prompt prompt nil)
                              collection predicate t res hist nil)))
     res))
 
diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el
index 82e1343e05..f6a50bf1a8 100644
--- a/lisp/progmodes/tcl.el
+++ b/lisp/progmodes/tcl.el
@@ -1413,7 +1413,7 @@ tcl-load-file
    (list
     ;; car because comint-get-source returns a list holding the
     ;; filename.
-    (car (comint-get-source "Load Tcl file: "
+    (car (comint-get-source "Load Tcl file"
 			    (or (and
 				 (derived-mode-p 'tcl-mode)
 				 (buffer-file-name))
@@ -1433,7 +1433,7 @@ tcl-restart-with-file
 Prefix argument means switch to the Tcl buffer afterwards."
   (interactive
    (list
-    (car (comint-get-source "Restart with Tcl file: "
+    (car (comint-get-source "Restart with Tcl file"
 			    (or (and
 				 (derived-mode-p 'tcl-mode)
 				 (buffer-file-name))
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 55c04e1332..14a9dff869 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -5466,8 +5466,9 @@ verilog-surelint-off
                     (let* ((pop-up-windows t))
                       (let ((name (expand-file-name
                                    (read-file-name
-                                    (format "Find this error in: (default %s) "
-                                            file)
+                                    (format-prompt
+                                     "Find this error in"
+                                     file)
                                     dir file t))))
                         (if (file-directory-p name)
                             (setq name (expand-file-name filename name)))
@@ -7863,8 +7864,8 @@ verilog-goto-defun
 	 (verilog-buffer-to-use (current-buffer))
 	 (label (if (not (string= default ""))
 		    ;; Do completion with default
-		    (completing-read (concat "Goto-Label: (default "
-					     default ") ")
+		    (completing-read (format-prompt "Goto-Label"
+					            default)
 				     'verilog-comp-defun nil nil "")
 		  ;; There is no default value. Complete without it
 		  (completing-read "Goto-Label: "
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index ea52befec5..3cb4247b4b 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -1192,12 +1192,7 @@ xref--read-identifier
                (xref--prompt-p this-command))
            (let ((id
                   (completing-read
-                   (if def
-                       (format "%s (default %s): "
-                               (substring prompt 0 (string-match
-                                                    "[ :]+\\'" prompt))
-                               def)
-                     prompt)
+                   (format-prompt prompt def)
                    (xref-backend-identifier-completion-table backend)
                    nil nil nil
                    'xref--read-identifier-history def)))
@@ -1257,19 +1252,19 @@ xref-find-definitions
 definition for IDENTIFIER, display it in the selected window.
 Otherwise, display the list of the possible definitions in a
 buffer where the user can select from the list."
-  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (interactive (list (xref--read-identifier "Find definitions of")))
   (xref--find-definitions identifier nil))
 
 ;;;###autoload
 (defun xref-find-definitions-other-window (identifier)
   "Like `xref-find-definitions' but switch to the other window."
-  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (interactive (list (xref--read-identifier "Find definitions of")))
   (xref--find-definitions identifier 'window))
 
 ;;;###autoload
 (defun xref-find-definitions-other-frame (identifier)
   "Like `xref-find-definitions' but switch to the other frame."
-  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (interactive (list (xref--read-identifier "Find definitions of")))
   (xref--find-definitions identifier 'frame))
 
 ;;;###autoload
@@ -1280,7 +1275,7 @@ xref-find-references
 With prefix argument, or if `xref-prompt-for-identifier' is t,
 always prompt for the identifier.  If `xref-prompt-for-identifier'
 is nil, prompt only if there's no usable symbol at point."
-  (interactive (list (xref--read-identifier "Find references of: ")))
+  (interactive (list (xref--read-identifier "Find references of")))
   (xref--find-xrefs identifier 'references identifier nil))
 
 ;;;###autoload
diff --git a/lisp/ses.el b/lisp/ses.el
index a11c754abc..6058d48ed1 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -2653,9 +2653,7 @@ ses-read-printer
   (barf-if-buffer-read-only)
   (if (eq default t)
       (setq default "")
-    (setq prompt (format "%s (default %S): "
-			 (substring prompt 0 -2)
-			 default)))
+    (setq prompt (format-prompt prompt default)))
   (dolist (key ses-completion-keys)
     (define-key ses-mode-edit-map key 'ses-read-printer-complete-symbol))
   ;; make it globally visible, so that it can be visible from the minibuffer.
@@ -2702,7 +2700,7 @@ ses-read-cell-printer
                ;;Range contains differing printer functions
                (setq default t)
                (throw 'ses-read-cell-printer t))))))
-     (list (ses-read-printer (format "Cell %S printer: " ses--curcell)
+     (list (ses-read-printer (format "Cell %S printer" ses--curcell)
 			     default))))
   (unless (eq newval t)
     (ses-begin-change)
@@ -2716,7 +2714,7 @@ ses-read-column-printer
   (interactive
    (let ((col (cdr (ses-sym-rowcol ses--curcell))))
      (ses-check-curcell)
-     (list col (ses-read-printer (format "Column %s printer: "
+     (list col (ses-read-printer (format "Column %s printer"
 					 (ses-column-letter col))
 				 (ses-col-printer col)))))
 
@@ -2731,7 +2729,7 @@ ses-read-default-printer
   "Set the default printer function for cells that have no other.
 See `ses-read-cell-printer' for input forms."
   (interactive
-   (list (ses-read-printer "Default printer: " ses--default-printer)))
+   (list (ses-read-printer "Default printer" ses--default-printer)))
   (unless (eq newval t)
     (ses-begin-change)
     (ses-set-parameter 'ses--default-printer newval)
@@ -3773,7 +3771,7 @@ ses-define-local-printer
      (setq name (intern name))
      (let* ((cur-printer (gethash name ses--local-printer-hashmap))
             (default (and cur-printer (ses--locprn-def cur-printer))))
-            (setq def (ses-read-printer (format "Enter definition of printer %S: " name)
+            (setq def (ses-read-printer (format "Enter definition of printer %S" name)
                                         default)))
             (list name def)))
 
diff --git a/lisp/subr.el b/lisp/subr.el
index ef0e5e6f78..a2c1280fc1 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2806,9 +2806,9 @@ read-number
     (when default1
       (setq prompt
 	    (if (string-match "\\(\\):[ \t]*\\'" prompt)
-		(replace-match (format " (default %s)" default1) t t prompt 1)
+		(replace-match (format minibuffer-default-prompt-format default1) t t prompt 1)
 	      (replace-regexp-in-string "[ \t]*\\'"
-					(format " (default %s) " default1)
+					(format minibuffer-default-prompt-format default1)
 					prompt t t))))
     (while
 	(progn
diff --git a/lisp/term.el b/lisp/term.el
index 6beb17fb66..d41895ad3d 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -2535,7 +2535,7 @@ term-check-source
 ;; then the filename reader will only accept a file that exists.
 ;;
 ;; A typical use:
-;; (interactive (term-get-source "Compile file: " prev-lisp-dir/file
+;; (interactive (term-get-source "Compile file" prev-lisp-dir/file
 ;;                                 '(lisp-mode) t))
 
 ;; This is pretty stupid about strings.  It decides we're in a string
@@ -2566,9 +2566,7 @@ term-get-source
                       (car def)))
 	 (deffile (if sfile-p (file-name-nondirectory stringfile)
                       (cdr def)))
-	 (ans (read-file-name (if deffile (format "%s(default %s) "
-						  prompt    deffile)
-				  prompt)
+	 (ans (read-file-name (format-prompt prompt deffile)
 			      defdir
 			      (concat defdir deffile)
 			      mustmatch-p)))
diff --git a/src/minibuf.c b/src/minibuf.c
index d58924ae52..c9831fd50f 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -1490,8 +1490,8 @@ DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 4, 0,
 					      STRING_MULTIBYTE (prompt));
 	    }
 
-	  AUTO_STRING (format, "%s (default %s): ");
-	  prompt = CALLN (Fformat, format, prompt,
+	  prompt = CALLN (Ffuncall, intern("format-prompt"),
+			  prompt,
 			  CONSP (def) ? XCAR (def) : def);
 	}
 
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt'
  2021-03-21 15:53 ` Kévin Le Gouguec
@ 2021-03-21 18:31   ` Gabriel
  2021-03-21 18:57     ` Dmitry Gutov
  2021-03-22 19:06     ` Lars Ingebrigtsen
  0 siblings, 2 replies; 11+ messages in thread
From: Gabriel @ 2021-03-21 18:31 UTC (permalink / raw)
  To: 47286

Kévin Le Gouguec <kevin.legouguec@gmail.com> writes:
>
> Mmm, project.el is released on ELPA as a :core package; IIUC it strives
> for backward-compatibility as far back as Emacs 26.1
> (cf. Package-Requires field at the top of the file), so maybe it's a bit
> early to use format-prompt there?
>
> Apologies if I'm misunderstanding something.

Hi Kevin,

Thanks for pointing it out. I just searched for the current source tree
of master branch for ocurrences of "(default %s)", so I am not sure if I
changed some package that shouldn't be update. If so, I will promptly
update the patch.

Perhaps project.el could use a similar fallback that exists on
cperl-mode.el (commit 3a95f4fc12df0a570ad413e099a22bf901b7346d):

;; Available in Emacs 28: format-prompt
(defalias 'cperl--format-prompt
  (if (fboundp 'format-prompt) 'format-prompt
    (lambda (msg default)
      (if default (format "%s (default %s): " msg default)
        (concat msg ": ")))))





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt'
  2021-03-21 18:31   ` Gabriel
@ 2021-03-21 18:57     ` Dmitry Gutov
  2021-03-22  0:03       ` Gabriel
  2021-03-22 19:06     ` Lars Ingebrigtsen
  1 sibling, 1 reply; 11+ messages in thread
From: Dmitry Gutov @ 2021-03-21 18:57 UTC (permalink / raw)
  To: Gabriel, 47286

On 21.03.2021 20:31, Gabriel wrote:
> Thanks for pointing it out. I just searched for the current source tree
> of master branch for ocurrences of "(default %s)", so I am not sure if I
> changed some package that shouldn't be update. If so, I will promptly
> update the patch.
> 
> Perhaps project.el could use a similar fallback that exists on
> cperl-mode.el (commit 3a95f4fc12df0a570ad413e099a22bf901b7346d):
> 
> ;; Available in Emacs 28: format-prompt
> (defalias 'cperl--format-prompt
>    (if (fboundp 'format-prompt) 'format-prompt
>      (lambda (msg default)
>        (if default (format "%s (default %s): " msg default)
>          (concat msg ": ")))))

Sounds reasonable to me.

Also note that project--completing-read-strict includes as (string-equal 
default "") check added in 2be537e64.

Perhaps format-prompt could use it as well.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt'
  2021-03-21 18:57     ` Dmitry Gutov
@ 2021-03-22  0:03       ` Gabriel
  2021-03-22  0:48         ` Dmitry Gutov
  0 siblings, 1 reply; 11+ messages in thread
From: Gabriel @ 2021-03-22  0:03 UTC (permalink / raw)
  To: 47286

Dmitry Gutov <dgutov@yandex.ru> writes:
> Also note that project--completing-read-strict includes as (string-equal default
> "") check added in 2be537e64.
>
> Perhaps format-prompt could use it as well.

Do you mean to add a new check to 'format-prompt' to consider an empty
DEFAULT as nil, e.g., to not show it on minibuffer prompt in case the
value of the DEFAULT argument is an empty string ?

Also, maybe another useful check for 'format-prompt' would remove the
": " suffix from the PROMPT argument, to avoid displaying something like
"prompt: : ", which could avoid regressions when migrating existing
code.

Example of the new 'format-prompt':

(defun format-prompt (prompt default &rest format-args)
  "Format PROMPT with DEFAULT according to `minibuffer-default-prompt-format'.
If FORMAT-ARGS is nil, PROMPT is used as a plain string.  If
FORMAT-ARGS is non-nil, PROMPT is used as a format control
string, and FORMAT-ARGS are the arguments to be substituted into
it.  See `format' for details.

If DEFAULT is a list, the first element is used as the default.
If not, the element is used as is.

If DEFAULT is nil or an empty string, no \"default value\" string
is included in the return value."
  (let* ((suffix ": ")
         (prompt (if (string-suffix-p suffix prompt)
                     (substring prompt 0 (* -1 (length suffix)))
                   prompt))
         (default (if (equal "" default)
                      nil
                    default))
         (formatted-prompt (if (null format-args)
                               prompt
                             (apply #'format prompt format-args)))
         (formatted-default (and default
                                 (format minibuffer-default-prompt-format
                                         (if (consp default)
                                             (car default)
                                           default)))))
    (concat formatted-prompt
            formatted-default
            suffix)))





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt'
  2021-03-22  0:03       ` Gabriel
@ 2021-03-22  0:48         ` Dmitry Gutov
  0 siblings, 0 replies; 11+ messages in thread
From: Dmitry Gutov @ 2021-03-22  0:48 UTC (permalink / raw)
  To: Gabriel, 47286

On 22.03.2021 02:03, Gabriel wrote:
> Dmitry Gutov <dgutov@yandex.ru> writes:
>> Also note that project--completing-read-strict includes as (string-equal default
>> "") check added in 2be537e64.
>>
>> Perhaps format-prompt could use it as well.
> 
> Do you mean to add a new check to 'format-prompt' to consider an empty
> DEFAULT as nil, e.g., to not show it on minibuffer prompt in case the
> value of the DEFAULT argument is an empty string ?

Yup.

> Also, maybe another useful check for 'format-prompt' would remove the
> ": " suffix from the PROMPT argument, to avoid displaying something like
> "prompt: : ", which could avoid regressions when migrating existing
> code.

My (weak) preference would be on "no": whether the prompt is showing an 
extra ":" should be apparent from very brief testing of the code. It's 
not like it will show up only if DEFAULT is non-nil, for instance.

So no need to complicate the implementation.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt'
  2021-03-21 18:31   ` Gabriel
  2021-03-21 18:57     ` Dmitry Gutov
@ 2021-03-22 19:06     ` Lars Ingebrigtsen
  2021-03-23  3:47       ` Gabriel
  1 sibling, 1 reply; 11+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 19:06 UTC (permalink / raw)
  To: Gabriel; +Cc: 47286

Gabriel <gabriel376@hotmail.com> writes:

> Thanks for pointing it out. I just searched for the current source tree
> of master branch for ocurrences of "(default %s)", so I am not sure if I
> changed some package that shouldn't be update. If so, I will promptly
> update the patch.

The files that have a line like

;; Package-Requires: ((emacs "26.1") (xref "1.0.2"))

or similar should be handled with more care, yes -- they have to be
backwards-compatible, and `format-prompt' is new in Emacs 28.  So if you
could re-spin the patch without changes to files like that, I'll get it
applied (it looks good otherwise).

There are some packages that are maintained for older Emacs versions,
too, but we unfortunately have no markup to say that explicitly.
Looking over the list, I think this affects only these two files, and
should also be removed from the patch:

 lisp/progmodes/cc-styles.el
 lisp/progmodes/verilog-mode.el 


-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt'
  2021-03-22 19:06     ` Lars Ingebrigtsen
@ 2021-03-23  3:47       ` Gabriel
  2021-03-24  9:32         ` Lars Ingebrigtsen
  0 siblings, 1 reply; 11+ messages in thread
From: Gabriel @ 2021-03-23  3:47 UTC (permalink / raw)
  To: 47286

[-- Attachment #1: Type: text/plain, Size: 981 bytes --]

>
> The files that have a line like
>
> ;; Package-Requires: ((emacs "26.1") (xref "1.0.2"))
>
> or similar should be handled with more care, yes -- they have to be
> backwards-compatible, and `format-prompt' is new in Emacs 28.  So if you
> could re-spin the patch without changes to files like that, I'll get it
> applied (it looks good otherwise).
>
> There are some packages that are maintained for older Emacs versions,
> too, but we unfortunately have no markup to say that explicitly.
> Looking over the list, I think this affects only these two files, and
> should also be removed from the patch:
>
>  lisp/progmodes/cc-styles.el
>  lisp/progmodes/verilog-mode.el

Hi Lars,

Thanks so much for your review. Here is an updated patch that removes
the mentioned files (project.el, cc-styles.el and verilog-mode.el) and
updates the 'format-prompt' function with the suggestion from Dmitry
Gutov to consider an empty DEFAULT as nil. Let me know if something
could be improved.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Replace-default-s-with-format-prompt.patch --]
[-- Type: text/x-diff, Size: 32057 bytes --]

From 396112bddddbb27df17c812d0e5d211098a3638b Mon Sep 17 00:00:00 2001
From: Gabriel do Nascimento Ribeiro <gabriel.nascimento@nubank.com.br>
Date: Mon, 22 Mar 2021 20:46:02 -0300
Subject: [PATCH] Replace "(default %s)" with 'format-prompt'

* lisp/cmuscheme.el (scheme-load-file, scheme-compile-file):
* lisp/comint.el (comint-get-source):
* lisp/emulation/viper-cmd.el (viper-quote-region, viper-kill-buffer)
(viper-query-replace, viper-read-string-with-history):
* lisp/eshell/esh-mode.el (eshell-find-tag):
* lisp/gnus/gnus-sum.el (gnus-articles-to-read)
(gnus-summary-search-article-forward)
(gnus-summary-search-article-backward):
* lisp/international/mule-cmds.el (set-input-method, toggle-input-method)
(describe-input-method, set-language-environment)
(describe-language-environment):
* lisp/mh-e/mh-gnus.el (mh-mml-minibuffer-read-disposition):
* lisp/mh-e/mh-letter.el (mh-insert-letter):
* lisp/mh-e/mh-mime.el (mh-display-with-external-viewer)
(mh-mime-save-parts, mh-mh-forward-message)
(mh-mml-query-cryptographic-method, mh-minibuffer-read-type):
* lisp/mh-e/mh-seq.el (mh-read-seq, mh-read-range):
* lisp/mh-e/mh-utils.el (mh-prompt-for-folder):
* lisp/progmodes/etags.el (find-tag-tag):
(find-tag-noselect, find-tag, find-tag-other-window)
(find-tag-other-frame, find-tag-regexp):
* lisp/progmodes/idlwave.el (idlwave-find-module):
* lisp/progmodes/inf-lisp.el (lisp-load-file, lisp-compile-file):
* lisp/progmodes/tcl.el (tcl-load-file, tcl-restart-with-file):
* lisp/progmodes/xref.el (xref--read-identifier):
(xref-find-definitions, xref-find-definitions-other-window)
(xref-find-definitions-other-frame, xref-find-references):
* lisp/ses.el (ses-read-printer):
(ses-read-cell-printer, ses-read-column-printer)
(ses-read-default-printer, ses-define-local-printer):
* lisp/subr.el (read-number):
* lisp/term.el (term-get-source):
* src/minibuf.c (read-buffer): Remove prompt suffix and
use 'format-prompt'.
* lisp/minibuffer.el (format-prompt): Ignore DEFAULT empty strings.
---
 lisp/cmuscheme.el               |  4 ++--
 lisp/comint.el                  |  6 ++----
 lisp/emulation/viper-cmd.el     | 31 ++++++++++++-------------------
 lisp/eshell/esh-mode.el         |  2 +-
 lisp/gnus/gnus-sum.el           | 31 ++++++++++++++-----------------
 lisp/international/mule-cmds.el | 10 +++++-----
 lisp/mh-e/mh-gnus.el            |  2 +-
 lisp/mh-e/mh-letter.el          |  5 +----
 lisp/mh-e/mh-mime.el            | 20 +++++++-------------
 lisp/mh-e/mh-seq.el             | 16 +++++-----------
 lisp/mh-e/mh-utils.el           |  7 +++----
 lisp/minibuffer.el              |  5 +++--
 lisp/progmodes/etags.el         | 16 ++++++----------
 lisp/progmodes/idlwave.el       |  2 +-
 lisp/progmodes/inf-lisp.el      |  4 ++--
 lisp/progmodes/tcl.el           |  4 ++--
 lisp/progmodes/xref.el          | 15 +++++----------
 lisp/ses.el                     | 12 +++++-------
 lisp/subr.el                    |  4 ++--
 lisp/term.el                    |  6 ++----
 src/minibuf.c                   |  4 ++--
 21 files changed, 83 insertions(+), 123 deletions(-)

diff --git a/lisp/cmuscheme.el b/lisp/cmuscheme.el
index 772891d5d3..d43cdb15c0 100644
--- a/lisp/cmuscheme.el
+++ b/lisp/cmuscheme.el
@@ -421,7 +421,7 @@ scheme-prev-l/c-dir/file
 
 (defun scheme-load-file (file-name)
   "Load a Scheme file FILE-NAME into the inferior Scheme process."
-  (interactive (comint-get-source "Load Scheme file: " scheme-prev-l/c-dir/file
+  (interactive (comint-get-source "Load Scheme file" scheme-prev-l/c-dir/file
 				  scheme-source-modes t)) ; t because `load'
                                                           ; needs an exact name
   (comint-check-source file-name) ; Check to see if buffer needs saved.
@@ -433,7 +433,7 @@ scheme-load-file
 
 (defun scheme-compile-file (file-name)
   "Compile a Scheme file FILE-NAME in the inferior Scheme process."
-  (interactive (comint-get-source "Compile Scheme file: "
+  (interactive (comint-get-source "Compile Scheme file"
 				  scheme-prev-l/c-dir/file
 				  scheme-source-modes
 				  nil)) ; nil because COMPILE doesn't
diff --git a/lisp/comint.el b/lisp/comint.el
index 65072b0137..b04d404676 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -2946,7 +2946,7 @@ comint-get-source
 then the filename reader will only accept a file that exists.
 
 A typical use:
- (interactive (comint-get-source \"Compile file: \" prev-lisp-dir/file
+ (interactive (comint-get-source \"Compile file\" prev-lisp-dir/file
                                  \\='(lisp-mode) t))"
   (let* ((def (comint-source-default prev-dir/file source-modes))
 	 (stringfile (comint-extract-string))
@@ -2959,9 +2959,7 @@ comint-get-source
                     (car def)))
 	 (deffile (if sfile-p (file-name-nondirectory stringfile)
                     (cdr def)))
-	 (ans (read-file-name (if deffile (format "%s(default %s) "
-						  prompt    deffile)
-                                prompt)
+	 (ans (read-file-name (format-prompt prompt deffile)
 			      defdir
 			      (concat defdir deffile)
 			      mustmatch-p)))
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index 42d6c1eb19..728f790a96 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -1786,7 +1786,7 @@ viper-quote-region
 	(do-not-change-default t))
     (setq quote-str
 	  (viper-read-string-with-history
-	   "Quote string: "
+	   "Quote string"
 	   nil
 	   'viper-quote-region-history
            ;; FIXME: Use comment-region.
@@ -1995,24 +1995,17 @@ viper-read-string-with-history
 	    #'viper-minibuffer-standard-hook
 	    (if (or (not (listp old)) (eq (car old) 'lambda))
 		(list old) old))))
-	(val "")
-	(padding "")
-	temp-msg)
+	(val ""))
 
     (setq keymap (or keymap minibuffer-local-map)
 	  initial (or initial "")
-	  viper-initial initial
-	  temp-msg (if default
-		       (format "(default %s) " default)
-		     ""))
+	  viper-initial initial)
 
     (setq viper-incomplete-ex-cmd nil)
-    (setq val (read-from-minibuffer prompt
-				    (concat temp-msg initial val padding)
-				    keymap nil history-var))
-    (setq minibuffer-setup-hook nil
-	  padding (viper-array-to-string (this-command-keys))
-	  temp-msg "")
+    (setq val (read-from-minibuffer (format-prompt prompt default)
+				    nil
+				    keymap nil history-var default))
+    (setq minibuffer-setup-hook nil)
     ;; the following tries to be smart about what to put in history
     (if (not (string= val (car (symbol-value history-var))))
 	(push val (symbol-value history-var)))
@@ -3825,7 +3818,7 @@ viper-kill-buffer
   (let (buffer buffer-name)
     (setq buffer-name
 	  (funcall viper-read-buffer-function
-		   (format "Kill buffer (%s): "
+		   (format-prompt "Kill buffer"
 			   (buffer-name (current-buffer)))))
     (setq buffer
 	  (if (null buffer-name)
@@ -4171,8 +4164,8 @@ viper-query-replace
   (interactive)
   (let (str)
     (setq str (viper-read-string-with-history
-	       (if viper-re-query-replace "Query replace regexp: "
-		 "Query replace: ")
+	       (if viper-re-query-replace "Query replace regexp"
+		 "Query replace")
 	       nil  ; no initial
 	       'viper-replace1-history
 	       (car viper-replace1-history) ; default
@@ -4187,7 +4180,7 @@ viper-query-replace
 	  (query-replace-regexp
 	   str
 	   (viper-read-string-with-history
-	    (format-message "Query replace regexp `%s' with: " str)
+	    (format-message "Query replace regexp `%s' with" str)
 	    nil  ; no initial
 	    'viper-replace1-history
 	    (car viper-replace1-history) ; default
@@ -4195,7 +4188,7 @@ viper-query-replace
 	(query-replace
 	 str
 	 (viper-read-string-with-history
-	  (format-message "Query replace `%s' with: " str)
+	  (format-message "Query replace `%s' with" str)
 	  nil  ; no initial
 	  'viper-replace1-history
 	  (car viper-replace1-history) ; default
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index d29b010ea0..f9dbce9770 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -458,7 +458,7 @@ eshell-find-tag
   (let ((inhibit-read-only t)
 	(no-default (eobp))
 	(find-tag-default-function 'ignore))
-    (setq tagname (car (find-tag-interactive "Find tag: " no-default)))
+    (setq tagname (car (find-tag-interactive "Find tag" no-default)))
     (with-suppressed-warnings ((obsolete find-tag))
       (find-tag tagname next-p regexp-p))))
 
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 97da550353..c30f9a5f35 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -5977,14 +5977,15 @@ gnus-articles-to-read
 			 (input
 			  (read-string
 			   (if only-read-p
-			       (format
-				"How many articles from %s (available %d, default %d): "
-				(gnus-group-real-name gnus-newsgroup-name)
-				number default)
-			     (format
-			      "How many articles from %s (%d default): "
-			      (gnus-group-real-name gnus-newsgroup-name)
-			      default))
+			       (format-prompt
+				    "How many articles from %s (available %d)"
+				    default
+				    (gnus-group-real-name gnus-newsgroup-name)
+				    number)
+			     (format-prompt
+			      "How many articles from %s"
+			      default
+			      (gnus-group-real-name gnus-newsgroup-name)))
 			   nil
 			   nil
 			   (number-to-string default))))
@@ -9514,11 +9515,9 @@ gnus-summary-search-article-forward
   (interactive
    (list
     (read-string
-     (format "Search article %s (regexp%s): "
-	     (if current-prefix-arg "backward" "forward")
-	     (if gnus-last-search-regexp
-		 (concat ", default " gnus-last-search-regexp)
-	       "")))
+     (format-prompt "Search article %s (regexp)"
+                    gnus-last-search-regexp
+                    (if current-prefix-arg "backward" "forward")))
     current-prefix-arg)
    gnus-summary-mode)
   (if (string-equal regexp "")
@@ -9537,10 +9536,8 @@ gnus-summary-search-article-backward
   (interactive
    (list
     (read-string
-     (format "Search article backward (regexp%s): "
-	     (if gnus-last-search-regexp
-		 (concat ", default " gnus-last-search-regexp)
-	       ""))))
+     (format-prompt "Search article backward (regexp)"
+                    gnus-last-search-regexp)))
    gnus-summary-mode)
   (gnus-summary-search-article-forward regexp 'backward))
 
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index e4bdf50f52..743b638d06 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -1524,7 +1524,7 @@ set-input-method
   (interactive
    (let* ((default (or (car input-method-history) default-input-method)))
      (list (read-input-method-name
-	    (if default "Select input method (default %s): " "Select input method: ")
+	    (format-prompt "Select input method" default)
 	    default t)
 	   t)))
   (activate-input-method input-method)
@@ -1569,7 +1569,7 @@ toggle-input-method
        (if (or arg (not default))
 	   (progn
 	     (read-input-method-name
-	      (if default "Input method (default %s): " "Input method: " )
+	      (format-prompt "Input method" default)
 	      default t))
 	 default))
       (unless default-input-method
@@ -1620,7 +1620,7 @@ describe-input-method
   "Describe input method INPUT-METHOD."
   (interactive
    (list (read-input-method-name
-	  "Describe input method (default current choice): ")))
+          (format-prompt "Describe input method" current-input-method))))
   (if (and input-method (symbolp input-method))
       (setq input-method (symbol-name input-method)))
   (help-setup-xref (list #'describe-input-method
@@ -1929,7 +1929,7 @@ set-language-environment
 the new language environment, it runs `set-language-environment-hook'."
   (interactive (list (read-language-name
 		      nil
-		      "Set language environment (default English): ")))
+		      (format-prompt "Set language environment" "English"))))
   (if language-name
       (if (symbolp language-name)
 	  (setq language-name (symbol-name language-name)))
@@ -2144,7 +2144,7 @@ describe-language-environment
   (interactive
    (list (read-language-name
 	  'documentation
-	  "Describe language environment (default current choice): ")))
+	  (format-prompt "Describe language environment" current-language-environment))))
   (if (null language-name)
       (setq language-name current-language-environment))
   (if (or (null language-name)
diff --git a/lisp/mh-e/mh-gnus.el b/lisp/mh-e/mh-gnus.el
index 6a9851662a..7898d7eece 100644
--- a/lisp/mh-e/mh-gnus.el
+++ b/lisp/mh-e/mh-gnus.el
@@ -129,7 +129,7 @@ mh-mml-minibuffer-read-disposition
   (unless default
     (setq default (mml-content-disposition type filename)))
   (let ((disposition (completing-read
-		      (format "Disposition (default %s): " default)
+		      (format-prompt "Disposition" default)
 		      '(("attachment") ("inline") (""))
 		      nil t nil nil default)))
     (if (not (equal disposition ""))
diff --git a/lisp/mh-e/mh-letter.el b/lisp/mh-e/mh-letter.el
index f5ad73d800..107a0ae5e4 100644
--- a/lisp/mh-e/mh-letter.el
+++ b/lisp/mh-e/mh-letter.el
@@ -390,10 +390,7 @@ mh-insert-letter
                 (or mh-sent-from-msg (nth 0 (mh-translate-range folder "cur")))
               (nth 0 (mh-translate-range folder "cur"))))
           (message
-           (read-string (concat "Message number"
-                                (or (and default
-                                         (format " (default %d): " default))
-                                    ": "))
+           (read-string (format-prompt "Message number" default)
                         nil nil
                         (if (numberp default)
                             (int-to-string default)
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el
index 70df9e6b0f..df3c711e3d 100644
--- a/lisp/mh-e/mh-mime.el
+++ b/lisp/mh-e/mh-mime.el
@@ -259,9 +259,7 @@ mh-display-with-external-viewer
               (methods (mapcar (lambda (x) (list (cdr (assoc 'viewer x))))
                                (mailcap-mime-info type 'all)))
               (def (caar methods))
-              (prompt (format "Viewer%s: " (if def
-                                               (format " (default %s)" def)
-                                             "")))
+              (prompt (format-prompt "Viewer" def))
               (method (completing-read prompt methods nil nil nil nil def))
               (folder mh-show-folder-buffer)
               (buffer-read-only nil))
@@ -395,9 +393,9 @@ mh-mime-save-parts
           ((and (or prompt
                     (equal t mh-mime-save-parts-default-directory))
                 mh-mime-save-parts-directory)
-           (read-directory-name (format
-                            "Store in directory (default %s): "
-                            mh-mime-save-parts-directory)
+           (read-directory-name (format-prompt
+                                 "Store in directory"
+                                 mh-mime-save-parts-directory)
                            "" mh-mime-save-parts-directory t ""))
           ((stringp mh-mime-save-parts-default-directory)
            mh-mime-save-parts-default-directory)
@@ -1258,11 +1256,7 @@ mh-mh-forward-message
   (interactive (list
                 (mml-minibuffer-read-description)
                 (mh-prompt-for-folder "Message from" mh-sent-from-folder nil)
-                (read-string (concat "Messages"
-                                     (if (numberp mh-sent-from-msg)
-                                         (format " (default %d): "
-                                                 mh-sent-from-msg)
-                                       ": ")))))
+                (read-string (format-prompt "Messages" mh-sent-from-msg))))
   (beginning-of-line)
   (insert "#forw [")
   (and description
@@ -1596,7 +1590,7 @@ mh-mml-query-cryptographic-method
   (if current-prefix-arg
       (let ((def (or (car mh-mml-cryptographic-method-history)
                      mh-mml-method-default)))
-        (completing-read (format "Method (default %s): " def)
+        (completing-read (format-prompt "Method" def)
                          '(("pgp") ("pgpmime") ("smime"))
                          nil t nil 'mh-mml-cryptographic-method-history def))
     mh-mml-method-default))
@@ -1731,7 +1725,7 @@ mh-minibuffer-read-type
          (type (or (and (not (equal probed-type "application/octet-stream"))
                         probed-type)
                    (completing-read
-                    (format "Content type (default %s): " default)
+                    (format-prompt "Content type" default)
                     (mapcar #'list (mailcap-mime-types))))))
     (if (not (equal type ""))
         type
diff --git a/lisp/mh-e/mh-seq.el b/lisp/mh-e/mh-seq.el
index e8a03f6704..4a464a3f55 100644
--- a/lisp/mh-e/mh-seq.el
+++ b/lisp/mh-e/mh-seq.el
@@ -390,10 +390,7 @@ mh-read-seq
 the NOT-EMPTY flag is non-nil, and supply an optional DEFAULT
 sequence. A reply of `%' defaults to the first sequence
 containing the current message."
-  (let* ((input (completing-read (format "%s sequence%s: " prompt
-                                         (if default
-                                             (format " (default %s)" default)
-                                           ""))
+  (let* ((input (completing-read (format-prompt "%s sequence" default prompt)
                                  (mh-seq-names mh-seq-list)
                                  nil nil nil 'mh-sequence-history))
          (seq (cond ((equal input "%")
@@ -646,13 +643,10 @@ mh-read-range
                         ((stringp default) default)
                         ((symbolp default) (symbol-name default))))
          (prompt (cond ((and guess large default)
-                        (format "%s (folder has %s messages, default %s)"
-                                prompt (car counts) default))
-                       ((and guess large)
-                        (format "%s (folder has %s messages)"
-                                prompt (car counts)))
+                        (format-prompt "%s (folder has %s messages)"
+                                default prompt (car counts)))
                        (default
-                         (format "%s (default %s)" prompt default))))
+                         (format-prompt prompt default))))
          (minibuffer-local-completion-map mh-range-completion-map)
          (seq-list (if (eq folder mh-current-folder)
                        mh-seq-list
@@ -662,7 +656,7 @@ mh-read-range
                   (mh-seq-names seq-list)))
          (input (cond ((and (not ask-flag) unseen) (symbol-name mh-unseen-seq))
                       ((and (not ask-flag) (not large)) "all")
-                      (t (completing-read (format "%s: " prompt)
+                      (t (completing-read prompt
                                           'mh-range-completion-function nil nil
                                           nil 'mh-range-history default))))
          msg-list)
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index d7c607df5c..8cb68f5cf1 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -758,10 +758,9 @@ mh-prompt-for-folder
 used in searching."
   (if (null default)
       (setq default ""))
-  (let* ((default-string (cond (default-string (format " (default %s)" default-string))
-                               ((equal "" default) "")
-                               (t (format " (default %s)" default))))
-         (prompt (format "%s folder%s: " prompt default-string))
+  (let* ((default-string (or default-string
+                             (if (equal default "") nil default)))
+         (prompt (format-prompt "%s folder" default-string prompt))
          (mh-current-folder-name mh-current-folder)
          read-name folder-name)
     (while (and (setq read-name (mh-folder-completing-read
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 55825e32fc..1c9b268942 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -3941,13 +3941,14 @@ format-prompt
 If DEFAULT is a list, the first element is used as the default.
 If not, the element is used as is.
 
-If DEFAULT is nil, no \"default value\" string is included in the
-return value."
+If DEFAULT is nil or an empty string, no \"default value\" string
+is included in the return value."
   (concat
    (if (null format-args)
        prompt
      (apply #'format prompt format-args))
    (and default
+        (length> default 0)
         (format minibuffer-default-prompt-format
                 (if (consp default)
                     (car default)
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 023c90cca5..13717b1b89 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -836,11 +836,7 @@ find-tag-tag
   "Read a tag name, with defaulting and completion."
   (let* ((completion-ignore-case (find-tag--completion-ignore-case))
 	 (default (find-tag--default))
-	 (spec (completing-read (if default
-				    (format "%s (default %s): "
-					    (substring string 0 (string-match "[ :]+\\'" string))
-					    default)
-				  string)
+	 (spec (completing-read (format-prompt string default)
 				(tags-lazy-completion-table)
 				nil nil nil nil default)))
     (if (equal spec "")
@@ -899,7 +895,7 @@ find-tag-noselect
 Contrast this with the ring of marks gone to by the command.
 
 See documentation of variable `tags-file-name'."
-  (interactive (find-tag-interactive "Find tag: "))
+  (interactive (find-tag-interactive "Find tag"))
 
   (setq find-tag-history (cons tagname find-tag-history))
   ;; Save the current buffer's value of `find-tag-hook' before
@@ -971,7 +967,7 @@ find-tag
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-definitions "25.1"))
-  (interactive (find-tag-interactive "Find tag: "))
+  (interactive (find-tag-interactive "Find tag"))
   (let* ((buf (find-tag-noselect tagname next-p regexp-p))
 	 (pos (with-current-buffer buf (point))))
     (condition-case nil
@@ -1000,7 +996,7 @@ find-tag-other-window
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-definitions-other-window "25.1"))
-  (interactive (find-tag-interactive "Find tag other window: "))
+  (interactive (find-tag-interactive "Find tag other window"))
 
   ;; This hair is to deal with the case where the tag is found in the
   ;; selected window's buffer; without the hair, point is moved in both
@@ -1041,7 +1037,7 @@ find-tag-other-frame
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-definitions-other-frame "25.1"))
-  (interactive (find-tag-interactive "Find tag other frame: "))
+  (interactive (find-tag-interactive "Find tag other frame"))
   (let ((pop-up-frames t))
     (with-suppressed-warnings ((obsolete find-tag-other-window))
       (find-tag-other-window tagname next-p))))
@@ -1065,7 +1061,7 @@ find-tag-regexp
 
 See documentation of variable `tags-file-name'."
   (declare (obsolete xref-find-apropos "25.1"))
-  (interactive (find-tag-interactive "Find tag regexp: " t))
+  (interactive (find-tag-interactive "Find tag regexp" t))
   ;; We go through find-tag-other-window to do all the display hair there.
   (funcall (if other-window 'find-tag-other-window 'find-tag)
 	   regexp next-p t))
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index e8e55ae96d..b72d9da748 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -7820,7 +7820,7 @@ idlwave-find-module
 	 (name (idlwave-completing-read
 		(if (or (not this-buffer)
 			(assoc default list))
-		    (format "Module (Default %s): " default)
+		    (format-prompt "Module" default)
 		  (format "Module in this file: "))
 		list))
 	 type class)
diff --git a/lisp/progmodes/inf-lisp.el b/lisp/progmodes/inf-lisp.el
index 146ed4dca4..af6ccce3d6 100644
--- a/lisp/progmodes/inf-lisp.el
+++ b/lisp/progmodes/inf-lisp.el
@@ -487,7 +487,7 @@ lisp-source-modes
 
 (defun lisp-load-file (file-name)
   "Load a Lisp file into the inferior Lisp process."
-  (interactive (comint-get-source "Load Lisp file: " lisp-prev-l/c-dir/file
+  (interactive (comint-get-source "Load Lisp file" lisp-prev-l/c-dir/file
 				  lisp-source-modes nil)) ; nil because LOAD
 					; doesn't need an exact name
   (comint-check-source file-name) ; Check to see if buffer needs saved.
@@ -500,7 +500,7 @@ lisp-load-file
 
 (defun lisp-compile-file (file-name)
   "Compile a Lisp file in the inferior Lisp process."
-  (interactive (comint-get-source "Compile Lisp file: " lisp-prev-l/c-dir/file
+  (interactive (comint-get-source "Compile Lisp file" lisp-prev-l/c-dir/file
 				  lisp-source-modes nil)) ; nil = don't need
 					; suffix .lisp
   (comint-check-source file-name) ; Check to see if buffer needs saved.
diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el
index 82e1343e05..f6a50bf1a8 100644
--- a/lisp/progmodes/tcl.el
+++ b/lisp/progmodes/tcl.el
@@ -1413,7 +1413,7 @@ tcl-load-file
    (list
     ;; car because comint-get-source returns a list holding the
     ;; filename.
-    (car (comint-get-source "Load Tcl file: "
+    (car (comint-get-source "Load Tcl file"
 			    (or (and
 				 (derived-mode-p 'tcl-mode)
 				 (buffer-file-name))
@@ -1433,7 +1433,7 @@ tcl-restart-with-file
 Prefix argument means switch to the Tcl buffer afterwards."
   (interactive
    (list
-    (car (comint-get-source "Restart with Tcl file: "
+    (car (comint-get-source "Restart with Tcl file"
 			    (or (and
 				 (derived-mode-p 'tcl-mode)
 				 (buffer-file-name))
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index ea52befec5..3cb4247b4b 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -1192,12 +1192,7 @@ xref--read-identifier
                (xref--prompt-p this-command))
            (let ((id
                   (completing-read
-                   (if def
-                       (format "%s (default %s): "
-                               (substring prompt 0 (string-match
-                                                    "[ :]+\\'" prompt))
-                               def)
-                     prompt)
+                   (format-prompt prompt def)
                    (xref-backend-identifier-completion-table backend)
                    nil nil nil
                    'xref--read-identifier-history def)))
@@ -1257,19 +1252,19 @@ xref-find-definitions
 definition for IDENTIFIER, display it in the selected window.
 Otherwise, display the list of the possible definitions in a
 buffer where the user can select from the list."
-  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (interactive (list (xref--read-identifier "Find definitions of")))
   (xref--find-definitions identifier nil))
 
 ;;;###autoload
 (defun xref-find-definitions-other-window (identifier)
   "Like `xref-find-definitions' but switch to the other window."
-  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (interactive (list (xref--read-identifier "Find definitions of")))
   (xref--find-definitions identifier 'window))
 
 ;;;###autoload
 (defun xref-find-definitions-other-frame (identifier)
   "Like `xref-find-definitions' but switch to the other frame."
-  (interactive (list (xref--read-identifier "Find definitions of: ")))
+  (interactive (list (xref--read-identifier "Find definitions of")))
   (xref--find-definitions identifier 'frame))
 
 ;;;###autoload
@@ -1280,7 +1275,7 @@ xref-find-references
 With prefix argument, or if `xref-prompt-for-identifier' is t,
 always prompt for the identifier.  If `xref-prompt-for-identifier'
 is nil, prompt only if there's no usable symbol at point."
-  (interactive (list (xref--read-identifier "Find references of: ")))
+  (interactive (list (xref--read-identifier "Find references of")))
   (xref--find-xrefs identifier 'references identifier nil))
 
 ;;;###autoload
diff --git a/lisp/ses.el b/lisp/ses.el
index a11c754abc..6058d48ed1 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -2653,9 +2653,7 @@ ses-read-printer
   (barf-if-buffer-read-only)
   (if (eq default t)
       (setq default "")
-    (setq prompt (format "%s (default %S): "
-			 (substring prompt 0 -2)
-			 default)))
+    (setq prompt (format-prompt prompt default)))
   (dolist (key ses-completion-keys)
     (define-key ses-mode-edit-map key 'ses-read-printer-complete-symbol))
   ;; make it globally visible, so that it can be visible from the minibuffer.
@@ -2702,7 +2700,7 @@ ses-read-cell-printer
                ;;Range contains differing printer functions
                (setq default t)
                (throw 'ses-read-cell-printer t))))))
-     (list (ses-read-printer (format "Cell %S printer: " ses--curcell)
+     (list (ses-read-printer (format "Cell %S printer" ses--curcell)
 			     default))))
   (unless (eq newval t)
     (ses-begin-change)
@@ -2716,7 +2714,7 @@ ses-read-column-printer
   (interactive
    (let ((col (cdr (ses-sym-rowcol ses--curcell))))
      (ses-check-curcell)
-     (list col (ses-read-printer (format "Column %s printer: "
+     (list col (ses-read-printer (format "Column %s printer"
 					 (ses-column-letter col))
 				 (ses-col-printer col)))))
 
@@ -2731,7 +2729,7 @@ ses-read-default-printer
   "Set the default printer function for cells that have no other.
 See `ses-read-cell-printer' for input forms."
   (interactive
-   (list (ses-read-printer "Default printer: " ses--default-printer)))
+   (list (ses-read-printer "Default printer" ses--default-printer)))
   (unless (eq newval t)
     (ses-begin-change)
     (ses-set-parameter 'ses--default-printer newval)
@@ -3773,7 +3771,7 @@ ses-define-local-printer
      (setq name (intern name))
      (let* ((cur-printer (gethash name ses--local-printer-hashmap))
             (default (and cur-printer (ses--locprn-def cur-printer))))
-            (setq def (ses-read-printer (format "Enter definition of printer %S: " name)
+            (setq def (ses-read-printer (format "Enter definition of printer %S" name)
                                         default)))
             (list name def)))
 
diff --git a/lisp/subr.el b/lisp/subr.el
index ef0e5e6f78..a2c1280fc1 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2806,9 +2806,9 @@ read-number
     (when default1
       (setq prompt
 	    (if (string-match "\\(\\):[ \t]*\\'" prompt)
-		(replace-match (format " (default %s)" default1) t t prompt 1)
+		(replace-match (format minibuffer-default-prompt-format default1) t t prompt 1)
 	      (replace-regexp-in-string "[ \t]*\\'"
-					(format " (default %s) " default1)
+					(format minibuffer-default-prompt-format default1)
 					prompt t t))))
     (while
 	(progn
diff --git a/lisp/term.el b/lisp/term.el
index 6beb17fb66..d41895ad3d 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -2535,7 +2535,7 @@ term-check-source
 ;; then the filename reader will only accept a file that exists.
 ;;
 ;; A typical use:
-;; (interactive (term-get-source "Compile file: " prev-lisp-dir/file
+;; (interactive (term-get-source "Compile file" prev-lisp-dir/file
 ;;                                 '(lisp-mode) t))
 
 ;; This is pretty stupid about strings.  It decides we're in a string
@@ -2566,9 +2566,7 @@ term-get-source
                       (car def)))
 	 (deffile (if sfile-p (file-name-nondirectory stringfile)
                       (cdr def)))
-	 (ans (read-file-name (if deffile (format "%s(default %s) "
-						  prompt    deffile)
-				  prompt)
+	 (ans (read-file-name (format-prompt prompt deffile)
 			      defdir
 			      (concat defdir deffile)
 			      mustmatch-p)))
diff --git a/src/minibuf.c b/src/minibuf.c
index d58924ae52..c9831fd50f 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -1490,8 +1490,8 @@ DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 4, 0,
 					      STRING_MULTIBYTE (prompt));
 	    }
 
-	  AUTO_STRING (format, "%s (default %s): ");
-	  prompt = CALLN (Fformat, format, prompt,
+	  prompt = CALLN (Ffuncall, intern("format-prompt"),
+			  prompt,
 			  CONSP (def) ? XCAR (def) : def);
 	}
 
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt'
  2021-03-23  3:47       ` Gabriel
@ 2021-03-24  9:32         ` Lars Ingebrigtsen
  0 siblings, 0 replies; 11+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-24  9:32 UTC (permalink / raw)
  To: Gabriel; +Cc: 47286

Gabriel <gabriel376@hotmail.com> writes:

> Thanks so much for your review. Here is an updated patch that removes
> the mentioned files (project.el, cc-styles.el and verilog-mode.el) and
> updates the 'format-prompt' function with the suggestion from Dmitry
> Gutov to consider an empty DEFAULT as nil. Let me know if something
> could be improved.

Looks good to me (although that latter change could probably have been a
separate patch for clarity).  Pushed now to Emacs 28.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2021-03-24  9:32 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-20 22:22 bug#47286: 28.0.50; [PATCH] Replace "(default %s)" with 'format-prompt' Gabriel
2021-03-21  6:07 ` Eli Zaretskii
2021-03-21 18:22   ` Gabriel
2021-03-21 15:53 ` Kévin Le Gouguec
2021-03-21 18:31   ` Gabriel
2021-03-21 18:57     ` Dmitry Gutov
2021-03-22  0:03       ` Gabriel
2021-03-22  0:48         ` Dmitry Gutov
2021-03-22 19:06     ` Lars Ingebrigtsen
2021-03-23  3:47       ` Gabriel
2021-03-24  9:32         ` Lars Ingebrigtsen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).