(change-log-next-error, change-log-mode): Add support
authorTeodor Zlatanov <tzz@lifelogs.com>
Tue, 5 Aug 2008 18:37:12 +0000 (18:37 +0000)
committerTeodor Zlatanov <tzz@lifelogs.com>
Tue, 5 Aug 2008 18:37:12 +0000 (18:37 +0000)
for `next-error' to call `change-log-goto-source' on named files
in a ChangeLog.

lisp/ChangeLog
lisp/add-log.el

index ed10a85..9b0e652 100644 (file)
@@ -1,3 +1,9 @@
+2008-08-05  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * add-log.el (change-log-next-error, change-log-mode): Add support
+       for `next-error' to call `change-log-goto-source' on named files
+       in a ChangeLog.
+
 2008-08-05  Jay Belanger  <jay.p.belanger@gmail.com>
 
        * calc/calc.el (math-read-number): Handle all C-like languages
index d0a21e8..1acc064 100644 (file)
@@ -511,6 +511,29 @@ comma-separated list."
            (error (format "Cannot find matches for tag `%s' in `%s'"
                           tag file))))))))
 
+(defun change-log-next-error (&optional argp reset)
+  "Move to the Nth (default 1) next match in an Occur mode buffer.
+Compatibility function for \\[next-error] invocations."
+  (interactive "p")
+  (let* ((argp (or argp 0))
+        (count (abs argp))             ; how many cycles
+        (down (< argp 0))              ; are we going down? (is argp negative?)
+        (up (not down))
+        (search-function (if up 're-search-forward 're-search-backward)))
+    
+    ;; set the starting position
+    (goto-char (cond (reset (point-min))
+                    (down (line-beginning-position))
+                    (up (line-end-position))
+                    ((point))))
+    
+    (funcall search-function change-log-file-names-re nil t count))
+  
+  (beginning-of-line)
+  ;; if we found a place to visit...
+  (when (looking-at change-log-file-names-re)
+    (change-log-goto-source)))
+
 (defvar change-log-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map [?\C-c ?\C-p] 'add-log-edit-prev-comment)
@@ -997,7 +1020,10 @@ Runs `change-log-mode-hook'.
   (set (make-local-variable 'beginning-of-defun-function) 
        'change-log-beginning-of-defun)
   (set (make-local-variable 'end-of-defun-function) 
-       'change-log-end-of-defun))
+       'change-log-end-of-defun)
+  ;; next-error function glue
+  (setq next-error-function 'change-log-next-error)
+  (setq next-error-last-buffer (current-buffer)))
 
 (defun change-log-next-buffer (&optional buffer wrap)
   "Return the next buffer in the series of ChangeLog file buffers.