]> git.eshelyaron.com Git - emacs.git/commitdiff
(diff-switches): New fun.
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 10 Feb 2004 21:37:35 +0000 (21:37 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 10 Feb 2004 21:37:35 +0000 (21:37 +0000)
(diff, diff-backup): Use it.
(diff): Clean up the args construction.  Use backquote.
Use listp instead of consp to avoid putting a nil arg.

lisp/ChangeLog
lisp/diff.el

index 177bb887d35494d8beaf881f46d90c579656a7d0..9de5c2398ef5201d010bb4101e9bcf3f5d767900 100644 (file)
@@ -1,3 +1,10 @@
+2004-02-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * diff.el (diff-switches): New fun.
+       (diff, diff-backup): Use it.
+       (diff): Clean up the args construction.  Use backquote.
+       Use listp instead of consp to avoid putting a nil arg.
+
 2004-02-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * x-dnd.el (x-dnd-types-alist): Add COMPOUND_TEXT,  FILE_NAME
index 5981e1888e1e389b5424495efbb58cc3d2d9f55e..c776e36dfdcbc2dcc866968a2fe0471c99764c14 100644 (file)
@@ -1,6 +1,6 @@
 ;;; diff.el --- run `diff' in compilation-mode
 
-;; Copyright (C) 1992, 1994, 1996, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1994, 1996, 2001, 2004 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: unix, tools
@@ -185,39 +185,39 @@ is nil, REGEXP matches only half a hunk.")
               (t
                (cons msg code))))))
 
+;; prompt if prefix arg present
+(defun diff-switches ()
+  (if current-prefix-arg
+      (read-string "Diff switches: "
+                  (if (stringp diff-switches)
+                      diff-switches
+                    (mapconcat 'identity diff-switches " ")))))
+
 ;;;###autoload
 (defun diff (old new &optional switches no-async)
   "Find and display the differences between OLD and NEW files.
 Interactively the current buffer's file name is the default for NEW
 and a backup file for NEW is the default for OLD.
-With prefix arg, prompt for diff switches.
-If NO-ASYNC is non-nil, call diff synchronously."
+If NO-ASYNC is non-nil, call diff synchronously.
+With prefix arg, prompt for diff switches."
   (interactive
-   (nconc
-    (let (oldf newf)
-      (nreverse
-       (list
-       (setq newf (buffer-file-name)
-             newf (if (and newf (file-exists-p newf))
-                      (read-file-name
-                       (concat "Diff new file: (default "
-                               (file-name-nondirectory newf) ") ")
-                       nil newf t)
-                    (read-file-name "Diff new file: " nil nil t)))
-       (setq oldf (file-newest-backup newf)
-             oldf (if (and oldf (file-exists-p oldf))
-                      (read-file-name
-                       (concat "Diff original file: (default "
-                               (file-name-nondirectory oldf) ") ")
-                       (file-name-directory oldf) oldf t)
-                    (read-file-name "Diff original file: "
-                                    (file-name-directory newf) nil t))))))
-    (if current-prefix-arg
-       (list (read-string "Diff switches: "
-                          (if (stringp diff-switches)
-                              diff-switches
-                            (mapconcat 'identity diff-switches " "))))
-      nil)))
+   (let (oldf newf)
+     (setq newf (buffer-file-name)
+          newf (if (and newf (file-exists-p newf))
+                   (read-file-name
+                    (concat "Diff new file: (default "
+                            (file-name-nondirectory newf) ") ")
+                    nil newf t)
+                 (read-file-name "Diff new file: " nil nil t)))
+     (setq oldf (file-newest-backup newf)
+          oldf (if (and oldf (file-exists-p oldf))
+                   (read-file-name
+                    (concat "Diff original file: (default "
+                            (file-name-nondirectory oldf) ") ")
+                    (file-name-directory oldf) oldf t)
+                 (read-file-name "Diff original file: "
+                                 (file-name-directory newf) nil t)))
+     (list oldf newf (diff-switches))))
   (setq new (expand-file-name new)
        old (expand-file-name old))
   (let ((old-alt (file-local-copy old))
@@ -227,21 +227,19 @@ If NO-ASYNC is non-nil, call diff synchronously."
        (let ((compilation-process-setup-function 'diff-process-setup)
              (command
               (mapconcat 'identity
-                         (append (list diff-command)
-                                 ;; Use explicitly specified switches
-                                 (if switches
-                                     (if (consp switches)
-                                         switches (list switches))
-                                   ;; If not specified, use default.
-                                   (if (consp diff-switches)
-                                       diff-switches
-                                     (list diff-switches)))
-                                 (if (or old-alt new-alt)
-                                     (list "-L" old "-L" new))
-                                 (list
-                                  (shell-quote-argument (or old-alt old)))
-                                 (list
-                                  (shell-quote-argument (or new-alt new))))
+                         `(,diff-command
+                           ;; Use explicitly specified switches
+                           ,@(if switches
+                                 (if (listp switches)
+                                     switches (list switches))
+                               ;; If not specified, use default.
+                               (if (listp diff-switches)
+                                   diff-switches
+                                 (list diff-switches)))
+                           ,@(if (or old-alt new-alt)
+                                 (list "-L" old "-L" new))
+                           ,(shell-quote-argument (or old-alt old))
+                           ,(shell-quote-argument (or new-alt new)))
                          " ")))
          (setq buf
                (compile-internal command
@@ -270,15 +268,10 @@ If NO-ASYNC is non-nil, call diff synchronously."
   "Diff this file with its backup file or vice versa.
 Uses the latest backup, if there are several numerical backups.
 If this file is a backup, diff it with its original.
-The backup file is the first file given to `diff'."
+The backup file is the first file given to `diff'.
+With prefix arg, prompt for diff switches."
   (interactive (list (read-file-name "Diff (file with backup): ")
-                    (if current-prefix-arg
-                        (read-string "Diff switches: "
-                                     (if (stringp diff-switches)
-                                         diff-switches
-                                       (mapconcat 'identity
-                                                  diff-switches " ")))
-                      nil)))
+                    (diff-switches)))
   (let (bak ori)
     (if (backup-file-name-p file)
        (setq bak file