From mboxrd@z Thu Jan 1 00:00:00 1970 From: SAKURAI Masashi Subject: New backend for org-agenda: (Was Calendar-like view of the org-agenda) Date: Mon, 11 Jul 2011 00:41:17 +0900 Message-ID: <20110710154117.881A213C51B@vps1.kiwanami.net> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Return-path: Received: from eggs.gnu.org ([140.186.70.92]:43568) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qfw8K-00026g-7D for emacs-orgmode@gnu.org; Sun, 10 Jul 2011 11:41:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qfw8I-0005ik-Lw for emacs-orgmode@gnu.org; Sun, 10 Jul 2011 11:41:24 -0400 Received: from vps1.kiwanami.net ([182.48.41.71]:34243) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qfw8I-0005iM-Dy for emacs-orgmode@gnu.org; Sun, 10 Jul 2011 11:41:22 -0400 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: bzg@altern.org Cc: emacs-orgmode@gnu.org Hi Bastien, At Fri, 08 Jul 2011 10:53:08 +0200, Bastien wrote: > : > > the re-design of the whole org-agenda-list algorithm > > seems to be needed, because the key function > > org-agenda-get-day-entries requires only one date and the subsequent > > dependent functions also are designed by the API. > > FWIW, I'm all ears -- if you have ideas on how to make org-agenda-list > more effective please let us know, I could try to implement them. How about caching of schedule items? My idea is as follows. When one query schedule items for the first time, the backend parses the org buffer and stores all schedule items with a buffer local variable. From the next time of the query, the backend can use the cache data without parsing the buffer text. Then, because The backend has a model of schedule items, in addition to org-agenda-get-day-entries, we can define some useful API for schedule items, such as org-agenda-get-entries-by-range(begin end). I illustrated this idea: [Diagram for caching schedule items] https://cacoo.com/diagrams/RcNaxILLHDGZlr1L#4B823 Org schedule seems to consist of two types, simple items and repeat items. So, I think that the backend should execute two type queries. [Query and Data Structure] https://cacoo.com/diagrams/RcNaxILLHDGZlr1L#C071E Of course, because I have used orgmode not so long time, this idea is not useful or too simple to handle the org schedules. Here are other implementations: The Howm schedule API (howm-reminder-search) enumerates all schedule items. The API user can filter them easily. However, the enumeration employs full-text searching using grep command, so it takes a long time to be done the query. calfw-howm.el has a cache data and the user can refresh it explicitly. Another schedule API is CalDAV. This is a specification for the schedule server, such as Apple iCal server and Google Calendar. [Calendaring Extensions to WebDAV (CalDAV) RFC 4791] http://www.webdav.org/specs/rfc4791.html http://en.wikipedia.org/wiki/CalDAV This specification has many API for query. It is very heavy spec, but I think it may be a hint for designing query API for orgmode schedule items. Regards -- SAKURAI, Masashi (family, given) m.sakurai@kiwanami.net