changeset 94370:28e6262d77ad

Merge from emacs--rel--22 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1129
author Miles Bader <miles@gnu.org>
date Sat, 26 Apr 2008 05:40:19 +0000
parents 86c0a3e7c039 (current diff) d650d458c435 (diff)
children 436ee104782b
files lisp/ChangeLog lisp/diff-mode.el
diffstat 2 files changed, 18 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Apr 26 04:29:42 2008 +0000
+++ b/lisp/ChangeLog	Sat Apr 26 05:40:19 2008 +0000
@@ -1,3 +1,9 @@
+2008-04-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* diff-mode.el (diff-hunk-header-re-unified): Allow elided line counts.
+	(diff-end-of-hunk, diff-unified->context, diff-fixup-modifs)
+	(diff-sanity-check-hunk): Adjust code accordingly.
+
 2008-04-26  Glenn Morris  <rgm@gnu.org>
 
 	* abbrev.el (define-abbrev): Don't use `iff' in doc-strings.
--- a/lisp/diff-mode.el	Sat Apr 26 04:29:42 2008 +0000
+++ b/lisp/diff-mode.el	Sat Apr 26 05:40:19 2008 +0000
@@ -370,7 +370,7 @@
 	    (replace-match "" t t)))))))
 
 (defconst diff-hunk-header-re-unified
-  "^@@ -\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)? \\+\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\) @@")
+  "^@@ -\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)? \\+\\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)? @@")
 
 (defvar diff-font-lock-keywords
   `((,(concat "\\(" diff-hunk-header-re-unified "\\)\\(.*\\)$")
@@ -438,8 +438,8 @@
       (setq style (diff-hunk-style style))
       (goto-char (match-end 0))
       (when (and (not donttrustheader) (match-end 2))
-        (let* ((nold (string-to-number (match-string 2)))
-               (nnew (string-to-number (match-string 4)))
+        (let* ((nold (string-to-number (or (match-string 2) "1")))
+               (nnew (string-to-number (or (match-string 4) "1")))
                (endold
         (save-excursion
           (re-search-forward (if diff-valid-unified-empty-line
@@ -851,11 +851,9 @@
 		(replace-match "***" t t nil 2))
 	    ;; we matched a hunk header
 	    (let ((line1 (match-string 4))
-		  (lines1 (if (match-end 5)
-                              (string-to-number (match-string 5)) 1))
+		  (lines1 (or (match-string 5) "1"))
 		  (line2 (match-string 6))
-		  (lines2 (if (match-end 7)
-                              (string-to-number (match-string 7)) 1))
+		  (lines2 (or (match-string 7) "1"))
 		  ;; Variables to use the special undo function.
 		  (old-undo buffer-undo-list)
 		  (old-end (marker-position end))
@@ -864,7 +862,9 @@
 	      (replace-match
 	       (concat "***************\n*** " line1 ","
 		       (number-to-string (+ (string-to-number line1)
-					    lines1 -1)) " ****"))
+					    (string-to-number lines1)
+					    -1))
+		       " ****"))
 	      (save-restriction
 		(narrow-to-region (line-beginning-position 2)
                                   ;; Call diff-end-of-hunk from just before
@@ -898,7 +898,8 @@
 		  (save-excursion
 		    (insert "--- " line2 ","
 			    (number-to-string (+ (string-to-number line2)
-						 lines2 -1))
+						 (string-to-number lines2)
+						 -1))
                             " ----\n" hunk))
 		  ;;(goto-char (point-min))
 		  (forward-line 1)
@@ -1381,10 +1382,8 @@
        ((eq (char-after) ?@)
         (if (not (looking-at diff-hunk-header-re-unified))
             (error "Unrecognized unified diff hunk header format")
-          (let ((before (if (match-end 2)
-                            (string-to-number (match-string 2)) 1))
-                (after (if (match-end 4)
-                           (string-to-number (match-string 4)) 1)))
+          (let ((before (string-to-number (or (match-string 2) "1")))
+                (after (string-to-number (or (match-string 4) "1"))))
             (forward-line)
             (while
                 (case (char-after)