annotate lisp/diff.el @ 53879:e3771c262410

New file. Move original fringe related declarations and code from dispextern.h and xdisp.c here. Rework code to support user defined fringe bitmaps, redefining standard bitmaps, ability to overlay user defined bitmap with overlay arrow bitmap, and add faces to bitmaps. (Voverflow_newline_into_fringe): Declare here. (enum fringe_bitmap_align): New enum. (..._bits): All bitmaps are now defined without bitswapping; that is now done in init_fringe_once (if necessary). (standard_bitmaps): New array with specifications for the standard fringe bitmaps. (fringe_faces): New array. (valid_fringe_bitmap_id_p): New function. (draw_fringe_bitmap_1): Rename from draw_fringe_bitmap. (draw_fringe_bitmap): New function which draws fringe bitmap, possibly overlaying bitmap with cursor in right fringe or the overlay arrow in the left fringe. (update_window_fringes): Do not handle overlay arrow here. Compare and copy fringe bitmap faces. (init_fringe_bitmap): New function. (Fdefine_fringe_bitmap, Fdestroy_fringe_bitmap): New DEFUNs to define and destroy user defined fringe bitmaps. (Fset_fringe_bitmap_face): New DEFUN to set face for a fringe bitmap. (Ffringe_bitmaps_at_pos): New DEFUN to read current fringe bitmaps. (syms_of_fringe): New function. Defsubr new DEFUNs. DEFVAR_LISP Voverflow_newline_into_fringe. (init_fringe_once, init_fringe): New functions. (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: New functions.
author Kim F. Storm <storm@cua.dk>
date Sun, 08 Feb 2004 23:18:16 +0000
parents e8f59117cabb
children 0ceb9e9ae2b0
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
39758
875aaf118d95 (diff): Display default values in prompts as `(default ...)', not `(...)'.
Miles Bader <miles@gnu.org>
parents: 38697
diff changeset
3 ;; Copyright (C) 1992, 1994, 1996, 2001 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
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
33 (require 'compile)
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 669
diff changeset
34
18143
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
35 (defgroup diff nil
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
36 "Comparing files with `diff'."
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
37 :group 'tools)
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
38
18143
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
39 ;;;###autoload
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
40 (defcustom diff-switches "-c"
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
41 "*A string or list of strings specifying switches to be be passed to diff."
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
42 :type '(choice string (repeat string))
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
43 :group 'diff)
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
44
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
45 ;;;###autoload
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
46 (defcustom diff-command "diff"
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
47 "*The command to use to run diff."
18150
960597385f1c (diff-command): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18143
diff changeset
48 :type 'string
18143
3584a8182767 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17732
diff changeset
49 :group 'diff)
9736
093d80b4ae17 (diff-command): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8195
diff changeset
50
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
51 (defvar diff-regexp-alist
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
52 '(
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
53 ;; -u format: @@ -OLDSTART,OLDEND +NEWSTART,NEWEND @@
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
54 ("^@@ -\\([0-9]+\\),[0-9]+ \\+\\([0-9]+\\),[0-9]+ @@$" 1 2)
14140
db5e78740d5c (diff): Fix local compilation-exit-message-function to take the proper
Roland McGrath <roland@gnu.org>
parents: 14106
diff changeset
55
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
56 ;; -c format: *** OLDSTART,OLDEND ****
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
57 ("^\\*\\*\\* \\([0-9]+\\),[0-9]+ \\*\\*\\*\\*$" 1 nil)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
58 ;; --- NEWSTART,NEWEND ----
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
59 ("^--- \\([0-9]+\\),[0-9]+ ----$" nil 1)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
60
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
61 ;; plain diff format: OLDSTART[,OLDEND]{a,d,c}NEWSTART[,NEWEND]
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
62 ("^\\([0-9]+\\)\\(,[0-9]+\\)?[adc]\\([0-9]+\\)\\(,[0-9]+\\)?$" 1 3)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
63
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
64 ;; -e (ed) format: OLDSTART[,OLDEND]{a,d,c}
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
65 ("^\\([0-9]+\\)\\(,[0-9]+\\)?[adc]$" 1)
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
67 ;; -f format: {a,d,c}OLDSTART[ OLDEND]
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
68 ;; -n format: {a,d,c}OLDSTART LINES-CHANGED
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
69 ("^[adc]\\([0-9]+\\)\\( [0-9]+\\)?$" 1)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
70 )
45198
0f3260023919 (diff-regexp-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39758
diff changeset
71 "Alist of regular expressions to match difference sections in \\[diff] output.
0f3260023919 (diff-regexp-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39758
diff changeset
72 Each element has the form (REGEXP OLD-IDX NEW-IDX).
0f3260023919 (diff-regexp-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39758
diff changeset
73 Any text that REGEXP matches identifies one difference hunk
0f3260023919 (diff-regexp-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39758
diff changeset
74 or the header of a hunk.
0f3260023919 (diff-regexp-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39758
diff changeset
75
0f3260023919 (diff-regexp-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39758
diff changeset
76 The OLD-IDX'th subexpression of REGEXP gives the line number
0f3260023919 (diff-regexp-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39758
diff changeset
77 in the old file, and NEW-IDX'th subexpression gives the line number
0f3260023919 (diff-regexp-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39758
diff changeset
78 in the new file. If OLD-IDX or NEW-IDX
0f3260023919 (diff-regexp-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39758
diff changeset
79 is nil, REGEXP matches only half a hunk.")
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80
1134
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
81 (defvar diff-old-file nil
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
82 "This is the old file name in the comparison in this buffer.")
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
83 (defvar diff-new-file nil
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
84 "This is the new file name in the comparison in this buffer.")
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
85 (defvar diff-old-temp-file nil
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
86 "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
87 (defvar diff-new-temp-file nil
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
88 "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
89
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
90 ;; See compilation-parse-errors-function (compile.el).
907
48ca3bf4b5f8 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 894
diff changeset
91 (defun diff-parse-differences (limit-search find-at-least)
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
92 (setq compilation-error-list nil)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
93 (message "Parsing differences...")
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
94
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
95 ;; Don't reparse diffs already seen at last parse.
2541
09e58f572f19 (diff-parse-differences): Small robustification --- don't lose if we
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
96 (if compilation-parsing-end (goto-char compilation-parsing-end))
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 349
diff changeset
97
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
98 ;; Construct in REGEXP a regexp composed of all those in dired-regexp-alist.
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
99 (let ((regexp (mapconcat (lambda (elt)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
100 (concat "\\(" (car elt) "\\)"))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
101 diff-regexp-alist
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
102 "\\|"))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
103 ;; (GROUP-IDX OLD-IDX NEW-IDX)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
104 (groups (let ((subexpr 1))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
105 (mapcar (lambda (elt)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
106 (prog1
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
107 (cons subexpr
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
108 (mapcar (lambda (n)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
109 (and n
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
110 (+ subexpr n)))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
111 (cdr elt)))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
112 (setq subexpr (+ subexpr 1
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
113 (count-regexp-groupings
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
114 (car elt))))))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
115 diff-regexp-alist)))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
116
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
117 (new-error
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
118 (function (lambda (file subexpr)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
119 (setq compilation-error-list
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
120 (cons
52894
e8f59117cabb (diff-parse-differences): Don't visit the files now;
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
121 (list (save-excursion
1179
7961d1af11a7 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1134
diff changeset
122 ;; Report location of message
7961d1af11a7 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1134
diff changeset
123 ;; at beginning of line.
7961d1af11a7 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1134
diff changeset
124 (goto-char
7961d1af11a7 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1134
diff changeset
125 (match-beginning subexpr))
7961d1af11a7 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1134
diff changeset
126 (beginning-of-line)
7961d1af11a7 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1134
diff changeset
127 (point-marker))
7961d1af11a7 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1134
diff changeset
128 ;; Report location of corresponding text.
52894
e8f59117cabb (diff-parse-differences): Don't visit the files now;
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
129 (list file nil)
e8f59117cabb (diff-parse-differences): Don't visit the files now;
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
130 (string-to-int
e8f59117cabb (diff-parse-differences): Don't visit the files now;
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
131 (buffer-substring
e8f59117cabb (diff-parse-differences): Don't visit the files now;
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
132 (match-beginning subexpr)
e8f59117cabb (diff-parse-differences): Don't visit the files now;
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
133 (match-end subexpr)))
e8f59117cabb (diff-parse-differences): Don't visit the files now;
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
134 nil)
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
135 compilation-error-list)))))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
136
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
137 (found-desired nil)
1215
92554bb95d51 (diff): Don't print echo area message.
Richard M. Stallman <rms@gnu.org>
parents: 1179
diff changeset
138 (num-loci-found 0)
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
139 g)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
140
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
141 (while (and (not found-desired)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
142 ;; We don't just pass LIMIT-SEARCH to re-search-forward
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
143 ;; because we want to find matches containing LIMIT-SEARCH
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
144 ;; but which extend past it.
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
145 (re-search-forward regexp nil t))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
146
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
147 ;; Find which individual regexp matched.
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
148 (setq g groups)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
149 (while (and g (null (match-beginning (car (car g)))))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
150 (setq g (cdr g)))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
151 (setq g (car g))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
152
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
153 (if (nth 1 g) ;OLD-IDX
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
154 (funcall new-error diff-old-file (nth 1 g)))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
155 (if (nth 2 g) ;NEW-IDX
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
156 (funcall new-error diff-new-file (nth 2 g)))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
157
1215
92554bb95d51 (diff): Don't print echo area message.
Richard M. Stallman <rms@gnu.org>
parents: 1179
diff changeset
158 (setq num-loci-found (1+ num-loci-found))
1134
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
159 (if (or (and find-at-least
1215
92554bb95d51 (diff): Don't print echo area message.
Richard M. Stallman <rms@gnu.org>
parents: 1179
diff changeset
160 (>= num-loci-found find-at-least))
907
48ca3bf4b5f8 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 894
diff changeset
161 (and limit-search (>= (point) limit-search)))
1215
92554bb95d51 (diff): Don't print echo area message.
Richard M. Stallman <rms@gnu.org>
parents: 1179
diff changeset
162 ;; We have found as many new loci as the user wants,
907
48ca3bf4b5f8 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 894
diff changeset
163 ;; or the user wanted a specific diff, and we're past it.
48ca3bf4b5f8 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 894
diff changeset
164 (setq found-desired t)))
25413
c23f7efbfd57 (diff-parse-differences):
Richard M. Stallman <rms@gnu.org>
parents: 19836
diff changeset
165 (set-marker compilation-parsing-end
c23f7efbfd57 (diff-parse-differences):
Richard M. Stallman <rms@gnu.org>
parents: 19836
diff changeset
166 (if found-desired (point)
c23f7efbfd57 (diff-parse-differences):
Richard M. Stallman <rms@gnu.org>
parents: 19836
diff changeset
167 ;; Set to point-max, not point, so we don't perpetually
c23f7efbfd57 (diff-parse-differences):
Richard M. Stallman <rms@gnu.org>
parents: 19836
diff changeset
168 ;; parse the last bit of text when it isn't a diff header.
c23f7efbfd57 (diff-parse-differences):
Richard M. Stallman <rms@gnu.org>
parents: 19836
diff changeset
169 (point-max)))
1215
92554bb95d51 (diff): Don't print echo area message.
Richard M. Stallman <rms@gnu.org>
parents: 1179
diff changeset
170 (message "Parsing differences...done"))
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
171 (setq compilation-error-list (nreverse compilation-error-list)))
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172
16984
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
173 (defun diff-process-setup ()
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
174 "Set up \`compilation-exit-message-function' for \`diff'."
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
175 ;; Avoid frightening people with "abnormally terminated"
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
176 ;; if diff finds differences.
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
177 (set (make-local-variable 'compilation-exit-message-function)
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
178 (lambda (status code msg)
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
179 (cond ((not (eq status 'exit))
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
180 (cons msg code))
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
181 ((zerop code)
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
182 '("finished (no differences)\n" . "no differences"))
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
183 ((= code 1)
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
184 '("finished\n" . "differences found"))
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
185 (t
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
186 (cons msg code))))))
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
187
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 ;;;###autoload
47301
bac8aaf18835 (diff): Add optional argument no-async, and use the above argument.
Colin Walters <walters@gnu.org>
parents: 45472
diff changeset
189 (defun diff (old new &optional switches no-async)
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 "Find and display the differences between OLD and NEW files.
4759
5ca1f3073ffc (diff): Doc fix.
Brian Fox <bfox@gnu.org>
parents: 3874
diff changeset
191 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
192 and a backup file for NEW is the default for OLD.
47301
bac8aaf18835 (diff): Add optional argument no-async, and use the above argument.
Colin Walters <walters@gnu.org>
parents: 45472
diff changeset
193 With prefix arg, prompt for diff switches.
47320
a1336c8c6174 (diff): Doc fix.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 47301
diff changeset
194 If NO-ASYNC is non-nil, call diff synchronously."
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 (interactive
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
196 (nconc
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
197 (let (oldf newf)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
198 (nreverse
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
199 (list
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
200 (setq newf (buffer-file-name)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
201 newf (if (and newf (file-exists-p newf))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
202 (read-file-name
39758
875aaf118d95 (diff): Display default values in prompts as `(default ...)', not `(...)'.
Miles Bader <miles@gnu.org>
parents: 38697
diff changeset
203 (concat "Diff new file: (default "
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
204 (file-name-nondirectory newf) ") ")
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
205 nil newf t)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
206 (read-file-name "Diff new file: " nil nil t)))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
207 (setq oldf (file-newest-backup newf)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
208 oldf (if (and oldf (file-exists-p oldf))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
209 (read-file-name
39758
875aaf118d95 (diff): Display default values in prompts as `(default ...)', not `(...)'.
Miles Bader <miles@gnu.org>
parents: 38697
diff changeset
210 (concat "Diff original file: (default "
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
211 (file-name-nondirectory oldf) ") ")
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
212 (file-name-directory oldf) oldf t)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
213 (read-file-name "Diff original file: "
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
214 (file-name-directory newf) nil t))))))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
215 (if current-prefix-arg
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
216 (list (read-string "Diff switches: "
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
217 (if (stringp diff-switches)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
218 diff-switches
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
219 (mapconcat 'identity diff-switches " "))))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
220 nil)))
349
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 (setq new (expand-file-name new)
feacf757c5b2 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 old (expand-file-name old))
1134
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
223 (let ((old-alt (file-local-copy old))
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
224 (new-alt (file-local-copy new))
1110
f165d900e06e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 907
diff changeset
225 buf)
15932
e4d0cf418b2b (diff): Don't pop to *diff* buffer. Change bogus
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
226 (save-excursion
16984
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
227 (let ((compilation-process-setup-function 'diff-process-setup)
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
228 (command
1110
f165d900e06e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 907
diff changeset
229 (mapconcat 'identity
9736
093d80b4ae17 (diff-command): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8195
diff changeset
230 (append (list diff-command)
3429
5c0a40a8a55d (diff): Really do use arg SWITCHES.
Richard M. Stallman <rms@gnu.org>
parents: 2704
diff changeset
231 ;; Use explicitly specified switches
5c0a40a8a55d (diff): Really do use arg SWITCHES.
Richard M. Stallman <rms@gnu.org>
parents: 2704
diff changeset
232 (if switches
5c0a40a8a55d (diff): Really do use arg SWITCHES.
Richard M. Stallman <rms@gnu.org>
parents: 2704
diff changeset
233 (if (consp switches)
5c0a40a8a55d (diff): Really do use arg SWITCHES.
Richard M. Stallman <rms@gnu.org>
parents: 2704
diff changeset
234 switches (list switches))
5c0a40a8a55d (diff): Really do use arg SWITCHES.
Richard M. Stallman <rms@gnu.org>
parents: 2704
diff changeset
235 ;; If not specified, use default.
5c0a40a8a55d (diff): Really do use arg SWITCHES.
Richard M. Stallman <rms@gnu.org>
parents: 2704
diff changeset
236 (if (consp diff-switches)
5c0a40a8a55d (diff): Really do use arg SWITCHES.
Richard M. Stallman <rms@gnu.org>
parents: 2704
diff changeset
237 diff-switches
5c0a40a8a55d (diff): Really do use arg SWITCHES.
Richard M. Stallman <rms@gnu.org>
parents: 2704
diff changeset
238 (list diff-switches)))
1110
f165d900e06e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 907
diff changeset
239 (if (or old-alt new-alt)
f165d900e06e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 907
diff changeset
240 (list "-L" old "-L" new))
5386
a91748bee657 (diff): Call shell-quote-argument.
Richard M. Stallman <rms@gnu.org>
parents: 4759
diff changeset
241 (list
a91748bee657 (diff): Call shell-quote-argument.
Richard M. Stallman <rms@gnu.org>
parents: 4759
diff changeset
242 (shell-quote-argument (or old-alt old)))
a91748bee657 (diff): Call shell-quote-argument.
Richard M. Stallman <rms@gnu.org>
parents: 4759
diff changeset
243 (list
a91748bee657 (diff): Call shell-quote-argument.
Richard M. Stallman <rms@gnu.org>
parents: 4759
diff changeset
244 (shell-quote-argument (or new-alt new))))
1110
f165d900e06e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 907
diff changeset
245 " ")))
f165d900e06e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 907
diff changeset
246 (setq buf
f165d900e06e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 907
diff changeset
247 (compile-internal command
f165d900e06e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 907
diff changeset
248 "No more differences" "Diff"
47301
bac8aaf18835 (diff): Add optional argument no-async, and use the above argument.
Colin Walters <walters@gnu.org>
parents: 45472
diff changeset
249 'diff-parse-differences
bac8aaf18835 (diff): Add optional argument no-async, and use the above argument.
Colin Walters <walters@gnu.org>
parents: 45472
diff changeset
250 nil nil nil nil nil nil no-async))
15932
e4d0cf418b2b (diff): Don't pop to *diff* buffer. Change bogus
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
251 (set-buffer buf)
5542
004856d1b311 (diff): Select the differences buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5541
diff changeset
252 (set (make-local-variable 'diff-old-file) old)
004856d1b311 (diff): Select the differences buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5541
diff changeset
253 (set (make-local-variable 'diff-new-file) new)
004856d1b311 (diff): Select the differences buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5541
diff changeset
254 (set (make-local-variable 'diff-old-temp-file) old-alt)
004856d1b311 (diff): Select the differences buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5541
diff changeset
255 (set (make-local-variable 'diff-new-temp-file) new-alt)
004856d1b311 (diff): Select the differences buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5541
diff changeset
256 (set (make-local-variable 'compilation-finish-function)
004856d1b311 (diff): Select the differences buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5541
diff changeset
257 (function (lambda (buff msg)
004856d1b311 (diff): Select the differences buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5541
diff changeset
258 (if diff-old-temp-file
004856d1b311 (diff): Select the differences buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5541
diff changeset
259 (delete-file diff-old-temp-file))
004856d1b311 (diff): Select the differences buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5541
diff changeset
260 (if diff-new-temp-file
004856d1b311 (diff): Select the differences buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5541
diff changeset
261 (delete-file diff-new-temp-file)))))
16984
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
262 ;; When async processes aren't available, the compilation finish
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
263 ;; function doesn't get chance to run. Invoke it by hand.
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
264 (or (fboundp 'start-process)
100ef50c2c01 * (diff-process-setup): New function, sets up the
Eli Zaretskii <eliz@gnu.org>
parents: 15932
diff changeset
265 (funcall compilation-finish-function nil nil))
1134
05c961416bb5 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1112
diff changeset
266 buf))))
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 349
diff changeset
267
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
268 ;;;###autoload
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
269 (defun diff-backup (file &optional switches)
881
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
270 "Diff this file with its backup file or vice versa.
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
271 Uses the latest backup, if there are several numerical backups.
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
272 If this file is a backup, diff it with its original.
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
273 The backup file is the first file given to `diff'."
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
274 (interactive (list (read-file-name "Diff (file with backup): ")
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
275 (if current-prefix-arg
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
276 (read-string "Diff switches: "
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
277 (if (stringp diff-switches)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
278 diff-switches
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
279 (mapconcat 'identity
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
280 diff-switches " ")))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
281 nil)))
881
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
282 (let (bak ori)
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
283 (if (backup-file-name-p file)
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
284 (setq bak file
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
285 ori (file-name-sans-versions file))
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
286 (setq bak (or (diff-latest-backup-file file)
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
287 (error "No backup found for %s" file))
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
288 ori file))
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 881
diff changeset
289 (diff bak ori switches)))
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 349
diff changeset
290
881
945558e05127 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
291 (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
292 "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
293 (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
294 (if handler
6321
8c667dc4566e (diff-latest-backup-file): Call file name handler properly.
Richard M. Stallman <rms@gnu.org>
parents: 6147
diff changeset
295 (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
296 (file-newest-backup fn))))
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 349
diff changeset
297
2541
09e58f572f19 (diff-parse-differences): Small robustification --- don't lose if we
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
298 (provide 'diff)
09e58f572f19 (diff-parse-differences): Small robustification --- don't lose if we
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
299
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 47320
diff changeset
300 ;;; arch-tag: 7de2c29b-7ea5-4b85-9b9d-72dd860de2bd
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 474
diff changeset
301 ;;; diff.el ends here