2013-02-06 2 views
10

Учитывая, что файл diff создан с использованием git format-patch (в формате унифицированного патча), как загрузить тот же файл в emacs, чтобы я мог использовать Cc Cc для перехода в соответствующее место в файле, даже если файл или имя каталога содержит пробел, на окнах.Как использовать emacs diff с пробелами?

В моем проекте содержится много имен файлов и каталогов, содержащих пробелы.

+1

Похоже, вы должны указать ошибку? Он должен работать даже в Windows. – tripleee

+0

Даже если это ошибка, должно быть обходное решение. – Arafangion

+0

Когда я пытаюсь это сделать, я получаю сообщение об ошибке «Не могу найти начало файла». Это то, что вы получаете? – razeh

ответ

3

Это, кажется, ошибка в Emacs. Вот патч, который появляется, чтобы исправить это для меня:

=== modified file 'lisp/vc/diff-mode.el' 
--- lisp/vc/diff-mode.el 2013-01-02 16:13:04 +0000 
+++ lisp/vc/diff-mode.el 2013-02-26 05:08:48 +0000 
@@ -821,9 +821,11 @@ If the OLD prefix arg is passed, tell th 
       (progn (diff-hunk-prev) (point)) 
      (error (point-min))))) 
     (header-files 
-  (if (looking-at "[-*][-*][-*] \\(\\S-+\\)\\(\\s-.*\\)?\n[-+][-+][-+] \\(\\S-+\\)") 
-   (list (if old (match-string 1) (match-string 3)) 
-   (if old (match-string 3) (match-string 1))) 
+   ;; handle filenames with spaces; 
+   ;; cf. diff-font-lock-keywords/diff-file-header-face 
+  (if (looking-at "[-*][-*][-*] \\([^\t]+\\)\t.*\n[-+][-+][-+] \\([^\t]+\\)") 
+   (list (if old (match-string 1) (match-string 2)) 
+   (if old (match-string 2) (match-string 1))) 
     (forward-line 1) nil))) 
     (delq nil 
     (append 

Я совершу его к исходному BZR дерева Emacs, если не будет никаких возражений.

+0

Извините за задержку, однако ваш патч имеет смысл, вместо того, чтобы просто разделять пробелы, вы при необходимости не разделенные табуляцией. Я подумаю о том, чтобы добавить щедрость к нему, когда я смог проверить его. :) – Arafangion

Смежные вопросы