diff lisp/ediff.el @ 33019:6306740f6938

2000-10-29 Michael Kifer <kifer@cs.sunysb.edu> * viper-cmd.el (viper-preserve-cursor-color): new test that avoids rewrawing the screen when changing cursor color. (viper-insert-state-pre-command-sentinel, viper-replace-state-pre-command-sentinel, viper-replace-state-post-command-sentinel): use viper-preserve-cursor-color. Many functions changed to use viper= instead of = when comparing characters. * viper-util.el (viper-memq-char,viper=): new functions for working with characters. (viper-change-cursor-color): fixed buglet. Many functions changed to use viper= instead of = when comparing characters. * viper.el (viper-insert-state-mode-list): added eshell. * ediff-init.el (ediff-before-setup-hook): new hook. Several typos fixed in various docstrings. * ediff-merg.el (ediff-show-clashes-only): docstring typo fixed. * ediff-nult.el (ediff-before-session-group-setup-hooks): new hook. (ediff-show-meta-buffer): run ediff-before-session-group-setup-hooks. * ediff-util.el (ediff-setup): run ediff-before-setup-hook. (ediff-other-buffer): use selected buffers if in Buffer-menu buffer. (ediff-get-selected-buffers): new function. * ediff-vers.el (ediff-vc-internal,ediff-rcs-internal, ediff-vc-merge-internal,ediff-rcs-merge-internal): use save-window-excursion. * ediff-wind.el (ediff-skip-unsuitable-frames): more robust termination check in while loop. * ediff.el (ediff-get-default-file-name): better defaults when in dired buffer. (ediff-files,ediff-merge-files,ediff-files3, ediff-merge-files-with-ancestor): use ediff-get-default-file-name.
author Michael Kifer <kifer@cs.stonybrook.edu>
date Sun, 29 Oct 2000 04:56:45 +0000
parents 42f9a58e0fc4
children d574be791ed3
line wrap: on
line diff
--- a/lisp/ediff.el	Sat Oct 28 21:30:03 2000 +0000
+++ b/lisp/ediff.el	Sun Oct 29 04:56:45 2000 +0000
@@ -6,8 +6,8 @@
 ;; Created: February 2, 1994
 ;; Keywords: comparing, merging, patching, version control.
 
-(defconst ediff-version "2.74" "The current version of Ediff")
-(defconst ediff-date "October 31, 1999" "Date of last update")  
+(defconst ediff-version "2.75" "The current version of Ediff")
+(defconst ediff-date "October 29, 2000" "Date of last update")  
 
 
 ;; This file is part of GNU Emacs.
@@ -163,13 +163,27 @@
     (toggle-read-only 1)))
 
 ;; Return a plausible default for ediff's first file:
-;; In dired, return the file name under the point, unless it is a directory
-;; If the buffer has a file name, return that file name.
-(defun ediff-get-default-file-name ()
+;; In dired, return the file number FILENO (or 0) in the list
+;; (all-selected-files, filename under the cursor), where directories are
+;; ignored. Otherwise, return DEFAULT file name, if non-nil. Else,
+;; if the buffer is visiting a file, return that file name.
+(defun ediff-get-default-file-name (&optional default fileno)
   (cond ((eq major-mode 'dired-mode)
-	 (let ((f (dired-get-filename nil 'no-error)))
-	   (if (and (stringp f) (not (file-directory-p f)))
-	       f)))
+	 (let ((current (dired-get-filename nil 'no-error))
+	       (marked (condition-case nil
+			   (dired-get-marked-files 'no-dir)
+			 (error)))
+	       aux-list choices result)
+	   (or (integerp fileno) (setq fileno 0))
+	   (if (stringp default)
+	       (setq aux-list (cons default aux-list)))
+	   (if (and (stringp current) (not (file-directory-p current)))
+	       (setq aux-list (cons current aux-list)))
+	   (setq choices (nconc  marked aux-list))
+	   (setq result (elt choices fileno))
+	   (or result
+	       default)))
+	((stringp default) default)
 	((buffer-file-name (current-buffer))
 	 (file-name-nondirectory (buffer-file-name (current-buffer))))
 	))
@@ -199,7 +213,7 @@
 						 (file-name-nondirectory f)
 						 dir-B))
 					       file-name-history))
-				   f))
+				   (ediff-get-default-file-name f 1)))
 	   )))
   (ediff-files-internal file-A 
 			(if (file-directory-p file-B)
@@ -234,7 +248,7 @@
 						     (file-name-nondirectory f)
 						     dir-B))
 						   file-name-history))
-					    f)))
+					    (ediff-get-default-file-name f 1))))
 	   (ediff-read-file-name "File C to compare" 
 				 (setq dir-C (if ediff-use-last-dir
 						 ediff-last-dir-C
@@ -246,7 +260,7 @@
 						 (file-name-nondirectory ff)
 						 dir-C))
 					       file-name-history))
-				   ff))
+				   (ediff-get-default-file-name ff 2)))
 	   )))
   (ediff-files-internal file-A 
 			(if (file-directory-p file-B)
@@ -1009,7 +1023,7 @@
 						 (file-name-nondirectory f)
 						 dir-B))
 					       file-name-history))
-				   f))
+				   (ediff-get-default-file-name f 1)))
 	   )))
   (setq startup-hooks (cons 'ediff-merge-on-startup startup-hooks))
   (ediff-files-internal file-A 
@@ -1052,7 +1066,7 @@
 						     (file-name-nondirectory f)
 						     dir-B))
 						   file-name-history))
-					    f)))
+					    (ediff-get-default-file-name f 1))))
 	   (ediff-read-file-name "Ancestor file" 
 				 (setq dir-ancestor
 				       (if ediff-use-last-dir
@@ -1065,7 +1079,7 @@
 						 (file-name-nondirectory ff)
 						 dir-ancestor))
 					       file-name-history))
-				   ff))
+				   (ediff-get-default-file-name ff 2)))
 	   )))
   (setq startup-hooks (cons 'ediff-merge-on-startup startup-hooks))
   (ediff-files-internal file-A