annotate lisp/ediff-ptch.el @ 107777:13c077500eb3

2010-04-04 John Wiegley <jwiegley@gmail.com> * ido.el (ido-use-virtual-buffers): New variable to indicate whether "virtual buffer" support is enabled for IDO. Essentially it works as follows: Say you are visiting a file and the buffer gets cleaned up by mignight.el. Later, you want to switch to that buffer, but find it's no longer open. With virtual buffers enabled, the buffer name stays in the buffer list (using the ido-virtual face, and always at the end), and if you select it, it opens the file back up again. This allows you to think less about whether recently opened files are still open or not. Most of the time you can quit Emacs, restart, and then switch to a file buffer that was previously open as if it still were. NOTE: This feature has been present in iswitchb for several years now, and I'm porting the same logic to IDO. (ido-virtual): Face used to indicate virtual buffers in the list. (ido-buffer-internal): If a buffer is chosen, and no such buffer exists, but a virtual buffer of that name does (which would be why it was in the list), recreate the buffer by reopening the file. (ido-make-buffer-list): If virtual buffers are being used, call `ido-add-virtual-buffers-to-list' before the make list hook. (ido-virtual-buffers): New variable which contains a copy of the current contents of the `recentf-list', albeit pared down for the sake of speed, and with proper faces applied. (ido-add-virtual-buffers-to-list): Using the `recentf-list', create a list of "virtual buffers" to present to the user in addition to the currently open set. Note that this logic could get rather slow if that list is too large. With the default `recentf-max-saved-items' of 200, there is little speed penalty.
author jwiegley@gmail.com
date Sun, 04 Apr 2010 02:55:19 -0400
parents 1d1d5d9bd884
children 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
1 ;;; ediff-ptch.el --- Ediff's patch support
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64215
diff changeset
3 ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106571
diff changeset
4 ;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
5
42602
633233bf2bbf 2002-01-07 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 38514
diff changeset
6 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
7
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
9
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94604
diff changeset
10 ;; GNU Emacs is free software: you can redistribute it and/or modify
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94604
diff changeset
12 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94604
diff changeset
13 ;; (at your option) any later version.
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
14
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
18 ;; GNU General Public License for more details.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
19
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94604
diff changeset
21 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
22
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34860
diff changeset
23 ;;; Commentary:
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
24
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
25 ;;; Code:
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
26
18054
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
27
93652
6523ed37006c 2008-04-04 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 87649
diff changeset
28 (provide 'ediff-ptch)
6523ed37006c 2008-04-04 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 87649
diff changeset
29
18054
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
30 (defgroup ediff-ptch nil
64009
86c9b411a34d (ediff-ptch): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 53477
diff changeset
31 "Ediff patch support."
18054
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
32 :tag "Patch"
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
33 :prefix "ediff-"
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
34 :group 'ediff)
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
35
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
36 ;; compiler pacifier
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
37 (eval-when-compile
94604
c0dfa9027738 Simplify compilation requirements.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
38 (require 'ediff))
18054
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
39 ;; end pacifier
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
40
15987
22da4beb0631 Require ediff-init.
Richard M. Stallman <rms@gnu.org>
parents: 15479
diff changeset
41 (require 'ediff-init)
22da4beb0631 Require ediff-init.
Richard M. Stallman <rms@gnu.org>
parents: 15479
diff changeset
42
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
43 (defcustom ediff-patch-program "patch"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 97142
diff changeset
44 "Name of the program that applies patches.
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
45 It is recommended to use GNU-compatible versions."
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
46 :type 'string
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
47 :group 'ediff-ptch)
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
48 (defcustom ediff-patch-options "-f"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 97142
diff changeset
49 "Options to pass to ediff-patch-program.
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
50
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
51 Note: the `-b' option should be specified in `ediff-backup-specs'.
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
52
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
53 It is recommended to pass the `-f' option to the patch program, so it won't ask
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
54 questions. However, some implementations don't accept this option, in which
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
55 case the default value for this variable should be changed."
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
56 :type 'string
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
57 :group 'ediff-ptch)
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
58
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
59 (defvar ediff-last-dir-patch nil
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
60 "Last directory used by an Ediff command for file to patch.")
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
61
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
62 ;; the default backup extension
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
63 (defconst ediff-default-backup-extension
97142
c3512b2085a0 * bitmaps/README:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94678
diff changeset
64 (if (memq system-type '(emx ms-dos))
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
65 "_orig" ".orig"))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
66
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
67
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
68 (defcustom ediff-backup-extension ediff-default-backup-extension
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
69 "Backup extension used by the patch program.
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
70 See also `ediff-backup-specs'."
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
71 :type 'string
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
72 :group 'ediff-ptch)
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
73
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
74 (defun ediff-test-patch-utility ()
46332
4079bb42ddae (ediff-test-patch-utility): Catch error and return nil.
Richard M. Stallman <rms@gnu.org>
parents: 44028
diff changeset
75 (condition-case nil
53477
79093b308520 * progmodes/idlwave.el (idlwave-make-tags):
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
76 (cond ((eq 0 (call-process ediff-patch-program nil nil nil "-z." "-b"))
46332
4079bb42ddae (ediff-test-patch-utility): Catch error and return nil.
Richard M. Stallman <rms@gnu.org>
parents: 44028
diff changeset
77 ;; GNU `patch' v. >= 2.2
4079bb42ddae (ediff-test-patch-utility): Catch error and return nil.
Richard M. Stallman <rms@gnu.org>
parents: 44028
diff changeset
78 'gnu)
53477
79093b308520 * progmodes/idlwave.el (idlwave-make-tags):
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
79 ((eq 0 (call-process ediff-patch-program nil nil nil "-b"))
46332
4079bb42ddae (ediff-test-patch-utility): Catch error and return nil.
Richard M. Stallman <rms@gnu.org>
parents: 44028
diff changeset
80 'posix)
4079bb42ddae (ediff-test-patch-utility): Catch error and return nil.
Richard M. Stallman <rms@gnu.org>
parents: 44028
diff changeset
81 (t 'traditional))
4079bb42ddae (ediff-test-patch-utility): Catch error and return nil.
Richard M. Stallman <rms@gnu.org>
parents: 44028
diff changeset
82 (file-error nil)))
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
83
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
84 (defcustom ediff-backup-specs
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
85 (let ((type (ediff-test-patch-utility)))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
86 (cond ((eq type 'gnu)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
87 ;; GNU `patch' v. >= 2.2
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
88 (format "-z%s -b" ediff-backup-extension))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
89 ((eq type 'posix)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
90 ;; POSIX `patch' -- ediff-backup-extension must be ".orig"
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
91 (setq ediff-backup-extension ediff-default-backup-extension)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
92 "-b")
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
93 (t
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
94 ;; traditional `patch'
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
95 (format "-b %s" ediff-backup-extension))))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 97142
diff changeset
96 "Backup directives to pass to the patch program.
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
97 Ediff requires that the old version of the file \(before applying the patch\)
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
98 be saved in a file named `the-patch-file.extension'. Usually `extension' is
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
99 `.orig', but this can be changed by the user and may depend on the system.
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
100 Therefore, Ediff needs to know the backup extension used by the patch program.
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
101
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
102 Some versions of the patch program let you specify `-b backup-extension'.
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
103 Other versions only permit `-b', which assumes the extension `.orig'
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
104 \(in which case ediff-backup-extension MUST be also `.orig'\). The latest
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
105 versions of GNU patch require `-b -z backup-extension'.
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
106
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
107 Note that both `ediff-backup-extension' and `ediff-backup-specs'
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
108 must be set properly. If your patch program takes the option `-b',
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
109 but not `-b extension', the variable `ediff-backup-extension' must
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
110 still be set so Ediff will know which extension to use.
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
111
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
112 Ediff tries to guess the appropriate value for this variables. It is believed
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
113 to be working for `traditional' patch, all versions of GNU patch, and for POSIX
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
114 patch. So, don't change these variables, unless the default doesn't work."
18054
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
115 :type 'string
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
116 :group 'ediff-ptch)
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
117
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
118
18054
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
119 (defcustom ediff-patch-default-directory nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 97142
diff changeset
120 "Default directory to look for patches."
18054
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
121 :type '(choice (const nil) string)
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
122 :group 'ediff-ptch)
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
123
81382
dbd9a7dfa004 2007-06-13 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 81334
diff changeset
124 ;; This context diff does not recognize spaces inside files, but removing ' '
dbd9a7dfa004 2007-06-13 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 81334
diff changeset
125 ;; from [^ \t] breaks normal patches for some reason
18054
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
126 (defcustom ediff-context-diff-label-regexp
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
127 (concat "\\(" ; context diff 2-liner
81382
dbd9a7dfa004 2007-06-13 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 81334
diff changeset
128 "^\\*\\*\\* +\\([^ \t]+\\)[^*]+[\t ]*\n--- +\\([^ \t]+\\)"
106571
a452e58c22cb (ediff-context-diff-label-regexp): Don't match
Juri Linkov <juri@jurta.org>
parents: 101721
diff changeset
129 "\\|" ; unified format diff 2-liner
a452e58c22cb (ediff-context-diff-label-regexp): Don't match
Juri Linkov <juri@jurta.org>
parents: 101721
diff changeset
130 "^--- +\\([^ \t]+\\).*\n\\+\\+\\+ +\\([^ \t]+\\)"
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
131 "\\)")
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 97142
diff changeset
132 "Regexp matching filename 2-liners at the start of each context diff.
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
133 You probably don't want to change that, unless you are using an obscure patch
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
134 program."
18054
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
135 :type 'regexp
0b9d9cbf3cd4 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16766
diff changeset
136 :group 'ediff-ptch)
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
137
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
138 ;; The buffer of the patch file. Local to control buffer.
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
139 (ediff-defvar-local ediff-patchbufer nil "")
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
140
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
141 ;; The buffer where patch displays its diagnostics.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
142 (ediff-defvar-local ediff-patch-diagnostics nil "")
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
143
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
144 ;; Map of patch buffer. Has the form:
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
145 ;; ((filename1 marker1 marker2) (filename2 marker1 marker2) ...)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
146 ;; where filenames are files to which patch would have applied the patch;
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
147 ;; marker1 delimits the beginning of the corresponding patch and marker2 does
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
148 ;; it for the end.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
149 (ediff-defvar-local ediff-patch-map nil "")
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
150
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
151 ;; strip prefix from filename
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
152 ;; returns /dev/null, if can't strip prefix
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
153 (defsubst ediff-file-name-sans-prefix (filename prefix)
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
154 (if prefix
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
155 (save-match-data
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
156 (if (string-match (concat "^" (if (stringp prefix)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
157 (regexp-quote prefix)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
158 ""))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
159 filename)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
160 (substring filename (match-end 0))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
161 (concat "/null/" filename)))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
162 filename)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
163 )
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
164
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
165
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
166
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
167 ;; no longer used
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
168 ;; return the number of matches of regexp in buf starting from the beginning
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
169 (defun ediff-count-matches (regexp buf)
19047
f90d40b0bff5 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18839
diff changeset
170 (ediff-with-current-buffer buf
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
171 (let ((count 0) opoint)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
172 (save-excursion
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
173 (goto-char (point-min))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
174 (while (and (not (eobp))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
175 (progn (setq opoint (point))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
176 (re-search-forward regexp nil t)))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
177 (if (= opoint (point))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
178 (forward-char 1)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
179 (setq count (1+ count)))))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
180 count)))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
181
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
182 ;; Scan BUF (which is supposed to contain a patch) and make a list of the form
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
183 ;; ((nil nil filename-spec1 marker1 marker2)
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
184 ;; (nil nil filename-spec2 marker1 marker2) ...)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
185 ;; where filename-spec[12] are files to which the `patch' program would
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
186 ;; have applied the patch.
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
187 ;; nin, nil are placeholders. See ediff-make-new-meta-list-element in
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
188 ;; ediff-meta.el for the explanations.
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
189 ;; In the beginning we don't know exactly which files need to be patched.
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
190 ;; We usually come up with two candidates and ediff-file-name-sans-prefix
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
191 ;; resolves this later.
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
192 ;;
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
193 ;; The marker `marker1' delimits the beginning of the corresponding patch and
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
194 ;; `marker2' does it for the end.
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
195 ;; The result of ediff-map-patch-buffer is a list, which is then assigned
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
196 ;; to ediff-patch-map.
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
197 ;; The function returns the number of elements in the list ediff-patch-map
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
198 (defun ediff-map-patch-buffer (buf)
19047
f90d40b0bff5 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18839
diff changeset
199 (ediff-with-current-buffer buf
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
200 (let ((count 0)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
201 (mark1 (move-marker (make-marker) (point-min)))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
202 (mark1-end (point-min))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
203 (possible-file-names '("/dev/null" . "/dev/null"))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
204 mark2-end mark2 filenames
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
205 beg1 beg2 end1 end2
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
206 patch-map opoint)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
207 (save-excursion
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
208 (goto-char (point-min))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
209 (setq opoint (point))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
210 (while (and (not (eobp))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
211 (re-search-forward ediff-context-diff-label-regexp nil t))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
212 (if (= opoint (point))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
213 (forward-char 1) ; ensure progress towards the end
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
214 (setq mark2 (move-marker (make-marker) (match-beginning 0))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
215 mark2-end (match-end 0)
16168
587b9c438823 (ediff-context-diff-label-regexp): Recognize -u format better.
Richard M. Stallman <rms@gnu.org>
parents: 15987
diff changeset
216 beg1 (or (match-beginning 2) (match-beginning 4))
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
217 end1 (or (match-end 2) (match-end 4))
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
218 beg2 (or (match-beginning 3) (match-beginning 5))
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
219 end2 (or (match-end 3) (match-end 5)))
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
220 ;; possible-file-names is holding the new file names until we
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
221 ;; insert the old file name in the patch map
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
222 ;; It is a pair
81331
c3779fe5830e 2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 75347
diff changeset
223 ;; (filename-from-1st-header-line . filename-from-2nd-line)
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
224 (setq possible-file-names
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
225 (cons (if (and beg1 end1)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
226 (buffer-substring beg1 end1)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
227 "/dev/null")
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
228 (if (and beg2 end2)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
229 (buffer-substring beg2 end2)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
230 "/dev/null")))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
231 ;; check for any `Index:' or `Prereq:' lines, but don't use them
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
232 (if (re-search-backward "^Index:" mark1-end 'noerror)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
233 (move-marker mark2 (match-beginning 0)))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
234 (if (re-search-backward "^Prereq:" mark1-end 'noerror)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
235 (move-marker mark2 (match-beginning 0)))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
236
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
237 (goto-char mark2-end)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
238
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
239 (if filenames
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
240 (setq patch-map
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
241 (cons (ediff-make-new-meta-list-element
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
242 filenames mark1 mark2)
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
243 patch-map)))
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
244 (setq mark1 mark2
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
245 mark1-end mark2-end
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
246 filenames possible-file-names))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
247 (setq opoint (point)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
248 count (1+ count))))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
249 (setq mark2 (point-max-marker)
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
250 patch-map (cons (ediff-make-new-meta-list-element
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
251 possible-file-names mark1 mark2)
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
252 patch-map))
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
253 (setq ediff-patch-map (nreverse patch-map))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
254 count)))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
255
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
256 ;; Fix up the file names in the list using the argument FILENAME
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
257 ;; Algorithm: find the files' directories in the patch and, if a directory is
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
258 ;; absolute, cut it out from the corresponding file name in the patch.
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
259 ;; Relative directories are not cut out.
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
260 ;; Prepend the directory of FILENAME to each resulting file (which came
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
261 ;; originally from the patch).
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
262 ;; In addition, the first file in the patch document is replaced by FILENAME.
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
263 ;; Each file is actually a pair of files found in the context diff header
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
264 ;; In the end, for each pair, we ask the user which file to patch.
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
265 ;; Note: Ediff doesn't recognize multi-file patches that are separated
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
266 ;; with the `Index:' line. It treats them as a single-file patch.
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
267 ;;
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
268 ;; Executes inside the patch buffer
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
269 (defun ediff-fixup-patch-map (filename)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
270 (setq filename (expand-file-name filename))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
271 (let ((actual-dir (if (file-directory-p filename)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
272 ;; directory part of filename
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
273 (file-name-as-directory filename)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
274 (file-name-directory filename)))
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
275 ;; In case 2 files are possible patch targets, the user will be offered
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
276 ;; to choose file1 or file2. In a multifile patch, if the user chooses
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
277 ;; 1 or 2, this choice is preserved to decide future alternatives.
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
278 chosen-alternative
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
279 )
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
280
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
281 ;; chop off base-dirs
84863
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
282 (mapc (lambda (session-info)
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
283 (let* ((proposed-file-names
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
284 ;; Filename-spec is objA; it is represented as
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
285 ;; (file1 . file2). Get it using ediff-get-session-objA.
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
286 (ediff-get-session-objA-name session-info))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
287 ;; base-dir1 is the dir part of the 1st file in the patch
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
288 (base-dir1
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
289 (or (file-name-directory (car proposed-file-names))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
290 ""))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
291 ;; directory part of the 2nd file in the patch
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
292 (base-dir2
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
293 (or (file-name-directory (cdr proposed-file-names))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
294 ""))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
295 )
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
296 ;; If both base-dir1 and base-dir2 are relative and exist,
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
297 ;; assume that
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
298 ;; these dirs lead to the actual files starting at the present
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
299 ;; directory. So, we don't strip these relative dirs from the
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
300 ;; file names. This is a heuristic intended to improve guessing
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
301 (let ((default-directory (file-name-directory filename)))
65856
d64aeb0dc54e 2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 65786
diff changeset
302 (unless (or (file-name-absolute-p base-dir1)
d64aeb0dc54e 2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 65786
diff changeset
303 (file-name-absolute-p base-dir2)
d64aeb0dc54e 2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 65786
diff changeset
304 (not (file-exists-p base-dir1))
d64aeb0dc54e 2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 65786
diff changeset
305 (not (file-exists-p base-dir2)))
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
306 (setq base-dir1 ""
84863
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
307 base-dir2 "")))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
308 (or (string= (car proposed-file-names) "/dev/null")
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
309 (setcar proposed-file-names
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
310 (ediff-file-name-sans-prefix
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
311 (car proposed-file-names) base-dir1)))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
312 (or (string=
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
313 (cdr proposed-file-names) "/dev/null")
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
314 (setcdr proposed-file-names
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
315 (ediff-file-name-sans-prefix
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
316 (cdr proposed-file-names) base-dir2)))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
317 ))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
318 ediff-patch-map)
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
319
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
320 ;; take the given file name into account
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
321 (or (file-directory-p filename)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
322 (string= "/dev/null" filename)
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
323 (setcar (ediff-get-session-objA (car ediff-patch-map))
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
324 (cons (file-name-nondirectory filename)
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
325 (file-name-nondirectory filename))))
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
326
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
327 ;; prepend actual-dir
84863
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
328 (mapc (lambda (session-info)
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
329 (let ((proposed-file-names
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
330 (ediff-get-session-objA-name session-info)))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
331 (if (and (string-match "^/null/" (car proposed-file-names))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
332 (string-match "^/null/" (cdr proposed-file-names)))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
333 ;; couldn't intuit the file name to patch, so
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
334 ;; something is amiss
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
335 (progn
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
336 (with-output-to-temp-buffer ediff-msg-buffer
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
337 (ediff-with-current-buffer standard-output
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
338 (fundamental-mode))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
339 (princ
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
340 (format "
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
341 The patch file contains a context diff for
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
342 %s
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
343 %s
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
344 However, Ediff cannot infer the name of the actual file
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
345 to be patched on your system. If you know the correct file name,
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
346 please enter it now.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
347
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
348 If you don't know and still would like to apply patches to
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
349 other files, enter /dev/null
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
350 "
84863
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
351 (substring (car proposed-file-names) 6)
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
352 (substring (cdr proposed-file-names) 6))))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
353 (let ((directory t)
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
354 user-file)
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
355 (while directory
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
356 (setq user-file
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
357 (read-file-name
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
358 "Please enter file name: "
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
359 actual-dir actual-dir t))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
360 (if (not (file-directory-p user-file))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
361 (setq directory nil)
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
362 (setq directory t)
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
363 (beep)
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
364 (message "%s is a directory" user-file)
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
365 (sit-for 2)))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
366 (setcar (ediff-get-session-objA session-info)
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
367 (cons user-file user-file))))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
368 (setcar proposed-file-names
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
369 (expand-file-name
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
370 (concat actual-dir (car proposed-file-names))))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
371 (setcdr proposed-file-names
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
372 (expand-file-name
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
373 (concat actual-dir (cdr proposed-file-names)))))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
374 ))
8074127c97d7 (ediff-fixup-patch-map): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents: 82140
diff changeset
375 ediff-patch-map)
65856
d64aeb0dc54e 2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 65786
diff changeset
376 ;; Check for the existing files in each pair and discard the nonexisting
d64aeb0dc54e 2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 65786
diff changeset
377 ;; ones. If both exist, ask the user.
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
378 (mapcar (lambda (session-info)
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
379 (let* ((file1 (car (ediff-get-session-objA-name session-info)))
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
380 (file2 (cdr (ediff-get-session-objA-name session-info)))
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
381 (session-file-object
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
382 (ediff-get-session-objA session-info))
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
383 (f1-exists (file-exists-p file1))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
384 (f2-exists (file-exists-p file2)))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
385 (cond
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
386 ((and
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
387 ;; The patch program prefers the shortest file as the patch
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
388 ;; target. However, this is a questionable heuristic. In an
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
389 ;; interactive program, like ediff, we can offer the user a
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
390 ;; choice.
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
391 ;; (< (length file2) (length file1))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
392 (not f1-exists)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
393 f2-exists)
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
394 ;; replace file-pair with the winning file2
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
395 (setcar session-file-object file2))
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
396 ((and
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
397 ;; (< (length file1) (length file2))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
398 (not f2-exists)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
399 f1-exists)
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
400 ;; replace file-pair with the winning file1
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
401 (setcar session-file-object file1))
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
402 ((and f1-exists f2-exists
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
403 (string= file1 file2))
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
404 (setcar session-file-object file1))
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
405 ((and f1-exists f2-exists (eq chosen-alternative 1))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
406 (setcar session-file-object file1))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
407 ((and f1-exists f2-exists (eq chosen-alternative 2))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
408 (setcar session-file-object file2))
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
409 ((and f1-exists f2-exists)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
410 (with-output-to-temp-buffer ediff-msg-buffer
33393
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
411 (ediff-with-current-buffer standard-output
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
412 (fundamental-mode))
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
413 (princ (format "
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
414 Ediff has inferred that
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
415 %s
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
416 %s
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
417 are two possible targets for applying the patch.
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
418 Both files seem to be plausible alternatives.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
419
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
420 Please advice:
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
421 Type `y' to use %s as the target;
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
422 Type `n' to use %s as the target.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
423 "
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
424 file1 file2 file1 file2)))
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
425 (setcar session-file-object
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
426 (if (y-or-n-p (format "Use %s ? " file1))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
427 (progn
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
428 (setq chosen-alternative 1)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
429 file1)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
430 (setq chosen-alternative 2)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
431 file2))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
432 )
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
433 (f2-exists (setcar session-file-object file2))
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
434 (f1-exists (setcar session-file-object file1))
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
435 (t
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
436 (with-output-to-temp-buffer ediff-msg-buffer
33393
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
437 (ediff-with-current-buffer standard-output
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
438 (fundamental-mode))
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
439 (princ "\nEdiff has inferred that")
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
440 (if (string= file1 file2)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
441 (princ (format "
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
442 %s
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
443 is assumed to be the target for this patch. However, this file does not exist."
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
444 file1))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
445 (princ (format "
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
446 %s
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
447 %s
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
448 are two possible targets for this patch. However, these files do not exist."
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
449 file1 file2)))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
450 (princ "
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
451 \nPlease enter an alternative patch target ...\n"))
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
452 (let ((directory t)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
453 target)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
454 (while directory
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
455 (setq target (read-file-name
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
456 "Please enter a patch target: "
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
457 actual-dir actual-dir t))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
458 (if (not (file-directory-p target))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
459 (setq directory nil)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
460 (beep)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
461 (message "%s is a directory" target)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
462 (sit-for 2)))
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
463 (setcar session-file-object target))))))
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
464 ediff-patch-map)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
465 ))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
466
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
467 (defun ediff-show-patch-diagnostics ()
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
468 (interactive)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
469 (cond ((window-live-p ediff-window-A)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
470 (set-window-buffer ediff-window-A ediff-patch-diagnostics))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
471 ((window-live-p ediff-window-B)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
472 (set-window-buffer ediff-window-B ediff-patch-diagnostics))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
473 (t (display-buffer ediff-patch-diagnostics 'not-this-window))))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
474
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
475 ;; prompt for file, get the buffer
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
476 (defun ediff-prompt-for-patch-file ()
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
477 (let ((dir (cond (ediff-use-last-dir ediff-last-dir-patch)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
478 (ediff-patch-default-directory) ; try patch default dir
38514
10482dd382e7 * viper-ex.el (ex-token-list,ex-cmd-execute): Revamped, courtesy
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 38422
diff changeset
479 (t default-directory)))
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
480 (coding-system-for-read ediff-coding-system-for-read)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
481 patch-file-name)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
482 (setq patch-file-name
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
483 (read-file-name
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65627
diff changeset
484 (format "Patch is in file%s: "
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
485 (cond ((and buffer-file-name
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
486 (equal (expand-file-name dir)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
487 (file-name-directory buffer-file-name)))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
488 (concat
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
489 " (default "
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
490 (file-name-nondirectory buffer-file-name)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
491 ")"))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
492 (t "")))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
493 dir buffer-file-name 'must-match))
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
494 (if (file-directory-p patch-file-name)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
495 (error "Patch file cannot be a directory: %s" patch-file-name)
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
496 (find-file-noselect patch-file-name))
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
497 ))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
498
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
499
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
500 ;; Try current buffer, then the other window's buffer. Else, give up.
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
501 (defun ediff-prompt-for-patch-buffer ()
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
502 (get-buffer
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
503 (read-buffer
34860
fdb5d08ced13 2000-12-25 Michael Kifer <kifer@cs.sunysb.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 33393
diff changeset
504 "Buffer that holds the patch: "
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
505 (cond ((save-excursion
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
506 (goto-char (point-min))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
507 (re-search-forward ediff-context-diff-label-regexp nil t))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
508 (current-buffer))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
509 ((save-window-excursion
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
510 (other-window 1)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
511 (save-excursion
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
512 (goto-char (point-min))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
513 (and (re-search-forward ediff-context-diff-label-regexp nil t)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
514 (current-buffer)))))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
515 ((save-window-excursion
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
516 (other-window -1)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
517 (save-excursion
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
518 (goto-char (point-min))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
519 (and (re-search-forward ediff-context-diff-label-regexp nil t)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
520 (current-buffer)))))
38514
10482dd382e7 * viper-ex.el (ex-token-list,ex-cmd-execute): Revamped, courtesy
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 38422
diff changeset
521 (t (ediff-other-buffer (current-buffer))))
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
522 'must-match)))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
523
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
524
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
525 (defun ediff-get-patch-buffer (&optional arg patch-buf)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
526 "Obtain patch buffer. If patch is already in a buffer---use it.
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
527 Else, read patch file into a new buffer. If patch buffer is passed as an
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
528 optional argument, then use it."
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
529 (let ((last-nonmenu-event t) ; Emacs: don't use dialog box
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
530 last-command-event) ; XEmacs: don't use dialog box
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
531
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
532 (cond ((ediff-buffer-live-p patch-buf))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
533 ;; even prefix arg: patch in buffer
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
534 ((and (integerp arg) (eq 0 (mod arg 2)))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
535 (setq patch-buf (ediff-prompt-for-patch-buffer)))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
536 ;; odd prefix arg: get patch from a file
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
537 ((and (integerp arg) (eq 1 (mod arg 2)))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
538 (setq patch-buf (ediff-prompt-for-patch-file)))
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
539 (t (setq patch-buf
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
540 (if (y-or-n-p "Is the patch already in a buffer? ")
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
541 (ediff-prompt-for-patch-buffer)
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
542 (ediff-prompt-for-patch-file)))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
543
19047
f90d40b0bff5 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18839
diff changeset
544 (ediff-with-current-buffer patch-buf
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
545 (goto-char (point-min))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
546 (or (ediff-get-visible-buffer-window patch-buf)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
547 (progn
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
548 (pop-to-buffer patch-buf 'other-window)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
549 (select-window (previous-window)))))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
550 (ediff-map-patch-buffer patch-buf)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
551 patch-buf))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
552
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
553 ;; Dispatch the right patch file function: regular or meta-level,
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
554 ;; depending on how many patches are in the patch file.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
555 ;; At present, there is no support for meta-level patches.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
556 ;; Should return either the ctl buffer or the meta-buffer
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
557 (defun ediff-dispatch-file-patching-job (patch-buf filename
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
558 &optional startup-hooks)
19047
f90d40b0bff5 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18839
diff changeset
559 (ediff-with-current-buffer patch-buf
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
560 ;; relativize names in the patch with respect to source-file
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
561 (ediff-fixup-patch-map filename)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
562 (if (< (length ediff-patch-map) 2)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
563 (ediff-patch-file-internal
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
564 patch-buf
33393
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
565 (if (and ediff-patch-map
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
566 (not (string-match
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
567 "^/dev/null"
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
568 ;; this is the file to patch
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
569 (ediff-get-session-objA-name (car ediff-patch-map))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
570 (> (length
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
571 (ediff-get-session-objA-name (car ediff-patch-map)))
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
572 1))
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
573 (ediff-get-session-objA-name (car ediff-patch-map))
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
574 filename)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
575 startup-hooks)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
576 (ediff-multi-patch-internal patch-buf startup-hooks))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
577 ))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
578
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
579
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
580 ;; When patching a buffer, never change the orig file. Instead, create a new
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
581 ;; buffer, ***_patched, even if the buff visits a file.
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
582 ;; Users who want to actually patch the buffer should use
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
583 ;; ediff-patch-file, not ediff-patch-buffer.
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
584 (defun ediff-patch-buffer-internal (patch-buf
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
585 buf-to-patch-name
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
586 &optional startup-hooks)
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
587 (let* ((buf-to-patch (get-buffer buf-to-patch-name))
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
588 (visited-file (if buf-to-patch (buffer-file-name buf-to-patch)))
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
589 (buf-mod-status (buffer-modified-p buf-to-patch))
19047
f90d40b0bff5 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18839
diff changeset
590 (multifile-patch-p (> (length (ediff-with-current-buffer patch-buf
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
591 ediff-patch-map)) 1))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
592 default-dir file-name ctl-buf)
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
593 (if multifile-patch-p
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
594 (error
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
595 "To apply multi-file patches, please use `ediff-patch-file'"))
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
596
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
597 ;; create a temp file to patch
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
598 (ediff-with-current-buffer buf-to-patch
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
599 (setq default-dir default-directory)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
600 (setq file-name (ediff-make-temp-file buf-to-patch))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
601 ;; temporarily switch visited file name, if any
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
602 (set-visited-file-name file-name)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
603 ;; don't create auto-save file, if buff was visiting a file
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
604 (or visited-file
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
605 (setq buffer-auto-save-file-name nil))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
606 ;; don't confuse the user with a new bufname
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
607 (rename-buffer buf-to-patch-name)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
608 (set-buffer-modified-p nil)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
609 (set-visited-file-modtime) ; sync buffer and temp file
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
610 (setq default-directory default-dir)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
611 )
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
612
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
613 ;; dispatch a patch function
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
614 (setq ctl-buf (ediff-dispatch-file-patching-job
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
615 patch-buf file-name startup-hooks))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
616
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
617 (ediff-with-current-buffer ctl-buf
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
618 (delete-file (buffer-file-name ediff-buffer-A))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
619 (delete-file (buffer-file-name ediff-buffer-B))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
620 (ediff-with-current-buffer ediff-buffer-A
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
621 (if default-dir (setq default-directory default-dir))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
622 (set-visited-file-name visited-file) ; visited-file might be nil
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
623 (rename-buffer buf-to-patch-name)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
624 (set-buffer-modified-p buf-mod-status))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
625 (ediff-with-current-buffer ediff-buffer-B
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
626 (setq buffer-auto-save-file-name nil) ; don't create auto-save file
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
627 (if default-dir (setq default-directory default-dir))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
628 (set-visited-file-name nil)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
629 (rename-buffer (ediff-unique-buffer-name
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
630 (concat buf-to-patch-name "_patched") ""))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
631 (set-buffer-modified-p t)))
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
632 ))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
633
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
634
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
635 ;; Traditional patch has weird return codes.
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
636 ;; GNU and Posix return 1 if some hanks failed and 2 in case of trouble.
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
637 ;; 0 is a good code in all cases.
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
638 ;; We'll do the concervative thing.
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
639 (defun ediff-patch-return-code-ok (code)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
640 (eq code 0))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
641 ;;; (if (eq (ediff-test-patch-utility) 'traditional)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
642 ;;; (eq code 0)
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
643 ;;; (not (eq code 2))))
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
644
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
645 (defun ediff-patch-file-internal (patch-buf source-filename
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
646 &optional startup-hooks)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
647 (setq source-filename (expand-file-name source-filename))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
648
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
649 (let* ((shell-file-name ediff-shell)
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
650 (patch-diagnostics (get-buffer-create "*ediff patch diagnostics*"))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
651 ;; ediff-find-file may use a temp file to do the patch
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
652 ;; so, we save source-filename and true-source-filename as a var
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
653 ;; that initially is source-filename but may be changed to a temp
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
654 ;; file for the purpose of patching.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
655 (true-source-filename source-filename)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
656 (target-filename source-filename)
38514
10482dd382e7 * viper-ex.el (ex-token-list,ex-cmd-execute): Revamped, courtesy
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 38422
diff changeset
657 ;; this ensures that the patch process gets patch buffer in the
10482dd382e7 * viper-ex.el (ex-token-list,ex-cmd-execute): Revamped, courtesy
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 38422
diff changeset
658 ;; encoding that Emacs thinks is right for that type of text
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
659 (coding-system-for-write
38514
10482dd382e7 * viper-ex.el (ex-token-list,ex-cmd-execute): Revamped, courtesy
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 38422
diff changeset
660 (if (boundp 'buffer-file-coding-system) buffer-file-coding-system))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
661 target-buf buf-to-patch file-name-magic-p
19047
f90d40b0bff5 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18839
diff changeset
662 patch-return-code ctl-buf backup-style aux-wind)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
663
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
664 (if (string-match "V" ediff-patch-options)
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
665 (error
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
666 "Ediff doesn't take the -V option in `ediff-patch-options'--sorry"))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
667
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
668 ;; Make a temp file, if source-filename has a magic file handler (or if
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
669 ;; it is handled via auto-mode-alist and similar magic).
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
670 ;; Check if there is a buffer visiting source-filename and if they are in
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
671 ;; sync; arrange for the deletion of temp file.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
672 (ediff-find-file 'true-source-filename 'buf-to-patch
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
673 'ediff-last-dir-patch 'startup-hooks)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
674
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
675 ;; Check if source file name has triggered black magic, such as file name
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
676 ;; handlers or auto mode alist, and make a note of it.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
677 ;; true-source-filename should be either the original name or a
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
678 ;; temporary file where we put the after-product of the file handler.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
679 (setq file-name-magic-p (not (equal (file-truename true-source-filename)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
680 (file-truename source-filename))))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
681
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
682 ;; Checkout orig file, if necessary, so that the patched file
16766
beb94a5271e2 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16248
diff changeset
683 ;; could be checked back in.
beb94a5271e2 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16248
diff changeset
684 (ediff-maybe-checkout buf-to-patch)
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
685
19047
f90d40b0bff5 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18839
diff changeset
686 (ediff-with-current-buffer patch-diagnostics
65627
511f8e9d22ca 2005-09-20 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 64762
diff changeset
687 (insert-buffer-substring patch-buf)
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
688 (message "Applying patch ... ")
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
689 ;; fix environment for gnu patch, so it won't make numbered extensions
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
690 (setq backup-style (getenv "VERSION_CONTROL"))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
691 (setenv "VERSION_CONTROL" nil)
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
692 (setq patch-return-code
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
693 (call-process-region
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
694 (point-min) (point-max)
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
695 shell-file-name
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
696 t ; delete region (which contains the patch
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
697 t ; insert output (patch diagnostics) in current buffer
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
698 nil ; don't redisplay
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
699 shell-command-switch ; usually -c
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
700 (format "%s %s %s %s"
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
701 ediff-patch-program
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
702 ediff-patch-options
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
703 ediff-backup-specs
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
704 (expand-file-name true-source-filename))
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
705 ))
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
706
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
707 ;; restore environment for gnu patch
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
708 (setenv "VERSION_CONTROL" backup-style))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
709
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
710 (message "Applying patch ... done")
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
711 (message "")
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
712
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
713 (switch-to-buffer patch-diagnostics)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
714 (sit-for 0) ; synchronize - let the user see diagnostics
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
715
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
716 (or (and (ediff-patch-return-code-ok patch-return-code)
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
717 (file-exists-p
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
718 (concat true-source-filename ediff-backup-extension)))
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
719 (progn
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
720 (with-output-to-temp-buffer ediff-msg-buffer
33393
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
721 (ediff-with-current-buffer standard-output
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
722 (fundamental-mode))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
723 (princ (format
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
724 "Patch program has failed due to a bad patch file,
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
725 it couldn't apply all hunks, OR
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
726 it couldn't create the backup for the file being patched.
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
727
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
728 The former could be caused by a corrupt patch file or because the %S
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
729 program doesn't understand the format of the patch file in use.
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
730
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
731 The second problem might be due to an incompatibility among these settings:
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
732 ediff-patch-program = %S ediff-patch-options = %S
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
733 ediff-backup-extension = %S ediff-backup-specs = %S
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
734
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
735 See Ediff on-line manual for more details on these variables.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
736 In particular, check the documentation for `ediff-backup-specs'.
19774
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
737
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
738 In any of the above cases, Ediff doesn't compare files automatically.
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
739 However, if the patch was applied partially and the backup file was created,
1ecc4a79d048 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19047
diff changeset
740 you can still examine the changes via M-x ediff-files"
33393
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
741 ediff-patch-program
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
742 ediff-patch-program
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
743 ediff-patch-options
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
744 ediff-backup-extension
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
745 ediff-backup-specs
a0ee9eabfff3 (ediff-dispatch-file-patching-job): Check
Dave Love <fx@gnu.org>
parents: 26585
diff changeset
746 )))
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
747 (beep 1)
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
748 (if (setq aux-wind (get-buffer-window ediff-msg-buffer))
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
749 (progn
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
750 (select-window aux-wind)
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
751 (goto-char (point-max))))
18839
1405083241e8 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18054
diff changeset
752 (switch-to-buffer-other-window patch-diagnostics)
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
753 (error "Patch appears to have failed")))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
754
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
755 ;; If black magic is involved, apply patch to a temp copy of the
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
756 ;; file. Otherwise, apply patch to the orig copy. If patch is applied
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
757 ;; to temp copy, we name the result old-name_patched for local files
26263
4f315ca65976 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 19774
diff changeset
758 ;; and temp-copy_patched for remote files. The orig file name isn't
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
759 ;; changed, and the temp copy of the original is later deleted.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
760 ;; Without magic, the original file is renamed (usually into
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
761 ;; old-name_orig) and the result of patching will have the same name as
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
762 ;; the original.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
763 (if (not file-name-magic-p)
19047
f90d40b0bff5 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18839
diff changeset
764 (ediff-with-current-buffer buf-to-patch
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
765 (set-visited-file-name
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
766 (concat source-filename ediff-backup-extension))
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
767 (set-buffer-modified-p nil))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
768
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
769 ;; Black magic in effect.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
770 ;; If orig file was remote, put the patched file in the temp directory.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
771 ;; If orig file is local, put the patched file in the directory of
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
772 ;; the orig file.
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
773 (setq target-filename
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
774 (concat
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
775 (if (ediff-file-remote-p (file-truename source-filename))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
776 true-source-filename
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
777 source-filename)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
778 "_patched"))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
779
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
780 (rename-file true-source-filename target-filename t)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
781
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
782 ;; arrange that the temp copy of orig will be deleted
16248
b2fae8abc5b0 *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 16168
diff changeset
783 (rename-file (concat true-source-filename ediff-backup-extension)
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
784 true-source-filename t))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
785
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
786 ;; make orig buffer read-only
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
787 (setq startup-hooks
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
788 (cons 'ediff-set-read-only-in-buf-A startup-hooks))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
789
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
790 ;; set up a buf for the patched file
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
791 (setq target-buf (find-file-noselect target-filename))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
792
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
793 (setq ctl-buf
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
794 (ediff-buffers-internal
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
795 buf-to-patch target-buf nil
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
796 startup-hooks 'epatch))
19047
f90d40b0bff5 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18839
diff changeset
797 (ediff-with-current-buffer ctl-buf
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
798 (setq ediff-patchbufer patch-buf
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
799 ediff-patch-diagnostics patch-diagnostics))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
800
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
801 (bury-buffer patch-diagnostics)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
802 (message "Type `P', if you need to see patch diagnostics")
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
803 ctl-buf))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
804
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
805 (defun ediff-multi-patch-internal (patch-buf &optional startup-hooks)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
806 (let (meta-buf)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
807 (setq startup-hooks
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
808 ;; this sets various vars in the meta buffer inside
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
809 ;; ediff-prepare-meta-buffer
26585
3ec5a485d0ab *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 26263
diff changeset
810 (cons `(lambda ()
3ec5a485d0ab *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 26263
diff changeset
811 ;; tell what to do if the user clicks on a session record
3ec5a485d0ab *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 26263
diff changeset
812 (setq ediff-session-action-function
3ec5a485d0ab *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 26263
diff changeset
813 'ediff-patch-file-form-meta
3ec5a485d0ab *** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 26263
diff changeset
814 ediff-meta-patchbufer patch-buf) )
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
815 startup-hooks))
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
816 (setq meta-buf (ediff-prepare-meta-buffer
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
817 'ediff-filegroup-action
19047
f90d40b0bff5 new version
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 18839
diff changeset
818 (ediff-with-current-buffer patch-buf
44028
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
819 (cons (ediff-make-new-meta-list-header
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
820 nil ; regexp
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
821 (format "%S" patch-buf) ; obj A
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
822 nil nil ; objects B,C
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
823 nil ; merge-auto-store-dir
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
824 nil ; comparison-func
182881d68883 * ediff-diff.el (ediff-install-fine-diff-if-necessary): take
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 42602
diff changeset
825 )
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
826 ediff-patch-map))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
827 "*Ediff Session Group Panel"
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
828 'ediff-redraw-directory-group-buffer
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
829 'ediff-multifile-patch
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
830 startup-hooks))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
831 (ediff-show-meta-buffer meta-buf)
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
832 ))
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
833
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
834
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46332
diff changeset
835
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
836
101721
c55394eee0de Follow commenting conventions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
837 ;; Local Variables:
c55394eee0de Follow commenting conventions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
838 ;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
c55394eee0de Follow commenting conventions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
839 ;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
c55394eee0de Follow commenting conventions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
840 ;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
c55394eee0de Follow commenting conventions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
841 ;; End:
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
842
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93652
diff changeset
843 ;; arch-tag: 2fe2161e-e116-469b-90fa-5cbb44c1bd1b
15479
78863db629bb Initial revision
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
diff changeset
844 ;;; ediff-ptch.el ends here