From: Arun Persaud <apersaud@lbl.gov>
To: Kyle Meyer <kyle@kyleam.com>
Cc: emacs-orgmode <emacs-orgmode@gnu.org>
Subject: Re: feature request for empty blocks in customized agenda
Date: Sat, 13 Jun 2015 16:57:30 -0700 [thread overview]
Message-ID: <557CC36A.90305@lbl.gov> (raw)
In-Reply-To: <871thfnrh1.fsf@kmlap.domain.org>
Hi
> I'm not sure if someone will find this feature useful enough to
> incorporate. However, even if it doesn't get added, I think you can get
> the behavior you want using org-agenda-finalize-hook. Hopefully the
> snippet below can be a useful starting point.
>
> #+begin_src elisp
> (defun org-agenda-delete-empty-blocks ()
> "Remove empty agenda blocks.
> A block is identified as empty if there are fewer than 2
> non-empty lines in the block (excluding the line with
> `org-agenda-block-separator' characters)."
> (when org-agenda-compact-blocks
> (user-error "Cannot delete empty compact blocks"))
> (setq buffer-read-only nil)
> (save-excursion
> (goto-char (point-min))
> (let* ((blank-line-re "^\\s-*$")
> (content-line-count (if (looking-at-p blank-line-re) 0 1))
> (start-pos (point))
> (block-re (format "%c\\{10,\\}" org-agenda-block-separator)))
> (while (and (not (eobp)) (forward-line))
> (cond
> ((looking-at-p block-re)
> (when (< content-line-count 2)
> (delete-region start-pos (1+ (point-at-bol))))
> (setq start-pos (point))
> (forward-line)
> (setq content-line-count (if (looking-at-p blank-line-re) 0 1)))
> ((not (looking-at-p blank-line-re))
> (setq content-line-count (1+ content-line-count)))))
> (when (< content-line-count 2)
> (delete-region start-pos (point-max)))
> (goto-char (point-min))
> ;; The above strategy can leave a separator line at the beginning
> ;; of the buffer.
> (when (looking-at-p block-re)
> (delete-region (point) (1+ (point-at-eol))))))
> (setq buffer-read-only t))
>
> (add-hook 'org-agenda-finalize-hook #'org-agenda-delete-empty-blocks)
> #+end_src
a starting point seems to be an understatement ;) this seems to work
exactly as intended. Thanks!
Completely blanked out the use of any hooks, although it seems the
obvious thing to do ;)
Thanks again
Arun
prev parent reply other threads:[~2015-06-13 23:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-13 20:11 feature request for empty blocks in customized agenda Arun Persaud
2015-06-13 23:00 ` Kyle Meyer
2015-06-13 23:57 ` Arun Persaud [this message]
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=557CC36A.90305@lbl.gov \
--to=apersaud@lbl.gov \
--cc=emacs-orgmode@gnu.org \
--cc=kyle@kyleam.com \
/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.
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.