unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Creating a directory target for dired-do-copy
@ 2005-01-24 21:32 Luis O. Silva
  0 siblings, 0 replies; 6+ messages in thread
From: Luis O. Silva @ 2005-01-24 21:32 UTC (permalink / raw)


Dear Emacs community,

Let us suppose that you are in dired mode without any marked
files and you type `C', that is (`dired-do-copy'). You're
asked for the directory to copy into or the new file
name. What do you have to do if you want to copy the file to a
nonexistent directory? Is there an easy way to create the
target directory without doing this separately?

Thank you very much in advance
luis


-- 
Luis Octavio Silva Pereyra.
IIMAS-UNAM
Depto. de Métodos Matemáticos y Numéricos
Apdo. postal 20-726
01000 México, D.F.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Creating a directory target for dired-do-copy
       [not found] <mailman.14988.1106600827.27204.help-gnu-emacs@gnu.org>
@ 2005-01-28 15:09 ` Kevin Rodgers
  2005-01-30 18:17   ` Luis O. Silva
  0 siblings, 1 reply; 6+ messages in thread
From: Kevin Rodgers @ 2005-01-28 15:09 UTC (permalink / raw)


Luis O. Silva wrote:
 > Let us suppose that you are in dired mode without any marked
 > files and you type `C', that is (`dired-do-copy'). You're
 > asked for the directory to copy into or the new file
 > name. What do you have to do if you want to copy the file to a
 > nonexistent directory? Is there an easy way to create the
 > target directory without doing this separately?

Could it be as simple as;

(defadvice dired-mark-read-file-name (after make-directory activate)
   "Create non-existent directories for the result, as necessary.
If the returned file name is a directory name (e.g. ends in slash on Unix),
create it."
   (let ((directory (file-name-directory ad-return-value)))
     (unless (file-directory-p directory)
       (make-directory directory t)))
   (when (equal (file-name-as-directory ad-return-value) ad-return-value)
     (make-directory ad-return-value)))

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Creating a directory target for dired-do-copy
  2005-01-28 15:09 ` Creating a directory target for dired-do-copy Kevin Rodgers
@ 2005-01-30 18:17   ` Luis O. Silva
  2005-01-31 17:07     ` Luis O. Silva
       [not found]     ` <mailman.178.1107188275.2841.help-gnu-emacs@gnu.org>
  0 siblings, 2 replies; 6+ messages in thread
From: Luis O. Silva @ 2005-01-30 18:17 UTC (permalink / raw)



Thank you for your message (Fri, 28 Jan 2005 08:09:26 -0700),
in which, among other things, you wrote[1]:

   KR> Could it be as simple as;

   KR> (defadvice dired-mark-read-file-name (after make-directory activate)
   KR>    "Create non-existent directories for the result, as necessary.
   KR> If the returned file name is a directory name (e.g. ends in slash on Unix),
   KR> create it."
   KR>    (let ((directory (file-name-directory ad-return-value)))
   KR>      (unless (file-directory-p directory)
   KR>        (make-directory directory t)))
   KR>    (when (equal (file-name-as-directory  ad-return-value) ad-return-value)
   KR>      (make-directory ad-return-value)))

I'm very grateful for your help, unfortunately it doesn't work
for me. I put the previous snippet in my .emacs file and, after
reloading, I typed `C'  within dired. Then in the minibuffer I
typed after Copy [-p] file-test to:

 ~/temporary/non-existing-file/

where non-existing-file is a non-existing file. Emacs says

File exists: /home/silva/temporary/non-existing-file/

Actually after loading the snippet, Emacs says the same even
for an existing directory!

I tried to correct the code, but it seems that I don't
understand it. Any hint will be enormously appreciated.

Best regards,
luis

Footnotes:
[1] The excerpts of your message are prefixed by "KR>".

-- 
Luis Octavio Silva Pereyra.
IIMAS-UNAM
Depto. de Métodos Matemáticos y Numéricos
Apdo. postal 20-726
01000 México, D.F.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Creating a directory target for dired-do-copy
  2005-01-30 18:17   ` Luis O. Silva
@ 2005-01-31 17:07     ` Luis O. Silva
       [not found]     ` <mailman.178.1107188275.2841.help-gnu-emacs@gnu.org>
  1 sibling, 0 replies; 6+ messages in thread
From: Luis O. Silva @ 2005-01-31 17:07 UTC (permalink / raw)


Hi Kevin,

On Sun, 30 Jan 2005 12:17:25 -0600, "Luis O. Silva" <l.o.silva@mail.ru> said:

   LS> I'm very grateful for your help, unfortunately it
   LS> doesn't work for me. I put the previous snippet in my
   LS> .emacs file and, after reloading, I typed `C' within
   LS> dired. Then in the minibuffer I typed after Copy [-p]
   LS> file-test to:

   LS>  ~/temporary/non-existing-file/

Sorry for answering my own post, but it was written
incorrectly.

   LS> where non-existing-file is a non-existing file.

Here I mean non-existing directory.

   LS>  Emacs says

   LS> File exists: /home/silva/temporary/non-existing-file/

   LS> Actually after loading the snippet, Emacs says the
   LS> same even for an existing directory!

   LS> I tried to correct the code, but it seems that I
   LS> don't understand it. Any hint will be enormously
   LS> appreciated.

Thank you again for any help.
luis


-- 
Luis Octavio Silva Pereyra.
IIMAS-UNAM
Depto. de Métodos Matemáticos y Numéricos
Apdo. postal 20-726
01000 México, D.F.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Creating a directory target for dired-do-copy
       [not found]     ` <mailman.178.1107188275.2841.help-gnu-emacs@gnu.org>
@ 2005-02-02 16:30       ` Kevin Rodgers
  2005-02-03 22:06         ` Luis O. Silva
  0 siblings, 1 reply; 6+ messages in thread
From: Kevin Rodgers @ 2005-02-02 16:30 UTC (permalink / raw)


Luis O. Silva wrote:
 > On Sun, 30 Jan 2005 12:17:25 -0600, "Luis O. Silva" 
<l.o.silva@mail.ru> said:
 >
 >    LS> I'm very grateful for your help, unfortunately it
 >    LS> doesn't work for me. I put the previous snippet in my
 >    LS> .emacs file and, after reloading, I typed `C' within
 >    LS> dired. Then in the minibuffer I typed after Copy [-p]
 >    LS> file-test to:
 >
 >    LS>  ~/temporary/non-existing-file/
 >
 > Sorry for answering my own post, but it was written
 > incorrectly.
 >
 >    LS> where non-existing-file is a non-existing file.
 >
 > Here I mean non-existing directory.

Right, I'd guessed that.

 >    LS>  Emacs says
 >
 >    LS> File exists: /home/silva/temporary/non-existing-file/
 >
 >    LS> Actually after loading the snippet, Emacs says the
 >    LS> same even for an existing directory!
 >
 >    LS> I tried to correct the code, but it seems that I
 >    LS> don't understand it. Any hint will be enormously
 >    LS> appreciated.

It turns out the code tries to be too smart and do too much.  Just
delete the second form in the advice (and the second sentence of its doc
string), leaving:

(defadvice dired-mark-read-file-name (after make-directory activate)
   "Create non-existent directories for the result, as necessary."
   (let ((directory (file-name-directory ad-return-value)))
     (unless (file-directory-p directory)
       (make-directory directory t))))

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Creating a directory target for dired-do-copy
  2005-02-02 16:30       ` Kevin Rodgers
@ 2005-02-03 22:06         ` Luis O. Silva
  0 siblings, 0 replies; 6+ messages in thread
From: Luis O. Silva @ 2005-02-03 22:06 UTC (permalink / raw)


Hi,

On Wed, 02 Feb 2005 09:30:46 -0700, Kevin Rodgers writes:

   KR> It turns out the code tries to be too smart and do too
   KR> much.  Just delete the second form in the advice (and
   KR> the second sentence of its doc string), leaving:
   KR> ...

Thank you. It works exactly as I wished.

Best regards,
luis


-- 
Luis Octavio Silva Pereyra.
IIMAS-UNAM
Depto. de Métodos Matemáticos y Numéricos
Apdo. postal 20-726
01000 México, D.F.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-02-03 22:06 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <mailman.14988.1106600827.27204.help-gnu-emacs@gnu.org>
2005-01-28 15:09 ` Creating a directory target for dired-do-copy Kevin Rodgers
2005-01-30 18:17   ` Luis O. Silva
2005-01-31 17:07     ` Luis O. Silva
     [not found]     ` <mailman.178.1107188275.2841.help-gnu-emacs@gnu.org>
2005-02-02 16:30       ` Kevin Rodgers
2005-02-03 22:06         ` Luis O. Silva
2005-01-24 21:32 Luis O. Silva

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).