:prefix "ediff-"
:group 'ediff)
+;; these two must be here to prevent ediff-test-utility from barking
+(defcustom ediff-diff-program "diff"
+ "*Program to use for generating the differential of the two files."
+ :type 'string
+ :group 'ediff-diff)
+(defcustom ediff-diff3-program "diff3"
+ "*Program to be used for three-way comparison.
+Must produce output compatible with Unix's diff3 program."
+ :type 'string
+ :group 'ediff-diff)
+
+;; The following functions must precede all defcustom-defined variables.
;; The following functions needed for setting diff/diff3 options
;; test if diff supports the --binary option
:type '(repeat string)
:group 'ediff-diff)
-(defcustom ediff-diff-program "diff"
- "*Program to use for generating the differential of the two files."
- :type 'string
- :group 'ediff-diff)
(defcustom ediff-diff-options ""
"*Options to pass to `ediff-diff-program'.
If diff\(1\) is used as `ediff-diff-program', then the most useful options are
(defvar ediff-match-diff3-line "^====\\(.?\\)$"
"Pattern to match lines produced by diff3 that describe differences.")
-(defcustom ediff-diff3-program "diff3"
- "*Program to be used for three-way comparison.
-Must produce output compatible with Unix's diff3 program."
- :type 'string
- :group 'ediff-diff)
(defcustom ediff-diff3-options ""
"*Options to pass to `ediff-diff3-program'."
:set 'ediff-reset-diff-options
args)
(setq args (append (split-string options) files))
(setq args (delete "" (delq nil args))) ; delete nil and "" from arguments
+ ;; the --binary option, if present, should be used only for buffer jobs
+ ;; or for refining the differences
+ (or (string-match "buffer" (symbol-name ediff-job-name))
+ (eq buffer ediff-fine-diff-buffer)
+ (setq args (delete "--binary" args)))
(unwind-protect
(let ((directory default-directory)
proc)
"*Characters constituting white space.
These characters are ignored when differing regions are split into words.")
-(defvar ediff-word-1 "\\(a-zA-Z---_\\|\w\\)"
+(defvar ediff-word-1 "a-zA-Z---_"
"*Characters that constitute words of type 1.
More precisely, [ediff-word-1] is a regexp that matches type 1 words.
See `ediff-forward-word' for more details.")
(> (skip-chars-forward ediff-word-4) 0)
))
+
(defun ediff-wordify (beg end in-buffer out-buffer &optional control-buf)
- (let (sv-point string)
+ (let (inbuf-syntax-tbl sv-point string)
(save-excursion
(set-buffer in-buffer)
+ (setq inbuf-syntax-tbl (syntax-table))
(setq string (buffer-substring-no-properties beg end))
(set-buffer out-buffer)
+ ;; Make sure that temp buff syntax table is the same a the original buf
+ ;; syntax tbl, because we use ediff-forward-word in both and
+ ;; ediff-forward-word depends on the syntax classes of characters.
+ (set-syntax-table inbuf-syntax-tbl)
(erase-buffer)
(insert string)
(goto-char (point-min))
;; different invocations
(if control-buf
(funcall
- (ediff-with-current-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)