bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#4388: 23.1; rmailmm save option does not prompt for filename correct


From: David J. Biesack
Subject: bug#4388: 23.1; rmailmm save option does not prompt for filename correctly (patch)
Date: Fri, 11 Sep 2009 08:38:18 -0400

> From: Glenn Morris <rgm@gnu.org>
> CC: <4388@emacsbugs.donarmstrong.com>
> Date: Fri, 11 Sep 2009 02:54:57 -0400
> 
> "David J. Biesack" wrote:
> 
> > On the attachment button/link, press Enter to invoke rmail-mime-save
> > Currently, this prompts for a location to save the attachment but
> > does not pass the current file name and directory name correctly.
> 
> I don't understand what you mean - can you explain?

Yes, sorry, I was not clear.

I invoke rmail-mime-save and enter a different directory, using
completion (and TAB)... this often results with a directory name that
ends with /, such as c:/djb/attachments/

When I press Enter, I get

Debugger entered--Lisp error: (file-error "Opening output file" "no such file 
or directory" "c:/djb/attachments/")

That is, it appears to be trying to save the attachment file.rtf
as c:/djb/attachments/ and not as c:/djb/attachments/file.rtf

It works correctly if the entered path is a directory name but does not end 
with /

> > +     (setq directory (if (not (string-match "^~$\\.*/" directory))
> > +                         (concat directory "/")
> > +                       directory))
> 
> What is this supposed to do?

Sorry, my bad; it is buggy. It should just append a / if the directory does not 
end with /
(file-name-as-directory (button-get button 'directory)) is better.
 
> >                     (read-file-name (format "Save as (default: %s): " 
> > filename)
> >                                     directory
> > !                                   (expand-file-name filename directory)
> > !                                     nil
> > !                                     filename)
> 
> It seems you basically want the default value to be eg:
> 
> ~/foo.jpg
> 
> rather than just
> 
> ~
> 
> as it is now?

yes.
 
> The current behaviour is consistent with, eg, C-x C-w. Having an
> initial default file part just means more typing if you want to delete
> it and use a different value.
> 
> The only change I would make here is:
> 
> --- rmailmm.el  10 Sep 2009 06:18:23 -0000 1.9
> +++ rmailmm.el  11 Sep 2009 02:09:11 -0000
> @@ -79,7 +79,7 @@
>  (defun rmail-mime-save (button)
>    "Save the attachment using info in the BUTTON."
>    (let* ((filename (button-get button 'filename))
> -   (directory (button-get button 'directory))
> +    (directory (file-name-as-directory (button-get button 'directory)))
>      (data (button-get button 'data)))
>      (while (file-exists-p (expand-file-name filename directory))
>        (let* ((f (file-name-sans-extension filename))

I still prefer to have the file name in the prompt so that I can change it more 
easily
rather than having to type it all in (i.e. change the case or change blanks to 
hyphens or
remove a "-1" or "-2" version string to replace an earlier saved version etc.)

    (setq filename (expand-file-name
                    (read-file-name (format "Save as (default: %s): " filename)
                                    (file-name-as-directory directory)
                                    (expand-file-name filename directory)
                                    nil
                                    filename)
                    directory))

works the way I would like.

-- 
David J. Biesack, SAS
SAS Campus Dr. Cary, NC 27513
www.sas.com    (919) 531-7771





reply via email to

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