aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Nicolaescu2007-09-22 00:02:52 +0000
committerDan Nicolaescu2007-09-22 00:02:52 +0000
commita3f5d84dacc5ca61215c8601a658d995f4210c64 (patch)
treea51b3cf5375e3cd35732712e714119e0ed663f8d
parent2e2cc4e44dbba6873bc6cffe425b7dd196e74ef9 (diff)
downloademacs-a3f5d84dacc5ca61215c8601a658d995f4210c64.tar.gz
emacs-a3f5d84dacc5ca61215c8601a658d995f4210c64.zip
* files.el (file-name-sans-versions): Allow - and a-z in version
names. * log-view.el (log-view-mode-map, log-view-mode-menu): Bind log-view-annotate-version. (log-view-beginning-of-defun, log-view-end-of-defun) (log-view-annotate-version): New functions. (log-view-mode): Use log-view-beginning-of-defun and log-view-end-of-defun.
-rw-r--r--lisp/ChangeLog12
-rw-r--r--lisp/files.el2
-rw-r--r--lisp/log-view.el59
3 files changed, 72 insertions, 1 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c0e61af4a29..23866abc8e6 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,15 @@
12007-09-21 Dan Nicolaescu <dann@ics.uci.edu>
2
3 * files.el (file-name-sans-versions): Allow - and a-z in version
4 names.
5
6 * log-view.el (log-view-mode-map, log-view-mode-menu): Bind
7 log-view-annotate-version.
8 (log-view-beginning-of-defun, log-view-end-of-defun)
9 (log-view-annotate-version): New functions.
10 (log-view-mode): Use log-view-beginning-of-defun and
11 log-view-end-of-defun.
12
12007-09-21 Stefan Monnier <monnier@iro.umontreal.ca> 132007-09-21 Stefan Monnier <monnier@iro.umontreal.ca>
2 14
3 * emacs-lisp/easy-mmode.el (define-minor-mode): Fix staging brain damage. 15 * emacs-lisp/easy-mmode.el (define-minor-mode): Fix staging brain damage.
diff --git a/lisp/files.el b/lisp/files.el
index 6397a5ded66..17b4a6504db 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3188,7 +3188,7 @@ we do not remove backup version numbers, only true file version numbers."
3188 (length name)) 3188 (length name))
3189 (if keep-backup-version 3189 (if keep-backup-version
3190 (length name) 3190 (length name)
3191 (or (string-match "\\.~[0-9.]+~\\'" name) 3191 (or (string-match "\\.~[-0-9a-z.]+~\\'" name)
3192 (string-match "~\\'" name) 3192 (string-match "~\\'" name)
3193 (length name)))))))) 3193 (length name))))))))
3194 3194
diff --git a/lisp/log-view.el b/lisp/log-view.el
index 41e689f0025..4f699af69bf 100644
--- a/lisp/log-view.el
+++ b/lisp/log-view.el
@@ -92,6 +92,7 @@
92 ("m" . set-mark-command) 92 ("m" . set-mark-command)
93 ;; ("e" . cvs-mode-edit-log) 93 ;; ("e" . cvs-mode-edit-log)
94 ("d" . log-view-diff) 94 ("d" . log-view-diff)
95 ("a" . log-view-annotate-version)
95 ("f" . log-view-find-version) 96 ("f" . log-view-find-version)
96 ("n" . log-view-msg-next) 97 ("n" . log-view-msg-next)
97 ("p" . log-view-msg-prev) 98 ("p" . log-view-msg-prev)
@@ -114,6 +115,7 @@
114 ["Mark Log Entry for Diff" set-mark-command] 115 ["Mark Log Entry for Diff" set-mark-command]
115 ["Diff Revisions" log-view-diff] 116 ["Diff Revisions" log-view-diff]
116 ["Visit Version" log-view-find-version] 117 ["Visit Version" log-view-find-version]
118 ["Annotate Version" log-view-annotate-version]
117 ["Next Log Entry" log-view-msg-next] 119 ["Next Log Entry" log-view-msg-next]
118 ["Previous Log Entry" log-view-msg-prev] 120 ["Previous Log Entry" log-view-msg-prev]
119 ["Next File" log-view-file-next] 121 ["Next File" log-view-file-next]
@@ -184,6 +186,10 @@
184 "Major mode for browsing CVS log output." 186 "Major mode for browsing CVS log output."
185 (setq buffer-read-only t) 187 (setq buffer-read-only t)
186 (set (make-local-variable 'font-lock-defaults) log-view-font-lock-defaults) 188 (set (make-local-variable 'font-lock-defaults) log-view-font-lock-defaults)
189 (set (make-local-variable 'beginning-of-defun-function)
190 'log-view-beginning-of-defun)
191 (set (make-local-variable 'end-of-defun-function)
192 'log-view-end-of-defun)
187 (set (make-local-variable 'cvs-minor-wrap-function) 'log-view-minor-wrap)) 193 (set (make-local-variable 'cvs-minor-wrap-function) 'log-view-minor-wrap))
188 194
189;;;; 195;;;;
@@ -237,6 +243,51 @@
237 (unless (re-search-forward log-view-file-re pt t) 243 (unless (re-search-forward log-view-file-re pt t)
238 rev)))))) 244 rev))))))
239 245
246(defun log-view-beginning-of-defun ()
247 ;; This assumes that a log entry starts with a line matching
248 ;; `log-view-message-re'. Modes that derive from `log-view-mode'
249 ;; for which this assumption is not valid will have to provide
250 ;; another implementation of this function. `log-view-msg-prev'
251 ;; does a similar job to this function, we can't use it here
252 ;; directly because it prints messages that are not appropriate in
253 ;; this context and it does not move to the beginning of the buffer
254 ;; when the point is before the first log entry.
255
256 ;; `log-view-beginning-of-defun' and `log-view-end-of-defun' have
257 ;; been checked to work with logs produced by RCS, CVS, git,
258 ;; mercurial and subversion.
259
260 (re-search-backward log-view-message-re nil 'move))
261
262(defun log-view-end-of-defun ()
263 ;; The idea in this function is to search for the beginning of the
264 ;; next log entry using `log-view-message-re' and then go back one
265 ;; line when finding it. Modes that derive from `log-view-mode' for
266 ;; which this assumption is not valid will have to provide another
267 ;; implementation of this function.
268
269 ;; Look back and if there is no entry there it means we are before
270 ;; the first log entry, so go forward until finding one.
271 (unless (save-excursion (re-search-backward log-view-message-re nil t))
272 (re-search-forward log-view-message-re nil t))
273
274 ;; In case we are at the end of log entry going forward a line will
275 ;; make us find the next entry when searching. If we are inside of
276 ;; an entry going forward a line will still keep the point inside
277 ;; the same entry.
278 (forward-line 1)
279
280 ;; In case we are at the beginning of an entry, move past it.
281 (when (looking-at log-view-message-re)
282 (goto-char (match-end 0))
283 (forward-line 1))
284
285 ;; Search for the start of the next log entry. Go to the end of the
286 ;; buffer if we could not find a next entry.
287 (when (re-search-forward log-view-message-re nil 'move)
288 (goto-char (match-beginning 0))
289 (forward-line -1)))
290
240(defvar cvs-minor-current-files) 291(defvar cvs-minor-current-files)
241(defvar cvs-branch-prefix) 292(defvar cvs-branch-prefix)
242(defvar cvs-secondary-branch-prefix) 293(defvar cvs-secondary-branch-prefix)
@@ -276,6 +327,14 @@
276 (switch-to-buffer (vc-find-version (log-view-current-file) 327 (switch-to-buffer (vc-find-version (log-view-current-file)
277 (log-view-current-tag))))) 328 (log-view-current-tag)))))
278 329
330(defun log-view-annotate-version (pos)
331 "Annotate the version at point."
332 (interactive "d")
333 (save-excursion
334 (goto-char pos)
335 (switch-to-buffer (vc-annotate (log-view-current-file)
336 (log-view-current-tag)))))
337
279;; 338;;
280;; diff 339;; diff
281;; 340;;