changeset 21815:e3c8e2bb08b9

(dired-at-point): Add autoload cookie. (dired-at-point-require-prefix): New option. (dired-at-point): New command. (dired-at-point-prompter): New function.
author Richard M. Stallman <rms@gnu.org>
date Tue, 28 Apr 1998 23:40:39 +0000
parents 852655b4c6f9
children 4229613c1982
files lisp/ffap.el
diffstat 1 files changed, 46 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ffap.el	Tue Apr 28 23:39:57 1998 +0000
+++ b/lisp/ffap.el	Tue Apr 28 23:40:39 1998 +0000
@@ -1624,6 +1624,52 @@
   (interactive) (ffap-gnus-wrapper '(ffap-menu)))
 
 
+(defcustom dired-at-point-require-prefix nil
+  "*If set, reverses the prefix argument to `dired-at-point'.
+This is nil so neophytes notice ffap.  Experts may prefer to disable
+ffap most of the time."
+  :type 'boolean
+  :group 'ffap
+  :version "20.3")
+
+;;;###autoload
+(defun dired-at-point (&optional filename)
+  "Start Dired, defaulting to file at point.  See `ffap'."
+  (interactive)
+  (if (and (interactive-p)
+	   (if dired-at-point-require-prefix
+	       (not current-prefix-arg)
+	     current-prefix-arg))
+      (let (current-prefix-arg)		; already interpreted
+	(call-interactively dired-function))
+    (or filename (setq filename (dired-at-point-prompter)))
+    (cond
+     ((ffap-url-p filename)
+      (funcall ffap-url-fetcher filename))
+     ((and ffap-dired-wildcards
+	   (string-match ffap-dired-wildcards filename))
+      (dired filename))
+     ((file-exists-p filename)
+      (if (file-directory-p filename)
+	  (dired (expand-file-name filename))
+	(dired (concat (expand-file-name filename) "*"))))
+     ((y-or-n-p "Directory does not exist, create it? ")
+      (make-directory filename)
+      (dired filename))
+     ((error "No such file or directory `%s'" filename)))))
+
+(defun dired-at-point-prompter (&optional guess)
+  ;; Does guess and prompt step for find-file-at-point.
+  ;; Extra complication for the temporary highlighting.
+  (unwind-protect
+      (ffap-read-file-or-url
+       (if ffap-url-regexp "Dired file or URL: " "Dired file: ")
+       (prog1
+	   (setq guess (or guess (ffap-guesser)))
+	 (and guess (ffap-highlight))
+	 ))
+    (ffap-highlight t)))
+
 ;;; Offer default global bindings (`ffap-bindings'):
 
 (defvar ffap-bindings