]> git.eshelyaron.com Git - emacs.git/commitdiff
new version
authorMichael Kifer <kifer@cs.stonybrook.edu>
Thu, 31 Jul 1997 04:04:23 +0000 (04:04 +0000)
committerMichael Kifer <kifer@cs.stonybrook.edu>
Thu, 31 Jul 1997 04:04:23 +0000 (04:04 +0000)
lisp/ediff-diff.el
lisp/ediff-init.el
lisp/ediff-merg.el
lisp/ediff-mult.el
lisp/ediff-ptch.el
lisp/ediff-util.el
lisp/ediff-vers.el
lisp/ediff-wind.el
lisp/ediff.el

index fc288bf933a85acfdf52f62df2f19232d3254bbd..6a9bc8d51f8bb55817c9d7cfa5429f4bf017f29b 100644 (file)
@@ -212,7 +212,7 @@ one optional arguments, diff-number to refine.")
                                 ediff-diff-options file1 file2)
             ;;(message "Computing differences ... done")
             (message "")
-            (ediff-eval-in-buffer diff-buffer
+            (ediff-with-current-buffer diff-buffer
               (buffer-size))))))
   
 
@@ -283,15 +283,15 @@ one optional arguments, diff-number to refine.")
       (setq ediff-error-buffer
            (get-buffer-create (ediff-unique-buffer-name
                                "*ediff-errors" "*"))))
-  (ediff-eval-in-buffer ediff-error-buffer
+  (ediff-with-current-buffer ediff-error-buffer
     (erase-buffer)
-    (insert (ediff-eval-in-buffer diff-buff (buffer-string)))
+    (insert (ediff-with-current-buffer diff-buff (buffer-string)))
     (goto-char (point-min))
     (delete-matching-lines ok-regexp)
     (if (memq system-type '(vax-vms axp-vms))
        (delete-matching-lines "^$")))
   ;; If diff reports errors, show them then quit.
-  (if (/= 0 (ediff-eval-in-buffer ediff-error-buffer (buffer-size)))
+  (if (/= 0 (ediff-with-current-buffer ediff-error-buffer (buffer-size)))
       (let ((ctl-buf ediff-control-buffer)
            (error-buf ediff-error-buffer))
        (ediff-skip-unsuitable-frames)
@@ -328,15 +328,15 @@ one optional arguments, diff-number to refine.")
               (ediff-get-value-according-to-buffer-type 'B bounds))))
     
     ;; reset point in buffers A/B/C
-    (ediff-eval-in-buffer A-buffer
+    (ediff-with-current-buffer A-buffer
       (goto-char (if shift-A shift-A (point-min))))
-    (ediff-eval-in-buffer B-buffer
+    (ediff-with-current-buffer B-buffer
       (goto-char (if shift-B shift-B (point-min))))
     (if (ediff-buffer-live-p C-buffer)
-       (ediff-eval-in-buffer C-buffer
+       (ediff-with-current-buffer C-buffer
          (goto-char (point-min))))
     
-    (ediff-eval-in-buffer diff-buffer
+    (ediff-with-current-buffer diff-buffer
       (goto-char (point-min))
       (while (re-search-forward ediff-match-diff-line nil t)
        (let* ((a-begin (string-to-int (buffer-substring (match-beginning 1)
@@ -404,20 +404,20 @@ one optional arguments, diff-number to refine.")
                   b-prev b-end
                   c-prev c-end)
           ;; else convert lines to points
-          (ediff-eval-in-buffer A-buffer
+          (ediff-with-current-buffer A-buffer
             (forward-line (- a-begin a-prev))
             (setq a-begin-pt (point))
             (forward-line (- a-end a-begin))
             (setq a-end-pt (point)
                   a-prev a-end))
-          (ediff-eval-in-buffer B-buffer
+          (ediff-with-current-buffer B-buffer
             (forward-line (- b-begin b-prev))
             (setq b-begin-pt (point))
             (forward-line (- b-end b-begin))
             (setq b-end-pt (point)
                   b-prev b-end))
           (if (ediff-buffer-live-p C-buffer)
-              (ediff-eval-in-buffer C-buffer
+              (ediff-with-current-buffer C-buffer
                 (forward-line (- c-begin c-prev))
                 (setq c-begin-pt (point))
                 (forward-line (- c-end c-begin))
@@ -447,7 +447,7 @@ one optional arguments, diff-number to refine.")
                             ))) 
                  )))
                  
-        ))) ; end ediff-eval-in-buffer
+        ))) ; end ediff-with-current-buffer
     diff-list
     ))
     
@@ -495,7 +495,7 @@ one optional arguments, diff-number to refine.")
     (setq total-diffs (length diff-list))
       
     ;; shift, if necessary
-    (ediff-eval-in-buffer buff (setq pt-saved shift))
+    (ediff-with-current-buffer buff (setq pt-saved shift))
           
     (while diff-list
       (setq current-diff (1+ current-diff)
@@ -524,12 +524,12 @@ one optional arguments, diff-number to refine.")
       ;; convert word numbers to points, if necessary
       (if (eq diff-list-type 'words)
          (progn
-           (ediff-eval-in-buffer buff (goto-char pt-saved))
+           (ediff-with-current-buffer buff (goto-char pt-saved))
            (setq begin (ediff-goto-word (1+ begin) buff)
                  end (ediff-goto-word end buff 'end))
            (if (> end limit) (setq end limit))
            (if (> begin end) (setq begin end))
-           (setq pt-saved (ediff-eval-in-buffer buff (point)))))
+           (setq pt-saved (ediff-with-current-buffer buff (point)))))
       (setq overlay (ediff-make-bullet-proof-overlay begin end buff))
       
       (ediff-overlay-put overlay 'priority ediff-shadow-overlay-priority)
@@ -553,7 +553,7 @@ one optional arguments, diff-number to refine.")
            (cdr diff-list))
       ) ; while
       
-    (set (intern (format "ediff-difference-vector-%S" buf-type))
+    (set (ediff-get-symbol-from-alist buf-type ediff-difference-vector-alist)
         (vconcat diff-overlay-list))
     ))
 
@@ -761,14 +761,15 @@ one optional arguments, diff-number to refine.")
        (face (if default 
                  'default
                (face-name
-                (intern (format "ediff-fine-diff-face-%S" buf-type)))))
+                (ediff-get-symbol-from-alist
+                 buf-type ediff-fine-diff-face-alist))))
        (priority (if default
                      0
                    (1+ (or (ediff-overlay-get
                             (symbol-value
-                             (intern
-                              (format
-                               "ediff-current-diff-overlay-%S" buf-type)))
+                             (ediff-get-symbol-from-alist
+                              buf-type
+                              ediff-current-diff-overlay-alist))
                             'priority)
                            0)))))
     (mapcar
@@ -806,7 +807,7 @@ one optional arguments, diff-number to refine.")
 
     (ediff-clear-fine-differences-in-one-buffer region-num buf-type)
     (setq diff-list (cdr diff-list)) ; discard list type (words or points)
-    (ediff-eval-in-buffer buff (goto-char reg-start))
+    (ediff-with-current-buffer buff (goto-char reg-start))
     
     ;; if it is a combined merge then set overlays in buff C specially
     (if (and ediff-merge-job (eq buf-type 'C)
@@ -909,18 +910,18 @@ one optional arguments, diff-number to refine.")
                   (ediff-get-value-according-to-buffer-type 'C bounds)))))
     
     ;; reset point in buffers A, B, C
-    (ediff-eval-in-buffer A-buffer
+    (ediff-with-current-buffer A-buffer
       (goto-char (if shift-A shift-A (point-min))))
-    (ediff-eval-in-buffer B-buffer
+    (ediff-with-current-buffer B-buffer
       (goto-char (if shift-B shift-B (point-min))))
     (if three-way-comp
-       (ediff-eval-in-buffer C-buffer
+       (ediff-with-current-buffer C-buffer
          (goto-char (if shift-C shift-C (point-min)))))
     (if (ediff-buffer-live-p anc-buffer)
-       (ediff-eval-in-buffer anc-buffer
+       (ediff-with-current-buffer anc-buffer
          (goto-char (point-min))))
     
-    (ediff-eval-in-buffer diff-buffer
+    (ediff-with-current-buffer diff-buffer
       (goto-char (point-min))
       (while (re-search-forward ediff-match-diff3-line nil t)
        ;; leave point after matched line
@@ -983,26 +984,26 @@ one optional arguments, diff-number to refine.")
                         b-prev b-end
                         c-prev c-end)
                 ;; else convert lines to points
-                (ediff-eval-in-buffer A-buffer
+                (ediff-with-current-buffer A-buffer
                   (forward-line (- a-begin a-prev))
                   (setq a-begin-pt (point))
                   (forward-line (- a-end a-begin))
                   (setq a-end-pt (point)
                         a-prev a-end))
-                (ediff-eval-in-buffer B-buffer
+                (ediff-with-current-buffer B-buffer
                   (forward-line (- b-begin b-prev))
                   (setq b-begin-pt (point))
                   (forward-line (- b-end b-begin))
                   (setq b-end-pt (point)
                         b-prev b-end))
-                (ediff-eval-in-buffer C-buffer
+                (ediff-with-current-buffer C-buffer
                   (forward-line (- c-begin c-prev))
                   (setq c-begin-pt (point))
                   (forward-line (- c-end c-begin))
                   (setq c-end-pt (point)
                         c-prev c-end))
                 (if (ediff-buffer-live-p anc-buffer)
-                    (ediff-eval-in-buffer anc-buffer
+                    (ediff-with-current-buffer anc-buffer
                       (forward-line (- c-or-anc-begin anc-prev))
                       (setq anc-begin-pt (point))
                       (forward-line (- c-or-anc-end c-or-anc-begin))
@@ -1034,7 +1035,7 @@ one optional arguments, diff-number to refine.")
                        )))
               ))
               
-        ))) ; end ediff-eval-in-buffer
+        ))) ; end ediff-with-current-buffer
     diff-list
     ))
     
@@ -1065,15 +1066,15 @@ one optional arguments, diff-number to refine.")
    
 
 ;; Execute PROGRAM asynchronously, unless OS/2, Windows-*, or DOS, or unless
-;; SYNCH is non-nil.  BUFFER must be a buffer object, and must be alive.  All
-;; arguments in ARGS must be strings. The first arg may be a blank string, in
-;; which case we delete it from ARGS list. We also delete nil from args.
-(defun ediff-exec-process (program buffer synch &rest args)
-  (let ((data (match-data)))
-    (if (string-match "^[ \t]*$" (car args)) ; delete blank string
-       (setq args (cdr args)))
-    (setq args (delq nil args)) ; delete nil from arguments
-    (setq args (ediff-split-string (mapconcat 'identity args " ")))
+;; SYNCH is non-nil.  BUFFER must be a buffer object, and must be alive.  The
+;; OPTIONS arg is a list of options to pass to PROGRAM. It may be a blank
+;; string.  All elements in FILES must be strings.  We also delete nil from
+;; args.
+(defun ediff-exec-process (program buffer synch options &rest files)
+  (let ((data (match-data))
+       args)
+    (setq args (append (split-string options) files))
+    (setq args (delete "" (delq nil args))) ; delete nil and "" from arguments
     (unwind-protect
        (let ((directory default-directory)
              proc)
@@ -1191,7 +1192,7 @@ argument to `skip-chars-forward'."
   (let (sv-point string)
     (save-excursion
      (set-buffer in-buffer)
-     (setq string (buffer-substring beg end))
+     (setq string (buffer-substring-no-properties beg end))
 
      (set-buffer out-buffer)
      (erase-buffer)
@@ -1205,7 +1206,7 @@ argument to `skip-chars-forward'."
        ;; different invocations
        (if control-buf
           (funcall 
-           (ediff-eval-in-buffer control-buf ediff-forward-word-function))
+           (ediff-with-current-buffer control-buf ediff-forward-word-function))
         (funcall ediff-forward-word-function))
        (setq sv-point (point))
        (skip-chars-forward ediff-whitespace)
@@ -1232,7 +1233,7 @@ argument to `skip-chars-forward'."
 (defun ediff-goto-word (n buf &optional flag)
   ;; remember val ediff-forward-word-function has in ctl buf
   (let ((fwd-word-fun ediff-forward-word-function))
-    (ediff-eval-in-buffer buf
+    (ediff-with-current-buffer buf
       (skip-chars-forward ediff-whitespace)
       (while (> n 1)
        (funcall fwd-word-fun)
@@ -1245,8 +1246,8 @@ argument to `skip-chars-forward'."
 
 ;;; Local Variables:
 ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
+;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
 ;;; End:
 
 
index d825cae43f09fad332e4b231dd3875eec8c0367f..30e67232ba1ad15d5e53a6d3e1c3f398fce24bb8 100644 (file)
@@ -97,6 +97,13 @@ that Ediff doesn't know about.")
 ;; The Ediff control buffer
 (ediff-defvar-local ediff-control-buffer nil "")
 
+
+;; Association between buff-type and ediff-buffer-*
+(defconst ediff-buffer-alist
+  '((?A . ediff-buffer-A)
+    (?B . ediff-buffer-B)
+    (?C . ediff-buffer-C)))
+
 ;;; Macros
 (defmacro ediff-odd-p (arg)
   (` (eq (logand (, arg) 1) 1)))
@@ -123,11 +130,26 @@ that Ediff doesn't know about.")
           ((memq (, arg) '(?c ?C)) 'C)
           )
   ))
+
+;; A-list is supposed to be of the form (A . symb) (B . symb)...)
+;; where the first part of any association is a buffer type and the second is
+;; an appropriate symbol. Given buffer-type, this function returns the
+;; symbol. This is used to avoid using `intern'
+(defsubst ediff-get-symbol-from-alist (buf-type alist)
+  (cdr (assoc buf-type alist)))
   
+(defconst ediff-difference-vector-alist
+  '((A . ediff-difference-vector-A)
+    (B . ediff-difference-vector-B)
+    (C . ediff-difference-vector-C)
+    (Ancestor . ediff-difference-vector-Ancestor)))
+
 (defmacro ediff-get-difference (n buf-type)
   (` (aref
       (symbol-value
-       (intern (format "ediff-difference-vector-%S" (, buf-type)))) (, n))))
+       (ediff-get-symbol-from-alist
+       (, buf-type) ediff-difference-vector-alist))
+      (, n))))
   
 ;; Tell if it has been previously determined that the region has
 ;; no diffs other than the white space and newlines
@@ -189,21 +211,18 @@ that Ediff doesn't know about.")
   (` (ediff-get-fine-diff-vector-from-diff-record
       (ediff-get-difference (, n) (, buf-type)))))
   
-;; Macro to switch to BUFFER, evaluate FORMS, returns to original buffer.
-;; Differs from `save-excursion' in that it doesn't save the point and mark.
-;; This is essentially `emerge-eval-in-buffer' with the test for live buffers."
-(defmacro ediff-eval-in-buffer (buffer &rest forms)
-  (` (let ((StartBuffer (current-buffer)))
-       (if (ediff-buffer-live-p (, buffer))
-          (unwind-protect
-              (progn
-                (set-buffer (, buffer))
-                (,@ forms))
-            (set-buffer StartBuffer))
-        (or (eq this-command 'ediff-quit)
-            (error ediff-KILLED-VITAL-BUFFER))
-        ))))
-        
+;; Macro to switch to BUFFER, evaluate BODY, returns to original buffer.
+;; Doesn't save the point and mark.
+;; This is `with-current-buffer' with the added test for live buffers."
+(defmacro ediff-with-current-buffer (buffer &rest body)
+  (` (if (ediff-buffer-live-p (, buffer))
+       (save-current-buffer
+        (set-buffer (, buffer))
+        (,@ body))
+     (or (eq this-command 'ediff-quit)
+        (error ediff-KILLED-VITAL-BUFFER))
+     )))
+     
 
 (defsubst ediff-multiframe-setup-p ()
   (and (ediff-window-display-p) ediff-multiframe))
@@ -561,6 +580,13 @@ ediff-toggle-hilit. Use `setq-default' to set it.")
 ;; The original values of ediff-protected-variables for buffer Ancestor
 (ediff-defvar-local ediff-buffer-values-orig-Ancestor nil "")
 
+;; association between buff-type and ediff-buffer-values-orig-*
+(defconst ediff-buffer-values-orig-alist
+  '((A . ediff-buffer-values-orig-A)
+    (B . ediff-buffer-values-orig-B)
+    (C . ediff-buffer-values-orig-C)
+    (Ancestor . ediff-buffer-values-orig-Ancestor)))
+
 ;; Buffer-local variables to be saved then restored during Ediff sessions
 (defconst ediff-protected-variables '(
                                      ;;buffer-read-only 
@@ -585,6 +611,12 @@ ediff-toggle-hilit. Use `setq-default' to set it.")
 (ediff-defvar-local ediff-difference-vector-B nil "")
 (ediff-defvar-local ediff-difference-vector-C nil "")
 (ediff-defvar-local ediff-difference-vector-Ancestor nil "")
+;; A-list of diff vector types associated with buffer types
+(defconst ediff-difference-vector-alist
+  '((A . ediff-difference-vector-A)
+    (B . ediff-difference-vector-B)
+    (C . ediff-difference-vector-C)
+    (Ancestor . ediff-difference-vector-Ancestor)))
 
 ;; [ status status status ...]
 ;; Each status: [state-of-merge state-of-ancestor]
@@ -743,14 +775,30 @@ appropriate symbol: `rcs', `pcl-cvs', or `generic-sc' if you so desire."
       (fset 'ediff-display-pixel-height
            (symbol-function 'x-display-pixel-height))))
       
+;; A-list of current-diff-overlay symbols asssociated with buf types
+(defconst ediff-current-diff-overlay-alist
+  '((A . ediff-current-diff-overlay-A)
+    (B . ediff-current-diff-overlay-B)
+    (C . ediff-current-diff-overlay-C)
+    (Ancestor . ediff-current-diff-overlay-Ancestor)))
+  
+;; A-list of current-diff-face-* symbols asssociated with buf types
+(defconst ediff-current-diff-face-alist
+  '((A . ediff-current-diff-face-A)
+    (B . ediff-current-diff-face-B)
+    (C . ediff-current-diff-face-C)
+    (Ancestor . ediff-current-diff-face-Ancestor)))
+  
 
 (defun ediff-make-current-diff-overlay (type)
   (if (ediff-has-face-support-p)
-      (let ((overlay (intern (format "ediff-current-diff-overlay-%S" type)))
+      (let ((overlay (ediff-get-symbol-from-alist
+                     type ediff-current-diff-overlay-alist))
            (buffer (ediff-get-buffer type))
            (face (face-name
                   (symbol-value
-                   (intern (format "ediff-current-diff-face-%S" type))))))
+                   (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)
@@ -1032,7 +1080,14 @@ ancestor buffer.")
                                     ediff-even-diff-pixmap)))
        'ediff-even-diff-face-Ancestor))
   "Face highlighting even-numbered differences in the ancestor buffer.")
-  
+
+;; Association between buffer types and even-diff-face symbols
+(defconst ediff-even-diff-face-alist
+  '((A . ediff-even-diff-face-A)
+    (B . ediff-even-diff-face-B)
+    (C . ediff-even-diff-face-C)
+    (Ancestor . ediff-even-diff-face-Ancestor)))
+
 (defvar ediff-odd-diff-face-A
   (if (ediff-has-face-support-p)
       (progn
@@ -1097,6 +1152,20 @@ ancestor buffer.")
        'ediff-odd-diff-face-Ancestor))
   "Face used to highlight even-numbered differences in the ancestor buffer.")
 
+;; Association between buffer types and odd-diff-face symbols
+(defconst ediff-odd-diff-face-alist
+  '((A . ediff-odd-diff-face-A)
+    (B . ediff-odd-diff-face-B)
+    (C . ediff-odd-diff-face-C)
+    (Ancestor . ediff-odd-diff-face-Ancestor)))
+  
+;; A-list of fine-diff face symbols associated with buffer types
+(defconst ediff-fine-diff-face-alist
+  '((A . ediff-fine-diff-face-A)
+    (B . ediff-fine-diff-face-B)
+    (C . ediff-fine-diff-face-C)
+    (Ancestor . ediff-fine-diff-face-Ancestor)))
+
 ;; Help echo
 (put 'ediff-fine-diff-face-A 'ediff-help-echo
      "A `refinement' of the current difference region")
@@ -1118,14 +1187,14 @@ ancestor buffer.")
   "Overlay for the current difference region in buffer C.")
 (ediff-defvar-local ediff-current-diff-overlay-Ancestor nil
   "Overlay for the current difference region in the ancestor buffer.")
-  
+
 ;; Compute priority of ediff overlay.
 (defun ediff-highest-priority (start end buffer)
   (let ((pos (max 1 (1- start)))
        ovr-list)
     (if ediff-xemacs-p
        (1+ ediff-shadow-overlay-priority)
-      (ediff-eval-in-buffer buffer
+      (ediff-with-current-buffer buffer
        (while (< pos (min (point-max) (1+ end)))
          (setq ovr-list (append (overlays-at pos) ovr-list))
          (setq pos (next-overlay-change pos)))
@@ -1240,16 +1309,18 @@ More precisely, a regexp to match any one such character.")
 (defsubst ediff-background-face (buf-type dif-num)
   ;; The value of dif-num is always 1- the one that user sees.
   ;; This is why even face is used when dif-num is odd.
-  (intern (format (if (ediff-odd-p dif-num)
-                     "ediff-even-diff-face-%S"
-                   "ediff-odd-diff-face-%S")
-                 buf-type)))
+  (ediff-get-symbol-from-alist
+   buf-type (if (ediff-odd-p dif-num)
+               ediff-even-diff-face-alist
+             ediff-odd-diff-face-alist)
+   ))
 
 
 ;; activate faces on diff regions in buffer
 (defun ediff-paint-background-regions-in-one-buffer (buf-type unhighlight)
   (let ((diff-vector 
-        (eval (intern (format "ediff-difference-vector-%S" buf-type))))
+        (eval (ediff-get-symbol-from-alist
+               buf-type ediff-difference-vector-alist)))
        overl diff-num)
     (mapcar (function
             (lambda (rec)
@@ -1279,14 +1350,15 @@ More precisely, a regexp to match any one such character.")
 (defun ediff-highlight-diff-in-one-buffer (n buf-type)
   (if (ediff-buffer-live-p (ediff-get-buffer buf-type))
       (let* ((buff (ediff-get-buffer buf-type))
-            (last (ediff-eval-in-buffer buff (point-max)))
+            (last (ediff-with-current-buffer buff (point-max)))
             (begin (ediff-get-diff-posn buf-type 'beg n))
             (end (ediff-get-diff-posn buf-type 'end n))
             (xtra (if (equal begin end) 1 0))
             (end-hilit (min last (+ end xtra)))
             (current-diff-overlay 
              (symbol-value
-              (intern (format "ediff-current-diff-overlay-%S" buf-type)))))
+              (ediff-get-symbol-from-alist
+               buf-type ediff-current-diff-overlay-alist))))
        
        (if ediff-xemacs-p
            (ediff-move-overlay current-diff-overlay begin end-hilit)
@@ -1305,7 +1377,8 @@ More precisely, a regexp to match any one such character.")
   (if (ediff-buffer-live-p (ediff-get-buffer buf-type))
       (let ((current-diff-overlay 
             (symbol-value
-             (intern (format "ediff-current-diff-overlay-%S" buf-type))))
+             (ediff-get-symbol-from-alist
+              buf-type ediff-current-diff-overlay-alist)))
            (overlay
             (ediff-get-diff-overlay ediff-current-difference buf-type))
            )
@@ -1326,7 +1399,8 @@ More precisely, a regexp to match any one such character.")
   (if (and (ediff-has-face-support-p) ediff-use-faces)
       (let* ((inhibit-quit t)
             (current-diff-overlay-var
-             (intern (format "ediff-current-diff-overlay-%S" buf-type)))
+             (ediff-get-symbol-from-alist
+              buf-type ediff-current-diff-overlay-alist))
             (current-diff-overlay (symbol-value current-diff-overlay-var)))
        (ediff-paint-background-regions 'unhighlight)
        (if (ediff-overlayp current-diff-overlay)
@@ -1557,7 +1631,7 @@ Checks if overlay's buffer exists."
       (ediff-empty-diff-region-p n buf-type)
       (let ((beg (ediff-get-diff-posn buf-type 'beg n))
            (end (ediff-get-diff-posn buf-type 'end n)))
-       (ediff-eval-in-buffer (ediff-get-buffer buf-type)
+       (ediff-with-current-buffer (ediff-get-buffer buf-type)
          (save-excursion
            (goto-char beg)
            (skip-chars-forward ediff-whitespace)
@@ -1632,8 +1706,8 @@ Checks if overlay's buffer exists."
 
     
 (defsubst ediff-get-region-contents (n buf-type ctrl-buf &optional start end)
-  (ediff-eval-in-buffer 
-      (ediff-eval-in-buffer ctrl-buf (ediff-get-buffer buf-type))
+  (ediff-with-current-buffer 
+      (ediff-with-current-buffer ctrl-buf (ediff-get-buffer buf-type))
     (buffer-substring
      (or start (ediff-get-diff-posn buf-type 'beg n ctrl-buf))
      (or end (ediff-get-diff-posn buf-type 'end n ctrl-buf)))))
@@ -1678,8 +1752,8 @@ Checks if overlay's buffer exists."
 
 ;;; Local Variables:
 ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
+;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
 ;;; End:
      
 (provide 'ediff-init)
index f2cdf4cbc228d2360025011bc0364086efd2b9e4..142d9fc9ac2d45e532689169c54f3d24bb88f040 100644 (file)
@@ -281,7 +281,7 @@ Combining is done according to the specifications in variable
            reg-a-beg reg-a-end reg-b-beg reg-b-end reg-c-beg reg-c-end)
        
        (if combined
-           (ediff-eval-in-buffer ediff-buffer-C
+           (ediff-with-current-buffer ediff-buffer-C
              (goto-char reg-beg)
              (search-forward pat1 reg-end 'noerror)
              (setq reg-a-beg (match-beginning 0))
@@ -300,8 +300,8 @@ Combining is done according to the specifications in variable
 
 ;;; Local Variables:
 ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
+;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
 ;;; End:
 
 ;; ediff-merg.el ends here
index c6fa5694612d0caadeb2ea81b58ed69de53a64de..98d41109baec61edf9f579383ce342f7a23aa20c 100644 (file)
@@ -559,7 +559,7 @@ Moves in circular fashion. With numeric prefix arg, skip this many items."
   (let* ((meta-buffer-name 
          (ediff-unique-buffer-name meta-buffer-name "*"))
         (meta-buffer (get-buffer-create meta-buffer-name)))
-    (ediff-eval-in-buffer meta-buffer
+    (ediff-with-current-buffer meta-buffer
 
       ;; comes first
       (ediff-meta-mode)
@@ -662,7 +662,7 @@ Moves in circular fashion. With numeric prefix arg, skip this many items."
        regexp elt session-buf f1 f2 f3 pt 
        merge-autostore-dir
        point tmp-list buffer-read-only)
-    (ediff-eval-in-buffer meta-buf
+    (ediff-with-current-buffer meta-buf
       (setq point (point))
       (erase-buffer)
       (insert (format ediff-meta-buffer-message
@@ -828,7 +828,7 @@ Moves in circular fashion. With numeric prefix arg, skip this many items."
     ;; skip the directory part
     (setq diff-list (cdr diff-list))
     (setq ediff-dir-diffs-buffer (get-buffer-create buf-name))
-    (ediff-eval-in-buffer ediff-dir-diffs-buffer
+    (ediff-with-current-buffer ediff-dir-diffs-buffer
       (use-local-map ediff-dir-diffs-buffer-map)
       (erase-buffer)
       (setq ediff-meta-buffer meta-buf)
@@ -938,7 +938,7 @@ Useful commands:
 
 ;; argument is ignored
 (defun ediff-redraw-registry-buffer (&optional ignore)
-  (ediff-eval-in-buffer ediff-registry-buffer
+  (ediff-with-current-buffer ediff-registry-buffer
     (let ((point (point))
          elt bufAname bufBname bufCname cur-diff total-diffs pt
          job-name meta-list registry-list buffer-read-only)
@@ -975,7 +975,7 @@ Useful commands:
              registry-list (cdr registry-list))
        
        (if (ediff-buffer-live-p elt)
-           (if (ediff-eval-in-buffer elt
+           (if (ediff-with-current-buffer elt
                  (setq job-name ediff-metajob-name
                        meta-list ediff-meta-list)
                  (and ediff-metajob-name
@@ -1000,7 +1000,7 @@ Useful commands:
                                       ""))))
                  (ediff-set-meta-overlay pt (point) elt))
              (progn
-               (ediff-eval-in-buffer elt
+               (ediff-with-current-buffer elt
                  (setq bufAname (if (ediff-buffer-live-p ediff-buffer-A)
                                     (buffer-name ediff-buffer-A)
                                   "!!!killed buffer!!!")
@@ -1143,7 +1143,7 @@ Useful commands:
        (metajob ediff-metajob-name)
        tmp-buf custom-diff-buf)
     (if (ediff-buffer-live-p session-buf)
-       (ediff-eval-in-buffer session-buf
+       (ediff-with-current-buffer session-buf
          (if (eq ediff-control-buffer session-buf) ; individual session
              (progn
                (ediff-compute-custom-diffs-maybe)
@@ -1191,7 +1191,7 @@ all marked sessions must be active."
       (setq ediff-meta-diff-buffer
            (get-buffer-create
             (ediff-unique-buffer-name "*Ediff Multifile Diffs" "*"))))
-  (ediff-eval-in-buffer ediff-meta-diff-buffer
+  (ediff-with-current-buffer ediff-meta-diff-buffer
     (erase-buffer))
   (if (> (ediff-operate-on-marked-sessions 'ediff-append-custom-diff) 0)
       ;; did something
@@ -1207,7 +1207,7 @@ all marked sessions must be active."
         (info (ediff-get-meta-info meta-buf pos 'noerror))
         (patchbuffer ediff-meta-patchbufer))
     (if (ediff-buffer-live-p patchbuffer)
-       (ediff-eval-in-buffer patchbuffer
+       (ediff-with-current-buffer patchbuffer
          (save-restriction
            (if (not info)
                (widen)
@@ -1249,7 +1249,7 @@ all marked sessions must be active."
                (ediff-update-meta-buffer meta-buf))
            (error "Aborted"))))
 
-    (ediff-eval-in-buffer meta-buf
+    (ediff-with-current-buffer meta-buf
       (setq merge-autostore-dir
            (ediff-get-group-merge-autostore-dir ediff-meta-list))
       (goto-char pos) ; if the user clicked on session--move point there
@@ -1299,7 +1299,7 @@ all marked sessions must be active."
 
            ;; handle an individual session with a live control buffer
            ((ediff-buffer-live-p session-buf)
-            (ediff-eval-in-buffer session-buf
+            (ediff-with-current-buffer session-buf
               (setq ediff-mouse-pixel-position (mouse-pixel-position))
               (ediff-recenter 'no-rehighlight)))
 
@@ -1387,18 +1387,18 @@ all marked sessions must be active."
 
     (if (ediff-buffer-live-p ctl-buf)
        ;; check if this is ediff-control-buffer or ediff-meta-buffer
-       (if (ediff-eval-in-buffer ctl-buf
+       (if (ediff-with-current-buffer ctl-buf
              (eq (key-binding "q") 'ediff-quit-meta-buffer))
            ;; it's a meta-buffer -- last action should just display it
            (ediff-show-meta-buffer ctl-buf)
          ;; it's a session buffer -- invoke go back to session
-         (ediff-eval-in-buffer ctl-buf
+         (ediff-with-current-buffer ctl-buf
            (setq ediff-mouse-pixel-position (mouse-pixel-position))
            (ediff-recenter 'no-rehighlight)))
       (beep)
       (message "You've selected a stale session --- try again")
       (ediff-update-registry))
-    (ediff-eval-in-buffer buf
+    (ediff-with-current-buffer buf
       (goto-char pos))
     ))
 
@@ -1417,7 +1417,7 @@ all marked sessions must be active."
            "Can't find this session's group panel -- session itself is ok")))
 
     (ediff-cleanup-meta-buffer meta-buf)
-    (ediff-eval-in-buffer meta-buf
+    (ediff-with-current-buffer meta-buf
       (save-excursion
        (cond ((setq wind (ediff-get-visible-buffer-window meta-buf))
               (or silent
@@ -1461,7 +1461,7 @@ all marked sessions must be active."
         (meta-buf (ediff-event-buffer last-command-event))
         (info (ediff-get-meta-info meta-buf pos))
         (meta-or-session-buf info))
-    (ediff-eval-in-buffer meta-or-session-buf
+    (ediff-with-current-buffer meta-or-session-buf
       (ediff-show-meta-buffer))))
 
 ;;;###autoload
@@ -1474,7 +1474,7 @@ all marked sessions must be active."
   (let (wind frame)
     ;; for some reason, point moves in ediff-registry-buffer, so we preserve it
     ;; explicitly
-    (ediff-eval-in-buffer ediff-registry-buffer
+    (ediff-with-current-buffer ediff-registry-buffer
       (save-excursion
        (cond  ((setq wind
                      (ediff-get-visible-buffer-window ediff-registry-buffer))
@@ -1516,14 +1516,14 @@ all marked sessions must be active."
 ;; parent meta-buf
 ;; Check if META-BUF exists before calling this function
 (defun ediff-update-meta-buffer (meta-buf)
-  (ediff-eval-in-buffer (current-buffer)
+  (ediff-with-current-buffer (current-buffer)
     (if (ediff-buffer-live-p meta-buf)
-       (ediff-eval-in-buffer meta-buf
+       (ediff-with-current-buffer meta-buf
          (funcall ediff-meta-redraw-function ediff-meta-list))
       )))
 
 (defun ediff-update-registry ()
-  (ediff-eval-in-buffer (current-buffer)
+  (ediff-with-current-buffer (current-buffer)
     (if (ediff-buffer-live-p ediff-registry-buffer)
        (ediff-redraw-registry-buffer)
       (ediff-prepare-meta-buffer 
@@ -1538,7 +1538,7 @@ all marked sessions must be active."
 ;; Otherwise, nothing happens.
 (defun ediff-cleanup-meta-buffer (meta-buffer)
   (if (ediff-buffer-live-p meta-buffer)
-      (ediff-eval-in-buffer meta-buffer
+      (ediff-with-current-buffer meta-buffer
        (ediff-update-meta-buffer meta-buffer)
        (if (ediff-buffer-live-p ediff-parent-meta-buffer)
            (ediff-update-meta-buffer ediff-parent-meta-buffer)))))
@@ -1550,7 +1550,7 @@ all marked sessions must be active."
            (cont t)
            buffer-read-only)
        (ediff-update-meta-buffer meta-buffer)
-       (ediff-eval-in-buffer meta-buffer
+       (ediff-with-current-buffer meta-buffer
          (setq lis (cdr lis)) ; discard the description part of meta-list
          (while (and cont lis)
            (if (ediff-buffer-live-p
@@ -1596,7 +1596,7 @@ If this is a session registry buffer then just bury it."
 
 (defun ediff-dispose-of-meta-buffer (buf)
   (setq ediff-session-registry (delq buf ediff-session-registry))
-  (ediff-eval-in-buffer buf
+  (ediff-with-current-buffer buf
     (if (ediff-buffer-live-p ediff-dir-diffs-buffer)
        (kill-buffer ediff-dir-diffs-buffer)))
   (kill-buffer buf))
@@ -1609,7 +1609,7 @@ If this is a session registry buffer then just bury it."
 (defun ediff-get-meta-info (buf point &optional noerror)
   (let (result olist tmp)
     (if (and point (ediff-buffer-live-p buf))
-       (ediff-eval-in-buffer buf
+       (ediff-with-current-buffer buf
          (if ediff-xemacs-p
              (setq result
                    (if (setq tmp (extent-at point buf 'ediff-meta-info))
@@ -1702,7 +1702,7 @@ If this is a session registry buffer then just bury it."
        (error
         "Patch has been already applied to this file--cannot be repeated!"))
 
-    (ediff-eval-in-buffer meta-patchbuf
+    (ediff-with-current-buffer meta-patchbuf
       (save-restriction
        (widen)
        (narrow-to-region beg-marker end-marker)
@@ -1747,8 +1747,8 @@ This is used only for sessions that involve 2 or 3 files at the same time."
 
 ;;; Local Variables:
 ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
+;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
 ;;; End:
 
 ;;; ediff-mult.el ends here
index ca63ce1830b5a97fc5a9429515edbcf6379fc072..901e6053986c03a28f40cd4ea2714cf025065c37 100644 (file)
@@ -155,7 +155,7 @@ program."
 ;; no longer used
 ;; return the number of matches of regexp in buf starting from the beginning
 (defun ediff-count-matches (regexp buf)
-  (ediff-eval-in-buffer buf
+  (ediff-with-current-buffer buf
     (let ((count 0) opoint)
       (save-excursion
        (goto-char (point-min))
@@ -174,7 +174,7 @@ program."
 ;; it for the end. This list is then assigned to ediff-patch-map.
 ;; Returns the number of elements in the list ediff-patch-map
 (defun ediff-map-patch-buffer (buf)
-  (ediff-eval-in-buffer buf
+  (ediff-with-current-buffer buf
     (let ((count 0)
          (mark1 (move-marker (make-marker) (point-min)))
          (mark1-end (point-min))
@@ -403,7 +403,7 @@ Else, read patch file into a new buffer."
             (read-file-name "Which file contains the patch? "
                             dir nil 'must-match))))
     
-    (ediff-eval-in-buffer patch-buf
+    (ediff-with-current-buffer patch-buf
       (goto-char (point-min))
       (or (ediff-get-visible-buffer-window patch-buf)
          (progn
@@ -418,7 +418,7 @@ Else, read patch file into a new buffer."
 ;; Should return either the ctl buffer or the meta-buffer
 (defun ediff-dispatch-file-patching-job (patch-buf filename
                                                   &optional startup-hooks)
-  (ediff-eval-in-buffer patch-buf
+  (ediff-with-current-buffer patch-buf
     ;; relativize names in the patch with respect to source-file
     (ediff-fixup-patch-map filename)
     (if (< (length ediff-patch-map) 2)
@@ -438,7 +438,7 @@ Else, read patch file into a new buffer."
   (let* ((buf-to-patch (get-buffer buf-to-patch-name))
         (file-name-ok (if buf-to-patch (buffer-file-name  buf-to-patch)))
         (buf-mod-status (buffer-modified-p buf-to-patch))
-        (multifile-patch-p (> (length (ediff-eval-in-buffer patch-buf
+        (multifile-patch-p (> (length (ediff-with-current-buffer patch-buf
                                         ediff-patch-map)) 1))
         default-dir file-name ctl-buf)
     (if file-name-ok
@@ -446,7 +446,7 @@ Else, read patch file into a new buffer."
       (if multifile-patch-p
          (error
           "Can't apply multi-file patches to buffers that visit no files"))
-      (ediff-eval-in-buffer buf-to-patch
+      (ediff-with-current-buffer buf-to-patch
        (setq default-dir default-directory)
        (setq file-name (ediff-make-temp-file buf-to-patch))
        (set-visited-file-name file-name)
@@ -466,15 +466,15 @@ Else, read patch file into a new buffer."
        ()
       ;; buffer wasn't visiting any file,
       ;; so we will not run meta-level ediff here
-      (ediff-eval-in-buffer ctl-buf
+      (ediff-with-current-buffer ctl-buf
        (delete-file (buffer-file-name ediff-buffer-A))
        (delete-file (buffer-file-name ediff-buffer-B))
-       (ediff-eval-in-buffer ediff-buffer-A
+       (ediff-with-current-buffer ediff-buffer-A
          (if default-dir (setq default-directory default-dir))
          (set-visited-file-name nil)
          (rename-buffer buf-to-patch-name)
          (set-buffer-modified-p buf-mod-status))
-       (ediff-eval-in-buffer ediff-buffer-B
+       (ediff-with-current-buffer ediff-buffer-B
          (setq buffer-auto-save-file-name nil) ; don't create auto-save file
          (if default-dir (setq default-directory default-dir))
          (set-visited-file-name nil)
@@ -496,7 +496,7 @@ Else, read patch file into a new buffer."
         (true-source-filename source-filename)
         (target-filename source-filename)
         target-buf buf-to-patch file-name-magic-p 
-        patch-return-code ctl-buf backup-style)
+        patch-return-code ctl-buf backup-style aux-wind)
          
     (if (string-match "-V" ediff-patch-options)
        (error
@@ -520,7 +520,7 @@ Else, read patch file into a new buffer."
     ;; could be checked back in.
     (ediff-maybe-checkout buf-to-patch)
 
-    (ediff-eval-in-buffer patch-diagnostics
+    (ediff-with-current-buffer patch-diagnostics
       (insert-buffer patch-buf)
       (message "Applying patch ... ")
       ;; fix environment for gnu patch, so it won't make numbered extensions
@@ -593,7 +593,7 @@ In particular, check the documentation for `ediff-backup-specs'. "
     ;; old-name_orig) and the result of patching will have the same name as
     ;; the original.
     (if (not file-name-magic-p)
-       (ediff-eval-in-buffer buf-to-patch
+       (ediff-with-current-buffer buf-to-patch
          (set-visited-file-name
           (concat source-filename ediff-backup-extension))
          (set-buffer-modified-p nil))
@@ -626,7 +626,7 @@ In particular, check the documentation for `ediff-backup-specs'. "
          (ediff-buffers-internal
           buf-to-patch target-buf nil
           startup-hooks 'epatch))
-    (ediff-eval-in-buffer ctl-buf
+    (ediff-with-current-buffer ctl-buf
       (setq ediff-patchbufer patch-buf
            ediff-patch-diagnostics patch-diagnostics))
   
@@ -648,7 +648,7 @@ In particular, check the documentation for `ediff-backup-specs'. "
                startup-hooks))
     (setq meta-buf (ediff-prepare-meta-buffer 
                    'ediff-filegroup-action
-                   (ediff-eval-in-buffer patch-buf
+                   (ediff-with-current-buffer patch-buf
                      ;; nil replaces a regular expression
                      (cons (list nil (format "%S" patch-buf))
                            ediff-patch-map))
@@ -664,8 +664,8 @@ In particular, check the documentation for `ediff-backup-specs'. "
 
 ;;; Local Variables:
 ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
+;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
 ;;; End:
 
 ;;; ediff-ptch.el ends here
index a87e45496484ac6e1eb5e1765ac432510bf95653..0d0cf25a903190d82cd6a67b1829db4f34b6a16b 100644 (file)
@@ -260,9 +260,9 @@ to invocation.")
            (ediff-convert-standard-filename (expand-file-name file-C))))
   (let* ((control-buffer-name 
          (ediff-unique-buffer-name "*Ediff Control Panel" "*"))
-        (control-buffer (ediff-eval-in-buffer buffer-A
+        (control-buffer (ediff-with-current-buffer buffer-A
                           (get-buffer-create control-buffer-name))))
-    (ediff-eval-in-buffer control-buffer
+    (ediff-with-current-buffer control-buffer
       (ediff-mode)                 
        
       (make-local-variable 'ediff-use-long-help-message)
@@ -325,7 +325,7 @@ to invocation.")
            (save-excursion
              (set-buffer buffer-C)
              (insert-buffer buf)
-             (funcall (ediff-eval-in-buffer buf major-mode))
+             (funcall (ediff-with-current-buffer buf major-mode))
              ;; after Stig@hackvan.com
              (add-hook 'local-write-file-hooks 'ediff-set-merge-mode nil t)
              )))
@@ -354,12 +354,12 @@ to invocation.")
       (setq ediff-error-buffer
            (get-buffer-create (ediff-unique-buffer-name "*ediff-errors" "*")))
       
-      (ediff-eval-in-buffer buffer-A (ediff-strip-mode-line-format))
-      (ediff-eval-in-buffer buffer-B (ediff-strip-mode-line-format))
+      (ediff-with-current-buffer buffer-A (ediff-strip-mode-line-format))
+      (ediff-with-current-buffer buffer-B (ediff-strip-mode-line-format))
       (if ediff-3way-job
-         (ediff-eval-in-buffer buffer-C (ediff-strip-mode-line-format)))
+         (ediff-with-current-buffer buffer-C (ediff-strip-mode-line-format)))
       (if (ediff-buffer-live-p ediff-ancestor-buffer)
-         (ediff-eval-in-buffer ediff-ancestor-buffer
+         (ediff-with-current-buffer ediff-ancestor-buffer
            (ediff-strip-mode-line-format)))
       
       (ediff-save-protected-variables) ; save variables to be restored on exit
@@ -392,13 +392,13 @@ to invocation.")
       (or ediff-narrow-bounds
          (setq ediff-narrow-bounds ediff-wide-bounds))
       
-      ;; All these must be inside ediff-eval-in-buffer control-buffer,
+      ;; All these must be inside ediff-with-current-buffer control-buffer,
       ;; since these vars are local to control-buffer
       ;; These won't run if there are errors in diff
-      (ediff-eval-in-buffer ediff-buffer-A
+      (ediff-with-current-buffer ediff-buffer-A
        (ediff-nuke-selective-display)
        (run-hooks 'ediff-prepare-buffer-hook)
-       (if (ediff-eval-in-buffer control-buffer ediff-merge-job)
+       (if (ediff-with-current-buffer control-buffer ediff-merge-job)
            (setq buffer-read-only t))
        ;; add control-buffer to the list of sessions--no longer used, but may
        ;; be used again in the future
@@ -409,10 +409,10 @@ to invocation.")
            (setq buffer-read-only t))
        )
 
-      (ediff-eval-in-buffer ediff-buffer-B
+      (ediff-with-current-buffer ediff-buffer-B
        (ediff-nuke-selective-display)
        (run-hooks 'ediff-prepare-buffer-hook)
-       (if (ediff-eval-in-buffer control-buffer ediff-merge-job)
+       (if (ediff-with-current-buffer control-buffer ediff-merge-job)
            (setq buffer-read-only t))
        ;; add control-buffer to the list of sessions
        (or (memq control-buffer ediff-this-buffer-ediff-sessions)
@@ -423,7 +423,7 @@ to invocation.")
        )
 
       (if ediff-3way-job
-         (ediff-eval-in-buffer ediff-buffer-C
+         (ediff-with-current-buffer ediff-buffer-C
            (ediff-nuke-selective-display)
            (run-hooks 'ediff-prepare-buffer-hook)
            ;; add control-buffer to the list of sessions
@@ -436,7 +436,7 @@ to invocation.")
            ))
 
       (if (ediff-buffer-live-p ediff-ancestor-buffer)
-         (ediff-eval-in-buffer ediff-ancestor-buffer
+         (ediff-with-current-buffer ediff-ancestor-buffer
            (ediff-nuke-selective-display)
            (setq buffer-read-only t)
            (run-hooks 'ediff-prepare-buffer-hook)
@@ -548,27 +548,19 @@ if necessary."
   (interactive)
   (ediff-barf-if-not-control-buffer)
   (if (and (ediff-buffer-live-p ediff-ancestor-buffer)
-          (not (y-or-n-p "Recompute differences during merge, really? ")))
-      (error "Recomputation of differences cancelled"))
+          (not
+           (y-or-n-p
+            "Ancestor buffer will not be used. Recompute diffs anyway? ")))
+      (error "Recomputation of differences canceled"))
       
-  (let ((point-A (ediff-eval-in-buffer ediff-buffer-A (point)))
-       ;;(point-B (ediff-eval-in-buffer ediff-buffer-B (point)))
+  (let ((point-A (ediff-with-current-buffer ediff-buffer-A (point)))
+       ;;(point-B (ediff-with-current-buffer ediff-buffer-B (point)))
        (tmp-buffer (get-buffer-create ediff-tmp-buffer))
-       (buf-A-file-name
-        (file-name-nondirectory (or (buffer-file-name ediff-buffer-A)
-                                    (buffer-name ediff-buffer-A)
-                                    )))
-       (buf-B-file-name
-        (file-name-nondirectory (or (buffer-file-name ediff-buffer-B)
-                                    (buffer-name ediff-buffer-B)
-                                    )))
-       (buf-C-file-name
-        (file-name-nondirectory (or (buffer-file-name ediff-buffer-C)
-                                    ;; if (null ediff-buffer-C), there is
-                                    ;; no danger, since we later check if
-                                    ;; ediff-buffer-C is alive
-                                    (buffer-name ediff-buffer-C)
-                                    )))
+       (buf-A-file-name (buffer-file-name ediff-buffer-A))
+       (buf-B-file-name (buffer-file-name ediff-buffer-B))
+       ;; (null ediff-buffer-C) is no problem, as we later check if
+       ;; ediff-buffer-C is alive
+       (buf-C-file-name (buffer-file-name ediff-buffer-C))
        (overl-A (ediff-get-value-according-to-buffer-type
                  'A ediff-narrow-bounds))
        (overl-B (ediff-get-value-according-to-buffer-type
@@ -577,6 +569,14 @@ if necessary."
                  'C ediff-narrow-bounds))
        beg-A end-A beg-B end-B beg-C end-C
        file-A file-B file-C)
+
+    (if (stringp buf-A-file-name)
+       (setq buf-A-file-name (file-name-nondirectory buf-A-file-name)))
+    (if (stringp buf-B-file-name)
+       (setq buf-B-file-name (file-name-nondirectory buf-B-file-name)))
+    (if (stringp buf-C-file-name)
+       (setq buf-C-file-name (file-name-nondirectory buf-C-file-name)))
+
     (ediff-unselect-and-select-difference -1)
     
     (setq beg-A (ediff-overlay-start overl-A)
@@ -659,13 +659,13 @@ if necessary."
        (ancestor-job ediff-merge-with-ancestor-job)
        (merge ediff-merge-job)
        (comparison ediff-3way-comparison-job))
-    (ediff-eval-in-buffer bufA
+    (ediff-with-current-buffer bufA
       (revert-buffer t noconfirm))
-    (ediff-eval-in-buffer bufB
+    (ediff-with-current-buffer bufB
       (revert-buffer t noconfirm))
     ;; this should only be executed in a 3way comparison, not in merge
     (if comparison
-       (ediff-eval-in-buffer bufC
+       (ediff-with-current-buffer bufC
          (revert-buffer t noconfirm)))
     (if merge
        (progn
@@ -753,7 +753,7 @@ Reestablish the default three-window display."
          (if ediff-3way-job
              (ediff-recenter-one-window 'C))
          
-         (ediff-eval-in-buffer control-buf
+         (ediff-with-current-buffer control-buf
            (ediff-recenter-ancestor) ; check if ancestor is alive
            
            (if (and (ediff-multiframe-setup-p)
@@ -766,7 +766,7 @@ Reestablish the default three-window display."
          ))
 
     (ediff-restore-highlighting)
-    (ediff-eval-in-buffer control-buf (ediff-refresh-mode-lines))
+    (ediff-with-current-buffer control-buf (ediff-refresh-mode-lines))
     ))
   
 ;; this function returns to the window it was called from
@@ -780,7 +780,8 @@ Reestablish the default three-window display."
                      buf-type ediff-narrow-bounds)))
             (job-name ediff-job-name)
             (control-buf ediff-control-buffer)
-            (window-name (intern (format "ediff-window-%S" buf-type)))
+            (window-name (ediff-get-symbol-from-alist
+                          buf-type ediff-window-alist))
             (window (if (window-live-p (symbol-value window-name))
                         (symbol-value window-name))))
        
@@ -808,7 +809,7 @@ Reestablish the default three-window display."
            (ctl-wind (selected-window))
            (job-name ediff-job-name)
            (ctl-buf ediff-control-buffer))
-       (ediff-eval-in-buffer ediff-ancestor-buffer
+       (ediff-with-current-buffer ediff-ancestor-buffer
          (goto-char (ediff-get-diff-posn 'Ancestor 'beg nil ctl-buf))
          (if window
              (progn
@@ -960,7 +961,7 @@ of the current buffer."
     (or buf
        (setq buf (ediff-get-buffer buf-type)))
              
-    (ediff-eval-in-buffer buf     ; eval in buf A/B/C
+    (ediff-with-current-buffer buf     ; eval in buf A/B/C
       (let* ((file (buffer-file-name buf))
             (file-writable (and file
                                 (file-exists-p file)
@@ -990,7 +991,7 @@ of the current buffer."
                   ;; do this, the mode line will show %%, since the file was
                   ;; RO before ediff started, so the user will think the file
                   ;; is checked in.
-                  (ediff-eval-in-buffer ctl-buf
+                  (ediff-with-current-buffer ctl-buf
                     (ediff-change-saved-variable
                      'buffer-read-only nil buf-type)))
                  (t
@@ -1027,7 +1028,7 @@ of the current buffer."
              (format
               "File %s is under version control. Check it out? "
               (ediff-abbreviate-file-name file))))
-       (ediff-eval-in-buffer buf
+       (ediff-with-current-buffer buf
          (command-execute checkout-function)))))
           
 
@@ -1178,7 +1179,7 @@ This is especially useful when comparing buffers side-by-side."
   (let ((ctl-buf ediff-control-buffer))
     (setq ediff-wide-display-p (not ediff-wide-display-p))
     (if (not ediff-wide-display-p)
-       (ediff-eval-in-buffer ctl-buf
+       (ediff-with-current-buffer ctl-buf
          (modify-frame-parameters
           ediff-wide-display-frame ediff-wide-display-orig-parameters)
          ;;(sit-for (if ediff-xemacs-p 0.4 0))
@@ -1190,7 +1191,7 @@ This is especially useful when comparing buffers side-by-side."
          (ediff-recenter 'no-rehighlight))
       (funcall ediff-make-wide-display-function)
       ;;(sit-for (if ediff-xemacs-p 0.4 0))
-      (ediff-eval-in-buffer ctl-buf
+      (ediff-with-current-buffer ctl-buf
        (setq ediff-window-B nil) ; force update of window config
        (ediff-recenter 'no-rehighlight)))))
        
@@ -1216,7 +1217,7 @@ which see."
   (setq-default ediff-window-setup-function window-setup-func)
   ;; change in all active ediff sessions
   (mapcar (function (lambda(buf)
-                     (ediff-eval-in-buffer buf
+                     (ediff-with-current-buffer buf
                        (setq ediff-window-setup-function window-setup-func
                              ediff-window-B nil))))
          ediff-session-registry)
@@ -1241,7 +1242,7 @@ To change the default, set the variable `ediff-use-toolbar-p', which see."
        (setq ediff-use-toolbar-p (not ediff-use-toolbar-p))
        
        (mapcar (function (lambda(buf)
-                           (ediff-eval-in-buffer buf
+                           (ediff-with-current-buffer buf
                              ;; force redisplay
                              (setq ediff-window-config-saved "")
                              )))
@@ -1331,15 +1332,15 @@ Used in ediff-windows/regions only."
          (overl-C (ediff-get-value-according-to-buffer-type
                    'C  ediff-visible-bounds))
          )
-      (ediff-eval-in-buffer ediff-buffer-A
+      (ediff-with-current-buffer ediff-buffer-A
        (narrow-to-region
         (ediff-overlay-start overl-A) (ediff-overlay-end overl-A)))
-      (ediff-eval-in-buffer ediff-buffer-B
+      (ediff-with-current-buffer ediff-buffer-B
        (narrow-to-region
         (ediff-overlay-start overl-B) (ediff-overlay-end overl-B)))
       
       (if ediff-3way-job
-         (ediff-eval-in-buffer ediff-buffer-C
+         (ediff-with-current-buffer ediff-buffer-C
            (narrow-to-region
             (ediff-overlay-start overl-C) (ediff-overlay-end overl-C))))
       )))
@@ -1522,13 +1523,14 @@ the width of the A/B/C windows."
 (defun ediff-get-lines-to-region-end (buf-type &optional n ctl-buf)
   (or n (setq n ediff-current-difference))
   (or ctl-buf (setq ctl-buf ediff-control-buffer))
-  (ediff-eval-in-buffer ctl-buf
+  (ediff-with-current-buffer ctl-buf
     (let* ((buf (ediff-get-buffer buf-type))
-          (wind (eval (intern (format "ediff-window-%S" buf-type))))
+          (wind (eval (ediff-get-symbol-from-alist
+                       buf-type ediff-window-alist)))
           (beg (window-start wind))
           (end (ediff-get-diff-posn buf-type 'end))
           lines)
-      (ediff-eval-in-buffer buf
+      (ediff-with-current-buffer buf
        (if (< beg end)
            (setq lines (count-lines beg end))
          (setq lines 0))
@@ -1539,12 +1541,13 @@ the width of the A/B/C windows."
 (defun ediff-get-lines-to-region-start (buf-type &optional n ctl-buf)
   (or n (setq n ediff-current-difference))
   (or ctl-buf (setq ctl-buf ediff-control-buffer))
-  (ediff-eval-in-buffer ctl-buf
+  (ediff-with-current-buffer ctl-buf
     (let* ((buf (ediff-get-buffer buf-type))
-          (wind (eval (intern (format "ediff-window-%S" buf-type))))
+          (wind (eval (ediff-get-symbol-from-alist
+                       buf-type ediff-window-alist)))
           (end (window-end wind))
           (beg (ediff-get-diff-posn buf-type 'beg)))
-      (ediff-eval-in-buffer buf
+      (ediff-with-current-buffer buf
        (if (< beg end) (count-lines beg end) 0))
       )))
 
@@ -1557,7 +1560,7 @@ the width of the A/B/C windows."
 ;;
 ;; If the difference region is invalid, the coefficient is 1
 (defun ediff-get-region-size-coefficient (buf-type op &optional n ctl-buf)
-  (ediff-eval-in-buffer (or ctl-buf ediff-control-buffer)
+  (ediff-with-current-buffer (or ctl-buf ediff-control-buffer)
     (if (ediff-valid-difference-p n)
        (let* ((func (cond ((eq op 'scroll-down)
                            'ediff-get-lines-to-region-start)
@@ -1684,11 +1687,11 @@ in the specified buffer."
   (ediff-barf-if-not-control-buffer)
   (let* ((buf-type (ediff-char-to-buftype last-command-char))
         (buffer (ediff-get-buffer buf-type))
-        (pt (ediff-eval-in-buffer buffer (point)))
+        (pt (ediff-with-current-buffer buffer (point)))
         (diff-no (ediff-diff-at-point buf-type nil (if arg 'after)))
         (past-last-diff (< ediff-number-of-differences diff-no))
         (beg (if past-last-diff
-                 (ediff-eval-in-buffer buffer (point-max))
+                 (ediff-with-current-buffer buffer (point-max))
                (ediff-get-diff-posn buf-type 'beg (1- diff-no))))
         ctl-wind wind-A wind-B wind-C
         shift)
@@ -1701,7 +1704,7 @@ in the specified buffer."
          wind-C ediff-window-C)
     (if arg
        (progn
-         (ediff-eval-in-buffer buffer
+         (ediff-with-current-buffer buffer
            (setq shift (- beg pt)))
          (select-window wind-A)
          (if past-last-diff (goto-char (point-max)))
@@ -1745,7 +1748,7 @@ in the specified buffer."
        (beg 0)
        (end 0))
        
-    (ediff-eval-in-buffer buffer
+    (ediff-with-current-buffer buffer
       (setq pos (or pos (point)))
       (while (and (or (< pos prev-beg) (> pos beg))
                  (< diff-no max-dif-num))
@@ -1873,7 +1876,7 @@ ARG is a prefix argument. If nil, copy the current difference region."
       (if (or batch-invocation (ediff-test-save-region n to-buf-type))
          (condition-case conds
              (progn
-               (ediff-eval-in-buffer to-buf
+               (ediff-with-current-buffer to-buf
                  ;; to prevent flags from interfering if buffer is writable
                  (let ((inhibit-read-only (null buffer-read-only)))
                    
@@ -1977,7 +1980,7 @@ ARG is a prefix argument. If nil, copy the current difference region."
     (setq reg-end (ediff-get-diff-posn buf-type 'end n ediff-control-buffer))
     
     (condition-case conds
-       (ediff-eval-in-buffer buf
+       (ediff-with-current-buffer buf
          (let ((inhibit-read-only (null buffer-read-only)))
            
            (goto-char reg-end)
@@ -2159,21 +2162,21 @@ the number seen by the user."
             (regex-A ediff-regexp-focus-A)
             (regex-B ediff-regexp-focus-B)
             (regex-C ediff-regexp-focus-C)
-            (reg-A-match (ediff-eval-in-buffer ediff-buffer-A
+            (reg-A-match (ediff-with-current-buffer ediff-buffer-A
                            (save-restriction
                              (narrow-to-region
                               (ediff-get-diff-posn 'A 'beg n ctl-buf)
                               (ediff-get-diff-posn 'A 'end n ctl-buf))
                              (goto-char (point-min))
                              (re-search-forward regex-A nil t))))
-            (reg-B-match (ediff-eval-in-buffer ediff-buffer-B
+            (reg-B-match (ediff-with-current-buffer ediff-buffer-B
                            (save-restriction
                              (narrow-to-region
                               (ediff-get-diff-posn 'B 'beg n ctl-buf)
                               (ediff-get-diff-posn 'B 'end n ctl-buf))
                              (re-search-forward regex-B nil t))))
             (reg-C-match (if ediff-3way-comparison-job
-                             (ediff-eval-in-buffer ediff-buffer-C
+                             (ediff-with-current-buffer ediff-buffer-C
                                (save-restriction
                                  (narrow-to-region
                                   (ediff-get-diff-posn 'C 'beg n ctl-buf)
@@ -2200,14 +2203,14 @@ the number seen by the user."
             (regex-A ediff-regexp-hide-A)
             (regex-B ediff-regexp-hide-B)
             (regex-C ediff-regexp-hide-C)
-            (reg-A-match (ediff-eval-in-buffer ediff-buffer-A
+            (reg-A-match (ediff-with-current-buffer ediff-buffer-A
                            (save-restriction
                              (narrow-to-region
                               (ediff-get-diff-posn 'A 'beg n ctl-buf)
                               (ediff-get-diff-posn 'A 'end n ctl-buf))
                              (goto-char (point-min))
                              (re-search-forward regex-A nil t))))
-            (reg-B-match (ediff-eval-in-buffer ediff-buffer-B
+            (reg-B-match (ediff-with-current-buffer ediff-buffer-B
                            (save-restriction
                              (narrow-to-region
                               (ediff-get-diff-posn 'B 'beg n ctl-buf)
@@ -2215,7 +2218,7 @@ the number seen by the user."
                              (goto-char (point-min))
                              (re-search-forward regex-B nil t))))
             (reg-C-match (if ediff-3way-comparison-job
-                             (ediff-eval-in-buffer ediff-buffer-C
+                             (ediff-with-current-buffer ediff-buffer-C
                                (save-restriction
                                  (narrow-to-region
                                   (ediff-get-diff-posn 'C 'beg n ctl-buf)
@@ -2295,7 +2298,7 @@ temporarily reverses the meaning of this variable."
                               (window-frame ediff-window-B))
                              (t (next-frame))))))
     (condition-case nil
-       (ediff-eval-in-buffer ediff-buffer-A
+       (ediff-with-current-buffer ediff-buffer-A
          (setq ediff-this-buffer-ediff-sessions 
                (delq control-buffer ediff-this-buffer-ediff-sessions))
          (kill-local-variable 'mode-line-buffer-identification)
@@ -2304,7 +2307,7 @@ temporarily reverses the meaning of this variable."
       (error))
       
     (condition-case nil
-       (ediff-eval-in-buffer ediff-buffer-B
+       (ediff-with-current-buffer ediff-buffer-B
          (setq ediff-this-buffer-ediff-sessions 
                (delq control-buffer ediff-this-buffer-ediff-sessions))
          (kill-local-variable 'mode-line-buffer-identification)
@@ -2313,7 +2316,7 @@ temporarily reverses the meaning of this variable."
       (error))
     
     (condition-case nil
-       (ediff-eval-in-buffer ediff-buffer-C
+       (ediff-with-current-buffer ediff-buffer-C
          (setq ediff-this-buffer-ediff-sessions 
                (delq control-buffer ediff-this-buffer-ediff-sessions))
          (kill-local-variable 'mode-line-buffer-identification)
@@ -2322,7 +2325,7 @@ temporarily reverses the meaning of this variable."
       (error))
 
     (condition-case nil
-       (ediff-eval-in-buffer ediff-ancestor-buffer
+       (ediff-with-current-buffer ediff-ancestor-buffer
          (setq ediff-this-buffer-ediff-sessions 
                (delq control-buffer ediff-this-buffer-ediff-sessions))
          (kill-local-variable 'mode-line-buffer-identification)
@@ -2494,7 +2497,7 @@ only if this merge job is part of a group, i.e., was invoked from within
               (ediff-write-merge-buffer-and-maybe-kill
                ediff-buffer-C merge-store-file nil save-and-continue))
              ((and (ediff-buffer-live-p ediff-meta-buffer)
-                   (ediff-eval-in-buffer ediff-meta-buffer
+                   (ediff-with-current-buffer ediff-meta-buffer
                      (ediff-merge-metajob)))
               ;; This case shouldn't occur, as the parent metajob must pass on
               ;; a file name, ediff-merge-store-file, where to save the result
@@ -2511,7 +2514,7 @@ only if this merge job is part of a group, i.e., was invoked from within
 (defun ediff-write-merge-buffer-and-maybe-kill (buf file
                                               &optional
                                               show-file save-and-continue)
-  (ediff-eval-in-buffer buf
+  (ediff-with-current-buffer buf
     (if (or (not (file-exists-p file))
            (y-or-n-p (format "File %s exists, overwrite? " file)))
        (progn
@@ -2605,20 +2608,20 @@ Hit \\[ediff-recenter] to reset the windows afterward."
     (raise-frame (selected-frame))
     (princ (ediff-version))
     (princ "\n\n")
-    (ediff-eval-in-buffer ediff-buffer-A
+    (ediff-with-current-buffer ediff-buffer-A
       (if buffer-file-name
          (princ
           (format "File A = %S\n" buffer-file-name))
        (princ 
         (format "Buffer A = %S\n" (buffer-name)))))
-    (ediff-eval-in-buffer ediff-buffer-B
+    (ediff-with-current-buffer ediff-buffer-B
       (if buffer-file-name
          (princ
           (format "File B = %S\n" buffer-file-name))
        (princ 
         (format "Buffer B = %S\n" (buffer-name)))))
     (if ediff-3way-job
-       (ediff-eval-in-buffer ediff-buffer-C
+       (ediff-with-current-buffer ediff-buffer-C
          (if buffer-file-name
              (princ
               (format "File C = %S\n" buffer-file-name))
@@ -2635,16 +2638,16 @@ Hit \\[ediff-recenter] to reset the windows afterward."
                               (buffer-name ediff-diff-buffer))
                     " is not available")))
                              
-    (let* ((A-line (ediff-eval-in-buffer ediff-buffer-A
+    (let* ((A-line (ediff-with-current-buffer ediff-buffer-A
                     (1+ (count-lines (point-min) (point)))))
-          (B-line (ediff-eval-in-buffer ediff-buffer-B
+          (B-line (ediff-with-current-buffer ediff-buffer-B
                     (1+ (count-lines (point-min) (point)))))
           C-line)
       (princ (format "\Buffer A's point is on line %d\n" A-line))
       (princ (format "Buffer B's point is on line %d\n" B-line))
       (if ediff-3way-job
          (progn
-           (setq C-line (ediff-eval-in-buffer ediff-buffer-C
+           (setq C-line (ediff-with-current-buffer ediff-buffer-C
                           (1+ (count-lines (point-min) (point)))))
            (princ (format "Buffer C's point is on line %d\n" C-line)))))
       
@@ -2780,7 +2783,7 @@ Hit \\[ediff-recenter] to reset the windows afterward."
          (setq ediff-current-difference n)
          ) ; end protected section
       
-      (ediff-eval-in-buffer control-buf (ediff-refresh-mode-lines))
+      (ediff-with-current-buffer control-buf (ediff-refresh-mode-lines))
       )))
 
 
@@ -2861,7 +2864,7 @@ Hit \\[ediff-recenter] to reset the windows afterward."
                  (t (make-temp-name f))))
     
     ;; create the file
-    (ediff-eval-in-buffer buff
+    (ediff-with-current-buffer buff
       (write-region (if start start (point-min))
                    (if end end (point-max))
                    f
@@ -2926,7 +2929,7 @@ Without an argument, it saves customized diff argument, if available
   (interactive "P")
   (ediff-barf-if-not-control-buffer)
   (ediff-compute-custom-diffs-maybe)
-  (ediff-eval-in-buffer
+  (ediff-with-current-buffer
       (cond ((memq last-command-char '(?a ?b ?c))
             (ediff-get-buffer
              (ediff-char-to-buftype last-command-char)))
@@ -2983,7 +2986,7 @@ Without an argument, it saves customized diff argument, if available
                    nil))))
     (if buf
        (progn
-         (ediff-eval-in-buffer buf
+         (ediff-with-current-buffer buf
            (goto-char (point-min)))
          (switch-to-buffer buf)
          (raise-frame (selected-frame)))))
@@ -3032,7 +3035,8 @@ Ediff Control Panel to restore highlighting."
                         (setq possibilities (delq answer possibilities))
                         (setq bufA
                               (eval
-                               (intern (format "ediff-buffer-%c" answer))))
+                               (ediff-get-symbol-from-alist
+                                answer ediff-buffer-alist)))
                         nil)
                        ((equal answer ""))
                        (t (beep 1)
@@ -3050,7 +3054,8 @@ Ediff Control Panel to restore highlighting."
                         (setq possibilities (delq answer possibilities))
                         (setq bufB
                               (eval
-                               (intern (format "ediff-buffer-%c" answer))))
+                               (ediff-get-symbol-from-alist
+                                answer ediff-buffer-alist)))
                         nil)
                        ((equal answer ""))
                        (t (beep 1)
@@ -3068,7 +3073,7 @@ Ediff Control Panel to restore highlighting."
                 bufB ediff-buffer-B
                 possibilities nil)))
 
-    (ediff-eval-in-buffer bufA
+    (ediff-with-current-buffer bufA
       (or (mark t)
          (error "You forgot to specify a region in buffer %s" (buffer-name)))
       (setq begA (region-beginning)
@@ -3080,7 +3085,7 @@ Ediff Control Panel to restore highlighting."
       (end-of-line)
       (or (eobp) (forward-char)) ; include the newline char
       (setq endA (point)))
-    (ediff-eval-in-buffer bufB
+    (ediff-with-current-buffer bufB
       (or (mark t)
          (error "You forgot to specify a region in buffer %s" (buffer-name)))
       (setq begB (region-beginning)
@@ -3097,14 +3102,14 @@ Ediff Control Panel to restore highlighting."
      ediff-current-difference 'unselect-only)
     (ediff-paint-background-regions 'unhighlight)
 
-    (ediff-eval-in-buffer bufA
+    (ediff-with-current-buffer bufA
       (goto-char begA)
       (set-mark endA)
       (narrow-to-region begA endA)
       ;; (ediff-activate-mark)
       )
     ;; (sit-for 0)
-    (ediff-eval-in-buffer bufB
+    (ediff-with-current-buffer bufB
       (goto-char begB)
       (set-mark endB)
       (narrow-to-region begB endB)
@@ -3116,11 +3121,11 @@ Ediff Control Panel to restore highlighting."
     ;; that was not selected, or it is nil. We delete the window that is not
     ;; selected.
     (if possibilities
-       (ediff-eval-in-buffer ctl-buf
+       (ediff-with-current-buffer ctl-buf
          (let* ((wind-to-delete (eval
-                                 (intern
-                                  (format
-                                   "ediff-window-%c" (car possibilities)))))
+                                 (ediff-get-symbol-from-alist
+                                  (car possibilities)
+                                   ediff-window-alist)))
                 (frame (window-frame wind-to-delete)))
            (delete-window wind-to-delete)
            (select-frame frame)
@@ -3129,12 +3134,12 @@ Ediff Control Panel to restore highlighting."
         "Please check regions selected for comparison. Continue? ")
        (setq quit-now t))
     
-    (ediff-eval-in-buffer bufA
+    (ediff-with-current-buffer bufA
       (widen))
-    (ediff-eval-in-buffer bufB
+    (ediff-with-current-buffer bufB
       (widen))
     (if quit-now
-       (ediff-eval-in-buffer ctl-buf
+       (ediff-with-current-buffer ctl-buf
          (ediff-recenter)
          (sit-for 0)
          (error "All right. Make up your mind and come back...")))
@@ -3151,7 +3156,7 @@ Ediff Control Panel to restore highlighting."
     
 
 (defun ediff-remove-flags-from-buffer (buffer overlay)
-  (ediff-eval-in-buffer buffer
+  (ediff-with-current-buffer buffer
     (let ((inhibit-read-only t))
       (if ediff-xemacs-p
          (ediff-overlay-put overlay 'begin-glyph nil)
@@ -3165,12 +3170,12 @@ Ediff Control Panel to restore highlighting."
 
 
 (defun ediff-place-flags-in-buffer (buf-type buffer ctl-buffer diff)
-  (ediff-eval-in-buffer buffer
+  (ediff-with-current-buffer buffer
     (ediff-place-flags-in-buffer1 buf-type ctl-buffer diff)))
 
 
 (defun ediff-place-flags-in-buffer1 (buf-type ctl-buffer diff-no)
-  (let* ((curr-overl (ediff-eval-in-buffer ctl-buffer
+  (let* ((curr-overl (ediff-with-current-buffer ctl-buffer
                       (ediff-get-diff-overlay diff-no buf-type)))
         (before (ediff-get-diff-posn buf-type 'beg diff-no ctl-buffer))
         after beg-of-line flag)
@@ -3179,7 +3184,7 @@ Ediff Control Panel to restore highlighting."
     (goto-char before)
     (setq beg-of-line (bolp))
     
-    (setq flag (ediff-eval-in-buffer ctl-buffer
+    (setq flag (ediff-with-current-buffer ctl-buffer
                 (if (eq ediff-highlighting-style 'ascii)
                     (if beg-of-line
                         ediff-before-flag-bol ediff-before-flag-mol))))
@@ -3195,7 +3200,7 @@ Ediff Control Panel to restore highlighting."
     (goto-char after)
     (setq beg-of-line (bolp))
     
-    (setq flag (ediff-eval-in-buffer ctl-buffer
+    (setq flag (ediff-with-current-buffer ctl-buffer
                 (if (eq ediff-highlighting-style 'ascii)
                     (if beg-of-line
                         ediff-after-flag-eol ediff-after-flag-mol))))
@@ -3222,7 +3227,7 @@ Ediff Control Panel to restore highlighting."
     (or control-buf
        (setq control-buf (current-buffer)))
 
-    (ediff-eval-in-buffer control-buf
+    (ediff-with-current-buffer control-buf
       (or n  (setq n ediff-current-difference))
       (if (or (< n 0) (>= n ediff-number-of-differences))
          (if (> ediff-number-of-differences 0)
@@ -3241,7 +3246,7 @@ Ediff Control Panel to restore highlighting."
 ;; Restore highlighting to what it should be according to ediff-use-faces,
 ;; ediff-highlighting-style, and ediff-highlight-all-diffs variables.
 (defun ediff-restore-highlighting (&optional ctl-buf)
-  (ediff-eval-in-buffer (or ctl-buf (current-buffer))
+  (ediff-with-current-buffer (or ctl-buf (current-buffer))
     (if (and (ediff-has-face-support-p) 
             ediff-use-faces
             ediff-highlight-all-diffs)
@@ -3281,7 +3286,7 @@ Ediff Control Panel to restore highlighting."
 (defun ediff-make-bullet-proof-overlay (beg end buff)
   (if (ediff-buffer-live-p buff)
       (let (overl)
-       (ediff-eval-in-buffer buff
+       (ediff-with-current-buffer buff
          (or (number-or-marker-p beg)
              (setq beg (eval beg)))
          (or (number-or-marker-p end)
@@ -3354,22 +3359,6 @@ Ediff Control Panel to restore highlighting."
       (format "%s<%d>%s" prefix n suffix))))
   
 
-;; splits at a white space, returns a list
-(defun ediff-split-string (string)
-  (let ((start 0)
-        (result '())
-       substr)
-    (while (string-match "[ \t]+" string start)
-      (let ((match (string-match "[ \t]+" string start)))
-       (setq substr (substring string start match))
-       (if (> (length substr) 0)
-           (setq result (cons substr result)))
-        (setq start (match-end 0))))
-    (setq substr (substring string start nil))
-    (if (> (length substr) 0)
-       (setq result (cons substr result)))
-    (nreverse result)))
-
 (defun ediff-submit-report ()
   "Submit bug report on Ediff."
   (interactive)
@@ -3459,7 +3448,7 @@ Mail anyway? (y or n) ")
       (bury-buffer)
       (beep 1)(message "Bug report aborted")
       (if (ediff-buffer-live-p ctl-buf)
-         (ediff-eval-in-buffer ctl-buf
+         (ediff-with-current-buffer ctl-buf
            (ediff-recenter 'no-rehighlight))))
     ))
                             
@@ -3511,9 +3500,9 @@ Mail anyway? (y or n) ")
 
 (defun ediff-change-saved-variable (var value buf-type)
   (let* ((assoc-list
-         (symbol-value (intern
-                        (concat "ediff-buffer-values-orig-"
-                                (symbol-name buf-type)))))
+         (symbol-value (ediff-get-symbol-from-alist
+                        buf-type
+                        ediff-buffer-values-orig-alist)))
         (assoc-elt (assoc var assoc-list)))
   (if assoc-elt
       (setcdr assoc-elt value))))
@@ -3522,18 +3511,18 @@ Mail anyway? (y or n) ")
 ;; must execute in control buf
 (defun ediff-save-protected-variables ()
   (setq ediff-buffer-values-orig-A
-       (ediff-eval-in-buffer ediff-buffer-A
+       (ediff-with-current-buffer ediff-buffer-A
          (ediff-save-variables ediff-protected-variables)))
   (setq ediff-buffer-values-orig-B
-       (ediff-eval-in-buffer ediff-buffer-B
+       (ediff-with-current-buffer ediff-buffer-B
          (ediff-save-variables ediff-protected-variables)))
   (if ediff-3way-comparison-job
       (setq ediff-buffer-values-orig-C
-           (ediff-eval-in-buffer ediff-buffer-C
+           (ediff-with-current-buffer ediff-buffer-C
              (ediff-save-variables ediff-protected-variables))))
   (if (ediff-buffer-live-p ediff-ancestor-buffer)
       (setq ediff-buffer-values-orig-Ancestor
-           (ediff-eval-in-buffer ediff-ancestor-buffer
+           (ediff-with-current-buffer ediff-ancestor-buffer
              (ediff-save-variables ediff-protected-variables)))))
 
 ;; must execute in control buf
@@ -3542,21 +3531,21 @@ Mail anyway? (y or n) ")
        (values-B ediff-buffer-values-orig-B)
        (values-C ediff-buffer-values-orig-C)
        (values-Ancestor ediff-buffer-values-orig-Ancestor))
-    (ediff-eval-in-buffer ediff-buffer-A
+    (ediff-with-current-buffer ediff-buffer-A
       (ediff-restore-variables ediff-protected-variables values-A))
-    (ediff-eval-in-buffer ediff-buffer-B
+    (ediff-with-current-buffer ediff-buffer-B
       (ediff-restore-variables ediff-protected-variables values-B))
     (if ediff-3way-comparison-job
-       (ediff-eval-in-buffer ediff-buffer-C
+       (ediff-with-current-buffer ediff-buffer-C
          (ediff-restore-variables ediff-protected-variables values-C)))
     (if (ediff-buffer-live-p ediff-ancestor-buffer)
-       (ediff-eval-in-buffer ediff-ancestor-buffer
+       (ediff-with-current-buffer ediff-ancestor-buffer
          (ediff-restore-variables ediff-protected-variables values-Ancestor)))
     ))
 
 ;; save BUFFER in FILE. used in hooks.
 (defun ediff-save-buffer-in-file (buffer file)
-  (ediff-eval-in-buffer buffer
+  (ediff-with-current-buffer buffer
     (write-file file)))
 
 
@@ -3698,8 +3687,8 @@ Mail anyway? (y or n) ")
 
 ;;; Local Variables:
 ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
+;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
 ;;; End:
 
 ;;; ediff-util.el ends here
index 75cfb789d0e2b866507257ae13d2007a60866a8d..00b7b41f51ef0abad6740d779c178bb43fb15825 100644 (file)
 
 ;;; Local Variables:
 ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
+;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
 ;;; End:
 
 (provide 'ediff-vers)
index ac942dc1eb1f5ca0c8b17cad8306b66bc928d590..e5edc2f08f5b1aa5dc44ac41db16753e72fcbd6d 100644 (file)
@@ -110,6 +110,15 @@ provided functions are written."
 ;; Used to minimize the need to rearrange windows.
 (ediff-defvar-local ediff-window-config-saved "" "")
 
+;; Association between buff-type and ediff-window-*
+(defconst ediff-window-alist
+  '((A . ediff-window-A)
+    (?A . ediff-window-A)
+    (B . ediff-window-B)
+    (?B . ediff-window-B)
+    (C . ediff-window-C)
+    (?C . ediff-window-C)))
+
 
 (defcustom ediff-split-window-function 'split-window-vertically
   "*The function used to split the main window between buffer-A and buffer-B.
@@ -304,7 +313,7 @@ into icons, regardless of the window manager."
   
   (or (ediff-keep-window-config control-buffer)
       (funcall 
-       (ediff-eval-in-buffer control-buffer ediff-window-setup-function)
+       (ediff-with-current-buffer control-buffer ediff-window-setup-function)
        buffer-A buffer-B buffer-C control-buffer))
   (run-hooks 'ediff-after-setup-windows-hook))
 
@@ -312,7 +321,7 @@ into icons, regardless of the window manager."
 ;; Usually used without windowing systems
 ;; With windowing, we want to use dedicated frames.
 (defun ediff-setup-windows-plain (buffer-A buffer-B buffer-C control-buffer)
-  (ediff-eval-in-buffer control-buffer
+  (ediff-with-current-buffer control-buffer
     (setq ediff-multiframe nil))
   (if ediff-merge-job
       (ediff-setup-windows-plain-merge
@@ -327,7 +336,7 @@ into icons, regardless of the window manager."
        split-window-function 
        merge-window-share merge-window-lines
        wind-A wind-B wind-C)
-    (ediff-eval-in-buffer control-buffer
+    (ediff-with-current-buffer control-buffer
       (setq merge-window-share ediff-merge-window-share
            ;; this lets us have local versions of ediff-split-window-function
            split-window-function ediff-split-window-function))
@@ -362,7 +371,7 @@ into icons, regardless of the window manager."
     (switch-to-buffer buf-B)
     (setq wind-B (selected-window))
          
-    (ediff-eval-in-buffer control-buffer
+    (ediff-with-current-buffer control-buffer
       (setq ediff-window-A wind-A
            ediff-window-B wind-B
            ediff-window-C wind-C))
@@ -380,7 +389,7 @@ into icons, regardless of the window manager."
        split-window-function wind-width-or-height
        three-way-comparison
        wind-A-start wind-B-start wind-A wind-B wind-C)
-    (ediff-eval-in-buffer control-buffer
+    (ediff-with-current-buffer control-buffer
       (setq wind-A-start (ediff-overlay-start
                          (ediff-get-value-according-to-buffer-type
                           'A ediff-narrow-bounds))
@@ -426,7 +435,7 @@ into icons, regardless of the window manager."
          (switch-to-buffer buf-C)
          (setq wind-C (selected-window))))
          
-    (ediff-eval-in-buffer control-buffer
+    (ediff-with-current-buffer control-buffer
       (setq ediff-window-A wind-A
            ediff-window-B wind-B
            ediff-window-C wind-C))
@@ -445,7 +454,7 @@ into icons, regardless of the window manager."
     
 ;; dispatch an appropriate window setup function
 (defun ediff-setup-windows-multiframe (buf-A buf-B buf-C control-buf)
-  (ediff-eval-in-buffer control-buf
+  (ediff-with-current-buffer control-buf
     (setq ediff-multiframe t))
   (if ediff-merge-job
       (ediff-setup-windows-multiframe-merge buf-A buf-B buf-C control-buf)
@@ -476,10 +485,10 @@ into icons, regardless of the window manager."
         (frame-C (if wind-C (window-frame wind-C)))
         ;; on wide display, do things in one frame
         (force-one-frame 
-         (ediff-eval-in-buffer control-buf ediff-wide-display-p))
+         (ediff-with-current-buffer control-buf ediff-wide-display-p))
         ;; this lets us have local versions of ediff-split-window-function
         (split-window-function 
-         (ediff-eval-in-buffer control-buf ediff-split-window-function))
+         (ediff-with-current-buffer control-buf ediff-split-window-function))
         (orig-wind (selected-window))
         (orig-frame (selected-frame))
         (use-same-frame (or force-one-frame
@@ -501,7 +510,7 @@ into icons, regardless of the window manager."
         ;; use-same-frame-for-AB implies wind A and B are ok for display
         (use-same-frame-for-AB (and (not use-same-frame)
                                     (eq frame-A frame-B)))
-        (merge-window-share (ediff-eval-in-buffer control-buf
+        (merge-window-share (ediff-with-current-buffer control-buf
                               ediff-merge-window-share))
         merge-window-lines
         designated-minibuffer-frame
@@ -623,7 +632,7 @@ into icons, regardless of the window manager."
          (setq wind-C (selected-window))
          ))
     
-    (ediff-eval-in-buffer control-buf
+    (ediff-with-current-buffer control-buf
       (setq ediff-window-A wind-A
            ediff-window-B wind-B
            ediff-window-C wind-C)
@@ -660,16 +669,16 @@ into icons, regardless of the window manager."
         (frame-A (if wind-A (window-frame wind-A)))
         (frame-B (if wind-B (window-frame wind-B)))
         (frame-C (if wind-C (window-frame wind-C)))
-        (ctl-frame-exists-p (ediff-eval-in-buffer control-buf
+        (ctl-frame-exists-p (ediff-with-current-buffer control-buf
                               (frame-live-p ediff-control-frame)))
         ;; on wide display, do things in one frame
         (force-one-frame 
-         (ediff-eval-in-buffer control-buf ediff-wide-display-p))
+         (ediff-with-current-buffer control-buf ediff-wide-display-p))
         ;; this lets us have local versions of ediff-split-window-function
         (split-window-function 
-         (ediff-eval-in-buffer control-buf ediff-split-window-function))
+         (ediff-with-current-buffer control-buf ediff-split-window-function))
         (three-way-comparison
-         (ediff-eval-in-buffer control-buf ediff-3way-comparison-job))
+         (ediff-with-current-buffer control-buf ediff-3way-comparison-job))
         (orig-wind (selected-window))
         (use-same-frame (or force-one-frame
                             (eq frame-A frame-B)
@@ -692,7 +701,7 @@ into icons, regardless of the window manager."
         designated-minibuffer-frame
         done-A done-B done-C)
     
-    (ediff-eval-in-buffer control-buf
+    (ediff-with-current-buffer control-buf
       (setq wind-A-start (ediff-overlay-start
                          (ediff-get-value-according-to-buffer-type
                           'A ediff-narrow-bounds))
@@ -793,7 +802,7 @@ into icons, regardless of the window manager."
              (setq wind-C (selected-window))
              )))
     
-    (ediff-eval-in-buffer control-buf
+    (ediff-with-current-buffer control-buf
       (setq ediff-window-A wind-A
            ediff-window-B wind-B
            ediff-window-C wind-C)
@@ -870,13 +879,13 @@ into icons, regardless of the window manager."
        ;; user-grabbed-mouse
        fheight fwidth adjusted-parameters) 
        
-    (ediff-eval-in-buffer ctl-buffer
+    (ediff-with-current-buffer ctl-buffer
       (if ediff-xemacs-p (set-buffer-menubar nil))
       ;;(setq user-grabbed-mouse (ediff-user-grabbed-mouse))
       (run-hooks 'ediff-before-setup-control-frame-hook))
   
-    (setq old-ctl-frame (ediff-eval-in-buffer ctl-buffer ediff-control-frame))
-    (ediff-eval-in-buffer ctl-buffer
+    (setq old-ctl-frame (ediff-with-current-buffer ctl-buffer ediff-control-frame))
+    (ediff-with-current-buffer ctl-buffer
       (setq ctl-frame (if (frame-live-p old-ctl-frame)
                          old-ctl-frame
                        (make-frame ediff-control-frame-parameters))
@@ -891,7 +900,7 @@ into icons, regardless of the window manager."
       
     ;; must be before ediff-setup-control-buffer
     ;; just a precaution--we should be in ctl-buffer already
-    (ediff-eval-in-buffer ctl-buffer
+    (ediff-with-current-buffer ctl-buffer
       (make-local-variable 'frame-title-format)
       (make-local-variable 'frame-icon-title-format)   ; XEmacs
       (make-local-variable 'icon-title-format))        ; Emacs
@@ -986,18 +995,18 @@ into icons, regardless of the window manager."
                               (not (eq ediff-grab-mouse t)))))
        
     (if ediff-xemacs-p
-       (ediff-eval-in-buffer ctl-buffer
+       (ediff-with-current-buffer ctl-buffer
          (make-local-hook 'select-frame-hook)
          (add-hook 'select-frame-hook 'ediff-xemacs-select-frame-hook nil t)
          ))
        
-    (ediff-eval-in-buffer ctl-buffer
+    (ediff-with-current-buffer ctl-buffer
       (run-hooks 'ediff-after-setup-control-frame-hook))
     ))
 
     
 (defun ediff-destroy-control-frame (ctl-buffer)
-  (ediff-eval-in-buffer ctl-buffer
+  (ediff-with-current-buffer ctl-buffer
     (if (and (ediff-window-display-p) (frame-live-p ediff-control-frame))
        (let ((ctl-frame ediff-control-frame))
          (if ediff-xemacs-p
@@ -1012,7 +1021,7 @@ into icons, regardless of the window manager."
 
 ;; finds a good place to clip control frame
 (defun ediff-make-frame-position (ctl-buffer ctl-frame-width ctl-frame-height)
-  (ediff-eval-in-buffer ctl-buffer
+  (ediff-with-current-buffer ctl-buffer
     (let* ((frame-A (window-frame ediff-window-A))
           (frame-A-parameters (frame-parameters frame-A))
           (frame-A-top (eval (cdr (assoc 'top frame-A-parameters))))
@@ -1135,27 +1144,27 @@ It assumes that it is called from within the control buffer."
     (if (and (ediff-window-display-p) (frame-live-p ediff-control-frame))
        (ediff-refresh-control-frame))
     
-    (ediff-eval-in-buffer ediff-buffer-A
+    (ediff-with-current-buffer ediff-buffer-A
       (setq ediff-diff-status buf-A-state-diff)
       (ediff-strip-mode-line-format)
       (setq mode-line-format
            (list " A: " 'ediff-diff-status mode-line-format))
       (force-mode-line-update))
-    (ediff-eval-in-buffer ediff-buffer-B
+    (ediff-with-current-buffer ediff-buffer-B
       (setq ediff-diff-status buf-B-state-diff)
       (ediff-strip-mode-line-format)
       (setq mode-line-format
            (list " B: " 'ediff-diff-status mode-line-format))
       (force-mode-line-update))
     (if ediff-3way-job
-       (ediff-eval-in-buffer ediff-buffer-C
+       (ediff-with-current-buffer ediff-buffer-C
          (setq ediff-diff-status buf-C-state-diff)
          (ediff-strip-mode-line-format)
          (setq mode-line-format
                (list " C: " 'ediff-diff-status mode-line-format))
          (force-mode-line-update)))
     (if (ediff-buffer-live-p ediff-ancestor-buffer)
-       (ediff-eval-in-buffer ediff-ancestor-buffer
+       (ediff-with-current-buffer ediff-ancestor-buffer
          (ediff-strip-mode-line-format)
          ;; we keep the second dummy string in the mode line format of the
          ;; ancestor, since for other buffers Ediff prepends 2 strings and
@@ -1234,7 +1243,7 @@ It assumes that it is called from within the control buffer."
 (defun ediff-keep-window-config (control-buf)
   (and (eq control-buf (current-buffer))
        (/= (buffer-size) 0)
-       (ediff-eval-in-buffer control-buf
+       (ediff-with-current-buffer control-buf
         (let ((ctl-wind ediff-control-window)
               (A-wind ediff-window-A)
               (B-wind ediff-window-B)
@@ -1260,8 +1269,8 @@ It assumes that it is called from within the control buffer."
 
 ;;; Local Variables:
 ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
+;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
 ;;; End:
 
 ;;; ediff-wind.el ends here
index 677931f85f3cf20a65523e912b074ceb57637334..d27b08b159e8c6808dc59968fbec6492e7d692ed 100644 (file)
@@ -6,8 +6,8 @@
 ;; Created: February 2, 1994
 ;; Keywords: comparing, merging, patching, version control.
 
-(defconst ediff-version "2.66" "The current version of Ediff")
-(defconst ediff-date "July 9, 1997" "Date of last update")  
+(defconst ediff-version "2.67" "The current version of Ediff")
+(defconst ediff-date "July 31, 1997" "Date of last update")  
 
 
 ;; This file is part of GNU Emacs.
 
 ;; Used as a startup hook to set `_orig' patch file read-only.
 (defun ediff-set-read-only-in-buf-A ()
-  (ediff-eval-in-buffer ediff-buffer-A
+  (ediff-with-current-buffer ediff-buffer-A
     (toggle-read-only 1)))
 
 ;; Return a plausible default for ediff's first file:
     ;; Setup the buffer
     (set buffer-name (find-file-noselect file))
   
-    (ediff-eval-in-buffer (symbol-value buffer-name)
+    (ediff-with-current-buffer (symbol-value buffer-name)
       (widen) ; Make sure the entire file is seen
       (cond (file-magic  ;   file has a handler, such as jka-compr-handler or
                         ;;; ange-ftp-hook-function--arrange for temp file
@@ -888,10 +888,10 @@ lines. For small regions, use `ediff-regions-wordwise'."
        file-A file-B)
        
     ;; in case beg/end-A/B aren't markers--make them into markers
-    (ediff-eval-in-buffer buffer-A
+    (ediff-with-current-buffer buffer-A
       (setq beg-A (move-marker (make-marker) beg-A)
            end-A (move-marker (make-marker) end-A)))
-    (ediff-eval-in-buffer buffer-B
+    (ediff-with-current-buffer buffer-B
       (setq beg-B (move-marker (make-marker) beg-B)
            end-B (move-marker (make-marker) end-B)))
        
@@ -949,7 +949,7 @@ Continue anyway? (y/n) "))
   
 (defsubst ediff-merge-on-startup ()
   (ediff-do-merge 0)
-  (ediff-eval-in-buffer ediff-buffer-C
+  (ediff-with-current-buffer ediff-buffer-C
     (set-buffer-modified-p nil)))
 
 ;;;###autoload
@@ -1293,8 +1293,8 @@ With optional NODE, goes to that node."
 
 ;;; Local Variables:
 ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
-;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1)
-;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body))
+;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
+;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
 ;;; End:
 
 (require 'ediff-util)