Hello,
I've noticed two problems with ediff.
* It has a problem with spaces in file names
Ediff mistakes the space for the file name/date separator. I've changed
it to look for a tab instead, which worked in my case. But I don't know
if the tab is guaranteed by the diff format and hence whether this is safe
to do.
Incidentally, diff-font-lock-keywords exhibits the same problem
* Applying a patch with relative file names to a directory using
ediff-patch-file will look for the relative file names in the directory of
the patch instead of the to-be-patched directory. That means, unless
those are equal, ediff will unnecessarily prompt for the path of every
file.
Small patches are attached for both.
Regards,
Nikolaj Schumacher
diff -rdU8 lisp_orig/diff-mode.el lisp/diff-mode.el
--- lisp/diff-mode.el 2007-02-25 18:16:25.000000000 +0100
+++ lisp/diff-mode.el 2007-02-25 17:59:32.000000000 +0100
@@ -333,17 +333,17 @@
`(("^\\(@@ -[0-9,]+ \\+[0-9,]+ @@\\)\\(.*\\)$" ;unified
(1 diff-hunk-header-face) (2 diff-function-face))
("^\\(\\*\\{15\\}\\)\\(.*\\)$" ;context
(1 diff-hunk-header-face) (2 diff-function-face))
("^\\*\\*\\* .+ \\*\\*\\*\\*". diff-hunk-header-face) ;context
("^--- .+ ----$" . diff-hunk-header-face) ;context
("^[0-9,]+[acd][0-9,]+$" . diff-hunk-header-face) ;normal
("^---$" . diff-hunk-header-face) ;normal
- ("^\\(---\\|\\+\\+\\+\\|\\*\\*\\*\\) \\(\\S-+\\)\\(.*[^*-]\\)?\n"
+ ("^\\(---\\|\\+\\+\\+\\|\\*\\*\\*\\) \\([^\t]+\\)\\(.*[^*-]\\)?\n"
(0 diff-header-face) (2 diff-file-header-face prepend))
("^\\([-<]\\)\\(.*\n\\)"
(1 diff-indicator-removed-face) (2 diff-removed-face))
("^\\([+>]\\)\\(.*\n\\)"
(1 diff-indicator-added-face) (2 diff-added-face))
("^\\(!\\)\\(.*\n\\)"
(1 diff-indicator-changed-face) (2 diff-changed-face))
("^Index: \\(.+\\).*\n"
diff -rdU8 lisp_orig/ediff-ptch.el lisp/ediff-ptch.el
--- lisp/ediff-ptch.el 2007-02-25 18:16:25.000000000 +0100
+++ lisp/ediff-ptch.el 2007-02-25 18:11:11.000000000 +0100
@@ -311,22 +311,23 @@
(file-exists-p base-dir1))
(message "(file-exists-p base-dir2) %s"
(file-exists-p base-dir2))
;; If both base-dir1 and base-dir2 are relative and exist,
;; assume that
;; these dirs lead to the actual files starting at the present
;; directory. So, we don't strip these relative dirs from the
;; file names. This is a heuristic intended to improve guessing
- (unless (or (file-name-absolute-p base-dir1)
- (file-name-absolute-p base-dir2)
- (not (file-exists-p base-dir1))
- (not (file-exists-p base-dir2)))
+ (let ((default-directory (file-name-directory filename)))
+ (unless (or (file-name-absolute-p base-dir1)
+ (file-name-absolute-p base-dir2)
+ (not (file-exists-p base-dir1))
+ (not (file-exists-p base-dir2)))
(setq base-dir1 ""
- base-dir2 ""))
+ base-dir2 "")))
(or (string= (car proposed-file-names) "/dev/null")
(setcar proposed-file-names
(ediff-file-name-sans-prefix
(car proposed-file-names) base-dir1)))
(or (string=
(cdr proposed-file-names) "/dev/null")
(setcdr proposed-file-names
(ediff-file-name-sans-prefix
--- ediff-ptch.el 2007-02-25 18:10:42.000000000 +0100
+++ ediff-ptch.el 2007-02-25 18:11:11.000000000 +0100
@@ -311,22 +311,23 @@
(file-exists-p base-dir1))
(message "(file-exists-p base-dir2) %s"
(file-exists-p base-dir2))
;; If both base-dir1 and base-dir2 are relative and exist,
;; assume that
;; these dirs lead to the actual files starting at the present
;; directory. So, we don't strip these relative dirs from the
;; file names. This is a heuristic intended to improve guessing
- (unless (or (file-name-absolute-p base-dir1)
- (file-name-absolute-p base-dir2)
- (not (file-exists-p base-dir1))
- (not (file-exists-p base-dir2)))
+ (let ((default-directory (file-name-directory filename)))
+ (unless (or (file-name-absolute-p base-dir1)
+ (file-name-absolute-p base-dir2)
+ (not (file-exists-p base-dir1))
+ (not (file-exists-p base-dir2)))
(setq base-dir1 ""
- base-dir2 ""))
+ base-dir2 "")))
(or (string= (car proposed-file-names) "/dev/null")
(setcar proposed-file-names
(ediff-file-name-sans-prefix
(car proposed-file-names) base-dir1)))
(or (string=
(cdr proposed-file-names) "/dev/null")
(setcdr proposed-file-names
(ediff-file-name-sans-prefix
_______________________________________________
emacs-pretest-bug mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug