unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Michael Schierl <schierlm-usenet@gmx.de>
Subject: Re: [Q] Several emacs instances / dired and "derived" buffers
Date: Fri, 18 Jun 2004 10:32:39 +0200	[thread overview]
Message-ID: <wkfz8t9sgo.fsf@smsoft.ixy.de> (raw)
In-Reply-To: 40BD062A.7070205@yahoo.com

Kevin Rodgers <ihs_4664@yahoo.com> writes:
> Michael Schierl wrote:
>  > "Ames Andreas (MPA/DF)" <Andreas.Ames@tenovis.com> writes:

>  >>   if there isn't someone who has already written a command that
>  >>   closes all buffers which are visiting files below a given
>  >>   directory.
>  >
>  > Quick&dirty solution:
>  >
>  > (defun close-all-buffers-below (dir)
>  >   (interactive "DDirectory: ")
>  >   (mapc '(lambda (buf) (if (and (buffer-file-name buf)
>  > 		 	(string= dir
>  > 		 		 (substring (buffer-file-name buf)
>  > 		 			    0
>  > 		 			    (length dir))))
>  > 			   (kill-buffer buf)))
>  > 	(buffer-list)))

After some testing: that solution throws an error if a file name is
shorter than the given directory name.

e.g. when you close all files below c:/program files/my projects/foo/
and have a file open in c:/autoexec.bat. Seems that Emacs' substring
function throws an error if the string is shorter than TO. (I
expected it to return the substring from FROM to the end of the string
then...)

> If dir is "/foo/bar", won't that delete all buffers visiting files under
> "/FoO/bAr" (because string= ignores case)

If string= ignored case, that would not be any problem, since both me
and the OP are using Windows ;-)

> and "/foo/bar1" (because you
> ignore all characters after "/foo/bar") etc. as well?

If you use the autocompletion feature, dir will always end with a
slash. Of course you could adjust it to add the slash manually if
ther is no one yet.

>    (mapc (lambda (buf)
> 	  (let ((file (buffer-file-name buf)))
> 	    (when (and file
> 		       (equal (file-name-directory file) dir))
> 	      (kill-buffer buf))))
> 	(buffer-list))

That one only closes all files *in* a directory and not *below* a
directory. If you specify to close all files below "/foo/bar", a file
like "/foo/bar/src/package/subpackage/blah/Classname.java" will
not be closed as well.

Michael

  parent reply	other threads:[~2004-06-18  8:32 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.7759.1085670886.1061.help-gnu-emacs@gnu.org>
2004-05-27 16:15 ` [Q] Several emacs instances / dired and "derived" buffers Barry Margolin
     [not found] ` <wkaczo1rjv.fsf@smsoft.ixy.de>
     [not found]   ` <40BD062A.7070205@yahoo.com>
2004-06-18  8:32     ` Michael Schierl [this message]
2004-06-21 15:13       ` Kevin Rodgers
2004-05-27 10:22 Ames Andreas (MPA/DF)
2004-05-29 12:11 ` Kai Grossjohann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=wkfz8t9sgo.fsf@smsoft.ixy.de \
    --to=schierlm-usenet@gmx.de \
    --cc=schierlm@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).