+2000-05-24 Michael Kifer <kifer@cs.sunysb.edu>
+
+ * ediff-diff.el (ediff-forward-word): take syntactic word class into
+ account.
+ (ediff-test-utility,ediff-diff-mandatory-option,
+ ediff-reset-diff-options): utilities for proper initialization of
+ ediff-diff-options and ediff-diff3-options on Windows.
+
+ * ediff-init.el (ediff-merge-filename-prefix): new customizable
+ variable.
+
+ * ediff-mult.el (ediff-filegroup-action): use
+ ediff-merge-filename-prefix.
+
2000-05-24 Michael Kifer <kifer@cs.sunysb.edu>
* viper-ex.el (ex-write): set selective display to nil.
:group 'ediff)
+;; The following functions needed for setting diff/diff3 options
+;; test if diff supports the --binary option
+(defsubst ediff-test-utility (diff-util option &optional files)
+ (zerop (apply 'call-process
+ (append (list diff-util nil nil nil option) files))))
+
+(defun ediff-diff-mandatory-option (diff-util)
+ (let ((file (if (boundp 'null-device) null-device "/dev/null")))
+ (cond ((not (memq system-type '(ms-dos windows-nt windows-95)))
+ "")
+ ((and (string= diff-util ediff-diff-program)
+ (ediff-test-utility
+ ediff-diff-program "--binary" (list file file)))
+ "--binary")
+ ((and (string= diff-util ediff-diff3-program)
+ (ediff-test-utility
+ ediff-diff3-program "--binary" (list file file file)))
+ "--binary")
+ (t ""))))
+
+;; make sure that mandatory options are added even if the user changes
+;; ediff-diff-options or ediff-diff3-options in the customization widget
+(defun ediff-reset-diff-options (symb val)
+ (let* ((diff-program
+ (if (eq symb 'ediff-diff-options)
+ ediff-diff-program
+ ediff-diff3-program))
+ (mandatory-option (ediff-diff-mandatory-option diff-program))
+ (spacer (if (string-equal mandatory-option "") "" " ")))
+ (set symb
+ (if (string-match mandatory-option val)
+ val
+ (concat mandatory-option spacer val)))
+ ))
+
+
(defcustom ediff-shell
(cond ((eq system-type 'emx) "cmd") ; OS/2
((memq system-type '(ms-dos windows-nt windows-95))
"*Program to use for generating the differential of the two files."
:type 'string
:group 'ediff-diff)
-(defcustom ediff-diff-options ""
+(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
`-w', to ignore space, and `-i', to ignore case of letters.
At present, the option `-c' is not allowed."
+ :set 'ediff-reset-diff-options
:type 'string
:group 'ediff-diff)
:group 'ediff-diff)
(defcustom ediff-diff3-options ""
"*Options to pass to `ediff-diff3-program'."
+ :set 'ediff-reset-diff-options
:type 'string
:group 'ediff-diff)
(defcustom ediff-diff3-ok-lines-regexp
"*Characters constituting white space.
These characters are ignored when differing regions are split into words.")
-;;(defvar ediff-word-1 "a-zA-Z---_`'.?!:"
-(defvar ediff-word-1 "a-zA-Z---_"
+(defvar ediff-word-1 "\\(a-zA-Z---_\\|\w\\)"
"*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.")
"Move point one word forward.
There are four types of words, each of which consists entirely of
characters in `ediff-word-1', `ediff-word-2', `ediff-word-3', or
-`ediff-word-4'. Words are recognized by passing these in turn as the
-argument to `skip-chars-forward'."
- (or (> (skip-chars-forward ediff-word-1) 0)
+`ediff-word-4'. Words are recognized by passing these one after another as
+arguments to `skip-chars-forward'."
+ (or (> (+ (skip-chars-forward ediff-word-1)
+ (skip-syntax-forward "w"))
+ 0)
(> (skip-chars-forward ediff-word-2) 0)
(> (skip-chars-forward ediff-word-3) 0)
(> (skip-chars-forward ediff-word-4) 0)
;; file where the result of the merge is to be saved. used internally
(ediff-defvar-local ediff-merge-store-file nil "")
+
+(defcustom ediff-merge-filename-prefix "merge_"
+ "*Prefix to be attached to saved merge buffers."
+ :type 'string
+ :group 'ediff-merge)
(defcustom ediff-no-emacs-help-in-control-buffer nil
"*Non-nil means C-h should not invoke Emacs help in control buffer.
merge-autostore-dir)
(concat
merge-autostore-dir
- "merge_"
+ ediff-merge-filename-prefix
(file-name-nondirectory file1))
))
;; make ediff-startup pass
merge-autostore-dir)
(concat
merge-autostore-dir
- "merge_"
+ ediff-merge-filename-prefix
(file-name-nondirectory file1))) )
;; make ediff-startup pass
;; ediff-control-buffer back to the meta
merge-autostore-dir)
(concat
merge-autostore-dir
- "merge_"
+ ediff-merge-filename-prefix
(file-name-nondirectory file1))) )
;; make ediff-startup pass
;; ediff-control-buffer back to the meta
merge-autostore-dir)
(concat
merge-autostore-dir
- "merge_"
+ ediff-merge-filename-prefix
(file-name-nondirectory file1))) )
(setq ediff-meta-buffer , (current-buffer)
ediff-meta-session-number
necessary.
The variable @code{ediff-autostore-merges} is buffer-local, so it can be
-set in a per-buffer manner. Therefore, use @code{setq-default} to globally
-change this variable.
+set on a per-buffer basis. Therefore, use @code{setq-default} to change
+this variable globally.
@cindex Multi-file patches
A multi-file patch is a concatenated output of several runs of the Unix
set in a per-buffer manner. Therefore, use @code{setq-default} to globally
change this variable.
+@vindex ediff-merge-filename-prefix
+When merge buffers are saved automatically as directed by
+@code{ediff-autostore-merges}, Ediff attaches a prefix to each file, as
+specified by the variable @code{ediff-merge-filename-prefix}. The default
+is @code{merge_}, but this can be changed by the user.
+
@node Support for Version Control, Customizing the Mode Line, Merging and diff3, Customization
@section Support for Version Control
@code{define-key} command, to modify @code{viper-vi-global-user-map},
@code{viper-insert-global-user-map}, and @code{viper-emacs-global-user-map}, as
explained below. Each of these key maps affects the corresponding Viper state.
-The keymap @code{viper-vi-global-user-map} also affects Viper's Replace state.
+The keymap @code{viper-insert-global-user-map} also affects Viper's Replace
+state.
@noindent
If you want to
kin@@isi.com (Kin Cho),
kwzh@@gnu.org (Karl Heuer),
lindstro@@biostat.wisc.edu (Mary Lindstrom),
+minakaji@@osaka.email.ne.jp (Mikio Nakajima),
Mark.Bordas@@East.Sun.COM (Mark Bordas),
meyering@@comco.com (Jim Meyering),
mrb@@Eng.Sun.COM (Martin Buchholz),