Mercurial > emacs
annotate lisp/log-edit.el @ 106117:0fba14676688
* lread.c (Funintern): Error if symbol is t or nil.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 19 Nov 2009 16:13:22 +0000 |
parents | bd2966850aac |
children | 1d1d5d9bd884 |
rev | line source |
---|---|
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1 ;;; log-edit.el --- Major mode for editing CVS commit messages |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
2 |
74442 | 3 ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, |
100908 | 4 ;; 2005, 2006, 2007, 2008, 2009 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> |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
7 ;; Keywords: pcl-cvs cvs commit log |
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 |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94161
diff
changeset
|
11 ;; GNU Emacs is free software: you can redistribute it and/or modify |
28088
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 |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94161
diff
changeset
|
13 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94161
diff
changeset
|
14 ;; (at your option) any later version. |
28088
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 |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94161
diff
changeset
|
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
23 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
24 ;;; Commentary: |
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 ;; Todo: |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
27 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
28 ;; - Move in VC's code |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
29 ;; - Add compatibility for VC's hook variables |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
30 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
31 ;;; Code: |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
32 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
33 (eval-when-compile (require 'cl)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
34 (require 'add-log) ; for all the ChangeLog goodies |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
35 (require 'pcvs-util) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
36 (require 'ring) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
37 |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40478
diff
changeset
|
38 ;;;; |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
39 ;;;; Global Variables |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40478
diff
changeset
|
40 ;;;; |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
41 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
42 (defgroup log-edit nil |
32816
f4923452ea45
(log-edit): Add :version and a :group for vc.
Dave Love <fx@gnu.org>
parents:
29398
diff
changeset
|
43 "Major mode for editing RCS and CVS commit messages." |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
44 :group 'pcl-cvs |
32816
f4923452ea45
(log-edit): Add :version and a :group for vc.
Dave Love <fx@gnu.org>
parents:
29398
diff
changeset
|
45 :group 'vc ; It's used by VC. |
f4923452ea45
(log-edit): Add :version and a :group for vc.
Dave Love <fx@gnu.org>
parents:
29398
diff
changeset
|
46 :version "21.1" |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
47 :prefix "log-edit-") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
48 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
49 ;; compiler pacifiers |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
50 (defvar cvs-buffer) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
51 |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
52 |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
53 ;; The main keymap |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
54 |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
55 (easy-mmode-defmap log-edit-mode-map |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
56 `(("\C-c\C-c" . log-edit-done) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
57 ("\C-c\C-a" . log-edit-insert-changelog) |
86908
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
58 ("\C-c\C-d" . log-edit-show-diff) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
59 ("\C-c\C-f" . log-edit-show-files) |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
60 ("\M-n" . log-edit-next-comment) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
61 ("\M-p" . log-edit-previous-comment) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
62 ("\M-r" . log-edit-comment-search-backward) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
63 ("\M-s" . log-edit-comment-search-forward) |
51065
35933dc8e248
Don't require vc.el anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51063
diff
changeset
|
64 ("\C-c?" . log-edit-mode-help)) |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
65 "Keymap for the `log-edit-mode' (to edit version control log messages)." |
51065
35933dc8e248
Don't require vc.el anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51063
diff
changeset
|
66 :group 'log-edit) |
35933dc8e248
Don't require vc.el anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51063
diff
changeset
|
67 |
35933dc8e248
Don't require vc.el anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51063
diff
changeset
|
68 ;; Compatibility with old names. Should we bother ? |
35933dc8e248
Don't require vc.el anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51063
diff
changeset
|
69 (defvar vc-log-mode-map log-edit-mode-map) |
35933dc8e248
Don't require vc.el anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51063
diff
changeset
|
70 (defvar vc-log-entry-mode vc-log-mode-map) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
71 |
33180
8700cd9cdd26
(log-edit-menu): New menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33061
diff
changeset
|
72 (easy-menu-define log-edit-menu log-edit-mode-map |
8700cd9cdd26
(log-edit-menu): New menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33061
diff
changeset
|
73 "Menu used for `log-edit-mode'." |
8700cd9cdd26
(log-edit-menu): New menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33061
diff
changeset
|
74 '("Log-Edit" |
8700cd9cdd26
(log-edit-menu): New menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33061
diff
changeset
|
75 ["Done" log-edit-done |
8700cd9cdd26
(log-edit-menu): New menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33061
diff
changeset
|
76 :help "Exit log-edit and proceed with the actual action."] |
8700cd9cdd26
(log-edit-menu): New menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33061
diff
changeset
|
77 "--" |
93893
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
78 ["Insert ChangeLog" log-edit-insert-changelog |
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
79 :help "Insert a log message by looking at the ChangeLog"] |
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
80 ["Add to ChangeLog" log-edit-add-to-changelog |
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
81 :help "Insert this log message into the appropriate ChangeLog file"] |
33180
8700cd9cdd26
(log-edit-menu): New menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33061
diff
changeset
|
82 "--" |
86908
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
83 ["Show diff" log-edit-show-diff |
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
84 :help "Show the diff for the files to be committed."] |
33180
8700cd9cdd26
(log-edit-menu): New menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33061
diff
changeset
|
85 ["List files" log-edit-show-files |
8700cd9cdd26
(log-edit-menu): New menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33061
diff
changeset
|
86 :help "Show the list of relevant files."] |
8700cd9cdd26
(log-edit-menu): New menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33061
diff
changeset
|
87 "--" |
93893
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
88 ["Previous comment" log-edit-previous-comment |
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
89 :help "Cycle backwards through comment history"] |
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
90 ["Next comment" log-edit-next-comment |
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
91 :help "Cycle forwards through comment history."] |
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
92 ["Search comment forward" log-edit-comment-search-forward |
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
93 :help "Search forwards through comment history for a substring match of str"] |
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
94 ["Search comment backward" log-edit-comment-search-backward |
ff99dcb2b31b
* outline.el (outline-mode-menu-bar-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87765
diff
changeset
|
95 :help "Search backwards through comment history for substring match of str"])) |
33180
8700cd9cdd26
(log-edit-menu): New menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33061
diff
changeset
|
96 |
33061
3cbd3cc4cc8b
(log-edit-confirm): Fix the default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32816
diff
changeset
|
97 (defcustom log-edit-confirm 'changed |
100171 | 98 "If non-nil, `log-edit-done' will request confirmation. |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
99 If 'changed, only request confirmation if the list of files has |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
100 changed since the beginning of the log-edit session." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
101 :group 'log-edit |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
102 :type '(choice (const changed) (const t) (const nil))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
103 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
104 (defcustom log-edit-keep-buffer nil |
100171 | 105 "If non-nil, don't hide the buffer after `log-edit-done'." |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
106 :group 'log-edit |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
107 :type 'boolean) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
108 |
49616
43c9ef374660
(cvs-commit-buffer-require-final-newline, cvs-changelog-full-paragraphs): Add
Juanma Barranquero <lekktu@gmail.com>
parents:
49597
diff
changeset
|
109 (defvar cvs-commit-buffer-require-final-newline t) |
43c9ef374660
(cvs-commit-buffer-require-final-newline, cvs-changelog-full-paragraphs): Add
Juanma Barranquero <lekktu@gmail.com>
parents:
49597
diff
changeset
|
110 (make-obsolete-variable 'cvs-commit-buffer-require-final-newline |
94161
f6a929751bfd
(cvs-commit-buffer-require-final-newline, cvs-changelog-full-paragraphs):
Juanma Barranquero <lekktu@gmail.com>
parents:
93893
diff
changeset
|
111 'log-edit-require-final-newline |
f6a929751bfd
(cvs-commit-buffer-require-final-newline, cvs-changelog-full-paragraphs):
Juanma Barranquero <lekktu@gmail.com>
parents:
93893
diff
changeset
|
112 "21.1") |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
113 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
114 (defcustom log-edit-require-final-newline |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
115 cvs-commit-buffer-require-final-newline |
100171 | 116 "Enforce a newline at the end of commit log messages. |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
117 Enforce it silently if t, query if non-nil and don't do anything if nil." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
118 :group 'log-edit |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
119 :type '(choice (const ask) (const t) (const nil))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
120 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
121 (defcustom log-edit-setup-invert nil |
100171 | 122 "Non-nil means `log-edit' should invert the meaning of its SETUP arg. |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
123 If SETUP is 'force, this variable has no effect." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
124 :group 'log-edit |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
125 :type 'boolean) |
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 (defcustom log-edit-hook '(log-edit-insert-cvs-template |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
128 log-edit-insert-changelog) |
100171 | 129 "Hook run at the end of `log-edit'." |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
130 :group 'log-edit |
67183
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
131 :type '(hook :options (log-edit-insert-changelog |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
132 log-edit-insert-cvs-rcstemplate |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
133 log-edit-insert-cvs-template |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
134 log-edit-insert-filenames))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
135 |
28340
b90fe8a937ae
(log-edit-mode-hook): Fix typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28338
diff
changeset
|
136 (defcustom log-edit-mode-hook (if (boundp 'vc-log-mode-hook) vc-log-mode-hook) |
100171 | 137 "Hook run when entering `log-edit-mode'." |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
138 :group 'log-edit |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
139 :type 'hook) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
140 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
141 (defcustom log-edit-done-hook nil |
100171 | 142 "Hook run before doing the actual commit. |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
143 This hook can be used to cleanup the message, enforce various |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
144 conventions, or to allow recording the message in some other database, |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
145 such as a bug-tracking system. The list of files about to be committed |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
146 can be obtained from `log-edit-files'." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
147 :group 'log-edit |
36616
61f696f7e5f9
(log-edit-common-indent): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34652
diff
changeset
|
148 :type '(hook :options (log-edit-set-common-indentation |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
149 log-edit-add-to-changelog))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
150 |
104369
5744c85d533a
* log-edit.el (log-edit-strip-single-file-name): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
151 (defcustom log-edit-strip-single-file-name t |
5744c85d533a
* log-edit.el (log-edit-strip-single-file-name): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
152 "If non-nil, remove file name from single-file log entries." |
5744c85d533a
* log-edit.el (log-edit-strip-single-file-name): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
153 :type 'boolean) |
5744c85d533a
* log-edit.el (log-edit-strip-single-file-name): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
154 |
49616
43c9ef374660
(cvs-commit-buffer-require-final-newline, cvs-changelog-full-paragraphs): Add
Juanma Barranquero <lekktu@gmail.com>
parents:
49597
diff
changeset
|
155 (defvar cvs-changelog-full-paragraphs t) |
43c9ef374660
(cvs-commit-buffer-require-final-newline, cvs-changelog-full-paragraphs): Add
Juanma Barranquero <lekktu@gmail.com>
parents:
49597
diff
changeset
|
156 (make-obsolete-variable 'cvs-changelog-full-paragraphs |
94161
f6a929751bfd
(cvs-commit-buffer-require-final-newline, cvs-changelog-full-paragraphs):
Juanma Barranquero <lekktu@gmail.com>
parents:
93893
diff
changeset
|
157 'log-edit-changelog-full-paragraphs |
f6a929751bfd
(cvs-commit-buffer-require-final-newline, cvs-changelog-full-paragraphs):
Juanma Barranquero <lekktu@gmail.com>
parents:
93893
diff
changeset
|
158 "21.1") |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
159 |
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
160 (defvar log-edit-changelog-full-paragraphs cvs-changelog-full-paragraphs |
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
161 "*If non-nil, include full ChangeLog paragraphs in the log. |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
162 This may be set in the ``local variables'' section of a ChangeLog, to |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
163 indicate the policy for that ChangeLog. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
164 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
165 A ChangeLog paragraph is a bunch of log text containing no blank lines; |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
166 a paragraph usually describes a set of changes with a single purpose, |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
167 but perhaps spanning several functions in several files. Changes in |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
168 different paragraphs are unrelated. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
169 |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
170 You could argue that the log entry for a file should contain the |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
171 full ChangeLog paragraph mentioning the change to the file, even though |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
172 it may mention other files, because that gives you the full context you |
63255
4f2b9ea9b006
(log-edit-changelog-full-paragraphs): Fix spellings in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents:
62707
diff
changeset
|
173 need to understand the change. This is the behavior you get when this |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
174 variable is set to t. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
175 |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
176 On the other hand, you could argue that the log entry for a change |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
177 should contain only the text for the changes which occurred in that |
63255
4f2b9ea9b006
(log-edit-changelog-full-paragraphs): Fix spellings in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents:
62707
diff
changeset
|
178 file, because the log is per-file. This is the behavior you get |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
179 when this variable is set to nil.") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
180 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
181 ;;;; Internal global or buffer-local vars |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
182 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
183 (defconst log-edit-files-buf "*log-edit-files*") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
184 (defvar log-edit-initial-files nil) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
185 (defvar log-edit-callback nil) |
86908
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
186 (defvar log-edit-diff-function nil) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
187 (defvar log-edit-listfun nil) |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
188 (defvar log-edit-parent-buffer nil) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
189 |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
190 ;;; Originally taken from VC-Log mode |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
191 |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
192 (defconst log-edit-maximum-comment-ring-size 32 |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
193 "Maximum number of saved comments in the comment ring.") |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
194 (defvar log-edit-comment-ring (make-ring log-edit-maximum-comment-ring-size)) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
195 (defvar log-edit-comment-ring-index nil) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
196 (defvar log-edit-last-comment-match "") |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
197 |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
198 (defun log-edit-new-comment-index (stride len) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
199 "Return the comment index STRIDE elements from the current one. |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
200 LEN is the length of `log-edit-comment-ring'." |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
201 (mod (cond |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
202 (log-edit-comment-ring-index (+ log-edit-comment-ring-index stride)) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
203 ;; Initialize the index on the first use of this command |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
204 ;; so that the first M-p gets index 0, and the first M-n gets |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
205 ;; index -1. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
206 ((> stride 0) (1- stride)) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
207 (t stride)) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
208 len)) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
209 |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
210 (defun log-edit-previous-comment (arg) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
211 "Cycle backwards through comment history. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
212 With a numeric prefix ARG, go back ARG comments." |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
213 (interactive "*p") |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
214 (let ((len (ring-length log-edit-comment-ring))) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
215 (if (<= len 0) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
216 (progn (message "Empty comment ring") (ding)) |
51065
35933dc8e248
Don't require vc.el anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51063
diff
changeset
|
217 ;; Don't use `erase-buffer' because we don't want to `widen'. |
35933dc8e248
Don't require vc.el anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51063
diff
changeset
|
218 (delete-region (point-min) (point-max)) |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
219 (setq log-edit-comment-ring-index (log-edit-new-comment-index arg len)) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
220 (message "Comment %d" (1+ log-edit-comment-ring-index)) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
221 (insert (ring-ref log-edit-comment-ring log-edit-comment-ring-index))))) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
222 |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
223 (defun log-edit-next-comment (arg) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
224 "Cycle forwards through comment history. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
225 With a numeric prefix ARG, go forward ARG comments." |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
226 (interactive "*p") |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
227 (log-edit-previous-comment (- arg))) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
228 |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
229 (defun log-edit-comment-search-backward (str &optional stride) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
230 "Search backwards through comment history for substring match of STR. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
231 If the optional argument STRIDE is present, that is a step-width to use |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
232 when going through the comment ring." |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
233 ;; Why substring rather than regexp ? -sm |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
234 (interactive |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
235 (list (read-string "Comment substring: " nil nil log-edit-last-comment-match))) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
236 (unless stride (setq stride 1)) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
237 (if (string= str "") |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
238 (setq str log-edit-last-comment-match) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
239 (setq log-edit-last-comment-match str)) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
240 (let* ((str (regexp-quote str)) |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
241 (len (ring-length log-edit-comment-ring)) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
242 (n (log-edit-new-comment-index stride len))) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
243 (while (progn (when (or (>= n len) (< n 0)) (error "Not found")) |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
244 (not (string-match str (ring-ref log-edit-comment-ring n)))) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
245 (setq n (+ n stride))) |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
246 (setq log-edit-comment-ring-index n) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
247 (log-edit-previous-comment 0))) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
248 |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
249 (defun log-edit-comment-search-forward (str) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
250 "Search forwards through comment history for a substring match of STR." |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
251 (interactive |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
252 (list (read-string "Comment substring: " nil nil log-edit-last-comment-match))) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
253 (log-edit-comment-search-backward str -1)) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
254 |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
255 (defun log-edit-comment-to-change-log (&optional whoami file-name) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
256 "Enter last VC comment into the change log for the current file. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
257 WHOAMI (interactive prefix) non-nil means prompt for user name |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
258 and site. FILE-NAME is the name of the change log; if nil, use |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
259 `change-log-default-name'. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
260 |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
261 This may be useful as a `log-edit-checkin-hook' to update change logs |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
262 automatically." |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
263 (interactive (if current-prefix-arg |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
264 (list current-prefix-arg |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
265 (prompt-for-change-log-name)))) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
266 (let (;; Extract the comment first so we get any error before doing anything. |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
267 (comment (ring-ref log-edit-comment-ring 0)) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
268 ;; Don't let add-change-log-entry insert a defun name. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
269 (add-log-current-defun-function 'ignore) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
270 end) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
271 ;; Call add-log to do half the work. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
272 (add-change-log-entry whoami file-name t t) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
273 ;; Insert the VC comment, leaving point before it. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
274 (setq end (save-excursion (insert comment) (point-marker))) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
275 (if (looking-at "\\s *\\s(") |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
276 ;; It starts with an open-paren, as in "(foo): Frobbed." |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
277 ;; So remove the ": " add-log inserted. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
278 (delete-char -2)) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
279 ;; Canonicalize the white space between the file name and comment. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
280 (just-one-space) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
281 ;; Indent rest of the text the same way add-log indented the first line. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
282 (let ((indentation (current-indentation))) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
283 (save-excursion |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
284 (while (< (point) end) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
285 (forward-line 1) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
286 (indent-to indentation)) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
287 (setq end (point)))) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
288 ;; Fill the inserted text, preserving open-parens at bol. |
51065
35933dc8e248
Don't require vc.el anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51063
diff
changeset
|
289 (let ((paragraph-start (concat paragraph-start "\\|\\s *\\s("))) |
51063
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
290 (beginning-of-line) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
291 (fill-region (point) end)) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
292 ;; Canonicalize the white space at the end of the entry so it is |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
293 ;; separated from the next entry by a single blank line. |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
294 (skip-syntax-forward " " end) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
295 (delete-char (- (skip-syntax-backward " "))) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
296 (or (eobp) (looking-at "\n\n") |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
297 (insert "\n")))) |
66dd7f2dd70a
(vc-log-mode-map, vc-maximum-comment-ring-size, vc-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49616
diff
changeset
|
298 |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
299 ;; Compatibility with old names. |
67183
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
300 (define-obsolete-variable-alias 'vc-comment-ring 'log-edit-comment-ring "22.1") |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
301 (define-obsolete-variable-alias 'vc-comment-ring-index 'log-edit-comment-ring-index "22.1") |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
302 (define-obsolete-function-alias 'vc-previous-comment 'log-edit-previous-comment "22.1") |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
303 (define-obsolete-function-alias 'vc-next-comment 'log-edit-next-comment "22.1") |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
304 (define-obsolete-function-alias 'vc-comment-search-reverse 'log-edit-comment-search-backward "22.1") |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
305 (define-obsolete-function-alias 'vc-comment-search-forward 'log-edit-comment-search-forward "22.1") |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
306 (define-obsolete-function-alias 'vc-comment-to-change-log 'log-edit-comment-to-change-log "22.1") |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
307 |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
308 ;;; |
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
309 ;;; Actual code |
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
310 ;;; |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
311 |
54422
4f7b9dbf832e
(log-edit-font-lock-keywords): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54417
diff
changeset
|
312 (defvar log-edit-font-lock-keywords |
54417
ae0720c5c65c
(log-edit-font-lock-keywords): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52791
diff
changeset
|
313 '(("\\`\\(Summary:\\)\\(.*\\)" |
ae0720c5c65c
(log-edit-font-lock-keywords): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52791
diff
changeset
|
314 (1 font-lock-keyword-face) |
ae0720c5c65c
(log-edit-font-lock-keywords): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52791
diff
changeset
|
315 (2 font-lock-function-name-face)))) |
ae0720c5c65c
(log-edit-font-lock-keywords): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52791
diff
changeset
|
316 |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
317 ;;;###autoload |
86908
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
318 (defun log-edit (callback &optional setup params buffer &rest ignore) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
319 "Setup a buffer to enter a log message. |
33061
3cbd3cc4cc8b
(log-edit-confirm): Fix the default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32816
diff
changeset
|
320 \\<log-edit-mode-map>The buffer will be put in `log-edit-mode'. |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
321 If SETUP is non-nil, the buffer is then erased and `log-edit-hook' is run. |
87765 | 322 Mark and point will be set around the entire contents of the buffer so |
323 that it is easy to kill the contents of the buffer with \\[kill-region]. | |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
324 Once you're done editing the message, pressing \\[log-edit-done] will call |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
325 `log-edit-done' which will end up calling CALLBACK to do the actual commit. |
87765 | 326 |
327 PARAMS if non-nil is an alist. Possible keys and associated values: | |
328 `log-edit-listfun' -- function taking no arguments that returns the list of | |
329 files that are concerned by the current operation (using relative names); | |
330 `log-edit-diff-function' -- function taking no arguments that | |
331 displays a diff of the files concerned by the current operation. | |
332 | |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
333 If BUFFER is non-nil `log-edit' will jump to that buffer, use it to edit the |
87765 | 334 log message and go back to the current buffer when done. Otherwise, it |
335 uses the current buffer." | |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
336 (let ((parent (current-buffer))) |
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
337 (if buffer (pop-to-buffer buffer)) |
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
338 (when (and log-edit-setup-invert (not (eq setup 'force))) |
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
339 (setq setup (not setup))) |
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
340 (when setup (erase-buffer)) |
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
341 (log-edit-mode) |
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
342 (set (make-local-variable 'log-edit-callback) callback) |
86908
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
343 (if (listp params) |
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
344 (dolist (crt params) |
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
345 (set (make-local-variable (car crt)) (cdr crt))) |
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
346 ;; For backward compatibility with log-edit up to version 22.2 |
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
347 ;; accept non-list PARAMS to mean `log-edit-list'. |
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
348 (set (make-local-variable 'log-edit-listfun) params)) |
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
349 |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
350 (if buffer (set (make-local-variable 'log-edit-parent-buffer) parent)) |
40478
4d0323a1ed72
(log-edit): Run hook after `log-edit-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37694
diff
changeset
|
351 (set (make-local-variable 'log-edit-initial-files) (log-edit-files)) |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
352 (when setup (run-hooks 'log-edit-hook)) |
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
353 (goto-char (point-min)) (push-mark (point-max)) |
65582
4d1085b02d64
Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents:
64762
diff
changeset
|
354 (message "%s" (substitute-command-keys |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
355 "Press \\[log-edit-done] when you are done editing.")))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
356 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
357 (define-derived-mode log-edit-mode text-mode "Log-Edit" |
28338
8da42323f5d5
(log-edit-mode-map): Inherit from vc-log-mode-map
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
358 "Major mode for editing version-control log messages. |
8da42323f5d5
(log-edit-mode-map): Inherit from vc-log-mode-map
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
359 When done editing the log entry, just type \\[log-edit-done] which |
8da42323f5d5
(log-edit-mode-map): Inherit from vc-log-mode-map
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
360 will trigger the actual commit of the file(s). |
8da42323f5d5
(log-edit-mode-map): Inherit from vc-log-mode-map
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
361 Several other handy support commands are provided of course and |
8da42323f5d5
(log-edit-mode-map): Inherit from vc-log-mode-map
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
362 the package from which this is used might also provide additional |
8da42323f5d5
(log-edit-mode-map): Inherit from vc-log-mode-map
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
363 commands (under C-x v for VC, for example). |
8da42323f5d5
(log-edit-mode-map): Inherit from vc-log-mode-map
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
364 |
29375
429ae71326c2
(log-edit-mode): Make vc-comment-ring-index local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29042
diff
changeset
|
365 \\{log-edit-mode-map}" |
54417
ae0720c5c65c
(log-edit-font-lock-keywords): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52791
diff
changeset
|
366 (set (make-local-variable 'font-lock-defaults) |
ae0720c5c65c
(log-edit-font-lock-keywords): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52791
diff
changeset
|
367 '(log-edit-font-lock-keywords t)) |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
368 (make-local-variable 'log-edit-comment-ring-index)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
369 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
370 (defun log-edit-hide-buf (&optional buf where) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
371 (when (setq buf (get-buffer (or buf log-edit-files-buf))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
372 (let ((win (get-buffer-window buf where))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
373 (if win (ignore-errors (delete-window win)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
374 (bury-buffer buf))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
375 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
376 (defun log-edit-done () |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
377 "Finish editing the log message and commit the files. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
378 If you want to abort the commit, simply delete the buffer." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
379 (interactive) |
29042
09b4758f4aea
(log-edit-done): Cleanup trailing empty lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28860
diff
changeset
|
380 ;; Get rid of trailing empty lines |
09b4758f4aea
(log-edit-done): Cleanup trailing empty lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28860
diff
changeset
|
381 (goto-char (point-max)) |
09b4758f4aea
(log-edit-done): Cleanup trailing empty lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28860
diff
changeset
|
382 (skip-syntax-backward " ") |
09b4758f4aea
(log-edit-done): Cleanup trailing empty lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28860
diff
changeset
|
383 (when (equal (char-after) ?\n) (forward-char 1)) |
09b4758f4aea
(log-edit-done): Cleanup trailing empty lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28860
diff
changeset
|
384 (delete-region (point) (point-max)) |
09b4758f4aea
(log-edit-done): Cleanup trailing empty lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28860
diff
changeset
|
385 ;; Check for final newline |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
386 (if (and (> (point-max) (point-min)) |
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
387 (/= (char-before (point-max)) ?\n) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
388 (or (eq log-edit-require-final-newline t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
389 (and log-edit-require-final-newline |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
390 (y-or-n-p |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
391 (format "Buffer %s does not end in newline. Add one? " |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
392 (buffer-name)))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
393 (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
394 (goto-char (point-max)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
395 (insert ?\n))) |
29375
429ae71326c2
(log-edit-mode): Make vc-comment-ring-index local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
29042
diff
changeset
|
396 (let ((comment (buffer-string))) |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
397 (when (or (ring-empty-p log-edit-comment-ring) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
398 (not (equal comment (ring-ref log-edit-comment-ring 0)))) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
399 (ring-insert log-edit-comment-ring comment))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
400 (let ((win (get-buffer-window log-edit-files-buf))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
401 (if (and log-edit-confirm |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
402 (not (and (eq log-edit-confirm 'changed) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
403 (equal (log-edit-files) log-edit-initial-files))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
404 (progn |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
405 (log-edit-show-files) |
65689
96187e7edd1b
2005-09-25 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents:
65582
diff
changeset
|
406 (not (y-or-n-p "Really commit? ")))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
407 (progn (when (not win) (log-edit-hide-buf)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
408 (message "Oh, well! Later maybe?")) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
409 (run-hooks 'log-edit-done-hook) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
410 (log-edit-hide-buf) |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
411 (unless (or log-edit-keep-buffer (not log-edit-parent-buffer)) |
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
412 (cvs-bury-buffer (current-buffer) log-edit-parent-buffer)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
413 (call-interactively log-edit-callback)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
414 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
415 (defun log-edit-files () |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
416 "Return the list of files that are about to be committed." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
417 (ignore-errors (funcall log-edit-listfun))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
418 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
419 (defun log-edit-mode-help () |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
420 "Provide help for the `log-edit-mode-map'." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
421 (interactive) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
422 (if (eq last-command 'log-edit-mode-help) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
423 (describe-function major-mode) |
65582
4d1085b02d64
Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents:
64762
diff
changeset
|
424 (message "%s" |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
425 (substitute-command-keys |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
426 "Type `\\[log-edit-done]' to finish commit. Try `\\[describe-function] log-edit-done' for more help.")))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
427 |
36616
61f696f7e5f9
(log-edit-common-indent): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34652
diff
changeset
|
428 (defcustom log-edit-common-indent 0 |
61f696f7e5f9
(log-edit-common-indent): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34652
diff
changeset
|
429 "Minimum indentation to use in `log-edit-set-common-indentation'." |
61f696f7e5f9
(log-edit-common-indent): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34652
diff
changeset
|
430 :group 'log-edit |
61f696f7e5f9
(log-edit-common-indent): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34652
diff
changeset
|
431 :type 'integer) |
61f696f7e5f9
(log-edit-common-indent): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34652
diff
changeset
|
432 |
61f696f7e5f9
(log-edit-common-indent): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34652
diff
changeset
|
433 (defun log-edit-set-common-indentation () |
61f696f7e5f9
(log-edit-common-indent): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34652
diff
changeset
|
434 "(Un)Indent the current buffer rigidly to `log-edit-common-indent'." |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
435 (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
436 (let ((common (point-max))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
437 (goto-char (point-min)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
438 (while (< (point) (point-max)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
439 (if (not (looking-at "^[ \t]*$")) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
440 (setq common (min common (current-indentation)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
441 (forward-line 1)) |
36616
61f696f7e5f9
(log-edit-common-indent): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34652
diff
changeset
|
442 (indent-rigidly (point-min) (point-max) |
61f696f7e5f9
(log-edit-common-indent): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34652
diff
changeset
|
443 (- log-edit-common-indent common))))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
444 |
86908
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
445 (defun log-edit-show-diff () |
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
446 "Show the diff for the files to be committed." |
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
447 (interactive) |
86909
71145ecef766
* (log-edit-show-diff): Error out if the diff function is not set.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86908
diff
changeset
|
448 (if (functionp log-edit-diff-function) |
71145ecef766
* (log-edit-show-diff): Error out if the diff function is not set.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86908
diff
changeset
|
449 (funcall log-edit-diff-function) |
71145ecef766
* (log-edit-show-diff): Error out if the diff function is not set.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86908
diff
changeset
|
450 (error "Diff functionality has not been setup"))) |
86908
6e9e38d61817
* log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82365
diff
changeset
|
451 |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
452 (defun log-edit-show-files () |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
453 "Show the list of files to be committed." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
454 (interactive) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
455 (let* ((files (log-edit-files)) |
34405
ef4ba02580f0
(log-edit-parent-buffer): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34304
diff
changeset
|
456 (buf (get-buffer-create log-edit-files-buf))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
457 (with-current-buffer buf |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
458 (log-edit-hide-buf buf 'all) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
459 (setq buffer-read-only nil) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
460 (erase-buffer) |
33232
abfd948c10d4
(log-edit-show-files): Use cvs-insert-strings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33180
diff
changeset
|
461 (cvs-insert-strings files) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
462 (setq buffer-read-only t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
463 (goto-char (point-min)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
464 (save-selected-window |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
465 (cvs-pop-to-buffer-same-frame buf) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
466 (shrink-window-if-larger-than-buffer) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
467 (selected-window))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
468 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
469 (defun log-edit-insert-cvs-template () |
67183
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
470 "Insert the template specified by the CVS administrator, if any. |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
471 This simply uses the local CVS/Template file." |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
472 (interactive) |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105201
diff
changeset
|
473 (when (or (called-interactively-p 'interactive) |
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105201
diff
changeset
|
474 (= (point-min) (point-max))) |
67183
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
475 (when (file-readable-p "CVS/Template") |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
476 (insert-file-contents "CVS/Template")))) |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40478
diff
changeset
|
477 |
67183
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
478 (defun log-edit-insert-cvs-rcstemplate () |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
479 "Insert the rcstemplate from the CVS repository. |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
480 This contacts the repository to get the rcstemplate file and |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
481 can thus take some time." |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
482 (interactive) |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105201
diff
changeset
|
483 (when (or (called-interactively-p 'interactive) |
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105201
diff
changeset
|
484 (= (point-min) (point-max))) |
67194
b4ad6ef2b752
(log-edit-insert-cvs-rcstemplate): Ignore stderr.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67183
diff
changeset
|
485 (when (file-readable-p "CVS/Root") |
b4ad6ef2b752
(log-edit-insert-cvs-rcstemplate): Ignore stderr.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67183
diff
changeset
|
486 ;; Ignore the stderr stuff, even if it's an error. |
b4ad6ef2b752
(log-edit-insert-cvs-rcstemplate): Ignore stderr.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67183
diff
changeset
|
487 (call-process "cvs" nil '(t nil) nil |
b4ad6ef2b752
(log-edit-insert-cvs-rcstemplate): Ignore stderr.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67183
diff
changeset
|
488 "checkout" "-p" "CVSROOT/rcstemplate")))) |
67183
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
489 |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
490 (defun log-edit-insert-filenames () |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
491 "Insert the list of files that are to be committed." |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
492 (interactive) |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
493 (insert "Affected files: \n" |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
494 (mapconcat 'identity (log-edit-files) " \n"))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
495 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
496 (defun log-edit-add-to-changelog () |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
497 "Insert this log message into the appropriate ChangeLog file." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
498 (interactive) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
499 ;; Yuck! |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
500 (unless (string= (buffer-string) (ring-ref log-edit-comment-ring 0)) |
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
501 (ring-insert log-edit-comment-ring (buffer-string))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
502 (dolist (f (log-edit-files)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
503 (let ((buffer-file-name (expand-file-name f))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
504 (save-excursion |
51368
cc73795bc08a
(log-edit-maximum-comment-ring-size, log-edit-comment-ring)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51065
diff
changeset
|
505 (log-edit-comment-to-change-log))))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
506 |
67183
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
507 (defvar log-edit-changelog-use-first nil) |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
508 (defun log-edit-insert-changelog (&optional use-first) |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
509 "Insert a log message by looking at the ChangeLog. |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
510 The idea is to write your ChangeLog entries first, and then use this |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
511 command to commit your changes. |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
512 |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
513 To select default log text, we: |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
514 - find the ChangeLog entries for the files to be checked in, |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
515 - verify that the top entry in the ChangeLog is on the current date |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
516 and by the current user; if not, we don't provide any default text, |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
517 - search the ChangeLog entry for paragraphs containing the names of |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
518 the files we're checking in, and finally |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
519 - use those paragraphs as the log text. |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
520 |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
521 If the optional prefix arg USE-FIRST is given (via \\[universal-argument]), |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
522 or if the command is repeated a second time in a row, use the first log entry |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
523 regardless of user name or time." |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
524 (interactive "P") |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
525 (let ((log-edit-changelog-use-first |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
526 (or use-first (eq last-command 'log-edit-insert-changelog)))) |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
527 (log-edit-insert-changelog-entries (log-edit-files))) |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
528 (log-edit-set-common-indentation) |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
529 (goto-char (point-min)) |
104369
5744c85d533a
* log-edit.el (log-edit-strip-single-file-name): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
530 (when (and log-edit-strip-single-file-name (looking-at "\\*\\s-+")) |
67183
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
531 (forward-line 1) |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
532 (when (not (re-search-forward "^\\*\\s-+" nil t)) |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
533 (goto-char (point-min)) |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
534 (skip-chars-forward "^():") |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
535 (skip-chars-forward ": ") |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
536 (delete-region (point-min) (point))))) |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
537 |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40478
diff
changeset
|
538 ;;;; |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
539 ;;;; functions for getting commit message from ChangeLog a file... |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
540 ;;;; Courtesy Jim Blandy |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40478
diff
changeset
|
541 ;;;; |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
542 |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
543 (defun log-edit-narrow-changelog () |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
544 "Narrow to the top page of the current buffer, a ChangeLog file. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
545 Actually, the narrowed region doesn't include the date line. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
546 A \"page\" in a ChangeLog file is the area between two dates." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
547 (or (eq major-mode 'change-log-mode) |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
548 (error "log-edit-narrow-changelog: current buffer isn't a ChangeLog")) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
549 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
550 (goto-char (point-min)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
551 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
552 ;; Skip date line and subsequent blank lines. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
553 (forward-line 1) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
554 (if (looking-at "[ \t\n]*\n") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
555 (goto-char (match-end 0))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
556 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
557 (let ((start (point))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
558 (forward-page 1) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
559 (narrow-to-region start (point)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
560 (goto-char (point-min)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
561 |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
562 (defun log-edit-changelog-paragraph () |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
563 "Return the bounds of the ChangeLog paragraph containing point. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
564 If we are between paragraphs, return the previous paragraph." |
105201
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
565 (beginning-of-line) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
566 (if (looking-at "^[ \t]*$") |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
567 (skip-chars-backward " \t\n" (point-min))) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
568 (list (progn |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
569 (if (re-search-backward "^[ \t]*\n" nil 'or-to-limit) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
570 (goto-char (match-end 0))) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
571 (point)) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
572 (if (re-search-forward "^[ \t\n]*$" nil t) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
573 (match-beginning 0) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
574 (point-max)))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
575 |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
576 (defun log-edit-changelog-subparagraph () |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
577 "Return the bounds of the ChangeLog subparagraph containing point. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
578 A subparagraph is a block of non-blank lines beginning with an asterisk. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
579 If we are between sub-paragraphs, return the previous subparagraph." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
580 (end-of-line) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
581 (if (search-backward "*" nil t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
582 (list (progn (beginning-of-line) (point)) |
32816
f4923452ea45
(log-edit): Add :version and a :group for vc.
Dave Love <fx@gnu.org>
parents:
29398
diff
changeset
|
583 (progn |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
584 (forward-line 1) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
585 (if (re-search-forward "^[ \t]*[\n*]" nil t) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
586 (match-beginning 0) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
587 (point-max)))) |
105201
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
588 (list (point) (point)))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
589 |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
590 (defun log-edit-changelog-entry () |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
591 "Return the bounds of the ChangeLog entry containing point. |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
592 The variable `log-edit-changelog-full-paragraphs' decides whether an |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
593 \"entry\" is a paragraph or a subparagraph; see its documentation string |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
594 for more details." |
105201
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
595 (save-excursion |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
596 (if log-edit-changelog-full-paragraphs |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
597 (log-edit-changelog-paragraph) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
598 (log-edit-changelog-subparagraph)))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
599 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
600 (defvar user-full-name) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
601 (defvar user-mail-address) |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
602 (defun log-edit-changelog-ours-p () |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
603 "See if ChangeLog entry at point is for the current user, today. |
78492
7c8949dbfa0d
Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents:
78236
diff
changeset
|
604 Return non-nil if it is." |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
605 ;; Code adapted from add-change-log-entry. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
606 (let ((name (or (and (boundp 'add-log-full-name) add-log-full-name) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
607 (and (fboundp 'user-full-name) (user-full-name)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
608 (and (boundp 'user-full-name) user-full-name))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
609 (mail (or (and (boundp 'add-log-mailing-address) add-log-mailing-address) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
610 ;;(and (fboundp 'user-mail-address) (user-mail-address)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
611 (and (boundp 'user-mail-address) user-mail-address))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
612 (time (or (and (boundp 'add-log-time-format) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
613 (functionp add-log-time-format) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
614 (funcall add-log-time-format)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
615 (format-time-string "%Y-%m-%d")))) |
67183
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
616 (looking-at (if log-edit-changelog-use-first |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
617 "[^ \t]" |
2ff424a9019b
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
65689
diff
changeset
|
618 (regexp-quote (format "%s %s <%s>" time name mail)))))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
619 |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
620 (defun log-edit-changelog-entries (file) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
621 "Return the ChangeLog entries for FILE, and the ChangeLog they came from. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
622 The return value looks like this: |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
623 (LOGBUFFER (ENTRYSTART . ENTRYEND) ...) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
624 where LOGBUFFER is the name of the ChangeLog buffer, and each |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
625 \(ENTRYSTART . ENTRYEND\) pair is a buffer region." |
81618
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
626 (let ((changelog-file-name |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
627 (let ((default-directory |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
628 (file-name-directory (expand-file-name file))) |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
629 (visiting-buffer (find-buffer-visiting file))) |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
630 ;; If there is a buffer visiting FILE, and it has a local |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
631 ;; value for `change-log-default-name', use that. |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
632 (if (and visiting-buffer |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
633 (local-variable-p 'change-log-default-name |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
634 visiting-buffer)) |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
635 (with-current-buffer visiting-buffer |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
636 change-log-default-name) |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
637 ;; `find-change-log' uses `change-log-default-name' if set |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
638 ;; and sets it before exiting, so we need to work around |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
639 ;; that memoizing which is undesired here |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
640 (setq change-log-default-name nil) |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
641 (find-change-log))))) |
42755149d51d
(log-edit-changelog-entries): Use with-current-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
77816
diff
changeset
|
642 (with-current-buffer (find-file-noselect changelog-file-name) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
643 (unless (eq major-mode 'change-log-mode) (change-log-mode)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
644 (goto-char (point-min)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
645 (if (looking-at "\\s-*\n") (goto-char (match-end 0))) |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
646 (if (not (log-edit-changelog-ours-p)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
647 (list (current-buffer)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
648 (save-restriction |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
649 (log-edit-narrow-changelog) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
650 (goto-char (point-min)) |
49597
e88404e8f2cf
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
40478
diff
changeset
|
651 |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
652 ;; Search for the name of FILE relative to the ChangeLog. If that |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
653 ;; doesn't occur anywhere, they're not using full relative |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
654 ;; filenames in the ChangeLog, so just look for FILE; we'll accept |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
655 ;; some false positives. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
656 (let ((pattern (file-relative-name |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
657 file (file-name-directory changelog-file-name)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
658 (if (or (string= pattern "") |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
659 (not (save-excursion |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
660 (search-forward pattern nil t)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
661 (setq pattern (file-name-nondirectory file))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
662 |
62707
08bad0f3de3f
(log-edit-changelog-entries): Distinguish between
Nick Roberts <nickrob@snap.net.nz>
parents:
59996
diff
changeset
|
663 (setq pattern (concat "\\(^\\|[^[:alnum:]]\\)" |
08bad0f3de3f
(log-edit-changelog-entries): Distinguish between
Nick Roberts <nickrob@snap.net.nz>
parents:
59996
diff
changeset
|
664 pattern |
08bad0f3de3f
(log-edit-changelog-entries): Distinguish between
Nick Roberts <nickrob@snap.net.nz>
parents:
59996
diff
changeset
|
665 "\\($\\|[^[:alnum:]]\\)")) |
08bad0f3de3f
(log-edit-changelog-entries): Distinguish between
Nick Roberts <nickrob@snap.net.nz>
parents:
59996
diff
changeset
|
666 |
105201
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
667 (let (texts |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
668 (pos (point))) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
669 (while (and (not (eobp)) (re-search-forward pattern nil t)) |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
670 (let ((entry (log-edit-changelog-entry))) |
105201
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
671 (if (< (elt entry 1) (max (1+ pos) (point))) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
672 ;; This is not relevant, actually. |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
673 nil |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
674 (push entry texts)) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
675 ;; Make sure we make progress. |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
676 (setq pos (max (1+ pos) (elt entry 1))) |
cdc275504289
(log-edit-changelog-entries): Avoid inf-loops.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
104369
diff
changeset
|
677 (goto-char pos))) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
678 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
679 (cons (current-buffer) texts)))))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
680 |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
681 (defun log-edit-changelog-insert-entries (buffer regions) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
682 "Insert those regions in BUFFER specified in REGIONS. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
683 Sort REGIONS front-to-back first." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
684 (let ((regions (sort regions 'car-less-than-car)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
685 (last)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
686 (dolist (region regions) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
687 (when (and last (< last (car region))) (newline)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
688 (setq last (elt region 1)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
689 (apply 'insert-buffer-substring buffer region)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
690 |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
691 (defun log-edit-insert-changelog-entries (files) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
692 "Given a list of files FILES, insert the ChangeLog entries for them." |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
693 (let ((buffer-entries nil)) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
694 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
695 ;; Add each buffer to buffer-entries, and associate it with the list |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
696 ;; of entries we want from that file. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
697 (dolist (file files) |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
698 (let* ((entries (log-edit-changelog-entries file)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
699 (pair (assq (car entries) buffer-entries))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
700 (if pair |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
701 (setcdr pair (cvs-union (cdr pair) (cdr entries))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
702 (push entries buffer-entries)))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
703 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
704 ;; Now map over each buffer in buffer-entries, sort the entries for |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
705 ;; each buffer, and extract them as strings. |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
706 (dolist (buffer-entry buffer-entries) |
28860
40a22b85650e
(cvs-changelog-full-paragraphs): Mark obsolete.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28340
diff
changeset
|
707 (log-edit-changelog-insert-entries (car buffer-entry) (cdr buffer-entry)) |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
708 (when (cdr buffer-entry) (newline))))) |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
709 |
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
710 (provide 'log-edit) |
28338
8da42323f5d5
(log-edit-mode-map): Inherit from vc-log-mode-map
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28088
diff
changeset
|
711 |
62707
08bad0f3de3f
(log-edit-changelog-entries): Distinguish between
Nick Roberts <nickrob@snap.net.nz>
parents:
59996
diff
changeset
|
712 ;; arch-tag: 8089b39c-983b-4e83-93cd-ed0a64c7fdcc |
28088
b442dfc3cef0
*** empty log message ***
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
713 ;;; log-edit.el ends here |