annotate lisp/log-view.el @ 87432:315124ffb889

* (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put machinery in place to support editing of change comments with 'e' in a log-view buffer. Not documented yet as this only works for SCCS, RCS, and maybe CVS if you have admin privileges. When we have backend support for Subversion and more modern systems it will ve time to write this up.
author Eric S. Raymond <esr@snark.thyrsus.com>
date Thu, 27 Dec 2007 11:26:27 +0000
parents a7e1281f0f9e
children aeda902ed7fc 56a72e2bd635
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29041
49e8918cab44 Fix file description.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28861
diff changeset
1 ;;; log-view.el --- Major mode for browsing RCS/CVS/SCCS log output
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
2
68651
3bd95f4f2941 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 68370
diff changeset
3 ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
75347
e3694f1cb928 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 70292
diff changeset
4 ;; 2006, 2007 Free Software Foundation, Inc.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
5
70292
2b77fa42947f Update my email address.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68651
diff changeset
6 ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
29041
49e8918cab44 Fix file description.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28861
diff changeset
7 ;; Keywords: rcs sccs cvs log version-control
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
8
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
10
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
78236
9355f9b7bbff Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents: 78077
diff changeset
13 ;; the Free Software Foundation; either version 3, or (at your option)
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
14 ;; any later version.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
15
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
19 ;; GNU General Public License for more details.
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
20
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63203
diff changeset
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63203
diff changeset
24 ;; Boston, MA 02110-1301, USA.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
25
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
26 ;;; Commentary:
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
27
67709
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
28 ;; Major mode to browse revision log histories.
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
29 ;; Currently supports the format output by:
68098
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
30 ;; RCS, SCCS, CVS, Subversion, and DaRCS.
67709
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
31
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
32 ;; Examples of log output:
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
33
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
34 ;;;; RCS/CVS:
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
35
67709
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
36 ;; ----------------------------
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
37 ;; revision 1.35 locked by: turlutut
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
38 ;; date: 2005-03-22 18:48:38 +0000; author: monnier; state: Exp; lines: +6 -8
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
39 ;; (gnus-display-time-event-handler):
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
40 ;; Check display-time-timer at runtime rather than only at load time
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
41 ;; in case display-time-mode is turned off in the mean time.
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
42 ;; ----------------------------
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
43 ;; revision 1.34
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
44 ;; date: 2005-02-09 15:50:38 +0000; author: kfstorm; state: Exp; lines: +7 -7
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
45 ;; branches: 1.34.2;
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
46 ;; Change release version from 21.4 to 22.1 throughout.
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
47 ;; Change development version from 21.3.50 to 22.0.50.
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
48
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
49 ;;;; SCCS:
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
50
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
51 ;;;; Subversion:
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
52
87421
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
53 ;; ------------------------------------------------------------------------
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
54 ;; r4622 | ckuethe | 2007-12-23 18:18:01 -0500 (Sun, 23 Dec 2007) | 2 lines
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
55 ;;
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
56 ;; uBlox AEK-4T in binary mode. Added to unstable because it breaks gpsfake
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
57 ;;
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
58 ;; ------------------------------------------------------------------------
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
59 ;; r4621 | ckuethe | 2007-12-23 16:48:11 -0500 (Sun, 23 Dec 2007) | 3 lines
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
60 ;;
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
61 ;; Add a note about requiring usbfs to use the garmin gps18 (usb)
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
62 ;; Mention firmware testing the AC12 with firmware BQ00 and BQ04
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
63 ;;
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
64 ;; ------------------------------------------------------------------------
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
65 ;; r4620 | ckuethe | 2007-12-23 15:52:34 -0500 (Sun, 23 Dec 2007) | 1 line
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
66 ;;
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
67 ;; add link to latest hardware reference
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
68 ;; ------------------------------------------------------------------------
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
69 ;; r4619 | ckuethe | 2007-12-23 14:37:31 -0500 (Sun, 23 Dec 2007) | 1 line
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
70 ;;
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
71 ;; there is now a regression test for AC12 without raw data output
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
72
68098
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
73 ;;;; Darcs:
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
74
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
75 ;; Changes to darcsum.el:
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
76 ;;
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
77 ;; Mon Nov 28 15:19:38 GMT 2005 Dave Love <fx@gnu.org>
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
78 ;; * Abstract process startup into darcsum-start-process. Use TERM=dumb.
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
79 ;; TERM=dumb avoids escape characters, at least, for any old darcs that
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
80 ;; doesn't understand DARCS_DONT_COLOR & al.
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
81 ;;
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
82 ;; Thu Nov 24 15:20:45 GMT 2005 Dave Love <fx@gnu.org>
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
83 ;; * darcsum-mode-related changes.
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
84 ;; Don't call font-lock-mode (unnecessary) or use-local-map (redundant).
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
85 ;; Use mode-class 'special. Add :group.
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
86 ;; Add trailing-whitespace option to mode hook and fix
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
87 ;; darcsum-display-changeset not to use trailing whitespace.
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
88
87421
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
89 ;;;; Mercurial
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
90
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
91 ;; changeset: 11:8ff1a4166444
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
92 ;; tag: tip
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
93 ;; user: Eric S. Raymond <esr@thyrsus.com>
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
94 ;; date: Wed Dec 26 12:18:58 2007 -0500
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
95 ;; summary: Explain keywords. Add markup fixes.
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
96 ;;
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
97 ;; changeset: 10:20abc7ab09c3
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
98 ;; user: Eric S. Raymond <esr@thyrsus.com>
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
99 ;; date: Wed Dec 26 11:37:28 2007 -0500
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
100 ;; summary: Typo fixes.
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
101 ;;
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
102 ;; changeset: 9:ada9f4da88aa
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
103 ;; user: Eric S. Raymond <esr@thyrsus.com>
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
104 ;; date: Wed Dec 26 11:23:00 2007 -0500
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
105 ;; summary: Add RCS example session.
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
106
67709
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
107 ;;; Todo:
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
108
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
109 ;; - add ability to modify a log-entry (via cvs-mode-admin ;-)
29041
49e8918cab44 Fix file description.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28861
diff changeset
110 ;; - remove references to cvs-*
67709
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
111 ;; - make it easier to add support for new backends without changing the code.
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
112
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
113 ;;; Code:
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
114
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
115 (eval-when-compile (require 'cl))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
116 (require 'pcvs-util)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
117 (autoload 'vc-find-revision "vc")
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
118 (autoload 'vc-version-diff "vc")
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
119
65293
f3b1607acf96 (cvs-minor-wrap-function): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
120 (defvar cvs-minor-wrap-function)
f3b1607acf96 (cvs-minor-wrap-function): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
121
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
122 (defgroup log-view nil
29041
49e8918cab44 Fix file description.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28861
diff changeset
123 "Major mode for browsing log output of RCS/CVS/SCCS."
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
124 :group 'pcl-cvs
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
125 :prefix "log-view-")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
126
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
127 (easy-mmode-defmap log-view-mode-map
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
128 '(("q" . quit-window)
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
129 ("z" . kill-this-buffer)
82826
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
130 ("m" . log-view-toggle-mark-entry)
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
131 ("e" . log-view-modify-change-comment)
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
132 ("d" . log-view-diff)
78867
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
133 ("a" . log-view-annotate-version)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
134 ("f" . log-view-find-revision)
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
135 ("n" . log-view-msg-next)
28251
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
136 ("p" . log-view-msg-prev)
78882
ccd0441c69e1 * pcvs-defs.el (cvs-mode-map): Bind TAB and backtab.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78867
diff changeset
137 ("\t" . log-view-msg-next)
ccd0441c69e1 * pcvs-defs.el (cvs-mode-map): Bind TAB and backtab.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78867
diff changeset
138 ([backtab] . log-view-msg-prev)
28251
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
139 ("N" . log-view-file-next)
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
140 ("P" . log-view-file-prev)
40450
d29fac587062 (log-view-mode-map): Bind `M-n' and `M-p', not `M n'
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 34652
diff changeset
141 ("\M-n" . log-view-file-next)
d29fac587062 (log-view-mode-map): Bind `M-n' and `M-p', not `M n'
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 34652
diff changeset
142 ("\M-p" . log-view-file-prev))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
143 "Log-View's keymap."
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
144 :group 'log-view
29041
49e8918cab44 Fix file description.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28861
diff changeset
145 ;; Here I really need either buffer-local keymap-inheritance
49e8918cab44 Fix file description.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28861
diff changeset
146 ;; or a minor-mode-map with lower precedence than the local map.
49e8918cab44 Fix file description.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28861
diff changeset
147 :inherit (if (boundp 'cvs-mode-map) cvs-mode-map))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
148
78077
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
149 (easy-menu-define log-view-mode-menu log-view-mode-map
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
150 "Log-View Display Menu"
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
151 `("Log-View"
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
152 ;; XXX Do we need menu entries for these?
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
153 ;; ["Quit" quit-window]
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
154 ;; ["Kill This Buffer" kill-this-buffer]
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
155 ["Mark Log Entry for Diff" set-mark-command]
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
156 ["Diff Revisions" log-view-diff]
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
157 ["Visit Version" log-view-find-revision]
78867
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
158 ["Annotate Version" log-view-annotate-version]
78077
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
159 ["Next Log Entry" log-view-msg-next]
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
160 ["Previous Log Entry" log-view-msg-prev]
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
161 ["Next File" log-view-file-next]
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
162 ["Previous File" log-view-file-prev]))
442f874e0b22 (log-view-mode-menu): New menu.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
163
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
164 (defvar log-view-mode-hook nil
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
165 "Hook run at the end of `log-view-mode'.")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
166
63203
ecbe83adff58 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-374
Miles Bader <miles@gnu.org>
parents: 60145
diff changeset
167 (defface log-view-file
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
168 '((((class color) (background light))
42456
8a4077ab418c (various face definitions): Use :weight, not :bold.
Richard M. Stallman <rms@gnu.org>
parents: 42074
diff changeset
169 (:background "grey70" :weight bold))
8a4077ab418c (various face definitions): Use :weight, not :bold.
Richard M. Stallman <rms@gnu.org>
parents: 42074
diff changeset
170 (t (:weight bold)))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
171 "Face for the file header line in `log-view-mode'."
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
172 :group 'log-view)
63203
ecbe83adff58 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-374
Miles Bader <miles@gnu.org>
parents: 60145
diff changeset
173 ;; backward-compatibility alias
ecbe83adff58 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-374
Miles Bader <miles@gnu.org>
parents: 60145
diff changeset
174 (put 'log-view-file-face 'face-alias 'log-view-file)
ecbe83adff58 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-374
Miles Bader <miles@gnu.org>
parents: 60145
diff changeset
175 (defvar log-view-file-face 'log-view-file)
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
176
63203
ecbe83adff58 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-374
Miles Bader <miles@gnu.org>
parents: 60145
diff changeset
177 (defface log-view-message
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
178 '((((class color) (background light))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
179 (:background "grey85"))
42456
8a4077ab418c (various face definitions): Use :weight, not :bold.
Richard M. Stallman <rms@gnu.org>
parents: 42074
diff changeset
180 (t (:weight bold)))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
181 "Face for the message header line in `log-view-mode'."
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
182 :group 'log-view)
63203
ecbe83adff58 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-374
Miles Bader <miles@gnu.org>
parents: 60145
diff changeset
183 ;; backward-compatibility alias
ecbe83adff58 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-374
Miles Bader <miles@gnu.org>
parents: 60145
diff changeset
184 (put 'log-view-message-face 'face-alias 'log-view-message)
ecbe83adff58 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-374
Miles Bader <miles@gnu.org>
parents: 60145
diff changeset
185 (defvar log-view-message-face 'log-view-message)
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
186
81511
9785d18889ed (log-view-font-lock-keywords): Use `eval' to consult the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81330
diff changeset
187 (defvar log-view-file-re
81330
f7754bd2e73f (log-view-file-re, log-view-message-re): Use \(?1:...\).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
188 (concat "^\\(?:Working file: \\(?1:.+\\)" ;RCS and CVS.
f7754bd2e73f (log-view-file-re, log-view-message-re): Use \(?1:...\).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
189 ;; Subversion has no such thing??
f7754bd2e73f (log-view-file-re, log-view-message-re): Use \(?1:...\).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
190 "\\|\\(?:SCCS/s\\.\\|Changes to \\)\\(?1:.+\\):" ;SCCS and Darcs.
81567
0b055b6ebf6c Add docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81511
diff changeset
191 "\\)\n") ;Include the \n for font-lock reasons.
0b055b6ebf6c Add docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81511
diff changeset
192 "Regexp matching the text identifying the file.
0b055b6ebf6c Add docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81511
diff changeset
193 The match group number 1 should match the file name itself.")
67709
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
194
81511
9785d18889ed (log-view-font-lock-keywords): Use `eval' to consult the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81330
diff changeset
195 (defvar log-view-message-re
81330
f7754bd2e73f (log-view-file-re, log-view-message-re): Use \(?1:...\).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
196 (concat "^\\(?:revision \\(?1:[.0-9]+\\)\\(?:\t.*\\)?" ; RCS and CVS.
f7754bd2e73f (log-view-file-re, log-view-message-re): Use \(?1:...\).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
197 "\\|r\\(?1:[0-9]+\\) | .* | .*" ; Subversion.
f7754bd2e73f (log-view-file-re, log-view-message-re): Use \(?1:...\).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
198 "\\|D \\(?1:[.0-9]+\\) .*" ; SCCS.
68098
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
199 ;; Darcs doesn't have revision names. VC-darcs uses patch names
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
200 ;; instead. Darcs patch names are hashcodes, which do not appear
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
201 ;; in the log output :-(, but darcs accepts any prefix of the log
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
202 ;; message as a patch name, so we match the first line of the log
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
203 ;; message.
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
204 ;; First loosely match the date format.
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
205 (concat "\\|[^ \n].*[^0-9\n][0-9][0-9]:[0-9][0-9][^0-9\n].*[^ \n]"
150225f41e97 (log-view-file-re, log-view-message-re): Add support for DaRCS output.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67775
diff changeset
206 ;;Email of user and finally Msg, used as revision name.
81330
f7754bd2e73f (log-view-file-re, log-view-message-re): Use \(?1:...\).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
207 " .*@.*\n\\(?: \\* \\(?1:.*\\)\\)?")
78525
33690fc4e175 (log-view-font-lock-keywords): Use `eval' so as to adapt to buffer settings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
208 "\\)$")
81567
0b055b6ebf6c Add docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81511
diff changeset
209 "Regexp matching the text identifying a revision.
0b055b6ebf6c Add docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81511
diff changeset
210 The match group number 1 should match the revision number itself.")
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
211
78525
33690fc4e175 (log-view-font-lock-keywords): Use `eval' so as to adapt to buffer settings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
212 (defvar log-view-font-lock-keywords
33690fc4e175 (log-view-font-lock-keywords): Use `eval' so as to adapt to buffer settings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
213 ;; We use `eval' so as to use the buffer-local value of log-view-file-re
33690fc4e175 (log-view-font-lock-keywords): Use `eval' so as to adapt to buffer settings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
214 ;; and log-view-message-re, if applicable.
33690fc4e175 (log-view-font-lock-keywords): Use `eval' so as to adapt to buffer settings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
215 '((eval . `(,log-view-file-re
81511
9785d18889ed (log-view-font-lock-keywords): Use `eval' to consult the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81330
diff changeset
216 (1 (if (boundp 'cvs-filename-face) cvs-filename-face))
78525
33690fc4e175 (log-view-font-lock-keywords): Use `eval' so as to adapt to buffer settings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
217 (0 log-view-file-face append)))
33690fc4e175 (log-view-font-lock-keywords): Use `eval' so as to adapt to buffer settings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
218 (eval . `(,log-view-message-re . log-view-message-face))))
33690fc4e175 (log-view-font-lock-keywords): Use `eval' so as to adapt to buffer settings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78236
diff changeset
219
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
220 (defconst log-view-font-lock-defaults
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
221 '(log-view-font-lock-keywords t nil nil nil))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
222
40954
5eb998b7a74c updated (C)
Sam Steingold <sds@gnu.org>
parents: 40450
diff changeset
223 ;;;;
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
224 ;;;; Actual code
40954
5eb998b7a74c updated (C)
Sam Steingold <sds@gnu.org>
parents: 40450
diff changeset
225 ;;;;
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
226
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
227 ;;;###autoload
28251
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
228 (define-derived-mode log-view-mode fundamental-mode "Log-View"
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
229 "Major mode for browsing CVS log output."
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
230 (setq buffer-read-only t)
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
231 (set (make-local-variable 'font-lock-defaults) log-view-font-lock-defaults)
78867
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
232 (set (make-local-variable 'beginning-of-defun-function)
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
233 'log-view-beginning-of-defun)
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
234 (set (make-local-variable 'end-of-defun-function)
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
235 'log-view-end-of-defun)
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
236 (set (make-local-variable 'cvs-minor-wrap-function) 'log-view-minor-wrap))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
237
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
238 ;;;;
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
239 ;;;; Navigation
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
240 ;;;;
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
241
28251
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
242 ;; define log-view-{msg,file}-{next,prev}
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
243 (easy-mmode-define-navigation log-view-msg log-view-message-re "log message")
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
244 (easy-mmode-define-navigation log-view-file log-view-file-re "file")
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
245
28861
bab7620d1466 (log-view-goto-rev): New function for the new VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28251
diff changeset
246 (defun log-view-goto-rev (rev)
bab7620d1466 (log-view-goto-rev): New function for the new VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28251
diff changeset
247 (goto-char (point-min))
bab7620d1466 (log-view-goto-rev): New function for the new VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28251
diff changeset
248 (ignore-errors
bab7620d1466 (log-view-goto-rev): New function for the new VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28251
diff changeset
249 (while (not (equal rev (log-view-current-tag)))
bab7620d1466 (log-view-goto-rev): New function for the new VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28251
diff changeset
250 (log-view-msg-next))
bab7620d1466 (log-view-goto-rev): New function for the new VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28251
diff changeset
251 t))
bab7620d1466 (log-view-goto-rev): New function for the new VC.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28251
diff changeset
252
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
253 ;;;;
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
254 ;;;; Linkage to PCL-CVS (mostly copied from cvs-status.el)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
255 ;;;;
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
256
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
257 (defconst log-view-dir-re "^cvs[.ex]* [a-z]+: Logging \\(.+\\)$")
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
258
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
259 (defun log-view-current-file ()
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
260 (save-excursion
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
261 (forward-line 1)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
262 (or (re-search-backward log-view-file-re nil t)
83843
bdd75f65c6cd (log-view-current-file): Give a more explicit error if
Glenn Morris <rgm@gnu.org>
parents: 82852
diff changeset
263 (re-search-forward log-view-file-re nil t)
83845
0f772ae43706 (log-view-current-file): Balance parens.
Romain Francoise <romain@orebokech.com>
parents: 83843
diff changeset
264 (error "Unable to determine the current file"))
81330
f7754bd2e73f (log-view-file-re, log-view-message-re): Use \(?1:...\).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
265 (let* ((file (match-string 1))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
266 (cvsdir (and (re-search-backward log-view-dir-re nil t)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
267 (match-string 1)))
29041
49e8918cab44 Fix file description.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28861
diff changeset
268 (pcldir (and (boundp 'cvs-pcl-cvs-dirchange-re)
49e8918cab44 Fix file description.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28861
diff changeset
269 (re-search-backward cvs-pcl-cvs-dirchange-re nil t)
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
270 (match-string 1)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
271 (dir ""))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
272 (let ((default-directory ""))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
273 (when pcldir (setq dir (expand-file-name pcldir dir)))
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
274 (when cvsdir (setq dir (expand-file-name cvsdir dir))))
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
275 (expand-file-name file dir))))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
276
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
277 (defun log-view-current-tag (&optional where)
28251
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
278 (save-excursion
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
279 (when where (goto-char where))
28251
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
280 (forward-line 1)
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
281 (let ((pt (point)))
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
282 (when (re-search-backward log-view-message-re nil t)
82844
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
283 (let ((rev (match-string-no-properties 1)))
28251
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
284 (unless (re-search-forward log-view-file-re pt t)
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
285 rev))))))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
286
82826
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
287 (defun log-view-toggle-mark-entry ()
82852
26de218dc2d9 (log-view-toggle-mark-entry): Add docstring.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82844
diff changeset
288 "Toggle the marked state for the log entry at point.
26de218dc2d9 (log-view-toggle-mark-entry): Add docstring.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82844
diff changeset
289 Individual log entries can be marked and unmarked. The marked
26de218dc2d9 (log-view-toggle-mark-entry): Add docstring.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82844
diff changeset
290 entries are denoted by changing their background color.
26de218dc2d9 (log-view-toggle-mark-entry): Add docstring.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82844
diff changeset
291 `log-view-get-marked' returns the list of tags for the marked
26de218dc2d9 (log-view-toggle-mark-entry): Add docstring.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82844
diff changeset
292 log entries."
82826
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
293 (interactive)
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
294 (save-excursion
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
295 (forward-line 1)
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
296 (let ((pt (point)))
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
297 (when (re-search-backward log-view-message-re nil t)
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
298 (let ((beg (match-beginning 0))
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
299 end ov ovlist found tag)
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
300 (unless (re-search-forward log-view-file-re pt t)
82844
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
301 ;; Look to see if the current entry is marked.
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
302 (setq found (get-char-property (point) 'log-view-self))
82826
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
303 (if found
82844
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
304 (delete-overlay found)
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
305 ;; Create an overlay that covers this entry and change
87421
a7e1281f0f9e Add log format samples for Subversion and Mercurial.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85474
diff changeset
306 ;; its color.
82826
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
307 (setq tag (log-view-current-tag (point)))
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
308 (forward-line 1)
82844
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
309 (setq end
82826
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
310 (if (re-search-forward log-view-message-re nil t)
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
311 (match-beginning 0)
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
312 (point-max)))
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
313 (setq ov (make-overlay beg end))
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
314 (overlay-put ov 'face 'log-view-file)
82844
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
315 ;; This is used to check if the overlay is present.
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
316 (overlay-put ov 'log-view-self ov)
82826
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
317 (overlay-put ov 'log-view-marked tag))))))))
0d52789c865e (log-view-toggle-mark-entry): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82365
diff changeset
318
82844
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
319 (defun log-view-get-marked ()
82852
26de218dc2d9 (log-view-toggle-mark-entry): Add docstring.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82844
diff changeset
320 "Return the list of tags for the marked log entries."
82844
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
321 (save-excursion
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
322 (let ((pos (point-min))
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
323 marked-list ov)
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
324 (while (setq pos (next-single-property-change pos 'face))
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
325 (when (setq ov (get-char-property pos 'log-view-self))
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
326 (push (overlay-get ov 'log-view-marked) marked-list)
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
327 (setq pos (overlay-end ov))))
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
328 marked-list)))
a25b7156354b (log-view-marked-list): Delete variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82826
diff changeset
329
78867
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
330 (defun log-view-beginning-of-defun ()
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
331 ;; This assumes that a log entry starts with a line matching
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
332 ;; `log-view-message-re'. Modes that derive from `log-view-mode'
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
333 ;; for which this assumption is not valid will have to provide
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
334 ;; another implementation of this function. `log-view-msg-prev'
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
335 ;; does a similar job to this function, we can't use it here
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
336 ;; directly because it prints messages that are not appropriate in
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
337 ;; this context and it does not move to the beginning of the buffer
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
338 ;; when the point is before the first log entry.
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
339
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
340 ;; `log-view-beginning-of-defun' and `log-view-end-of-defun' have
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
341 ;; been checked to work with logs produced by RCS, CVS, git,
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
342 ;; mercurial and subversion.
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
343
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
344 (re-search-backward log-view-message-re nil 'move))
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
345
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
346 (defun log-view-end-of-defun ()
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
347 ;; The idea in this function is to search for the beginning of the
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
348 ;; next log entry using `log-view-message-re' and then go back one
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
349 ;; line when finding it. Modes that derive from `log-view-mode' for
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
350 ;; which this assumption is not valid will have to provide another
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
351 ;; implementation of this function.
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
352
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
353 ;; Look back and if there is no entry there it means we are before
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
354 ;; the first log entry, so go forward until finding one.
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
355 (unless (save-excursion (re-search-backward log-view-message-re nil t))
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
356 (re-search-forward log-view-message-re nil t))
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
357
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
358 ;; In case we are at the end of log entry going forward a line will
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
359 ;; make us find the next entry when searching. If we are inside of
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
360 ;; an entry going forward a line will still keep the point inside
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
361 ;; the same entry.
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
362 (forward-line 1)
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
363
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
364 ;; In case we are at the beginning of an entry, move past it.
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
365 (when (looking-at log-view-message-re)
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
366 (goto-char (match-end 0))
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
367 (forward-line 1))
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
368
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
369 ;; Search for the start of the next log entry. Go to the end of the
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
370 ;; buffer if we could not find a next entry.
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
371 (when (re-search-forward log-view-message-re nil 'move)
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
372 (goto-char (match-beginning 0))
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
373 (forward-line -1)))
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
374
67709
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
375 (defvar cvs-minor-current-files)
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
376 (defvar cvs-branch-prefix)
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
377 (defvar cvs-secondary-branch-prefix)
6f549652480e (log-view-file-re, log-view-message-re): Use shy groups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67569
diff changeset
378
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
379 (defun log-view-minor-wrap (buf f)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
380 (let ((data (with-current-buffer buf
68370
89e7eb7d165b (log-view-minor-wrap): First rev is the one at point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68221
diff changeset
381 (let* ((beg (point))
89e7eb7d165b (log-view-minor-wrap): First rev is the one at point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68221
diff changeset
382 (end (if mark-active (mark) (point)))
68221
4804f7b39bfe (log-view-minor-wrap): Use the same logic to get revisions as `log-view-diff'.
Juri Linkov <juri@jurta.org>
parents: 68098
diff changeset
383 (fr (log-view-current-tag beg))
4804f7b39bfe (log-view-minor-wrap): Use the same logic to get revisions as `log-view-diff'.
Juri Linkov <juri@jurta.org>
parents: 68098
diff changeset
384 (to (log-view-current-tag end)))
4804f7b39bfe (log-view-minor-wrap): Use the same logic to get revisions as `log-view-diff'.
Juri Linkov <juri@jurta.org>
parents: 68098
diff changeset
385 (when (string-equal fr to)
4804f7b39bfe (log-view-minor-wrap): Use the same logic to get revisions as `log-view-diff'.
Juri Linkov <juri@jurta.org>
parents: 68098
diff changeset
386 (save-excursion
4804f7b39bfe (log-view-minor-wrap): Use the same logic to get revisions as `log-view-diff'.
Juri Linkov <juri@jurta.org>
parents: 68098
diff changeset
387 (goto-char end)
4804f7b39bfe (log-view-minor-wrap): Use the same logic to get revisions as `log-view-diff'.
Juri Linkov <juri@jurta.org>
parents: 68098
diff changeset
388 (log-view-msg-next)
4804f7b39bfe (log-view-minor-wrap): Use the same logic to get revisions as `log-view-diff'.
Juri Linkov <juri@jurta.org>
parents: 68098
diff changeset
389 (setq to (log-view-current-tag))))
4804f7b39bfe (log-view-minor-wrap): Use the same logic to get revisions as `log-view-diff'.
Juri Linkov <juri@jurta.org>
parents: 68098
diff changeset
390 (cons
68370
89e7eb7d165b (log-view-minor-wrap): First rev is the one at point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68221
diff changeset
391 ;; The first revision has to be the one at point, for
89e7eb7d165b (log-view-minor-wrap): First rev is the one at point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68221
diff changeset
392 ;; operations that only take one revision
89e7eb7d165b (log-view-minor-wrap): First rev is the one at point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68221
diff changeset
393 ;; (e.g. cvs-mode-edit).
89e7eb7d165b (log-view-minor-wrap): First rev is the one at point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68221
diff changeset
394 (cons (log-view-current-file) fr)
89e7eb7d165b (log-view-minor-wrap): First rev is the one at point.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68221
diff changeset
395 (cons (log-view-current-file) to))))))
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
396 (let ((cvs-branch-prefix (cdar data))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
397 (cvs-secondary-branch-prefix (and (cdar data) (cddr data)))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
398 (cvs-minor-current-files
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
399 (cons (caar data)
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
400 (when (and (cadr data) (not (equal (caar data) (cadr data))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
401 (list (cadr data)))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
402 ;; FIXME: I need to force because the fileinfos are UNKNOWN
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
403 (cvs-force-command "/F"))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
404 (funcall f))))
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
405
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
406 (defun log-view-find-revision (pos)
41557
be985e4c1430 (log-view-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41137
diff changeset
407 "Visit the version at point."
be985e4c1430 (log-view-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41137
diff changeset
408 (interactive "d")
be985e4c1430 (log-view-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41137
diff changeset
409 (save-excursion
be985e4c1430 (log-view-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41137
diff changeset
410 (goto-char pos)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
411 (switch-to-buffer (vc-find-revision (log-view-current-file)
41557
be985e4c1430 (log-view-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41137
diff changeset
412 (log-view-current-tag)))))
be985e4c1430 (log-view-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41137
diff changeset
413
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
414
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
415 (defun log-view-extract-comment ()
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
416 "Parse comment from around the current point in the log."
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
417 (save-excursion
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
418 (let (st en (backend (vc-backend (log-view-current-file))))
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
419 (log-view-end-of-defun)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
420 (cond ((eq backend 'SVN)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
421 (forward-line -1)))
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
422 (setq en (point))
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
423 (log-view-beginning-of-defun)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
424 (cond ((memq backend '(SCCS RCS CVS MCVS SVN))
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
425 (forward-line 2))
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
426 ((eq backend 'Hg)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
427 (forward-line 4)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
428 (re-search-forward "summary: *" nil t)))
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
429 (setq st (point))
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
430 (buffer-substring st en))))
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
431
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
432 (defun log-view-modify-change-comment ()
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
433 "Edit the change comment displayed at point."
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
434 (interactive)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
435 (vc-modify-change-comment (list (log-view-current-file))
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
436 (log-view-current-tag)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
437 (log-view-extract-comment)))
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87421
diff changeset
438
78867
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
439 (defun log-view-annotate-version (pos)
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
440 "Annotate the version at point."
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
441 (interactive "d")
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
442 (save-excursion
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
443 (goto-char pos)
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
444 (switch-to-buffer (vc-annotate (log-view-current-file)
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
445 (log-view-current-tag)))))
82b0e30f9888 * files.el (file-name-sans-versions): Allow - and a-z in version
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78525
diff changeset
446
42074
fdee0c7c3bf1 (log-view-message-re, log-view-current-tag):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41557
diff changeset
447 ;;
fdee0c7c3bf1 (log-view-message-re, log-view-current-tag):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41557
diff changeset
448 ;; diff
fdee0c7c3bf1 (log-view-message-re, log-view-current-tag):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41557
diff changeset
449 ;;
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
450
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
451 (defun log-view-diff (beg end)
67569
4c4e2a7d9c45 (log-view-diff): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 67249
diff changeset
452 "Get the diff between two revisions.
4c4e2a7d9c45 (log-view-diff): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 67249
diff changeset
453 If the mark is not active or the mark is on the revision at point,
4c4e2a7d9c45 (log-view-diff): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 67249
diff changeset
454 get the diff between the revision at point and its previous revision.
4c4e2a7d9c45 (log-view-diff): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 67249
diff changeset
455 Otherwise, get the diff between the revisions where the region starts
4c4e2a7d9c45 (log-view-diff): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 67249
diff changeset
456 and ends."
55175
e7a5be902830 (log-view-diff): Replace interactive code "r"
Juri Linkov <juri@jurta.org>
parents: 52401
diff changeset
457 (interactive
e7a5be902830 (log-view-diff): Replace interactive code "r"
Juri Linkov <juri@jurta.org>
parents: 52401
diff changeset
458 (list (if mark-active (region-beginning) (point))
e7a5be902830 (log-view-diff): Replace interactive code "r"
Juri Linkov <juri@jurta.org>
parents: 52401
diff changeset
459 (if mark-active (region-end) (point))))
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
460 (let ((fr (log-view-current-tag beg))
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
461 (to (log-view-current-tag end)))
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
462 (when (string-equal fr to)
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
463 (save-excursion
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
464 (goto-char end)
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
465 (log-view-msg-next)
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
466 (setq to (log-view-current-tag))))
85474
30ad99e6b535 Adapt log-view-diff for new VC API.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
467 (vc-version-diff (list (log-view-current-file)) to fr)))
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40954
diff changeset
468
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
469 (provide 'log-view)
28251
21d27711125f (log-view-(msg|file)-(prev|next)): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28088
diff changeset
470
60145
e7ec1f80fc80 (log-view-message-re): Fix up Subversion regexp.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55175
diff changeset
471 ;; arch-tag: 0d64220b-ce7e-4f62-9c2a-6b04c2f81f4f
28088
b442dfc3cef0 *** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff changeset
472 ;;; log-view.el ends here