diff options
| author | Karoly Lorentey | 2005-06-15 12:57:51 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2005-06-15 12:57:51 +0000 |
| commit | ef85512e51f043d73788f00a2aed13cccde0682c (patch) | |
| tree | fc1fa1378533250f260ef8eaa9a84ae882d9df84 /lisp/ediff-diff.el | |
| parent | 8736257554f49445f7b4402ac7a9436b38ce6452 (diff) | |
| parent | ef88a9999004e6c26148c8d280d6a41f623d7249 (diff) | |
| download | emacs-ef85512e51f043d73788f00a2aed13cccde0682c.tar.gz emacs-ef85512e51f043d73788f00a2aed13cccde0682c.zip | |
Merged from miles@gnu.org--gnu-2005 (patch 80-82, 350-422)
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-350
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-351
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-352
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-353
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-354
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-355
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-356
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-357
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-358
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-359
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-360
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-361
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-362
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-363
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-364
Remove "-face" suffix from widget faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-366
Remove "-face" suffix from change-log faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-367
Remove "-face" suffix from compilation faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-368
Remove "-face" suffix from diff-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-369
lisp/longlines.el (longlines-visible-face): Face removed
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-370
Remove "-face" suffix from woman faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-371
Remove "-face" suffix from whitespace-highlight face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Remove "-face" suffix from ruler-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-373
Remove "-face" suffix from show-paren faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-374
Remove "-face" suffix from log-view faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-375
Remove "-face" suffix from smerge faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-376
Remove "-face" suffix from show-tabs faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377
Remove "-face" suffix from highlight-changes faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-378
Remove "-face" suffix from and downcase info faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-379
Remove "-face" suffix from pcvs faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-380
Update uses of renamed pcvs faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-381
Tweak ChangeLog
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-382
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-383
Remove "-face" suffix from strokes-char face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-384
Remove "-face" suffix from compare-windows face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-385
Remove "-face" suffix from calendar faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-386
Remove "-face" suffix from diary-button face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-387
Remove "-face" suffix from testcover faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Remove "-face" suffix from viper faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Remove "-face" suffix from org faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-390
Remove "-face" suffix from sgml-namespace face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-391
Remove "-face" suffix from table-cell face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-392
Remove "-face" suffix from tex-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-393
Remove "-face" suffix from texinfo-heading face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-394
Remove "-face" suffix from flyspell faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-395
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-396
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-397
Remove "-face" suffix from gomoku faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-398
Remove "-face" suffix from mpuz faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-399
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-400
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-401
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-402
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-403
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-404
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-405
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-406
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-407
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-408
Remove "-face" suffix from Buffer-menu-buffer face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-409
Remove "-face" suffix from antlr-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-410
Remove "-face" suffix from ebrowse faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-411
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-412
Remove "-face" suffix from flymake faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-413
Remove "-face" suffix from idlwave faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-414
Remove "-face" suffix from sh-script faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-415
Remove "-face" suffix from vhdl-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-416
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-417
Remove "-face" suffix from which-func face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-418
Remove "-face" suffix from cperl-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-419
Remove "-face" suffix from ld-script faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-420
Fix cperl-mode font-lock problem
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-421
Tweak which-func face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-422
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-80
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-81
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-82
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-350
Diffstat (limited to 'lisp/ediff-diff.el')
| -rw-r--r-- | lisp/ediff-diff.el | 62 |
1 files changed, 41 insertions, 21 deletions
diff --git a/lisp/ediff-diff.el b/lisp/ediff-diff.el index 4c13e6fc0e1..ec496301405 100644 --- a/lisp/ediff-diff.el +++ b/lisp/ediff-diff.el | |||
| @@ -1353,7 +1353,7 @@ Symlinks and the likes are not handled. | |||
| 1353 | If FILTER-RE is non-nil, recursive checking in directories | 1353 | If FILTER-RE is non-nil, recursive checking in directories |
| 1354 | affects only files whose names match the expression." | 1354 | affects only files whose names match the expression." |
| 1355 | ;; Normalize empty filter RE to nil. | 1355 | ;; Normalize empty filter RE to nil. |
| 1356 | (unless (length filter-re) (setq filter-re nil)) | 1356 | (unless (> (length filter-re) 0) (setq filter-re nil)) |
| 1357 | ;; Indicate progress | 1357 | ;; Indicate progress |
| 1358 | (message "Comparing '%s' and '%s' modulo '%s'" d1 d2 filter-re) | 1358 | (message "Comparing '%s' and '%s' modulo '%s'" d1 d2 filter-re) |
| 1359 | (cond | 1359 | (cond |
| @@ -1367,27 +1367,11 @@ affects only files whose names match the expression." | |||
| 1367 | (if (eq ediff-recurse-to-subdirectories 'yes) | 1367 | (if (eq ediff-recurse-to-subdirectories 'yes) |
| 1368 | (let* ((all-entries-1 (directory-files d1 t filter-re)) | 1368 | (let* ((all-entries-1 (directory-files d1 t filter-re)) |
| 1369 | (all-entries-2 (directory-files d2 t filter-re)) | 1369 | (all-entries-2 (directory-files d2 t filter-re)) |
| 1370 | (entries-1 (remove-if (lambda (s) | 1370 | (entries-1 (ediff-delete-all-matches "^\\.\\.?$" all-entries-1)) |
| 1371 | (string-match "^\\.\\.?$" | 1371 | (entries-2 (ediff-delete-all-matches "^\\.\\.?$" all-entries-2)) |
| 1372 | (file-name-nondirectory s))) | ||
| 1373 | all-entries-1)) | ||
| 1374 | (entries-2 (remove-if (lambda (s) | ||
| 1375 | (string-match "^\\.\\.?$" | ||
| 1376 | (file-name-nondirectory s))) | ||
| 1377 | all-entries-2)) | ||
| 1378 | ) | 1372 | ) |
| 1379 | ;; First, check only the names (works quickly and ensures a | 1373 | |
| 1380 | ;; precondition for subsequent code) | 1374 | (ediff-same-file-contents-lists entries-1 entries-2 filter-re) |
| 1381 | (if (and (= (length entries-1) (length entries-2)) | ||
| 1382 | (every (lambda (a b) (equal (file-name-nondirectory a) | ||
| 1383 | (file-name-nondirectory b))) | ||
| 1384 | entries-1 entries-2)) | ||
| 1385 | ;; With name equality established, compare the entries | ||
| 1386 | ;; through recursion. | ||
| 1387 | (every (lambda (a b) | ||
| 1388 | (ediff-same-contents a b filter-re)) | ||
| 1389 | entries-1 entries-2) | ||
| 1390 | ) | ||
| 1391 | )) | 1375 | )) |
| 1392 | ) ; end of the directories case | 1376 | ) ; end of the directories case |
| 1393 | ;; D1 & D2 are both files => compare directly | 1377 | ;; D1 & D2 are both files => compare directly |
| @@ -1398,6 +1382,42 @@ affects only files whose names match the expression." | |||
| 1398 | ) | 1382 | ) |
| 1399 | ) | 1383 | ) |
| 1400 | 1384 | ||
| 1385 | ;; If lists have the same length and names of files are pairwise equal | ||
| 1386 | ;; (removing the directories) then compare contents pairwise. | ||
| 1387 | ;; True if all contents are the same; false otherwise | ||
| 1388 | (defun ediff-same-file-contents-lists (entries-1 entries-2 filter-re) | ||
| 1389 | ;; First, check only the names (works quickly and ensures a | ||
| 1390 | ;; precondition for subsequent code) | ||
| 1391 | (if (and (= (length entries-1) (length entries-2)) | ||
| 1392 | (equal (mapcar 'file-name-nondirectory entries-1) | ||
| 1393 | (mapcar 'file-name-nondirectory entries-2))) | ||
| 1394 | ;; With name equality established, compare the entries | ||
| 1395 | ;; through recursion. | ||
| 1396 | (let ((continue t)) | ||
| 1397 | (while (and entries-1 continue) | ||
| 1398 | (if (ediff-same-contents | ||
| 1399 | (car entries-1) (car entries-2) filter-re) | ||
| 1400 | (setq entries-1 (cdr entries-1) | ||
| 1401 | entries-2 (cdr entries-2)) | ||
| 1402 | (setq continue nil)) | ||
| 1403 | ) | ||
| 1404 | ;; if reached the end then lists are equal | ||
| 1405 | (null entries-1)) | ||
| 1406 | ) | ||
| 1407 | ) | ||
| 1408 | |||
| 1409 | |||
| 1410 | ;; ARG1 is a regexp, ARG2 is a list of full-filenames | ||
| 1411 | ;; Delete all entries that match the regexp | ||
| 1412 | (defun ediff-delete-all-matches (regex file-list-list) | ||
| 1413 | (let (result elt) | ||
| 1414 | (while file-list-list | ||
| 1415 | (setq elt (car file-list-list)) | ||
| 1416 | (or (string-match regex (file-name-nondirectory elt)) | ||
| 1417 | (setq result (cons elt result))) | ||
| 1418 | (setq file-list-list (cdr file-list-list))) | ||
| 1419 | (reverse result))) | ||
| 1420 | |||
| 1401 | 1421 | ||
| 1402 | ;;; Local Variables: | 1422 | ;;; Local Variables: |
| 1403 | ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun) | 1423 | ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun) |