all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* dired-guess-shell-alist-user: How to match folders instead of file types?
@ 2013-06-25 11:24 Marius Hofert
  2013-06-25 11:42 ` Peter Dyballa
  2013-06-25 14:35 ` Doug Lewan
  0 siblings, 2 replies; 13+ messages in thread
From: Marius Hofert @ 2013-06-25 11:24 UTC (permalink / raw)
  To: Emacs help

Hi,

I use ...

(setq dired-guess-shell-alist-user
      '(("\\.zip\\'" "(unzip ? &>/dev/null &)")
("\\.tar.gz\\'" "(tar xzf ? &>/dev/null &)")))

... to execute the corresponding command from dired-mode (on
M-!).  I am wondering how one can match *folders* (in contrast to
file types such as .zip, .tar.gz), such that M-! suggests a
command to be executed on folders?

Cheers,

Marius



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

* Re: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-25 11:24 dired-guess-shell-alist-user: How to match folders instead of file types? Marius Hofert
@ 2013-06-25 11:42 ` Peter Dyballa
  2013-06-25 12:02   ` Marius Hofert
  2013-06-25 14:35 ` Doug Lewan
  1 sibling, 1 reply; 13+ messages in thread
From: Peter Dyballa @ 2013-06-25 11:42 UTC (permalink / raw)
  To: Marius Hofert; +Cc: Emacs help


Am 25.06.2013 um 13:24 schrieb Marius Hofert:

> I am wondering how one can match *folders* (in contrast to
> file types such as .zip, .tar.gz), such that M-! suggests a
> command to be executed on folders?

Insert a pair of a ^directory name\' (or a full path name, whatever is necessary) instead of a regular expression and an action and see what happens!

--
Mit friedvollen Grüßen

  Pete

Without vi there is only GNU Emacs




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

* Re: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-25 11:42 ` Peter Dyballa
@ 2013-06-25 12:02   ` Marius Hofert
  2013-06-25 14:00     ` Peter Dyballa
  2013-06-25 19:28     ` Stephen Berman
  0 siblings, 2 replies; 13+ messages in thread
From: Marius Hofert @ 2013-06-25 12:02 UTC (permalink / raw)
  To: Peter Dyballa; +Cc: Emacs help

Dear Pete,

Thanks for helping.

I am not looking for a particular directory, I am rather looking for
the name of the directory the point is on (in dired-mode).

If the point is on foo.tar.gz and I use M-!, I already get the
suggestion to 'untar' the file the point is on. I am looking for the
same feature, but in the case where the point is on a directory in
order to, say, to zip it. For this, I have to match directories but I
am not sure how this can be done.

Cheers,

Marius



On Tue, Jun 25, 2013 at 1:42 PM, Peter Dyballa <Peter_Dyballa@web.de> wrote:
>
> Am 25.06.2013 um 13:24 schrieb Marius Hofert:
>
>> I am wondering how one can match *folders* (in contrast to
>> file types such as .zip, .tar.gz), such that M-! suggests a
>> command to be executed on folders?
>
> Insert a pair of a ^directory name\' (or a full path name, whatever is necessary) instead of a regular expression and an action and see what happens!
>
> --
> Mit friedvollen Grüßen
>
>   Pete
>
> Without vi there is only GNU Emacs
>



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

* Re: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-25 12:02   ` Marius Hofert
@ 2013-06-25 14:00     ` Peter Dyballa
  2013-06-25 19:28     ` Stephen Berman
  1 sibling, 0 replies; 13+ messages in thread
From: Peter Dyballa @ 2013-06-25 14:00 UTC (permalink / raw)
  To: Marius Hofert; +Cc: Emacs help


Am 25.06.2013 um 14:02 schrieb Marius Hofert:

> For this, I have to match directories but I am not sure how this can be done.

Aren't there only two choices: a regular expression or a simple text string?

--
Mit friedvollen Grüßen

  Pete

"Klingons do not believe in indentation - except perhaps in the skulls of their project managers."




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

* RE: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-25 11:24 dired-guess-shell-alist-user: How to match folders instead of file types? Marius Hofert
  2013-06-25 11:42 ` Peter Dyballa
@ 2013-06-25 14:35 ` Doug Lewan
  1 sibling, 0 replies; 13+ messages in thread
From: Doug Lewan @ 2013-06-25 14:35 UTC (permalink / raw)
  To: Marius Hofert, Emacs help

Well, thanks for this thread.

Now I know about dired-x.

,Douglas
Douglas Lewan
Shubert Ticketing
(201) 489-8600 ext 224

If the majority of cooking accidents happen in the kitchen, then why don't we just cook in other rooms?


-----Original Message-----
From: help-gnu-emacs-bounces+dougl=shubertticketing.com@gnu.org [mailto:help-gnu-emacs-bounces+dougl=shubertticketing.com@gnu.org] On Behalf Of Marius Hofert
Sent: Tuesday, 2013 June 25 07:25
To: Emacs help
Subject: dired-guess-shell-alist-user: How to match folders instead of file types?

Hi,

I use ...

(setq dired-guess-shell-alist-user
      '(("\\.zip\\'" "(unzip ? &>/dev/null &)")
("\\.tar.gz\\'" "(tar xzf ? &>/dev/null &)")))

... to execute the corresponding command from dired-mode (on
M-!).  I am wondering how one can match *folders* (in contrast to
file types such as .zip, .tar.gz), such that M-! suggests a
command to be executed on folders?

Cheers,

Marius


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

* Re: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-25 12:02   ` Marius Hofert
  2013-06-25 14:00     ` Peter Dyballa
@ 2013-06-25 19:28     ` Stephen Berman
  2013-06-25 20:34       ` Marius Hofert
  1 sibling, 1 reply; 13+ messages in thread
From: Stephen Berman @ 2013-06-25 19:28 UTC (permalink / raw)
  To: Marius Hofert; +Cc: Emacs help

On Tue, 25 Jun 2013 14:02:21 +0200 Marius Hofert <marius.hofert@math.ethz.ch> wrote:

> I am not looking for a particular directory, I am rather looking for
> the name of the directory the point is on (in dired-mode).
>
> If the point is on foo.tar.gz and I use M-!, I already get the
> suggestion to 'untar' the file the point is on. I am looking for the
> same feature, but in the case where the point is on a directory in
> order to, say, to zip it. For this, I have to match directories but I
> am not sure how this can be done.

Try adding this to dired-guess-shell-alist-user as the first element in
the list (replacing the shell command invocation with what you want):

(".*" (when (file-directory-p (dired-get-filename))
	"(tar czf ? &>/dev/null &)"))

Steve Berman



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

* Re: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-25 19:28     ` Stephen Berman
@ 2013-06-25 20:34       ` Marius Hofert
  2013-06-27 11:22         ` Marius Hofert
  0 siblings, 1 reply; 13+ messages in thread
From: Marius Hofert @ 2013-06-25 20:34 UTC (permalink / raw)
  To: Stephen Berman; +Cc: Emacs help

Works like a charm, thanks Steve!



On Tue, Jun 25, 2013 at 9:28 PM, Stephen Berman <stephen.berman@gmx.net> wrote:
> On Tue, 25 Jun 2013 14:02:21 +0200 Marius Hofert <marius.hofert@math.ethz.ch> wrote:
>
>> I am not looking for a particular directory, I am rather looking for
>> the name of the directory the point is on (in dired-mode).
>>
>> If the point is on foo.tar.gz and I use M-!, I already get the
>> suggestion to 'untar' the file the point is on. I am looking for the
>> same feature, but in the case where the point is on a directory in
>> order to, say, to zip it. For this, I have to match directories but I
>> am not sure how this can be done.
>
> Try adding this to dired-guess-shell-alist-user as the first element in
> the list (replacing the shell command invocation with what you want):
>
> (".*" (when (file-directory-p (dired-get-filename))
>         "(tar czf ? &>/dev/null &)"))
>
> Steve Berman



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

* Re: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-25 20:34       ` Marius Hofert
@ 2013-06-27 11:22         ` Marius Hofert
  2013-06-27 11:48           ` Stephen Berman
  0 siblings, 1 reply; 13+ messages in thread
From: Marius Hofert @ 2013-06-27 11:22 UTC (permalink / raw)
  To: Stephen Berman; +Cc: Emacs help

... I was too fast. It does indeed work now for the point being on
directories. However, for the other assignments (like using unzip on
.zip files) I don't get the corresponding suggestion anymore...

I put your code in the beginning of 'dired-guess-shell-alist-user' as you said.

Do you know why this happens? [this is with the latest snapshot: GNU
Emacs 24.3.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.6.4)]

Cheers,

Marius


On Tue, Jun 25, 2013 at 10:34 PM, Marius Hofert
<marius.hofert@math.ethz.ch> wrote:
> Works like a charm, thanks Steve!
>
>
>
> On Tue, Jun 25, 2013 at 9:28 PM, Stephen Berman <stephen.berman@gmx.net> wrote:
>> On Tue, 25 Jun 2013 14:02:21 +0200 Marius Hofert <marius.hofert@math.ethz.ch> wrote:
>>
>>> I am not looking for a particular directory, I am rather looking for
>>> the name of the directory the point is on (in dired-mode).
>>>
>>> If the point is on foo.tar.gz and I use M-!, I already get the
>>> suggestion to 'untar' the file the point is on. I am looking for the
>>> same feature, but in the case where the point is on a directory in
>>> order to, say, to zip it. For this, I have to match directories but I
>>> am not sure how this can be done.
>>
>> Try adding this to dired-guess-shell-alist-user as the first element in
>> the list (replacing the shell command invocation with what you want):
>>
>> (".*" (when (file-directory-p (dired-get-filename))
>>         "(tar czf ? &>/dev/null &)"))
>>
>> Steve Berman



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

* Re: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-27 11:22         ` Marius Hofert
@ 2013-06-27 11:48           ` Stephen Berman
  2013-06-27 12:25             ` Marius Hofert
  0 siblings, 1 reply; 13+ messages in thread
From: Stephen Berman @ 2013-06-27 11:48 UTC (permalink / raw)
  To: Marius Hofert; +Cc: Emacs help

On Thu, 27 Jun 2013 13:22:00 +0200 Marius Hofert <marius.hofert@math.ethz.ch> wrote:

> ... I was too fast. It does indeed work now for the point being on
> directories. However, for the other assignments (like using unzip on
> .zip files) I don't get the corresponding suggestion anymore...
>
> I put your code in the beginning of 'dired-guess-shell-alist-user' as you said.

Sorry, I made a silly mistake: the regexp `.*' matches any file, so the
entry needs to be the *last* one in dired-guess-shell-alist-user.  But
then you have to be sure that none of the preceding entries match a
directory.  This will probably be true of any file ending in `.zip',
`.tgz', etc.  If you do have any directories whose names have endings
that could also be used for non-directory files, you could wrap the command
expresion in the corresponding entry in an `unless' form, e.g.:
(".xyz" (unless (file-directory-p (dired-get-filename)) "shell-command") 

Hope that helps.

Steve Berman



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

* Re: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-27 11:48           ` Stephen Berman
@ 2013-06-27 12:25             ` Marius Hofert
  2013-06-27 13:33               ` Stephen Berman
  0 siblings, 1 reply; 13+ messages in thread
From: Marius Hofert @ 2013-06-27 12:25 UTC (permalink / raw)
  To: Stephen Berman; +Cc: Emacs help

On Thu, Jun 27, 2013 at 1:48 PM, Stephen Berman <stephen.berman@gmx.net> wrote:
> On Thu, 27 Jun 2013 13:22:00 +0200 Marius Hofert <marius.hofert@math.ethz.ch> wrote:
>
>> ... I was too fast. It does indeed work now for the point being on
>> directories. However, for the other assignments (like using unzip on
>> .zip files) I don't get the corresponding suggestion anymore...
>>
>> I put your code in the beginning of 'dired-guess-shell-alist-user' as you said.
>
> Sorry, I made a silly mistake: the regexp `.*' matches any file, so the
> entry needs to be the *last* one in dired-guess-shell-alist-user.

Thanks, Steve.

>  But then you have to be sure that none of the preceding entries match a
> directory.  This will probably be true of any file ending in `.zip',
> `.tgz', etc.  If you do have any directories whose names have endings
> that could also be used for non-directory files,

Including or excluding the dot '.'? There are rarely directories named
'My.zip", but I could imagine a directory Myzip to exist.

> you could wrap the command
> expresion in the corresponding entry in an `unless' form, e.g.:
> (".xyz" (unless (file-directory-p (dired-get-filename)) "shell-command")
>

okay, thanks.

Marius


> Hope that helps.
>
> Steve Berman



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

* Re: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-27 12:25             ` Marius Hofert
@ 2013-06-27 13:33               ` Stephen Berman
  2013-06-27 14:28                 ` Marius Hofert
  2013-06-30 19:38                 ` Marius Hofert
  0 siblings, 2 replies; 13+ messages in thread
From: Stephen Berman @ 2013-06-27 13:33 UTC (permalink / raw)
  To: Marius Hofert; +Cc: Emacs help

On Thu, 27 Jun 2013 14:25:20 +0200 Marius Hofert <marius.hofert@math.ethz.ch> wrote:

> On Thu, Jun 27, 2013 at 1:48 PM, Stephen Berman <stephen.berman@gmx.net> wrote:
>> On Thu, 27 Jun 2013 13:22:00 +0200 Marius Hofert
>> <marius.hofert@math.ethz.ch> wrote:
>>
>>> ... I was too fast. It does indeed work now for the point being on
>>> directories. However, for the other assignments (like using unzip on
>>> .zip files) I don't get the corresponding suggestion anymore...
>>>
>>> I put your code in the beginning of 'dired-guess-shell-alist-user' as you said.
>>
>> Sorry, I made a silly mistake: the regexp `.*' matches any file, so the
>> entry needs to be the *last* one in dired-guess-shell-alist-user.
>
> Thanks, Steve.
>
>>  But then you have to be sure that none of the preceding entries match a
>> directory.  This will probably be true of any file ending in `.zip',
>> `.tgz', etc.  If you do have any directories whose names have endings
>> that could also be used for non-directory files,
>
> Including or excluding the dot '.'? There are rarely directories named
> 'My.zip", but I could imagine a directory Myzip to exist.

`Myzip' would be matched by ".*" (the dot here is a special character in
the regexp, matching any character).  But if you have a directory
`My.zip' it would have already been matched by "\.zip\'", so here you'll
have to add the Lisp expression to prevent the wrong shell command from
applying to it.  However, what I wrote previously was insufficient: once
the match is satisfied, no further patterns are tested.  So if you want
the shell command suggestion with `!' in Dired to be unzip on a
non-directory file "Myfile.zip" and to be zip on a directory
"Mydir.zip", the entry in dired-guess-shell-alist-user should be this
(modulo whatever your actual shell commands are):

("\\.zip\\'" (if (file-directory-p (dired-get-filename))
                  "(zip ? &>/dev/null &)"
                "(unzip ? &>/dev/null &)"))

(This time I actually tested it, so I hope it now really works for you!)

Steve Berman



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

* Re: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-27 13:33               ` Stephen Berman
@ 2013-06-27 14:28                 ` Marius Hofert
  2013-06-30 19:38                 ` Marius Hofert
  1 sibling, 0 replies; 13+ messages in thread
From: Marius Hofert @ 2013-06-27 14:28 UTC (permalink / raw)
  To: Stephen Berman; +Cc: Emacs help

Thanks, Steve.

Cheers,

Marius

On Thu, Jun 27, 2013 at 3:33 PM, Stephen Berman <stephen.berman@gmx.net> wrote:
> On Thu, 27 Jun 2013 14:25:20 +0200 Marius Hofert <marius.hofert@math.ethz.ch> wrote:
>
>> On Thu, Jun 27, 2013 at 1:48 PM, Stephen Berman <stephen.berman@gmx.net> wrote:
>>> On Thu, 27 Jun 2013 13:22:00 +0200 Marius Hofert
>>> <marius.hofert@math.ethz.ch> wrote:
>>>
>>>> ... I was too fast. It does indeed work now for the point being on
>>>> directories. However, for the other assignments (like using unzip on
>>>> .zip files) I don't get the corresponding suggestion anymore...
>>>>
>>>> I put your code in the beginning of 'dired-guess-shell-alist-user' as you said.
>>>
>>> Sorry, I made a silly mistake: the regexp `.*' matches any file, so the
>>> entry needs to be the *last* one in dired-guess-shell-alist-user.
>>
>> Thanks, Steve.
>>
>>>  But then you have to be sure that none of the preceding entries match a
>>> directory.  This will probably be true of any file ending in `.zip',
>>> `.tgz', etc.  If you do have any directories whose names have endings
>>> that could also be used for non-directory files,
>>
>> Including or excluding the dot '.'? There are rarely directories named
>> 'My.zip", but I could imagine a directory Myzip to exist.
>
> `Myzip' would be matched by ".*" (the dot here is a special character in
> the regexp, matching any character).  But if you have a directory
> `My.zip' it would have already been matched by "\.zip\'", so here you'll
> have to add the Lisp expression to prevent the wrong shell command from
> applying to it.  However, what I wrote previously was insufficient: once
> the match is satisfied, no further patterns are tested.  So if you want
> the shell command suggestion with `!' in Dired to be unzip on a
> non-directory file "Myfile.zip" and to be zip on a directory
> "Mydir.zip", the entry in dired-guess-shell-alist-user should be this
> (modulo whatever your actual shell commands are):
>
> ("\\.zip\\'" (if (file-directory-p (dired-get-filename))
>                   "(zip ? &>/dev/null &)"
>                 "(unzip ? &>/dev/null &)"))
>
> (This time I actually tested it, so I hope it now really works for you!)
>
> Steve Berman



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

* Re: dired-guess-shell-alist-user: How to match folders instead of file types?
  2013-06-27 13:33               ` Stephen Berman
  2013-06-27 14:28                 ` Marius Hofert
@ 2013-06-30 19:38                 ` Marius Hofert
  1 sibling, 0 replies; 13+ messages in thread
From: Marius Hofert @ 2013-06-30 19:38 UTC (permalink / raw)
  To: Stephen Berman; +Cc: Emacs help

Hi Steve,

If I have marked ('m') several files in dired-mode and use '!', I get
"No file on this line" and no choice to put in a command. I think it
has to do with the "(when (file-directory-p (dired-get-filename)))".
If you just use (".*" "(tar czf all.tar.gz ? &>/dev/null &)") as last
entry, for example, this problem does not appear.

Cheers,

Marius



On Thu, Jun 27, 2013 at 3:33 PM, Stephen Berman <stephen.berman@gmx.net> wrote:
> On Thu, 27 Jun 2013 14:25:20 +0200 Marius Hofert <marius.hofert@math.ethz.ch> wrote:
>
>> On Thu, Jun 27, 2013 at 1:48 PM, Stephen Berman <stephen.berman@gmx.net> wrote:
>>> On Thu, 27 Jun 2013 13:22:00 +0200 Marius Hofert
>>> <marius.hofert@math.ethz.ch> wrote:
>>>
>>>> ... I was too fast. It does indeed work now for the point being on
>>>> directories. However, for the other assignments (like using unzip on
>>>> .zip files) I don't get the corresponding suggestion anymore...
>>>>
>>>> I put your code in the beginning of 'dired-guess-shell-alist-user' as you said.
>>>
>>> Sorry, I made a silly mistake: the regexp `.*' matches any file, so the
>>> entry needs to be the *last* one in dired-guess-shell-alist-user.
>>
>> Thanks, Steve.
>>
>>>  But then you have to be sure that none of the preceding entries match a
>>> directory.  This will probably be true of any file ending in `.zip',
>>> `.tgz', etc.  If you do have any directories whose names have endings
>>> that could also be used for non-directory files,
>>
>> Including or excluding the dot '.'? There are rarely directories named
>> 'My.zip", but I could imagine a directory Myzip to exist.
>
> `Myzip' would be matched by ".*" (the dot here is a special character in
> the regexp, matching any character).  But if you have a directory
> `My.zip' it would have already been matched by "\.zip\'", so here you'll
> have to add the Lisp expression to prevent the wrong shell command from
> applying to it.  However, what I wrote previously was insufficient: once
> the match is satisfied, no further patterns are tested.  So if you want
> the shell command suggestion with `!' in Dired to be unzip on a
> non-directory file "Myfile.zip" and to be zip on a directory
> "Mydir.zip", the entry in dired-guess-shell-alist-user should be this
> (modulo whatever your actual shell commands are):
>
> ("\\.zip\\'" (if (file-directory-p (dired-get-filename))
>                   "(zip ? &>/dev/null &)"
>                 "(unzip ? &>/dev/null &)"))
>
> (This time I actually tested it, so I hope it now really works for you!)
>
> Steve Berman



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

end of thread, other threads:[~2013-06-30 19:38 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-25 11:24 dired-guess-shell-alist-user: How to match folders instead of file types? Marius Hofert
2013-06-25 11:42 ` Peter Dyballa
2013-06-25 12:02   ` Marius Hofert
2013-06-25 14:00     ` Peter Dyballa
2013-06-25 19:28     ` Stephen Berman
2013-06-25 20:34       ` Marius Hofert
2013-06-27 11:22         ` Marius Hofert
2013-06-27 11:48           ` Stephen Berman
2013-06-27 12:25             ` Marius Hofert
2013-06-27 13:33               ` Stephen Berman
2013-06-27 14:28                 ` Marius Hofert
2013-06-30 19:38                 ` Marius Hofert
2013-06-25 14:35 ` Doug Lewan

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.