unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@jurta.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: read-file-name (was: FFAP)
Date: Mon, 09 Nov 2009 12:14:29 +0200	[thread overview]
Message-ID: <87639kt8re.fsf_-_@mail.jurta.org> (raw)
In-Reply-To: <87bpjfiark.fsf@mail.jurta.org> (Juri Linkov's message of "Fri, 06 Nov 2009 23:19:45 +0200")

All completion functions support a list of default values
except `read-file-name'.  The following patch fills this hole.

Index: lisp/minibuffer.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/minibuffer.el,v
retrieving revision 1.93
diff -c -r1.93 minibuffer.el
*** lisp/minibuffer.el	2 Nov 2009 02:06:40 -0000	1.93
--- lisp/minibuffer.el	9 Nov 2009 10:12:38 -0000
***************
*** 1265,1271 ****
  Default name to DEFAULT-FILENAME if user exits the minibuffer with
  the same non-empty string that was inserted by this function.
   (If DEFAULT-FILENAME is omitted, the visited file name is used,
!   except that if INITIAL is specified, that combined with DIR is used.)
  If the user exits with an empty minibuffer, this function returns
  an empty string.  (This can only happen if the user erased the
  pre-inserted contents or if `insert-default-directory' is nil.)
--- 1265,1272 ----
  Default name to DEFAULT-FILENAME if user exits the minibuffer with
  the same non-empty string that was inserted by this function.
   (If DEFAULT-FILENAME is omitted, the visited file name is used,
!   except that if INITIAL is specified, that combined with DIR is used.
!   If DEFAULT-FILENAME is a list of file names, the first file name is used.)
  If the user exits with an empty minibuffer, this function returns
  an empty string.  (This can only happen if the user erased the
  pre-inserted contents or if `insert-default-directory' is nil.)
***************
*** 1308,1314 ****
    (setq dir (abbreviate-file-name dir))
    ;; Likewise for default-filename.
    (if default-filename
!       (setq default-filename (abbreviate-file-name default-filename)))
    (let ((insdef (cond
                   ((and insert-default-directory (stringp dir))
                    (if initial
--- 1309,1317 ----
    (setq dir (abbreviate-file-name dir))
    ;; Likewise for default-filename.
    (if default-filename
!       (if (consp default-filename)
! 	  (setq default-filename (mapcar 'abbreviate-file-name default-filename))
! 	(setq default-filename (abbreviate-file-name default-filename))))
    (let ((insdef (cond
                   ((and insert-default-directory (stringp dir))
                    (if initial
***************
*** 1357,1365 ****
  			       (not (zerop (length file))))
                        (setq default-filename file)
                        (setq dir (file-name-directory dir)))
!                     (if default-filename
!                         (setq default-filename
!                               (expand-file-name default-filename dir)))
                      (setq add-to-history t)
                      (x-file-dialog prompt dir default-filename
  				   dialog-mustmatch
--- 1360,1371 ----
  			       (not (zerop (length file))))
                        (setq default-filename file)
                        (setq dir (file-name-directory dir)))
!                     (when default-filename
! 		      (setq default-filename
! 			    (expand-file-name (if (consp default-filename)
! 						  (car default-filename)
! 						default-filename)
! 					      dir)))
                      (setq add-to-history t)
                      (x-file-dialog prompt dir default-filename
  				   dialog-mustmatch
***************
*** 1371,1376 ****
--- 1377,1384 ----
            ;; it has to mean that the user typed RET with the minibuffer empty.
            ;; In that case, we really want to return ""
            ;; so that commands such as set-visited-file-name can distinguish.
+ 	  (when (consp default-filename)
+ 	    (setq default-filename (car default-filename)))
            (when (eq val default-filename)
              ;; In this case, completing-read has not added an element
              ;; to the history.  Maybe we should.

-- 
Juri Linkov
http://www.jurta.org/emacs/




  parent reply	other threads:[~2009-11-09 10:14 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-06  0:13 find-file-literally-at-point Edward O'Connor
2009-11-06  1:45 ` find-file-literally-at-point Juri Linkov
2009-11-06  4:20   ` FFAP (was: find-file-literally-at-point) Stefan Monnier
2009-11-06  4:41     ` FFAP Miles Bader
2009-11-06 15:20       ` FFAP Stefan Monnier
2009-11-06  4:45     ` FFAP Juri Linkov
2009-11-06  8:50       ` FFAP Eli Zaretskii
2009-11-06 10:37         ` FFAP Juri Linkov
2009-11-06 15:18       ` FFAP Stefan Monnier
2009-11-06 21:19         ` FFAP Juri Linkov
2009-11-07  1:32           ` FFAP Stefan Monnier
2009-11-09  0:52             ` FFAP Juri Linkov
2009-11-09  6:33               ` FFAP Stefan Monnier
2009-11-09 10:09           ` find-file-read-args (was: FFAP) Juri Linkov
2009-11-09 14:28             ` find-file-read-args Stefan Monnier
2009-11-10  0:57               ` find-file-read-args Juri Linkov
2009-11-12  9:56               ` find-file-read-args Juri Linkov
2009-11-12 10:45                 ` find-file-read-args martin rudalics
2009-11-12 10:51                   ` find-file-read-args Juri Linkov
2009-11-15 15:09                     ` find-file-read-args Juri Linkov
2009-11-15 17:28                       ` find-file-read-args martin rudalics
2009-11-16  1:23                         ` find-file-read-args Stefan Monnier
2009-11-17  7:43                           ` find-file-read-args martin rudalics
2009-11-17  9:59                             ` find-file-read-args Juri Linkov
2009-11-17 17:42                               ` dired-dwim-target-directory (was: find-file-read-args) Juri Linkov
2009-11-17 17:43                               ` Juri Linkov
2009-11-23  4:19                               ` find-file-read-args Stefan Monnier
2009-11-23  9:59                                 ` find-file-read-args Juri Linkov
2009-11-23 20:17                                   ` find-file-read-args Stefan Monnier
2009-11-23 21:17                                     ` find-file-read-args Juri Linkov
2009-11-24  2:33                                       ` find-file-read-args Stefan Monnier
2009-11-24 17:08                                         ` find-file-read-args Juri Linkov
2009-11-24 19:40                                           ` find-file-read-args Stefan Monnier
2009-11-23 21:17                                 ` find-file-literally (was: find-file-read-args) Juri Linkov
2009-11-25  2:10                                   ` find-file-literally Stefan Monnier
2009-11-09 10:14           ` Juri Linkov [this message]
2009-11-09 14:31             ` read-file-name Stefan Monnier
2009-11-10  0:55               ` read-file-name Juri Linkov
2009-11-10 17:25                 ` read-file-name Stefan Monnier
2009-11-09 10:30           ` dired-read-dir-and-switches (was: FFAP) Juri Linkov
2009-11-09 10:36           ` M-! M-n should fetch filename (Re: FFAP) Juri Linkov
2009-11-09 14:35             ` Stefan Monnier
2009-11-10  0:59               ` Juri Linkov
2009-11-10 17:29                 ` Stefan Monnier
2009-11-11  0:12                   ` Juri Linkov
2009-11-15 15:12           ` dired-dwim-target (was: FFAP) Juri Linkov
2009-11-23 21:12             ` dired-dwim-target-defaults (was: dired-dwim-target) Juri Linkov
2009-11-09  0:44   ` find-file-literally-at-point Juri Linkov
2009-11-09  2:00     ` find-file-literally-at-point Miles Bader
2009-11-09  2:11       ` find-file-literally-at-point Juri Linkov
2009-11-10  0:49         ` find-file-literally-at-point Juri Linkov
2009-11-09 10:01   ` utf-8-with-signature (was: find-file-literally-at-point) Juri Linkov
2009-11-06 10:20 ` find-file-literally-at-point Eduard Wiebe
2009-11-09  0:55   ` find-file-literally-at-point Juri Linkov
2009-11-09 19:49     ` find-file-literally-at-point Eduard Wiebe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87639kt8re.fsf_-_@mail.jurta.org \
    --to=juri@jurta.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).