Für Emacs 23.1 funktioniert diese Lösung (mit Standard-Emacs-Einstellungen):
(defadvice minibuffer-complete-and-exit (before minibuffer-complete-and-exit activate)
"translate all occurrences of multiple/into single /"
(let ((unread-command-events t))
(save-excursion (replace-regexp "/+" "/" nil (point-min) (point-max)))
(message nil)))
Ich habe keinen Zugriff auf Emacs 22 *, so dass Sie beide versuchen müssen werde, aber ich vermute, dass die Lösung unten funktioniert.
Für Emacs 21.3, die frühere Antwort funktioniert:
Dies scheint den Trick zu tun (Hit TAB
es in Aktion zu sehen):
(defadvice read-file-name-internal (before read-file-name-internal-reduce-slash activate)
"translate all occurrences of multiple/into single /"
(ad-set-arg 0 (replace-regexp-in-string "/+" "/" (ad-get-arg 0))))
Diese Sie erfordert TAB
geben Sie den bekommen Übersetzung zu passieren.
Edited hinzufügen:
Um den Effekt zu erhalten, ohne TAB
zu schlagen, verwenden Sie diesen Code:
(define-key minibuffer-local-map (kbd "RET") 'exit-minibuffer-reduce-slash-if-in-find-file)
(defun exit-minibuffer-reduce-slash-if-in-find-file()
"when finding a file translate all occurrences of multiple/into single /"
(interactive)
(when (or nil minibuffer-completing-file-name)
(goto-char (point-min))
(while (re-search-forward "//+" nil t)
(replace-match "/")))
(call-interactively 'exit-minibuffer))
guten Tipp. Die Doppel-Slash-Means-Dateisystem-Wurzel passiert mir selten, aber wenn es anschlägt, ist es störend. Das ist praktisch. – Cheeso