diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2011-04-24 15:37:47 -0400 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2011-04-24 15:37:47 -0400 |
commit | 3ba7869ce8386d79d21f8e6f7d3c23088f9838ce (patch) | |
tree | 2766a5c0ea496172236a940fd3e8fbfea3c93fcc /lisp/vc/vc-annotate.el | |
parent | 7031be6d49cb78d4cc4a2604b899144824abfeca (diff) | |
download | emacs-3ba7869ce8386d79d21f8e6f7d3c23088f9838ce.tar.gz |
Add vc-annotate-goto-line.
* vc/vc-annotate.el (vc-annotate-goto-line): New command. Based
on a previous implementation by Juanma Barranquero (Bug#8366).
(vc-annotate-mode-map): Bind it to RET.
Diffstat (limited to 'lisp/vc/vc-annotate.el')
-rw-r--r-- | lisp/vc/vc-annotate.el | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lisp/vc/vc-annotate.el b/lisp/vc/vc-annotate.el index 271fce12429..abd3806d02f 100644 --- a/lisp/vc/vc-annotate.el +++ b/lisp/vc/vc-annotate.el @@ -128,6 +128,8 @@ List of factors, used to expand/compress the time scale. See `vc-annotate'." (define-key m "p" 'vc-annotate-prev-revision) (define-key m "w" 'vc-annotate-working-revision) (define-key m "v" 'vc-annotate-toggle-annotation-visibility) + (define-key m "v" 'vc-annotate-toggle-annotation-visibility) + (define-key m "\C-m" 'vc-annotate-goto-line) m) "Local keymap used for VC-Annotate mode.") @@ -673,6 +675,36 @@ The annotations are relative to the current time, unless overridden by OFFSET." ;; Pretend to font-lock there were no matches. nil) +(defun vc-annotate-goto-line () + "Go to the line corresponding to the current VC Annotate line." + (interactive) + (unless (eq major-mode 'vc-annotate-mode) + (error "Not in a VC-Annotate buffer")) + (let ((line (save-restriction + (widen) + (line-number-at-pos))) + (rev vc-annotate-parent-rev)) + (pop-to-buffer + (or (and (buffer-live-p vc-parent-buffer) + vc-parent-buffer) + (and (file-exists-p vc-annotate-parent-file) + (find-file-noselect vc-annotate-parent-file)) + (error "File not found: %s" vc-annotate-parent-file))) + (save-restriction + (widen) + (goto-char (point-min)) + (forward-line (1- line)) + (recenter)) + ;; Issue a warning if the lines might be incorrect. + (cond + ((buffer-modified-p) + (message "Buffer modified; annotated line numbers may be incorrect")) + ((not (eq (vc-state buffer-file-name) 'up-to-date)) + (message "File is not up-to-date; annotated line numbers may be incorrect")) + ((not (equal rev (vc-working-revision buffer-file-name))) + (message "Annotations were for revision %s; line numbers may be incorrect" + rev))))) + (provide 'vc-annotate) ;;; vc-annotate.el ends here |