From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thorsten Jolitz Subject: Re: Counting number of children under heading Date: Thu, 17 Apr 2014 14:02:46 +0200 Message-ID: <87d2ggduzd.fsf@gmail.com> References: <871tww444g.fsf@ericabrahamsen.net> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:44508) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wal0d-00005Y-Gp for emacs-orgmode@gnu.org; Thu, 17 Apr 2014 08:01:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wal0Y-0000gn-8S for emacs-orgmode@gnu.org; Thu, 17 Apr 2014 08:01:39 -0400 Received: from plane.gmane.org ([80.91.229.3]:47584) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wal0Y-0000f1-28 for emacs-orgmode@gnu.org; Thu, 17 Apr 2014 08:01:34 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1Wal0V-0006v1-90 for emacs-orgmode@gnu.org; Thu, 17 Apr 2014 14:01:31 +0200 Received: from g231227027.adsl.alicedsl.de ([92.231.227.27]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 17 Apr 2014 14:01:31 +0200 Received: from tjolitz by g231227027.adsl.alicedsl.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 17 Apr 2014 14:01:31 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Eric Abrahamsen writes: > I could have sworn someone posted a thing for this just a week or two > ago, using `org-map-entries' and the identity function, and counting the > results. Ups, that was me ... forgot about it ;) #+begin_quote From: Martin Gross Subject: Re: Get counting of items Newsgroups: gmane.emacs.orgmode To: "emacs-orgmode@gnu.org" Date: Thu, 3 Apr 2014 10:39:18 +0200 (2 weeks, 3 hours, 19 minutes ago) Dear Thorsten > Here is a generalised form: > > #+begin_src emacs-lisp > (defun count-org-items (&optional level operator match scope skip) > "Print a counting of outline items." > (interactive) > (let ((headline-level (or level 1)) ; 1-8 > (op (or operator '=))) ; '>= '<= '> '< > (save-excursion > (message "Counting of level%s%d outline items (match=%s, scope=%s, skip=%s): %d" > op headline-level match scope skip > (eval (append (list '+) > (org-map-entries > `(lambda () (if (,op (org-outline-level) ,headline-level) 1 0)) > match scope skip))))))) > #+end_src > > usage: > > ,---------------------------------------- > | (count-org-items 2 '<= "WAITING" 'file) > `---------------------------------------- > > result: > > ,------------------------------------------------------------------------------ > | "Counting of level<=2 outline items (match=WAITING, scope=file, > | skip=nil): 3" > `------------------------------------------------------------------------------ > > see C-h f org-map-entries for more info, its very powerfull. Use it > with M-: (count-org-items ...) or write a more sophisticated > (interactive) spec. #+end_quote -- cheers, Thorsten