From: Stefan Monnier Date: Tue, 8 May 2007 16:02:14 +0000 (+0000) Subject: (compilation-find-file): Add a big comment. X-Git-Tag: emacs-pretest-23.0.90~12711 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=44038dc83b6716737ad663fd3e823f35adf8f482;p=emacs.git (compilation-find-file): Add a big comment. --- diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index ce933cb13d5..9266315d98f 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -1863,7 +1863,24 @@ Pop up the buffer containing MARKER and scroll to MARKER if we ask the user." (let* ((name (read-file-name (format "Find this %s in (default %s): " compilation-error filename) - spec-dir filename t nil)) + spec-dir filename t nil + ;; The predicate below is fine when called from + ;; minibuffer-complete-and-exit, but it's too + ;; restrictive otherwise, since it also prevents the + ;; user from completing "fo" to "foo/" when she + ;; wants to enter "foo/bar". + ;; + ;; Try to make sure the user can only select + ;; a valid answer. This predicate may be ignored, + ;; tho, so we still have to double-check afterwards. + ;; TODO: We should probably fix read-file-name so + ;; that it never ignores this predicate, even when + ;; using popup dialog boxes. + ;; (lambda (name) + ;; (if (file-directory-p name) + ;; (setq name (expand-file-name filename name))) + ;; (file-exists-p name)) + )) (origname name)) (cond ((not (file-exists-p name))