all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* org-mode and appointments
@ 2008-02-25 23:09 Bernt Hansen
  2008-02-26 16:06 ` Carsten Dominik
  2008-02-26 16:19 ` Bastien
  0 siblings, 2 replies; 15+ messages in thread
From: Bernt Hansen @ 2008-02-25 23:09 UTC (permalink / raw)
  To: emacs-orgmode

Hi Bastien,

I'm using your function for creating appointments:

,----[ my-org-agenda-to-appt in .emacs ]
| ;; Make appt aware of appointments from the agenda
| (defun my-org-agenda-to-appt (&optional filter)
|   "Activate appointments found in `org-agenda-files'.
| When prefixed, prompt for a regular expression and use it as a
| filter: only add entries if they match this regular expression.
| 
| FILTER can be a string. In this case, use this string as a
| regular expression to filter results.
| 
| FILTER can also be an alist, with the car of each cell being
| either 'headline or 'category.  For example:
| 
|   '((headline \"IMPORTANT\")
|     (category \"Work\"))
| 
| will only add headlines containing IMPORTANT or headlines
| belonging to the category \"Work\"."
|   (interactive "P")
|   (require 'org)
|   (require 'calendar)
|   (if (equal filter '(4))
|       (setq filter (read-from-minibuffer "Regexp filter: ")))
|   (let* ((cnt 0) ; count added events
| 	 (today (org-date-to-gregorian
| 		 (time-to-days (current-time))))
| 	 (files org-agenda-files) entries file)
|     ;; Get all entries which may contain an appt
|     (while (setq file (pop files))
|       (setq entries
| 	    (append entries
| 		    (org-agenda-get-day-entries
| 		     file today
| 		     :timestamp :scheduled :deadline))))
|     (setq entries (delq nil entries))
|     ;; Map thru entries and find if they pass thru the filter
|     (mapc
|      (lambda(x)
|        (let* ((evt (org-trim (get-text-property 1 'txt x)))
| 	      (cat (get-text-property 1 'org-category x))
| 	      (tod (get-text-property 1 'time-of-day x))
| 	      (ok (or (null filter)
| 		      (and (stringp filter) (string-match filter evt))
| 		      (and (listp filter)
| 			   (or (string-match
| 				(cadr (assoc 'category filter)) cat)
| 			       (string-match
| 				(cadr (assoc 'headline filter)) evt))))))
| 	 ;; FIXME Shall we remove text-properties for the appt text?
| 	 ;; (setq evt (set-text-properties 0 (length evt) nil evt))
| 	 (when (and ok tod)
| 	   (setq tod (number-to-string tod)
| 		 tod (when (string-match
| 			    "\\([0-9]\\{1,2\\}\\)\\([0-9]\\{2\\}\\)" tod)
| 		       (concat (match-string 1 tod) ":"
| 			       (match-string 2 tod))))
| 	   (appt-add tod evt)
| 	   (setq cnt (1+ cnt))))) entries)
|     (message "Added %d event%s for today" cnt (if (> cnt 1) "s" ""))))
`----

and this has been working pretty well for me.  I really appreciate you
posting this on the list (a long time ago :) )

I have a function key binding to rerun this function when I add new
appointments for today.

,----[ Activate the appointments in .emacs ]
| (global-set-key (kbd "<f9> a") 'my-org-agenda-to-appt)
| ;; Get appointments for today
| (my-org-agenda-to-appt)
| (appt-activate t)
`----

I have the following wishlist items for this function but don't
currently have the lisp skills to fix it.

 - [ ] Clear the appointment list when rerunning the
       my-org-agenda-to-appt
       If I move an appointment to anther day and use f9-a the old
       appointment reminder is still there and bugs me when the time
       rolls around.
       I only use org appointment entries so clearing the list should be
       trivial.  I don't use diary entries anymore.

 - [ ] Future deadlines are reported for today.
       I have an installation deadline at 8PM on Thursday.  Since it's a
       deadline it shows up in my agenda today with a 3 day warning...
       and my-org-agenda-to-appt picks this up and makes an appointment
       for today -- which is incorrect.  I don't need an appointment for
       this until Thursday.

 - [ ] If I leave Emacs running overnight is there a good way to reset
       the appointment list at midnight?


What do I need to do to this function to fix these issues?

Any input is greatly appreciated :)

Regards,
Bernt

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

end of thread, other threads:[~2008-03-03  1:31 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-25 23:09 org-mode and appointments Bernt Hansen
2008-02-26 16:06 ` Carsten Dominik
2008-02-26 16:09   ` Carsten Dominik
2008-02-26 16:14     ` Bernt Hansen
2008-02-27  1:01     ` Russell Adams
2008-02-28  0:55       ` Russell Adams
2008-02-28  1:04         ` Bernt Hansen
2008-02-28  1:06           ` Bernt Hansen
2008-02-28 22:38           ` Russell Adams
2008-02-28 23:17             ` Nick Dokos
2008-03-02 10:13               ` Russell Adams
2008-03-02 17:51                 ` Richard G Riley
2008-03-02 19:33                   ` Russell Adams
2008-03-03  1:31                 ` Bastien
2008-02-26 16:19 ` Bastien

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.