2013-02-06 16 views
10

Biorąc pod uwagę plik diff utworzony za pomocą git format-patch (w zunifikowanym patchacie), w jaki sposób załadować ten sam plik w emacs tak, że mogę użyć Cc Cc, aby przejść do odpowiedniej lokalizacji w pliku, nawet jeśli plik lub nazwa katalogu zawiera spację, w oknach.Jak używać difac emacs ze spacjami?

Mój projekt zawiera wiele nazw plików i katalogów zawierających spacje.

+1

Wygląda na to, że powinieneś zgłosić błąd? Powinien działać, nawet w systemie Windows. – tripleee

+0

Nawet jeśli jest to błąd, powinien istnieć sposób obejścia tego problemu. – Arafangion

+0

Gdy próbuję tego, pojawia się błąd "Nie mogę znaleźć początku pliku". Czy to właśnie otrzymujesz? – razeh

Odpowiedz

3

To wygląda na błąd w Emacs. Oto łatka, która wydaje się naprawić to dla mnie:

=== 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 

będę zobowiązać go do drzewa źródłowego bzr Emacs jeśli nie będzie żadnych sprzeciwów.

+0

Przepraszam za opóźnienie, ale twój patch ma sens, a nie jest tylko oddzielony od białej strony. w razie potrzeby nie są oddzielane tabulatorami. Zastanowię się nad dodaniem do niego nagrody, gdy będę mógł ją przetestować. :) – Arafangion

Powiązane problemy