GNU bug report logs -
#4388
23.1; rmailmm save option does not prompt for filename correctly (patch)
Previous Next
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 4388 in the body.
You can then email your comments to 4388 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>
:
bug#4388
; Package
emacs
.
(Thu, 10 Sep 2009 12:10:04 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
"David J. Biesack" <David.Biesack <at> sas.com>
:
New bug report received and forwarded. Copy sent to
Emacs Bugs <bug-gnu-emacs <at> gnu.org>
.
(Thu, 10 Sep 2009 12:10:04 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):
When decoding an RMAIL message with an attachement,
invoke rmail-view. rmailmm creates a button for each
attached file, such as
Attached application/rtf file: Ch7_2009_08_31.rtf
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.
The attached patch fixes this.
In GNU Emacs 23.1.1 (i386-mingw-nt5.1.2600)
of 2009-07-30 on SOFT-MJASON
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (4.4)'
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: ENU
value of $XMODIFIERS: nil
locale-coding-system: cp1252
default-enable-multibyte-characters: t
Major mode: Shell
Minor modes in effect:
diff-auto-refine-mode: t
display-time-mode: t
shell-dirtrack-mode: t
delete-selection-mode: t
pc-selection-mode: t
show-paren-mode: t
iswitchb-mode: t
compilation-shell-minor-mode: t
tooltip-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
global-auto-composition-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
next-error-follow-minor-mode: t
abbrev-mode: t
Recent input:
M-f M-f S w <return> M-p M-b M-b M-b M-f C-f C-f |
<return> C-p C-e C-b C-b C-x <escape> F C-v C-v C-v
C-v C-v C-v C-v C-v C-x k SPC M-p M-> M-x m a n <return>
d i f f <return> C-x o C-s w h i C-a C-x p C-x b r
m a i l m m . e l . o r C-g C-g C-x , C-x C-f r m a
SPC m m . e l SPC . o SPC <return> C-x , C-x , C-x
, M-x f i n d - f i l e - l SPC <return> r m a i l
m m . e l <return> y M-x h s - s h o w - a l l <return>
C-x p C-x , M-x r m a i l - C-g C-g M-x f i n d - f
i l e - l i SPC <return> r m a i l . <backspace> m
m . e l . o r SPC <return> y C-x p C-e C-x C-g C-g
C-x l C-x o C-x l C-x o C-x ( C-e C-d C-n C-e C-x )
C-x e C-x e C-x e M-4 M-0 M-0 C-x e C-u C-x e C-u C-x
e C-u C-x e C-u C-x e M-< C-a C-x C-s C-x * M-p <return>
C-p C-e C-b C-b C-x <escape> F C-x 1 C-SPC C-n C-n
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n M-w
<down-mouse-1> <mouse-1> C-x 4 , C-n M-x r e p o r
t - b SPC <return>
Recent messages:
History item: 1
rmailmm.patch [2 times]
Fontifying rmailmm.patch... (regexps................)
rmailmm.patch
Fontifying rmailmm.patch... (regexps................)
rmailmm.patch
Mark set
Region saved
8<------8<------8<------8<------8<------8<------8<------8<------8<------8<------8<------8<------
*** rmailmm.el.orig Thu Aug 13 11:54:46 2009
--- rmailmm.el Thu Sep 10 07:56:10 2009
***************
*** 81,86 ****
--- 81,89 ----
(let* ((filename (button-get button 'filename))
(directory (button-get button 'directory))
(data (button-get button 'data)))
+ (setq directory (if (not (string-match "^~$\\.*/" directory))
+ (concat directory "/")
+ directory))
(while (file-exists-p (expand-file-name filename directory))
(let* ((f (file-name-sans-extension filename))
(i 1))
***************
*** 89,98 ****
f (substring f 0 (match-beginning 0))))
(setq filename (concat f "-" (number-to-string i) "."
(file-name-extension filename)))))
(setq filename (expand-file-name
(read-file-name (format "Save as (default: %s): " filename)
directory
! (expand-file-name filename directory))
directory))
(when (file-regular-p filename)
(error (message "File `%s' already exists" filename)))
--- 92,104 ----
f (substring f 0 (match-beginning 0))))
(setq filename (concat f "-" (number-to-string i) "."
(file-name-extension filename)))))
+
(setq filename (expand-file-name
(read-file-name (format "Save as (default: %s): " filename)
directory
! (expand-file-name filename directory)
! nil
! filename)
directory))
(when (file-regular-p filename)
(error (message "File `%s' already exists" filename)))
***************
--
David J. Biesack, SAS
SAS Campus Dr. Cary, NC 27513
www.sas.com (919) 531-7771
Information forwarded
to
bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>
:
bug#4388
; Package
emacs
.
(Fri, 11 Sep 2009 07:00:03 GMT)
Full text and
rfc822 format available.
Message #8 received at 4388 <at> emacsbugs.donarmstrong.com (full text, mbox):
"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?
> + (setq directory (if (not (string-match "^~$\\.*/" directory))
> + (concat directory "/")
> + directory))
What is this supposed to do?
> (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?
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))
Information forwarded
to
bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>
:
bug#4388
; Package
emacs
.
(Fri, 11 Sep 2009 12:45:04 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
"David J. Biesack" <David.Biesack <at> sas.com>
:
Extra info received and forwarded to list. Copy sent to
Emacs Bugs <bug-gnu-emacs <at> gnu.org>
.
(Fri, 11 Sep 2009 12:45:04 GMT)
Full text and
rfc822 format available.
Message #13 received at 4388 <at> emacsbugs.donarmstrong.com (full text, mbox):
> From: Glenn Morris <rgm <at> gnu.org>
> CC: <4388 <at> 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 sent
to
Glenn Morris <rgm <at> gnu.org>
:
You have taken responsibility.
(Tue, 15 Sep 2009 02:50:04 GMT)
Full text and
rfc822 format available.
Notification sent
to
"David J. Biesack" <David.Biesack <at> sas.com>
:
bug acknowledged by developer.
(Tue, 15 Sep 2009 02:50:05 GMT)
Full text and
rfc822 format available.
Message #18 received at 4388-done <at> emacsbugs.donarmstrong.com (full text, mbox):
"David J. Biesack" wrote:
> 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/
Should be fixed now.
> 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.)
I think this is a matter of personal preference, there are advantages
to both styles. The current default is consistent with write-file, and
with rmail-output, so I think it should remain. I have however
simplified the function so that it does not try to come up with a
unique file name, it just lets you decide whether or not you want to
overwrite an existing file.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> emacsbugs.donarmstrong.com
.
(Tue, 13 Oct 2009 14:24:12 GMT)
Full text and
rfc822 format available.
This bug report was last modified 15 years and 331 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.