Mercurial > emacs
annotate admin/revdiff @ 55434:f88632e54afb
2004-05-08 John Wiegley <johnw@newartisans.com>
* iswitchb.el (iswitchb-use-virtual-buffers): Added support for
"virtual buffers" (off by default), which makes it possible to
switch to the buffers of recently files. When a buffer name
search fails, and this option is on, iswitchb will look at the
list of recently visited files, and permit matching against those
names. When the user hits RET on a match, it will revisit that
file.
(iswitchb-read-buffer): Added two optional arguments, which makes
isearchb.el possible.
(iswitchb-completions, iswitchb-set-matches, iswitchb-prev-match,
iswitchb-next-match): Added support for virtual buffers.
author | John Wiegley <johnw@newartisans.com> |
---|---|
date | Sat, 08 May 2004 13:00:52 +0000 |
parents | 695cf19ef79e |
children | c53a9463c31a 375f2633d815 |
rev | line source |
---|---|
38850 | 1 #! /usr/bin/perl |
2 | |
3 # Copyright (C) 2001 Free Software Foundation, Inc. | |
4 # | |
5 # This file is part of GNU Emacs. | |
6 # | |
7 # GNU Emacs is free software; you can redistribute it and/or modify | |
8 # it under the terms of the GNU General Public License as published by | |
9 # the Free Software Foundation; either version 2, or (at your option) | |
10 # any later version. | |
11 # | |
12 # GNU Emacs is distributed in the hope that it will be useful, | |
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 # GNU General Public License for more details. | |
16 # | |
17 # You should have received a copy of the GNU General Public License | |
18 # along with GNU Emacs; see the file COPYING. If not, write to the | |
19 # Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
20 # Boston, MA 02111-1307, USA. | |
21 | |
22 use File::Basename; | |
23 | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
24 if (@ARGV < 3) |
38850 | 25 { |
26 print <<USAGE; | |
27 revdiff FILE OLD NEW | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
28 |
38850 | 29 Get a diff of FILE between revisions OLD and NEW. Store the |
39132 | 30 diff in a file named FILE-OLD-NEW.diff. |
31 | |
32 If OLD is `-' use FILE's current revision for OLD. If OLD is | |
33 `-<number>', use the Nth revision before the current one for OLD. | |
34 | |
35 If NEW is +<number> or -<number>, build diffs between revisions OLD | |
36 and OLD +/- <number>. | |
38850 | 37 |
38 Examples: | |
39 | |
40 revdiff FILE - -1 get the latest change of FILE | |
39132 | 41 revdiff FILE -1 +1 also gets the latest change of FILE |
38850 | 42 revdiff FILE 1.500 +2 get diffs 1.500-1.501 and 1.501-1.502. |
43 | |
44 USAGE | |
45 exit 1; | |
46 } | |
47 | |
48 $file = shift @ARGV; | |
49 $old = shift @ARGV; | |
50 | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
51 sub diffit |
38850 | 52 { |
53 my ($old, $new) = @_; | |
54 print "cvs diff -r$old -r$new $file >$file-$old-$new.diff\n"; | |
55 system "cvs diff -r$old -r$new $file >$file-$old-$new.diff"; | |
56 } | |
57 | |
58 sub current_revision ($) | |
59 { | |
60 my ($file) = @_; | |
61 my $dir = dirname ($file); | |
62 my $base = basename ($file); | |
63 my $entries = "$dir/CVS/Entries"; | |
64 die "Can't find $entries" unless -f $entries; | |
65 open (IN, "<$entries") or die "Cannot open $entries"; | |
66 my $rev; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
67 while ($line = <IN>) |
38850 | 68 { |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
69 if ($line =~ m,/$base/([^/]+),) |
38850 | 70 { |
71 $rev = $1; | |
72 break; | |
73 } | |
74 } | |
75 die "Cannot determine current revision of $file" unless $rev; | |
76 close (IN); | |
77 return $rev; | |
78 } | |
79 | |
80 if ($old eq "-") | |
39132 | 81 { |
82 $old = current_revision ($file); | |
83 } | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
84 elsif ($old =~ /^-(\d+)$/) |
39132 | 85 { |
86 my $offset = $1; | |
87 $old = current_revision ($file); | |
88 die "Internal error" unless $old =~ /(.*)\.(\d+)$/; | |
89 my $minor = $2 - $offset; | |
90 $old = sprintf ("%d.%d", $1, $minor); | |
91 } | |
38850 | 92 |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
93 while (@ARGV) |
38850 | 94 { |
95 my $new = shift @ARGV; | |
96 if ($new =~ /^[+]\d+$/) | |
97 { | |
98 my $n = $new; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
99 for ($i = 0; $i < $n; ++$i) |
38850 | 100 { |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
101 unless ($old =~ /(.*)\.(\d+)$/) |
38850 | 102 { |
103 die "Internal error"; | |
104 } | |
105 my $j = $2 + 1; | |
106 $new = "$1.$j"; | |
107 diffit ($old, $new); | |
108 $old = $new; | |
109 } | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
110 } |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
111 elsif ($new =~ /^[-]\d+$/) |
38850 | 112 { |
113 my $n = - $new; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
114 for ($i = 0; $i < $n; ++$i) |
38850 | 115 { |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
116 unless ($old =~ /(.*)\.(\d+)$/) |
38850 | 117 { |
118 die "Internal error"; | |
119 } | |
120 my $j = $2 - 1; | |
121 $new = "$1.$j"; | |
122 diffit ($new, $old); | |
123 $old = $new; | |
124 } | |
125 } | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
39132
diff
changeset
|
126 else |
38850 | 127 { |
128 diffit ($old, $new); | |
129 $old = $new; | |
130 } | |
131 } | |
132 | |
133 # Local Variables: | |
134 # mode: cperl | |
135 # End: | |
52401 | 136 |
137 # arch-tag: 2798b20d-c7f2-4c78-8378-7bb529c36a09 |