]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/eshell/em-dirs.el (eshell-expand-multiple-dots): Avoid defadvice.
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 14 Sep 2018 15:14:02 +0000 (11:14 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 14 Sep 2018 15:14:02 +0000 (11:14 -0400)
lisp/eshell/em-dirs.el

index 5180a0700db9ba626d1f9b109b6250be729e2d6e..b7d13ee27b7378083ae772d97ac9c64c39acec00 100644 (file)
@@ -314,16 +314,18 @@ Thus, this does not include the current directory.")
       path)))
 
 (defun eshell-expand-multiple-dots (path)
+  ;; FIXME: This advice recommendation is rather odd: it's somewhat
+  ;; dangerous and it claims not to work with minibuffer-completion, which
+  ;; makes it much less interesting.
   "Convert `...' to `../..', `....' to `../../..', etc..
 
 With the following piece of advice, you can make this functionality
 available in most of Emacs, with the exception of filename completion
 in the minibuffer:
 
-  (defadvice expand-file-name
-    (before translate-multiple-dots
-           (filename &optional directory) activate)
-    (setq filename (eshell-expand-multiple-dots filename)))"
+    (advice-add 'expand-file-name :around #'my-expand-multiple-dots)
+    (defun my-expand-multiple-dots (orig-fun filename &rest args)
+      (apply orig-fun (eshell-expand-multiple-dots filename) args))"
   (while (string-match "\\(?:^\\|/\\)\\.\\.\\(\\.+\\)\\(?:$\\|/\\)" path)
     (let* ((extra-dots (match-string 1 path))
           (len (length extra-dots))