emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/files.el


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/files.el
Date: Mon, 28 Mar 2005 14:58:59 -0500

Index: emacs/lisp/files.el
diff -c emacs/lisp/files.el:1.752 emacs/lisp/files.el:1.753
*** emacs/lisp/files.el:1.752   Sat Mar 26 16:47:13 2005
--- emacs/lisp/files.el Mon Mar 28 19:58:58 2005
***************
*** 928,947 ****
  (defvar find-file-default nil
    "Used within `find-file-read-args'.")
  
  (defun find-file-read-args (prompt mustmatch)
    (list (let ((find-file-default
               (and buffer-file-name
!                   (abbreviate-file-name buffer-file-name)))
!             (munge-default-fun
!              (lambda ()
!                (setq minibuffer-default find-file-default)
!                ;; Clear out this hook so it does not interfere
!                ;; with any recursive minibuffer usage.
!                (pop minibuffer-setup-hook)))
!             (minibuffer-setup-hook
!              minibuffer-setup-hook))
!         (add-hook 'minibuffer-setup-hook munge-default-fun)
!         (read-file-name prompt nil default-directory mustmatch))
        t))
  
  (defun find-file (filename &optional wildcards)
--- 928,958 ----
  (defvar find-file-default nil
    "Used within `find-file-read-args'.")
  
+ (defmacro minibuffer-with-setup-hook (fun &rest body)
+   "Add FUN to `minibuffer-setup-hook' while executing BODY.
+ BODY should use the minibuffer at most once.
+ Recursive uses of the minibuffer will not be affected."
+   (declare (indent 1) (debug t))
+   (let ((hook (make-symbol "setup-hook")))
+     `(let ((,hook
+           (lambda ()
+             ;; Clear out this hook so it does not interfere
+             ;; with any recursive minibuffer usage.
+             (remove-hook 'minibuffer-setup-hook ,hook)
+             (,fun))))
+        (unwind-protect
+          (progn
+            (add-hook 'minibuffer-setup-hook ,hook)
+            ,@body)
+        (remove-hook 'minibuffer-setup-hook ,hook)))))
+ 
  (defun find-file-read-args (prompt mustmatch)
    (list (let ((find-file-default
               (and buffer-file-name
!                   (abbreviate-file-name buffer-file-name))))
!         (minibuffer-with-setup-hook
!             (lambda () (setq minibuffer-default find-file-default))
!           (read-file-name prompt nil default-directory mustmatch)))
        t))
  
  (defun find-file (filename &optional wildcards)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]