mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-12-27 10:55:04 +00:00
org-export: Add active' and
inactive' alternatives to `org-export-with-timestamps'
* contrib/lisp/org-export.el (org-export-with-timestamps): Allow to keep only active timestamps or inactive ones with respectively `active' and `inactive' values. (org-export--skip-p): Update tests to determine if a timestamp should be ignored. * testing/lisp/test-org-export.el: Add tests. * contrib/lisp/org-element.el: Fix some comments.
This commit is contained in:
parent
491ce5491d
commit
bea597be96
@ -3032,8 +3032,8 @@ element or object type."
|
||||
;;
|
||||
;; `org-element-current-element' makes use of special modes. They are
|
||||
;; activated for fixed element chaining (i.e. `plain-list' > `item')
|
||||
;; or fixed conditional element chaining (i.e. `section' >
|
||||
;; `planning'). Special modes are: `section', `quote-section', `item'
|
||||
;; or fixed conditional element chaining (i.e. `headline' >
|
||||
;; `section'). Special modes are: `section', `quote-section', `item'
|
||||
;; and `table-row'.
|
||||
|
||||
(defconst org-element--element-block-re
|
||||
|
@ -600,9 +600,20 @@ e.g. \"timestamp:nil\"."
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom org-export-with-timestamps t
|
||||
"If nil, do not export time stamps and associated keywords."
|
||||
"Non nil means allow timestamps in export.
|
||||
|
||||
It can be set to `active', `inactive', t or nil, in order to
|
||||
export, respectively, only active timestamps, only inactive ones,
|
||||
all of them or none.
|
||||
|
||||
This option can also be set with the #+OPTIONS line, e.g.
|
||||
\"<:nil\"."
|
||||
:group 'org-export-general
|
||||
:type 'boolean)
|
||||
:type '(choice
|
||||
(const :tag "All timestamps" t)
|
||||
(const :tag "Only active timestamps" active)
|
||||
(const :tag "Only inactive timestamps" inactive)
|
||||
(const :tag "No timestamp" nil)))
|
||||
|
||||
(defcustom org-export-with-todo-keywords t
|
||||
"Non-nil means include TODO keywords in export.
|
||||
@ -778,7 +789,7 @@ standard mode."
|
||||
;; - type :: string
|
||||
;;
|
||||
;; + `:parse-tree' :: Whole parse tree, available at any time during
|
||||
;; transcoding.
|
||||
;; transcoding.
|
||||
;; - category :: global
|
||||
;; - type :: list (as returned by `org-element-parse-buffer')
|
||||
;;
|
||||
@ -793,15 +804,15 @@ standard mode."
|
||||
;; - type :: symbol (nil, t)
|
||||
;;
|
||||
;; + `:select-tags' :: List of tags enforcing inclusion of sub-trees
|
||||
;; in transcoding. When such a tag is present,
|
||||
;; subtrees without it are de facto excluded from
|
||||
;; the process. See `use-select-tags'.
|
||||
;; in transcoding. When such a tag is present, subtrees without
|
||||
;; it are de facto excluded from the process. See
|
||||
;; `use-select-tags'.
|
||||
;; - category :: option
|
||||
;; - type :: list of strings
|
||||
;;
|
||||
;; + `:target-list' :: List of targets encountered in the parse tree.
|
||||
;; This is used to partly resolve "fuzzy" links
|
||||
;; (cf. `org-export-resolve-fuzzy-link').
|
||||
;; This is used to partly resolve "fuzzy" links
|
||||
;; (cf. `org-export-resolve-fuzzy-link').
|
||||
;; - category :: tree
|
||||
;; - type :: list of strings
|
||||
;;
|
||||
@ -817,7 +828,7 @@ standard mode."
|
||||
;; - type :: symbol (nil, t, `headline')
|
||||
;;
|
||||
;; + `:with-author' :: Non-nil means author's name should be included
|
||||
;; in the output.
|
||||
;; in the output.
|
||||
;; - category :: option
|
||||
;; - type :: symbol (nil, t)
|
||||
;;
|
||||
@ -879,35 +890,33 @@ standard mode."
|
||||
;; - type :: symbol (nil, {}, t)
|
||||
;;
|
||||
;; + `:with-tables' :: Non-nil means transcoding should interpret
|
||||
;; tables.
|
||||
;; tables.
|
||||
;; - category :: option
|
||||
;; - type :: symbol (nil, t)
|
||||
;;
|
||||
;; + `:with-tags' :: Non-nil means transcoding should keep tags in
|
||||
;; headlines. A `not-in-toc' value will remove them
|
||||
;; from the table of contents, if any, nonetheless.
|
||||
;; headlines. A `not-in-toc' value will remove them from the
|
||||
;; table of contents, if any, nonetheless.
|
||||
;; - category :: option
|
||||
;; - type :: symbol (nil, t, `not-in-toc')
|
||||
;;
|
||||
;; + `:with-tasks' :: Non-nil means transcoding should include
|
||||
;; headlines with a TODO keyword. A `todo' value
|
||||
;; will only include headlines with a todo type
|
||||
;; keyword while a `done' value will do the
|
||||
;; contrary. If a list of strings is provided, only
|
||||
;; tasks with keywords belonging to that list will
|
||||
;; be kept.
|
||||
;; headlines with a TODO keyword. A `todo' value will only
|
||||
;; include headlines with a todo type keyword while a `done'
|
||||
;; value will do the contrary. If a list of strings is provided,
|
||||
;; only tasks with keywords belonging to that list will be kept.
|
||||
;; - category :: option
|
||||
;; - type :: symbol (t, todo, done, nil) or list of strings
|
||||
;;
|
||||
;; + `:with-timestamps' :: Non-nil means transcoding should include
|
||||
;; time stamps and associated keywords. Otherwise, completely
|
||||
;; remove them.
|
||||
;; time stamps. Special value `active' (resp. `inactive') ask to
|
||||
;; export only active (resp. inactive) timestamps. Otherwise,
|
||||
;; completely remove them.
|
||||
;; - category :: option
|
||||
;; - type :: symbol: (t, nil)
|
||||
;; - type :: symbol: (`active', `inactive', t, nil)
|
||||
;;
|
||||
;; + `:with-toc' :: Non-nil means that a table of contents has to be
|
||||
;; added to the output. An integer value limits its
|
||||
;; depth.
|
||||
;; added to the output. An integer value limits its depth.
|
||||
;; - category :: option
|
||||
;; - type :: symbol (nil, t or integer)
|
||||
;;
|
||||
@ -1459,7 +1468,8 @@ INFO is a plist holding export options."
|
||||
|
||||
(defun org-export--skip-p (blob options select-tags)
|
||||
"Non-nil when element or object BLOB should be skipped during export.
|
||||
OPTIONS is the plist holding export options."
|
||||
OPTIONS is the plist holding export options. SELECT-TAGS, when
|
||||
non-nil, is a list of tags marking a subtree as exportable."
|
||||
(case (org-element-type blob)
|
||||
;; Check headline.
|
||||
(headline
|
||||
@ -1487,7 +1497,20 @@ OPTIONS is the plist holding export options."
|
||||
(not (eq todo-type with-tasks)))
|
||||
(and (consp with-tasks) (not (member todo with-tasks))))))))
|
||||
;; Check timestamp.
|
||||
(timestamp (not (plist-get options :with-timestamps)))
|
||||
(timestamp
|
||||
(case (plist-get options :with-timestamps)
|
||||
;; No timestamp allowed.
|
||||
('nil t)
|
||||
;; Only active timestamps allowed and the current one isn't
|
||||
;; active.
|
||||
(active
|
||||
(not (memq (org-element-property :type blob)
|
||||
'(active active-range))))
|
||||
;; Only inactive timestamps allowed and the current one isn't
|
||||
;; inactive.
|
||||
(inactive
|
||||
(not (memq (org-element-property :type blob)
|
||||
'(inactive inactive-range))))))
|
||||
;; Check drawer.
|
||||
(drawer
|
||||
(or (not (plist-get options :with-drawers))
|
||||
@ -1510,7 +1533,7 @@ OPTIONS is the plist holding export options."
|
||||
|
||||
;;; The Transcoder
|
||||
;;
|
||||
;; This function reads Org data (obtained with, i.e.
|
||||
;; `org-export-data' reads a parse tree (obtained with, i.e.
|
||||
;; `org-element-parse-buffer') and transcodes it into a specified
|
||||
;; back-end output. It takes care of updating local properties,
|
||||
;; filtering out elements or objects according to export options and
|
||||
|
@ -74,12 +74,12 @@ already filled in `info'."
|
||||
(equal
|
||||
(org-export-parse-option-keyword
|
||||
"arch:headline creator:comment d:(\"TEST\")
|
||||
^:{} toc:1 tags:not-in-toc tasks:todo num:2")
|
||||
^:{} toc:1 tags:not-in-toc tasks:todo num:2 <:active")
|
||||
'( :section-numbers
|
||||
2
|
||||
:with-archived-trees headline :with-creator comment
|
||||
:with-drawers ("TEST") :with-sub-superscript {} :with-toc 1
|
||||
:with-tags not-in-toc :with-tasks todo))))
|
||||
:with-tags not-in-toc :with-tasks todo :with-timestamps active))))
|
||||
|
||||
(ert-deftest test-org-export/get-inbuffer-options ()
|
||||
"Test reading all standard export keywords."
|
||||
@ -217,13 +217,19 @@ already filled in `info'."
|
||||
(equal (org-export-as 'test nil nil nil '(:with-drawers ("FOO")))
|
||||
":FOO:\nkeep\n:END:\n")))))
|
||||
;; Timestamps.
|
||||
(org-test-with-temp-text "[2012-04-29 sun. 10:45]"
|
||||
(org-test-with-temp-text "[2012-04-29 sun. 10:45]<2012-04-29 sun. 10:45>"
|
||||
(org-test-with-backend "test"
|
||||
(should
|
||||
(equal (org-export-as 'test nil nil nil '(:with-timestamps t))
|
||||
"[2012-04-29 sun. 10:45]\n"))
|
||||
"[2012-04-29 sun. 10:45]<2012-04-29 sun. 10:45>\n"))
|
||||
(should
|
||||
(equal (org-export-as 'test nil nil nil '(:with-timestamps nil)) ""))))
|
||||
(equal (org-export-as 'test nil nil nil '(:with-timestamps nil)) ""))
|
||||
(should
|
||||
(equal (org-export-as 'test nil nil nil '(:with-timestamps active))
|
||||
"<2012-04-29 sun. 10:45>\n"))
|
||||
(should
|
||||
(equal (org-export-as 'test nil nil nil '(:with-timestamps inactive))
|
||||
"[2012-04-29 sun. 10:45]\n"))))
|
||||
;; Clocks.
|
||||
(let ((org-clock-string "CLOCK:"))
|
||||
(org-test-with-temp-text "CLOCK: [2012-04-29 sun. 10:45]"
|
||||
|
Loading…
Reference in New Issue
Block a user