]> git.eshelyaron.com Git - emacs.git/commitdiff
Make the coding system warning prettier
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 2 Sep 2021 08:51:39 +0000 (10:51 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 2 Sep 2021 08:51:39 +0000 (10:51 +0200)
* lisp/international/mule-cmds.el
(select-safe-coding-system--format-list): New function to display
the coding system information in a more readable format (bug#31062).
(select-safe-coding-system-interactively): Use it.

lisp/international/mule-cmds.el

index 8494d5409164014fcdc5f3a16cff0797b587dae8..a883c231cbd93295cfe06e873a7b2e9125fdef3d 100644 (file)
@@ -662,6 +662,22 @@ overrides that argument.")
                   (delq 'no-conversion (copy-sequence codings))))
       codings))
 
+(defun select-safe-coding-system--format-list (list)
+  (let ((spec "  %-20s %6s %10s %s\n"))
+    (insert (format spec "Coding System" "Pos" "Code Point" ""))
+    (cl-loop for (coding . pairs) in list
+             do (cl-loop for pair in pairs
+                         ;; If there's a lot, only do the first three.
+                         for i from 1 upto 3
+                         do (insert
+                             (format spec
+                                     (if (= i 1) coding "")
+                                     (car pair) (cdr pair)
+                                     (if (and (= i 3) (> (length pairs) 3))
+                                         "..."
+                                       ""))))))
+  (insert "\n"))
+
 (defun select-safe-coding-system-interactively (from to codings unsafe
                                                &optional rejected default)
   "Select interactively a coding system for the region FROM ... TO.
@@ -722,19 +738,12 @@ DEFAULT is the coding system to use by default in the query."
                                 (concat from "\"")))
               (format-message " text\nin the buffer `%s'" bufname))
             ":\n")
-           (let ((pos (point))
-                 (fill-prefix "  "))
-             (dolist (x (append rejected unsafe))
-               (princ "  ") (princ x))
-             (insert "\n")
-             (fill-region-as-paragraph pos (point)))
+            (select-safe-coding-system--format-list unsafe)
            (when rejected
              (insert "These safely encode the text in the buffer,
 but are not recommended for encoding text in this context,
 e.g., for sending an email message.\n ")
-             (dolist (x rejected)
-               (princ " ") (princ x))
-             (insert "\n"))
+              (select-safe-coding-system--format-list rejected))
            (when unsafe
              (insert (if rejected "The other coding systems"
                        "However, each of them")