comparison lisp/diff-mode.el @ 84468:f3735c349e01

(diff-sanity-check-hunk): Also accept single-line hunks.
author Thien-Thi Nguyen <ttn@gnuvola.org>
date Tue, 11 Sep 2007 06:59:13 +0000
parents 292ec9e3a20c
children c04703192cb6
comparison
equal deleted inserted replaced
84467:2011b0174ead 84468:f3735c349e01
1215 ((not (looking-at diff-hunk-header-re)) 1215 ((not (looking-at diff-hunk-header-re))
1216 (error "Not recognizable hunk header")) 1216 (error "Not recognizable hunk header"))
1217 1217
1218 ;; A context diff. 1218 ;; A context diff.
1219 ((eq (char-after) ?*) 1219 ((eq (char-after) ?*)
1220 (if (not (looking-at "\\*\\{15\\}\\(?: .*\\)?\n\\*\\*\\* \\([0-9]+\\),\\([0-9]+\\) \\*\\*\\*\\*")) 1220 (if (not (looking-at "\\*\\{15\\}\\(?: .*\\)?\n\\*\\*\\* \\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)? \\*\\*\\*\\*"))
1221 (error "Unrecognized context diff first hunk header format") 1221 (error "Unrecognized context diff first hunk header format")
1222 (forward-line 2) 1222 (forward-line 2)
1223 (diff-sanity-check-context-hunk-half 1223 (diff-sanity-check-context-hunk-half
1224 (1+ (- (string-to-number (match-string 2)) 1224 (if (match-string 2)
1225 (string-to-number (match-string 1))))) 1225 (1+ (- (string-to-number (match-string 2))
1226 (if (not (looking-at "--- \\([0-9]+\\),\\([0-9]+\\) ----$")) 1226 (string-to-number (match-string 1))))
1227 1))
1228 (if (not (looking-at "--- \\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)? ----$"))
1227 (error "Unrecognized context diff second hunk header format") 1229 (error "Unrecognized context diff second hunk header format")
1228 (forward-line) 1230 (forward-line)
1229 (diff-sanity-check-context-hunk-half 1231 (diff-sanity-check-context-hunk-half
1230 (1+ (- (string-to-number (match-string 2)) 1232 (if (match-string 2)
1231 (string-to-number (match-string 1)))))))) 1233 (1+ (- (string-to-number (match-string 2))
1234 (string-to-number (match-string 1))))
1235 1)))))
1232 1236
1233 ;; A unified diff. 1237 ;; A unified diff.
1234 ((eq (char-after) ?@) 1238 ((eq (char-after) ?@)
1235 (if (not (looking-at 1239 (if (not (looking-at
1236 "@@ -[0-9]+,\\([0-9]+\\) \\+[0-9]+,\\([0-9]+\\) @@")) 1240 "@@ -[0-9]+\\(?:,\\([0-9]+\\)\\)? \\+[0-9]+\\(?:,\\([0-9]+\\)\\)? @@"))
1237 (error "Unrecognized unified diff hunk header format") 1241 (error "Unrecognized unified diff hunk header format")
1238 (let ((before (string-to-number (match-string 1))) 1242 (let ((before (if (match-string 1) (string-to-number (match-string 1)) 1))
1239 (after (string-to-number (match-string 2)))) 1243 (after (if (match-string 2) (string-to-number (match-string 2)) 1)))
1240 (forward-line) 1244 (forward-line)
1241 (while 1245 (while
1242 (case (char-after) 1246 (case (char-after)
1243 (?\s (decf before) (decf after) t) 1247 (?\s (decf before) (decf after) t)
1244 (?- (decf before) t) 1248 (?- (decf before) t)