annotate lisp/diff.el @ 63308:51d38cfbe542

Warn about using "cvs up -kb" if one intends to commit changes. Add a pointer to another site with detailed configure and build instructions. Suggest to look at config.log when configure fails. Add MinGW Make 3.80 to the list of successful combinations.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 11 Jun 2005 11:31:29 +0000
parents 3654c6b288e0
children 6fb026ad601f 4c90ffeb71c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 25413
diff changeset
1 ;;; diff.el --- run `diff' in compilation-mode
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
2
53914
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
3 ;; Copyright (C) 1992, 1994, 1996, 2001, 2004 Free Software Foundation, Inc.
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
4
38697
a19197c6442f Keyword added and FSF specified as Maintainer.
Pavel Janík <Pavel@Janik.cz>
parents: 38414
diff changeset
5 ;; Maintainer: FSF
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1215
diff changeset
6 ;; Keywords: unix, tools
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 669
diff changeset
7
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 669
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 ;; any later version.
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 ;; GNU General Public License for more details.
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14140
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14140
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14140
diff changeset
23 ;; Boston, MA 02111-1307, USA.
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
25 ;;; Commentary:
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
26
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
27 ;; This package helps you explore differences between files, using the
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
28 ;; UNIX command diff(1). The commands are `diff' and `diff-backup'.
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
29 ;; You can specify options with `diff-switches'.
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
30
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
31 ;;; Code:
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 669
diff changeset
32
18143
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
33 (defgroup diff nil
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
34 "Comparing files with `diff'."
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
35 :group 'tools)
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
36
18143
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
37 ;;;###autoload
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
38 (defcustom diff-switches "-c"
55255
3654c6b288e0 (diff-switches): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 55117
diff changeset
39 "*A string or list of strings specifying switches to be passed to diff."
18143
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
40 :type '(choice string (repeat string))
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
41 :group 'diff)
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
42
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
43 ;;;###autoload
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
44 (defcustom diff-command "diff"
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
45 "*The command to use to run diff."
18150
960597385f1c (diff-command): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18143
diff changeset
46 :type 'string
18143
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
47 :group 'diff)
9736
093d80b4ae17 (diff-command): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8195
diff changeset
48
1134
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
49 (defvar diff-old-temp-file nil
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
50 "This is the name of a temp file to be deleted after diff finishes.")
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
51 (defvar diff-new-temp-file nil
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
52 "This is the name of a temp file to be deleted after diff finishes.")
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
53
53914
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
54 ;; prompt if prefix arg present
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
55 (defun diff-switches ()
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
56 (if current-prefix-arg
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
57 (read-string "Diff switches: "
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
58 (if (stringp diff-switches)
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
59 diff-switches
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
60 (mapconcat 'identity diff-switches " ")))))
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
61
53918
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
62 (defun diff-sentinel (code)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
63 "Code run when the diff process exits.
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
64 CODE is the exit code of the process. It should be 0 iff no diffs were found."
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
65 (if diff-old-temp-file (delete-file diff-old-temp-file))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
66 (if diff-new-temp-file (delete-file diff-new-temp-file))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
67 (save-excursion
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
68 (goto-char (point-max))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
69 (insert (format "\nDiff finished%s. %s\n"
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
70 (if (equal 0 code) " (no differences)" "")
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
71 (current-time-string)))))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
72
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 ;;;###autoload
47301
bac8aaf18835 (diff): Add optional argument no-async, and use the above argument.
Colin Walters <walters@gnu.org>
parents: 45472
diff changeset
74 (defun diff (old new &optional switches no-async)
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 "Find and display the differences between OLD and NEW files.
4759
5ca1f3073ffc (diff): Doc fix.
Brian Fox <bfox@gnu.org>
parents: 3874
diff changeset
76 Interactively the current buffer's file name is the default for NEW
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
77 and a backup file for NEW is the default for OLD.
53914
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
78 If NO-ASYNC is non-nil, call diff synchronously.
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
79 With prefix arg, prompt for diff switches."
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 (interactive
53914
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
81 (let (oldf newf)
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
82 (setq newf (buffer-file-name)
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
83 newf (if (and newf (file-exists-p newf))
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
84 (read-file-name
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
85 (concat "Diff new file: (default "
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
86 (file-name-nondirectory newf) ") ")
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
87 nil newf t)
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
88 (read-file-name "Diff new file: " nil nil t)))
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
89 (setq oldf (file-newest-backup newf)
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
90 oldf (if (and oldf (file-exists-p oldf))
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
91 (read-file-name
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
92 (concat "Diff original file: (default "
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
93 (file-name-nondirectory oldf) ") ")
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
94 (file-name-directory oldf) oldf t)
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
95 (read-file-name "Diff original file: "
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
96 (file-name-directory newf) nil t)))
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
97 (list oldf newf (diff-switches))))
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 (setq new (expand-file-name new)
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 old (expand-file-name old))
53917
04ab10f25d5c (diff): Simplify code handling `switch'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53916
diff changeset
100 (or switches (setq switches diff-switches)) ; If not specified, use default.
04ab10f25d5c (diff): Simplify code handling `switch'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53916
diff changeset
101 (let* ((old-alt (file-local-copy old))
1134
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
102 (new-alt (file-local-copy new))
53918
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
103 (command
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
104 (mapconcat 'identity
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
105 `(,diff-command
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
106 ;; Use explicitly specified switches
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
107 ,@(if (listp switches) switches (list switches))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
108 ,@(if (or old-alt new-alt)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
109 (list "-L" old "-L" new))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
110 ,(shell-quote-argument (or old-alt old))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
111 ,(shell-quote-argument (or new-alt new)))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
112 " "))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
113 (buf (get-buffer-create "*Diff*"))
55117
9ef081d74155 (diff): Set default-directory in diff buffer.
Andreas Schwab <schwab@suse.de>
parents: 53918
diff changeset
114 (thisdir default-directory)
53918
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
115 proc)
15932
e4d0cf418b2b (diff): Don't pop to *diff* buffer. Change bogus
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
116 (save-excursion
53918
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
117 (display-buffer buf)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
118 (set-buffer buf)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
119 (setq buffer-read-only nil)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
120 (buffer-disable-undo (current-buffer))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
121 (erase-buffer)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
122 (buffer-enable-undo (current-buffer))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
123 (diff-mode)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
124 (set (make-local-variable 'revert-buffer-function)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
125 `(lambda (ignore-auto noconfirm)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
126 (diff ',old ',new ',switches ',no-async)))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
127 (set (make-local-variable 'diff-old-temp-file) old-alt)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
128 (set (make-local-variable 'diff-new-temp-file) new-alt)
55117
9ef081d74155 (diff): Set default-directory in diff buffer.
Andreas Schwab <schwab@suse.de>
parents: 53918
diff changeset
129 (setq default-directory thisdir)
53918
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
130 (insert command "\n")
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
131 (if (and (not no-async) (fboundp 'start-process))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
132 (progn
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
133 (setq proc (start-process "Diff" buf shell-file-name
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
134 shell-command-switch command))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
135 (set-process-sentinel
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
136 proc (lambda (proc msg)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
137 (with-current-buffer (process-buffer proc)
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
138 (diff-sentinel (process-exit-status proc))))))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
139 ;; Async processes aren't available.
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
140 (diff-sentinel
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
141 (call-process shell-file-name nil buf nil
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
142 shell-command-switch command))))
3619e67b00f4 Don't use compile any more, use diff-mode instead.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53917
diff changeset
143 buf))
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 349
diff changeset
144
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
145 ;;;###autoload
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
146 (defun diff-backup (file &optional switches)
881
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
147 "Diff this file with its backup file or vice versa.
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
148 Uses the latest backup, if there are several numerical backups.
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
149 If this file is a backup, diff it with its original.
53914
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
150 The backup file is the first file given to `diff'.
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
151 With prefix arg, prompt for diff switches."
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
152 (interactive (list (read-file-name "Diff (file with backup): ")
53914
0ceb9e9ae2b0 (diff-switches): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52894
diff changeset
153 (diff-switches)))
881
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
154 (let (bak ori)
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
155 (if (backup-file-name-p file)
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
156 (setq bak file
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
157 ori (file-name-sans-versions file))
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
158 (setq bak (or (diff-latest-backup-file file)
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
159 (error "No backup found for %s" file))
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
160 ori file))
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
161 (diff bak ori switches)))
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 349
diff changeset
162
881
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
163 (defun diff-latest-backup-file (fn) ; actually belongs into files.el
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
164 "Return the latest existing backup of FILE, or nil."
7028
6915bf781a38 Pass operation to Ffind_file_name_handler.
Karl Heuer <kwzh@gnu.org>
parents: 6321
diff changeset
165 (let ((handler (find-file-name-handler fn 'diff-latest-backup-file)))
6147
f89879182407 (diff-latest-backup-file): Check for a file-name-handler and run it.
Roland McGrath <roland@gnu.org>
parents: 5542
diff changeset
166 (if handler
6321
8c667dc4566e (diff-latest-backup-file): Call file name handler properly.
Richard M. Stallman <rms@gnu.org>
parents: 6147
diff changeset
167 (funcall handler 'diff-latest-backup-file fn)
45472
6b7dcaa53b5c (diff-latest-backup-file): Replace the main code by a call of
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45198
diff changeset
168 (file-newest-backup fn))))
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 349
diff changeset
169
2541
09e58f572f19 (diff-parse-differences): Small robustification --- don't lose if we
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
170 (provide 'diff)
09e58f572f19 (diff-parse-differences): Small robustification --- don't lose if we
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
171
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 47320
diff changeset
172 ;;; arch-tag: 7de2c29b-7ea5-4b85-9b9d-72dd860de2bd
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 474
diff changeset
173 ;;; diff.el ends here