changeset 85890:d505125b0b46

2007-11-02 Michael Kifer <kifer@cs.stonybrook.edu> * viper-ex.el (viper-ex): do not ignore the region. * viper-cmd.el (viper-prev-destructive-command) (viper-insert-prev-from-insertion-ring): use ring-copy instead of copy-sequence. * ediff-util.el (ediff-make-current-diff-overlay): do not use face-name. Got rid of ediff-copy-list. * ediff-diff.el (ediff-set-fine-diff-properties-in-one-buffer): do not use face-name. (ediff-test-utility,ediff-diff-mandatory-option) (ediff-reset-diff-options): removed to simplify yhe mandatory option handling on windows. (ediff-set-diff-options): added. (ediff-diff-options): changed. * ediff-vers.el (ediff-vc-internal): use ediff-vc-revision-other-window. (ediff-vc-merge-internal): use ediff-vc-revision-other-window and ediff-vc-working-revision. Require vc-hooks.
author Michael Kifer <kifer@cs.stonybrook.edu>
date Fri, 02 Nov 2007 06:03:12 +0000
parents 683a6a9e56ab
children aa192da33904
files ChangeLog lisp/ediff-diff.el lisp/ediff-util.el lisp/ediff-vers.el lisp/emulation/viper-cmd.el lisp/emulation/viper-ex.el
diffstat 6 files changed, 79 insertions(+), 81 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Nov 02 03:42:05 2007 +0000
+++ b/ChangeLog	Fri Nov 02 06:03:12 2007 +0000
@@ -1,3 +1,27 @@
+2007-11-02  Michael Kifer  <kifer@cs.stonybrook.edu>
+	
+	* viper-ex.el (viper-ex): do not ignore the region.
+	
+	* viper-cmd.el (viper-prev-destructive-command)
+	(viper-insert-prev-from-insertion-ring): use ring-copy instead of
+	copy-sequence.
+
+	* ediff-util.el (ediff-make-current-diff-overlay): do not use face-name.
+	Got rid of ediff-copy-list.
+	
+	* ediff-diff.el (ediff-set-fine-diff-properties-in-one-buffer): do not
+	use face-name.
+	(ediff-test-utility,ediff-diff-mandatory-option)
+	(ediff-reset-diff-options): removed to simplify yhe mandatory option
+	handling on windows.
+	(ediff-set-diff-options): added.
+	(ediff-diff-options): changed.
+	
+	* ediff-vers.el (ediff-vc-internal): use ediff-vc-revision-other-window.
+	(ediff-vc-merge-internal): use ediff-vc-revision-other-window and
+	ediff-vc-working-revision.
+	Require vc-hooks.
+	
 2007-11-01  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
 	* configure.in: Remove HAVE_X11R5 check.
--- a/lisp/ediff-diff.el	Fri Nov 02 03:42:05 2007 +0000
+++ b/lisp/ediff-diff.el	Fri Nov 02 06:03:12 2007 +0000
@@ -48,7 +48,6 @@
   :prefix "ediff-"
   :group 'ediff)
 
-;; these two must be here to prevent ediff-test-utility from barking
 (defcustom ediff-diff-program "diff"
   "*Program to use for generating the differential of the two files."
   :type 'string
@@ -62,46 +61,8 @@
 
 ;; The following functions must precede all defcustom-defined variables.
 
-;; The following functions needed for setting diff/diff3 options
-;; test if diff supports the --binary option
-(defsubst ediff-test-utility (diff-util option &optional files)
-  (condition-case nil
-      (eq 0 (apply 'call-process
-		   (append (list diff-util nil nil nil option) files)))
-    (error (format "Cannot execute program %S." diff-util)))
-  )
-
-(defun ediff-diff-mandatory-option (diff-util)
-  (let ((file (if (boundp 'null-device) null-device "/dev/null")))
-    (cond  ((not (memq system-type '(ms-dos windows-nt windows-95)))
-	    "")
-	   ((and (string= diff-util ediff-diff-program)
-		 (ediff-test-utility
-		  ediff-diff-program "--binary" (list file file)))
-	    "--binary ")
-	   ((and (string= diff-util ediff-diff3-program)
-		 (ediff-test-utility
-		  ediff-diff3-program "--binary" (list file file file)))
-	    "--binary ")
-	   (t ""))))
-
-
-;; must be before ediff-reset-diff-options to avoid compiler errors
 (fset 'ediff-set-actual-diff-options '(lambda () nil))
 
-;; make sure that mandatory options are added even if the user changes
-;; ediff-diff-options or ediff-diff3-options in the customization widget
-(defun ediff-reset-diff-options (symb val)
-  (let* ((diff-program
-	  (if (eq symb 'ediff-diff-options)
-	      ediff-diff-program
-	    ediff-diff3-program))
-	 (mandatory-option (ediff-diff-mandatory-option diff-program)))
-    (set symb (concat mandatory-option val))
-    (ediff-set-actual-diff-options)
-    ))
-
-
 (defcustom ediff-shell
   (cond ((eq system-type 'emx) "cmd") ; OS/2
 	((memq system-type '(ms-dos windows-nt windows-95))
@@ -130,17 +91,25 @@
   :type '(repeat string)
   :group 'ediff-diff)
 
-(defcustom ediff-diff-options ""
+(defun ediff-set-diff-options (symbol value)
+  (set symbol value)
+  (ediff-set-actual-diff-options))
+
+(defcustom ediff-diff-options
+  (if (memq system-type '(ms-dos windows-nt windows-95)) "--binary" "")
   "*Options to pass to `ediff-diff-program'.
 If Unix diff is used as `ediff-diff-program',
 then a useful option is `-w', to ignore space.
 Options `-c', `-u', and `-i' are not allowed. Case sensitivity can be
 toggled interactively using \\[ediff-toggle-ignore-case].
 
+Do not remove the default options. If you need to change this variable, add new
+options after the default ones.
+
 This variable is not for customizing the look of the differences produced by
 the command \\[ediff-show-diff-output]. Use the variable
 `ediff-custom-diff-options' for that."
-  :set 'ediff-reset-diff-options
+  :set 'ediff-set-diff-options
   :type 'string
   :group 'ediff-diff)
 
@@ -179,7 +148,7 @@
   "Pattern to match lines produced by diff3 that describe differences.")
 (defcustom ediff-diff3-options ""
   "*Options to pass to `ediff-diff3-program'."
-  :set 'ediff-reset-diff-options
+  :set 'ediff-set-diff-options
   :type 'string
   :group 'ediff-diff)
 
@@ -889,9 +858,9 @@
   (let ((fine-diff-vector  (ediff-get-fine-diff-vector n buf-type))
 	(face (if default
 		  'default
-		(face-name
-		 (ediff-get-symbol-from-alist
-		  buf-type ediff-fine-diff-face-alist))))
+		(ediff-get-symbol-from-alist
+		 buf-type ediff-fine-diff-face-alist)
+		))
 	(priority (if default
 		      0
 		    (1+ (or (ediff-overlay-get
--- a/lisp/ediff-util.el	Fri Nov 02 03:42:05 2007 +0000
+++ b/lisp/ediff-util.el	Fri Nov 02 06:03:12 2007 +0000
@@ -3802,9 +3802,8 @@
       (let ((overlay (ediff-get-symbol-from-alist
 		      type ediff-current-diff-overlay-alist))
 	    (buffer (ediff-get-buffer type))
-	    (face (face-name
-		   (ediff-get-symbol-from-alist
-		    type ediff-current-diff-face-alist))))
+	    (face (ediff-get-symbol-from-alist
+		    type ediff-current-diff-face-alist)))
 	(set overlay
 	     (ediff-make-bullet-proof-overlay (point-max) (point-max) buffer))
 	(ediff-set-overlay-face (symbol-value overlay) face)
@@ -4292,20 +4291,7 @@
       (add-to-history history-var newelt)
     (set history-var (cons newelt (symbol-value history-var)))))
 
-(if (fboundp 'copy-sequence)
-    (defalias 'ediff-copy-list 'copy-sequence)
-  (defun ediff-copy-list (list)
-    (if (consp list)
-      ;;;(let ((res nil))
-      ;;;  (while (consp list) (push (pop list) res))
-      ;;;  (prog1 (nreverse res) (setcdr res list)))
-	(let (res elt)
-	  (while (consp list)
-	    (setq elt (car list)
-		  res (cons elt res)
-		  list (cdr list)))
-	  (nreverse res))
-      (car list))))
+(defalias 'ediff-copy-list 'copy-sequence)
 
 
 ;; don't report error if version control package wasn't found
--- a/lisp/ediff-vers.el	Fri Nov 02 03:42:05 2007 +0000
+++ b/lisp/ediff-vers.el	Fri Nov 02 06:03:12 2007 +0000
@@ -52,8 +52,22 @@
   :group 'ediff-vers
   )
 
+(defalias 'ediff-vc-revision-other-window
+      (if (fboundp 'vc-revision-other-window)
+	  'vc-revision-other-window
+	'vc-version-other-window))
+
+(defalias 'ediff-vc-working-revision
+  (if (fboundp 'vc-working-revision)
+      'vc-working-revision
+    vc-workfile-version))
+
 ;; VC.el support
 
+(eval-when-compile
+  (require 'vc-hooks)) ;; for vc-call macro
+
+
 (defun ediff-vc-latest-version (file)
   "Return the version level of the latest version of FILE in repository."
   (if (fboundp 'vc-latest-version)
@@ -77,12 +91,12 @@
 	(setq rev1 (ediff-vc-latest-version (buffer-file-name))))
     (save-window-excursion
       (save-excursion
-	(vc-revision-other-window rev1)
+	(ediff-vc-revision-other-window rev1)
 	(setq rev1buf (current-buffer)
 	      file1 (buffer-file-name)))
       (save-excursion
 	(or (string= rev2 "") 		; use current buffer
-	    (vc-revision-other-window rev2))
+	    (ediff-vc-revision-other-window rev2))
 	(setq rev2buf (current-buffer)
 	      file2 (buffer-file-name)))
       (setq startup-hooks
@@ -158,17 +172,17 @@
   (let (buf1 buf2 ancestor-buf)
     (save-window-excursion
       (save-excursion
-	(vc-revision-other-window rev1)
+	(ediff-vc-revision-other-window rev1)
 	(setq buf1 (current-buffer)))
       (save-excursion
 	(or (string= rev2 "")
-	    (vc-revision-other-window rev2))
+	    (ediff-vc-revision-other-window rev2))
 	(setq buf2 (current-buffer)))
       (if ancestor-rev
 	  (save-excursion
 	    (if (string= ancestor-rev "")
-		(setq ancestor-rev (vc-working-revision buffer-file-name)))
-	    (vc-revision-other-window ancestor-rev)
+		(setq ancestor-rev (ediff-vc-working-revision buffer-file-name)))
+	    (ediff-vc-revision-other-window ancestor-rev)
 	    (setq ancestor-buf (current-buffer))))
       (setq startup-hooks
 	    (cons
--- a/lisp/emulation/viper-cmd.el	Fri Nov 02 03:42:05 2007 +0000
+++ b/lisp/emulation/viper-cmd.el	Fri Nov 02 06:03:12 2007 +0000
@@ -1902,7 +1902,7 @@
 	(setq viper-intermediate-command
 	      'repeating-display-destructive-command)
       ;; first search through command history--set temp ring
-      (setq viper-temp-command-ring (copy-sequence viper-command-ring)))
+      (setq viper-temp-command-ring (ring-copy viper-command-ring)))
     (setq cmd (if next
 		  (viper-special-ring-rotate1 viper-temp-command-ring 1)
 		(viper-special-ring-rotate1 viper-temp-command-ring -1)))
@@ -1936,7 +1936,7 @@
 		 (length viper-last-inserted-string-from-insertion-ring))))
 	  )
       ;;first search through insertion history
-      (setq viper-temp-insertion-ring (copy-sequence viper-insertion-ring)))
+      (setq viper-temp-insertion-ring (ring-copy viper-insertion-ring)))
     (setq this-command 'viper-insert-from-insertion-ring)
     ;; so that things will be undone properly
     (setq buffer-undo-list (cons nil buffer-undo-list))
@@ -2790,6 +2790,7 @@
 
 (defun viper-next-line-carefully (arg)
   (condition-case nil
+      ;; do not use forward-line! need to keep column
       (next-line arg)
     (error nil)))
 
@@ -3089,6 +3090,7 @@
   (let ((val (viper-p-val arg))
 	(com (viper-getCom arg)))
     (if com (viper-move-marker-locally 'viper-com-point (point)))
+    ;; do not use forward-line! need to keep column
     (next-line val)
     (if viper-ex-style-motion
 	(if (and (eolp) (not (bolp))) (backward-char 1)))
@@ -3132,6 +3134,7 @@
   (let ((val (viper-p-val arg))
 	(com (viper-getCom arg)))
     (if com (viper-move-marker-locally 'viper-com-point (point)))
+    ;; do not use forward-line! need to keep column
     (previous-line val)
     (if viper-ex-style-motion
 	(if (and (eolp) (not (bolp))) (backward-char 1)))
--- a/lisp/emulation/viper-ex.el	Fri Nov 02 03:42:05 2007 +0000
+++ b/lisp/emulation/viper-ex.el	Fri Nov 02 06:03:12 2007 +0000
@@ -651,17 +651,19 @@
 	(setq initial-str (format "%d,%d" reg-beg-line reg-end-line)))
 
     (setq com-str
-	  (or string (viper-read-string-with-history
-		      ":"
-		      initial-str
-		      'viper-ex-history
-		      ;; no default when working on region
-		      (if initial-str
-			  nil
-			(car viper-ex-history))
-		      map
-		      (if initial-str
-			  " [Type command to execute on current region]"))))
+	  (if string
+	      (concat initial-str string)
+	    (viper-read-string-with-history
+	     ":"
+	     initial-str
+	     'viper-ex-history
+	     ;; no default when working on region
+	     (if initial-str
+		 nil
+	       (car viper-ex-history))
+	     map
+	     (if initial-str
+		 " [Type command to execute on current region]"))))
     (save-window-excursion
       ;; just a precaution
       (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))