Mercurial > emacs
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) |