From mboxrd@z Thu Jan 1 00:00:00 1970 From: Levin Subject: [PATCH]add a custom function to get date string in agenda Date: Wed, 12 Sep 2007 11:08:07 +0800 Message-ID: <200709121108.08018.zslevin@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IVIbz-0003iz-JK for emacs-orgmode@gnu.org; Tue, 11 Sep 2007 23:09:55 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IVIbw-0003ib-SL for emacs-orgmode@gnu.org; Tue, 11 Sep 2007 23:09:54 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IVIbw-0003iX-PM for emacs-orgmode@gnu.org; Tue, 11 Sep 2007 23:09:52 -0400 Received: from py-out-1112.google.com ([64.233.166.178]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IVIbw-0008Mb-Ar for emacs-orgmode@gnu.org; Tue, 11 Sep 2007 23:09:52 -0400 Received: by py-out-1112.google.com with SMTP id a73so140928pye for ; Tue, 11 Sep 2007 20:09:51 -0700 (PDT) Content-Disposition: inline List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org I have a special need of customizing date string in agenda (the date format string is even not enough because I'd like other date format than Gregorian). So I add a custom variable org-agenda-date-string-function, bind it to org-agenda-date-string to preserve current org behaviour. Then in my org conf file, I add: (defun my-org-agenda-date-string (date) (...)) (setq org-agenda-date-string-function 'my-org-agenda-date-string) Hope it helps. -- Levin diff --git a/lisp/org/org.el b/lisp/org/org.el index 97bde49..3f6c9b5 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -2322,6 +2322,15 @@ FIXME: Not used currently, because of timezone problem." :group 'org-agenda-daily/weekly :type 'string) +(defcustom org-agenda-date-string-function + 'org-agenda-date-string + "Function that obtains a string for displaying date in the agenda. +Used by the daily/weekly agenda and by the timeline. + +This function is passed a date and should return a string." + :group 'org-agenda-daily/weekly + :type 'function) + (defcustom org-agenda-include-diary nil "If non-nil, include in the agenda entries from the Emacs Calendar's diary." :group 'org-agenda-daily/weekly @@ -17565,6 +17574,12 @@ When a buffer is unmodified, it is just killed. When modified, it is saved (or (cdar tbl) (cdr (nth (1- (length org-category-table)) org-category-table)))))) ;;; Agenda timeline +(defun org-agenda-date-string (date) + (format "%-9s %2d %s %4d\n" + (calendar-day-name date) + (extract-calendar-day date) + (calendar-month-name (extract-calendar-month date)) + (extract-calendar-year date))) (defun org-timeline (&optional include-all) "Show a time-sorted view of the entries in the current org file. @@ -17626,10 +17641,8 @@ dates." entry date args))) (if (or rtn (equal d today) org-timeline-show-empty-dates) (progn - (insert (calendar-day-name date) " " - (number-to-string (extract-calendar-day date)) " " - (calendar-month-name (extract-calendar-month date)) " " - (number-to-string (extract-calendar-year date)) "\n") + (insert (funcall org-agenda-date-string-function date) + "\n") ; FIXME: this gives a timezone problem ; (insert (format-time-string org-agenda-date-format ; (calendar-time-from-absolute d 0)) @@ -17806,11 +17819,8 @@ NDAYS defaults to `org-agenda-ndays'." (setq rtnall (append rtnall rtn)))) (if (or rtnall org-agenda-show-all-dates) (progn - (insert (format "%-9s %2d %s %4d\n" - (calendar-day-name date) - (extract-calendar-day date) - (calendar-month-name (extract-calendar-month date)) - (extract-calendar-year date))) + (insert (funcall org-agenda-date-string-function date) + "\n") ; FIXME: this gives a timezone problem ; (insert (format-time-string org-agenda-date-format ; (calendar-time-from-absolute d 0)) "\n")