help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Number of open buffers?


From: Micah Cowan
Subject: Re: Number of open buffers?
Date: 20 Nov 2003 10:10:17 -0800
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.1

Ignoramus1904 <ignoramus1904@NOSPAM.1904.invalid> writes:

> In article <mailman.342.1069348789.399.help-gnu-emacs@gnu.org>, Eli Zaretskii 
> wrote:
> >> From: Ignoramus1904 <ignoramus1904@NOSPAM.1904.invalid>
> >> Newsgroups: gnu.emacs.help
> >> Date: 20 Nov 2003 15:12:12 GMT
> >> 
> >> Sometimes though I have just one file open for quick editing. Then I
> >> do want to exit on \C-x\C-c.
> >> 
> >> I want to modify it so that if the # of open file buffers is more than
> >> one, emacs would ask YES/NO, if less, I exit. I am a very bad lisp
> >> programmer, any suggestions?
> > 
> > The expression (length (buffer-list)) will return the number of
> > buffers in your Emacs session.  You will need to make allowances for
> > the minubuffer and buffers like *Messages* and *scratch* that are
> > always present.  There are usually 6 such buffers, so subtract 6 from
> > what the expression above returns and compare it with 1.

I seem to get more than 6. YMMV, I think, so it can't be relied
upon.

> > 
> > For a more bullet-proof code, walk the buffer list returned by the
> > function buffer-list, and filter out any buffer which doesn't have a
> > file associated with it (its buffer-file-name will be nil).  What is
> > left are the buffers which visit files.
> > 
> > HTH
> > 
> > 
> > 
> 
> Thanks Eli, sounds a little bit above my head to be honest. I do C++
> and Perl and do not know Lisp well. I just thought that there was a
> function like get-number-of-file-buffers, or something like that.

The following is what he's talking about, I think:

(defun get-number-of-file-buffers ()
  (interactive)
  (let (num)
    (setq num 0)
    (dolist (buf (buffer-list))
      (when (buffer-file-name buf)
          (setq num (+ num 1))
      ))
    num
    )
  )

Another possibility would be to have an alias to one or other
emacs that invokes emacs in the way you want (with or without the
"are you sure?" stuff): then just use one name for emacs when you
don't want to be asked, and another for when you do.

-- 
Micah J. Cowan
micah@cowan.name


reply via email to

[Prev in Thread] Current Thread [Next in Thread]