Skip to content

larkery/orgcal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

org mode android calendar provider

What is it

This is an android calendar & contacts provider designed to sync android’s contentproviders with some flat files.

The calendar provider syncs with org-mode files, and the contacts provider with some arbitrary json format.

Misfeatures

Org-mode timestamps can’t represent the full range of icalendar dates.

I don’t care about this in general, icalendar is weirdly overspecified.

However I do like to be able to write events that are like “every N days / weeks etc, until some date” without replicating headings which is the suggested solution.

To do this I abuse the unsupported syntax:

<2022-07-12 Tue +5d>--<2022-09-06 Tue>

To mean “every 5 days until the end date”.

To make this work you need the following advice:

(defun filter-org-agenda-get-blocks (blocks)
    (with-no-warnings (defvar date))
    (let* ((current (calendar-absolute-from-gregorian date))
           (dotime))
      (cl-loop
       for block in blocks
       do (setq dotime (and block (get-text-property 0 'dotime block)))
       when (and dotime
                 (string-match-p org-repeat-re dotime)
                 (string-match org-ts-regexp dotime))
       when (= current (org-time-string-to-absolute (match-string 1 dotime)
                                                    current
                                                    'future))
       collect block)))

(advice-add 'org-agenda-get-blocks
            :filter-return
            #'filter-org-agenda-get-blocks)