Subject: bug#11815: closed (Re: bug#10598: 24.0.92; run dired-do-async-shell-command on multiple files individually)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 17 Jul 2012 18:49:02 +0000

Your bug report

#10598: 24.1; Confusing behavior of & in Dired

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
10598: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10598
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#10598: 24.0.92; run dired-do-async-shell-command on multiple files individually
From: Juri Linkov <[email-masked]>
To: "Roland Winkler" <[email-masked]>
Cc: [email-masked]
Date: Tue, 17 Jul 2012 21:41:08 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> Thanks a lot, this looks great to me (and also works for me as expected).

Thanks, installed and closed.

> It would be good if the info node "(emacs)Shell Commands in Dired"
> will be updated, too.

A NEWS entry for this change has no "---" indication that means
it should be documented in the manual before the next release when
the functionality is stabilized and there are no more code changes.

Subject: 24.1; Confusing behavior of & in Dired
From: "John Wiegley" <[email-masked]>
To: [email-masked]
Date: Fri, 29 Jun 2012 03:29:25 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

If I mark several files in dired and press !, I can execute:

    rsync -av * jw:/srv/ftp/pub

I can also run:

    rsync -av * jw:/srv/ftp/pub &

But if I type &, I cannot run:

    rsync -av * jw:/srv/ftp/pub

Because this is equivalent to:

    rsync -av * jw:/srv/ftp/pub * &

It actually decribes this behavior in the docstring: with the & command, if no
& appears at the end of the line (which makes little sense, since I pressed &
to indicate it was asynchronous), Dired adds "* &".  ??

I think that the following equivalence should hold:

    ! COMMAND & == & COMMAND

The fix is simply to change the two lines in `dired-do-async-shell-command'
which append " *" to the end of the line to read:

  (unless (string-match "[ \t][*?][ \t]" command)
    (setq command (concat command " *")))

Thanks,
  John

In GNU Emacs 24.1.1 (x86_64-apple-darwin11.4.0, Carbon Version 1.6.0 AppKit 1138.47)
 of 2012-06-28 on vulcan.local