Merge branch 'master' of orgmode.org:org-mode

This commit is contained in:
David Arroyo Menendez 2013-11-16 20:12:58 +01:00
commit 2de63285fe
22 changed files with 291 additions and 247 deletions

View File

@ -477,6 +477,7 @@ This is the compiled version of the format.")
(defvar org-colview-initial-truncate-line-value nil
"Remember the value of `truncate-lines' across colview.")
;;;###autoload
(defun org-columns-remove-overlays ()
"Remove all currently active column overlays."
(interactive)
@ -820,6 +821,7 @@ around it."
(let ((value (get-char-property (point) 'org-columns-value)))
(org-open-link-from-string value arg)))
;;;###autoload
(defun org-columns-get-format-and-top-level ()
(let (fmt)
(when (condition-case nil (org-back-to-heading) (error nil))
@ -1091,6 +1093,7 @@ Don't set this, this is meant for dynamic scoping.")
(org-overlay-display ov (format fmt val))))))
org-columns-overlays))))
;;;###autoload
(defun org-columns-compute (property)
"Sum the values of property PROPERTY hierarchically, for the entire buffer."
(interactive)
@ -1187,6 +1190,7 @@ Don't set this, this is meant for dynamic scoping.")
(setq sum (+ (string-to-number (pop l)) (/ sum 60))))
sum)))
;;;###autoload
(defun org-columns-number-to-string (n fmt &optional printf)
"Convert a computed column number to a string value, according to FMT."
(cond

View File

@ -32,6 +32,8 @@
;;; Code:
(require 'ob)
(require 'cc-mode)
(eval-when-compile
(require 'cl))
(declare-function org-entry-get "org"
(pom property &optional inherit literal-nil))

View File

@ -45,6 +45,8 @@
;;; Code:
(require 'ob)
(eval-when-compile
(require 'cl))
(declare-function cider-current-ns "ext:cider-interaction" ())
(declare-function nrepl-send-string-sync "ext:nrepl-client" (input &optional ns session))

View File

@ -47,15 +47,13 @@
:group 'org-babel
:type 'string)
(defcustom org-babel-python-mode 'python
(defcustom org-babel-python-mode
(if (or (featurep 'xemacs) (featurep 'python-mode)) 'python-mode 'python)
"Preferred python mode for use in running python interactively.
This will typically be either 'python or 'python-mode."
:group 'org-babel
:version "24.4"
:package-version '(Org . "8.0")
:set (lambda (var val)
(set-default var (if (or (featurep 'xemacs) (featurep 'python-mode))
'python-mode 'python)))
:type 'symbol)
(defvar org-src-preserve-indentation)

View File

@ -27,8 +27,6 @@
;;; Code:
(require 'org-src)
(eval-when-compile
(require 'cl))
(declare-function org-edit-special "org" (&optional arg))
(declare-function org-link-escape "org" (text &optional table))

View File

@ -69,6 +69,7 @@
(declare-function calendar-persian-date-string "cal-persia" (&optional date))
(declare-function calendar-check-holidays "holidays" (date))
(declare-function org-columns-remove-overlays "org-colview" ())
(declare-function org-datetree-find-date-create "org-datetree"
(date &optional keep-restriction))
(declare-function org-columns-quit "org-colview" ())
@ -5452,6 +5453,7 @@ This function is invoked if `org-agenda-todo-ignore-deadlines',
(>= days n)
(<= days n))))
;;;###autoload
(defun org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item
(&optional end)
"Do we have a reason to ignore this TODO entry because it has a time stamp?"

View File

@ -135,6 +135,7 @@ information."
(match-string 1))
(t org-archive-location))))))
;;;###autoload
(defun org-add-archive-files (files)
"Splice the archive files into the list of files.
This implies visiting all these files and finding out what the

View File

@ -1873,6 +1873,7 @@ will be easy to remove."
(overlay-put ov 'end-glyph (make-glyph tx)))
(push ov org-clock-overlays)))
;;;###autoload
(defun org-clock-remove-overlays (&optional beg end noremove)
"Remove the occur highlights from the buffer.
BEG and END are ignored. If NOREMOVE is nil, remove this function
@ -2145,6 +2146,7 @@ If you can combine both, the month starting day will have priority."
((= n 3) "3rd")
((= n 4) "4th")))
;;;###autoload
(defun org-clocktable-shift (dir n)
"Try to shift the :block date of the clocktable at point.
Point must be in the #+BEGIN: line of a clocktable, or this function
@ -2754,6 +2756,7 @@ This function is made for clock tables."
(defvar org-clock-loaded nil
"Was the clock file loaded?")
;;;###autoload
(defun org-clock-update-time-maybe ()
"If this is a CLOCK line, update it and return t.
Otherwise, return nil."

View File

@ -323,6 +323,7 @@ for the duration of the command.")
(defvar org-colview-initial-truncate-line-value nil
"Remember the value of `truncate-lines' across colview.")
;;;###autoload
(defun org-columns-remove-overlays ()
"Remove all currently active column overlays."
(interactive)
@ -670,6 +671,7 @@ around it."
(let ((value (get-char-property (point) 'org-columns-value)))
(org-open-link-from-string value arg)))
;;;###autoload
(defun org-columns-get-format-and-top-level ()
(let ((fmt (org-columns-get-format)))
(org-columns-goto-top-level)
@ -951,6 +953,8 @@ display, or in the #+COLUMNS line of the current buffer."
(defvar org-inlinetask-min-level
(if (featurep 'org-inlinetask) org-inlinetask-min-level 15))
;;;###autoload
(defun org-columns-compute (property)
"Sum the values of property PROPERTY hierarchically, for the entire buffer."
(interactive)
@ -1054,6 +1058,7 @@ display, or in the #+COLUMNS line of the current buffer."
(setq sum (+ (string-to-number (pop l)) (/ sum 60))))
sum)))
;;;###autoload
(defun org-columns-number-to-string (n fmt &optional printf)
"Convert a computed column number to a string value, according to FMT."
(cond

View File

@ -44,12 +44,10 @@
(require 'org)
(require 'doc-view)
(declare-function doc-view-goto-page "ext:doc-view" (page))
(declare-function image-mode-window-get "ext:image-mode"
(prop &optional winprops))
(org-autoload "doc-view" '(doc-view-goto-page))
(declare-function doc-view-goto-page "doc-view" (page))
(declare-function image-mode-window-get "image-mode" (prop &optional winprops))
(org-add-link-type "docview" 'org-docview-open 'org-docview-export)
(add-hook 'org-store-link-functions 'org-docview-store-link)

View File

@ -3550,100 +3550,97 @@ Assume point is at the beginning of the timestamp."
(defun org-element-timestamp-interpreter (timestamp contents)
"Interpret TIMESTAMP object as Org syntax.
CONTENTS is nil."
;; Use `:raw-value' if specified.
(or (org-element-property :raw-value timestamp)
;; Otherwise, build timestamp string.
(let* ((repeat-string
(concat
(case (org-element-property :repeater-type timestamp)
(cumulate "+") (catch-up "++") (restart ".+"))
(let ((val (org-element-property :repeater-value timestamp)))
(and val (number-to-string val)))
(case (org-element-property :repeater-unit timestamp)
(hour "h") (day "d") (week "w") (month "m") (year "y"))))
(warning-string
(concat
(case (org-element-property :warning-type timestamp)
(first "--")
(all "-"))
(let ((val (org-element-property :warning-value timestamp)))
(and val (number-to-string val)))
(case (org-element-property :warning-unit timestamp)
(hour "h") (day "d") (week "w") (month "m") (year "y"))))
(build-ts-string
;; Build an Org timestamp string from TIME. ACTIVEP is
;; non-nil when time stamp is active. If WITH-TIME-P is
;; non-nil, add a time part. HOUR-END and MINUTE-END
;; specify a time range in the timestamp. REPEAT-STRING
;; is the repeater string, if any.
(lambda (time activep &optional with-time-p hour-end minute-end)
(let ((ts (format-time-string
(funcall (if with-time-p 'cdr 'car)
org-time-stamp-formats)
time)))
(when (and hour-end minute-end)
(string-match "[012]?[0-9]:[0-5][0-9]" ts)
(setq ts
(replace-match
(format "\\&-%02d:%02d" hour-end minute-end)
nil nil ts)))
(unless activep (setq ts (format "[%s]" (substring ts 1 -1))))
(dolist (s (list repeat-string warning-string))
(when (org-string-nw-p s)
(setq ts (concat (substring ts 0 -1)
" "
s
(substring ts -1)))))
;; Return value.
ts)))
(type (org-element-property :type timestamp)))
(case type
((active inactive)
(let* ((minute-start (org-element-property :minute-start timestamp))
(minute-end (org-element-property :minute-end timestamp))
(hour-start (org-element-property :hour-start timestamp))
(hour-end (org-element-property :hour-end timestamp))
(time-range-p (and hour-start hour-end minute-start minute-end
(or (/= hour-start hour-end)
(/= minute-start minute-end)))))
(funcall
build-ts-string
(encode-time 0
(or minute-start 0)
(or hour-start 0)
(org-element-property :day-start timestamp)
(org-element-property :month-start timestamp)
(org-element-property :year-start timestamp))
(eq type 'active)
(and hour-start minute-start)
(and time-range-p hour-end)
(and time-range-p minute-end))))
((active-range inactive-range)
(let ((minute-start (org-element-property :minute-start timestamp))
(minute-end (org-element-property :minute-end timestamp))
(hour-start (org-element-property :hour-start timestamp))
(hour-end (org-element-property :hour-end timestamp)))
(concat
(funcall
build-ts-string (encode-time
0
(or minute-start 0)
(or hour-start 0)
(org-element-property :day-start timestamp)
(org-element-property :month-start timestamp)
(org-element-property :year-start timestamp))
(eq type 'active-range)
(and hour-start minute-start))
"--"
(funcall build-ts-string
(encode-time 0
(or minute-end 0)
(or hour-end 0)
(org-element-property :day-end timestamp)
(org-element-property :month-end timestamp)
(org-element-property :year-end timestamp))
(eq type 'active-range)
(and hour-end minute-end)))))))))
(let* ((repeat-string
(concat
(case (org-element-property :repeater-type timestamp)
(cumulate "+") (catch-up "++") (restart ".+"))
(let ((val (org-element-property :repeater-value timestamp)))
(and val (number-to-string val)))
(case (org-element-property :repeater-unit timestamp)
(hour "h") (day "d") (week "w") (month "m") (year "y"))))
(warning-string
(concat
(case (org-element-property :warning-type timestamp)
(first "--")
(all "-"))
(let ((val (org-element-property :warning-value timestamp)))
(and val (number-to-string val)))
(case (org-element-property :warning-unit timestamp)
(hour "h") (day "d") (week "w") (month "m") (year "y"))))
(build-ts-string
;; Build an Org timestamp string from TIME. ACTIVEP is
;; non-nil when time stamp is active. If WITH-TIME-P is
;; non-nil, add a time part. HOUR-END and MINUTE-END
;; specify a time range in the timestamp. REPEAT-STRING is
;; the repeater string, if any.
(lambda (time activep &optional with-time-p hour-end minute-end)
(let ((ts (format-time-string
(funcall (if with-time-p 'cdr 'car)
org-time-stamp-formats)
time)))
(when (and hour-end minute-end)
(string-match "[012]?[0-9]:[0-5][0-9]" ts)
(setq ts
(replace-match
(format "\\&-%02d:%02d" hour-end minute-end)
nil nil ts)))
(unless activep (setq ts (format "[%s]" (substring ts 1 -1))))
(dolist (s (list repeat-string warning-string))
(when (org-string-nw-p s)
(setq ts (concat (substring ts 0 -1)
" "
s
(substring ts -1)))))
;; Return value.
ts)))
(type (org-element-property :type timestamp)))
(case type
((active inactive)
(let* ((minute-start (org-element-property :minute-start timestamp))
(minute-end (org-element-property :minute-end timestamp))
(hour-start (org-element-property :hour-start timestamp))
(hour-end (org-element-property :hour-end timestamp))
(time-range-p (and hour-start hour-end minute-start minute-end
(or (/= hour-start hour-end)
(/= minute-start minute-end)))))
(funcall
build-ts-string
(encode-time 0
(or minute-start 0)
(or hour-start 0)
(org-element-property :day-start timestamp)
(org-element-property :month-start timestamp)
(org-element-property :year-start timestamp))
(eq type 'active)
(and hour-start minute-start)
(and time-range-p hour-end)
(and time-range-p minute-end))))
((active-range inactive-range)
(let ((minute-start (org-element-property :minute-start timestamp))
(minute-end (org-element-property :minute-end timestamp))
(hour-start (org-element-property :hour-start timestamp))
(hour-end (org-element-property :hour-end timestamp)))
(concat
(funcall
build-ts-string (encode-time
0
(or minute-start 0)
(or hour-start 0)
(org-element-property :day-start timestamp)
(org-element-property :month-start timestamp)
(org-element-property :year-start timestamp))
(eq type 'active-range)
(and hour-start minute-start))
"--"
(funcall build-ts-string
(encode-time 0
(or minute-end 0)
(or hour-end 0)
(org-element-property :day-end timestamp)
(org-element-property :month-end timestamp)
(org-element-property :year-end timestamp))
(eq type 'active-range)
(and hour-end minute-end))))))))
(defun org-element-timestamp-successor ()
"Search for the next timestamp object.
@ -4810,7 +4807,7 @@ the value to store. Nothing will be stored if
(unless org-element--cache (org-element-cache-reset))
(puthash pos data org-element--cache)))
(defsubst org-element--shift-positions (element offset)
(defsubst org-element--cache-shift-positions (element offset)
"Shift ELEMENT properties relative to buffer positions by OFFSET.
Properties containing buffer positions are `:begin', `:end',
`:contents-begin', `:contents-end' and `:structure'. They are
@ -4819,12 +4816,12 @@ modified by side-effect. Return modified element."
;; Shift :structure property for the first plain list only: it is
;; the only one that really matters and it prevents from shifting
;; it more than once.
(when (eq (car element) 'plain-list)
(let ((structure (plist-get properties :structure)))
(when (<= (plist-get properties :begin) (caar structure))
(dolist (item structure)
(incf (car item) offset)
(incf (nth 6 item) offset)))))
(when (and (eq (org-element-type element) 'plain-list)
(not (eq (org-element-type (plist-get properties :parent))
'item)))
(dolist (item (plist-get properties :structure))
(incf (car item) offset)
(incf (nth 6 item) offset)))
(plist-put properties :begin (+ (plist-get properties :begin) offset))
(plist-put properties :end (+ (plist-get properties :end) offset))
(dolist (key '(:contents-begin :contents-end :post-affiliated))
@ -4996,14 +4993,14 @@ removed from the cache."
(let* ((conflictp (consp (caar value)))
(value-to-shift (if conflictp (cdr value) value)))
;; Shift element part.
(org-element--shift-positions (car value-to-shift) offset)
(org-element--cache-shift-positions (car value-to-shift) offset)
;; Shift objects part.
(dolist (object-data (cdr value-to-shift))
(incf (car object-data) offset)
(dolist (successor (nth 1 object-data))
(incf (cdr successor) offset))
(dolist (object (cddr object-data))
(org-element--shift-positions object offset)))
(org-element--cache-shift-positions object offset)))
;; Shift key-value pair.
(let* ((new-key (+ key offset))
(new-value (gethash new-key org-element--cache)))
@ -5038,22 +5035,22 @@ removed from the cache."
;; Preserve any element ending before BEG. If it
;; overlaps the BEG-END area, remove it.
(t
(when (let ((element (car value)))
(or (>= (org-element-property :end element) beg)
;; Special case: footnote definitions and
;; plain lists can end with blank lines.
;; Modifying those can also alter last
;; element inside. We must therefore
;; remove these elements from cache.
(let ((parent
(org-element-property :parent element)))
(and (memq (org-element-type parent)
'(footnote-definition plain-list))
(>= (org-element-property :end parent) beg)
(= (org-element-property :contents-end
parent)
(org-element-property :end element))))))
(remhash key org-element--cache)))))
(let ((element (car value)))
(if (>= (org-element-property :end element) beg)
(remhash key org-element--cache)
;; Special case: footnote definitions and plain
;; lists can end with blank lines. Modifying
;; those can also alter last element inside. We
;; must therefore remove them from cache.
(let ((parent (org-element-property :parent element)))
(when (and parent (eq (org-element-type parent) 'item))
(setq parent (org-element-property :parent parent)))
(when (and (memq (org-element-type parent)
'(footnote-definition plain-list))
(>= (org-element-property :end parent) beg)
(= (org-element-property :contents-end parent)
(org-element-property :end element)))
(remhash key org-element--cache))))))))
org-element--cache)
;; Signal cache as up-to-date.
(org-element--cache-cancel-changes))))))

View File

@ -233,6 +233,7 @@ With optional argument FORCE, force the creation of a new ID."
(org-entry-put (point) "ID" nil))
(org-id-get (point) 'create))
;;;###autoload
(defun org-id-copy ()
"Copy the ID of the entry at point to the kill ring.
Create an ID if necessary."
@ -258,6 +259,7 @@ In any case, the ID of the entry is returned."
(org-id-add-location id (buffer-file-name (buffer-base-buffer)))
id)))))
;;;###autoload
(defun org-id-get-with-outline-path-completion (&optional targets)
"Use `outline-path-completion' to retrieve the ID of an entry.
TARGETS may be a setting for `org-refile-targets' to define
@ -274,6 +276,7 @@ If necessary, the ID is created."
(prog1 (org-id-get pom 'create)
(move-marker pom nil))))
;;;###autoload
(defun org-id-get-with-outline-drilling (&optional targets)
"Use an outline-cycling interface to retrieve the ID of an entry.
This only finds entries in the current buffer, using `org-get-location'.
@ -320,6 +323,7 @@ With optional argument MARKERP, return the position as a new marker."
;; Creating new IDs
;;;###autoload
(defun org-id-new (&optional prefix)
"Create a new globally unique ID.

View File

@ -283,14 +283,6 @@ we turn off invisibility temporarily. Use this in a `let' form."
(<= (match-beginning n) pos)
(>= (match-end n) pos)))
(defun org-autoload (file functions)
"Establish autoload for all FUNCTIONS in FILE, if not bound already."
(let ((d (format "Documentation will be available after `%s.el' is loaded."
file))
f)
(while (setq f (pop functions))
(or (fboundp f) (autoload f file d t)))))
(defun org-match-line (re)
"Looking-at at the beginning of the current line."
(save-excursion

View File

@ -921,6 +921,7 @@ When nil, simply write \"#ERROR\" in corrupted fields.")
(setq org-table-may-need-update nil)
))
;;;###autoload
(defun org-table-begin (&optional table-type)
"Find the beginning of the table and return its position.
With argument TABLE-TYPE, go to the beginning of a table.el-type table."
@ -934,6 +935,7 @@ With argument TABLE-TYPE, go to the beginning of a table.el-type table."
(beginning-of-line 2)
(point))))
;;;###autoload
(defun org-table-end (&optional table-type)
"Find the end of the table and return its position.
With argument TABLE-TYPE, go to the end of a table.el-type table."
@ -1205,6 +1207,7 @@ Return t when the line exists, nil if it does not exist."
(< (setq cnt (1+ cnt)) N)))
(= cnt N)))
;;;###autoload
(defun org-table-blank-field ()
"Blank the current table field or active region."
(interactive)

View File

@ -115,24 +115,33 @@ Stars are put in group 1 and the trimmed body in group 2.")
(declare-function org-inlinetask-outline-regexp "org-inlinetask" ())
(declare-function org-inlinetask-toggle-visibility "org-inlinetask" ())
(declare-function org-pop-to-buffer-same-window "org-compat" (&optional buffer-or-name norecord label))
(declare-function org-clocktable-shift "org-clock" (dir n))
(declare-function org-clock-get-last-clock-out-time "org-clock" ())
(declare-function org-clock-update-time-maybe "org-clock" ())
(declare-function org-clock-remove-overlays "org-clock" (&optional beg end noremove))
(declare-function org-clock-timestamps-up "org-clock" (&optional n))
(declare-function org-clock-timestamps-down "org-clock" (&optional n))
(declare-function org-clock-sum-current-item "org-clock" (&optional tstart))
(declare-function org-babel-tangle-file "ob-tangle" (file &optional target-file lang))
(declare-function orgtbl-mode "org-table" (&optional arg))
(declare-function org-clock-out "org-clock" (&optional switch-to-state fail-quietly at-time))
(declare-function org-beamer-mode "ox-beamer" ())
(declare-function org-table-blank-field "org-table" ())
(declare-function org-table-edit-field "org-table" (arg))
(declare-function org-table-insert-row "org-table" (&optional arg))
(declare-function org-table-justify-field-maybe "org-table" (&optional new))
(declare-function org-table-set-constants "org-table" ())
(declare-function org-table-calc-current-TBLFM "org-table" (&optional arg))
(declare-function org-id-get-create "org-id" (&optional force))
(declare-function org-add-archive-files "org-archive" (files))
(declare-function org-id-find-id-file "org-id" (id))
(declare-function org-tags-view "org-agenda" (&optional todo-only match))
(declare-function org-agenda-list "org-agenda" (&optional arg start-day span))
(declare-function org-agenda-redo "org-agenda" (&optional all))
(declare-function org-table-align "org-table" ())
(declare-function org-table-begin "org-table" (&optional table-type))
(declare-function org-table-end "org-table" (&optional table-type))
(declare-function org-table-paste-rectangle "org-table" ())
(declare-function org-table-maybe-eval-formula "org-table" ())
(declare-function org-table-maybe-recalculate-line "org-table" ())
@ -161,6 +170,10 @@ Stars are put in group 1 and the trimmed body in group 2.")
(declare-function org-element-restriction "org-element" (element))
(declare-function org-element-type "org-element" (element))
(defsubst org-uniquify (list)
"Non-destructively remove duplicate elements from LIST."
(let ((res (copy-sequence list))) (delete-dups res)))
;; load languages based on value of `org-babel-load-languages'
(defvar org-babel-load-languages)
@ -1721,17 +1734,15 @@ In tables, the special behavior of RET has precedence."
:group 'org-link-follow
:type 'boolean)
(defcustom org-mouse-1-follows-link 450
(defcustom org-mouse-1-follows-link
(if (boundp 'mouse-1-click-follows-link) mouse-1-click-follows-link t)
"Non-nil means mouse-1 on a link will follow the link.
A longer mouse click will still set point. Does not work on XEmacs.
Needs to be set before org.el is loaded."
:group 'org-link-follow
:version "24.4"
:package-version '(Org . "8.3")
:set (lambda (var val)
(set-default var (if (boundp 'mouse-1-click-follows-link)
mouse-1-click-follows-link t)))
:type '(choice
:type '(choice
(const :tag "A double click follows the link" 'double)
(const :tag "Unconditionally follow the link with mouse-1" t)
(integer :tag "mouse-1 click does not follow the link if longer than N ms" 450)))
@ -4244,12 +4255,6 @@ Normal means, no org-mode-specific context."
"Detect the first line outside a table when searching from within it.
This works for both table types.")
;; Autoload the functions in org-table.el that are needed by functions here.
(eval-and-compile
(org-autoload "org-table"
'(org-table-begin org-table-blank-field org-table-end)))
(defconst org-TBLFM-regexp "^[ \t]*#\\+TBLFM: "
"Detect a #+TBLFM line.")
@ -4330,12 +4335,6 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables."
(re-search-forward org-table-any-border-regexp nil 1))))
(unless quietly (message "Mapping tables: done")))
;; Declare and autoload functions from org-agenda.el
(eval-and-compile
(org-autoload "org-agenda"
'(org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item)))
(declare-function org-clock-save-markers-for-cut-and-paste "org-clock" (beg end))
(declare-function org-clock-update-mode-line "org-clock" ())
(declare-function org-resolve-clocks "org-clock"
@ -4361,11 +4360,6 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables."
Return nil if no clock is running."
(marker-buffer org-clock-marker))
(eval-and-compile
(org-autoload "org-clock" '(org-clock-remove-overlays
org-clock-update-time-maybe
org-clocktable-shift)))
(defun org-check-running-clock ()
"Check if the current buffer contains the running clock.
If yes, offer to stop it and to save the buffer with the changes."
@ -4565,33 +4559,18 @@ Otherwise, these types are allowed:
(defalias 'org-advertized-archive-subtree 'org-archive-subtree)
(eval-and-compile
(org-autoload "org-archive"
'(org-add-archive-files)))
;; Autoload Column View Code
;; Declare Column View Code
(declare-function org-columns-number-to-string "org-colview" (n fmt &optional printf))
(declare-function org-columns-get-format-and-top-level "org-colview" ())
(declare-function org-columns-compute "org-colview" (property))
(org-autoload (if (featurep 'xemacs) "org-colview-xemacs" "org-colview")
'(org-columns-number-to-string
org-columns-get-format-and-top-level
org-columns-compute
org-columns-remove-overlays))
;; Autoload ID code
;; Declare ID code
(declare-function org-id-store-link "org-id")
(declare-function org-id-locations-load "org-id")
(declare-function org-id-locations-save "org-id")
(defvar org-id-track-globally)
(org-autoload "org-id"
'(org-id-new
org-id-copy
org-id-get-with-outline-path-completion
org-id-get-with-outline-drilling))
;;; Variables for pre-computed regular expressions, all buffer local
@ -12858,7 +12837,7 @@ This function is run automatically after each state change to a DONE state."
(org-log-done nil)
(org-todo-log-states nil)
re type n what ts time to-state)
(when (and repeat (not (zerop (string-to-number repeat))))
(when (and repeat (not (zerop (string-to-number (substring repeat 1)))))
(if (eq org-log-repeat t) (setq org-log-repeat 'state))
(setq to-state (or (org-entry-get nil "REPEAT_TO_STATE")
org-todo-repeat-to-state))
@ -21816,10 +21795,6 @@ for the search purpose."
"Return the reverse of STRING."
(apply 'string (reverse (string-to-list string))))
(defsubst org-uniquify (list)
"Non-destructively remove duplicate elements from LIST."
(let ((res (copy-sequence list))) (delete-dups res)))
(defun org-uniquify-alist (alist)
"Merge elements of ALIST with the same key.

View File

@ -674,7 +674,7 @@ The function should return the string to be exported."
;;;; LaTeX
(defcustom org-html-with-latex t
(defcustom org-html-with-latex org-export-with-latex
"Non-nil means process LaTeX math snippets.
When set, the exporter will process LaTeX environments and
@ -695,7 +695,6 @@ t Synonym for `mathjax'."
:group 'org-export-html
:version "24.4"
:package-version '(Org . "8.0")
:set (lambda (var val) (set-default var org-export-with-latex))
:type '(choice
(const :tag "Do not process math in any way" nil)
(const :tag "Use dvipng to make images" dvipng)

View File

@ -705,7 +705,7 @@ The function should return the string to be exported."
;;;; LaTeX
(defcustom org-odt-with-latex t
(defcustom org-odt-with-latex org-export-with-latex
"Non-nil means process LaTeX math snippets.
When set, the exporter will process LaTeX environments and
@ -726,7 +726,6 @@ t Synonym for `mathjax'."
:group 'org-export-odt
:version "24.4"
:package-version '(Org . "8.0")
:set (lambda (var val) (set-default var org-export-with-latex))
:type '(choice
(const :tag "Do not process math in any way" nil)
(const :tag "Use dvipng to make images" dvipng)

View File

@ -87,6 +87,7 @@ setting of `org-html-htmlize-output-type' is 'css."
(line-break . org-org-identity)
(link . org-org-identity)
(node-property . org-org-identity)
(template . org-org-template)
(paragraph . org-org-identity)
(plain-list . org-org-identity)
(planning . org-org-identity)
@ -140,16 +141,54 @@ CONTENTS is its contents, as a string or nil. INFO is ignored."
"Transcode KEYWORD element back into Org syntax.
CONTENTS is nil. INFO is ignored. This function ignores
keywords targeted at other export back-ends."
(unless (member (org-element-property :key keyword)
(mapcar
(lambda (block-cons)
(and (eq (cdr block-cons) 'org-element-export-block-parser)
(car block-cons)))
org-element-block-name-alist))
(org-element-keyword-interpreter keyword nil)))
(let ((key (org-element-property :key keyword)))
(unless (or (member key
(mapcar
(lambda (block-cons)
(and (eq (cdr block-cons)
'org-element-export-block-parser)
(car block-cons)))
org-element-block-name-alist))
(member key
'("AUTHOR" "CREATOR" "DATE" "DESCRIPTION" "EMAIL"
"KEYWORDS" "TITLE")))
(org-element-keyword-interpreter keyword nil))))
(defun org-org-template (contents info)
"Return Org document template with document keywords.
CONTENTS is the transcoded contents string. INFO is a plist used
as a communication channel."
(concat
(and (plist-get info :time-stamp-file)
(format-time-string "# Created %Y-%m-%d %a %H:%M\n"))
(format "#+TITLE: %s\n" (org-export-data (plist-get info :title) info))
(and (plist-get info :with-date)
(let ((date (org-export-data (org-export-get-date info) info)))
(and (org-string-nw-p date)
(format "#+DATE: %s\n" date))))
(and (plist-get info :with-author)
(let ((author (org-export-data (plist-get info :author) info)))
(and (org-string-nw-p author)
(format "#+AUTHOR: %s\n" author))))
(and (plist-get info :with-email)
(let ((email (org-export-data (plist-get info :email) info)))
(and (org-string-nw-p email)
(format "#+EMAIL: %s\n" email))))
(and (eq (plist-get info :with-creator) t)
(org-string-nw-p (plist-get info :creator))
(format "#+CREATOR: %s\n" (plist-get info :creator)))
(and (org-string-nw-p (plist-get info :keywords))
(format "#+KEYWORDS: %s\n" (plist-get info :keywords)))
(and (org-string-nw-p (plist-get info :description))
(format "#+DESCRIPTION: %s\n" (plist-get info :description)))
contents
(and (eq (plist-get info :with-creator) 'comment)
(org-string-nw-p (plist-get info :creator))
(format "\n# %s\n" (plist-get info :creator)))))
;;;###autoload
(defun org-org-export-as-org (&optional async subtreep visible-only ext-plist)
(defun org-org-export-as-org
(&optional async subtreep visible-only body-only ext-plist)
"Export current buffer to an Org buffer.
If narrowing is active in the current buffer, only export its
@ -168,6 +207,9 @@ first.
When optional argument VISIBLE-ONLY is non-nil, don't export
contents of hidden elements.
When optional argument BODY-ONLY is non-nil, strip document
keywords from output.
EXT-PLIST, when provided, is a property list with external
parameters overriding Org default settings, but still inferior to
file-local settings.
@ -177,10 +219,11 @@ be displayed when `org-export-show-temporary-export-buffer' is
non-nil."
(interactive)
(org-export-to-buffer 'org "*Org ORG Export*"
async subtreep visible-only nil ext-plist (lambda () (org-mode))))
async subtreep visible-only body-only ext-plist (lambda () (org-mode))))
;;;###autoload
(defun org-org-export-to-org (&optional async subtreep visible-only ext-plist)
(defun org-org-export-to-org
(&optional async subtreep visible-only body-only ext-plist)
"Export current buffer to an org file.
If narrowing is active in the current buffer, only export its
@ -199,6 +242,9 @@ first.
When optional argument VISIBLE-ONLY is non-nil, don't export
contents of hidden elements.
When optional argument BODY-ONLY is non-nil, strip document
keywords from output.
EXT-PLIST, when provided, is a property list with external
parameters overriding Org default settings, but still inferior to
file-local settings.
@ -207,7 +253,7 @@ Return output file name."
(interactive)
(let ((outfile (org-export-output-file-name ".org" subtreep)))
(org-export-to-file 'org outfile
async subtreep visible-only nil ext-plist)))
async subtreep visible-only body-only ext-plist)))
;;;###autoload
(defun org-org-publish-to-org (plist filename pub-dir)

View File

@ -90,6 +90,11 @@
(defvar org-table-number-regexp)
(defsubst org-export-get-parent (blob)
"Return BLOB parent or nil.
BLOB is the element or object considered."
(org-element-property :parent blob))
;;; Internal Variables
;;
@ -5156,11 +5161,6 @@ Return the new string."
;; `org-export-get-genealogy' returns the full genealogy of a given
;; element or object, from closest parent to full parse tree.
(defsubst org-export-get-parent (blob)
"Return BLOB parent or nil.
BLOB is the element or object considered."
(org-element-property :parent blob))
(defun org-export-get-genealogy (blob)
"Return full genealogy relative to a given element or object.

View File

@ -413,6 +413,9 @@ Note: Just export of a property can be done with a macro: {{{property(a)}}}.
**** function definition
comments for ":var":
- The "or" is to deal with a property not present.
- The t is to get property inheritance.
#+NAME: src_block_location_shell
#+HEADER: :var a=(or (org-entry-get org-babel-current-src-block-location "a" t) "0")
#+HEADER: :var b=(or (org-entry-get org-babel-current-src-block-location "b" t) "0")
@ -433,6 +436,11 @@ Note: Just export of a property can be done with a macro: {{{property(a)}}}.
#+HEADER: :var e='nil
#+BEGIN_SRC emacs-lisp :exports results
(setq
;; - The first `or' together with ":var <var>='nil" is to check for
;; a value bound from an optional call argument, in the examples
;; here: c=5, e=6
;; - The second `or' is to deal with a property not present
;; - The t is to get property inheritance
a (or a (string-to-number
(or (org-entry-get org-babel-current-src-block-location "a" t)
"0")))

View File

@ -2211,16 +2211,17 @@ Outside list"
"Test clock interpreter."
;; Running clock.
(should
(equal (let ((org-clock-string "CLOCK:"))
(org-test-parse-and-interpret "CLOCK: [2012-01-01 sun. 00:01]"))
"CLOCK: [2012-01-01 sun. 00:01]\n"))
(string-match
"CLOCK: \\[2012-01-01 .* 00:01\\]"
(let ((org-clock-string "CLOCK:"))
(org-test-parse-and-interpret "CLOCK: [2012-01-01 sun. 00:01]"))))
;; Closed clock.
(should
(equal
(string-match
"CLOCK: \\[2012-01-01 .* 00:01\\]--\\[2012-01-01 .* 00:02\\] => 0:01"
(let ((org-clock-string "CLOCK:"))
(org-test-parse-and-interpret "
CLOCK: [2012-01-01 sun. 00:01]--[2012-01-01 sun. 00:02] => 0:01"))
"CLOCK: [2012-01-01 sun. 00:01]--[2012-01-01 sun. 00:02] => 0:01\n")))
CLOCK: [2012-01-01 sun. 00:01]--[2012-01-01 sun. 00:02] => 0:01")))))
(ert-deftest test-org-element/comment-interpreter ()
"Test comment interpreter."
@ -2320,12 +2321,12 @@ CLOCK: [2012-01-01 sun. 00:01]--[2012-01-01 sun. 00:02] => 0:01"))
(org-deadline-string "DEADLINE:")
(org-scheduled-string "SCHEDULED:"))
(should
(equal
(string-match
"\\* Headline
DEADLINE: <2012-03-29 .*?> SCHEDULED: <2012-03-29 .*?> CLOSED: \\[2012-03-29 .*?\\]"
(org-test-parse-and-interpret
"* Headline
DEADLINE: <2012-01-01> SCHEDULED: <2012-01-01> CLOSED: [2012-01-01]")
"* Headline
DEADLINE: <2012-01-01> SCHEDULED: <2012-01-01> CLOSED: [2012-01-01]\n"))))
DEADLINE: <2012-03-29 thu.> SCHEDULED: <2012-03-29 thu.> CLOSED: [2012-03-29 thu.]")))))
(ert-deftest test-org-element/property-drawer-interpreter ()
"Test property drawer interpreter."
@ -2395,8 +2396,9 @@ DEADLINE: <2012-01-01> SCHEDULED: <2012-01-01> CLOSED: [2012-01-01]\n"))))
(ert-deftest test-org-element/timestamp-interpreter ()
"Test timestamp interpreter."
;; Active.
(should (equal (org-test-parse-and-interpret "<2012-03-29 thu. 16:40>")
"<2012-03-29 thu. 16:40>\n"))
(should
(string-match "<2012-03-29 .* 16:40>"
(org-test-parse-and-interpret "<2012-03-29 thu. 16:40>")))
(should
(string-match "<2012-03-29 .* 16:40>"
(org-element-timestamp-interpreter
@ -2404,8 +2406,9 @@ DEADLINE: <2012-01-01> SCHEDULED: <2012-01-01> CLOSED: [2012-01-01]\n"))))
(:type active :year-start 2012 :month-start 3 :day-start 29
:hour-start 16 :minute-start 40)) nil)))
;; Inactive.
(should (equal (org-test-parse-and-interpret "[2012-03-29 thu. 16:40]")
"[2012-03-29 thu. 16:40]\n"))
(should
(string-match "\\[2012-03-29 .* 16:40\\]"
(org-test-parse-and-interpret "[2012-03-29 thu. 16:40]")))
(should
(string-match
"\\[2012-03-29 .* 16:40\\]"
@ -2414,9 +2417,10 @@ DEADLINE: <2012-01-01> SCHEDULED: <2012-01-01> CLOSED: [2012-01-01]\n"))))
(:type inactive :year-start 2012 :month-start 3 :day-start 29
:hour-start 16 :minute-start 40)) nil)))
;; Active range.
(should (equal (org-test-parse-and-interpret
"<2012-03-29 thu. 16:40>--<2012-03-29 thu. 16:41>")
"<2012-03-29 thu. 16:40>--<2012-03-29 thu. 16:41>\n"))
(should
(string-match "<2012-03-29 .* 16:40>--<2012-03-29 .* 16:41>"
(org-test-parse-and-interpret
"<2012-03-29 thu. 16:40>--<2012-03-29 thu. 16:41>")))
(should
(string-match
"<2012-03-29 .* 16:40>--<2012-03-29 .* 16:41>"
@ -2426,9 +2430,10 @@ DEADLINE: <2012-01-01> SCHEDULED: <2012-01-01> CLOSED: [2012-01-01]\n"))))
:hour-start 16 :minute-start 40 :year-end 2012 :month-end 3
:day-end 29 :hour-end 16 :minute-end 41)) nil)))
;; Inactive range.
(should (equal (org-test-parse-and-interpret
"[2012-03-29 thu. 16:40]--[2012-03-29 thu. 16:41]")
"[2012-03-29 thu. 16:40]--[2012-03-29 thu. 16:41]\n"))
(should
(string-match "\\[2012-03-29 .* 16:40\\]--\\[2012-03-29 .* 16:41\\]"
(org-test-parse-and-interpret
"[2012-03-29 thu. 16:40]--[2012-03-29 thu. 16:41]")))
(should
(string-match
"\\[2012-03-29 .* 16:40\\]--\\[2012-03-29 .* 16:41\\]"
@ -2441,8 +2446,9 @@ DEADLINE: <2012-01-01> SCHEDULED: <2012-01-01> CLOSED: [2012-01-01]\n"))))
(should (equal (org-test-parse-and-interpret "<%%diary-float t 4 2>")
"<%%diary-float t 4 2>\n"))
;; Timestamp with repeater interval, with delay, with both.
(should (equal (org-test-parse-and-interpret "<2012-03-29 thu. +1y>")
"<2012-03-29 thu. +1y>\n"))
(should
(string-match "<2012-03-29 .* \\+1y>"
(org-test-parse-and-interpret "<2012-03-29 thu. +1y>")))
(should
(string-match
"<2012-03-29 .* \\+1y>"
@ -2469,9 +2475,10 @@ DEADLINE: <2012-01-01> SCHEDULED: <2012-01-01> CLOSED: [2012-01-01]\n"))))
:repeater-type cumulate :repeater-value 1 :repeater-unit year))
nil)))
;; Timestamp range with repeater interval
(should (equal (org-test-parse-and-interpret
"<2012-03-29 Thu +1y>--<2012-03-30 Thu +1y>")
"<2012-03-29 Thu +1y>--<2012-03-30 Thu +1y>\n"))
(should
(string-match "<2012-03-29 .* \\+1y>--<2012-03-30 .* \\+1y>"
(org-test-parse-and-interpret
"<2012-03-29 Thu +1y>--<2012-03-30 Thu +1y>")))
(should
(string-match
"<2012-03-29 .* \\+1y>--<2012-03-30 .* \\+1y>"

View File

@ -400,11 +400,11 @@ Paragraph"
nil nil nil '(:with-archived-trees t))))))
;; Clocks.
(should
(equal "CLOCK: [2012-04-29 sun. 10:45]\n"
(let ((org-clock-string "CLOCK:"))
(org-test-with-temp-text "CLOCK: [2012-04-29 sun. 10:45]"
(org-export-as (org-test-default-backend)
nil nil nil '(:with-clocks t))))))
(string-match "CLOCK: \\[2012-04-29 .* 10:45\\]"
(let ((org-clock-string "CLOCK:"))
(org-test-with-temp-text "CLOCK: [2012-04-29 sun. 10:45]"
(org-export-as (org-test-default-backend)
nil nil nil '(:with-clocks t))))))
(should
(equal ""
(let ((org-clock-string "CLOCK:"))
@ -464,11 +464,12 @@ Paragraph"
nil nil nil '(:with-inlinetasks nil)))))))
;; Plannings.
(should
(equal "CLOSED: [2012-04-29 sun. 10:45]\n"
(let ((org-closed-string "CLOSED:"))
(org-test-with-temp-text "CLOSED: [2012-04-29 sun. 10:45]"
(org-export-as (org-test-default-backend)
nil nil nil '(:with-planning t))))))
(string-match
"CLOSED: \\[2012-04-29 .* 10:45\\]"
(let ((org-closed-string "CLOSED:"))
(org-test-with-temp-text "CLOSED: [2012-04-29 sun. 10:45]"
(org-export-as (org-test-default-backend)
nil nil nil '(:with-planning t))))))
(should
(equal ""
(let ((org-closed-string "CLOSED:"))
@ -505,8 +506,8 @@ Paragraph"
"Test `org-export-with-timestamps' specifications."
;; t value.
(should
(equal
"[2012-04-29 sun. 10:45]<2012-04-29 sun. 10:45>\n"
(string-match
"\\[2012-04-29 .*? 10:45\\]<2012-04-29 .*? 10:45>"
(org-test-with-temp-text "[2012-04-29 sun. 10:45]<2012-04-29 sun. 10:45>"
(org-export-as (org-test-default-backend)
nil nil nil '(:with-timestamps t)))))
@ -519,24 +520,24 @@ Paragraph"
nil nil nil '(:with-timestamps nil)))))
;; `active' value.
(should
(equal
"<2012-03-29 Thu>\n\nParagraph <2012-03-29 Thu>[2012-03-29 Thu]"
(string-match
"<2012-03-29 .*?>\n\nParagraph <2012-03-29 .*?>\\[2012-03-29 .*?\\]"
(org-test-with-temp-text
"<2012-03-29 Thu>[2012-03-29 Thu]
Paragraph <2012-03-29 Thu>[2012-03-29 Thu]"
(org-trim (org-export-as (org-test-default-backend)
nil nil nil '(:with-timestamps active))))))
(org-export-as (org-test-default-backend)
nil nil nil '(:with-timestamps active)))))
;; `inactive' value.
(should
(equal
"[2012-03-29 Thu]\n\nParagraph <2012-03-29 Thu>[2012-03-29 Thu]"
(string-match
"\\[2012-03-29 .*?\\]\n\nParagraph <2012-03-29 .*?>\\[2012-03-29 .*?\\]"
(org-test-with-temp-text
"<2012-03-29 Thu>[2012-03-29 Thu]
Paragraph <2012-03-29 Thu>[2012-03-29 Thu]"
(org-trim (org-export-as (org-test-default-backend)
nil nil nil '(:with-timestamps inactive)))))))
(org-export-as (org-test-default-backend)
nil nil nil '(:with-timestamps inactive))))))
(ert-deftest test-org-export/comment-tree ()
"Test if export process ignores commented trees."