From 621f83e4c1870e4574d3052669b3bb0343cca01e Mon Sep 17 00:00:00 2001
From: Carsten Dominik
Date: Sun, 12 Oct 2008 06:12:44 +0000
Subject: [PATCH] 2008-10-12 Carsten Dominik
* org.el (org-edit-fixed-width-region): Exclude final newline from
picture area.
* org-export-latex.el (org-export-latex-subcontent): Add labels to
sections, to make internal links work.
(org-export-latex-fontify-headline): Do not remove all text
properties, to make sure that target properties survive this
process.
* org-exp.el (org-export-preprocess-string): Change sequence of
modifications, to make sure links are prepared before the LaTeX
conversions do happen.
* org-attach.el (org-attach-delete-all): Renamed from
`org-attch-delete'. Add a security query before deleting the
entire directory. New optional argument FORCE can overrule the
security query.
(org-attach-delete-one): New command.
* org-attach.el (org-attach-file-list): Fix bug with directory.
* org.el (org-apps-regexp-alist): New function.
(org-file-apps): Add auto-mode to the default value.
(org-open-file): Use the new structure of org-file-apps.
* org-attach.el (org-attach): Support the new keys.
(org-attach-method): New option.
* org-bbdb.el (org-bbdb-anniversaries): Fix but with 29 Feb/1
March.
* org.el (org-remove-uniherited-tags): Fix reverse interpretation
of the list value o `org-use-tag-inheritance'.
* org-attach.el (org-attach-auto-tag): New option.
(org-attach-tag, org-attach-untag): New functions.
(org-attach-attach, org-attach-new, org-attach-sync): Call
`org-attach-tag'.
(org-attach-delete): Call `org-attach-untag'.
* org-attach.el: New file.
* org-table.el (orgtbl-self-insert-command): Make this work for
the keypad as well.
* org.el (org-add-log-setup): Limit searc for drawers to entry
text, not to subtree.
* org-clock.el (org-clock-heading-for-remember): New variable.
(org-clock-in): Set `org-clock-heading-for-remember'.
2008-10-12 James TD Smith
* org-remember.el (org-remember-apply-template): Add new
expansions: %k, %K for currently clocked task and a link to the
currently clocked task, and %< to file notes in the currently
clocked task.
2008-10-12 Carsten Dominik
* org-export-latex.el (org-export-latex-make-header): Also insert
the content of the property :latex-header-extra.
* org-exp.el (org-infile-export-plist): Put the content of
#+LATEX_HEADER: into the property :latex-header-extra.
* org-colview.el (org-columns-get-format-and-top-level): Remove
resetting the marker.
* org-colview-xemacs.el (org-columns-get-format-and-top-level):
Remove resetting the marker.
* org.el (org-entry-property-inherited-from): Improve docstring.
(org-entry-get-with-inheritance): Reset marker before starting the
search.
* org-exp.el (org-infile-export-plist): Allow multiple STYLE lines.
* org.el (org-entry-get-multivalued-property)
(org-entry-protect-space, org-entry-restore-space): New
functions.
(org-file-apps-defaults-macosx): Let postscript files be opened by
preview.
(org-time-stamp-inactive): Call `org-time-stamp'.
(org-time-stamp): New argument `inactive'. Also edit inacive
stamps. Convert time stamp type.
(org-open-file): Interpret the `default' value for the `command'
in `org-file-apps'.
* org-id.el (org-id-int-to-b36-one-digit)
(org-id-b36-to-int-one-digit, org-id-int-to-b36)
(org-id-b36-to-int, org-id-time-to-b36): Modified from b62 to
b36.
* org-id.el (org-id-reverse-string): New function.
(org-id-new): Use `org-id-reverse-string' to make sure the
beginning chars of the ID are mutating fast. This allows to use a
directory structure to spread things better.
(org-id-prefix): Changed default to nil.
* org-list.el (org-move-item-down, org-move-item-up): Remember and
restore the column of the cursor position.
* org-remember.el (org-remember-apply-template): Remove properties
from `initial'.
* org-wl.el (org-wl-open): Remove useless call to
`wl-thread-open-all'.
* org-remember.el (org-remember-handler): Fix bug with `bottom'
location.
* org-bbdb.el (org-bbdb-anniversaries): Require bbdb in
`org-bbdb-anniversaries'.
* org.el (org-get-next-sibling, org-forward-same-level): New
functions, similar to the outline versions, but invisible headings
are OK.
2008-10-12 Bastien Guerry
* org.el (org-auto-repeat-maybe): Insert a space between
the timestamp's type and the timestamp itself.
2008-10-12 Carsten Dominik
* org-table.el (org-table-sum): Do not format the result with %g,
it does rounding when there are too many digits.
* org.el (org-map-entries): Protect the keyword-selecting variables.
2008-10-12 Bastien Guerry
* org-agenda.el (org-agenda-to-appt): Make sure the function check
against all agenda files.
2008-10-12 Carsten Dominik
* org-list.el: New file, aggregating list functions from org.el
and org-export-latex.el.
* org.el (org-edit-src-region-extra): New option.
* org-agenda.el (org-agenda-to-appt): Fix bug with appointment
time before 1am.
2008-10-12 Bastien Guerry
* org-export-latex.el (org-export-latex-keywords-maybe): Bug fix.
2008-10-12 James TA Smith
* org-plot.el (org-plot/gnuplot): Make tables starting with a
hline work correctly.
(org-plot/gnuplot-script): Put commas at the end of each script
line.
* org.el (org-get-refile-targets): Replace links with their
descriptions
(org-imenu-get-tree): Replace links with their descriptions.
* org-remember.el (org-remember-apply-template): Add a new
expansion for adding properties to remember items.
* org.el (org-add-log-setup): Skip over drawers (properties,
clocks etc) when adding notes.
* org-agenda.el (org-agenda-get-closed): show durations of clocked
items as well as the start and end times.
* org-compat.el (org-get-x-clipboard-compat): Add a compat
function for fetching the X clipboard on XEmacs and GNU Emacs 21.
* org-remember.el (org-get-x-clipboard): Use the compat
function to get clipboard values when x-selection-value is
unavailable. Use substring-no-properties instead of
set-text-properties to remove text properties from the clipboard
value.
* lisp/org-clock.el (org-update-mode-line): Support limiting the
modeline clock string, and display the full todo value in the
tooltip. Set a local keymap so mouse-3 on the clock string goes to
the currently clocked task.
(org-clock-string-limit): Add a custom value for the maximum
length of the clock string in the modeline.
(org-clock-mode-map): Add a keymap for the modeline string
2008-10-12 Carsten Dominik
* org-compat.el (org-propertize): New function.
2008-10-12 Bastien Guerry
* org-export-latex.el (org-export-latex-tables): protect exported
tables from further special chars conversion.
(org-export-latex-preprocess): Preserve LaTeX environments.
(org-list-parse-list): Parse descriptive lists.
(org-list-to-generic, org-list-to-latex, org-list-to-html)
(org-list-to-texinfo): Export descriptive lists.
(org-quote-chars): Remove.
(org-export-latex-keywords-maybe): Use `replace-regexp-in-string'.
(org-export-latex-list-beginning-re): Rename to
`org-list-beginning-re'
(org-list-item-begin): Rename to `org-list-item-beginning'
2008-10-12 Carsten Dominik
* org.el (org-refile): Allow refiling to the last entry in the
buffer.
(org-get-tags-at): Fix bug when inheritance is turned off.
* org.el (org-indent-line-function): No longer check for src
regions, this is too much overhead.
* org-agenda.el (org-agenda-highlight-todo): Fix bugs with keyword
matching.
* org.el (org-scan-tags): Make sure that tags matching is not case
sensitive. TODO keyword matching is case sensitive, however, to
avoid confusion with similar words that are not meant to be
keywords.
* org.el (org-get-local-tags-at): New function.
(org-get-local-tags): New function.
* org-exp.el (org-export-get-categories): New function.
* org-agenda.el (org-sorting-choice)
(org-agenda-sorting-strategy, org-agenda-get-todos)
(org-agenda-get-timestamps, org-agenda-get-deadlines)
(org-agenda-get-scheduled, org-agenda-get-blocks)
(org-entries-lessp): Implement sorting by TODO state.
(org-cmp-todo-state): New defsubst.
* org-colview.el (org-colview-construct-allowed-dates): New
function.
(org-columns-next-allowed-value): Use
`org-colview-construct-allowed-dates'.
* org-colview-xemacs.el (org-colview-construct-allowed-dates): New
function.
(org-columns-next-allowed-value): Use
`org-colview-construct-allowed-dates'.
* org.el (org-protect-slash): New function.
(org-get-refile-targets): Use `org-protect-slash'.
* org-agenda.el (org-global-tags-completion-table): New variable.
* org-exp.el (org-export-handle-export-tags): New function.
(org-export-preprocess-string): Call
`org-export-handle-export-tags'.
* org-plot.el: New file.
* org-publish.el (org-publish-expand-components): Function removed.
(org-publish-expand-projects): Allow components to have components.
* org.el (org-indent-line-function): Do not indent in regions that
are external source code.
(org-yank-and-fold-if-subtree): New function.
* org-agenda.el (org-agenda-todayp): New function.
(org-agenda-get-deadlines, org-agenda-get-scheduled): Use
`org-agenda-todayp'.
* org.el (org-insert-heading-respect-content)
(org-insert-todo-heading-respect-content): New commands.
(org-insert-heading-respect-content): New option.
(org-insert-heading): Respect `org-insert-heading-respect-content'.
* org-clock.el (org-clock-find-position): Make sure the note after
the clock line gets moved into the new clock drawer.
* org-id.el (org-id-new): New option.
* org-table.el (org-table-copy-down): Avoid overflow during
increment. Use prefix argument 0 to temporarily disable the
increment.
* org-exp.el (org-export-as-html): Do not turn on the major mode
if the buffer will be killed anyway.
(org-get-current-options): Exclude the #+TEXT field.
(org-export-as-html): Make sure text before the first headline is
a paragraph.
* org-publish.el (org-publish-org-to): Tell the exporter that this
buffer will be killed, so it is not necessary to do major mode
initialization.
* org-archive.el (org-archive-to-archive-sibling): Show empty
lines after folding the archive sibling.
* org.el (org-log-note-extra): New variable.
2008-10-12 Bastien Guerry
* org.el (org-additional-option-like-keywords): Added keywords for
the _QUOTE, _VERSE and _SRC environments.
* org-export-latex.el (org-export-latex-preprocess): Fix bug when
exporting _QUOTE and _VERSE environments.
2008-10-12 Carsten Dominik
* org-agenda.el (org-agenda-filter-by-tag): New command.
* org-exp.el (org-get-current-options): Remove angular brackets
from the date entry.
* org.el (org-edit-fixed-width-region): New function.
(org-edit-fixed-width-region): Also try
`org-edit-fixed-width-region'.
(org-edit-fixed-width-region-mode): New option.
(org-activate-code): Only interprete lines starting with colon
plus a space as example lines.
* org-remember.el (org-remember-templates): Add nil instead of
empty strings to fix the length of remember templates.
* org-table.el (org-calc-default-modes): Fix the time format for
calc, from 12 hour to 24 hour clock.
* org-agenda.el (org-agenda-get-deadlines)
(org-agenda-get-scheduled): Avoid `time-of-day' extraction for
entries that are pre-warnings of deadlines or reminders.
* org.el (org-sort-entries-or-items): Make numeric and alpha
comparisons ignore any TODO keyword and priority cookie.
* org-remember.el (org-remember-handler): Reinterpretation of the
prefix argument.
* org-agenda.el (org-agenda-get-scheduled): Use new
`org-scheduled' face.
* org-faces.el (org-scheduled): New face.
* org-wl.el (org-wl-open): Remove incorrect declaration.
* org-gnus.el (org-gnus-store-link): Support for :to information
in gnus links.
* org-exp.el (org-export-as-html): Fixed typo in creator
information.
(org-export-protect-examples): New parameter indent. Insert extra
spaces only when this parameter is specified.
(org-export-preprocess-string): Call `org-export-protect-examples'
with an indentation parameter when exporting to ASCII.
* org-remember.el (org-remember-templates)
(org-remember-apply-template): Allow the file component to be a
function.
* org.el (org-goto-local-search-headings): Renamed from
`org-goto-local-search-forward-headings'. Added the possibility
to search backwards.
* org-export-latex.el (org-export-latex): New customization
group.
* org-agenda.el (org-write-agenda): Erase buffer for txt export.
* org-exp.el (org-html-do-expand): Allow {} to terminate
tex macro
* org.el (org-buffer-list): Select buffers based on major mode,
not on file name.
* org-agenda.el (org-agenda-align-tags): Fix bug with malformed
face property.
* org-colview.el (org-columns-display-here): Use
`org-columns-modify-value-for-display-function'.
* org-colview-xemacs.el (org-columns-display-here): Use
`org-columns-modify-value-for-display-function'.
* org.el (org-columns-modify-value-for-display-function): New option.
* org-publish.el (org-publish-file): Make sure the directory match
for the publishing directory works correctly.
* org-agenda.el (org-agenda-execute-calendar-command)
(org-agenda-diary-entry): Additional optional argument.
---
lisp/org/ChangeLog | 397 +++++++++
lisp/org/org-agenda.el | 193 ++++-
lisp/org/org-archive.el | 3 +-
lisp/org/org-bbdb.el | 13 +-
lisp/org/org-bibtex.el | 2 +-
lisp/org/org-clock.el | 50 +-
lisp/org/org-colview.el | 65 +-
lisp/org/org-compat.el | 20 +-
lisp/org/org-exp.el | 236 +++++-
lisp/org/org-export-latex.el | 339 ++------
lisp/org/org-faces.el | 12 +-
lisp/org/org-gnus.el | 6 +-
lisp/org/org-id.el | 113 ++-
lisp/org/org-info.el | 2 +-
lisp/org/org-irc.el | 2 +-
lisp/org/org-jsinfo.el | 2 +-
lisp/org/org-mac-message.el | 2 +-
lisp/org/org-macs.el | 2 +-
lisp/org/org-mew.el | 2 +-
lisp/org/org-mhe.el | 2 +-
lisp/org/org-mouse.el | 2 +-
lisp/org/org-publish.el | 46 +-
lisp/org/org-remember.el | 212 +++--
lisp/org/org-rmail.el | 2 +-
lisp/org/org-table.el | 24 +-
lisp/org/org-vm.el | 2 +-
lisp/org/org-wl.el | 11 +-
lisp/org/org.el | 1542 +++++++++++++---------------------
28 files changed, 1802 insertions(+), 1502 deletions(-)
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index bf437350c8e..9e1283ee773 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -1,3 +1,400 @@
+2008-10-12 Carsten Dominik
+
+ * org.el (org-edit-fixed-width-region): Exclude final newline from
+ picture area.
+
+ * org-export-latex.el (org-export-latex-subcontent): Add labels to
+ sections, to make internal links work.
+ (org-export-latex-fontify-headline): Do not remove all text
+ properties, to make sure that target properties survive this
+ process.
+
+ * org-exp.el (org-export-preprocess-string): Change sequence of
+ modifications, to make sure links are prepared before the LaTeX
+ conversions do happen.
+
+ * org-attach.el (org-attach-delete-all): Renamed from
+ `org-attch-delete'. Add a security query before deleting the
+ entire directory. New optional argument FORCE can overrule the
+ security query.
+ (org-attach-delete-one): New command.
+
+ * org-attach.el (org-attach-file-list): Fix bug with directory.
+
+ * org.el (org-apps-regexp-alist): New function.
+ (org-file-apps): Add auto-mode to the default value.
+ (org-open-file): Use the new structure of org-file-apps.
+
+ * org-attach.el (org-attach): Support the new keys.
+ (org-attach-method): New option.
+
+ * org-bbdb.el (org-bbdb-anniversaries): Fix but with 29 Feb/1
+ March.
+
+ * org.el (org-remove-uniherited-tags): Fix reverse interpretation
+ of the list value o `org-use-tag-inheritance'.
+
+ * org-attach.el (org-attach-auto-tag): New option.
+ (org-attach-tag, org-attach-untag): New functions.
+ (org-attach-attach, org-attach-new, org-attach-sync): Call
+ `org-attach-tag'.
+ (org-attach-delete): Call `org-attach-untag'.
+
+ * org-attach.el: New file.
+
+ * org-table.el (orgtbl-self-insert-command): Make this work for
+ the keypad as well.
+
+ * org.el (org-add-log-setup): Limit searc for drawers to entry
+ text, not to subtree.
+
+ * org-clock.el (org-clock-heading-for-remember): New variable.
+ (org-clock-in): Set `org-clock-heading-for-remember'.
+
+2008-10-12 James TD Smith
+
+ * org-remember.el (org-remember-apply-template): Add new
+ expansions: %k, %K for currently clocked task and a link to the
+ currently clocked task, and %< to file notes in the currently
+ clocked task.
+
+2008-10-12 Carsten Dominik
+
+ * org-export-latex.el (org-export-latex-make-header): Also insert
+ the content of the property :latex-header-extra.
+
+ * org-exp.el (org-infile-export-plist): Put the content of
+ #+LATEX_HEADER: into the property :latex-header-extra.
+
+ * org-colview.el (org-columns-get-format-and-top-level): Remove
+ resetting the marker.
+
+ * org-colview-xemacs.el (org-columns-get-format-and-top-level):
+ Remove resetting the marker.
+
+ * org.el (org-entry-property-inherited-from): Improve docstring.
+ (org-entry-get-with-inheritance): Reset marker before starting the
+ search.
+
+ * org-exp.el (org-infile-export-plist): Allow multiple STYLE lines.
+
+ * org.el (org-entry-get-multivalued-property)
+ (org-entry-protect-space, org-entry-restore-space): New
+ functions.
+ (org-file-apps-defaults-macosx): Let postscript files be opened by
+ preview.
+ (org-time-stamp-inactive): Call `org-time-stamp'.
+ (org-time-stamp): New argument `inactive'. Also edit inacive
+ stamps. Convert time stamp type.
+ (org-open-file): Interpret the `default' value for the `command'
+ in `org-file-apps'.
+
+ * org-id.el (org-id-int-to-b36-one-digit)
+ (org-id-b36-to-int-one-digit, org-id-int-to-b36)
+ (org-id-b36-to-int, org-id-time-to-b36): Modified from b62 to
+ b36.
+
+ * org-id.el (org-id-reverse-string): New function.
+ (org-id-new): Use `org-id-reverse-string' to make sure the
+ beginning chars of the ID are mutating fast. This allows to use a
+ directory structure to spread things better.
+ (org-id-prefix): Changed default to nil.
+
+ * org-list.el (org-move-item-down, org-move-item-up): Remember and
+ restore the column of the cursor position.
+
+ * org-remember.el (org-remember-apply-template): Remove properties
+ from `initial'.
+
+ * org-wl.el (org-wl-open): Remove useless call to
+ `wl-thread-open-all'.
+
+ * org-remember.el (org-remember-handler): Fix bug with `bottom'
+ location.
+
+ * org-bbdb.el (org-bbdb-anniversaries): Require bbdb in
+ `org-bbdb-anniversaries'.
+
+ * org.el (org-get-next-sibling, org-forward-same-level): New
+ functions, similar to the outline versions, but invisible headings
+ are OK.
+
+2008-10-12 Bastien Guerry
+
+ * org.el (org-auto-repeat-maybe): Insert a space between
+ the timestamp's type and the timestamp itself.
+
+2008-10-12 Carsten Dominik
+
+ * org-table.el (org-table-sum): Do not format the result with %g,
+ it does rounding when there are too many digits.
+
+ * org.el (org-map-entries): Protect the keyword-selecting variables.
+
+2008-10-12 Bastien Guerry
+
+ * org-agenda.el (org-agenda-to-appt): Make sure the function check
+ against all agenda files.
+
+2008-10-12 Carsten Dominik
+
+ * org-list.el: New file, aggregating list functions from org.el
+ and org-export-latex.el.
+
+ * org.el (org-edit-src-region-extra): New option.
+
+ * org-agenda.el (org-agenda-to-appt): Fix bug with appointment
+ time before 1am.
+
+2008-10-12 Bastien Guerry
+
+ * org-export-latex.el (org-export-latex-keywords-maybe): Bug fix.
+
+2008-10-12 James TA Smith
+
+ * org-plot.el (org-plot/gnuplot): Make tables starting with a
+ hline work correctly.
+ (org-plot/gnuplot-script): Put commas at the end of each script
+ line.
+
+ * org.el (org-get-refile-targets): Replace links with their
+ descriptions
+ (org-imenu-get-tree): Replace links with their descriptions.
+
+ * org-remember.el (org-remember-apply-template): Add a new
+ expansion for adding properties to remember items.
+
+ * org.el (org-add-log-setup): Skip over drawers (properties,
+ clocks etc) when adding notes.
+
+ * org-agenda.el (org-agenda-get-closed): show durations of clocked
+ items as well as the start and end times.
+
+ * org-compat.el (org-get-x-clipboard-compat): Add a compat
+ function for fetching the X clipboard on XEmacs and GNU Emacs 21.
+
+ * org-remember.el (org-get-x-clipboard): Use the compat
+ function to get clipboard values when x-selection-value is
+ unavailable. Use substring-no-properties instead of
+ set-text-properties to remove text properties from the clipboard
+ value.
+
+ * lisp/org-clock.el (org-update-mode-line): Support limiting the
+ modeline clock string, and display the full todo value in the
+ tooltip. Set a local keymap so mouse-3 on the clock string goes to
+ the currently clocked task.
+ (org-clock-string-limit): Add a custom value for the maximum
+ length of the clock string in the modeline.
+ (org-clock-mode-map): Add a keymap for the modeline string
+
+2008-10-12 Carsten Dominik
+
+ * org-compat.el (org-propertize): New function.
+
+2008-10-12 Bastien Guerry
+
+ * org-export-latex.el (org-export-latex-tables): protect exported
+ tables from further special chars conversion.
+ (org-export-latex-preprocess): Preserve LaTeX environments.
+ (org-list-parse-list): Parse descriptive lists.
+ (org-list-to-generic, org-list-to-latex, org-list-to-html)
+ (org-list-to-texinfo): Export descriptive lists.
+ (org-quote-chars): Remove.
+ (org-export-latex-keywords-maybe): Use `replace-regexp-in-string'.
+ (org-export-latex-list-beginning-re): Rename to
+ `org-list-beginning-re'
+ (org-list-item-begin): Rename to `org-list-item-beginning'
+
+2008-10-12 Carsten Dominik
+
+ * org.el (org-refile): Allow refiling to the last entry in the
+ buffer.
+ (org-get-tags-at): Fix bug when inheritance is turned off.
+
+ * org.el (org-indent-line-function): No longer check for src
+ regions, this is too much overhead.
+
+ * org-agenda.el (org-agenda-highlight-todo): Fix bugs with keyword
+ matching.
+
+ * org.el (org-scan-tags): Make sure that tags matching is not case
+ sensitive. TODO keyword matching is case sensitive, however, to
+ avoid confusion with similar words that are not meant to be
+ keywords.
+
+ * org.el (org-get-local-tags-at): New function.
+ (org-get-local-tags): New function.
+
+ * org-exp.el (org-export-get-categories): New function.
+
+ * org-agenda.el (org-sorting-choice)
+ (org-agenda-sorting-strategy, org-agenda-get-todos)
+ (org-agenda-get-timestamps, org-agenda-get-deadlines)
+ (org-agenda-get-scheduled, org-agenda-get-blocks)
+ (org-entries-lessp): Implement sorting by TODO state.
+ (org-cmp-todo-state): New defsubst.
+
+ * org-colview.el (org-colview-construct-allowed-dates): New
+ function.
+ (org-columns-next-allowed-value): Use
+ `org-colview-construct-allowed-dates'.
+
+ * org-colview-xemacs.el (org-colview-construct-allowed-dates): New
+ function.
+ (org-columns-next-allowed-value): Use
+ `org-colview-construct-allowed-dates'.
+
+ * org.el (org-protect-slash): New function.
+ (org-get-refile-targets): Use `org-protect-slash'.
+
+ * org-agenda.el (org-global-tags-completion-table): New variable.
+
+ * org-exp.el (org-export-handle-export-tags): New function.
+ (org-export-preprocess-string): Call
+ `org-export-handle-export-tags'.
+
+ * org-plot.el: New file.
+
+ * org-publish.el (org-publish-expand-components): Function removed.
+ (org-publish-expand-projects): Allow components to have components.
+
+ * org.el (org-indent-line-function): Do not indent in regions that
+ are external source code.
+ (org-yank-and-fold-if-subtree): New function.
+
+ * org-agenda.el (org-agenda-todayp): New function.
+ (org-agenda-get-deadlines, org-agenda-get-scheduled): Use
+ `org-agenda-todayp'.
+
+ * org.el (org-insert-heading-respect-content)
+ (org-insert-todo-heading-respect-content): New commands.
+ (org-insert-heading-respect-content): New option.
+ (org-insert-heading): Respect `org-insert-heading-respect-content'.
+
+ * org-clock.el (org-clock-find-position): Make sure the note after
+ the clock line gets moved into the new clock drawer.
+
+ * org-id.el (org-id-new): New option.
+
+ * org-table.el (org-table-copy-down): Avoid overflow during
+ increment. Use prefix argument 0 to temporarily disable the
+ increment.
+
+ * org-exp.el (org-export-as-html): Do not turn on the major mode
+ if the buffer will be killed anyway.
+ (org-get-current-options): Exclude the #+TEXT field.
+ (org-export-as-html): Make sure text before the first headline is
+ a paragraph.
+
+ * org-publish.el (org-publish-org-to): Tell the exporter that this
+ buffer will be killed, so it is not necessary to do major mode
+ initialization.
+
+ * org-archive.el (org-archive-to-archive-sibling): Show empty
+ lines after folding the archive sibling.
+
+ * org.el (org-log-note-extra): New variable.
+
+2008-10-12 Bastien Guerry
+
+ * org.el (org-additional-option-like-keywords): Added keywords for
+ the _QUOTE, _VERSE and _SRC environments.
+
+ * org-export-latex.el (org-export-latex-preprocess): Fix bug when
+ exporting _QUOTE and _VERSE environments.
+
+2008-10-12 Carsten Dominik
+
+ * org-agenda.el (org-agenda-filter-by-tag): New command.
+
+ * org-exp.el (org-get-current-options): Remove angular brackets
+ from the date entry.
+
+ * org.el (org-edit-fixed-width-region): New function.
+ (org-edit-fixed-width-region): Also try
+ `org-edit-fixed-width-region'.
+ (org-edit-fixed-width-region-mode): New option.
+ (org-activate-code): Only interprete lines starting with colon
+ plus a space as example lines.
+
+ * org-remember.el (org-remember-templates): Add nil instead of
+ empty strings to fix the length of remember templates.
+
+ * org-table.el (org-calc-default-modes): Fix the time format for
+ calc, from 12 hour to 24 hour clock.
+
+ * org-agenda.el (org-agenda-get-deadlines)
+ (org-agenda-get-scheduled): Avoid `time-of-day' extraction for
+ entries that are pre-warnings of deadlines or reminders.
+
+ * org.el (org-sort-entries-or-items): Make numeric and alpha
+ comparisons ignore any TODO keyword and priority cookie.
+
+ * org-remember.el (org-remember-handler): Reinterpretation of the
+ prefix argument.
+
+ * org-agenda.el (org-agenda-get-scheduled): Use new
+ `org-scheduled' face.
+
+ * org-faces.el (org-scheduled): New face.
+
+ * org-wl.el (org-wl-open): Remove incorrect declaration.
+
+ * org-gnus.el (org-gnus-store-link): Support for :to information
+ in gnus links.
+
+ * org-exp.el (org-export-as-html): Fixed typo in creator
+ information.
+ (org-export-protect-examples): New parameter indent. Insert extra
+ spaces only when this parameter is specified.
+ (org-export-preprocess-string): Call `org-export-protect-examples'
+ with an indentation parameter when exporting to ASCII.
+
+ * org-remember.el (org-remember-templates)
+ (org-remember-apply-template): Allow the file component to be a
+ function.
+
+ * org.el (org-goto-local-search-headings): Renamed from
+ `org-goto-local-search-forward-headings'. Added the possibility
+ to search backwards.
+
+ * org-export-latex.el (org-export-latex): New customization
+ group.
+
+ * org-agenda.el (org-write-agenda): Erase buffer for txt export.
+
+ * org-exp.el (org-html-do-expand): Allow {} to terminate
+ tex macro
+
+ * org.el (org-buffer-list): Select buffers based on major mode,
+ not on file name.
+
+ * org-agenda.el (org-agenda-align-tags): Fix bug with malformed
+ face property.
+
+ * org-colview.el (org-columns-display-here): Use
+ `org-columns-modify-value-for-display-function'.
+
+ * org-colview-xemacs.el (org-columns-display-here): Use
+ `org-columns-modify-value-for-display-function'.
+
+ * org.el (org-columns-modify-value-for-display-function): New option.
+
+
+ * org-publish.el (org-publish-file): Make sure the directory match
+ for the publishing directory works correctly.
+
+ * org-agenda.el (org-agenda-execute-calendar-command)
+ (org-agenda-diary-entry): Additional optional argument.
+
+2008-07-24 Carsten Dominik
+
+ * org-exp.el (org-export-as-html): Add attributes also in mailto
+ and ftp links.
+
+ * org.el (org-autoload): Add `org-dblock-write:columnview'.
+
+
2008-08-11 Glenn Morris
* org-mac-message.el (do-applescript): Fix declaration.
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index 9a7ed8b6b98..3a244302e93 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -6,7 +6,7 @@
;; Author: Carsten Dominik
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
-;; Version: 6.06b
+;; Version: 6.09a
;;
;; This file is part of GNU Emacs.
;;
@@ -149,6 +149,7 @@ you can \"misuse\" it to also add other text to the header. However,
(const category-keep) (const category-up) (const category-down)
(const tag-down) (const tag-up)
(const priority-up) (const priority-down)
+ (const todo-state-up) (const todo-state-down)
(const effort-up) (const effort-down))
"Sorting choices.")
@@ -730,6 +731,8 @@ tag-up Sort alphabetically by last tag, A-Z.
tag-down Sort alphabetically by last tag, Z-A.
priority-up Sort numerically by priority, high priority last.
priority-down Sort numerically by priority, high priority first.
+todo-state-up Sort by todo state, tasks that are done last.
+todo-state-down Sort by todo state, tasks that are done first.
effort-up Sort numerically by estimated effort, high effort last.
effort-down Sort numerically by estimated effort, high effort first.
@@ -938,8 +941,11 @@ it means that the tags should be flushright to that column. For example,
(defcustom org-agenda-fontify-priorities t
"Non-nil means, highlight low and high priorities in agenda.
When t, the highest priority entries are bold, lowest priority italic.
-This may also be an association list of priority faces. The face may be
-a names face, or a list like `(:background \"Red\")'."
+This may also be an association list of priority faces, whose
+keys are the character values of `org-highest-priority',
+`org-default-priority', and `org-lowest-priority' (the default values
+are ?A, ?B, and ?C, respectively). The face may be a names face,
+or a list like `(:background \"Red\")'."
:group 'org-agenda-line-format
:type '(choice
(const :tag "Never" nil)
@@ -1126,6 +1132,7 @@ The following commands are available:
(org-defkey org-agenda-mode-map "T" 'org-agenda-show-tags)
(org-defkey org-agenda-mode-map "n" 'next-line)
(org-defkey org-agenda-mode-map "p" 'previous-line)
+(org-defkey org-agenda-mode-map "\C-c\C-a" 'org-attach)
(org-defkey org-agenda-mode-map "\C-c\C-n" 'org-agenda-next-date-line)
(org-defkey org-agenda-mode-map "\C-c\C-p" 'org-agenda-previous-date-line)
(org-defkey org-agenda-mode-map "," 'org-agenda-priority)
@@ -1159,6 +1166,7 @@ The following commands are available:
(org-defkey org-agenda-mode-map "]" 'org-agenda-manipulate-query-subtract)
(org-defkey org-agenda-mode-map "{" 'org-agenda-manipulate-query-add-re)
(org-defkey org-agenda-mode-map "}" 'org-agenda-manipulate-query-subtract-re)
+(org-defkey org-agenda-mode-map "/" 'org-agenda-filter-by-tag)
(defvar org-agenda-keymap (copy-keymap org-agenda-mode-map)
"Local keymap for agenda entries from Org-mode.")
@@ -1497,7 +1505,7 @@ Press key for an agenda command: < Buffer, subtree/region restriction
-------------------------------- > Remove restriction
a Agenda for current week or day e Export agenda views
t List of all TODO entries T Entries with special TODO kwd
-m Match a TAGS query M Like m, but only TODO entries
+m Match a TAGS/PROP/TODO query M Like m, but only TODO entries
L Timeline for current buffer # List stuck projects (!=configure)
s Search for keywords C Configure custom agenda commands
/ Multi-occur
@@ -1879,6 +1887,7 @@ higher priority settings."
(t
(let ((bs (buffer-string)))
(find-file file)
+ (erase-buffer)
(insert bs)
(save-buffer 0)
(kill-buffer (current-buffer))
@@ -3133,7 +3142,7 @@ the documentation of `org-diary'."
"\\)\\>"))
org-not-done-regexp)
"[^\n\r]*\\)"))
- marker priority category tags
+ marker priority category tags todo-state
ee txt beg end)
(goto-char (point-min))
(while (re-search-forward regexp nil t)
@@ -3158,11 +3167,12 @@ the documentation of `org-diary'."
category (org-get-category)
tags (org-get-tags-at (point))
txt (org-format-agenda-item "" (match-string 1) category tags)
- priority (1+ (org-get-priority txt)))
+ priority (1+ (org-get-priority txt))
+ todo-state (org-get-todo-state))
(org-add-props txt props
'org-marker marker 'org-hd-marker marker
'priority priority 'org-category category
- 'type "todo")
+ 'type "todo" 'todo-state todo-state)
(push txt ee)
(if org-agenda-todo-list-sublevels
(goto-char (match-end 1))
@@ -3204,7 +3214,8 @@ the documentation of `org-diary'."
"\\|\\(<[0-9]+-[0-9]+-[0-9]+[^>\n]+?\\+[0-9]+[dwmy]>\\)"
"\\|\\(<%%\\(([^>\n]+)\\)>\\)"))
marker hdmarker deadlinep scheduledp clockp closedp inactivep
- donep tmp priority category ee txt timestr tags b0 b3 e3 head)
+ donep tmp priority category ee txt timestr tags b0 b3 e3 head
+ todo-state)
(goto-char (point-min))
(while (re-search-forward regexp nil t)
(setq b0 (match-beginning 0)
@@ -3234,7 +3245,8 @@ the documentation of `org-diary'."
clockp (and org-agenda-include-inactive-timestamps
(or (string-match org-clock-string tmp)
(string-match "]-+\\'" tmp)))
- donep (org-entry-is-done-p))
+ todo-state (org-get-todo-state)
+ donep (member todo-state org-done-keywords))
(if (or scheduledp deadlinep closedp clockp)
(throw :skip t))
(if (string-match ">" timestr)
@@ -3259,6 +3271,7 @@ the documentation of `org-diary'."
'org-marker marker 'org-hd-marker hdmarker)
(org-add-props txt nil 'priority priority
'org-category category 'date date
+ 'todo-state todo-state
'type "timestamp")
(push txt ee))
(outline-next-heading)))
@@ -3325,7 +3338,7 @@ the documentation of `org-diary'."
(list 0 0 0 (nth 1 date) (car date) (nth 2 date))))
1 11))))
marker hdmarker priority category tags closedp
- ee txt timestr rest)
+ ee txt timestr rest clocked)
(goto-char (point-min))
(while (re-search-forward regexp nil t)
(catch :skip
@@ -3341,10 +3354,11 @@ the documentation of `org-diary'."
(setq rest (substring timestr (match-end 0))
timestr (substring timestr 0 (match-end 0)))
(if (and (not closedp)
- (string-match "\\([0-9]\\{1,2\\}:[0-9]\\{2\\}\\)\\]" rest))
- (setq timestr (concat (substring timestr 0 -1)
- "-" (match-string 1 rest) "]"))))
-
+ (string-match "\\([0-9]\\{1,2\\}:[0-9]\\{2\\}\\)\\].*\\([0-9]\\{1,2\\}:[0-9]\\{2\\}\\)" rest))
+ (progn (setq timestr (concat (substring timestr 0 -1)
+ "-" (match-string 1 rest) "]"))
+ (setq clocked (match-string 2 rest)))
+ (setq clocked "-")))
(save-excursion
(if (re-search-backward "^\\*+ " nil t)
(progn
@@ -3353,7 +3367,8 @@ the documentation of `org-diary'."
tags (org-get-tags-at))
(looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
(setq txt (org-format-agenda-item
- (if closedp "Closed: " "Clocked: ")
+ (if closedp "Closed: "
+ (concat "Clocked: (" clocked ")"))
(match-string 1) category tags timestr)))
(setq txt org-agenda-no-heading-message))
(setq priority 100000)
@@ -3377,10 +3392,10 @@ the documentation of `org-diary'."
(format "mouse-2 or RET jump to org file %s"
(abbreviate-file-name buffer-file-name))))
(regexp org-deadline-time-regexp)
- (todayp (equal date (calendar-current-date))) ; DATE bound by calendar
+ (todayp (org-agenda-todayp date)) ; DATE bound by calendar
(d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar
d2 diff dfrac wdays pos pos1 category tags
- ee txt head face s upcomingp donep timestr)
+ ee txt head face s todo-state upcomingp donep timestr)
(goto-char (point-min))
(while (re-search-forward regexp nil t)
(catch :skip
@@ -3402,6 +3417,7 @@ the documentation of `org-diary'."
(= diff 0))
(save-excursion
(setq category (org-get-category))
+ (setq todo-state (org-get-todo-state))
(if (re-search-backward "^\\*+[ \t]+" nil t)
(progn
(goto-char (match-end 0))
@@ -3411,7 +3427,7 @@ the documentation of `org-diary'."
(point)
(progn (skip-chars-forward "^\r\n")
(point))))
- (setq donep (string-match org-looking-at-done-regexp head))
+ (setq donep (member todo-state org-done-keywords))
(if (string-match " \\([012]?[0-9]:[0-9][0-9]\\)" s)
(setq timestr
(concat (substring s (match-beginning 1)) " "))
@@ -3427,7 +3443,8 @@ the documentation of `org-diary'."
(funcall (nth 1 org-agenda-deadline-leaders) diff date)
(format (nth 1 org-agenda-deadline-leaders)
diff)))
- head category tags timestr))))
+ head category tags
+ (if (not (= diff 0)) nil timestr)))))
(setq txt org-agenda-no-heading-message))
(when txt
(setq face (org-agenda-deadline-face dfrac wdays))
@@ -3437,6 +3454,7 @@ the documentation of `org-diary'."
'priority (+ (- diff)
(org-get-priority txt))
'org-category category
+ 'todo-state todo-state
'type (if upcomingp "upcoming-deadline" "deadline")
'date (if upcomingp date d2)
'face (if donep 'org-done face)
@@ -3465,10 +3483,10 @@ FRACTION is what fraction of the head-warning time has passed."
(format "mouse-2 or RET jump to org file %s"
(abbreviate-file-name buffer-file-name))))
(regexp org-scheduled-time-regexp)
- (todayp (equal date (calendar-current-date))) ; DATE bound by calendar
+ (todayp (org-agenda-todayp date)) ; DATE bound by calendar
(d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar
- d2 diff pos pos1 category tags
- ee txt head pastschedp donep face timestr s)
+ d2 diff pos pos1 category tags donep
+ ee txt head pastschedp todo-state face timestr s)
(goto-char (point-min))
(while (re-search-forward regexp nil t)
(catch :skip
@@ -3488,6 +3506,7 @@ FRACTION is what fraction of the head-warning time has passed."
(= diff 0))
(save-excursion
(setq category (org-get-category))
+ (setq todo-state (org-get-todo-state))
(if (re-search-backward "^\\*+[ \t]+" nil t)
(progn
(goto-char (match-end 0))
@@ -3496,7 +3515,7 @@ FRACTION is what fraction of the head-warning time has passed."
(setq head (buffer-substring-no-properties
(point)
(progn (skip-chars-forward "^\r\n") (point))))
- (setq donep (string-match org-looking-at-done-regexp head))
+ (setq donep (member todo-state org-done-keywords))
(if (string-match " \\([012]?[0-9]:[0-9][0-9]\\)" s)
(setq timestr
(concat (substring s (match-beginning 1)) " "))
@@ -3510,12 +3529,15 @@ FRACTION is what fraction of the head-warning time has passed."
(car org-agenda-scheduled-leaders)
(format (nth 1 org-agenda-scheduled-leaders)
(- 1 diff)))
- head category tags timestr))))
+ head category tags
+ (if (not (= diff 0)) nil timestr)))))
(setq txt org-agenda-no-heading-message))
(when txt
- (setq face (if pastschedp
- 'org-scheduled-previously
- 'org-scheduled-today))
+ (setq face
+ (cond
+ (pastschedp 'org-scheduled-previously)
+ (todayp 'org-scheduled-today)
+ (t 'org-scheduled)))
(org-add-props txt props
'undone-face face
'face (if donep 'org-done face)
@@ -3524,7 +3546,8 @@ FRACTION is what fraction of the head-warning time has passed."
'type (if pastschedp "past-scheduled" "scheduled")
'date (if pastschedp d2 date)
'priority (+ 94 (- 5 diff) (org-get-priority txt))
- 'org-category category)
+ 'org-category category
+ 'todo-state todo-state)
(push txt ee))))))
(nreverse ee)))
@@ -3541,7 +3564,7 @@ FRACTION is what fraction of the head-warning time has passed."
(abbreviate-file-name buffer-file-name))))
(regexp org-tr-regexp)
(d0 (calendar-absolute-from-gregorian date))
- marker hdmarker ee txt d1 d2 s1 s2 timestr category tags pos
+ marker hdmarker ee txt d1 d2 s1 s2 timestr category todo-state tags pos
donep head)
(goto-char (point-min))
(while (re-search-forward regexp nil t)
@@ -3559,6 +3582,7 @@ FRACTION is what fraction of the head-warning time has passed."
(save-excursion
(setq marker (org-agenda-new-marker (point)))
(setq category (org-get-category))
+ (setq todo-state (org-get-todo-state))
(if (re-search-backward "^\\*+ " nil t)
(progn
(goto-char (match-beginning 0))
@@ -3578,6 +3602,7 @@ FRACTION is what fraction of the head-warning time has passed."
(org-add-props txt props
'org-marker marker 'org-hd-marker hdmarker
'type "block" 'date date
+ 'todo-state todo-state
'priority (org-get-priority txt) 'org-category category)
(push txt ee)))
(goto-char pos)))
@@ -3839,15 +3864,16 @@ HH:MM."
(mapconcat 'identity (sort list 'org-entries-lessp) "\n")))
(defun org-agenda-highlight-todo (x)
- (let (re pl)
+ (let ((org-done-keywords org-done-keywords-for-agenda)
+ re pl)
(if (eq x 'line)
(save-excursion
(beginning-of-line 1)
(setq re (get-text-property (point) 'org-todo-regexp))
(goto-char (+ (point) (or (get-text-property (point) 'prefix-length) 0)))
- (when (looking-at (concat "[ \t]*\\.*" re " +"))
+ (when (looking-at (concat "[ \t]*\\.*\\(" re "\\) +"))
(add-text-properties (match-beginning 0) (match-end 0)
- (list 'face (org-get-todo-face 0)))
+ (list 'face (org-get-todo-face 1)))
(let ((s (buffer-substring (match-beginning 1) (match-end 1))))
(delete-region (match-beginning 1) (1- (match-end 0)))
(goto-char (match-beginning 1))
@@ -3893,6 +3919,20 @@ HH:MM."
((string-lessp cb ca) +1)
(t nil))))
+(defsubst org-cmp-todo-state (a b)
+ "Compare the todo states of strings A and B."
+ (let* ((ta (or (get-text-property 1 'todo-state a) ""))
+ (tb (or (get-text-property 1 'todo-state b) ""))
+ (la (- (length (member ta org-todo-keywords-for-agenda))))
+ (lb (- (length (member tb org-todo-keywords-for-agenda))))
+ (donepa (member ta org-done-keywords-for-agenda))
+ (donepb (member tb org-done-keywords-for-agenda)))
+ (cond ((and donepa (not donepb)) -1)
+ ((and (not donepa) donepb) +1)
+ ((< la lb) -1)
+ ((< lb la) +1)
+ (t nil))))
+
(defsubst org-cmp-tag (a b)
"Compare the string values of categories of strings A and B."
(let ((ta (car (last (get-text-property 1 'tags a))))
@@ -3926,7 +3966,9 @@ HH:MM."
(category-down (if category-up (- category-up) nil))
(category-keep (if category-up +1 nil))
(tag-up (org-cmp-tag a b))
- (tag-down (if tag-up (- tag-up) nil)))
+ (tag-down (if tag-up (- tag-up) nil))
+ (todo-state-up (org-cmp-todo-state a b))
+ (todo-state-down (if todo-state-up (- todo-state-up) nil)))
(cdr (assoc
(eval (cons 'or org-agenda-sorting-strategy-selected))
'((-1 . t) (1 . nil) (nil . nil))))))
@@ -4073,6 +4115,63 @@ When this is the global TODO list, a prefix argument will be interpreted."
(goto-line line)
(recenter window-line)))
+(defvar org-global-tags-completion-table nil)
+(defun org-agenda-filter-by-tag (strip &optional char)
+ "Keep only those lines in the agenda buffer that have a specific tag.
+The tag is selected with its fast selection letter, as configured.
+With prefix argument STRIP, remove all lines that do have the tag."
+ (interactive "P")
+ (let (char a tag tags (inhibit-read-only t))
+ (message "Select tag [%s] or no tag [ ], [TAB] to complete, [/] to restore: "
+ (mapconcat
+ (lambda (x) (if (cdr x) (char-to-string (cdr x)) ""))
+ org-tag-alist-for-agenda ""))
+ (setq char (read-char))
+ (when (equal char ?\t)
+ (unless (local-variable-p 'org-global-tags-completion-table)
+ (org-set-local 'org-global-tags-completion-table
+ (org-global-tags-completion-table)))
+ (let ((completion-ignore-case t))
+ (setq tag (completing-read
+ "Tag: " org-global-tags-completion-table))))
+ (cond
+ ((equal char ?/) (org-agenda-filter-by-tag-show-all))
+ ((or (equal char ?\ )
+ (setq a (rassoc char org-tag-alist-for-agenda))
+ (and tag (setq a (cons tag nil))))
+ (org-agenda-filter-by-tag-show-all)
+ (setq tag (car a))
+ (save-excursion
+ (goto-char (point-min))
+ (while (not (eobp))
+ (if (get-text-property (point) 'org-marker)
+ (progn
+ (setq tags (get-text-property (point) 'tags))
+ (if (not tag)
+ (if (or (and strip (not tags))
+ (and (not strip) tags))
+ (org-agenda-filter-by-tag-hide-line))
+ (if (or (and (member tag tags) strip)
+ (and (not (member tag tags)) (not strip)))
+ (org-agenda-filter-by-tag-hide-line)))
+ (beginning-of-line 2))
+ (beginning-of-line 2)))))
+ (t (error "Invalid tag selection character %c" char)))))
+
+(defvar org-agenda-filter-overlays nil)
+
+(defun org-agenda-filter-by-tag-hide-line ()
+ (let (ov)
+ (setq ov (org-make-overlay (max (point-min) (1- (point-at-bol)))
+ (point-at-eol)))
+ (org-overlay-put ov 'invisible t)
+ (org-overlay-put ov 'type 'tags-filter)
+ (push ov org-agenda-filter-overlays)))
+
+(defun org-agenda-filter-by-tag-show-all ()
+ (mapc 'org-delete-overlay org-agenda-filter-overlays)
+ (setq org-agenda-filter-overlays nil))
+
(defun org-agenda-manipulate-query-add ()
"Manipulate the query by adding a search term with positive selection.
Positive selection means, the term must be matched for selection of an entry."
@@ -4768,8 +4867,12 @@ the new TODO state."
(if line (point-at-eol) nil) t)
(add-text-properties
(match-beginning 2) (match-end 2)
- (list 'face (delq nil (list 'org-tag (get-text-property
- (match-beginning 2) 'face)))))
+ (list 'face (delq nil (adjoin 'org-tag
+ (let ((prop (get-text-property
+ (match-beginning 2) 'face)))
+ (if (listp prop)
+ prop
+ (list prop)))))))
(setq l (- (match-end 2) (match-beginning 2))
c (if (< org-agenda-tags-column 0)
(- (abs org-agenda-tags-column) l)
@@ -5265,7 +5368,7 @@ belonging to the \"Work\" category."
(org-deadline-warning-days 0)
(today (org-date-to-gregorian
(time-to-days (current-time))))
- (files (org-agenda-files)) entries file)
+ (files (org-agenda-files 'unrestricted)) entries file)
;; Get all entries which may contain an appt
(while (setq file (pop files))
(setq entries
@@ -5276,7 +5379,7 @@ belonging to the \"Work\" category."
;; Map thru entries and find if we should filter them out
(mapc
(lambda(x)
- (let* ((evt (org-trim (get-text-property 1 'txt x)))
+ (let* ((evt (org-trim (or (get-text-property 1 'txt x) "")))
(cat (get-text-property 1 'org-category x))
(tod (get-text-property 1 'time-of-day x))
(ok (or (null filter)
@@ -5289,9 +5392,9 @@ belonging to the \"Work\" category."
;; FIXME: Shall we remove text-properties for the appt text?
;; (setq evt (set-text-properties 0 (length evt) nil evt))
(when (and ok tod)
- (setq tod (number-to-string tod)
+ (setq tod (concat "00" (number-to-string tod))
tod (when (string-match
- "\\([0-9]\\{1,2\\}\\)\\([0-9]\\{2\\}\\)" tod)
+ "\\([0-9]\\{1,2\\}\\)\\([0-9]\\{2\\}\\)\\'" tod)
(concat (match-string 1 tod) ":"
(match-string 2 tod))))
(appt-add tod evt)
@@ -5301,10 +5404,20 @@ belonging to the \"Work\" category."
(message "No event to add")
(message "Added %d event%s for today" cnt (if (> cnt 1) "s" "")))))
+(defun org-agenda-todayp (date)
+ "Does DATE mean today, when considering `org-extend-today-until'?"
+ (let (today h)
+ (if (listp date) (setq date (calendar-absolute-from-gregorian date)))
+ (setq today (calendar-absolute-from-gregorian (calendar-current-date)))
+ (setq h (nth 2 (decode-time (current-time))))
+ (or (and (>= h org-extend-today-until)
+ (= date today))
+ (and (< h org-extend-today-until)
+ (= date (1- today))))))
+
(provide 'org-agenda)
;; arch-tag: 77f7565d-7c4b-44af-a2df-9f6f7070cff1
;;; org-agenda.el ends here
-
diff --git a/lisp/org/org-archive.el b/lisp/org/org-archive.el
index 3cd44dafd3e..91705775e00 100644
--- a/lisp/org/org-archive.el
+++ b/lisp/org/org-archive.el
@@ -5,7 +5,7 @@
;; Author: Carsten Dominik
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
-;; Version: 6.06b
+;; Version: 6.09a
;;
;; This file is part of GNU Emacs.
;;
@@ -353,6 +353,7 @@ sibling does not exist, it will be created at the end of the subtree."
(current-time)))
(outline-up-heading 1 t)
(hide-subtree)
+ (org-cycle-show-empty-lines 'folded)
(goto-char pos))))
(defun org-archive-all-done (&optional tag)
diff --git a/lisp/org/org-bbdb.el b/lisp/org/org-bbdb.el
index 947b55933ce..fa72ba57086 100644
--- a/lisp/org/org-bbdb.el
+++ b/lisp/org/org-bbdb.el
@@ -6,7 +6,7 @@
;; Thomas Baumann
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
-;; Version: 6.06b
+;; Version: 6.09a
;;
;; This file is part of GNU Emacs.
;;
@@ -276,6 +276,7 @@ This is used by Org to re-create the anniversary hash table."
;;;###autoload
(defun org-bbdb-anniversaries()
"Extract anniversaries from BBDB for display in the agenda."
+ (require 'bbdb)
(require 'diary-lib)
(unless (hash-table-p org-bbdb-anniv-hash)
(setq org-bbdb-anniv-hash
@@ -290,11 +291,15 @@ This is used by Org to re-create the anniversary hash table."
(y (nth 2 date)) ; year
(annivs (gethash (list m d) org-bbdb-anniv-hash))
(text ())
- split class form rec)
+ split class form rec recs)
;; we don't want to miss people born on Feb. 29th
- (when (and (= m 3) (= d 1) (not (calendar-leap-year-p y)))
- (setq annivs (cons annivs (gethash (list 2 29) org-bbdb-anniv-hash))))
+ (when (and (= m 3) (= d 1)
+ (not (null (gethash (list 2 29) org-bbdb-anniv-hash)))
+ (not (calendar-leap-year-p y)))
+ (setq recs (gethash (list 2 29) org-bbdb-anniv-hash))
+ (while (setq rec (pop recs))
+ (push rec annivs)))
(when annivs
(while (setq rec (pop annivs))
diff --git a/lisp/org/org-bibtex.el b/lisp/org/org-bibtex.el
index 6c067f533df..3b92b9c3430 100644
--- a/lisp/org/org-bibtex.el
+++ b/lisp/org/org-bibtex.el
@@ -5,7 +5,7 @@
;; Author: Bastien Guerry
;; Carsten Dominik
;; Keywords: org, wp, remember
-;; Version: 6.06b
+;; Version: 6.09a
;;
;; This file is part of GNU Emacs.
;;
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index dcaa8a08140..4a14100e2bf 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -5,7 +5,7 @@
;; Author: Carsten Dominik
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
-;; Version: 6.06b
+;; Version: 6.09a
;;
;; This file is part of GNU Emacs.
;;
@@ -86,6 +86,10 @@ The function is called with point at the beginning of the headline."
:group 'org-clock
:type 'function)
+(defcustom org-clock-string-limit 0
+ "Maximum length of clock strings in the modeline. 0 means no limit"
+ :group 'org-clock
+ :type 'integer)
;;; The clock for measuring work time.
@@ -94,6 +98,7 @@ The function is called with point at the beginning of the headline."
(defvar org-mode-line-timer nil)
(defvar org-clock-heading "")
+(defvar org-clock-heading-for-remember "")
(defvar org-clock-start-time "")
(defvar org-clock-history nil
@@ -107,6 +112,9 @@ of a different task.")
(defvar org-clock-interrupted-task (make-marker)
"Marker pointing to the task that has been interrupted by the current clock.")
+(defvar org-clock-mode-map (make-sparse-keymap))
+(define-key org-clock-mode-map [mode-line mouse-2] 'org-clock-goto)
+
(defun org-clock-history-push (&optional pos buffer)
"Push a marker to the clock history."
(setq org-clock-history-length (max 1 (min 35 org-clock-history-length)))
@@ -190,15 +198,24 @@ of a different task.")
(when (and cat task)
(insert (format "[%c] %-15s %s\n" i cat task))
(cons i marker)))))
-
+
(defun org-update-mode-line ()
(let* ((delta (- (time-to-seconds (current-time))
- (time-to-seconds org-clock-start-time)))
+ (time-to-seconds org-clock-start-time)))
(h (floor delta 3600))
(m (floor (- delta (* 3600 h)) 60)))
(setq org-mode-line-string
- (propertize (format (concat "-[" org-time-clocksum-format " (%s)]") h m org-clock-heading)
- 'help-echo "Org-mode clock is running"))
+ (org-propertize
+ (let ((clock-string (format (concat "-[" org-time-clocksum-format " (%s)]")
+ h m org-clock-heading))
+ (help-text "Org-mode clock is running. Mouse-2 to go there."))
+ (if (and (> org-clock-string-limit 0)
+ (> (length clock-string) org-clock-string-limit))
+ (org-propertize (substring clock-string 0 org-clock-string-limit)
+ 'help-echo (concat help-text ": " org-clock-heading))
+ (org-propertize clock-string 'help-echo help-text)))
+ 'local-map org-clock-mode-map
+ 'mouse-face '(face mode-line-highlight)))
(force-mode-line-update)))
(defvar org-clock-mode-line-entry nil
@@ -253,13 +270,18 @@ the clocking selection, associated with the letter `d'."
org-clock-in-switch-to-state
"\\>"))))
(org-todo org-clock-in-switch-to-state))
- (if (and org-clock-heading-function
- (functionp org-clock-heading-function))
- (setq org-clock-heading (funcall org-clock-heading-function))
- (if (looking-at org-complex-heading-regexp)
- (setq org-clock-heading (match-string 4))
- (setq org-clock-heading "???")))
- (setq org-clock-heading (propertize org-clock-heading 'face nil))
+ (setq org-clock-heading-for-remember
+ (and (looking-at org-complex-heading-regexp)
+ (match-end 4)
+ (org-trim (buffer-substring (match-end 1) (match-end 4)))))
+ (setq org-clock-heading
+ (cond ((and org-clock-heading-function
+ (functionp org-clock-heading-function))
+ (funcall org-clock-heading-function))
+ ((looking-at org-complex-heading-regexp)
+ (match-string 4))
+ (t "???")))
+ (setq org-clock-heading (org-propertize org-clock-heading 'face nil))
(org-clock-find-position)
(insert "\n") (backward-char 1)
@@ -306,6 +328,7 @@ the clocking selection, associated with the letter `d'."
;; Wrap current entries into a new drawer
(goto-char last)
(beginning-of-line 2)
+ (if (org-at-item-p) (org-end-of-item))
(insert ":END:\n")
(beginning-of-line 0)
(org-indent-line-function)
@@ -368,7 +391,8 @@ If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
(delete-char 1)))
(move-marker org-clock-marker nil)
(when org-log-note-clock-out
- (org-add-log-setup 'clock-out))
+ (org-add-log-setup 'clock-out nil nil nil
+ (concat "# Task: " (org-get-heading t) "\n\n")))
(when org-mode-line-timer
(cancel-timer org-mode-line-timer)
(setq org-mode-line-timer nil))
diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el
index 5c6d46becbf..18c14ccaeb7 100644
--- a/lisp/org/org-colview.el
+++ b/lisp/org/org-colview.el
@@ -5,7 +5,7 @@
;; Author: Carsten Dominik
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
-;; Version: 6.06b
+;; Version: 6.09a
;;
;; This file is part of GNU Emacs.
;;
@@ -147,7 +147,7 @@ This is the compiled version of the format.")
(face (list color 'org-column ref-face))
(pl (or (get-text-property (point-at-bol) 'prefix-length) 0))
(cphr (get-text-property (point-at-bol) 'org-complex-heading-regexp))
- pom property ass width f string ov column val modval s1 s2)
+ pom property ass width f string ov column val modval s1 s2 title)
;; Check if the entry is in another buffer.
(unless props
(if (eq major-mode 'org-agenda-mode)
@@ -158,6 +158,7 @@ This is the compiled version of the format.")
;; Walk the format
(while (setq column (pop fmt))
(setq property (car column)
+ title (nth 1 column)
ass (if (equal property "ITEM")
(cons "ITEM"
(save-match-data
@@ -171,12 +172,18 @@ This is the compiled version of the format.")
(length property))
f (format "%%-%d.%ds | " width width)
val (or (cdr ass) "")
- modval (if (equal property "ITEM")
- (if (org-mode-p)
- (org-columns-cleanup-item
- val org-columns-current-fmt-compiled)
- (org-agenda-columns-cleanup-item
- val pl cphr org-columns-current-fmt-compiled))))
+ modval (or (and org-columns-modify-value-for-display-function
+ (functionp
+ org-columns-modify-value-for-display-function)
+ (funcall
+ org-columns-modify-value-for-display-function
+ title val))
+ (if (equal property "ITEM")
+ (if (org-mode-p)
+ (org-columns-cleanup-item
+ val org-columns-current-fmt-compiled)
+ (org-agenda-columns-cleanup-item
+ val pl cphr org-columns-current-fmt-compiled)))))
(setq s2 (org-columns-add-ellipses (or modval val) width))
(setq string (format f s2))
;; Create the overlay
@@ -531,7 +538,8 @@ an integer, select that value."
(and (memq
(nth 4 (assoc key org-columns-current-fmt-compiled))
'(checkbox checkbox-n-of-m checkbox-percent))
- '("[ ]" "[X]"))))
+ '("[ ]" "[X]"))
+ (org-colview-construct-allowed-dates value)))
nval)
(when (integerp nth)
(setq nth (1- nth))
@@ -580,6 +588,27 @@ an integer, select that value."
(and (nth 3 (assoc key org-columns-current-fmt-compiled))
(org-columns-update key))))))
+(defun org-colview-construct-allowed-dates (s)
+ "Construct a list of three dates around the date in S.
+This respects the format of the time stamp in S, active or non-active,
+and also including time or not. S must be just a time stamp, no text
+around it."
+ (when (string-match (concat "^" org-ts-regexp3 "$") s)
+ (let* ((time (org-parse-time-string s 'nodefaults))
+ (active (equal (string-to-char s) ?<))
+ (fmt (funcall (if (nth 1 time) 'cdr 'car) org-time-stamp-formats))
+ time-before time-after)
+ (unless active (setq fmt (concat "[" (substring fmt 1 -1) "]")))
+ (setf (car time) (or (car time) 0))
+ (setf (nth 1 time) (or (nth 1 time) 0))
+ (setf (nth 2 time) (or (nth 2 time) 0))
+ (setq time-before (copy-sequence time))
+ (setq time-after (copy-sequence time))
+ (setf (nth 3 time-before) (1- (nth 3 time)))
+ (setf (nth 3 time-after) (1+ (nth 3 time)))
+ (mapcar (lambda (x) (format-time-string fmt (apply 'encode-time x)))
+ (list time-before time time-after)))))
+
(defun org-verify-version (task)
(cond
((eq task 'columns)
@@ -595,7 +624,6 @@ an integer, select that value."
(defun org-columns-get-format-and-top-level ()
(let (fmt)
(when (condition-case nil (org-back-to-heading) (error nil))
- (move-marker org-entry-property-inherited-from nil)
(setq fmt (org-entry-get nil "COLUMNS" t)))
(setq fmt (or fmt org-columns-default-format))
(org-set-local 'org-columns-current-fmt fmt)
@@ -1052,8 +1080,9 @@ PARAMS is a property list of parameters:
(hlines (plist-get params :hlines))
(vlines (plist-get params :vlines))
(maxlevel (plist-get params :maxlevel))
+ (content-lines (org-split-string (plist-get params :content) "\n"))
(skip-empty-rows (plist-get params :skip-empty-rows))
- tbl id idpos nfields tmp)
+ tbl id idpos nfields tmp recalc line)
(save-excursion
(save-restriction
(when (setq id (plist-get params :id))
@@ -1088,12 +1117,22 @@ PARAMS is a property list of parameters:
tbl))
(setq tbl (append tbl (list (cons "/" (make-list nfields "<>"))))))
(setq pos (point))
+ (when content-lines
+ (while (string-match "^#" (car content-lines))
+ (insert (pop content-lines) "\n")))
(insert (org-listtable-to-string tbl))
(when (plist-get params :width)
(insert "\n|" (mapconcat (lambda (x) (format "<%d>" (max 3 x)))
org-columns-current-widths "|")))
- (goto-char pos)
- (org-table-align))))
+ (while (setq line (pop content-lines))
+ (when (string-match "^#" line)
+ (insert "\n" line)
+ (when (string-match "^#\\+TBLFM" line)
+ (setq recalc t))))
+ (if recalc
+ (progn (goto-char pos) (org-table-recalculate 'all))
+ (goto-char pos)
+ (org-table-align)))))
(defun org-listtable-to-string (tbl)
"Convert a listtable TBL to a string that contains the Org-mode table.
diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el
index a80f671aceb..22348e5f19d 100644
--- a/lisp/org/org-compat.el
+++ b/lisp/org/org-compat.el
@@ -5,7 +5,7 @@
;; Author: Carsten Dominik
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
-;; Version: 6.06b
+;; Version: 6.09a
;;
;; This file is part of GNU Emacs.
;;
@@ -30,6 +30,8 @@
;;; Code:
+(require 'org-macs)
+
(defconst org-xemacs-p (featurep 'xemacs)) ; not used by org.el itself
(defconst org-format-transports-properties-p
(let ((x "a"))
@@ -245,6 +247,22 @@ that can be added."
(set-extent-property (car ext-inv-spec) 'invisible
(cadr ext-inv-spec))))
(move-to-column column force)))
+
+(defun org-get-x-clipboard-compat (value)
+ "Get the clipboard value on XEmacs or Emacs 21"
+ (cond (org-xemacs-p (org-no-warnings (get-selection-no-error value)))
+ ((fboundp 'x-get-selection)
+ (condition-case nil
+ (or (x-get-selection value 'UTF8_STRING)
+ (x-get-selection value 'COMPOUND_TEXT)
+ (x-get-selection value 'STRING)
+ (x-get-selection value 'TEXT))
+ (error nil)))))
+
+(defun org-propertize (string &rest properties)
+ (if (featurep 'xemacs)
+ (add-text-properties 0 (length string) properties string)
+ (apply 'propertize string properties)))
(provide 'org-compat)
diff --git a/lisp/org/org-exp.el b/lisp/org/org-exp.el
index bfdeb1271e8..081b33309ea 100644
--- a/lisp/org/org-exp.el
+++ b/lisp/org/org-exp.el
@@ -5,7 +5,7 @@
;; Author: Carsten Dominik
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
-;; Version: 6.06b
+;; Version: 6.09a
;;
;; This file is part of GNU Emacs.
;;
@@ -64,6 +64,24 @@ force an export command into the current process."
:group 'org-export-general
:type 'boolean)
+
+(defcustom org-export-select-tags '("export")
+ "Tags that select a tree for export.
+If any such tag is found in a buffer, all trees that do not carry one
+of these tags will be deleted before export.
+Inside trees that are selected like this, you can still deselect a
+subtree by tagging it with one of the `org-export-excude-tags'."
+ :group 'org-export-general
+ :type '(repeat (string :tag "Tag")))
+
+(defcustom org-export-exclude-tags '("noexport")
+ "Tags that exclude a tree from export.
+All trees carrying any of these tags will be excluded from export.
+This is without contition, so even subtrees inside that carry one of the
+`org-export-select-tags' will be removed."
+ :group 'org-export-general
+ :type '(repeat (string :tag "Tag")))
+
(defcustom org-export-with-special-strings t
"Non-nil means, interpret \"\-\", \"--\" and \"---\" for export.
When this option is turned on, these strings will be exported as:
@@ -494,6 +512,13 @@ Org-mode file."
table { border-collapse: collapse; }
td, th { vertical-align: top; }
dt { font-weight: bold; }
+
+ .org-info-js_info-navigation { border-style:none; }
+ #org-info-js_console-label { font-size:10px; font-weight:bold;
+ white-space:nowrap; }
+ .org-info-js_search-highlight {background-color:#ffff00; color:#000000;
+ font-weight:bold; }
+
"
"The default style specification for exported HTML files.
Please use the variables `org-export-html-style' and
@@ -540,6 +565,7 @@ settings with tags."
;;;###autoload
(put 'org-export-html-style-extra 'safe-local-variable 'stringp)
+
(defcustom org-export-html-title-format "%s
\n"
"Format for typesetting the document title in HTML export."
:group 'org-export-html
@@ -687,6 +713,22 @@ todo-start Scheduling time stamps in TODO entries become start date.
(const :tag "SCHEDULED in TODO entries become start date"
todo-start)))
+(defcustom org-icalendar-categories '(local-tags category)
+ "Items that should be entered into the categories field.
+This is a list of symbols, the following are valid:
+
+category The Org-mode category of the current file or tree
+todo-state The todo state, if any
+local-tags The tags, defined in the current line
+all-tags All tags, including inherited ones."
+ :group 'org-export-icalendar
+ :type '(repeat
+ (choice
+ (const :tag "The file or tree category" category)
+ (const :tag "The TODO state" todo-state)
+ (const :tag "Tags defined in current line" local-tags)
+ (const :tag "All tags, including inherited ones" all-tags))))
+
(defcustom org-icalendar-include-todo nil
"Non-nil means, export to iCalendar files should also cover TODO items."
:group 'org-export-icalendar
@@ -733,9 +775,9 @@ or if they are only using it locally."
(defconst org-level-max 20)
(defvar org-export-html-preamble nil
- "Preamble, to be inserted just after . Set by publishing functions.")
+ "Preamble, to be inserted just before . Set by publishing functions.")
(defvar org-export-html-postamble nil
- "Preamble, to be inserted just before . Set by publishing functions.")
+ "Preamble, to be inserted just after . Set by publishing functions.")
(defvar org-export-html-auto-preamble t
"Should default preamble be inserted? Set by publishing functions.")
(defvar org-export-html-auto-postamble t
@@ -785,7 +827,9 @@ or if they are only using it locally."
(:auto-preamble . org-export-html-auto-preamble)
(:auto-postamble . org-export-html-auto-postamble)
(:author . user-full-name)
- (:email . user-mail-address)))
+ (:email . user-mail-address)
+ (:select-tags . org-export-select-tags)
+ (:exclude-tags . org-export-exclude-tags)))
(defun org-default-export-plist ()
"Return the property list with default settings for the export variables."
@@ -821,9 +865,11 @@ modified) list.")
(let ((re (org-make-options-regexp
(append
'("TITLE" "AUTHOR" "DATE" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE"
- "LINK_UP" "LINK_HOME" "SETUPFILE")
+ "LINK_UP" "LINK_HOME" "SETUPFILE" "STYLE" "LATEX_HEADER"
+ "EXPORT_SELECT_TAGS" "EXPORT_EXCLUDE_TAGS")
(mapcar 'car org-export-inbuffer-options-extra))))
- p key val text options js-up js-main js-css js-opt a pr
+ p key val text options js-up js-main js-css js-opt a pr style
+ latex-header
ext-setup-or-nil setup-contents (start 0))
(while (or (and ext-setup-or-nil
(string-match re ext-setup-or-nil start)
@@ -841,6 +887,10 @@ modified) list.")
((string-equal key "EMAIL") (setq p (plist-put p :email val)))
((string-equal key "DATE") (setq p (plist-put p :date val)))
((string-equal key "LANGUAGE") (setq p (plist-put p :language val)))
+ ((string-equal key "STYLE")
+ (setq style (concat style "\n" val)))
+ ((string-equal key "LATEX_HEADER")
+ (setq latex-header (concat latex-header "\n" val)))
((string-equal key "TEXT")
(setq text (if text (concat text "\n" val) val)))
((string-equal key "OPTIONS")
@@ -849,6 +899,10 @@ modified) list.")
(setq p (plist-put p :link-up val)))
((string-equal key "LINK_HOME")
(setq p (plist-put p :link-home val)))
+ ((string-equal key "EXPORT_SELECT_TAGS")
+ (setq p (plist-put p :select-tags (org-split-string val))))
+ ((string-equal key "EXPORT_EXCLUDE_TAGS")
+ (setq p (plist-put p :exclude-tags (org-split-string val))))
((equal key "SETUPFILE")
(setq setup-contents (org-file-contents
(expand-file-name
@@ -862,6 +916,9 @@ modified) list.")
"\n" setup-contents "\n"
(substring ext-setup-or-nil start)))))))
(setq p (plist-put p :text text))
+ (when style (setq p (plist-put p :style-extra style)))
+ (when latex-header
+ (setq p (plist-put p :latex-header-extra (substring latex-header 1))))
(when options
(setq p (org-export-add-options-to-plist p options)))
p))))
@@ -1345,9 +1402,13 @@ on this string to produce the exported version."
(setq case-fold-search t)
(untabify (point-min) (point-max))
- ;; Handle incude files
+ ;; Handle include files
(org-export-handle-include-files)
+ ;; Get rid of excluded trees
+ (org-export-handle-export-tags (plist-get parameters :select-tags)
+ (plist-get parameters :exclude-tags))
+
;; Handle source code snippets
(org-export-replace-src-segments)
@@ -1377,7 +1438,7 @@ on this string to produce the exported version."
(setq target-alist (org-export-handle-invisible-targets target-alist))
;; Protect examples
- (org-export-protect-examples)
+ (org-export-protect-examples (if asciip 'indent nil))
;; Protect backend specific stuff, throw away the others.
(org-export-select-backend-specific-text
@@ -1395,6 +1456,26 @@ on this string to produce the exported version."
;; Remove comment environment and comment subtrees
(org-export-remove-comment-blocks-and-subtrees)
+
+ ;; Find matches for radio targets and turn them into internal links
+ (org-export-mark-radio-links)
+
+ ;; Find all links that contain a newline and put them into a single line
+ (org-export-concatenate-multiline-links)
+
+ ;; Normalize links: Convert angle and plain links into bracket links
+ ;; and expand link abbreviations
+ (org-export-normalize-links)
+
+ ;; Find all internal links. If they have a fuzzy match (i.e. not
+ ;; a *dedicated* target match, let the link point to the
+ ;; corresponding section.
+ (org-export-target-internal-links target-alist)
+
+ ;; Find multiline emphasis and put them into single line
+ (when (plist-get parameters :emph-multiline)
+ (org-export-concatenate-multiline-emphasis))
+
;; Remove special table lines
(when org-export-table-remove-special-lines
(org-export-remove-special-table-lines))
@@ -1415,24 +1496,6 @@ on this string to produce the exported version."
;; Remove or replace comments
(org-export-handle-comments (plist-get parameters :comments))
- ;; Find matches for radio targets and turn them into internal links
- (org-export-mark-radio-links)
-
- ;; Find all links that contain a newline and put them into a single line
- (org-export-concatenate-multiline-links)
-
- ;; Normalize links: Convert angle and plain links into bracket links
- ;; and expand link abbreviations
- (org-export-normalize-links)
-
- ;; Find all internal links. If they have a fuzzy match (i.e. not
- ;; a *dedicated* target match, let the link point to the
- ;; corresponding section.
- (org-export-target-internal-links target-alist)
-
- ;; Find multiline emphasis and put them into single line
- (when (plist-get parameters :emph-multiline)
- (org-export-concatenate-multiline-emphasis))
(setq rtn (buffer-string)))
(kill-buffer " org-mode-tmp")
@@ -1545,6 +1608,60 @@ whose content to keep."
(while (re-search-forward re nil t)
(replace-match "")))))
+(defun org-export-handle-export-tags (select-tags exclude-tags)
+ "Modify the buffer, honoring SELECT-TAGS and EXCLUDE-TAGS.
+Both arguments are lists of tags.
+If any of SELECT-TAGS is found, all trees not marked by a SELECT-TAG
+will be removed.
+After that, all subtrees that are marked by EXCLUDE-TAGS will be
+removed as well."
+ (remove-text-properties (point-min) (point-max) '(:org-delete t))
+ (let* ((re-sel (concat ":\\(" (mapconcat 'regexp-quote
+ select-tags "\\|")
+ "\\):"))
+ (re-excl (concat ":\\(" (mapconcat 'regexp-quote
+ exclude-tags "\\|")
+ "\\):"))
+ beg end cont)
+ (goto-char (point-min))
+ (when (and select-tags
+ (re-search-forward
+ (concat "^\\*+[ \t].*" re-sel "[^ \t\n]*[ \t]*$") nil t))
+ ;; At least one tree is marked for export, this means
+ ;; all the unmarked stuff needs to go.
+ ;; Dig out the trees that should be exported
+ (goto-char (point-min))
+ (outline-next-heading)
+ (setq beg (point))
+ (put-text-property beg (point-max) :org-delete t)
+ (while (re-search-forward re-sel nil t)
+ (when (org-on-heading-p)
+ (org-back-to-heading)
+ (remove-text-properties
+ (max (1- (point)) (point-min))
+ (setq cont (save-excursion (org-end-of-subtree t t)))
+ '(:org-delete t))
+ (while (and (org-up-heading-safe)
+ (get-text-property (point) :org-delete))
+ (remove-text-properties (max (1- (point)) (point-min))
+ (point-at-eol) '(:org-delete t)))
+ (goto-char cont))))
+ ;; Remove the trees explicitly marked for noexport
+ (when exclude-tags
+ (goto-char (point-min))
+ (while (re-search-forward re-excl nil t)
+ (when (org-at-heading-p)
+ (org-back-to-heading t)
+ (setq beg (point))
+ (org-end-of-subtree t)
+ (delete-region beg (point)))))
+ ;; Remove everything that is now still marked for deletion
+ (goto-char (point-min))
+ (while (setq beg (text-property-any (point-min) (point-max) :org-delete t))
+ (setq end (or (next-single-property-change beg :org-delete)
+ (point-max)))
+ (delete-region beg end))))
+
(defun org-export-remove-archived-trees (export-archived-trees)
"Remove archived trees.
When EXPORT-ARCHIVED-TREES is `headline;, only the headline will be exported.
@@ -1582,13 +1699,13 @@ from the buffer."
'(org-protected t))
(goto-char (1+ (match-end 4)))))
-(defun org-export-protect-examples ()
+(defun org-export-protect-examples (&optional indent)
"Protect code that should be exported as monospaced examples."
(goto-char (point-min))
(while (re-search-forward "^#\\+BEGIN_EXAMPLE[ \t]*\n" nil t)
(goto-char (match-end 0))
(while (and (not (looking-at "#\\+END_EXAMPLE")) (not (eobp)))
- (insert ": ")
+ (insert (if indent ": " ":"))
(beginning-of-line 2)))
(goto-char (point-min))
(while (re-search-forward "^[ \t]*:.*\\(\n[ \t]*:.*\\)*" nil t)
@@ -1763,7 +1880,9 @@ can work correctly."
(let ((inhibit-read-only t))
(save-excursion
(goto-char (point-min))
- (let ((end (save-excursion (outline-next-heading) (point))))
+ (let ((end (if (looking-at org-outline-regexp)
+ (point)
+ (save-excursion (outline-next-heading) (point)))))
(when (re-search-forward "^[ \t]*[^|# \t\r\n].*\n" end t)
;; Mark the line so that it will not be exported as normal text.
(org-unmodified
@@ -2104,6 +2223,8 @@ underlined headlines. The default is 3."
(plist-get opt-plist :skip-before-1st-heading)
:drawers (plist-get opt-plist :drawers)
:verbatim-multiline t
+ :select-tags (plist-get opt-plist :select-tags)
+ :exclude-tags (plist-get opt-plist :exclude-tags)
:archived-trees
(plist-get opt-plist :archived-trees)
:add-text (plist-get opt-plist :text))
@@ -2463,9 +2584,10 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
#+EMAIL: %s
#+DATE: %s
#+LANGUAGE: %s
-#+TEXT: Some descriptive text to be emitted. Several lines OK.
#+OPTIONS: H:%d num:%s toc:%s \\n:%s @:%s ::%s |:%s ^:%s -:%s f:%s *:%s TeX:%s LaTeX:%s skip:%s d:%s tags:%s
%s
+#+EXPORT_SELECT_TAGS: %s
+#+EXPORT_EXCUDE_TAGS: %s
#+LINK_UP: %s
#+LINK_HOME: %s
#+CATEGORY: %s
@@ -2480,7 +2602,7 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
#+LINK: %s
"
(buffer-name) (user-full-name) user-mail-address
- (format-time-string (car org-time-stamp-formats))
+ (format-time-string (substring (car org-time-stamp-formats) 1 -1))
org-export-default-language
org-export-headline-levels
org-export-with-section-numbers
@@ -2499,6 +2621,8 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
org-export-with-drawers
org-export-with-tags
(if (featurep 'org-jsinfo) (org-infojs-options-inbuffer-template) "")
+ (mapconcat 'identity org-export-select-tags " ")
+ (mapconcat 'identity org-export-exclude-tags " ")
org-export-html-link-up
org-export-html-link-home
(file-name-nondirectory buffer-file-name)
@@ -2769,6 +2893,8 @@ PUB-DIR is set, use this as the publishing directory."
:drawers (plist-get opt-plist :drawers)
:archived-trees
(plist-get opt-plist :archived-trees)
+ :select-tags (plist-get opt-plist :select-tags)
+ :exclude-tags (plist-get opt-plist :exclude-tags)
:add-text
(plist-get opt-plist :text)
:LaTeX-fragments
@@ -2930,6 +3056,8 @@ lang=\"%s\" xml:lang=\"%s\">
(setq head-count 0)
(org-init-section-numbers)
+ (org-open-par)
+
(while (setq line (pop lines) origline line)
(catch 'nextline
@@ -2994,11 +3122,11 @@ lang=\"%s\" xml:lang=\"%s\">
(throw 'nextline nil))
(when inverse
(let ((i (org-get-string-indentation line)))
- (if (> i 0)
- (setq line (concat (mapconcat 'identity
- (make-list (* 2 i) "\\nbsp") "")
- " " (org-trim line))))
- (setq line (concat line " \\\\"))))
+ (if (> i 0)
+ (setq line (concat (mapconcat 'identity
+ (make-list (* 2 i) "\\nbsp") "")
+ " " (org-trim line))))
+ (setq line (concat line " \\\\"))))
;; make targets to anchors
(while (string-match "<<\\([^<>]*\\)>>>?\\((INVISIBLE)\\)?[ \t]*\n?" line)
@@ -3306,7 +3434,7 @@ lang=\"%s\" xml:lang=\"%s\">
(org-html-level-start 1 nil umax
(and org-export-with-toc (<= level umax))
head-count)
- ;; the to lose the last text-... div.
+ ;; the to close the last text-... div.
(insert "\n")
(unless body-only
@@ -3329,7 +3457,7 @@ lang=\"%s\" xml:lang=\"%s\">
(nth 2 lang-words) ": "
date "
\n"))
(when org-export-creator-info
- (insert (format "HTML generated by org-mode %s in emacs %s<\p>\n"
+ (insert (format "
HTML generated by org-mode %s in emacs %s
\n"
org-version emacs-major-version)))
(insert ""))
@@ -3338,8 +3466,9 @@ lang=\"%s\" xml:lang=\"%s\">
(insert (or (plist-get opt-plist :postamble) ""))
(insert "