]> git.eshelyaron.com Git - emacs.git/commitdiff
Prompt default extension in dired-mark-extension
authorChunyang Xu <mail@xuchunyang.me>
Mon, 27 Feb 2017 22:41:56 +0000 (00:41 +0200)
committerJuri Linkov <juri@linkov.net>
Mon, 27 Feb 2017 22:41:56 +0000 (00:41 +0200)
* lisp/dired-x.el (dired-mark-extension): Prompt default extension
based on extension of file at point.  (Bug#25578)

Copyright-paperwork-exempt: yes

lisp/dired-x.el

index 86c95372c251704f83e7524a1a2214a82e51c55d..6c8fb0e7dae207b39c644fc4fc4dc4fbe5eef3b5 100644 (file)
@@ -342,22 +342,29 @@ Interactively, ask for EXTENSION.
 Prefixed with one C-u, unmark files instead.
 Prefixed with two C-u's, prompt for MARKER-CHAR and mark files with it."
   (interactive
-   (let ((suffix
-          (read-string (format "%s extension: "
-                               (if (equal current-prefix-arg '(4))
-                                   "UNmarking"
-                                 "Marking"))))
-         (marker
-          (pcase current-prefix-arg
-            ('(4) ?\s)
-            ('(16)
-             (let* ((dflt (char-to-string dired-marker-char))
-                    (input (read-string
-                            (format
-                             "Marker character to use (default %s): " dflt)
-                            nil nil dflt)))
-               (aref input 0)))
-            (_ dired-marker-char))))
+   (let* ((default
+            (let ((file (dired-get-filename nil t)))
+              (when file
+                (file-name-extension file))))
+          (suffix
+           (read-string (format "%s extension%s: "
+                                (if (equal current-prefix-arg '(4))
+                                    "UNmarking"
+                                  "Marking")
+                                (if default
+                                    (format " (default %s)" default)
+                                  "")) nil nil default))
+          (marker
+           (pcase current-prefix-arg
+             ('(4) ?\s)
+             ('(16)
+              (let* ((dflt (char-to-string dired-marker-char))
+                     (input (read-string
+                             (format
+                              "Marker character to use (default %s): " dflt)
+                             nil nil dflt)))
+                (aref input 0)))
+             (_ dired-marker-char))))
      (list suffix marker)))
   (or (listp extension)
       (setq extension (list extension)))