diff options
author | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2014-12-03 17:09:43 +0100 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2014-12-03 17:18:16 +0100 |
commit | e1adb17ba509a43e9a03a5b367a98b8bc8de8b02 (patch) | |
tree | 59d8f085bb9797b28487ecda510968235b6fad9b | |
parent | e4727803be118739a6badc88e458f34135af5976 (diff) | |
download | org-mode-e1adb17ba509a43e9a03a5b367a98b8bc8de8b02.tar.gz |
Fix custom timestamps during export
* lisp/org.el (org-translate-time): Remove function.
(org-timestamp-translate): Rewrite function so it doesn't use the one
above.
* lisp/ox-ascii.el (org-ascii-clock, org-ascii-planning):
* lisp/ox-html.el (org-html-clock, org-html-planning, org-html-timestamp):
* lisp/ox-latex.el (org-latex-clock, org-latex-planning):
* lisp/ox-texinfo.el (org-texinfo-clock, org-texinfo-planning): Use
`org-timestamp-translate' instead of `org-translate-time'.
* etc/ORG-NEWS: Document function removal.
Reported-by: Ian Barton <lists@wilkesley.net>
<http://permalink.gmane.org/gmane.emacs.orgmode/93127>
-rw-r--r-- | etc/ORG-NEWS | 2 | ||||
-rwxr-xr-x | lisp/org.el | 64 | ||||
-rw-r--r-- | lisp/ox-ascii.el | 13 | ||||
-rw-r--r-- | lisp/ox-html.el | 16 | ||||
-rw-r--r-- | lisp/ox-latex.el | 13 | ||||
-rw-r--r-- | lisp/ox-texinfo.el | 13 |
6 files changed, 38 insertions, 83 deletions
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 3b1da16..5ce53c5 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -65,6 +65,8 @@ docstring for more information. - ~org-latex-format-headline-function~ - ~org-latex-format-inlinetask-function~ ** Removed functions +*** Removed function ~org-translate-time~ +Use ~org-timestamp-translate~ instead. *** Removed function ~org-beamer-insert-options-template~ This function inserted a Beamer specific template at point or in current subtree. Use ~org-export-insert-default-template~ instead, as diff --git a/lisp/org.el b/lisp/org.el index dc7c690..92f0a98 100755 --- a/lisp/org.el +++ b/lisp/org.el @@ -17181,33 +17181,6 @@ The command returns the inserted time stamp." (put-text-property beg end 'end-glyph (make-glyph str))) (put-text-property beg end 'display str)))) -(defun org-translate-time (string) - "Translate all timestamps in STRING to custom format. -But do this only if the variable `org-display-custom-times' is set." - (when org-display-custom-times - (save-match-data - (let* ((start 0) - (re org-ts-regexp-both) - t1 with-hm inactive tf time str beg end) - (while (setq start (string-match re string start)) - (setq beg (match-beginning 0) - end (match-end 0) - t1 (save-match-data - (org-parse-time-string (substring string beg end) t)) - with-hm (and (nth 1 t1) (nth 2 t1)) - inactive (equal (substring string beg (1+ beg)) "[") - tf (funcall (if with-hm 'cdr 'car) - org-time-stamp-custom-formats) - time (org-fix-decoded-time t1) - str (format-time-string - (concat - (if inactive "[" "<") (substring tf 1 -1) - (if inactive "]" ">")) - (apply 'encode-time time)) - string (replace-match str t t string) - start (+ start (length str))))))) - string) - (defun org-fix-decoded-time (time) "Set 0 instead of nil for the first 6 elements of time. Don't touch the rest." @@ -23471,27 +23444,28 @@ TIMESTAMP." split-ts :raw-value (org-element-interpret-data split-ts))))))) (defun org-timestamp-translate (timestamp &optional boundary) - "Apply `org-translate-time' on a TIMESTAMP object. + "Translate TIMESTAMP object to custom format. + +Format string is defined in `org-time-stamp-custom-formats', +which see. + When optional argument BOUNDARY is non-nil, it is either the symbol `start' or `end'. In this case, only translate the starting or ending part of TIMESTAMP if it is a date or time -range. Otherwise, translate both parts." - (if (and (not boundary) - (memq (org-element-property :type timestamp) - '(active-range inactive-range))) - (concat - (org-translate-time - (org-element-property :raw-value - (org-timestamp-split-range timestamp))) - "--" - (org-translate-time - (org-element-property :raw-value - (org-timestamp-split-range timestamp t)))) - (org-translate-time - (org-element-property - :raw-value - (if (not boundary) timestamp - (org-timestamp-split-range timestamp (eq boundary 'end))))))) +range. Otherwise, translate both parts. + +Return timestamp as-is if `org-display-custom-times' is nil or if +it has a `diary' type." + (let ((type (org-element-property :type timestamp))) + (if (or (not org-display-custom-times) (eq type 'diary)) + (org-element-interpret-data timestamp) + (let ((fmt (funcall (if (org-timestamp-has-time-p timestamp) #'cdr #'car) + org-time-stamp-custom-formats))) + (if (and (not boundary) (memq type '(active-range inactive-range))) + (concat (org-timestamp-format timestamp fmt) + "--" + (org-timestamp-format timestamp fmt t)) + (org-timestamp-format timestamp fmt (eq boundary 'end))))))) diff --git a/lisp/ox-ascii.el b/lisp/ox-ascii.el index abbac42..f54c0ce 100644 --- a/lisp/ox-ascii.el +++ b/lisp/ox-ascii.el @@ -1143,9 +1143,7 @@ CONTENTS is nil. INFO is a plist holding contextual information." (org-ascii--justify-element (concat org-clock-string " " - (org-translate-time - (org-element-property :raw-value - (org-element-property :value clock))) + (org-timestamp-translate (org-element-property :value clock)) (let ((time (org-element-property :duration clock))) (and time (concat " => " @@ -1620,18 +1618,15 @@ channel." (list (let ((closed (org-element-property :closed planning))) (when closed (concat org-closed-string " " - (org-translate-time - (org-element-property :raw-value closed))))) + (org-timestamp-translate closed)))) (let ((deadline (org-element-property :deadline planning))) (when deadline (concat org-deadline-string " " - (org-translate-time - (org-element-property :raw-value deadline))))) + (org-timestamp-translate deadline)))) (let ((scheduled (org-element-property :scheduled planning))) (when scheduled (concat org-scheduled-string " " - (org-translate-time - (org-element-property :raw-value scheduled))))))) + (org-timestamp-translate scheduled)))))) " ") planning info)) diff --git a/lisp/ox-html.el b/lisp/ox-html.el index 20d09eb..81e005a 100644 --- a/lisp/ox-html.el +++ b/lisp/ox-html.el @@ -2210,9 +2210,7 @@ channel." </span> </p>" org-clock-string - (org-translate-time - (org-element-property :raw-value - (org-element-property :value clock))) + (org-timestamp-translate (org-element-property :value clock)) (let ((time (org-element-property :duration clock))) (and time (format " <span class=\"timestamp\">(%s)</span>" time))))) @@ -3017,18 +3015,15 @@ channel." (let ((closed (org-element-property :closed planning))) (when closed (format span-fmt org-closed-string - (org-translate-time - (org-element-property :raw-value closed))))) + (org-timestamp-translate closed)))) (let ((deadline (org-element-property :deadline planning))) (when deadline (format span-fmt org-deadline-string - (org-translate-time - (org-element-property :raw-value deadline))))) + (org-timestamp-translate deadline)))) (let ((scheduled (org-element-property :scheduled planning))) (when scheduled (format span-fmt org-scheduled-string - (org-translate-time - (org-element-property :raw-value scheduled))))))) + (org-timestamp-translate scheduled)))))) " ")))) ;;;; Property Drawer @@ -3349,8 +3344,7 @@ information." "Transcode a TIMESTAMP object from Org to HTML. CONTENTS is nil. INFO is a plist holding contextual information." - (let ((value (org-html-plain-text - (org-timestamp-translate timestamp) info))) + (let ((value (org-html-plain-text (org-timestamp-translate timestamp) info))) (format "<span class=\"timestamp-wrapper\"><span class=\"timestamp\">%s</span></span>" (replace-regexp-in-string "--" "–" value)))) diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el index 27eb84c..fb98752 100644 --- a/lisp/ox-latex.el +++ b/lisp/ox-latex.el @@ -1318,9 +1318,7 @@ information." "\\noindent" (format "\\textbf{%s} " org-clock-string) (format (plist-get info :latex-inactive-timestamp-format) - (concat (org-translate-time - (org-element-property :raw-value - (org-element-property :value clock))) + (concat (org-timestamp-translate (org-element-property :value clock)) (let ((time (org-element-property :duration clock))) (and time (format " (%s)" time))))) "\\\\")) @@ -2135,22 +2133,19 @@ information." (concat (format "\\textbf{%s} " org-closed-string) (format (plist-get info :latex-inactive-timestamp-format) - (org-translate-time - (org-element-property :raw-value closed)))))) + (org-timestamp-translate closed))))) (let ((deadline (org-element-property :deadline planning))) (when deadline (concat (format "\\textbf{%s} " org-deadline-string) (format (plist-get info :latex-active-timestamp-format) - (org-translate-time - (org-element-property :raw-value deadline)))))) + (org-timestamp-translate deadline))))) (let ((scheduled (org-element-property :scheduled planning))) (when scheduled (concat (format "\\textbf{%s} " org-scheduled-string) (format (plist-get info :latex-active-timestamp-format) - (org-translate-time - (org-element-property :raw-value scheduled)))))))) + (org-timestamp-translate scheduled))))))) " ") "\\\\")) diff --git a/lisp/ox-texinfo.el b/lisp/ox-texinfo.el index 20508a1..49bc1dc 100644 --- a/lisp/ox-texinfo.el +++ b/lisp/ox-texinfo.el @@ -643,9 +643,7 @@ information." "@noindent" (format "@strong{%s} " org-clock-string) (format (plist-get info :texinfo-inactive-timestamp-format) - (concat (org-translate-time - (org-element-property :raw-value - (org-element-property :value clock))) + (concat (org-timestamp-translate (org-element-property :value clock)) (let ((time (org-element-property :duration clock))) (and time (format " (%s)" time))))) "@*")) @@ -1168,22 +1166,19 @@ information." (concat (format "@strong{%s} " org-closed-string) (format (plist-get info :texinfo-inactive-timestamp-format) - (org-translate-time - (org-element-property :raw-value closed)))))) + (org-timestamp-translate closed))))) (let ((deadline (org-element-property :deadline planning))) (when deadline (concat (format "@strong{%s} " org-deadline-string) (format (plist-get info :texinfo-active-timestamp-format) - (org-translate-time - (org-element-property :raw-value deadline)))))) + (org-timestamp-translate deadline))))) (let ((scheduled (org-element-property :scheduled planning))) (when scheduled (concat (format "@strong{%s} " org-scheduled-string) (format (plist-get info :texinfo-active-timestamp-format) - (org-translate-time - (org-element-property :raw-value scheduled)))))))) + (org-timestamp-translate scheduled))))))) " ") "@*")) |