Owned.

Khalid Rafi <[email protected]> writes:

> Another idea I have is to use timestamp overlays which Org mode already
> supports. Though it's not a perfect implementation of this feature, I
> hope it's easy to get started with.
>
> Christian Moe <[email protected]> writes:
>
>> Khalid Rafi <[email protected]> writes:
>>
>>> Can I track Org habits with an alternate calendar instead of Gregorian,
>>> such as Islamic calendar? Emacs already supports it. I want to set
>>> timestamps and repeaters according to that calendar.
>>
>> Not out of the box and not easily, I think. Here is an attempt to
>> outline some possible approaches and considerations. Corrections and
>> other ideas are very welcome.
>>  
>> Emacs support for the Islamic calendar is limited. The Emacs calendar
>> displays Gregorian time, but includes functions for converting specific
>> dates to and from the Islamic calendar via "absolute" Julian days
>> according to one method of the several that exist. For example, to find
>> out that the upcoming Ramadan starts on February 18:
>>
>>   #+begin_example
>>   (let ((fast-begins '(9 1 1447)))
>>     (calendar-gregorian-from-absolute
>>       (calendar-islamic-to-absolute fast-begins)))
>>
>>   => (2 18 2026)
>>   #+end_example
>>
>> As Panayotis Manganaris observed elsewhere in this thread, the fact
>> that Org-mode allows putting Emacs diary sexps in timestamps suggests
>> some ways to access those calendar functions, but I think practical
>> use would require some kind of simplifying macro.
>>
>> As for Org timestamps proper, they are based on Gregorian time and the
>> ISO-8601 format.
>>
>> Assuming that one want to select, view, export, set repeaters for and
>> operate on Org timestamps according to the Islamic calendar, support
>> would be needed for:
>>
>> 1. Repeaters and operations on timestamps
>>
>>    Let's take that first, since it strikes me as the main stumbling
>>    block. Everything one does to the timestamp will operate on the
>>    underlying Gregorian representation. For repeaters such as =+1d= or
>>    =+1w=, and operations such as adjusting the date one day
>>    back/forward, this should not matter. For repeaters/adjustments like
>>    =+1m= or =+1y=, results would probably differ from what the user
>>    would expect based on the displayed Islamic date. For example, =[1
>>    Ramadan 1447 +1y]= will not result in 1 Ramadan 1448 but in the date
>>    one Gregorian year hence).
>>
>>    To overcome this would require new Org features to make timestamps
>>    and repeaters work according to the logic of non-Gregorian calendars,
>>    which sounds like a complex undertaking.
>>
>>    Unless and until someone takes on that project, I think people
>>    wanting to use the Islamic calendar in Org as much as possible are
>>    best served by mixed solutions where timestamps can be /entered/ and
>>    /exported/ in Islamic-calendar form, but where Emacs transparently
>>    /displays/ them as Gregorian.
>>
>>    (While display and export of custom timestamps are controlled by the
>>    same variables, as discussed below, on a per-document basis they can
>>    be controlled separately because =Local Variables:= is needed for
>>    display and =#+BIND:= for export.)
>>
>> 2. Entering/selecting Islamic-calendar dates
>>
>>    This only requires an interactive function to read a date via
>>    `calendar-islamic-read-date' from cal-islam.el, which is part of
>>    Emacs, and insert its Gregorian equivalent as an Org timestamp,
>>    which sounds doable.
>>
>> 3. Exporting (and maybe displaying) dates in a custom Islamic-calendar format
>>
>>    The recommended way of changing how timestamps are displayed and
>>    exported (see [[info:org#Custom time format]]) is to customize the 
>> variables
>>    `org-display-custom-times' and `org-timestamp-custom-formats'. The
>>    latter uses a format understood by `format-time-string'
>>    ([[help:format-time-string]]), which does not include any way to access
>>    Emacs calendar conversions as far as I can see.
>>
>>    It can use the locale's rendering via the ~%x~ and ~%c~ specifiers,
>>    however, so this might work if there exists a variant of your system
>>    locale with Islamic calendar, e.g. an imaginary variant US English
>>    locale "en-US.utf8@islamic" or similar. I don't have one, and I'm not
>>    quite sure where to find one and install it, but if you do (check
>>    your /usr/share/i18n/SUPPORTED), I can walk you through the steps to
>>    test it. (Note that locales may implement other ways of calculating
>>    the Islamic calendar with results that differ from the Emacs
>>    calendar; I believe there are ar-SA locales with an "umalqura"
>>    calendar using astronomical calculations).
>>
>>    Otherwise, one way to go would be a feature request to allow a custom
>>    function as the value of `org-timestamp-custom-formats', so we could
>>    use the calendar functions for conversion. This might also be
>>    preferable to the custom-format/locale approach because the results
>>    would be compatible with those of the Emacs calendar.
>>
>> Regards,
>> Christian
>>
>
> -- 
> Khalid Rafi
> Sent with Emacs

-- 
Khalid Rafi
Sent with Emacs

Reply via email to