emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r115886: Fix defun navigation in vc log view.


From: Daniel Colascione
Subject: [Emacs-diffs] trunk r115886: Fix defun navigation in vc log view.
Date: Mon, 06 Jan 2014 07:34:07 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 115886
revision-id: address@hidden
parent: address@hidden
committer: Daniel Colascione <address@hidden>
branch nick: trunk
timestamp: Sun 2014-01-05 23:33:06 -0800
message:
  Fix defun navigation in vc log view.
modified:
  lisp/ChangeLog                 changelog-20091113204419-o5vbwnq5f7feedwu-1432
  lisp/vc/log-view.el            logview.el-20091113204419-o5vbwnq5f7feedwu-1777
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2014-01-06 06:25:30 +0000
+++ b/lisp/ChangeLog    2014-01-06 07:33:06 +0000
@@ -1,3 +1,17 @@
+2014-01-06  Daniel Colascione  <address@hidden>
+
+       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  <address@hidden>
 
        Spelling fixes.

=== modified file 'lisp/vc/log-view.el'
--- a/lisp/vc/log-view.el       2014-01-01 07:43:34 +0000
+++ b/lisp/vc/log-view.el       2014-01-06 07:33:06 +0000
@@ -429,18 +429,28 @@
 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 @@
        (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 @@
       (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)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]