Mercurial > emacs
changeset 29165:641e43bad886
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.
author | Michael Kifer <kifer@cs.stonybrook.edu> |
---|---|
date | Wed, 24 May 2000 17:31:16 +0000 |
parents | 71275ee34b42 |
children | dc6d60c27c31 |
files | lisp/ChangeLog lisp/ediff-diff.el lisp/ediff-init.el lisp/ediff-mult.el man/ediff.texi man/viper.texi |
diffstat | 6 files changed, 79 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Wed May 24 17:19:51 2000 +0000 +++ b/lisp/ChangeLog Wed May 24 17:31:16 2000 +0000 @@ -1,3 +1,17 @@ +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.
--- a/lisp/ediff-diff.el Wed May 24 17:19:51 2000 +0000 +++ b/lisp/ediff-diff.el Wed May 24 17:31:16 2000 +0000 @@ -45,6 +45,42 @@ :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)) @@ -76,11 +112,12 @@ "*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) @@ -105,6 +142,7 @@ :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 @@ -1173,8 +1211,7 @@ "*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.") @@ -1201,9 +1238,11 @@ "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)
--- a/lisp/ediff-init.el Wed May 24 17:19:51 2000 +0000 +++ b/lisp/ediff-init.el Wed May 24 17:31:16 2000 +0000 @@ -1206,6 +1206,11 @@ ;; 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.
--- a/lisp/ediff-mult.el Wed May 24 17:19:51 2000 +0000 +++ b/lisp/ediff-mult.el Wed May 24 17:31:16 2000 +0000 @@ -1587,7 +1587,7 @@ merge-autostore-dir) (concat merge-autostore-dir - "merge_" + ediff-merge-filename-prefix (file-name-nondirectory file1)) )) ;; make ediff-startup pass @@ -1618,7 +1618,7 @@ 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 @@ -1647,7 +1647,7 @@ 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 @@ -1673,7 +1673,7 @@ 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
--- a/man/ediff.texi Wed May 24 17:19:51 2000 +0000 +++ b/man/ediff.texi Wed May 24 17:31:16 2000 +0000 @@ -975,8 +975,8 @@ 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 @@ -1980,6 +1980,12 @@ 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
--- a/man/viper.texi Wed May 24 17:19:51 2000 +0000 +++ b/man/viper.texi Wed May 24 17:31:16 2000 +0000 @@ -2031,7 +2031,8 @@ @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 @@ -4442,6 +4443,7 @@ 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),