[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#8366: wish: include vc-annotate-goto-line
From: |
Stefan Monnier |
Subject: |
bug#8366: wish: include vc-annotate-goto-line |
Date: |
Mon, 28 Mar 2011 13:49:48 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
> I strongly suggesto to include this function.
Juanma, feel free to install such a feature.
> (defun vc-annotate-goto-line ()
> (interactive)
> (unless (eq major-mode 'vc-annotate-mode)
> (error "vc-annotate-goto-line must be used on a VC-Annotate buffer"))
> (let* ((name (buffer-name))
> (base (and (string-match "Annotate \\(.*\\) (rev" name)
AFAIK there should be a better way to find the file.
E.g. vc-parent-buffer.
> (match-string 1 name)))
> (line (save-restriction
> (widen)
> (line-number-at-pos))))
> (with-current-buffer (get-buffer base)
> (pop-to-buffer (current-buffer))
> (save-restriction
> (widen)
> (goto-char (point-min))
> (forward-line (1- line))
> (recenter)))))
Annotate buffer may display a different version that the one of the
checked out file. E.g. because you have local uncommitted changes, or
because you asked for the annotations of an older revision. So line
numbers may not fully match. In general, there's no much we can do
about it, but we should probably try a bit harder than the above,
e.g. by looking for the closest line with the same text as the line
we're looking for. Better would be to ask for a diff between the
annotated revision and the current file and use it to find out the
line-offset to use (for those cases where this method works).
Stefan