Mercurial > emacs
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