Fix defun navigation in vc log view.

This commit is contained in:
Daniel Colascione 2014-01-05 23:33:06 -08:00
parent d5081c1ed8
commit bf6a77f31c
2 changed files with 46 additions and 11 deletions

View file

@ -1,3 +1,17 @@
2014-01-06 Daniel Colascione <dancol@dancol.org>
Fix defun navigation in vc log view.
* vc/log-view.el (log-view-beginning-of-defun): Rewrite to behave
like `beginning-of-defun'.
(log-view-end-of-defun,log-view-end-of-defun-1): Rename old
log-view-end-of-defun to log-view-end-of-defun-1. Replace
log-view-end-of-defun with wrapper that behaves like
`end-of-defun'.
(log-view-extract-comment): Call `log-view-current-entry' directly
instead of relying on broken `log-view-beginning-of-defun'
behavior.
2014-01-06 Paul Eggert <eggert@cs.ucla.edu>
Spelling fixes.

View file

@ -429,18 +429,28 @@ to the beginning of the ARGth following entry.
This is Log View mode's default `beginning-of-defun-function'.
It assumes that a log entry starts with a line matching
`log-view-message-re'."
(if (or (null arg) (zerop arg))
(setq arg 1))
(when (null arg) (setf arg 1))
(if (< arg 0)
(dotimes (_n (- arg))
(log-view-end-of-defun))
(catch 'beginning-of-buffer
(dotimes (_n arg)
(or (log-view-current-entry nil t)
(throw 'beginning-of-buffer nil)))
(point))))
(log-view-end-of-defun (- arg))
(let ((found t))
(while (> arg 0)
(setf arg (1- arg))
(let ((cur-start (log-view-current-entry)))
(setf found
(cond ((null cur-start)
(goto-char (point-min))
nil)
((>= (car cur-start) (point))
(unless (bobp)
(forward-line -1)
(setf arg (1+ arg)))
nil)
(t
(goto-char (car cur-start))
t)))))
found)))
(defun log-view-end-of-defun ()
(defun log-view-end-of-defun-1 ()
"Move forward to the next Log View entry."
(let ((looping t))
(if (looking-at log-view-message-re)
@ -457,6 +467,16 @@ It assumes that a log entry starts with a line matching
(setq looping nil)
(forward-line -1))))))
(defun log-view-end-of-defun (&optional arg)
"Move forward to the next Log View entry.
Works like `end-of-defun'."
(when (null arg) (setf arg 1))
(if (< arg 0)
(log-view-beginning-of-defun (- arg))
(dotimes (_n arg)
(log-view-end-of-defun-1)
t)))
(defvar cvs-minor-current-files)
(defvar cvs-branch-prefix)
(defvar cvs-secondary-branch-prefix)
@ -511,7 +531,8 @@ If called interactively, visit the version at point."
(cond ((eq backend 'SVN)
(forward-line -1)))
(setq en (point))
(log-view-beginning-of-defun)
(or (log-view-current-entry nil t)
(throw 'beginning-of-buffer nil))
(cond ((memq backend '(SCCS RCS CVS MCVS SVN))
(forward-line 2))
((eq backend 'Hg)