       (or (looking-at comment-body-regexp)
           (forward-line 1))
       (point))))
+
+(defun diffscuss-find-comment-start ()
+  "Return the start position of the current comment."
+  (if (not (diffscuss-parse-leader))
+      nil
+    (save-excursion
+      (goto-char (diffscuss-find-body-start))
+      (let ((comment-header-regexp
+             (diffscuss-comment-header-regexp (diffscuss-parse-leader))))
+        (beginning-of-line)
+        (forward-line -1)
+        (while (and (looking-at comment-header-regexp)
+                    (zerop (forward-line -1))))
+        (if (not (looking-at comment-header-regexp))
+            (forward-line 1))
+        (point)))))
 
 (defun diffscuss-find-body-end ()
   "Return the end position of the current comment."

(defun diffscuss-get-new-rev ()
    (diffscuss-get-rev "^index [^.]+\\.\\.\\([^. \n\r]+\\)"))

;; Define the mode.

(defun diffscuss-mode ()

    (define-key map "\C-j" 'diffscuss-newline-and-indent)
    (define-key map (kbd "RET") 'diffscuss-newline-and-indent)
    (define-key map "\C-o" 'diffscuss-open-line)

    ;; navigation
    (define-key map "\C-cn" 'diffscuss-next-comment)
    (define-key map "\C-cp" 'diffscuss-previous-comment)

    map)
  "Keymap for diffscuss mode.")

