summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Dominik <dominik@nb-dominik2.science.uva.nl>2008-01-31 11:36:18 +0100
committerCarsten Dominik <dominik@nb-dominik2.science.uva.nl>2008-01-31 11:36:18 +0100
commit70b6cc5da4f46a5951154f65730aa8572a14eea4 (patch)
tree4348564eabd5086dd5111db5436ec4996fa27071
parenta557732ba7a121626494e870aa35f2a07a787cb1 (diff)
downloadorg-mode-70b6cc5da4f46a5951154f65730aa8572a14eea4.tar.gz
Release 5.10arelease_5.10a
-rw-r--r--ChangeLog2170
-rw-r--r--Makefile20
-rw-r--r--README2
-rw-r--r--org1802
-rw-r--r--org-export-latex.el858
-rw-r--r--org-install.el10
-rw-r--r--org-mouse.el209
-rw-r--r--org-publish.el20
-rw-r--r--org.el1456
-rw-r--r--org.pdfbin794141 -> 804513 bytes
-rw-r--r--org.texi718
-rw-r--r--orgcard.pdfbin59099 -> 59121 bytes
-rw-r--r--orgcard.tex15
-rw-r--r--orgcard_letter.pdfbin59653 -> 58785 bytes
14 files changed, 5127 insertions, 2153 deletions
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..4df8910
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,2170 @@
+
+2007-09-26 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (turn-on-orgstruct++): New function.
+ (org-table-convert-region): Prefix arg interpreted differently in
+ terms of field separator.
+ (org-icalendar-include-body-as-description): New option.
+ (org-export-icalendar-clean-description): New function.
+ (org-link-escape): New argument TABLE.
+ (org-link-escape-chars-browser): New constant.
+ (org-open-at-point): Call `org-link-escape' with new argument.
+ (org-export-html-extension): New option.
+ (org-read-date): New argument DEFAULT-TIME. No longer determine
+ default time from buffer context.
+ (org-time-stamp): Pass default time to `org-read-date'.
+ (org-refresh-category-properties): New function.
+ (org-dblock-write:clocktable): Interpret the :scope parameter.
+ (org-archive-subtree): Use category properties.
+ (org-prepare-agenda-buffers): Call
+ `org-refresh-category-properties'.
+ (org-category-table): Variable removed.
+ (org-get-category-table): Function removed.
+ (org-get-category): Just get the property now.
+ (org-tags-view, org-agenda-get-day-entries)
+ (org-print-icalendar-entries): No longer create the category table.
+ (org-columns-check-computed): New function.
+ (org-columns-compute): Mark computed values.
+ (org-columns-update): Set also the `org-columns-value' property.
+ (org-indent-item): Fix bullet type before thinking about
+ renumbering.
+
+2007-09-26 Bastien Guerry <Bastien.Guerry@ens.fr>
+
+ * org-export-latex.el (org-export-latex-emphasis-alist):
+ Each list of the alist now requires three elements.
+-----------------------------------------------------------------
+Installed as 5.09
+
+ 2007-09-14 Bastien Guerry <bzg@altern.org>
+
+ * org-export-latex.el (org-export-latex-tables-verbatim): New
+ function.
+ (org-export-latex-remove-from-headlines): Name changed because of
+ typo.
+ (org-export-latex-quotation-marks-convention): Option removed.
+ (org-export-latex-make-preamble): Handle the DATE option.
+ (org-export-latex-cleaned-string): Now the only cleaning function,
+ synched up with org.el.
+ (org-export-latex-lists, org-export-latex-parse-list)
+ (org-export-list-to-latex): New functions.
+
+
+2007-09-13 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-kill-is-subtree-p): Use `org-outline-regexp'.
+ (org-outline-regexp): New constant.
+ (org-remember-handler): Throw error when the target file is not in
+ org-mode.
+ (org-cleaned-string-for-export): No longer call
+ `org-export-latex-cleaned-string' with an argument.
+ (org-get-tags): Returns now a list, not a string.
+ (org-get-tags-string): New function.
+ (org-archive-subtree): No need to split return of `org-get-tags'.
+ (org-set-tags, org-entry-properties): Call `org-get-tags-string'
+ instead of `org-get-tags'.
+ (org-agenda-format-date): Renamed from `org-agenda-date-format'.
+ (org-time-from-absolute, org-agenda-format-date-aligned): New
+ functions.
+ (org-compatible-face): New argument INHERITS. Inherit from this
+ face if possible.
+ (org-level-1, org-level-2, org-level-3, org-level-4)
+ (org-level-5, org-level-6, org-level-7, org-level-8)
+ (org-special-keyword, org-drawer, org-column, org-warning)
+ (org-archived, org-todo, org-done, org-headline-done, org-table)
+ (org-formula, org-code, org-agenda-structure)
+ (org-scheduled-today, org-scheduled-previously)
+ (org-upcoming-deadline, org-time-grid): Call `org-compatible-face'
+ in the new way.
+ (org-get-heading): New argument NO-TAGS.
+ (org-fast-tag-selection-include-todo): Made defvar instead of
+ defcustom, feature is not deprecated.
+ (org-remember-store-without-prompt): New default value t.
+ (org-todo-log-states): New variable.
+ (org-set-regexps-and-options): #+TODO is an alias for SEQ_TODO.
+ Compute the log states.
+ (org-goto-map): More commands copied from global map. Also bind
+ `org-occur'.
+ (org-goto): Made into a general lookup command.
+ (org-get-location): Complete rewrite.
+ (org-goto-exit-command): New variable.
+ (org-goto-selected-point): New variable.
+ (org-goto-ret, org-goto-left, org-goto-right, org-goto-quit): Set
+ the new variables.
+ (org-paste-subtree): Whitespace insertion strategy revised.
+ (org-remember-apply-template): Protect v-A from the possibility
+ that v-a might be nil.
+ (org-remember-handler): Insertion rules revised.
+ (org-todo): Respect org-todo-log-states.
+ (org-up-heading-safe): New function.
+ (org-entry-get-with-inheritance): Use `org-up-heading-safe'.
+
+ * org.texi: Change links to webpage and maintained email.
+ (Remember): Promoted to Chapter, significant changes.
+ (Fast access to TODO states): New section.
+ (Faces for TODO keywords): New section.
+ (Export options): Example for #+DATE.
+ (Progress logging): Section moved.
+
+----------------------------------------------------------------------
+installed in Emacs as 5.08
+
+2007-09-09 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-re): Also replace the :alpha: class.
+ (org-todo-tag-alist): Variable removed.
+ (org-todo-key-alist, org-todo-key-trigger) New variables.
+ (org-use-fast-todo-selection): New option.
+ (org-log-done): Docstring fixed.
+ (org-deadline-warning-days): New default value 14.
+ (org-edit-timestamp-down-means-later) New option.
+ (org-tag-alist): Docstring fixed.
+ (org-fast-tag-selection-include-todo): New option.
+ (org-export-language-setup): New languages added.
+ (org-set-regexps-and-options): Compute the new variables.
+ (org-paste-subtree): Cleaning up.
+ (org-remember-apply-template): New escape %A.
+ (org-todo): Call fast TODO selection.
+ (org-fast-todo-selection): New function.
+ (org-add-log-note): Allow prefix for abort exit.
+ (org-at-property-p, org-entry-properties)
+ (org-columns-get-autowidth-alist): Use :alpha: class.
+ (org-get-wdays): New function.
+ (org-agenda-remove-date): New variable.
+ (org-agenda-get-deadlines): Use `org-get-wdays'.
+ (org-agenda-get-deadlines): Reverse ee before returning.
+ (org-format-agenda-item): New argument REMOVE-RE.
+ (org-agenda-convert-date): Baha'i calendar added.
+ (org-infile-export-plist): Also find DATE line.
+ (org-get-min-level): New function.
+ (org-export-as-html, org-export-as-ascii): Use the date format.
+ (org-shiftup, org-shiftdown): Use.
+ `org-edit-timestamp-down-means-later'.
+ (org-assign-fast-keys): New function.
+
+----------------------------------------------------------------------
+
+2007-08-30 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-export-visible): Fix drawers before export.
+ (org-do-sort): Allow sorting by priority.
+ (org-agenda-files): Ignore non-existing files.
+ (org-agenda-skip-unavailable-files): New variable.
+ (org-ellipsis): All a face as value.
+ (org-mode): Interprete the face value of `org-ellipsis'.
+ (org-archive-save-context-info): New option.
+ (org-archive-subtree): Store context info in archived entry.
+ (org-fast-tag-selection-can-set-todo-state): New variable.
+ (org-fast-tag-selection): Allow setting TODO states through this
+ interface.
+ (org-cycle): Docstring updated.
+ (org-todo-keyword-faces): New option.
+ (org-get-todo-face): New function.
+ (org-set-font-lock-defaults, org-agenda-highlight-todo): Use
+ `org-get-todo-face'.
+ (org-switch-to-buffer-other-window): New function.
+ (org-table-edit-field, org-table-show-reference)
+ (org-table-edit-formulas, org-add-log-note)
+ (org-fast-tag-selection, org-agenda, org-prepare-agenda)
+ (org-timeline): Use `org-switch-to-buffer-other-window' instead of
+ `switch-to-buffer-other-window' to make sure that the temporary
+ windows show up on the current frame.
+ (org-mhe-get-message-real-folder, org-batch-store-agenda-views)
+ (org-get-entries-from-diary, org-replace-region-by-html): Don't
+ allow pop-up frames.
+ (org-agenda-get-deadlines, org-agenda-get-scheduled): Fixed
+ problems with time-of-day.
+ (org-export-get-title-from-subtree): New function.
+ (org-agenda-get-scheduled, org-agenda-get-deadlines): Fix problems
+ with listing items that are DONE.
+ (org-change-tag-in-region): New command.
+ (org-agenda-skip-scheduled-if-done)
+ (org-agenda-skip-deadline-if-done): Docstring clarified.
+ (org-mode): Hide drawers on startup.
+ (org-get-todo-face): New function.
+ (org-todo-keyword-faces): New option.
+
+-------------------------------------------------------------------------
+
+2007-08-21 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-agenda-skip): Allow a form for
+ `org-agenda-skip-function'.
+ (org-agenda-redo): Re-use local settings.
+ (org-agenda): Store local settings.
+ (org-agenda-deadline-faces): New option.
+ (org-agenda-deadline-face): New function.
+ (org-agenda-get-deadlines, org-agenda-get-scheduled): Also handle
+ entries on their due date.
+ (org-agenda-get-timestamps): No longer handle the due dates of
+ schedules and deadline items.
+ (org-insert-link-global, org-open-at-point-global): New commands.
+ (org-export-as-ascii): Call
+ `org-cleaned-string-for-export' with a :for-ascii parameter.
+ (org-skip-comments): Function removed.
+ (org-cleaned-string-for-export): Handle special table lines.
+ (org-global-properties): New option.
+ (org-entry-get-with-inheritance): Check global properties.
+ (org-local-properties): New variable.
+ (org-set-regexps-and-options): Find the #+PROPERTY line.
+ (org-link-types): Change type into variable (was constant).
+ (org-make-link-regexps): New function.
+ (org-link-re-with-space, org-link-re-with-space2)
+ (org-angle-link-re, org-plain-link-re, org-bracket-link-regexp)
+ (org-bracket-link-analytic-regexp, org-any-link-re): Creation of
+ these regular expressions happens now in the function
+ `org-make-link-regexps'.
+ (org-store-link): Call the functions in `org-store-link-functions'.
+ (org-add-link-type): New function.
+ (org-store-link-functions): New variable.
+ (org-activate-tags): Force matches to be in headlines.
+ (org-batch-store-agenda-views): Fix bug with killing agenda buffer.
+ (org-columns-display-here): Make sure this works in a narrowed
+ buffer by checking for point-min.
+ (org-columns-display-here): Make the rest of the line intangible,
+ so that point never can be there.
+ (org-cleaned-string-for-export): Use `with-current-buffer'.
+ (org-replace-region-by-html): Use `with-current-buffer'.
+ (org-unfontify-region, org-do-occur, org-columns-display-here)
+ (org-columns-remove-overlays, org-columns-quit)
+ (org-columns-edit-value, org-columns-next-allowed-value)
+ (org-eval-in-calendar, org-agenda-undo, org-no-read-only)
+ (org-finalize-agenda, org-remove-subtree-entries-from-agenda)
+ (org-agenda-todo, org-agenda-change-all-lines)
+ (org-agenda-align-tags, org-agenda-priority)
+ (org-agenda-set-tags, org-agenda-toggle-archive-tag)
+ (org-agenda-show-new-time, org-cleaned-string-for-export)
+ (org-export-grab-title-from-buffer):
+ (org-export-as-ascii, org-export-as-html): Use `inhibit-read-only'
+ instead of `buffer-read-only'.
+ (org-export-as-html): Set `coding-system-for-write'.
+ (org-remember-store-without-prompt): New option.
+ (org-archive-subtree): Fixed bug with modifying TODO keyword.
+ (org-beginning-of-line): Also treat C-a special in items.
+ (org-table-convert-refs-to-rc): Fixed problem with column
+ reference after "..".
+ (org-columns-compute): Don't mark buffer modified because of text
+ properties.
+ (org-batch-store-agenda-views): Use the variable
+ `default-directory', not the function.
+ (org-clock-out-if-current): Respect
+ `org-clock-out-when-done'.
+ (org-clock-out-when-done): New option.
+ (org-html-entities): Added HTML entities for smileys.
+
+ * org.texi (Adding hyperlink types): New section.
+ (Embedded LaTeX): Chapter updated because of LaTeX export.
+ (LaTeX export): New section.
+ (Using links out): New section.
+
+
+-----------------------------------------------------------------
+
+2007-07-10 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi (Properties and columns): Chapter rewritten.
+
+2007-07-03 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-agenda-day-view, org-agenda-week-view): Remember
+ span as default.
+
+ (org-columns-edit-value): Renamed from `org-column-edit'.
+ (org-columns-display-here-title): Renamed from
+ `org-overlay-columns-title'.
+ (org-columns-remove-overlays): ` Renamed from
+ org-remove-column-overlays'.
+ (org-columns-get-autowidth-alist): ` Renamed from
+ org-get-columns-autowidth-alist'.
+ (org-columns-display-here): Renamed from `org-overlay-columns'.
+ (org-columns-new-overlay): Renamed from `org-new-column-overlay'.
+ (org-columns-quit): Renamed from `org-column-quit'.
+ (org-columns-show-value): Renamed from `org-column-show-value'.
+ (org-columns-content, org-columns-widen)
+ (org-columns-next-allowed-value)
+ (org-columns-edit-allowed, org-columns-store-format)
+ (org-columns-uncompile-format, org-columns-redo)
+ (org-columns-edit-attributes, org-delete-property)
+ (org-set-property, org-columns-update)
+ (org-columns-compute, org-columns-eval)
+ (org-columns-not-in-agenda, org-columns-compute-all)
+ (org-property-next-allowed-value)
+ (org-columns-compile-format)
+ (org-fill-paragraph-experimental)
+ (org-string-to-number, org-property-action)
+ (org-columns-move-left, org-columns-new )
+ (org-column-number-to-string)
+ (org-property-previous-allowed-value)
+ (org-at-property-p, org-columns-delete)
+ (org-columns-previous-allowed-value)
+ (org-columns-move-right, org-columns-narrow)
+ (org-property-get-allowed-values)
+ (org-verify-version, org-column-string-to-number)
+ (org-delete-property-globally): New functions.
+ (org-columns-current-fmt): Renamed from `org-current-columns-fmt'.
+ (org-columns-overlays): Renamed from `org-column-overlays'.
+ (org-columns-map): Renamed from `org-column-map'.
+ (org-columns-current-maxwidths): Renamed from
+ `org-current-columns-maxwidths'.
+ (org-columns-begin-marker, org-columns-current-fmt-compiled)
+ (org-previous-header-line-format)
+ (org-columns-inhibit-recalculation)
+ (org-columns-top-level-marker): New variables.
+ (org-columns-default-format): Renamed from
+ `org-default-columns-format'.
+ (org-property-re): New constant.
+
+
+
+=====================================================================
+
+Installed as 5.01b
+
+2007-07-02 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (orgstruct-mode-map): New variable.
+ (orgstruct-mode): New minor mode.
+ (turn-on-orgstruct, orgstruct-error, orgstruct-setup)
+ (orgstruct-make-binding, org-context-p, org-get-local-variables)
+ (org-run-like-in-org-mode): New functions.
+ (org-cycle-list-bullet): New command.
+ (org-special-properties, org-property-start-re)
+ (org-property-end-re): New constants.
+ (org-with-point-at): New macro.
+ (org-get-property-block, org-entry-properties, org-entry-get)
+ (org-entry-delete, org-entry-get-with-inheritance)
+ (org-entry-put, org-buffer-property-keys): New functions.
+ (org-insert-property-drawer): New command.
+ (org-entry-property-inherited-from): New variable.
+ (org-column): New face.
+ (org-column-overlays, org-current-columns-fmt)
+ (org-current-columns-maxwidths, org-column-map): New variables.
+ (org-column-menu): New menu.
+ (org-new-column-overlay, org-overlay-columns)
+ (org-overlay-columns-title, org-remove-column-overlays)
+ (org-column-show-value, org-column-quit, org-column-edit): New
+ functions.
+ (org-columns, org-agenda-columns): New commands.
+ (org-get-columns-autowidth-alist): New functions.
+ (org-properties): New customize group.
+ (org-default-columns-format): New option.
+
+2007-06-28 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-priority): Realign tags after changing priority.
+ (org-preserve-lc): New macro.
+ (org-update-checkbox-count): Catch case when there is no headline.
+ (org-agenda-quit): Remove any column overlays.
+
+2007-06-25 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-beginning-of-item-list): Fixed bug when non-item
+ line is indented too deep.
+
+2007-06-24 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-cached-props): New variable.
+ (org-cached-entry-get): New function.
+ (org-make-tags-matcher): Handle property matches.
+
+2007-06-22 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-table-recalculate): Swap evaluation order: Field
+ formula first, then column formulas, but don't allow them to
+ overwrite the field formulas.
+ (org-table-eval-formula): New argument untouchable.
+ (org-table-put-field-property): New function.
+
+========================================================================
+
+2007-06-21 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-export-with-footnotes): New option.
+
+2007-06-20 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-export-as-html): Fixed replacement bug for XEmacs.
+ (org-agenda-default-appointment-duration): New option.
+
+2007-06-19 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi (Tag): Section swapped with node Timestamps.
+ (Formula syntax for Lisp): Document new `L' flag.
+
+ * org.el (org-end-time-was-given): New variable.
+ (org-read-date): Look for time range.
+ (org-timestamp-change): Deal with time range issues.
+ (org-modify-ts-extra): New function.
+ (org-remember-apply-template, org-add-planning-info)
+ (org-time-stamp, org-time-stamp-inactive): Make use of
+ `org-end-time-was-given'.
+ (org-set-regexps-and-options, org-activate-tags)
+ (org-archive-subtree, org-toggle-tag)
+ (org-make-org-heading-search-string, org-open-at-point)
+ (org-link-search, org-remember-handler, org-complete)
+ (org-scan-tags, org-make-tags-matcher, org-fast-tag-selection)
+ (org-get-tags, org-get-buffer-tags, org-dblock-write:clocktable)
+ (org-agenda-list-stuck-projects, org-format-agenda-item)
+ (org-agenda-align-tags, org-get-tags-at, org-export-as-ascii)
+ (org-ascii-level-start, org-export-as-html)
+ (org-export-cleanup-toc-line, org-html-level-start): Use [:alnum:]
+ to match tags, in order to allow lanufage-specific characters in
+ tags.
+ (org-beginning-of-item-list): New command.
+ (org-target): New face.
+ (org-activate-links): New link type target.
+
+
+
+======================================================================
+
+2007-06-06 Carsten Dominik <dominik@science.uva.nl>
+
+ * textmodes/org.el:
+ (org-export-region-as-html, org-replace-region-by-html)
+ (org-number-to-letters, org-table-fedit-finish)
+ (org-normalize-color, org-table-fedit-ref-right)
+ (org-date-to-gregorian, org-table-fedit-move)
+ (org-table-convert-refs-to-rc, org-calendar-holiday)
+ (org-table-fedit-toggle-ref-type, org-write-agenda)
+ (org-colgroup-info-to-vline-list, org-agenda-todo-previousset)
+ (org-defkey, org-encode-for-stdout)
+ (org-indent-line-function, org-export-as-html-to-buffer)
+ (org-store-agenda-views, org-update-mode-line)
+ (org-find-if, org-delete-all)
+ (org-table-fedit-convert-buffer, org-emphasize)
+ (org-uniquify, org-table-fedit-lisp-indent)
+ (org-table-fedit-scroll, org-get-todo-sequence-head)
+ (org-table-fedit-scroll-down, org-table-fedit-line-down)
+ (org-table-fedit-ref-left, org-agenda-export-csv-mapper)
+ (org-table-fedit-toggle-coordinates, org-dvipng-color)
+ (org-table-fedit-line-up, org-table-fedit-ref-down)
+ (org-table-formula-from-user, org-mode-flyspell-verify)
+ (org-cycle-show-empty-lines, org-ctrl-c-ret)
+ (org-table-formula-to-user, org-diary-to-ical-string)
+ (orgtbl-export, org-table-fedit-post-command)
+ (org-closed-in-range, org-shiftcontrolright)
+ (org-table-convert-refs-to-an, org-table-hline-and-move)
+ (org-table-formula-less-p, org-format-table-ascii)
+ (org-agenda-get-sexps, org-shift-refpart)
+ (org-diary-sexp-entry, org-time-string-to-absolute)
+ (org-table-show-reference, org-letters-to-number)
+ (org-fix-agenda-info, org-table-fedit-ref-up)
+ (org-table-fedit-shift-reference, org-table-fedit-abort)
+ (org-closest-date, org-shiftcontrolleft)
+ (org-at-heading-or-item-p, org-rematch-and-replace)
+ (org-agenda-todo-nextset, org-export-grab-title-from-buffer): New
+ function.
+ (org-table-edit-scroll-down, org-finish-edit-formulas)
+ (org-table-edit-next-field, org-abort-edit-formulas)
+ (org-font-lock-level, org-export-find-first-heading-line)
+ (org-table-edit-line-down, org-table-edit-backward-field)
+ (org-edit-formula-lisp-indent, org-table-edit-move)
+ (org-check-log-option, org-this-word)
+ (org-table-edit-line-up, org-table-edit-formulas-post-command)
+ (org-agenda-file-to-end, org-expand-file-name)
+ (org-fake-empty-table-line, org-table-edit-scroll)
+ (org-toggle-log-option, org-show-reference): Function removed.
+ (org-inhibit-invisibility, org-table-formula-make-cmp-string): New
+ defsubst.
+ (org-unmodified, org-batch-store-agenda-views)
+ (org-batch-agenda-csv): New macro.
+ (org-agenda-export): New customization group.
+ (org-agenda-skip-deadline-if-done, org-agenda-remove-tags)
+ (org-highest-priority, org-agenda-exporter-settings)
+ (org-log-done-with-time, org-replace-disputed-keys)
+ (org-format-latex-header, org-export-table-header-tags)
+ (org-cycle-separator-lines, org-export-table-data-tags)
+ (org-icalendar-include-sexps)
+ (org-empty-line-terminates-plain-lists)
+ (org-log-repeat, org-special-ctrl-a)
+ (org-table-use-standard-references, org-disputed-keys)
+ (org-export-skip-text-before-1st-heading, org-agenda-with-colors)
+ (org-agenda-export-html-style): New option.
+ (org-allow-auto-repeat, org-agenda-remove-tags-when-in-prefix)
+ (org-CUA-compatible): Option removed.
+ (org-agenda-structure, org-sexp-date): New face.
+ (org-todo-keywords-for-agenda, org-not-done-keywords)
+ (org-planning-or-clock-line-re, org-agenda-name)
+ (org-table-colgroup-info, org-todo-sets)
+ (constants-unit-system, org-clock-mode-line-entry)
+ (org-mode-line-timer, org-table-current-begin-pos)
+ (org-todo-keywords-1, org-mode-line-string)
+ (org-table-clean-did-remove-column, org-table-fedit-map)
+ (org-clock-heading, org-table-buffer-is-an)
+ (org-agenda-info, org-done-keywords)
+ (org-done-keywords-for-agenda, org-todo-heads)
+ (org-todo-kwd-alist, org-clock-start-time): New variable.
+ (org-todo-kwd-priority-p, org-edit-formulas-map)
+ (org-repeat-re, org-todo-kwd-max-priority)
+ (org-version, org-done-string)
+ (org-table-clean-did-remove-column-1, org-disputed-keys): Variable
+ removed.
+ (org-table-translate-regexp, org-repeat-re, org-version): New
+ constant.
+ (org-ts-lengths): Constant removed.
+ (org-follow-gnus-link): Don't ask how many articles to read.
+ (org-export-find-first-export-line): Renamed from
+ `org-export-find-first-heading'. Use
+ `org-export-skip-text-before-1st-heading'.
+ (org-table-fedit-post-command): Renamed from
+ `org-table-edit-formulas-post-command'.
+ (org-table-fedit-finish): Renamed from `org-finish-edit-formulas'.
+ (org-table-fedit-abort): Renamed from `org-abort-edit-formulas'.
+ (org-table-fedit-lisp-indent): Renamed from
+ `org-edit-formula-lisp-indent'.
+ (org-table-show-reference): Renamed from `org-show-reference'.
+ (org-table-store-formulas): Use `org-table-formula-less-p'.
+ (org-table-edit-formulas): Position cursor to current field
+ equation.
+ (org-update-checkbox-count, org-hide-archived-subtrees)
+ (org-timestamp-up-day, org-timestamp-down-day)
+ (org-shiftmetaleft, org-shiftmetaright, org-shiftmetaup)
+ (org-shiftmetadown, org-metaleft, org-metaright, org-metaup)
+ (org-metadown, org-shiftup, org-shiftdown, org-shiftright)
+ (org-shiftleft, org-ctrl-c-ctrl-c, org-context): Let
+ `org-on-heading-p' also check for invisible heading.
+ (org-read-date): Match am/pm times.
+ (org-eval-in-calendar): Fix default date in prompt.
+
+-------------------------------------------------------------------------
+
+installed as 4.67
+
+2007-02-25 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi (The spreadsheet): Renamed from "Table calculations".
+ Completely reorganized and rewritten.
+ (CamelCase links): Section removed.
+ (Repeating items): New section.
+ (Tracking TODO state changes): New section.
+ (Agenda views): Chapter reorganized and rewritten.
+ (HTML export): Section rewritten.
+ (Tables in arbitrary syntax): New section.
+ (Summary): Better feature summary.
+ (Activation): Document problem with cut-and-paste of Lisp code
+ from PDF files.
+ (Visibility cycling): Document indirect buffer use.
+ (Structure editing): Document sorting.
+ (Remember): Section rewritten.
+ (Time stamps): Better description of time stamp types.
+ (Tag searches): DOcument regular expression search for tags.
+ (Stuck projects): New section.
+ (In-buffer settings): New keywods.
+ (History and Acknowledgments): Updated description.
+
+2007-02-22 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-table-overlay-coordinates)
+ (org-table-toggle-coordinate-overlays): New functions.
+ (org-table-overlay-coordinates, org-table-coordinate-overlays):
+ New variables.
+ (org-startup-with-deadline-check): Option removed.
+ (org-mode): Remove deadline check on startup.
+ (org-table-limit-column-width): Option removed.
+ (org-table-formula-numbers-only): Option removed.
+ (org-link-style, org-link-format): Options removed.
+ (org-select-agenda-window, org-fit-agenda-window): Options
+ removed.
+ (org-export-ascii-show-new-buffer)
+ (org-export-html-show-new-buffer): Options removed.
+ (org-activate-links): Camel option removed.
+ (org-file-link-context-use-camel-case): Option removed.
+ (org-camel-regexp): Veriable removed.
+ (org-activate-camels): Function removed.
+ (org-store-link): Removed Camel stuff.
+ (org-make-org-heading-camel): Function removed.
+ (org-open-at-point): Removed camel stuff.
+ (org-link-search): Removed camel stuff.
+ (org-camel-to-words): Function removed.
+ (org-get-agenda-file-buffer): Make sure we prepare the
+ base buffers, not any indirect buffers.
+ (org-sort-entries): Sort top-level when not on a
+ headline, and no active region.
+ (org-in-regexp): New function.
+ (org-search-not-self): Renamed from `org-search-not-link'.
+ (org-open-link-marker): New variable.
+ (org-open-at-point): Set `org-open-link-marker'.
+ (org-print-icalendar-entries): Fixed bug with excluding DONE
+ entries from the exported list.
+ (org-edit-formula-lisp-indent): New command.
+ (orgtbl-to-texinfo, orgtbl-to-html): New functions.
+ (orgtbl-to-latex, orgtbl-insert-radio-table)
+ (orgtbl-toggle-comment, orgtbl-send-table): New functions.
+ (orgtbl-radio-table-templates): New option.
+ (org-store-link-props):
+ (org-remember-templates): More possibilities to insert
+ info into templates.
+ (org-remember-apply-template): Make use of the extended template
+ capabilities.
+ (org-remember-redo-template): New command.
+ (org-upgrade-old-links)
+ (org-table-modify-formulas, org-table-replace-in-formulas)
+ (org-table-find-dataline)
+ (org-table-get-vertical-vector): Functions removed.
+ (org-table-remove-rectangle-highlight)
+ (org-time-stamp-format, org-toggle-log-option)
+ (org-table-highlight-rectangle)
+ (org-table-iterate, org-table-make-reference):
+ (org-translate-time, org-tree-to-indirect-buffer)
+ (org-table-field-info, org-table-fix-formulas)
+ (org-table-force-dataline, org-table-get-descriptor-line)
+ (org-table-get-range)
+ (org-skip-comments, org-sort)
+ (org-sort-entries, org-sublist, org-table-add-rectangle-overlay)
+ (org-table-current-dline, org-table-current-field-formula)
+ (org-table-edit-backward-field)
+ (org-table-edit-formulas-post-command)
+ (org-table-edit-line-down, org-table-edit-line-up)
+ (org-agenda-archive)
+ (org-agenda-clock-cancel)
+ (org-agenda-clock-out, org-agenda-list-stuck-projects)
+ (org-agenda-open-link, org-agenda-show-new-time)
+ (org-agenda-skip-subtree-when-regexp-matches)
+ (org-agenda-tree-to-indirect-buffer, org-agenda-undo)
+ (org-at-regexp-p, org-auto-repeat-maybe, org-check-log-option)
+ (org-do-sort, org-file-image-p, org-find-overlays)
+ (org-find-row-type, org-get-indirect-buffer, org-get-repeat)
+ (org-highlight-until-next-command, org-isearch-end)
+ (org-match-any-p, org-next-link, org-previous-link):
+ (org-remove-subtree-entries-from-agenda, org-replace-escapes)
+ (org-rewrite-old-row-references)
+ (org-isearch-post-command)
+ (org-table-edit-move, org-table-edit-next-field)
+ (org-table-edit-scroll, org-table-edit-scroll-down)
+ (org-set-frame-title, org-show-reference)
+ (org-unhighlight-once, org-verify-change-for-undo): New
+ functions.
+ (org-show-variable): Command removed.
+ (org-add-log-maybe): New arguments STATE, FINDPOS
+ (org-table-sort-lines): Rewritten from scratch.
+ (org-link-search): New argument AVOID-POS.
+ (org-print-icalendar-entries): Argument CATEGORY removed.
+ (org-run-agenda-series): Argument WONDOW removed.
+ (org-next-link, org-previous-link): New commands.
+ (org-agenda-date-format): New option.
+ (org-table-iterate): New command.
+ (org-table-modify-formulas)
+ (org-table-replace-in-formulas): Functions removed.
+ (org-table-fix-formulas): New function.
+ (org-table-insert-column, org-table-delete-column)
+ (org-table-move-column): Use `org-table-fix-formulas'.
+ (org-follow-gnus-link): Patch from Bastien/Leo.
+ (org-table-current-field-formula): New function.
+ (org-file-image-p): New function.
+ (org-agenda-show-new-time): New function.
+ (org-agenda-date-later): Call `org-agenda-show-new-time'.
+ (org-with-remote-undo): New macro.
+ (org-agenda-undo): New command.
+ (org-verify-change-for-undo): New function.
+ (org-time-stamp-format): New function.
+ (org-agenda-get-timestamps): Skip scheduled if DONE and requested
+ by user.
+ (org-match-any-p): New function.
+ (org-make-tags-matcher): Handle regular expressions for tag and
+ todo matches.
+ (org-read-date): Accept "+N" as input for a date relative to the
+ current date.
+ (org-remove-subtree-entries-from-agenda): New function.
+ (org-agenda-archive, org-agenda-kill): Use
+ `org-remove-subtree-entries-from-agenda'.
+ (org-do-sort, org-sort-entries): New functions.
+ (org-sort): New command.
+ (org-table-sort-lines): Use `org-do-sort'.
+ (org-fix-decoded-time): New function.
+ (org-table-number-regexp): Require 0x... to identify as number in
+ tables.
+ (org-startup-options): New keywords for note taking.
+ (org-upgrade-old-links): Function removed.
+ (org-get-repeat): New function.
+ (org-show-context): Also show siblings on current level.
+ (org-show-siblings): New function.
+ (org-isearch-end, org-isearch-post-command): New functions.
+ (org-show-siblings): New option.
+ (org-show-context): Use `org-show-siblings'.
+ (org-table-maybe-recalculate-line): No longer require `calc-eval'
+ to be bound, because user may just use elisp.
+
+----------------------------------------------------------------------
+installed as 4.56
+
+2006-11-15 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi: Fix typos
+ (Agenda commands): Document `C-k'.
+
+ * orgcard.tex (section{Agenda Views}): Document `C-k'.
+
+ * org.el (org-scan-tags): Re-align code fixed.
+ (org-detach-overlay): Renamed from `org-detatch-overlay'.
+ (org-table-convert-region): Insert space after column separator.
+ (org-agenda-kill): New command.
+ (org-metaleft): Call `org-outdent-item' on bullets.
+ (org-metaright): Call `org-indent-item' on bullets.
+ (org-timestamp-change): Set `org-last-changed-timestamp'.
+ (org-current-line): Make sure (bolp) returns correct result.
+ (org-agenda-change-all-lines): Make sure TODO are highlighted.
+
+----------------------------------------------------------------------------
+Installed as 4.54
+
+2006-11-10 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-scan-tags): Make the search case-sensitive.
+ (org-tags-sparse-tree): Don't overrule
+ `org-show-following-heading' and `org-show-hierarchy-above'.
+ (org-reveal): New command.
+ (org-show-context): Renamed from `org-show-hierarchy-above'.
+ (org-fast-tag-selection-single-key): New option.
+ (org-fast-tag-show-exit, org-set-current-tags-overlay): New
+ functions.
+ (org-tags-overlay): New variable.
+ (org-agenda-todo-ignore-deadlines): New option.
+ ("session"): Add circular data structure `org-mark-ring' to
+ exceptions list in session.el.
+ (org-agenda-window-setup, org-agenda-restore-windows-after-quit):
+ New options.
+ (org-agenda-quit): Use `org-agenda-restore-windows-after-quit'.
+ (org-prepare-agenda, org-agenda-quit): Use
+ `org-agenda-window-setup'.
+ (org-pre-agenda-window-conf, org-blank-before-new-entry): New
+ variables.
+ (org-finalize-agenda): Activate bracket links in agenda.
+ (org-at-timestamp-p, org-at-date-range-p): Additional argument
+ INACTIVE-OK.
+ (org-show-hierarchy-above, org-show-following-heading): List
+ values allowed for fine-tuned configuration.
+ (org-show-hierarchy-above): New argument CONTEXT, use the
+ fine-tuned settings in `org-show-hierarchy-above' and
+ `org-show-following-heading'.
+ (org-display-custom-time): New function.
+ (org-toggle-time-stamp-overlays, org-insert-time-stamp): New
+ function.
+ (org-display-custom-times, org-time-stamp-custom-formats):
+ (org-maybe-intangible): New macro.
+ (org-activate-bracket-links, org-hide-wide-columns): Use
+ `org-maybe-intangible'.
+ (org-open-file): Use `shell-quote-argument'.
+ (org-display-internal-link-with-indirect-buffer): New option.
+ (org-file-remote-p): Get regexp from list.
+ (org-link-expand-abbrev): New function.
+ (org-link-abbrev-alist): New option.
+ (org-open-at-point, org-cleaned-string-for-export): Call
+ `org-link-expand-abbrev'.
+ (org-timeline, org-agenda-list, org-todo-list)
+ (org-tags-view): Remove the KEEP-MODES argument.
+ (org-finalize-agenda-hook): New hook.
+ (org-get-alist-option): New function.
+ (org-follow-timestamp-link): New function.
+ (org-open-at-point): Call `org-follow-timestamp-link'.
+ (org-log-note-marker, org-log-note-purpose)
+ (org-log-note-window-configuration): New variables.
+ (org-add-log-maybe, org-add-log-note, org-store-log-note): New
+ functions.
+ (org-log-note-headings): New option.
+ (org-dblock-write:clocktable): Bug fix, removed infinite loop.
+ (org-store-link): Support for dired-mode.
+ (org-open-file): Substitute environment variables into filename.
+ (org-last): New defsubst.
+ (org-agenda-re-align-tags): New function.
+ (org-agenda-align-tags-to-column): New option.
+ (org-agenda-timeline): Group removed.
+ (org-prepare-agenda, org-prepare-agenda-buffers)
+ (org-run-agenda-series, org-timeline, org-agenda-list)
+ (org-todo-list, org-tags-view): Call `org-agenda-prepare' and set
+ the text property inticating the agenda type.
+ (org-agenda-post-command-hook): Get agenda type from text property
+ at point.
+ (org-agenda): Handle command sets. Set
+ `org-agenda-last-arguments' and obey
+ `org-agenda-overriding-arguments'.
+ (org-agenda-overriding-arguments, org-agenda-last-arguments): New
+ variables.
+ (org-agenda-goto-today, org-agenda-later, org-agenda-earlier)
+ (org-agenda-week-view, org-agenda-day-view): Use
+ `org-agenda-overriding-arguments' to make updating work with
+ multi-block agendas.
+ (org-agenda-prefix-format): Allow different formats for the
+ different agenda entry types.
+ (org-timeline-prefix-format): Option removed, use
+ `org-agenda-prefix-format' instead.
+ (org-prepare-agenda): New function.
+ (org-select-timeline-window): Option removed, use
+ `org-select-agenda-window' instead.
+ (org-respect-restriction): Variable removed.
+ (org-cmp-tag): New function.
+ (org-agenda-sorting-strategy, org-entries-lessp): Implement
+ sorting by last tag.
+ (org-complete): Better completion in in-buffer option lines.
+ (org-in-item-p): New function.
+ (org-org-menu): Added entries for checkboxes.
+ (org-cycle): Extra brouping in outline-regexp, because it is used
+ in a search with "^" prepended.
+ (org-provide-checkbox-statistics): New option.
+ (org-set-font-lock-defaults): Highlight checkbox statistics.
+ (org-update-checkbox-count-maybe)
+ (org-get-checkbox-statistics-face): New functions.
+ (org-update-checkbox-count): New command.
+ (org-insert-item, org-toggle-checkbox): Call
+ `org-update-checkbox-count-maybe'.
+ (org-export-as-html): XEmacs compatibility for coding system.
+ (org-force-cycle-archived): New command.
+ (org-cycle-hide-archived-subtrees): Display message when ARCHIVE
+ overrules cycling.
+ (org-fix-position-after-promote): If the line contains only a todo
+ keyword, add a final space.
+ (org-promote-subtree, org-demote-subtree): Call
+ `org-fix-position-after-promote'.
+
+ * orgcard.tex (section{Archiving}): Document C-TAB.
+ (section{TODO Items and Checkboxes}): Checkbox keys moved to this
+ section, added documentation for the key `C-c #'.
+
+ * org.texi (ARCHIVE tag): Document C-TAB for forcing cycling of
+ archived trees.
+ (Checkboxes): Section moved to chapter 5, and extended.
+ (The date/time prompt): New section.
+ (Link abbreviations): New section.
+ (Presentation and sorting): New section.
+ (Custom agenda views): Section completely rewritten.
+ (Summary): Compare with Planner.
+ (Feedback): More info about creating backtraces.
+ (Plain lists): Modified example.
+ (Breaking down tasks): New section.
+ (Custom time format): New section.
+ (Time stamps): Document inactive timestamps.
+ (Setting tags): More details about fast tag selection.
+ (Block agenda): New section.
+ (Custom agenda views): Section rewritten.
+ (Block agenda): New section.
+
+
+----------------------------------------------------------------------
+installed as 4.44
+
+
+2006-08-15 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-clock-special-range, org-clock-update-time-maybe):
+ New functions.
+ (org-stamp-time-of-day-regexp): Allow weekday to be of word chars,
+ not only a-z.
+ (org-agenda-get-blocks): Allow multiple blocks per headline.
+ (org-timestamp-change): Call `org-clock-update-time-maybe'.
+ (org-export-html-title-format)
+ (org-export-html-toplevel-hlevel): New options.
+ (org-export-language-setup): Added support for Czech.
+ (org-mode, org-insert-todo-heading, org-find-visible)
+ (org-find-invisible, org-invisible-p, org-invisible-p2)
+ (org-back-to-heading, org-on-heading-p, org-up-heading-all)
+ (org-show-subtree, org-show-entry, org-make-options-regexp):
+ Removed compatibility support for old outline-mode.
+ (org-check-occur-regexp): Funtion removed.
+ (org-on-heading-p, org-back-to-heading): Made defalias.
+ (org-set-local): New defsubst.
+ (org-set-regexps-and-options, org-mode)
+ (org-set-font-lock-defaults, org-edit-agenda-file-list)
+ (org-timeline, org-agenda-list, org-todo-list, org-tags-view)
+ (org-remember-apply-template, org-table-edit-field)
+ (org-table-edit-formulas, orgtbl-mode, org-export-as-ascii)
+ (org-set-autofill-regexps): Use `org-set-local'.
+ (org-table-eval-formula): Fixed bug with parsing of display flags.
+
+
+----------------------------------------------------------------------
+installed as 4.43
+
+2006-07-07 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi (Exporting): Document `C-c C-e' as the prefix for
+ exporting commands.
+ (Global TODO list): Document the use of the variables
+ `org-agenda-todo-ignore-scheduled' and
+ `org-agenda-todo-list-sublevels'.
+
+ * org.el (org-agenda-get-todos): Skip subtree also if entry is
+ skipped because it has been scheduled.
+ (org-prepare-agenda-buffers): Don't mark buffers as modified when
+ changing `:org-archived' and `:org-comment' properties.
+
+----------------------------------------------------------------------
+installed as 4.42
+
+
+2006-07-03 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-mode): Removed no invalid settings for calc embedded
+ mode.
+ (org-mode-p): New defsubst.
+ (org-save-all-org-buffers): New function.
+ (org-first-headline-recenter): Enclose outline-regexp in group
+ delimiters.
+
+ * org.texi (Agenda commands): Document `s' key to save all
+ org-mode buffers.
+
+ * orgcard.tex (section{Agenda Views}): Document `s' key to save
+ all org-mode buffers.
+
+----------------------------------------------------------------------
+installed as 4.41
+
+2006-06-29 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi (Checkboxes): New section.
+
+ * orgcard.tex (section{Structure Editing}): Document checkbox
+ toggling.
+
+ * org.el (org-prepare-agenda-buffers): Use `invisible-OK' argument
+ for `org-end-of-subtree'.
+ (org-export-cleanup-toc-line): Renamed from
+ `org-html-cleanup-toc-line'.
+ (org-beginning-of-item): Fixed bug in regular expression for white
+ line.
+ (org-export-as-html): Enforce space after bullet in plain list
+ items.
+
+2006-06-28 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-set-autofill-regexps): Require space after plain
+ list bullet for paragraph-start.
+ (org-ts-regexp3): New constant.
+ (org-at-timestamp-p): New optional argument ALSO-INACTIVE.
+ (org-timestamp-up-day, org-timestamp-down-day)
+ (org-timestamp-change): Work with inactive timestamps.
+ (org-ts-regexp1): Don't allow brackets in time stamps.
+
+----------------------------------------------------------------------
+installed as 4.40
+
+
+2006-06-28 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-context): New contexts :item-bullet, :latex-fragment,
+ :latex-preview.
+ (org-overlays-at, org-overlay-start, org-overlay-end): New
+ compatibility functions.
+
+2006-06-27 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-inside-LaTeX-fragment-p): More accurate matching,
+ using the exact regexp that will be used during export.
+ (org-latex-regexps): New variable.
+ (org-cdlatex-mode): Improved advice for `texmathp'.
+ (turn-on-org-cdlatex): New function.
+
+----------------------------------------------------------------------
+installed as 4.39
+
+2006-06-23 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-cdlatex-mode-map)
+ (org-cdlatex-texmathp-advice-is-done): New variables.
+ (org-cdlatex-mode): New minor mode.
+ (org-inside-LaTeX-fragment-p, org-try-cdlatex-tab): New
+ functions.
+ (org-cdlatex-underscore-caret, org-cdlatex-math-modify): New
+ commands.
+ (org-export-with-archived-trees): New option.
+ (org-open-file): Removed the call to
+ `convert-standard-filename'.
+ (org-archive-tag, org-agenda-skip-archived-trees)
+ (org-cycle-open-archived-trees)
+ (org-sparse-tree-open-archived-trees): New options.
+ (org-cycle-hide-archived-subtrees, org-hide-archived-subtrees)
+ (org-toggle-tag, org-prepare-agenda-buffers, org-agenda-skip): New
+ functions.
+ (org-agenda-toggle-archive-tag, org-toggle-archive-tag): New
+ commands.
+ (org-agenda-mode-map): Add binding of
+ `org-agenda-toggle-archive-tag'.
+ (org-mode-map): Add binding for `org-toggle-archive-tag'.
+ (org-timeline, org-agenda-list, org-todo-list, org-tags-view):
+ Call `org-prepare-agenda-buffers'.
+ (org-occur, org-scan-tags): Call `org-hide-archived-subtrees'.
+ (org-file-apps, org-file-apps-defaults-gnu)
+ (org-file-apps-defaults-macosx)
+ (org-file-apps-defaults-windowsnt): Handle remote files by forcing
+ them to be opened in Emacs.
+
+ * orgcard.tex (section{LaTeX and cdlatex-mode}): New section.
+
+ * org.texi (Embedded LaTeX): New chapter.
+ (Archiving): Section rewritten.
+ (Enhancing text): Some parts moved to the new chapter about
+ LaTeX.
+
+----------------------------------------------------------------------
+installed as 4.38
+
+
+2006-06-18 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi (Publishing links): Document the
+ `:link-validation-function' property.
+ (Extensions and Hacking): New chapter, includes some sections of
+ the "Miscellaneous" chapter.
+
+ * orgcard.tex (section{Clocking Time}): Add new clocking commands.
+ (section{Structure Editing}): Add global archiving command.
+
+
+ * org.el Require noutline, also on XEmacs.
+ (org-end-of-subtree): Return point.
+ (org-dblock-start-re, org-dblock-end-re): New constants.
+ (org-create-dblock, org-prepare-dblock, org-map-dblocks)
+ (org-dblock-update, org-update-dblock, org-beginning-of-dblock)
+ (org-update-all-dblocks, org-find-dblock): New functions.
+ (org-collect-clock-time-entries): New function.
+ (org-html-handle-time-stamps): Never export CLOCK timeranges.
+ (org-fixup-indentation): Modified to deadl correctly with lines
+ starting with TAB. Only one argument DIFF now.
+ (org-demote, org-promote): Call `org-fixup-indentation' with just
+ one argument, DIFF.
+ (org-mode): Don't mark buffer as modified when aligning tables.
+ (org-clock-sum): Don't makr buffer modified when adding time sum
+ properties.
+ (org-export-as-html): Added support for a link validation
+ function.
+ (org-archive-all-done): New function.
+ (org-archive-subtree): New prefix argument. When set, archive all
+ done subtrees in this buffer.
+ (org-remove-clock-overlays)
+ (org-remove-occur-highlights): Use
+ `org-inhibit-highlight-removal'.
+ (org-inhibit-highlight-removal): New variable, for dyn amic
+ scoping.
+ (org-put-clock-overlay): Don't swallow last headline character
+ when displaying overlay.
+ (org-store-link): Link to `image-mode' with just the file name.
+
+
+----------------------------------------------------------------------
+installed as 4.37
+
+
+2006-06-10 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-agenda-mode-map): Add bindings for clocking
+ functions.
+ (org-agenda-clock-in, org-check-running-clock)
+ (org-clock-out-if-current, org-remove-clock-overlays)
+ (org-put-clock-overlay): New functions.
+ (org-clock-marker, org-clock-file-total-minutes)
+ (org-clock-overlays): New variables
+ (org-clock-display, org-clock-sum, org-clock-cancel)
+ (org-clock-out, org-clock-in): New commands.
+ (org-export): New function.
+ (org-emph-re): New constant.
+ (org-set-emph-re, org-do-emphasis-faces): New functions.
+ (org-emphasis-regexp-components, org-emphasis-alist): New options.
+ (org-set-font-lock-defaults): Call `org-do-emphasis-faces'.
+ (org-export-html-convert-emphasize): Use the configurable
+ emphasis.
+ (org-cleaned-string-for-export): Make multiline emphasis visible
+ to the exporter. New optional argument PARAMETERS.
+ (org-export-as-html): Specify :emph-multiline parameter to
+ `org-cleaned-string-for-export'.
+
+ * org.texi (Progress logging): New section.
+
+----------------------------------------------------------------------
+installed as 4.36
+
+
+2006-06-02 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-archive-subtree): Use end-of-subtree as insertion
+ point and control the number of empty lines.
+ (org-paste-subtree): Limit the number of empty lines at the end of
+ the inserted tree.
+ (org-agenda): Use buffer name of current file for narrowing.
+ (org-export-as-xml): Command removed.
+ (org-export-xml-type): Option removed.
+ (org-mode-map): Call `org-export-as-xoxo' directly.
+ (org-get-indentation): New optional argument LINE.
+ (org-fix-indentation, org-remove-tabs): New functions.
+ (org-export-as-ascii, org-ascii-level-start): Determine and apply
+ correct indentation for headlines that are converted it items.
+ (org-skip-comments): Remove table lines that contain narrowing
+ cookies but no other non-empty fields.
+ (org-set-tags): Allow groups of mutually exclusive tags.
+ (org-cmp-time): Sort 24:21 before items without time.
+ (org-get-time-of-day): Fixed the interpretation of 12pm and 12am.
+ (org-open-at-point): Require double colon also for numbers.
+
+ * org.texi (ASCII export): Document indentation adaptation.
+ (Setting tags): Document mutually-exclusive tags.
+
+----------------------------------------------------------------------
+installed as 4.35
+
+2006-05-30 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-agenda-highlight-todo): Make sure regexp does only
+ match in the right place.
+ (org-upcoming-deadline): New face.
+ (org-agenda-get-deadlines): Use new face `org-upcoming-deadline'.
+ (org-export-ascii-underline): Renamed and made an option (was
+ constant `org-ascii-underline').
+ (org-export-ascii-bullets): New option.
+ (org-export-as-html): Many changes to emit valid XHTML.
+ (org-par-open): New variable.
+ (org-open-par, org-close-par-maybe, org-close-li-maybe): New
+ functions.
+ (org-html-do-expand, org-section-number): Fixedcase in
+ `replace-match'.
+ (org-timeline): Pass `org-timeline-show-empty-dates' to
+ `org-get-all-dates'. Interpret empty dates returned by
+ `org-get-all-dates'.
+ (org-get-all-dates): New argument EMPTY. Add dates without
+ entries to the list, mark large ranges of empty dates.
+ (org-point-in-group, org-context): New functions.
+
+----------------------------------------------------------------------
+installed as 4.34
+
+2006-05-26 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-next-item, org-previous-item): Emit more compact
+ error message.
+ (org-tags-view): Refresh category table in each file.
+ (org-table-justify-field-maybe): Removed superfluous arguments to
+ `format'.
+ (org-export-as-html): Insert "<p>" before postamble.
+ (org-paste-subtree, org-kill-is-subtree-p): Check for empty kill
+ ring.
+
+---------------------------------------------------------------------
+installed as 4.33
+
+2006-05-23 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-open-at-point): Use renamed variable
+ `org-confirm-shell-link-function'.
+ (org-confirm-shell-link-function): Renamed from
+ `org-confirm-shell-links'.
+ (org-export-directory): New function.
+ (org-export-as-ascii, org-export-as-html, org-export-as-xoxo)
+ (org-export-icalendar): Use `org-export-directory'.
+ (org-indent-item): Keep cursor position.
+ (org-link-file-path-type): New option.
+ (org-export-as-html): Fixed bug with plain lists starting in
+ column 0.
+ (org-export-as-html): Removed deadline formatting, this happens
+ now already in `org-html-handle-time-stamps'.
+ (org-export-html-style): Deadline class removed.
+ (org-insert-labeled-timestamps-at-point): New option.
+ (org-cycle, org-occur, org-scan-tags): Use `org-overview' instead
+ of `hide-sublevels 1', in case the first headline is not level 1.
+ (org-overview, org-content): New fuction.
+ (org-cycle-global-status, org-cycle-subtree-status): Make these
+ variables buffer-local.
+ (org-global-cycle): New command.
+ (org-shifttab): Use `org-global-cycle'.
+ (org-insert-heading, org-insert-item): Go to end of new
+ headline/item after creating it.
+ (org-export-visible): Renames from `org-export-copy-visible'. Now
+ creates a temporary org-file and applies an exporting command to
+ it.
+ (org-table-eval-formula): Support for lisp forms.
+ (org-agenda-todo-ignore-scheduled): New option.
+ (org-agenda-get-todos): Use new option
+ `org-agenda-todo-ignore-scheduled'.
+ (org-export-html-inline-images): New value `maybe'.
+ (org-export-as-html): Inlining of images dependent on link
+ description.
+ (org-archive-subtree): Check for end-of-buffer before trying
+ `kill-line'.
+ (org-agenda-follow-mode): New option.
+ (org-export-with-tags, org-export-with-timestamps): New options.
+ (org-html-handle-time-stamps): New function.
+ (org-keyword-time-regexp): New variable.
+ (org-agenda-get-todos): Use `org-agenda-todo-list-sublevels'.
+ (org-agenda-todo-list-sublevels): New option.
+ (org-html-level-start): When TITLE is nil, just close all levels.
+ (org-parse-key-lines, org-parse-export-options): Functions
+ removed, replaced by `org-infile-export-plist'.
+ (org-combine-plists, org-infile-export-plist)
+ (org-default-export-plist): New functions.
+ (org-export-html-preamble, org-export-html-postamble)
+ (org-export-html-auto-preamble, org-export-html-auto-postamble):
+ New variables.
+ (org-export-publishing-directory): New option.
+ (org-export-as-html, org-export-as-ascii): Use the new property
+ lists for settings.
+ (org-export-copy-visible, org-export-as-xoxo): Respect
+ `org-export-publishing-directory'.
+ (org-link-search, org-store-link, org-file-apps): Support for
+ links to BibTeX database entries..
+ (org-get-current-options, org-set-regexps-and-options): Implement
+ logging as a startup option.
+ (org-store-link): Make sure context string is never empty
+ (org-insert-link): Use relative path when possible.
+ (org-at-item-checklet-p): New function.
+ (org-shifttab, org-shiftmetaleft, org-shiftmetaright)
+ (org-shiftmetaup, org-shiftmetadown, org-metaleft)
+ (org-metaright, org-metaup, org-metadown, org-shiftup)
+ (org-shiftdown, org-shiftright, org-shiftleft)
+ (org-ctrl-c-ctrl-c, org-cycle, org-return, org-meta-return):
+ Dispatch using `call-interactively'.
+ (org-call-with-arg): New defsubst.
+ (org-tag-alist, org-use-fast-tag-selection): New options.
+ (org-complete): Use `org-tag-alist'.
+ (org-fast-tag-insert, org-fast-tag-selection): New functions.
+ (org-next-item, org-previous-item): New commands.
+ (org-beginning-of-item, org-end-of-item): Added (interactive) to
+ make command.
+ (org-shiftup, org-shiftdown): Accommodate the item-navigation commands.
+
+ * org.texi (Plain lists): Added new item navigation commands.
+ (External links): Documented elisp and info links.
+
+ * orgcard.tex (section{Motion}): Added the item navigation
+ commands.
+ (section{Publishing}): New section.
+ (section{Links}): Documented elisp and shell links.
+ (Custom searches): New section.
+ (Publishing): New chapter.
+ (HTML export): Include a list of supported CSS classes.
+ (Setting tags): Describe the fast-tag-setting interface.
+
+----------------------------------------------------------------------
+
+installed as 4.26
+
+2006-04-21 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi Many small fixes.
+ (Handling links): Renamed from "Managing links".
+
+ * org.el (org-mode-map): Catch conflict with old allout.el.
+ (org-open-at-point): Remove the "...done" message to keep
+ output in the echo area visible.
+
+----------------------------------------------------------------------
+installed as 4.25
+
+2006-04-19 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-deadline-announce): Face removed.
+ (org-level-faces, org-n-levels): Converted to constant.
+ (org-compatible-face): New function.
+ (org-hide, org-level-1, org-level-2, org-level-3, org-level-4)
+ (org-level-5, org-level-6, org-level-7, org-level-8)
+ (org-special-keyword, org-warning, org-headline-done, org-link)
+ (org-date, org-tag, org-todo, org-done, org-table, org-formula)
+ (org-scheduled-today, org-scheduled-previously, org-time-grid):
+ Face definition revised for better color tty support.
+ (org-bold-re, org-italic-re, org-underline-re): New constants.
+ (org-set-font-lock-defaults): Use the new constants.
+ (org-agenda-highlight-todo): New function.
+ (org-agenda-todo): Fixed bug with point at end of line.
+ (org-agenda-change-all-lines, org-finalize-agenda-entries):
+ Fontify TODO keywords.
+ (org-insert-link): Preserve relative path in ../ links.
+ (org-export-as-html): Convert links pointing to .org files into
+ links that will work beteen the exported HTML files.
+ (org-todo-list): Fix bug when arg=0.
+ (org-insert-heading): More fine-tuning.
+
+ * org.texi (Time stamps): Better explanation of the purpose of
+ different time stamps.
+
+----------------------------------------------------------------------
+installed as 4.24
+
+
+ * org.texi (Formula syntax): Fixed link to Calc Manual.
+
+ * org.el (org-insert-heading): Insert heading before current if at
+ beginning of line.
+ (org-todo, org-date): New faces.
+ (org-table-align): Make sure tooltip window contains full text.
+ (org-no-properties): New defsubst.
+ (org-set-font-lock-defaults): Use new faces.
+
+----------------------------------------------------------------------
+installed as 4.23
+
+
+ * org.texi (Visibility cycling): Better names for the startup
+ folding options.
+ (Exporting): Completely restructured.
+ (The very busy C-c C-c key): New section.
+ (Summary of in-buffer settings): New section.
+
+ * org.el (org-set-regexps-and-options, org-get-current-options):
+ Better names for the startup folding options.
+
+
+----------------------------------------------------------------------
+installed as 4.22
+
+
+
+2006-04-13 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-ctrl-c-ctrl-c): Improved documentation string.
+ (org-agenda-mouse-1-follows-link)
+ (org-mouse-1-follows-link): New options.
+ (org-format-agenda-item): Fixed bug if TAGS is nil.
+ (org-agenda-get-scheduled): Quote `priority' symbol in plist.
+
+ * org.texi (Updating settings): New section.
+
+----------------------------------------------------------------------
+installed as 4.21
+
+
+
+2006-04-11 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi (Link format): New section, emphasis on bracket links.
+ (External links): Document bracket links.
+ (FAQ): Expanded to cover shell links and the new link format.
+
+ * orgcard.tex (section{Tables}): Document column narrowing.
+ (section{Links}): Document bracket links.
+
+ * org.el
+ (org-export-plain-list-max-depth)
+ (org-table-spaces-around-separators)
+ (org-radio-targets, org-activate-camels)
+ (org-table-spaces-around-invisible-separators): Options removed.
+ (org-time-stamp-rounding-minutes, org-remember-templates)
+ (org-ellipsis, org-activate-links, org-descriptive-links): New
+ options.
+ (org-remember-apply-template, org-current-time)
+ (org-finish-edit-table-field)
+ (org-link-unescape, org-link-escape)
+ (org-string-width, org-table-clean-line, org-html-do-expand)
+ (org-edit-agenda-file-list, org-store-new-agenda-file-list)
+ (org-read-agenda-file-list): New functions.
+ (org-table-edit-field)
+ (org-table-create-or-convert-from-region): New commands
+ (org-table-toggle-vline-visibility): Command removed.
+ (org-table-convert-region): Made a command.
+ (orgtbl-deleta-backward-char,orgtbl-delete-char): Commands
+ removed, replaced with the normal org- functions.
+ (org-self-insert-command): Don't trigger realign unnecessarily
+ when blanking a field that is not full.
+ (org-mode): `Set buffer-invisibility-spec' for links.
+ (org-activate-links2): Hide link part and only show descriptive
+ part of the link.
+ (org-insert-link): Modified for new linking system.
+ (org-store-link): Store description separately, for use by
+ `org-insert-link'.
+ (org-table-align): Use `org-string-width'.
+ (defgroup): Completely new group structure for custom variables.
+ (org-agenda-files): Option: Single file name allowed. Function:
+ Optional argument unrestrited means ignore any restricitons.
+ (org-install-agenda-files-menu): Find a buffer in Org-mode before
+ trying to modify the menu. Use generalized access to
+ `org-agenda-files.'
+ (org-agenda-list, org-todo-list, org-cycle-agenda-files)
+ (org-agenda-file-to-front, org-remove-file, org-diary)
+ (org-tags-view, org-export-icalendar-all-agenda-files)
+ (org-export-icalendar-combine-agenda-files): Use generalized
+ access to `org-agenda-files'.
+ (org-remember-handler): Correctly preserve heading if present.
+ (org-table-insert-row, org-table-insert-hline): Deal with
+ invisible characters.
+
+----------------------------------------------------------------------
+installes as 4.13
+
+
+
+-------------------------------------------------------------------
+installed as 4.10
+
+2006-03-14 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-insert-centered): Use `string-width' to make
+ underlining work for wide characters.
+
+2006-03-13 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-goto-map, org-agenda-mode-map, org-mode-map):
+ Explicitly bind TAB to `org-cycle', to make sure that no binding
+ in `outline-mode-map' can supercede it.
+
+--------------------------------------------------------------
+installed as 4.09
+2006-03-13 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-link-search): Avoid self-matching of links, allow
+ target text to be distributed over several lines.
+ (org-search-not-link): New function.
+ (org-set-regexps-and-options, org-get-current-options): New
+ startup options.
+ (org-export-as-html): Take odd-level setting from local variable.
+ (org-fontify-emphasized-text): New option.
+ (org-set-font-lock-defaults): Include emphasized text.
+ (org-follow-mhe-link): Allow folder-only links, fix folder name.
+ (org-font-lock): Customize group renamed from `org-faces'.
+
+ * org.texi (Clean view): Startup options documented.
+
+
+
+--------------------------------------------------------------
+installed as 4.08
+
+
+
+2006-03-07 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el Move defvars out of eval-when-compile. Use
+ buffer-file-name variable.
+ (org-agenda-file-to-end, org-agenda-file-to-front): Remove unused
+ arg `file'.
+ (org-level-faces): Remove startup dependency.
+ (org-cycle, org-map-tree, org-scan-tags)
+ (org-remember-handler): Don't call `outline-level' directly.
+ (org-mhe-search-all-folders): New option.
+ (org-mhe-get-message-folder-from-index,
+ org-mhe-get-message-folder): Fix indexing search.
+ (org-format-agenda-item): Handle nil TAGS argument.
+ (org-cleaned-string-for-export, org-activate-target-links)
+ (org-make-target-link-regexp): Deal with empty radio target list.
+ (org-tag): New face.
+ (org-get-level-face): New function.
+ (org-set-font-lock-defaults): Simplify setup for headlines.
+ (org-complete): Pass common substring to `display-completion-list'.
+
+ --------------------------------------------------------------
+installed as 4.07
+
+
+2006-02-28 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-get-legal-level, org-tr-level): New functions.
+ (org-odd-levels-only): New option.
+ (org-level-faces, org-paste-subtree, org-convert-to-odd-levels,
+ org-demote, org-promote): Deal with double-star levels.
+ (org-convert-to-odd-levels): New command.
+ (org-tr-level):
+
+ * org.el (org-export-as-html): Fixed bugs in HTML
+ formatting (removed nested achors).
+ (org-all-targets): Fixed bug with XEmacs compatibility.
+ (org-read-date): Add (require 'parse-time).
+ (org-set-tags): Fixed bug with extra inserted space.
+ (org-export-html-style): Define a style class for targets.
+ (org-agenda-keymap, org-mouse-map): Added a binding for
+ `follow-link'.
+ (org-hide-leading-stars): New option.
+ (org-hide): New face.
+ (org-set-font-lock-defaults): Allow to hide leading stars.
+
+ * org.texi (Interaction): Added item about `org-mouse.el' by Piotr
+ Zielinski.
+ (Managing links, Managing links): Documented that also mouse-1 can
+ be used to activate a link.
+ (Headlines, FAQ): Added entry about hiding leading stars.
+
+--------------------------------------------------------------------------
+installed as 4.06
+
+2006-02-23 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-cleaned-string-for-export, org-solidify-link-text):
+ New function.
+ (org-add-hook): Use `add-local-hook' instead of `make-local-hook'
+ for XEmacs, just to silence the compiler.
+ (org-export-as-ascii, org-export-as-html-and-open): Use
+ `org-cleaned-string-for-export' and create internal links.
+ (org-follow-mhe-link): Require mh-e, use folder.
+ (org-read-date):
+
+--------------------------------------------------------------------------
+ Installed as 4.05
+
+
+2006-02-21 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-mark-ring-previous, org-mark-ring-set): New
+ commands.
+ (org-mark-ring): New variable.
+ (org-mark-ring-length): New option.
+ (org-open-at-point, org-goto, org-open-file): Push old position
+ onto the mark ring.
+ (org-add-hook): New function.
+ (org-export-table-remove-special-lines): New option.
+ (org-skip-comments, org-format-org-table-html): Respect new option
+ `org-export-table-remove-special-lines'.
+ (org-open-file): Allow special command configuration for
+ directory link.
+ (org-file-apps): Fixed bugs in customize type, added setting for
+ directories.
+ (org-activate-tags, org-format-agenda-item, org-complete)
+ (org-get-tags-at, org-scan-tags, org-make-tags-matcher)
+ (org-get-tags, org-get-buffer-tags, org-open-at-point)
+ (org-link-search, org-make-org-heading-search-string)
+ (org-make-org-heading-camel): Allow @ and 0-9 as tags characters.
+ (org-radio-targets, org-file-link-context-use-camel-case)
+ (org-activate-camels): New options.
+ (org-update-radio-target-regexp, org-all-targets)
+ (org-make-target-link-regexp, org-activate-target-links): New
+ functions.
+ (org-make-org-heading-search-string): New function.
+ (org-store-link, org-insert-link): Use new option
+ `org-file-link-context-use-camel-case'.
+ (org-activate-camels): Use new option `org-activate-camels'.
+ (org-link-regexp): Added mhe prefix.
+ (org-open-at-point,org-store-link): Support for mhe links.
+ (org-mhe-get-message-id, org-mhe-get-message-folder)
+ (org-mhe-get-header,org-follow-mhe-link): New functions.
+ (org-remove-angle-brackets, org-add-angle-brackets): New
+ functions.
+ (org-bracked-link-regexp): New constant.
+ (org-read-date): Fixed bug that was rejecting all typed dates.
+ (org-link-search): Make hierarchy above visible after a match.
+ (org-follow-bbdb-link): Inhibit electric mode for BBDB.
+ (org-store-link): Fixed bug with link creation when cursor is in
+ an empty line.
+ (org-open-at-point): Fixed bug with matching a link. Fixed buggy
+ argument sequence in call to `org-view-tags'.
+ (org-compile-prefix-format): Set `org-prefix-has-tag'.
+ (org-prefix-has-tag): New variable.
+ (org-format-agenda-item): Remove tags from headline if
+ appropriate.
+ (org-agenda-remove-tags-when-in-prefix): New option.
+
+ * org.texi (Internal Links): Rewritten to cover the modified
+ linking system.
+
+ * orgcard.tex (section{Links}): Rewritten to cover the modified
+ link system.
+ (section{TODO Items}): Shortened to make space for more links
+ stuff.
+
+
+
+----------------------------------------------------------------------
+installed as 4.03
+
+2006-01-13 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi (Agenda commands): Document tags command.
+
+ * org.el (org-open-file): Use mailcap for selecting an
+ application.
+ (org-file-apps-defaults-gnu): Use mailcap as the default for
+ selecting an application on a UNIX system.
+ (org-agenda-show-tags): New command.
+ (org-table-insert-hline): Keep cursor in current table
+ line.
+ (org-table-convert): Offset effect of modifying
+ `org-table-insert-hline'.
+ (org-format-agenda-item): New optional argument TAG.
+ (org-compile-prefix-format): Handle %T format for the tag.
+ (org-expand-wide-chars): New function.
+ (org-table-insert-row, org-table-insert-hline): Use
+ `org-expand-wide-chars'.
+ (org-open-file): Fixed bug in program launch.
+ (org-get-time-of-day): Fixed bug with times before 1am.
+ (org-agenda-menu): Addes tags commands.
+
+ -----------------------------------------------------------------------
+installed as 4.02
+
+2006-01-02 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-end-of-subtree): New function.
+ (org-cycle, org-subtree-end-visible-p, org-scan-tags): Use
+ `org-end-of-subtree'.
+ (org-agenda, org-agenda-convert-date): Protect calls to
+ `fit-window-to-buffer'.
+ (org-tags-view): Force matching of sublevels when doing a
+ todo-only search. Define the correct redo command, including the
+ arguments.
+ (org-agenda-redo): Display message.
+ (org-check-for-org-mode): New function.
+ (org-agenda-type): New variable.
+ (org-timeline, org-agenda-list, org-todo-list, org-tags-view): Set
+ `org-agenda-type'.
+ (org-agenda-check-type): New function.
+ (org-agenda-goto-today, org-agenda-later, org-agenda-earlier)
+ (org-agenda-week-view, org-agenda-day-view)
+ (org-agenda-next-date-line, org-agenda-previous-date-line)
+ (org-agenda-log-mode, org-agenda-toggle-diary)
+ (org-agenda-toggle-time-grid, org-agenda-date-later)
+ (org-agenda-date-prompt, org-agenda-diary-entry)
+ (org-agenda-execute-calendar-command, org-agenda-goto-calendar)
+ (org-agenda-convert-date, org-agenda-menu): Use
+ `org-agenda-check-type'.
+ (org-make-overlay, org-delete-overlay)
+ (org-detatch-overlay, org-move-overlay, org-overlay-put): New
+ compatibility functions.
+ (org-calendar-select-mouse): New command.
+
+ * org.texi (Agenda Views): Chapter reorganized.
+
+
+------------------------------------------------------------------------
+installed as 4.01
+
+2005-12-19 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi (Tags): Booolean logic documented.
+ (Agenda Views): Document custom commands.
+
+ * org.el (org-agenda-custom-commands): New option.
+ (org-agenda): Offer custom commands on splash screen.
+ (org-make-tags-matcher): Parser for Boolean logic added.
+ (org-agenda-set-tags): New command.
+ (org-agenda-menu, org-agenda-mode-map): Add `org-agenda-set-tags'.
+ (org-set-tags): Efficiency improvements.
+ (org-auto-align-tags): New option.
+ (org-todo, org-demote, org-promote): Realign tags.
+ (org-tags-completion-function): Use also "&" and "|" as
+ separators.
+ (org-org-menu): Agenda commands simplified.
+
+---------------------------------------------------------------------------
+installed as 4.00
+
+2005-12-16 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-tags-match-list-sublevels): New option.
+ (org-open-at-point): implement tag searches as links
+ (org-fit-agenda-window, org-get-buffer-tags, org-get-tags)
+ (org-make-tags-matcher, org-scan-tags, org-activate-tags): New
+ functions
+ (org-tags-sparse-tree, org-tags-view, org-set-tags)
+ (org-agenda-dispatch): New commands.
+ (org-use-tag-inheritance, org-tags-column): New options.
+ (org-tab-follows-link, org-return-follows-link): New options.
+ (org-tags): New customize group.
+ (org-start-icalendar-file): Get local time zone.
+ (org-tags-completion-function): New function.
+ (org-set-font-lock-defaults): make sure links will also
+ be highlighted inside headlines.
+
+ * org.texi (Tags): New section.
+ (Agenda Views): Chapter reorganized.
+
+------------------------------------------------------------------------
+installed as 3.24
+
+2005-12-12 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-agenda, org-timeline, org-todo): Implement Logging
+ and the keep-modes setting.
+ (org-get-category): Make sure a string is returned.
+ (org-log-done): New function.
+
+------------------------------------------------------------------------
+installed as 3.23
+
+2005-12-06 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-insert-heading): Try to do items before headings.
+ (org-agenda-mode): Quote `org-agenda-mode-hook'.
+ (org-insert-item): New function.
+ (org-renumber-ordered-list): Don't skip to higher level lists.
+
+----------------------------------------------------------------------
+
+installed as 3.22
+
+2005-12-05 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-occur-highlights): New variable.
+ (org-highlight-new-match, org-remove-occur-highlights): New
+ functions.
+ (org-highlight-sparse-tree-matches): New option.
+ (org-do-occur): New function.
+ (org-get-heading): Make it work also at beginning of line.
+ (org-category-table): New variable.
+ (org-get-category-table, org-get-category)
+ (org-camel-to-words, org-link-search): New functions.
+ (org-select-this-todo-keyword): New variable.
+ (org-todo-list): New command.
+ (org-shiftright, org-shiftleft): New commands.
+ (org-agenda-todo): Added prefix argument.
+ (org-show-hierarchy-above): New option.
+ (org-show-todo-tree): Numerical prefix creates tree for specific
+ TODO keyword.
+ (org-outline-level): New function, to assign a level to plain
+ lists items.
+ (org-cycle-include-plain-lists): New option.
+ (org-mode): Use `org-outline-level' as value of `outline-level'.
+ (org-cycle): Temporarily switch `outline-regexp' if
+ `org-cycle-include-plain-lists' is non-nil.
+ (org-start-icalendar-file): Fixed format bug.
+ (org-agenda-get-day-entries): Create category table.
+ (org-agenda-get-todos, org-agenda-get-timestamps)
+ (org-agenda-get-deadlines, org-agenda-get-scheduled)
+ (org-agenda-get-blocks): Use `org-get-category'.
+ (org-context-in-file-links): Renamed from
+ `org-line-numbers-in-file-links' .
+
+ * org.texi (TODO basics): Document the global todo list.
+ (TODO items): Documents sparse tree for specific TODO
+ keywords.
+
+----------------------------------------------------------------------
+installed as 3.21
+
+2005-11-23 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-export-plain-list-max-depth): Renamed from
+ `org-export-local-list-max-depth'. Default values changed to 3.
+ (org-auto-renumber-ordered-lists,
+ org-plain-list-ordered-item-terminator): New options.
+ (org-at-item-p, org-beginning-of-item, org-end-of-item,
+ org-get-indentation, org-get-string-indentation,
+ org-maybe-renumber-ordered-list, org-renumber-ordered-list): New
+ functions.
+ (org-move-item-down, org-move-item-up): New commands.
+ (org-export-as-html): New classes for CSS support. Bug fix in
+ regular expression detecting fixed-width regions. Respect
+ `org-local-list-ordered-item-terminator'.
+ (org-set-autofill-regexps, org-adaptive-fill-function): "1)" is
+ also a list item.
+ (org-metaup, org-metadown, org-shiftmetaup, org-shiftmetadown):
+ New item moving functions added.
+
+ * org.texi (Structure editing): New item moving commands added.
+ (Plain Lists): New section.
+
+----------------------------------------------------------------------
+installed as 3.20
+
+2005-11-16 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-table-sort-lines): New command.
+ (org-tbl-menu): Add entry for `org-table-sort-lines'.
+ (org-add-file): Command removed, use `org-agenda-file-to-front'
+ instead.
+ (org-export-icalendar): Use `org-icalendar-combined-name'.
+ (org-cycle-agenda-files, org-agenda-file-to-end)
+ (org-agenda-file-to-front): New commands.
+ (org-table-tab-jumps-over-hlines,org-export-html-style): New
+ options.
+ (org-table-next-field): Use `org-table-tab-jumps-over-hlines'.
+ (org-at-table.el-p, org-set-autofill-regexps,org-html-protect):
+ New functions.
+ (org-fill-paragraph): Call `org-table-align' in tables.
+ (org-mode): Call `org-set-autofill-regexps'.
+ (org-export-as-html): Support for local handformatted lists.
+ Modified to produce valid HTML 4.0. Use `org-export-html-style'.
+ (org-export-local-list-max-depth): New option.
+ (org-html-expand): Use `org-html-protect'.
+
+ * org.texi (FAQ): Document `org-table-tab-jumps-over-hlines'.
+ (Agenda): Document commands `org-cycle-agenda-files' and
+ `org-agenda-file-to-front'
+ (Built-in table editor): Document `org-table-sort-lines'.
+ (HTML formatting): Export of hand-formatted lists.
+ ----------------------------------------------------------------------
+installed as 3.19
+
+2005-10-28 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-read-date, org-goto-calendar)
+ (org-recenter-calendar, org-agenda-goto-calendar): Temporarily
+ clear 'calendar-move-hook'.
+
+------------------------------------------------------------------------
+
+installed as 3.18
+
+2005-10-19 Carsten Dominik <dominik@science.uva.nl>
+
+ * textmodes/org.el (org-combined-agenda-icalendar-file)
+ (org-icalendar-include-todo, org-icalendar-combined-name): New
+ options.
+ (org-export-icalendar-this-file)
+ (org-export-icalendar-all-agenda-files)
+ (org-export-icalendar-combine-agenda-files): New commands.
+ (org-export-icalendar, org-print-icalendar-entries)
+ (org-start-icalendar-file, org-finish-icalendar-file)
+ (org-ical-ts-to-string): New functions.
+ (org-read-date, org-goto-calendar)
+ (org-agenda-goto-calendar): Inhibit displaying diary entries by
+ call to `calendar'.
+ (orgtbl-setup): Removed the :keys arguments from the menu
+ description.
+ (org-after-save-iCalendar-file-hook): New variable.
+
+ * org.texi (Summary): Mention iCalendar support.
+ (Exporting): Document iCalendar support.
+
+ * orgcard.tex: Add iCalendar export keys.
+
+------------------------------------------------------------------------
+installed as 3.17
+
+2005-10-10 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-mode-map): Explicit definition of `C-c C-x' as a
+ prefix.
+ (orgtbl-mode-map): Full keymap instead of sparse, because all
+ `self-insert-command' keys are redifined in this map.
+ (org-export-as-html): Specify charset for HTML file, by taking it
+ from the codinf system.
+
+ * org.texi (Workflow states): Documented that change in keywords
+ becomes active only after restart of Emacs.
+
+--------------------------------------------------------------------------
+Installed as 3.16
+
+2005-09-21 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-mode-map, orgtbl-mode-map): Move keybindings with
+ `C-c C-h' prefix to `C-c C-x' prefix. Make use of `remap' feature
+ when available. Additional key bindings for better tty support.
+ (org-mode-restart, org-force-self-insert): New commands.
+ (org-time-stamp-inactive): New command.
+ (org-remap): New function.
+ (org-table-auto-blank-field, org-level-color-stars-only): New
+ options.
+ (org-enable-fixed-width-editor): Moved to `org-structure'
+ customization group.
+ (org-self-insert-command, orgtbl-self-insert-command): Modified to
+ blank field after field motion commands.
+
+----------------------------------------------------------------------
+installed as 3.15
+2005-08-30 Carsten Dominik <dominik@science.uva.nl>
+
+ * textmodes/org.el (org-special-keyword): New face.
+ (org-table-copy-down, org-table-eval-formula)
+ (org-table-recalculate, org-init-section-numbers): Use
+ `string-to-number' instead of `string-to-int'.
+ (org-get-location): Use `insert-buffer-substring' instead of
+ `insert-buffer'.
+ (org-modify-diary-entry-string): New function.
+ (org-get-entries-from-diary): Set the hook for
+ `add-to-diary-list'.
+ (org-disable-agenda-to-diary): renamed from `org-disable-diary'.
+ (org-toggle-fixed-width-section): Use QUOTE keyword if there is no
+ active region.
+ (org-export-as-html): Handle QUOTE keyword.
+ (org-quote-string): New option.
+ (org-bookmark-jump-unhide): New function, used for
+ `bookmark-after-jump-hook'.
+ (org-diary-default-entry): Apply only when not called through
+ `org-agenda'.
+
+----------------------------------------------------------------------
+installed as 3.14
+
+2005-07-19 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-table-column-names, org-table-column-name-regexp)
+ (org-table-named-field-locations): New variables.
+ (org-archive-subtree): Protect `this-command' when calling
+ `org-copy-subtree' and `org-cut-subtree', to avoid appending to
+ the kill buffer.
+ (org-complete): Removed fixed-formula completion.
+ (org-edit-formulas-map): New variable.
+ (org-table-edit-formulas): New command.
+ (org-finish-edit-formulas, org-abort-edit-formulas,
+ org-show-variable, org-table-get-vertical-vector): New functions.
+ (org-table-maybe-eval-formula): Handle `:=' fields.
+ (org-table-get-stored-formulas, org-table-store-formulas)
+ (org-table-get-formula, org-table-modify-formulas)
+ (org-table-replace-in-formulas): Handle named field formulas.
+ (org-table-get-specials): Store locations of named fields.
+
+---------------------------------------------------------------------------
+
+ Installed as 3.13
+
+2005-07-01 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el: Leading space replaced by TABS.
+ (org-recalc-marks, org-table-rotate-recalc-marks)
+ (org-table-get-specials): Treat "^" and "_" marks.
+ (org-table-justify-field-maybe): Optional argument NEW.
+ (org-table-eval-formula): Parsing of the format simplified. New
+ modes C,I. Honor the %= parameter in the current table. Avoid
+ unnecessary re-align by using the NEW argument to
+ `org-table-justify-field-maybe'. C-u prefix now interpreted as
+ request to store named field equation.
+ (org-calc-default-modes): Default for date-format mimicks
+ org-mode.
+ (org-agenda, org-timeline): Quote argument in
+ `org-agenda-redo-command'.
+
+----------------------------------------------------------------------------
+
+installed as version 3.12
+
+2005-06-28 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (orgtbl-setup): New function, for delayed setup for the
+ orgtbl commands.
+ (org-calc-default-modes): New option.
+ (orgtbl-make-binding): Use `defun' to get better help display.
+ (org-diary): Call `org-compile-prefix-format'.
+ (org-table-formula-substitute-names): New function.
+ (org-agenda-day-view, org-agenda-week-view): New commands.
+ (org-agenda-toggle-week-view): Command removed.
+ (org-tbl-menu): Split off from org-org-menu.
+ (org-mode): Moved removal of outline-mode menus to here.
+ (org-table-formula-debug): New option.
+ (org-table-insert-row): Keep first field if just "#" or "*".
+ (org-mode): Paragraph regexps fixed.
+ (org-table-recalculate-regexp): New constant.
+ (org-table-justify-field-maybe): Avoid replace if not necessary.
+ (org-copy-special, org-cut-special): Use `call-interactively'.
+ (org-table-copy-region): Take region from `interactive' call.
+ (org-trim): Return string even if no match.
+ (org-formula): New face.
+ (org-set-font-lock-defaults): No longer highlight "FIXME". But
+ highlight formula-related fields in table.
+ (org-table-p): Use regexp, not fontification.
+ (org-table-align): Handle white space at end of line.
+ (org-table-formula-evaluate-inline): New option.
+ (org-mode): Auto-wrapping in comment lines turned off.
+ (org-table-copy-down): Evaluate only in copied field, not in
+ destination.
+ (org-table-current-formula): Variable removed.
+ (org-table-store-formulas, org-table-get-stored-formulas)
+ (org-table-modify-formulas, org-table-replace-in-formulas)
+ (org-table-maybe-eval-formula): New functions.
+ (org-table-get-formula): Modified to use stored formulas.
+ (org-table-insert-column, org-table-delete-column)
+ (org-table-move-column): Call `org-table-modify-formulas'.
+ (org-complete): Add completion for keyword formulas.
+ (orgtbl-mode): Pull orgtbl-mode-map to start of
+ minor-mode-map-alist.
+
+--------------------------------------------------------------------------
+
+installed as 3.11
+
+
+2005-06-13 Carsten Dominik <dominik@science.uva.nl>
+
+ * textmodes/org.el (org-CUA-compatible): New option.
+ (org-disputed-keys): New variable.
+ (org-key): New function.
+ (orgtbl-make-binding): Add docstring to the created function.
+ (org-mode): Set paragraph start/separate regexps.
+ (orgtbl-mode): Don't start `orgtbl-mode' in `org-mode' buffers.
+ (org-archive-location, org-archive-mark-done)
+ (org-archive-stamp-time): New options.
+ (org-archive-subtree): New command.
+ (org-fill-paragraph): New function.
+ (org-mode): Set `fill-paragraph-function' to `org-fill-paragraph'.
+ (org-fake-empty-table-line): Function removed.
+ (org-format-org-table-html): Do not create empty table lines at
+ separator lines. Improved table header treatment.
+ (org-link-format): New option.
+ (org-make-link): New function.
+ (org-insert-link, org-store-link): Use org-make-link.
+ (org-open-file): Quote file name for shell command, to allow
+ spaces in file names.
+ (org-link-regexp): Fixed bug with mailto link.
+ (org-link-maybe-angles-regexp, org-protected-link-regexp): New
+ constant.
+ (org-export-as-html): Deal with the optional angles around a link.
+ Better treatment of file: links.
+ (org-open-at-point): Replace @{ and @} with < and >.
+
+--------------------------------------------------------------------------
+
+installed as 3.10
+
+2005-05-30 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-agenda-mode): Use `run-mode-hooks' if available.
+
+--------------------------------------------------------------------------
+
+
+ installed as 3.09
+
+2005-05-19 Carsten Dominik <dominik@science.uva.nl>
+
+ * textmodes/org.el (org-agenda-toggle-time-grid): New command.
+ (org-agenda-use-time-grid, org-agenda-time-grid): New options.
+ (org-agenda-add-time-grid-maybe): New function.
+ (org-agenda): Call `org-agenda-add-time-grid-maybe'.
+ (org-table-create): `dotimes' instead of `mapcar'.
+ (org-xor): Simplified implementation.
+ (org-agenda): `inhibit-redisplay' turned on.
+ (org-agenda-change-all-lines): Use `org-format-agenda-item' to get
+ a consistent line after a state change.
+ (org-agenda-remove-times-when-in-prefix): New option.
+ (org-prefix-has-time): New variable.
+ (org-parse-time-string): Optional argument NODEFAULT.
+ (org-format-agenda-item): Parse items for time-of-day
+ specifications and move these into the prefix if possible.
+ (org-agenda-priority): Get current heading, not previous heading
+ during agenda remote editing.
+
+======================================================================
+ Intsalled as 3.08
+
+2005-04-28 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el Many small changes to keep the byte compiler happy.
+ (org-prefix-format-compiled): New variable.
+ (org-compile-prefix-format): New function.
+ (org-timeline, org-agenda, org-diary): Call
+ `org-compile-prefix-format'.
+ (org-agenda-prefix-format,org-timeline-prefix-format): New
+ options.
+ (org-agenda-get-scheduled): Check if file is openned in
+ `org-mode'.
+ (org-get-entries-from-diary): Use `org-get-time-of-day', for
+ consistency with entries from `org-mode' files.
+ (org-get-time-of-day): Fixed bug with partial matches early in a
+ line.
+ (org-non-link-chars): New constant.
+ (org-link-regexp): Respect `org-non-link-chars'.
+ (org-agenda-day-view): Command removed.
+ (org-agenda-toggle-week-view): Renamed from
+ `org-agenda-week-view'.
+ (org-follow-bbdb-link, org-store-link): Search also company field.
+ (org-highlight-overlay): New variable.
+ (org-highlight, org-unhighlight): New functions.
+ (org-agenda-mode): Added pre-command-hook to remove highlight.
+ (org-evaluate-time-range): Behavior depend upon time stamp format:
+ Does it contain a time or not?
+ (org-show-subtree, org-show-entry): New functions.
+ (org-agenda-cleanup-fancy-diary): Remove empty lines.
+
+============================================================
+ installed as 3.06
+
+2005-04-14 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-agenda-date-prompt): Renamed from
+ `org-agenda-date-today'.
+ (org-evaluate-time-range): Insert at point instead of directly
+ after time range.
+ (org-first-headline-recenter, org-subtree-end-visible-p)
+ (org-optimize-window-after-visibility-change): New functions
+ (org-agenda-post-command-hook): Don't allow point at end of line,
+ to make sure it always hits the text properties.
+ (org-agenda-next-date-line, org-agenda-previous-date-line): New
+ commands.
+ (org-set-regexps-and-options): Category may contain white space.
+ (org-agenda-get-deadlines, org-agenda-get-scheduled): Improved
+ marker positions.
+ (org-agenda-new-marker): Argument POS made optional.
+ (org-agenda-get-timestamps): Deadlines which are done are listed
+ in org-done-face now.
+ (org-agenda-get-todos, org-agenda-get-timestamps)
+ (org-agenda-get-deadlines, org-agenda-get-scheduled): set
+ `undone-face' and `done-face' properties.
+ (org-last-todo-state-is-todo): New variable.
+ (org-todo): Set `org-last-todo-state-is-todo'.
+ (org-agenda-todo): Change face according to
+ `org-last-todo-state-is-todo'. And change other lines refering to
+ the same entry.
+ (org-calendar-goto-agenda): New command.
+ (org-calendar-to-agenda-key): New option.
+ (org-startup-folded): New allowed value `content'.
+ (org-set-regexps-and-options): Accept new value `content' for
+ `org-startup-folded'.
+ (org-get-current-options): Handle new value `content' for
+ `org-startup-folded'.
+ (org-insert-todo-heading): New command.
+ (org-mode): Insert first line "*-* mode: org-mode -*-" when called
+ interactively in empty file and option
+ `org-insert-mode-line-in-empty-file' has been set.
+ (org-agenda-todo,org-agenda-priority): Modified to use
+ `org-agenda-change-all-lines'.
+ (org-warning-face): Changed color on dark background
+
+======================================================================
+ Installed as version 3.05
+
+2005-03-29 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
+ (org-agenda-convert-date, org-agenda-goto-calendar): New commands.
+
+2005-03-28 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-diary-default-entry): New function.
+ (org-get-entries-from-diary): Better parsing of diary entries
+ (org-agenda-check-no-diary): New function.
+ ("diary-lib"): Advice to function `add-to-diary-list', to allow
+ linking to diary entries.
+ (org-agenda-execute-calendar-command): New function
+
+2005-03-24 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-agenda): Improved visible section in window. And
+ use `org-fit-agenda-window'.
+ (org-fit-agenda-window): New option.
+
+2005-03-17 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-move-subtree-down): Better handling of empty lines
+ at end of subtree.
+ (org-cycle): Numeric prefix is interpreted now as show-subtree N
+ levels up.
+
+2005-03-16 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-fontify-done-headline): New option.
+ (org-headline-done-face): New face.
+ (org-set-font-lock-defaults): Use `org-headline-done-face'.
+
+2005-03-11 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-table-copy-down): renamed from
+ `org-table-copy-from-above'. When current field is non-empty, it
+ is copied to next row.
+
+2005-03-05 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-table-copy-from-above): Fixed bug which made it
+ impossible to copy fields containing only a single non-white
+ character.
+
+Release of 3.04 -------------------------------------------------------------
+
+2005-01-17 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-version): Prefix arg removed, was not needed.
+
+
+
+
+2005-01-11 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-show-following-heading): New option.
+ (org-show-hierarchy-above): Use `org-show-following-heading'.
+
+2005-01-03 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (orgtbl-optimized): New option
+ (orgtbl-mode): New command, a minor mode.
+ (orgtbl-mode-map): New variable.
+ (turn-on-orgtbl, orgtbl-mode, orgtbl-make-binding)
+ (orgtbl-error, orgtbl-self-insert-command)
+ (orgtbl-delete-backward-char, orgtbl-delete-char): New functions.
+
+2004-12-22 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-mode): `org-table-may-need-update' is now a local
+ variable in each org-mode buffer.
+
+2004-12-10 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.el (org-set-regexps-and-options): Renamed from
+ `org-set-regexps'. Added checking for STARTUP keyword.
+ (org-get-current-options): Added STARTUP options.
+ (org-table-insert-row): Mode mode intelligent about when
+ realignment is needed.
+ (org-self-insert-command, org-delete-backward-char,
+ org-delete-char): New commands.
+ (org-enable-table-editor): new default value `optimized'.
+ (org-table-blank-field): Support blanking regions if active.
+
diff --git a/Makefile b/Makefile
index 1e1ad37..f59e036 100644
--- a/Makefile
+++ b/Makefile
@@ -67,7 +67,7 @@ HTMLDIR = /home/dominik/public_html/Tools/org
.SUFFIXES: .el .elc .texi
SHELL = /bin/sh
-DISTFILES= README ${LISPFILES} ${DOCFILES} ${CARDFILES} Makefile dir
+DISTFILES= README ${LISPFILES} ${DOCFILES} ${CARDFILES} Makefile dir ChangeLog
DISTFILES_xemacs= xemacs/noutline.el xemacs/ps-print-invisible.el xemacs/README
all: $(ELCFILES)
@@ -148,7 +148,7 @@ ecompile:
distfile:
@if [ "X$(TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi
- touch org.pdf orgcard.tex
+ touch org.texi orgcard.tex
make info
make doc
rm -rf org-$(TAG) org-$(TAG).zip
@@ -159,6 +159,22 @@ distfile:
zip -r org-$(TAG).zip org-$(TAG)
gtar zcvf org-$(TAG).tar.gz org-$(TAG)
+release:
+ @if [ "X$(TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi
+ make distfile
+ make doc
+ rm -rf org-release
+ $(MKDIR) org-release
+ cp org-$(TAG).zip org-$(TAG).tar.gz org-release
+ cp org.pdf orgcard.pdf org.texi org.html org-release
+ cp ORGWEBPAGE/tmp/*.html org-release
+ cp ORGWEBPAGE/tmp/*.el org-release
+ cp ORGWEBPAGE/tmp/*.txt org-release
+ cp ORGWEBPAGE/tmp/*.css org-release
+ cp ORGWEBPAGE/tmp/*.jpg org-release
+ cp org-release/org-$(TAG).zip org-release/org.zip
+ cp org-release/org-$(TAG).tar.gz org-release/org.tar.gz
+
dist:
make distfile TAG=$(TAG)
cp org-$(TAG).zip org-$(TAG).tar.gz $(HTMLDIR)
diff --git a/README b/README
index 6ceba5f..588b25f 100644
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
The is a distribution of Org-mode, a plain text notes and project planning
tool for Emacs.
-The homepage of Org-mode is at http://www.astro.uva.nl/~domnik/Tools/org/
+The homepage of Org-mode is at http://orgmode.org
The manual is in the file org.pdf, it includes a section about installation.
diff --git a/org b/org
index dbabaab..651cec1 100644
--- a/org
+++ b/org
@@ -1,11 +1,11 @@
-This is org, produced by makeinfo version 4.8 from org.texi.
+This is org, produced by makeinfo version 4.7 from org.texi.
INFO-DIR-SECTION Emacs
START-INFO-DIR-ENTRY
* Org Mode: (org). Outline-based notes management and organizer
END-INFO-DIR-ENTRY
- This manual is for Org-mode (version 5.08).
+ This manual is for Org-mode (version 5.10).
Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation
@@ -27,7 +27,7 @@ File: org, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
Org Mode Manual
***************
-This manual is for Org-mode (version 5.08).
+This manual is for Org-mode (version 5.10).
Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation
@@ -51,8 +51,9 @@ This manual is for Org-mode (version 5.08).
* Hyperlinks:: Notes in context
* TODO items:: Every tree branch can be a TODO item
* Tags:: Tagging headlines and matching sets of tags
-* Properties and columns::
+* Properties and columns:: Storing information about an entry
* Timestamps:: Assign date and time to items
+* Remember:: Quickly adding nodes to the outline tree
* Agenda views:: Collecting information into views
* Embedded LaTeX:: LaTeX fragments and formulas
* Exporting:: Sharing and publishing of notes
@@ -119,22 +120,16 @@ Hyperlinks
* Link abbreviations:: Shortcuts for writing complex links
* Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
-* Remember:: Org-trees store quick notes
Internal links
* Radio targets:: Make targets trigger links in plain text.
-Remember
-
-* Setting up remember:: Some code for .emacs to get things going
-* Remember templates:: Define the outline of different note types
-* Storing notes:: Directly get the note to where it belongs
-
TODO items
* TODO basics:: Marking and displaying TODO entries
* TODO extensions:: Workflow and assignments
+* Progress logging:: Dates and notes for progress
* Priorities:: Some things are more important than others
* Breaking down tasks:: Splitting a task into manageable pieces
* Checkboxes:: Tick-off lists
@@ -144,7 +139,14 @@ Extended use of TODO keywords
* Workflow states:: From TODO to DONE in steps
* TODO types:: I do this, Fred the rest
* Multiple sets in one file:: Mixing it all, and still finding your way
+* Fast access to TODO states:: Single letter selection of a state
* Per file keywords:: Different files, different requirements
+* Faces for TODO keywords:: Highlighting states
+
+Progress Logging
+
+* Closing items:: When was this entry marked DONE?
+* Tracking TODO state changes:: When did the status change?
Tags
@@ -175,7 +177,7 @@ Timestamps
* Time stamps:: Assigning a time to a tree entry
* Creating timestamps:: Commands which insert timestamps
* Deadlines and scheduling:: Planning your work
-* Progress logging:: Documenting when what work was done.
+* Clocking work time::
Creating timestamps
@@ -187,11 +189,11 @@ Deadlines and Scheduling
* Inserting deadline/schedule:: Planning items
* Repeated tasks:: Items that show up again and again
-Progress Logging
+Remember
-* Closing items:: When was this entry marked DONE?
-* Tracking TODO state changes:: When did the status change?
-* Clocking work time:: When exactly did you work on this item?
+* Setting up remember:: Some code for .emacs to get things going
+* Remember templates:: Define the outline of different note types
+* Storing notes:: Directly get the note to where it belongs
Agenda Views
@@ -386,7 +388,7 @@ the minor Orgstruct-mode.
There is a website for Org-mode which provides links to the newest
version of Org-mode, as well as additional information, frequently asked
questions (FAQ), links to tutorials etc. This page is located at
-`http://www.astro.uva.nl/~dominik/Tools/org/'.
+`http://orgmode.org'.

File: org, Node: Installation, Next: Activation, Prev: Summary, Up: Introduction
@@ -467,7 +469,7 @@ File: org, Node: Feedback, Prev: Activation, Up: Introduction
If you find problems with Org-mode, or if you have questions, remarks,
or ideas about it, please contact the maintainer Carsten Dominik at
-<dominik at science dot uva dot nl>.
+<carsten at orgmode dot org>.
For bug reports, please provide as much information as possible,
including the version information of Emacs (`C-h v emacs-version
@@ -705,6 +707,10 @@ File: org, Node: Structure editing, Next: Archiving, Prev: Motion, Up: Docum
the end of a headline), then a headline like the current one will
be inserted after the end of the subtree.
+`C-<RET>'
+ Insert a new heading after the current subtree, same level as the
+ current headline. This command works from anywhere in the entry.
+
`M-S-<RET>'
Insert new TODO entry with same level as current heading.
@@ -844,13 +850,22 @@ file, the archive file.
current file, with the name derived by appending `_archive' to the
current file name. For information and examples on how to change this,
see the documentation string of the variable `org-archive-location'.
-There is also an in-buffer option for setting this variable, for example
+There is also an in-buffer option for setting this variable, for
+example(1):
#+ARCHIVE: %s_done::
-You may have several such lines in the buffer, they will then be valid
-for the entries following the line (the first will also apply to any
-text before it).
+If you would like to have a special ARCHIVE location for a single entry
+or a (sub)tree, give the entry an `:ARCHIVE:' property with the
+location as the value (*note Properties and columns::).
+
+ ---------- Footnotes ----------
+
+ (1) If there are several such lines in the buffer, each will be
+valid for the entries below it. The first will also apply to any text
+before it. This method is only kept for backward compatibility. The
+preferred methods for setting multiple archive locations is using a
+property.

File: org, Node: Sparse trees, Next: Plain lists, Prev: Archiving, Up: Document structure
@@ -1122,10 +1137,12 @@ Creation and conversion
`C-c |'
Convert the active region to table. If every line contains at
least one TAB character, the function assumes that the material is
- tab separated. If not, lines are split at whitespace into fields.
- You can use a prefix argument to indicate the minimum number of
- consecutive spaces required to identify a field separator
- (default: just one).
+ tab separated. If every line contains a comma, comma-separated
+ values (CSV) are assumed. If not, lines are split at whitespace
+ into fields. You can use a prefix argument to force a specific
+ separator: `C-u' forces CSV, `C-u C-u' forces TAB, and a numeric
+ argument N indicates that at least N consequtive spaces, or
+ alternatively a TAB will be the separator.
If there is no active region, this command creates an empty
Org-mode table. But it's easier just to start typing, like
`|Name|Phone|Age <RET> |- <TAB>'.
@@ -1898,7 +1915,6 @@ links to other files, Usenet articles, emails, and much more.
* Link abbreviations:: Shortcuts for writing complex links
* Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
-* Remember:: Org-trees store quick notes

File: org, Node: Link format, Next: Internal links, Prev: Hyperlinks, Up: Hyperlinks
@@ -2262,7 +2278,7 @@ search for `find me' in the current file, just as `[[find me]]' would.
single colon.

-File: org, Node: Custom searches, Next: Remember, Prev: Search options, Up: Hyperlinks
+File: org, Node: Custom searches, Prev: Search options, Up: Hyperlinks
4.8 Custom Searches
===================
@@ -2284,166 +2300,6 @@ for BibTeX database files, and you can use the corresponding code as an
implementation example. Search for `BibTeX links' in the source file.

-File: org, Node: Remember, Prev: Custom searches, Up: Hyperlinks
-
-4.9 Remember
-============
-
-Another way to create org entries with links to other files is through
-the remember package by John Wiegley. Remember lets you store quick
-notes with little interruption of your work flow. See
-`http://www.emacswiki.org/cgi-bin/wiki/RememberMode' for more
-information. The notes produced by Remember can be stored in different
-ways, and Org-mode files are a good target. Org-mode significantly
-expands the possibilities of remember: You may define templates for
-different note types, and to associate target files and headlines with
-specific templates. It also allows you to select the location where a
-note should be stored interactively, on the fly.
-
-* Menu:
-
-* Setting up remember:: Some code for .emacs to get things going
-* Remember templates:: Define the outline of different note types
-* Storing notes:: Directly get the note to where it belongs
-
-
-File: org, Node: Setting up remember, Next: Remember templates, Prev: Remember, Up: Remember
-
-4.9.1 Setting up remember
--------------------------
-
-The following customization will tell remember to use org files as
-target, and to create annotations compatible with Org-mode links.
-
- (setq org-directory "~/path/to/my/orgfiles/")
- (setq org-default-notes-file "~/.notes")
- (setq remember-annotation-functions '(org-remember-annotation))
- (setq remember-handler-functions '(org-remember-handler))
- (add-hook 'remember-mode-hook 'org-remember-apply-template)
-
-
-File: org, Node: Remember templates, Next: Storing notes, Prev: Setting up remember, Up: Remember
-
-4.9.2 Remember templates
-------------------------
-
-In combination with Org-mode, you can use templates to generate
-different types of remember notes. For example, if you would like to
-use one template to create general TODO entries, another one for
-journal entries, and a third one for collecting random ideas, you could
-use:
-
- (setq org-remember-templates
- '((?t "* TODO %?\n %i\n %a" "~/org/TODO.org")
- (?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org")
- (?i "* %^{Title}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
-
-In these entries, the character specifies how to select the template.
-The first string specifies the template. Two more (optional) strings
-give the file in which, and the headline under which the new note
-should be stored. The file defaults (if not present or `nil') to
-`org-default-notes-file', the heading to
-`org-remember-default-headline'. Both defaults help to get to the
-storing location quickly, but you can change the location interactively
-while storing the note.
-
- When you call `M-x remember' (or `M-x org-remember') to remember
-something, org will prompt for a key to select the template (if you have
-more than one template) and then prepare the buffer like
- * TODO
- [[file:link to where you called remember]]
-
-or
-
- * [2006-03-21 Tue 15:37]
-
- [[file:link to where you called remember]]
-
-During expansion of the template, special `%'-escapes allow dynamic
-insertion of content:
- %^{prompt} prompt the user for a string and replace this sequence with it.
- %t time stamp, date only
- %T time stamp with date and time
- %u, %U like the above, but inactive time stamps
- %^t like `%t', but prompt for date. Similarly `%^T', `%^u', `%^U'
- You may define a prompt like `%^{Birthday}t'
- %n user name (taken from `user-full-name')
- %a annotation, normally the link created with `org-store-link'
- %i initial content, the region when remember is called with C-u.
- The entire text will be indented like `%i' itself.
- %^g prompt for tags, with completion on tags in target file.
- %^G prompt for tags, with completion all tags in all agenda files.
- %:keyword specific information for certain link types, see below
-
-For specific link types, the following keywords will be defined:
-
- Link type | Available keywords
- -------------------+----------------------------------------------
- bbdb | %:name %:company
- vm, wl, mh, rmail | %:type %:subject %:message-id
- | %:from %:fromname %:fromaddress
- | %:to %:toname %:toaddress
- | %:fromto (either "to NAME" or "from NAME")(1)
- gnus | %:group, for messages also all email fields
- w3, w3m | %:url
- info | %:file %:node
- calendar | %:date"
-
-To place the cursor after template expansion use:
-
- %? After completing the template, position cursor here.
-
-If you change you mind about which template to use, call `org-remember'
-in the remember buffer. You may then select a new template that will
-be filled with the previous context information.
-
- ---------- Footnotes ----------
-
- (1) This will always be the other, not the user. See the variable
-`org-from-is-user-regexp'.
-
-
-File: org, Node: Storing notes, Prev: Remember templates, Up: Remember
-
-4.9.3 Storing notes
--------------------
-
-When you are finished preparing a note with remember, you have to press
-`C-c C-c' to file the note away. The handler first prompts for a
-target file - if you press <RET>, the value specified for the template
-is used. Then the command offers the headings tree of the selected
-file, with the cursor position at the default headline (if you had
-specified one in the template). You can either immediately press <RET>
-to get the note placed there. Or you can use the following keys to
-find a better location:
- <TAB> Cycle visibility.
- <down> / <up> Next/previous visible headline.
- n / p Next/previous visible headline.
- f / b Next/previous headline same level.
- u One level up.
- Pressing <RET> or <left> or <right> then leads to the following
-result.
-
-Cursor Key Note gets inserted
-position
-buffer-start <RET> as level 2 heading at end of file
-on headline <RET> as sublevel of the heading at cursor
- <left>/<right>as same level, before/after current heading
-not on <RET> at cursor position, level taken from context.
-headline
-
- So a fast way to store the note to its default location is to press
-`C-c C-c <RET> <RET>'. Even shorter would be `C-u C-c C-c', which does
-the same without even asking for a file or showing the tree.
-
- Before inserting the text into a tree, the function ensures that the
-text has a headline, i.e. a first line that starts with a `*'. If not,
-a headline is constructed from the current date and some additional
-data. If the variable `org-adapt-indentation' is non-nil, the entire
-text is also indented so that it starts in the same column as the
-headline (after the asterisks).
-
-
File: org, Node: TODO items, Next: Tags, Prev: Hyperlinks, Up: Top
5 TODO items
@@ -2464,6 +2320,7 @@ overview over all things you have to do.
* TODO basics:: Marking and displaying TODO entries
* TODO extensions:: Workflow and assignments
+* Progress logging:: Dates and notes for progress
* Priorities:: Some things are more important than others
* Breaking down tasks:: Splitting a task into manageable pieces
* Checkboxes:: Tick-off lists
@@ -2488,7 +2345,11 @@ The most important commands to work with TODO entries are:
'--------------------------------'
The same rotation can also be done "remotely" from the timeline and
- agenda buffers with the `t' command key (*note Agenda commands::).
+ agenda buffers with the `t' command key (*note Agenda commands::).
+
+`C-u C-c C-t'
+ Select a specific keyword using completion of (if it has been set
+ up) the fast selection interface.
`S-<right>'
`S-<left>'
@@ -2526,7 +2387,7 @@ The most important commands to work with TODO entries are:
Insert a new TODO entry below the current one.

-File: org, Node: TODO extensions, Next: Priorities, Prev: TODO basics, Up: TODO items
+File: org, Node: TODO extensions, Next: Progress logging, Prev: TODO basics, Up: TODO items
5.2 Extended use of TODO keywords
=================================
@@ -2544,7 +2405,9 @@ TODO items in particular (*note Tags::).
* Workflow states:: From TODO to DONE in steps
* TODO types:: I do this, Fred the rest
* Multiple sets in one file:: Mixing it all, and still finding your way
+* Fast access to TODO states:: Single letter selection of a state
* Per file keywords:: Different files, different requirements
+* Faces for TODO keywords:: Highlighting states

File: org, Node: Workflow states, Next: TODO types, Prev: TODO extensions, Up: TODO extensions
@@ -2611,7 +2474,7 @@ global todo list: `C-3 C-c t'.
buffers.

-File: org, Node: Multiple sets in one file, Next: Per file keywords, Prev: TODO types, Up: TODO extensions
+File: org, Node: Multiple sets in one file, Next: Fast access to TODO states, Prev: TODO types, Up: TODO extensions
5.2.3 Multiple keyword sets in one file
---------------------------------------
@@ -2648,9 +2511,34 @@ using completion, you may also apply the following commands:
`DONE' to `REPORT' in the example above.

-File: org, Node: Per file keywords, Prev: Multiple sets in one file, Up: TODO extensions
+File: org, Node: Fast access to TODO states, Next: Per file keywords, Prev: Multiple sets in one file, Up: TODO extensions
+
+5.2.4 Fast access to TODO states
+--------------------------------
+
+If you would like to quickly change an entry to an arbitrary TODO state
+instead of cycling through the states, you can set up keys for
+single-letter access to the states. This is done by adding the section
+key after each keyword, in parenthesis. For example:
+
+ (setq org-todo-keywords
+ '((sequence "TODO(t)" "|" "DONE(d)")
+ (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
+ (sequence "|" "CANCELED(c)")))
+
+ If you then press `C-u C-c C-t' followed by the selection key, the
+entry will be switched to this state. <SPC> can be used to remove any
+TODO keyword from an entry. Should you like this way of selecting TODO
+states a lot, you might want to set the variable
+`org-use-fast-todo-selection' to `t' and make this behavior the
+default. Check also the variable
+`org-fast-tag-selection-include-todo', it allows to change the TODO
+state through the tags interface (*note Setting tags::).
+
+
+File: org, Node: Per file keywords, Next: Faces for TODO keywords, Prev: Fast access to TODO states, Up: TODO extensions
-5.2.4 Setting up keywords for individual files
+5.2.5 Setting up keywords for individual files
----------------------------------------------
It can be very useful to use different aspects of the TODO mechanism in
@@ -2686,9 +2574,100 @@ after visiting a file. `C-c C-c' with the cursor in a line starting
with `#+' is simply restarting Org-mode for the current buffer.

-File: org, Node: Priorities, Next: Breaking down tasks, Prev: TODO extensions, Up: TODO items
+File: org, Node: Faces for TODO keywords, Prev: Per file keywords, Up: TODO extensions
+
+5.2.6 Faces for TODO keywords
+-----------------------------
+
+Org-mode highlights TODO keywords with special faces: `org-todo' for
+keywords indicating that an item still has to be acted upon, and
+`org-done' for keywords indicating that an item is finished. If you
+are using more than 2 different states, you might want to use special
+faces for some of them. This can be done using the variable
+`org-todo-keyword-faces'. For example:
+
+ (setq org-todo-keyword-faces
+ '(("TODO" . org-warning)
+ ("DEFERRED" . shadow)
+ ("CANCELED" . (:foreground "blue" :weight bold))))
+
+
+File: org, Node: Progress logging, Next: Priorities, Prev: TODO extensions, Up: TODO items
+
+5.3 Progress Logging
+====================
+
+Org-mode can automatically record a time stamp and even a note when you
+mark a TODO item as DONE, or even each time you change the state of a
+TODO item.
+
+* Menu:
+
+* Closing items:: When was this entry marked DONE?
+* Tracking TODO state changes:: When did the status change?
+
+
+File: org, Node: Closing items, Next: Tracking TODO state changes, Prev: Progress logging, Up: Progress logging
+
+5.3.1 Closing items
+-------------------
+
+If you want to keep track of _when_ a certain TODO item was finished,
+turn on logging with(1)
+
+ (setq org-log-done t)
+
+Then each time you turn a TODO entry into DONE using either `C-c C-t'
+in the Org-mode buffer or `t' in the agenda buffer, a line `CLOSED:
+[timestamp]' will be inserted just after the headline. If you turn the
+entry back into a TODO item through further state cycling, that line
+will be removed again. In the timeline (*note Timeline::) and in the
+agenda (*note Weekly/Daily agenda::), you can then use the `l' key to
+display the TODO items closed on each day, giving you an overview of
+what has been done on a day. If you want to record a note along with
+the timestamp, use(2)
+
+ (setq org-log-done '(done))
+
+ ---------- Footnotes ----------
+
+ (1) The corresponding in-buffer setting is: `#+STARTUP: logdone'
+
+ (2) The corresponding in-buffer setting is: `#+STARTUP: lognotedone'
+
+
+File: org, Node: Tracking TODO state changes, Prev: Closing items, Up: Progress logging
+
+5.3.2 Tracking TODO state changes
+---------------------------------
-5.3 Priorities
+When TODO keywords are used as workflow states (*note Workflow
+states::), you might want to keep track of when a state change occurred
+and record a note about this change. With the setting
+
+ (setq org-log-done '(state))
+
+each state change will prompt you for a note that will be attached to
+the current headline. If you press `C-c C-c' without typing anything
+into the note buffer, only the time of the state change will be noted.
+Very likely you do not want this verbose tracking all the time, so it
+is probably better to configure this behavior with in-buffer options.
+For example, if you are tracking purchases, put these into a separate
+file that contains:
+
+ #+SEQ_TODO: TODO(t) ORDERED(o) INVOICE(i) PAYED(p) | RECEIVED(r)
+ #+STARTUP: lognotestate
+
+ If you only need to take a note for some of the states, mark those
+states with an additional `@', like this:
+
+ #+SEQ_TODO: TODO(t) ORDERED(o@) INVOICE(i@) PAYED(p) | RECEIVED(r)
+ #+STARTUP: lognotestate
+
+
+File: org, Node: Priorities, Next: Breaking down tasks, Prev: Progress logging, Up: TODO items
+
+5.4 Priorities
==============
If you use Org-mode extensively to organize your work, you may end up
@@ -2712,7 +2691,7 @@ agenda (*note Weekly/Daily agenda::).
`S-<up>'
`S-<down>'
- Increase/decrease priority of current headline. Note that these
+ Increase/decrease priority of current headline(1). Note that these
keys are also used to modify time stamps (*note Creating
timestamps::). Furthermore, these keys are also used by CUA-mode
(*note Conflicts::).
@@ -2725,10 +2704,14 @@ highest priority is earlier in the alphabet than the lowest priority):
#+PRIORITIES: A C B
+ ---------- Footnotes ----------
+
+ (1) See also the option `org-priority-start-cycle-with-default''.
+

File: org, Node: Breaking down tasks, Next: Checkboxes, Prev: Priorities, Up: TODO items
-5.4 Breaking tasks down into subtasks
+5.5 Breaking tasks down into subtasks
=====================================
It is often advisable to break down large tasks into smaller, manageable
@@ -2745,7 +2728,7 @@ subtasks (*note Checkboxes::).

File: org, Node: Checkboxes, Prev: Breaking down tasks, Up: TODO items
-5.5 Checkboxes
+5.6 Checkboxes
==============
Every item in a plain list (*note Plain lists::) can be made a checkbox
@@ -3369,7 +3352,7 @@ features based on them. For more information see *Note Using the
property API::.

-File: org, Node: Timestamps, Next: Agenda views, Prev: Properties and columns, Up: Top
+File: org, Node: Timestamps, Next: Remember, Prev: Properties and columns, Up: Top
8 Timestamps
************
@@ -3382,7 +3365,7 @@ planning.
* Time stamps:: Assigning a time to a tree entry
* Creating timestamps:: Commands which insert timestamps
* Deadlines and scheduling:: Planning your work
-* Progress logging:: Documenting when what work was done.
+* Clocking work time::

File: org, Node: Time stamps, Next: Creating timestamps, Prev: Timestamps, Up: Timestamps
@@ -3397,13 +3380,12 @@ stamp can appear anywhere in the headline or body of an org-tree entry.
Its presence causes entries to be shown on specific dates in the agenda
(*note Weekly/Daily agenda::). We distinguish:
-PLAIN TIME STAMP
+PLAIN TIME STAMP, EVENT, APPOINTMENT
A simple time stamp just assigns a date/time to an item. This is
- just like writing down an appointment in a paper agenda, or like
- writing down an event in a diary, when you want to take note of
- when something happened. In the timeline and agenda displays, the
- headline of an entry associated with a plain time stamp will be
- shown exactly on that date.
+ just like writing down an appointment or event in a paper agenda.
+ In the timeline and agenda displays, the headline of an entry
+ associated with a plain time stamp will be shown exactly on that
+ date.
* Meet Peter at the movies <2006-11-01 Wed 19:15>
* Discussion on climate change <2006-11-02 Thu 20:00-22:00>
@@ -3614,7 +3596,7 @@ consequences:
the custom format is shorter, things do work as expected.

-File: org, Node: Deadlines and scheduling, Next: Progress logging, Prev: Creating timestamps, Up: Timestamps
+File: org, Node: Deadlines and scheduling, Next: Clocking work time, Prev: Creating timestamps, Up: Timestamps
8.3 Deadlines and Scheduling
============================
@@ -3648,6 +3630,14 @@ SCHEDULED
*** TODO Call Trillian for a date on New Years Eve.
SCHEDULED: <2004-12-25 Sat>
+ Important: Scheduling an item in Org-mode should not be understood
+ like Scheduling a meeting. Setting a date for a meeting is just a
+ simple appointment, you should mark this entry with a simple plain
+ time stamp, to get this item shown on the date where it applies.
+ This is a frequent mis-understanding from Org-users. In Org-mode,
+ Scheduling means setting a date when you want to start working on
+ an action item.
+
* Menu:
* Inserting deadline/schedule:: Planning items
@@ -3723,79 +3713,10 @@ future instances will be visible.
task - just make sure that the repeater intervals on both are the same.

-File: org, Node: Progress logging, Prev: Deadlines and scheduling, Up: Timestamps
-
-8.4 Progress Logging
-====================
-
-Org-mode can automatically record a time stamp when you mark a TODO item
-as DONE, or even each time when you change the state of a TODO item.
-You can also measure precisely the time you spent on specific items in a
-project by starting and stopping a clock when you start and stop working
-on an aspect of a project.
-
-* Menu:
-
-* Closing items:: When was this entry marked DONE?
-* Tracking TODO state changes:: When did the status change?
-* Clocking work time:: When exactly did you work on this item?
-
-
-File: org, Node: Closing items, Next: Tracking TODO state changes, Prev: Progress logging, Up: Progress logging
-
-8.4.1 Closing items
--------------------
-
-If you want to keep track of _when_ a certain TODO item was finished,
-turn on logging with(1)
-
- (setq org-log-done t)
-
-Then each time you turn a TODO entry into DONE using either `C-c C-t'
-in the Org-mode buffer or `t' in the agenda buffer, a line `CLOSED:
-[timestamp]' will be inserted just after the headline. If you turn the
-entry back into a TODO item through further state cycling, that line
-will be removed again. In the timeline (*note Timeline::) and in the
-agenda (*note Weekly/Daily agenda::), you can then use the `l' key to
-display the TODO items closed on each day, giving you an overview of
-what has been done on a day. If you want to record a note along with
-the timestamp, use(2)
-
- (setq org-log-done '(done))
+File: org, Node: Clocking work time, Prev: Deadlines and scheduling, Up: Timestamps
- ---------- Footnotes ----------
-
- (1) The corresponding in-buffer setting is: `#+STARTUP: logdone'
-
- (2) The corresponding in-buffer setting is: `#+STARTUP: lognotedone'
-
-
-File: org, Node: Tracking TODO state changes, Next: Clocking work time, Prev: Closing items, Up: Progress logging
-
-8.4.2 Tracking TODO state changes
----------------------------------
-
-When TODO keywords are used as workflow states (*note Workflow
-states::), you might want to keep track of when a state change occurred,
-and you may even want to attach notes to that state change. With the
-setting
-
- (setq org-log-done '(state))
-
-each state change will prompt you for a note that will be attached to
-the current headline. Very likely you do not want this verbose tracking
-all the time, so it is probably better to configure this behavior with
-in-buffer options. For example, if you are tracking purchases, put
-these into a separate file that starts with:
-
- #+SEQ_TODO: TODO ORDERED INVOICE PAYED RECEIVED SENT
- #+STARTUP: lognotestate
-
-
-File: org, Node: Clocking work time, Prev: Tracking TODO state changes, Up: Progress logging
-
-8.4.3 Clocking work time
-------------------------
+8.4 Clocking work time
+======================
Org-mode allows you to clock the time you spent on specific tasks in a
project. When you start working on an item, you can start the clock.
@@ -3844,16 +3765,25 @@ also computes the total time spent on each subtree of a project.
#+END: clocktable
If such a block already exists, its content is replaced by the new
table. The `BEGIN' line can specify options:
- :maxlevels Maximum level depth to which times are listed in the table.
+ :maxlevel Maximum level depth to which times are listed in the table.
:emphasize When `t', emphasize level one and level two items
+ :scope The scope to consider. This can be any of the following:
+ nil the current buffer or narrowed region
+ file the full current buffer
+ subtree the subtree where the clocktable is located
+ treeN the surrounding level N tree, for example `tree3'
+ tree the surrounding level 1 tree
+ agenda all agenda files
+ ("file"..) scan these files
:block The time block to consider. This block is specified relative
to the current time and may be any of these keywords:
`today', `yesterday', `thisweek', `lastweek',
`thismonth', `lastmonth', `thisyear', or `lastyear'.
:tstart A time string specifying when to start considering times
:tend A time string specifying when to stop considering times
- So to get a clock summary for the current day, you could write
- #+BEGIN: clocktable :maxlevel 2 :block today
+ So to get a clock summary of the current level 1 tree, for the
+ current day, you could write
+ #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1
#+END: clocktable
and to use a specific time range you could write(2)
@@ -3862,6 +3792,11 @@ also computes the total time spent on each subtree of a project.
#+END: clocktable
+`C-c C-c'
+`C-c C-x C-u'
+ Update dynamical block at point. The cursor needs to be in the
+ `#+BEGIN' line of the dynamic block.
+
`C-u C-c C-x C-u'
Update all dynamic blocks (*note Dynamic blocks::). This is
useful if you have several clocktable blocks in a buffer.
@@ -3879,10 +3814,188 @@ lognoteclock-out'
the line is broken here only to fit it onto the manual.

-File: org, Node: Agenda views, Next: Embedded LaTeX, Prev: Timestamps, Up: Top
+File: org, Node: Remember, Next: Agenda views, Prev: Timestamps, Up: Top
-9 Agenda Views
-**************
+9 Remember
+**********
+
+The Remember package by John Wiegley lets you store quick notes with
+little interruption of your work flow. See
+`http://www.emacswiki.org/cgi-bin/wiki/RememberMode' for more
+information. It is an excellent way to add new notes and TODO items to
+Org-mode files. Org-mode significantly expands the possibilities of
+remember: You may define templates for different note types, and to
+associate target files and headlines with specific templates. It also
+allows you to select the location where a note should be stored
+interactively, on the fly.
+
+* Menu:
+
+* Setting up remember:: Some code for .emacs to get things going
+* Remember templates:: Define the outline of different note types
+* Storing notes:: Directly get the note to where it belongs
+
+
+File: org, Node: Setting up remember, Next: Remember templates, Prev: Remember, Up: Remember
+
+9.1 Setting up remember
+=======================
+
+The following customization will tell remember to use org files as
+target, and to create annotations compatible with Org-mode links.
+
+ (setq org-directory "~/path/to/my/orgfiles/")
+ (setq org-default-notes-file (concat org-directory "/notes.org"))
+ (setq remember-annotation-functions '(org-remember-annotation))
+ (setq remember-handler-functions '(org-remember-handler))
+ (add-hook 'remember-mode-hook 'org-remember-apply-template)
+
+
+File: org, Node: Remember templates, Next: Storing notes, Prev: Setting up remember, Up: Remember
+
+9.2 Remember templates
+======================
+
+In combination with Org-mode, you can use templates to generate
+different types of remember notes. For example, if you would like to
+use one template to create general TODO entries, another one for
+journal entries, and a third one for collecting random ideas, you could
+use:
+
+ (setq org-remember-templates
+ '((?t "* TODO %?\n %i\n %a" "~/org/TODO.org" "Tasks")
+ (?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org")
+ (?i "* %^{Title}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
+
+In these entries, the character specifies how to select the template.
+The first string specifies the template. Two more (optional) strings
+give the file in which, and the headline under which the new note
+should be stored. The file defaults (if not present or `nil') to
+`org-default-notes-file', the heading to
+`org-remember-default-headline'. Both defaults help to get to the
+storing location quickly, but you can change the location interactively
+while storing the note.
+
+ When you call `M-x remember' (or `M-x org-remember') to remember
+something, org will prompt for a key to select the template (if you have
+more than one template) and then prepare the buffer like
+ * TODO
+ [[file:link to where you called remember]]
+
+or
+
+ * [2006-03-21 Tue 15:37]
+
+ [[file:link to where you called remember]]
+
+During expansion of the template, special `%'-escapes allow dynamic
+insertion of content:
+ %^{prompt} prompt the user for a string and replace this sequence with it.
+ %t time stamp, date only
+ %T time stamp with date and time
+ %u, %U like the above, but inactive time stamps
+ %^t like `%t', but prompt for date. Similarly `%^T', `%^u', `%^U'
+ You may define a prompt like `%^{Birthday}t'
+ %n user name (taken from `user-full-name')
+ %a annotation, normally the link created with `org-store-link'
+ %A like `%a', but prompt for the description part
+ %i initial content, the region when remember is called with C-u.
+ The entire text will be indented like `%i' itself.
+ %^g prompt for tags, with completion on tags in target file.
+ %^G prompt for tags, with completion all tags in all agenda files.
+ %:keyword specific information for certain link types, see below
+
+For specific link types, the following keywords will be defined(1):
+
+ Link type | Available keywords
+ -------------------+----------------------------------------------
+ bbdb | %:name %:company
+ vm, wl, mh, rmail | %:type %:subject %:message-id
+ | %:from %:fromname %:fromaddress
+ | %:to %:toname %:toaddress
+ | %:fromto (either "to NAME" or "from NAME")(2)
+ gnus | %:group, for messages also all email fields
+ w3, w3m | %:url
+ info | %:file %:node
+ calendar | %:date"
+
+To place the cursor after template expansion use:
+
+ %? After completing the template, position cursor here.
+
+If you change you mind about which template to use, call `org-remember'
+in the remember buffer. You may then select a new template that will
+be filled with the previous context information.
+
+ ---------- Footnotes ----------
+
+ (1) If you define your own link types (*note Adding hyperlink
+types::), any property you store with `org-store-link-props' can be
+accessed in remember templates in a similar way.
+
+ (2) This will always be the other, not the user. See the variable
+`org-from-is-user-regexp'.
+
+
+File: org, Node: Storing notes, Prev: Remember templates, Up: Remember
+
+9.3 Storing notes
+=================
+
+When you are finished preparing a note with remember, you have to press
+`C-c C-c' to file the note away. The handler will store the note in
+the file and under the headline specified in the template, or it will
+use the default file and headlines. The window configuration will be
+restored, and you are back in the working context before the call to
+`remember'. To re-use the location found during the last call to
+`remember', exit the remember buffer with `C-u C-u C-c C-c', i.e.
+specify a double prefix argument to `C-c C-c'.
+
+ If you want to store the note to a different place, use `C-u C-c
+C-c' instead to exit remember(1). The handler will then first prompt
+for a target file - if you press <RET>, the value specified for the
+template is used. Then the command offers the headings tree of the
+selected file, with the cursor position at the default headline (if you
+had specified one in the template). You can either immediately press
+<RET> to get the note placed there. Or you can use the following keys
+to find a different location:
+ <TAB> Cycle visibility.
+ <down> / <up> Next/previous visible headline.
+ n / p Next/previous visible headline.
+ f / b Next/previous headline same level.
+ u One level up.
+ Pressing <RET> or <left> or <right> then leads to the following
+result.
+
+Cursor Key Note gets inserted
+position
+on headline <RET> as sublevel of the heading at cursor, first or
+ last
+ depending on `org-reverse-note-order'.
+ <left>/<right>as same level, before/after current heading
+buffer-start <RET> as level 2 heading at end of file or level 1
+ at beginning
+ depending on `org-reverse-note-order'.
+not on <RET> at cursor position, level taken from context.
+headline
+
+ Before inserting the text into a tree, the function ensures that the
+text has a headline, i.e. a first line that starts with a `*'. If not,
+a headline is constructed from the current date and some additional
+data. If you have indented the text of the note below the headline, the
+indentation will be adapted if inserting the note into the tree requires
+demotion from level 1.
+
+ ---------- Footnotes ----------
+
+ (1) Configure the variable `org-remember-store-without-prompt' to
+make this behavior the default.
+
+
+File: org, Node: Agenda views, Next: Embedded LaTeX, Prev: Remember, Up: Top
+
+10 Agenda Views
+***************
Due to the way Org-mode works, TODO items, time-stamped items, and
tagged headlines can be scattered throughout a file or even a number of
@@ -3931,8 +4044,8 @@ the window configuration is restored when the agenda exits:

File: org, Node: Agenda files, Next: Agenda dispatcher, Prev: Agenda views, Up: Agenda views
-9.1 Agenda files
-================
+10.1 Agenda files
+=================
The information to be shown is collected from all _agenda files_, the
files listed in the variable `org-agenda-files'(1). Thus even if you
@@ -3950,7 +4063,11 @@ way to maintain it is through the following commands
`C-,'
`C-''
- Cycle through agenda file list, visiting one file after the other.
+ Cycle through agenda file list, visiting one file after the other.
+
+`C-c C-x /'
+ Search for a regular rexpression in all agenda files and display
+ the results in an `occur' buffer.
The Org menu contains the current list of files and can be used to
visit any of them.
@@ -3968,8 +4085,8 @@ command will actually limit the command to the current file, and ignore

File: org, Node: Agenda dispatcher, Next: Built-in agenda views, Prev: Agenda files, Up: Agenda views
-9.2 The agenda dispatcher
-=========================
+10.2 The agenda dispatcher
+==========================
The views are created through a dispatcher that should be bound to a
global key, for example `C-c a' (*note Installation::). In the
@@ -4012,8 +4129,8 @@ a number of special tags matches. *Note Custom agenda views::.

File: org, Node: Built-in agenda views, Next: Presentation and sorting, Prev: Agenda dispatcher, Up: Agenda views
-9.3 The built-in agenda views
-=============================
+10.3 The built-in agenda views
+==============================
In this section we describe the built-in views.
@@ -4028,8 +4145,8 @@ In this section we describe the built-in views.

File: org, Node: Weekly/Daily agenda, Next: Global TODO list, Prev: Built-in agenda views, Up: Built-in agenda views
-9.3.1 The weekly/daily agenda
------------------------------
+10.3.1 The weekly/daily agenda
+------------------------------
The purpose of the weekly/daily _agenda_ is to act like a page of a
paper agenda, showing all the tasks for the current week or day.
@@ -4091,8 +4208,8 @@ will be made in the agenda:

File: org, Node: Global TODO list, Next: Matching tags and properties, Prev: Weekly/Daily agenda, Up: Built-in agenda views
-9.3.2 The global TODO list
---------------------------
+10.3.2 The global TODO list
+---------------------------
The global TODO list contains all unfinished TODO items, formatted and
collected into a single place.
@@ -4138,8 +4255,8 @@ it more compact:

File: org, Node: Matching tags and properties, Next: Timeline, Prev: Global TODO list, Up: Built-in agenda views
-9.3.3 Matching Tags and Properties
-----------------------------------
+10.3.3 Matching Tags and Properties
+-----------------------------------
If headlines in the agenda files are marked with _tags_ (*note Tags::),
you can select headlines based on the tags that apply to them and
@@ -4165,8 +4282,8 @@ Agenda commands::.

File: org, Node: Timeline, Next: Stuck projects, Prev: Matching tags and properties, Up: Built-in agenda views
-9.3.4 Timeline for a single file
---------------------------------
+10.3.4 Timeline for a single file
+---------------------------------
The timeline summarizes all time-stamped items from a single Org-mode
file in a _time-sorted view_. The main purpose of this command is to
@@ -4183,8 +4300,8 @@ Agenda commands::.

File: org, Node: Stuck projects, Prev: Timeline, Up: Built-in agenda views
-9.3.5 Stuck projects
---------------------
+10.3.5 Stuck projects
+---------------------
If you are following a system like David Allen's GTD to organize your
work, one of the "duties" you have is a regular review to make sure
@@ -4224,8 +4341,8 @@ not stuck. The correct customization for this is

File: org, Node: Presentation and sorting, Next: Agenda commands, Prev: Built-in agenda views, Up: Agenda views
-9.4 Presentation and sorting
-============================
+10.4 Presentation and sorting
+=============================
Before displaying items in an agenda view, Org-mode visually prepares
the items and sorts them. Each item occupies a single line. The line
@@ -4244,25 +4361,35 @@ associated with the item.

File: org, Node: Categories, Next: Time-of-day specifications, Prev: Presentation and sorting, Up: Presentation and sorting
-9.4.1 Categories
-----------------
+10.4.1 Categories
+-----------------
The category is a broad label assigned to each agenda item. By default,
the category is simply derived from the file name, but you can also
-specify it with a special line in the buffer, like this:
+specify it with a special line in the buffer, like this(1):
#+CATEGORY: Thesis
- If there are several such lines in a file, each specifies the
-category for the text below it (but the first category also applies to
-any text before the first CATEGORY line). The display in the agenda
-buffer looks best if the category is not longer than 10 characters.
+If you would like to have a special CATEGORY for a single entry or a
+(sub)tree, give the entry a `:CATEGORY:' property with the location as
+the value (*note Properties and columns::).
+
+The display in the agenda buffer looks best if the category is not
+longer than 10 characters.
+
+ ---------- Footnotes ----------
+
+ (1) If there are several such lines in a file, each specifies the
+category for the text below it. The first category also applies to any
+text before the first CATEGORY line. This method is only kept for
+backward compatibility. The preferred method for setting multiple
+categories in a buffer is using a property.

File: org, Node: Time-of-day specifications, Next: Sorting of agenda items, Prev: Categories, Up: Presentation and sorting
-9.4.2 Time-of-Day Specifications
---------------------------------
+10.4.2 Time-of-Day Specifications
+---------------------------------
Org-mode checks each agenda item for a time-of-day specification. The
time can be part of the time stamp that triggered inclusion into the
@@ -4306,8 +4433,8 @@ timed entries are embedded in a time grid, like

File: org, Node: Sorting of agenda items, Prev: Time-of-day specifications, Up: Presentation and sorting
-9.4.3 Sorting of agenda items
------------------------------
+10.4.3 Sorting of agenda items
+------------------------------
Before being inserted into a view, the items are sorted. How this is
done depends on the type of view.
@@ -4334,8 +4461,8 @@ done depends on the type of view.

File: org, Node: Agenda commands, Next: Custom agenda views, Prev: Presentation and sorting, Up: Agenda views
-9.5 Commands in the agenda buffer
-=================================
+10.5 Commands in the agenda buffer
+==================================
Entries in the agenda buffer are linked back to the org file or diary
file where they originate. You are not allowed to edit the agenda
@@ -4463,7 +4590,8 @@ Remote editing
itself.
`:'
- Set tags for the current headline.
+ Set tags for the current headline. If there is an active region
+ in the agenda, change a tag for all headings in the region.
`a'
Toggle the ARCHIVE tag for the current headline.
@@ -4580,8 +4708,8 @@ Quit and Exit

File: org, Node: Custom agenda views, Prev: Agenda commands, Up: Agenda views
-9.6 Custom agenda views
-=======================
+10.6 Custom agenda views
+========================
Custom agenda commands serve two purposes: to store and quickly access
frequently used TODO and tags searches, and to create special composite
@@ -4599,8 +4727,8 @@ dispatcher (*note Agenda dispatcher::), just like the default commands.

File: org, Node: Storing searches, Next: Block agenda, Prev: Custom agenda views, Up: Custom agenda views
-9.6.1 Storing searches
-----------------------
+10.6.1 Storing searches
+-----------------------
The first application of custom searches is the definition of keyboard
shortcuts for frequently used searches, either creating an agenda
@@ -4652,8 +4780,8 @@ example above will therefore define:

File: org, Node: Block agenda, Next: Setting Options, Prev: Storing searches, Up: Custom agenda views
-9.6.2 Block agenda
-------------------
+10.6.2 Block agenda
+-------------------
Another possibility is the construction of agenda views that comprise
the results of _several_ commands, each of which creates a block in the
@@ -4682,8 +4810,8 @@ your agenda for the current week, all TODO items that carry the tag

File: org, Node: Setting Options, Next: Exporting Agenda Views, Prev: Block agenda, Up: Custom agenda views
-9.6.3 Setting Options for custom commands
------------------------------------------
+10.6.3 Setting Options for custom commands
+------------------------------------------
Org-mode contains a number of variables regulating agenda construction
and display. The global variables define the behavior for all agenda
@@ -4740,8 +4868,8 @@ yourself.

File: org, Node: Exporting Agenda Views, Next: Extracting Agenda Information for other programs, Prev: Setting Options, Up: Custom agenda views
-9.6.4 Exporting Agenda Views
-----------------------------
+10.6.4 Exporting Agenda Views
+-----------------------------
If you are away from your computer, it can be very useful to have a
printed version of some agenda views to carry around. Org-mode can
@@ -4842,8 +4970,8 @@ them in order to be able to specify filenames.

File: org, Node: Extracting Agenda Information for other programs, Prev: Exporting Agenda Views, Up: Custom agenda views
-9.6.5 Extracting Agenda Information for other programs
-------------------------------------------------------
+10.6.5 Extracting Agenda Information for other programs
+-------------------------------------------------------
Org-mode provides commands to access agenda information for the command
line in emacs batch mode. This extracted information can be sent
@@ -4934,7 +5062,7 @@ Emacs/org-mode and prints all the items, preceded by a checkbox:

File: org, Node: Embedded LaTeX, Next: Exporting, Prev: Agenda views, Up: Top
-10 Embedded LaTeX
+11 Embedded LaTeX
*****************
Plain ASCII is normally sufficient for almost all note taking. One
@@ -4966,7 +5094,7 @@ for simplicity I am blurring this distinction.

File: org, Node: Math symbols, Next: Subscripts and Superscripts, Prev: Embedded LaTeX, Up: Embedded LaTeX
-10.1 Math symbols
+11.1 Math symbols
=================
You can use LaTeX macros to insert special symbols like `\alpha' to
@@ -4985,7 +5113,7 @@ is `&alpha;' and `&rarr;', respectively.

File: org, Node: Subscripts and Superscripts, Next: LaTeX fragments, Prev: Math symbols, Up: Embedded LaTeX
-10.2 Subscripts and Superscripts
+11.2 Subscripts and Superscripts
================================
Just like in LaTeX, `^' and `_' are used to indicate super- and
@@ -5006,7 +5134,7 @@ are surrounded with `<sub>' and `<sup>' tags, respectively.

File: org, Node: LaTeX fragments, Next: Processing LaTeX fragments, Prev: Subscripts and Superscripts, Up: Embedded LaTeX
-10.3 LaTeX fragments
+11.3 LaTeX fragments
====================
With symbols, sub- and superscripts, HTML is pretty much at its end when
@@ -5062,7 +5190,7 @@ fragments but include these fragments directly into the LaTeX code.

File: org, Node: Processing LaTeX fragments, Next: CDLaTeX mode, Prev: LaTeX fragments, Up: Embedded LaTeX
-10.4 Processing LaTeX fragments
+11.4 Processing LaTeX fragments
===============================
LaTeX fragments can be processed to produce a preview images of the
@@ -5088,7 +5216,7 @@ setting is active:

File: org, Node: CDLaTeX mode, Prev: Processing LaTeX fragments, Up: Embedded LaTeX
-10.5 Using CDLaTeX to enter math
+11.5 Using CDLaTeX to enter math
================================
CDLaTeX-mode is a minor mode that is normally used in combination with a
@@ -5143,7 +5271,7 @@ fragment, see the documentation of the function

File: org, Node: Exporting, Next: Publishing, Prev: Embedded LaTeX, Up: Top
-11 Exporting
+12 Exporting
************
Org-mode documents can be exported into a variety of other formats. For
@@ -5177,7 +5305,7 @@ output produced. *Note Text interpretation::, for more details.

File: org, Node: ASCII export, Next: HTML export, Prev: Exporting, Up: Exporting
-11.1 ASCII export
+12.1 ASCII export
=================
ASCII export produces a simple and very readable version of an Org-mode
@@ -5214,7 +5342,7 @@ indentation than the first, these are left alone.

File: org, Node: HTML export, Next: LaTeX export, Prev: ASCII export, Up: Exporting
-11.2 HTML export
+12.2 HTML export
================
Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
@@ -5232,7 +5360,7 @@ but with additional support for tables.

File: org, Node: HTML Export commands, Next: Quoting HTML tags, Prev: HTML export, Up: HTML export
-11.2.1 HTML export commands
+12.2.1 HTML export commands
---------------------------
`C-c C-e h'
@@ -5286,7 +5414,7 @@ creates two levels of headings and does the rest as items.

File: org, Node: Quoting HTML tags, Next: Links, Prev: HTML Export commands, Up: HTML export
-11.2.2 Quoting HTML tags
+12.2.2 Quoting HTML tags
------------------------
Plain `<' and `>' are always transformed to `&lt;' and `&gt;' in HTML
@@ -5306,7 +5434,7 @@ or

File: org, Node: Links, Next: Images, Prev: Quoting HTML tags, Up: HTML export
-11.2.3 Links
+12.2.3 Links
------------
Internal links (*note Internal links::) will continue to work in HTML
@@ -5322,7 +5450,7 @@ Publishing links::.

File: org, Node: Images, Next: CSS support, Prev: Links, Up: HTML export
-11.2.4 Images
+12.2.4 Images
-------------
HTML export can inline images given as links in the Org-mode file, and
@@ -5347,7 +5475,7 @@ and you could use `http' addresses just as well.

File: org, Node: CSS support, Prev: Images, Up: HTML export
-11.2.5 CSS support
+12.2.5 CSS support
------------------
You can also give style information for the exported file. The HTML
@@ -5387,7 +5515,7 @@ should have no `#' at the start of the line.

File: org, Node: LaTeX export, Next: XOXO export, Prev: HTML export, Up: Exporting
-11.3 LaTeX export
+12.3 LaTeX export
=================
Org-mode contains a LaTeX exporter written by Bastien Guerry.
@@ -5400,7 +5528,7 @@ Org-mode contains a LaTeX exporter written by Bastien Guerry.

File: org, Node: LaTeX export commands, Next: Quoting LaTeX code, Prev: LaTeX export, Up: LaTeX export
-11.3.1 LaTeX export commands
+12.3.1 LaTeX export commands
----------------------------
`C-c C-e l'
@@ -5438,7 +5566,7 @@ creates two levels of headings and does the rest as items.

File: org, Node: Quoting LaTeX code, Prev: LaTeX export commands, Up: LaTeX export
-11.3.2 Quoting LaTeX code
+12.3.2 Quoting LaTeX code
-------------------------
Embedded LaTeX as described in *Note Embedded LaTeX:: will be correctly
@@ -5457,7 +5585,7 @@ or

File: org, Node: XOXO export, Next: iCalendar export, Prev: LaTeX export, Up: Exporting
-11.4 XOXO export
+12.4 XOXO export
================
Org-mode contains an exporter that produces XOXO-style output.
@@ -5473,7 +5601,7 @@ does not interpret any additional Org-mode features.

File: org, Node: iCalendar export, Next: Text interpretation, Prev: XOXO export, Up: Exporting
-11.5 iCalendar export
+12.5 iCalendar export
=====================
Some people like to use Org-mode for keeping track of projects, but
@@ -5504,7 +5632,7 @@ application you are using. The FAQ covers this issue.

File: org, Node: Text interpretation, Prev: iCalendar export, Up: Exporting
-11.6 Text interpretation by the exporter
+12.6 Text interpretation by the exporter
========================================
The exporter backends interpret additional structure in the Org-mode
@@ -5521,7 +5649,7 @@ file in order to produce better output.

File: org, Node: Comment lines, Next: Initial text, Prev: Text interpretation, Up: Text interpretation
-11.6.1 Comment lines
+12.6.1 Comment lines
--------------------
Lines starting with `#' in column zero are treated as comments and will
@@ -5534,7 +5662,7 @@ never be exported. Also entire subtrees starting with the word

File: org, Node: Initial text, Next: Footnotes, Prev: Comment lines, Up: Text interpretation
-11.6.2 Text before the first headline
+12.6.2 Text before the first headline
-------------------------------------
Org-mode normally ignores any text before the first headline when
@@ -5570,7 +5698,7 @@ headline when exporting the file, you can use the `#+TEXT' construct:

File: org, Node: Footnotes, Next: Enhancing text, Prev: Initial text, Up: Text interpretation
-11.6.3 Footnotes
+12.6.3 Footnotes
----------------
Numbers in square brackets are treated as footnotes, so that you can use
@@ -5579,7 +5707,7 @@ the Emacs package `footnote.el' to create footnotes. For example:
The org-mode homepage[1] clearly needs help from
a good web designer.
- [1] The link is: http://www.astro.uva.nl/~dominik/Tools/org
+ [1] The link is: http://orgmode.org
Note that the `footnote' package uses `C-c !' to invoke its commands.
This binding conflicts with the org-mode command for inserting inactive
@@ -5591,7 +5719,7 @@ binding, you could use `org-replace-disputed-keys' and

File: org, Node: Enhancing text, Next: Export options, Prev: Footnotes, Up: Text interpretation
-11.6.4 Enhancing text for export
+12.6.4 Enhancing text for export
--------------------------------
Some of the export backends of Org-mode allow for sophisticated text
@@ -5639,7 +5767,7 @@ should never be used.

File: org, Node: Export options, Prev: Enhancing text, Up: Text interpretation
-11.6.5 Export options
+12.6.5 Export options
---------------------
The exporter recognizes special lines in the buffer which provide
@@ -5654,6 +5782,7 @@ Completion::).
#+TITLE: the title to be shown (default is the buffer name)
#+AUTHOR: the author (default taken from `user-full-name')
+ #+DATE: A date, fixed, of a format string for `format-time-string'
#+EMAIL: his/her email address (default from `user-mail-address')
#+LANGUAGE: language for HTML, e.g. `en' (`org-export-default-language')
#+TEXT: Some descriptive text to be inserted at the beginning.
@@ -5687,7 +5816,7 @@ LaTeX export.

File: org, Node: Publishing, Next: Miscellaneous, Prev: Exporting, Up: Top
-12 Publishing
+13 Publishing
*************
Org-mode includes(1) a publishing management system that allows you to
@@ -5722,7 +5851,7 @@ format.

File: org, Node: Configuration, Next: Sample configuration, Prev: Publishing, Up: Publishing
-12.1 Configuration
+13.1 Configuration
==================
Publishing needs significant configuration to specify files, destination
@@ -5741,7 +5870,7 @@ and many other properties of a project.

File: org, Node: Project alist, Next: Sources and destinations, Prev: Configuration, Up: Configuration
-12.1.1 The variable `org-publish-project-alist'
+13.1.1 The variable `org-publish-project-alist'
-----------------------------------------------
Org-publish is configured almost entirely through setting the value of
@@ -5766,7 +5895,7 @@ you publish such a "meta-project" all the components will also publish.

File: org, Node: Sources and destinations, Next: Selecting files, Prev: Project alist, Up: Configuration
-12.1.2 Sources and destinations for files
+13.1.2 Sources and destinations for files
-----------------------------------------
Most properties are optional, but some should always be set. In
@@ -5783,7 +5912,7 @@ and where to put published files.

File: org, Node: Selecting files, Next: Publishing action, Prev: Sources and destinations, Up: Configuration
-12.1.3 Selecting files
+13.1.3 Selecting files
----------------------
By default, all files with extension `.org' in the base directory are
@@ -5800,7 +5929,7 @@ properties

File: org, Node: Publishing action, Next: Publishing options, Prev: Selecting files, Up: Configuration
-12.1.4 Publishing Action
+13.1.4 Publishing Action
------------------------
Publishing means that a file is copied to the destination directory and
@@ -5827,7 +5956,7 @@ provides one for attachments (files that only need to be copied):

File: org, Node: Publishing options, Next: Publishing links, Prev: Publishing action, Up: Configuration
-12.1.5 Options for the HTML/LaTeX exporters
+13.1.5 Options for the HTML/LaTeX exporters
-------------------------------------------
The property list can be used to set many export options for the HTML
@@ -5877,7 +6006,7 @@ however, override everything.

File: org, Node: Publishing links, Next: Project page index, Prev: Publishing options, Up: Configuration
-12.1.6 Links between published files
+13.1.6 Links between published files
------------------------------------
To create a link from one Org-mode file to another, you would use
@@ -5909,7 +6038,7 @@ is part of any project in `org-publish-project-alist'.

File: org, Node: Project page index, Prev: Publishing links, Up: Configuration
-12.1.7 Project page index
+13.1.7 Project page index
-------------------------
The following properties may be used to control publishing of an index
@@ -5927,7 +6056,7 @@ of files or summary page for a given project.

File: org, Node: Sample configuration, Next: Triggering publication, Prev: Configuration, Up: Publishing
-12.2 Sample configuration
+13.2 Sample configuration
=========================
Below we provide two example configurations. The first one is a simple
@@ -5942,7 +6071,7 @@ more complex, with a multi-component project.

File: org, Node: Simple example, Next: Complex example, Prev: Sample configuration, Up: Sample configuration
-12.2.1 Example: simple publishing configuration
+13.2.1 Example: simple publishing configuration
-----------------------------------------------
This example publishes a set of Org-mode files to the `public_html'
@@ -5961,7 +6090,7 @@ directory on the local machine.

File: org, Node: Complex example, Prev: Simple example, Up: Sample configuration
-12.2.2 Example: complex publishing configuration
+13.2.2 Example: complex publishing configuration
------------------------------------------------
This more complicated example publishes an entire website, including
@@ -6009,7 +6138,7 @@ right place on the webserver, and publishing images to it.

File: org, Node: Triggering publication, Prev: Sample configuration, Up: Publishing
-12.3 Triggering publication
+13.3 Triggering publication
===========================
Once org-publish is properly configured, you can publish with the
@@ -6035,7 +6164,7 @@ force publishing of all files by giving a prefix argument.

File: org, Node: Miscellaneous, Next: Extensions and Hacking, Prev: Publishing, Up: Top
-13 Miscellaneous
+14 Miscellaneous
****************
* Menu:
@@ -6052,7 +6181,7 @@ File: org, Node: Miscellaneous, Next: Extensions and Hacking, Prev: Publishin

File: org, Node: Completion, Next: Customization, Prev: Miscellaneous, Up: Miscellaneous
-13.1 Completion
+14.1 Completion
===============
Org-mode supports in-buffer completion. This type of completion does
@@ -6095,7 +6224,7 @@ buffer and use the key to complete text right there.

File: org, Node: Customization, Next: In-buffer settings, Prev: Completion, Up: Miscellaneous
-13.2 Customization
+14.2 Customization
==================
There are more than 180 variables that can be used to customize
@@ -6109,7 +6238,7 @@ activated on a per-file basis, by putting special lines into the buffer

File: org, Node: In-buffer settings, Next: The very busy C-c C-c key, Prev: Customization, Up: Miscellaneous
-13.3 Summary of in-buffer settings
+14.3 Summary of in-buffer settings
==================================
Org-mode uses special lines in the buffer to define settings on a
@@ -6212,7 +6341,7 @@ file is visited again in a new Emacs session.
This line contains the formulas for the table directly above the
line.
-`#+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:'
+`#+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS, #+DATE:'
These lines provide settings for exporting files. For more
details see *Note Export options::.
@@ -6224,7 +6353,7 @@ file is visited again in a new Emacs session.

File: org, Node: The very busy C-c C-c key, Next: Clean view, Prev: In-buffer settings, Up: Miscellaneous
-13.4 The very busy C-c C-c key
+14.4 The very busy C-c C-c key
==============================
The key `C-c C-c' has many purposes in org-mode, which are all
@@ -6266,10 +6395,13 @@ means in different contexts.
- If the cursor is on a numbered item in a plain list, renumber the
ordered list.
+ - If the cursor is on the `#+BEGIN' line of a dynamical block, the
+ block is updated.
+

File: org, Node: Clean view, Next: TTY keys, Prev: The very busy C-c C-c key, Up: Miscellaneous
-13.5 A cleaner outline view
+14.5 A cleaner outline view
===========================
Some people find it noisy and distracting that the Org-mode headlines
@@ -6351,7 +6483,7 @@ org-convert-to-oddeven-levels'.

File: org, Node: TTY keys, Next: Interaction, Prev: Clean view, Up: Miscellaneous
-13.6 Using org-mode on a tty
+14.6 Using org-mode on a tty
============================
Org-mode uses a number of keys that are not accessible on a tty. This
@@ -6393,7 +6525,7 @@ Default Alternative 1 Alternative 2

File: org, Node: Interaction, Next: Bugs, Prev: TTY keys, Up: Miscellaneous
-13.7 Interaction with other packages
+14.7 Interaction with other packages
====================================
Org-mode lives in the world of GNU Emacs and interacts in various ways
@@ -6407,7 +6539,7 @@ with other code out there.

File: org, Node: Cooperation, Next: Conflicts, Prev: Interaction, Up: Interaction
-13.7.1 Packages that Org-mode cooperates with
+14.7.1 Packages that Org-mode cooperates with
---------------------------------------------
`calc.el' by Dave Gillespie
@@ -6469,7 +6601,7 @@ File: org, Node: Cooperation, Next: Conflicts, Prev: Interaction, Up: Intera

File: org, Node: Conflicts, Prev: Cooperation, Up: Interaction
-13.7.2 Packages that lead to conflicts with Org-mode
+14.7.2 Packages that lead to conflicts with Org-mode
----------------------------------------------------
`allout.el' by Ken Manheimer
@@ -6513,7 +6645,7 @@ File: org, Node: Conflicts, Prev: Cooperation, Up: Interaction

File: org, Node: Bugs, Prev: Interaction, Up: Miscellaneous
-13.8 Bugs
+14.8 Bugs
=========
Here is a list of things that should work differently, but which I have
@@ -6609,6 +6741,14 @@ The following extensions for Org-mode have been written by other people:
Translates Org-mode files into something readable by Remind.
`http://www.cognition.ens.fr/~guerry/u/org2rem.el'.
+`org-toc.el' by Bastien Guerry
+ Produces a simple table of contents of an Org-mode file, for easy
+ navigation. `http://www.cognition.ens.fr/~guerry/u/org2rem.el'.
+
+`org-registry.el' by Bastien Guerry
+ Find which Org-file link to a certain document.
+ `http://www.cognition.ens.fr/~guerry/u/org2rem.el'.
+

File: org, Node: Adding hyperlink types, Next: Tables in arbitrary syntax, Prev: Extensions, Up: Extensions and Hacking
@@ -7059,8 +7199,10 @@ particular, you may use the functions `org-agenda-skip-entry-if' and
Skip current entry if it has a deadline, or if it is scheduled.
`'(org-agenda-skip-entry 'regexp "regular expression")'
- Skip current entry if the regular expression contained in the
- variable `org-agenda-skip-regexp' matches in the entry.
+ Skip current entry if the regular expression matches in the entry.
+
+`'(org-agenda-skip-entry 'notregexp "regular expression")'
+ Skip current entry unless the regular expression matches.
`'(org-agenda-skip-subtree-if 'regexp "regular expression")'
Same as above, but check and skip the entire subtree.
@@ -7292,21 +7434,21 @@ Index
(line 6)
* action, for publishing: Publishing action. (line 6)
* activation: Activation. (line 6)
-* active region <1>: HTML Export commands.
- (line 6)
+* active region <1>: Structure editing. (line 68)
* active region <2>: ASCII export. (line 9)
* active region <3>: Built-in table editor.
- (line 141)
-* active region: Structure editing. (line 64)
+ (line 143)
+* active region: HTML Export commands.
+ (line 6)
* agenda: Weekly/Daily agenda. (line 6)
* agenda dispatcher: Agenda dispatcher. (line 6)
* agenda files: Agenda files. (line 6)
-* agenda files, removing buffers: Agenda commands. (line 239)
+* agenda files, removing buffers: Agenda commands. (line 240)
* agenda views: Agenda views. (line 6)
* agenda views, custom: Custom agenda views. (line 6)
-* agenda views, exporting <1>: Exporting Agenda Views.
- (line 6)
-* agenda views, exporting: Agenda commands. (line 228)
+* agenda views, exporting <1>: Agenda commands. (line 229)
+* agenda views, exporting: Exporting Agenda Views.
+ (line 12)
* agenda views, user-defined: Special agenda views.
(line 6)
* agenda, pipe: Extracting Agenda Information for other programs.
@@ -7315,14 +7457,14 @@ Index
* align, STARTUP keyword: In-buffer settings. (line 68)
* allout.el: Conflicts. (line 6)
* angular brackets, around links: External links. (line 43)
-* API, for properties <1>: Using the property API.
+* API, for properties <1>: Property API. (line 6)
+* API, for properties: Using the property API.
(line 6)
-* API, for properties: Property API. (line 6)
* archive locations: Moving subtrees. (line 23)
* archiving: Archiving. (line 6)
* ASCII export: ASCII export. (line 6)
* author: Feedback. (line 6)
-* author info, in export: Export options. (line 25)
+* author info, in export: Export options. (line 26)
* autoload: Activation. (line 6)
* backtrace of an error: Feedback. (line 27)
* BBDB links: External links. (line 6)
@@ -7338,8 +7480,8 @@ Index
* calc.el: Cooperation. (line 6)
* calculations, in tables <1>: The spreadsheet. (line 6)
* calculations, in tables: Built-in table editor.
- (line 141)
-* calendar commands, from agenda: Agenda commands. (line 191)
+ (line 143)
+* calendar commands, from agenda: Agenda commands. (line 192)
* calendar integration: Weekly/Daily agenda. (line 24)
* calendar, for selecting date: The date/time prompt.
(line 26)
@@ -7358,15 +7500,15 @@ Index
* completion, of file names: Handling links. (line 43)
* completion, of link abbreviations: Completion. (line 6)
* completion, of links: Handling links. (line 25)
-* completion, of option keywords <1>: Completion. (line 6)
-* completion, of option keywords <2>: Export options. (line 6)
-* completion, of option keywords: Per file keywords. (line 23)
+* completion, of option keywords <1>: Export options. (line 6)
+* completion, of option keywords <2>: Per file keywords. (line 23)
+* completion, of option keywords: Completion. (line 6)
* completion, of property keys: Completion. (line 6)
-* completion, of tags <1>: Completion. (line 6)
-* completion, of tags: Setting tags. (line 11)
+* completion, of tags <1>: Setting tags. (line 11)
+* completion, of tags: Completion. (line 6)
* completion, of TeX symbols: Completion. (line 6)
-* completion, of TODO keywords <1>: Completion. (line 6)
-* completion, of TODO keywords: Workflow states. (line 15)
+* completion, of TODO keywords <1>: Workflow states. (line 15)
+* completion, of TODO keywords: Completion. (line 6)
* constants, in calculations: References. (line 82)
* constants.el: Cooperation. (line 14)
* constcgs, STARTUP keyword: In-buffer settings. (line 93)
@@ -7386,7 +7528,7 @@ Index
* cycling, visibility: Visibility cycling. (line 6)
* daily agenda: Weekly/Daily agenda. (line 6)
* date format, custom: Custom time format. (line 6)
-* date range: Time stamps. (line 41)
+* date range: Time stamps. (line 40)
* date stamps <1>: Time stamps. (line 6)
* date stamps: Timestamps. (line 6)
* date, reading in minibuffer: The date/time prompt.
@@ -7397,7 +7539,7 @@ Index
* debugging, of table formulas: Editing and debugging formulas.
(line 97)
* demotion, of subtrees: Structure editing. (line 6)
-* diary entries, creating from agenda: Agenda commands. (line 196)
+* diary entries, creating from agenda: Agenda commands. (line 197)
* diary integration: Weekly/Daily agenda. (line 24)
* dictionary word completion: Completion. (line 6)
* directories, for publishing: Sources and destinations.
@@ -7413,20 +7555,22 @@ Index
* editing, of table formulas: Editing and debugging formulas.
(line 6)
* elisp links: External links. (line 6)
-* emphasized text: Export options. (line 25)
+* emphasized text: Export options. (line 26)
* enhancing text: Enhancing text. (line 6)
* evaluate time range: Creating timestamps. (line 48)
* even, STARTUP keyword: In-buffer settings. (line 83)
* exporting: Exporting. (line 6)
* exporting agenda views <1>: Exporting Agenda Views.
(line 12)
-* exporting agenda views: Agenda commands. (line 228)
+* exporting agenda views: Agenda commands. (line 229)
* exporting, not: Comment lines. (line 6)
* extended TODO keywords: TODO extensions. (line 6)
* extension, third-party: Extensions. (line 6)
* external archiving: Moving subtrees. (line 6)
* external links: External links. (line 6)
* external links, in HTML export: Links. (line 6)
+* faces, for TODO keywords: Faces for TODO keywords.
+ (line 6)
* FAQ: Summary. (line 56)
* feedback: Feedback. (line 6)
* field formula: Field formulas. (line 6)
@@ -7438,14 +7582,14 @@ Index
* files, adding to agenda list: Agenda files. (line 12)
* files, selecting for publishing: Selecting files. (line 6)
* fixed width: Enhancing text. (line 28)
-* fixed-width sections: Export options. (line 25)
+* fixed-width sections: Export options. (line 26)
* folded, subtree visibility state: Visibility cycling. (line 10)
* folding, sparse trees: Sparse trees. (line 6)
* following links: Handling links. (line 58)
* footnote.el <1>: Conflicts. (line 35)
* footnote.el <2>: Cooperation. (line 56)
* footnote.el: Footnotes. (line 6)
-* footnotes <1>: Export options. (line 25)
+* footnotes <1>: Export options. (line 26)
* footnotes: Footnotes. (line 6)
* format specifier: Formula syntax for Calc.
(line 14)
@@ -7459,7 +7603,7 @@ Index
* formula, for individual table field: Field formulas. (line 6)
* formula, for table column: Column formulas. (line 6)
* formula, in tables: Built-in table editor.
- (line 141)
+ (line 143)
* global cycling: Visibility cycling. (line 22)
* global keybindings: Activation. (line 6)
* global TODO list: Global TODO list. (line 6)
@@ -7467,11 +7611,11 @@ Index
* GNUS links: External links. (line 6)
* grouping columns in tables: Column groups. (line 6)
* hand-formatted lists: Enhancing text. (line 11)
-* headline levels: Export options. (line 25)
-* headline levels, for exporting <1>: LaTeX export commands.
- (line 26)
-* headline levels, for exporting <2>: HTML Export commands.
+* headline levels: Export options. (line 26)
+* headline levels, for exporting <1>: HTML Export commands.
(line 44)
+* headline levels, for exporting <2>: LaTeX export commands.
+ (line 26)
* headline levels, for exporting: ASCII export. (line 21)
* headline navigation: Motion. (line 6)
* headline tagging: Tags. (line 6)
@@ -7492,7 +7636,7 @@ Index
* iCalendar export: iCalendar export. (line 6)
* images, inline in HTML: Images. (line 6)
* in-buffer settings: In-buffer settings. (line 6)
-* inactive timestamp: Time stamps. (line 50)
+* inactive timestamp: Time stamps. (line 49)
* index, of published pages: Project page index. (line 6)
* Info links: External links. (line 6)
* inheritance, of tags: Tag inheritance. (line 6)
@@ -7508,7 +7652,7 @@ Index
* keybindings, global: Activation. (line 6)
* keyword options: Per file keywords. (line 6)
* LaTeX export: LaTeX export. (line 6)
-* LaTeX fragments <1>: Export options. (line 25)
+* LaTeX fragments <1>: Export options. (line 26)
* LaTeX fragments: LaTeX fragments. (line 6)
* LaTeX fragments, export: Enhancing text. (line 21)
* LaTeX fragments, preview: Processing LaTeX fragments.
@@ -7516,7 +7660,7 @@ Index
* LaTeX interpretation: Embedded LaTeX. (line 6)
* LaTeX, and orgtbl-mode: A LaTeX example. (line 6)
* level, require for tags match: Tag searches. (line 68)
-* linebreak preservation: Export options. (line 25)
+* linebreak preservation: Export options. (line 26)
* linebreak, forced: Enhancing text. (line 35)
* link abbreviations: Link abbreviations. (line 6)
* link abbreviations, completion of: Completion. (line 6)
@@ -7612,7 +7756,7 @@ Index
* properties, special: Special properties. (line 6)
* property syntax: Property syntax. (line 6)
* publishing: Publishing. (line 6)
-* quoted HTML tags: Export options. (line 25)
+* quoted HTML tags: Export options. (line 26)
* radio tables: Radio tables. (line 6)
* radio targets: Radio targets. (line 6)
* range references: References. (line 60)
@@ -7622,15 +7766,15 @@ Index
* references, named: References. (line 82)
* references, to fields: References. (line 15)
* references, to ranges: References. (line 60)
-* region, active <1>: HTML Export commands.
- (line 6)
+* region, active <1>: Built-in table editor.
+ (line 143)
* region, active <2>: ASCII export. (line 9)
-* region, active <3>: Built-in table editor.
- (line 141)
-* region, active: Structure editing. (line 64)
+* region, active <3>: HTML Export commands.
+ (line 6)
+* region, active: Structure editing. (line 68)
* regular expressions, with tags search: Tag searches. (line 63)
-* remember.el <1>: Cooperation. (line 33)
-* remember.el: Remember. (line 6)
+* remember.el <1>: Remember. (line 6)
+* remember.el: Cooperation. (line 33)
* remote editing, from agenda: Agenda commands. (line 106)
* remote editing, undo: Agenda commands. (line 107)
* richer text: Enhancing text. (line 6)
@@ -7643,7 +7787,7 @@ Index
* search option in file links: Search options. (line 6)
* search strings, custom: Custom searches. (line 6)
* searching for tags: Tag searches. (line 6)
-* section-numbers: Export options. (line 25)
+* section-numbers: Export options. (line 26)
* setting tags: Setting tags. (line 6)
* SHELL links: External links. (line 6)
* show all, command: Visibility cycling. (line 33)
@@ -7655,7 +7799,7 @@ Index
(line 6)
* sparse tree, for deadlines: Inserting deadline/schedule.
(line 11)
-* sparse tree, for TODO: TODO basics. (line 34)
+* sparse tree, for TODO: TODO basics. (line 38)
* sparse tree, tag based: Tags. (line 6)
* sparse trees: Sparse trees. (line 6)
* special keywords: In-buffer settings. (line 6)
@@ -7681,9 +7825,9 @@ Index
* table editor, built-in: Built-in table editor.
(line 6)
* table editor, table.el: Cooperation. (line 37)
-* table of contents: Export options. (line 25)
-* table.el: Cooperation. (line 34)
-* tables <1>: Export options. (line 25)
+* table of contents: Export options. (line 26)
+* table.el: Cooperation. (line 37)
+* tables <1>: Export options. (line 26)
* tables: Tables. (line 6)
* tables, export: Enhancing text. (line 24)
* tables, in other modes: Tables in arbitrary syntax.
@@ -7699,29 +7843,29 @@ Index
* tasks, breaking down: Breaking down tasks. (line 6)
* templates, for remember: Remember templates. (line 6)
* TeX interpretation: Embedded LaTeX. (line 6)
-* TeX macros <1>: Export options. (line 25)
+* TeX macros <1>: Export options. (line 26)
* TeX macros: Math symbols. (line 6)
* TeX macros, export: Enhancing text. (line 21)
* TeX symbol completion: Completion. (line 6)
-* TeX-like syntax for sub- and superscripts: Export options. (line 25)
+* TeX-like syntax for sub- and superscripts: Export options. (line 26)
* thanks: History and Acknowledgments.
(line 6)
* time format, custom: Custom time format. (line 6)
* time grid: Time-of-day specifications.
(line 26)
-* time info, in export: Export options. (line 25)
-* time stamps <1>: Time stamps. (line 6)
-* time stamps: Timestamps. (line 6)
+* time info, in export: Export options. (line 26)
+* time stamps <1>: Timestamps. (line 6)
+* time stamps: Time stamps. (line 6)
* time, reading in minibuffer: The date/time prompt.
(line 6)
* time-of-day specification: Time-of-day specifications.
(line 6)
* time-sorted view: Timeline. (line 6)
* timeline, single file: Timeline. (line 6)
-* timerange: Time stamps. (line 41)
+* timerange: Time stamps. (line 40)
* timestamp: Time stamps. (line 14)
-* timestamp, inactive: Time stamps. (line 50)
-* timestamp, with repeater interval: Time stamps. (line 25)
+* timestamp, inactive: Time stamps. (line 49)
+* timestamp, with repeater interval: Time stamps. (line 24)
* timestamps, creating: Creating timestamps. (line 6)
* TODO items: TODO items. (line 6)
* TODO keyword matching: Global TODO list. (line 17)
@@ -7732,12 +7876,12 @@ Index
* TODO list, global: Global TODO list. (line 6)
* TODO types: TODO types. (line 6)
* TODO workflow: Workflow states. (line 6)
-* transient-mark-mode <1>: HTML Export commands.
+* transient-mark-mode <1>: Structure editing. (line 68)
+* transient-mark-mode <2>: Built-in table editor.
+ (line 143)
+* transient-mark-mode <3>: HTML Export commands.
(line 6)
-* transient-mark-mode <2>: ASCII export. (line 9)
-* transient-mark-mode <3>: Built-in table editor.
- (line 141)
-* transient-mark-mode: Structure editing. (line 64)
+* transient-mark-mode: ASCII export. (line 9)
* translator function: Translator functions.
(line 6)
* trees, sparse: Sparse trees. (line 6)
@@ -7774,51 +7918,52 @@ Key Index
* $: Agenda commands. (line 121)
* ': CDLaTeX mode. (line 43)
-* +: Agenda commands. (line 143)
-* ,: Agenda commands. (line 135)
-* -: Agenda commands. (line 149)
+* +: Agenda commands. (line 144)
+* ,: Agenda commands. (line 136)
+* -: Agenda commands. (line 150)
* .: Agenda commands. (line 98)
* :: Agenda commands. (line 129)
-* < <1>: The date/time prompt.
+* < <1>: Using column view. (line 54)
+* <: The date/time prompt.
(line 32)
-* <: Using column view. (line 54)
* <left>: Agenda commands. (line 95)
-* <RET> <1>: Agenda commands. (line 39)
+* <RET> <1>: Built-in table editor.
+ (line 64)
* <RET> <2>: The date/time prompt.
(line 57)
-* <RET> <3>: Setting tags. (line 76)
-* <RET>: Built-in table editor.
- (line 62)
+* <RET> <3>: Agenda commands. (line 39)
+* <RET>: Setting tags. (line 76)
* <right>: Agenda commands. (line 90)
-* <SPC> <1>: Agenda commands. (line 28)
-* <SPC>: Setting tags. (line 73)
-* <TAB> <1>: CDLaTeX mode. (line 23)
+* <SPC> <1>: Setting tags. (line 73)
+* <SPC>: Agenda commands. (line 28)
+* <TAB> <1>: Built-in table editor.
+ (line 57)
* <TAB> <2>: Agenda commands. (line 33)
-* <TAB> <3>: Setting tags. (line 68)
-* <TAB> <4>: Editing and debugging formulas.
+* <TAB> <3>: Visibility cycling. (line 10)
+* <TAB> <4>: Plain lists. (line 41)
+* <TAB> <5>: Setting tags. (line 68)
+* <TAB> <6>: CDLaTeX mode. (line 23)
+* <TAB>: Editing and debugging formulas.
(line 57)
-* <TAB> <5>: Built-in table editor.
- (line 55)
-* <TAB> <6>: Plain lists. (line 41)
-* <TAB>: Visibility cycling. (line 10)
-* > <1>: Agenda commands. (line 171)
-* > <2>: The date/time prompt.
+* > <1>: The date/time prompt.
(line 33)
-* >: Using column view. (line 54)
+* > <2>: Using column view. (line 54)
+* >: Agenda commands. (line 172)
* ^: CDLaTeX mode. (line 33)
* _: CDLaTeX mode. (line 33)
* `: CDLaTeX mode. (line 39)
-* a <1>: Agenda commands. (line 132)
-* a: Using column view. (line 43)
+* a <1>: Using column view. (line 43)
+* a: Agenda commands. (line 133)
* b: Agenda commands. (line 49)
-* C: Agenda commands. (line 211)
-* c: Agenda commands. (line 191)
+* c: Agenda commands. (line 192)
+* C: Agenda commands. (line 212)
* C-#: Advanced features. (line 9)
* C-': Agenda files. (line 18)
* C-,: Agenda files. (line 18)
+* C-<RET>: Structure editing. (line 18)
* C-_: Agenda commands. (line 107)
-* C-c ! <1>: Footnotes. (line 14)
-* C-c !: Creating timestamps. (line 19)
+* C-c ! <1>: Creating timestamps. (line 19)
+* C-c !: Footnotes. (line 14)
* C-c #: Checkboxes. (line 57)
* C-c %: Handling links. (line 81)
* C-c &: Handling links. (line 85)
@@ -7826,10 +7971,10 @@ Key Index
(line 36)
* C-c *: Updating the table. (line 13)
* C-c +: Built-in table editor.
- (line 141)
+ (line 143)
* C-c ,: Priorities. (line 18)
* C-c - <1>: Built-in table editor.
- (line 90)
+ (line 92)
* C-c -: Plain lists. (line 88)
* C-c .: Creating timestamps. (line 10)
* C-c /: Sparse trees. (line 15)
@@ -7837,7 +7982,7 @@ Key Index
* C-c ;: Comment lines. (line 10)
* C-c <: Creating timestamps. (line 23)
* C-c <TAB>: Built-in table editor.
- (line 161)
+ (line 163)
* C-c = <1>: Editing and debugging formulas.
(line 14)
* C-c =: Column formulas. (line 26)
@@ -7847,11 +7992,11 @@ Key Index
* C-c [: Agenda files. (line 12)
* C-c \: Tag searches. (line 9)
* C-c ]: Agenda files. (line 15)
-* C-c ^ <1>: Built-in table editor.
- (line 94)
-* C-c ^: Structure editing. (line 52)
+* C-c ^ <1>: Structure editing. (line 56)
+* C-c ^: Built-in table editor.
+ (line 96)
* C-c `: Built-in table editor.
- (line 157)
+ (line 159)
* C-c a !: Stuck projects. (line 14)
* C-c a #: Stuck projects. (line 13)
* C-c a a: Weekly/Daily agenda. (line 9)
@@ -7859,49 +8004,50 @@ Key Index
* C-c a e: Exporting Agenda Views.
(line 57)
* C-c a L: Timeline. (line 10)
-* C-c a M: Matching tags and properties.
- (line 15)
+* C-c a M: Tag searches. (line 16)
+* C-c a m <1>: Tag searches. (line 12)
* C-c a m: Matching tags and properties.
(line 10)
-* C-c a M: Tag searches. (line 16)
-* C-c a m: Tag searches. (line 12)
+* C-c a M: Matching tags and properties.
+ (line 15)
* C-c a T: Global TODO list. (line 14)
-* C-c a t <1>: Global TODO list. (line 9)
-* C-c a t: TODO basics. (line 44)
+* C-c a t <1>: TODO basics. (line 48)
+* C-c a t: Global TODO list. (line 9)
* C-c C-a: Visibility cycling. (line 33)
* C-c C-b: Motion. (line 15)
-* C-c C-c <1>: Cooperation. (line 37)
-* C-c C-c <2>: The very busy C-c C-c key.
+* C-c C-c <1>: TODO basics. (line 30)
+* C-c C-c <2>: Cooperation. (line 37)
+* C-c C-c <3>: The very busy C-c C-c key.
(line 6)
-* C-c C-c <3>: Processing LaTeX fragments.
+* C-c C-c <4>: Processing LaTeX fragments.
(line 15)
-* C-c C-c <4>: Property syntax. (line 54)
-* C-c C-c <5>: Setting tags. (line 10)
-* C-c C-c <6>: Checkboxes. (line 37)
-* C-c C-c <7>: TODO basics. (line 26)
-* C-c C-c <8>: Editing and debugging formulas.
+* C-c C-c <5>: Clocking work time. (line 79)
+* C-c C-c <6>: Property syntax. (line 54)
+* C-c C-c <7>: Setting tags. (line 10)
+* C-c C-c <8>: Checkboxes. (line 37)
+* C-c C-c <9>: Editing and debugging formulas.
(line 46)
-* C-c C-c <9>: Built-in table editor.
- (line 54)
+* C-c C-c <10>: Built-in table editor.
+ (line 56)
* C-c C-c: Plain lists. (line 81)
-* C-c C-d <1>: Agenda commands. (line 156)
-* C-c C-d: Inserting deadline/schedule.
+* C-c C-d <1>: Inserting deadline/schedule.
(line 9)
+* C-c C-d: Agenda commands. (line 157)
* C-c C-e: Exporting. (line 20)
* C-c C-e a: ASCII export. (line 9)
* C-c C-e b: HTML Export commands.
(line 13)
* C-c C-e c: iCalendar export. (line 21)
-* C-c C-e H: HTML Export commands.
- (line 16)
* C-c C-e h: HTML Export commands.
(line 6)
+* C-c C-e H: HTML Export commands.
+ (line 16)
* C-c C-e I: iCalendar export. (line 16)
* C-c C-e i: iCalendar export. (line 14)
-* C-c C-e L: LaTeX export commands.
- (line 7)
* C-c C-e l: LaTeX export commands.
(line 6)
+* C-c C-e L: LaTeX export commands.
+ (line 7)
* C-c C-e R: HTML Export commands.
(line 19)
* C-c C-e t: Export options. (line 13)
@@ -7910,14 +8056,14 @@ Key Index
* C-c C-e v a: ASCII export. (line 16)
* C-c C-e v b: HTML Export commands.
(line 24)
-* C-c C-e v H: HTML Export commands.
- (line 24)
* C-c C-e v h: HTML Export commands.
(line 24)
-* C-c C-e v L: LaTeX export commands.
- (line 10)
+* C-c C-e v H: HTML Export commands.
+ (line 24)
* C-c C-e v l: LaTeX export commands.
(line 10)
+* C-c C-e v L: LaTeX export commands.
+ (line 10)
* C-c C-e v R: HTML Export commands.
(line 24)
* C-c C-e x: XOXO export. (line 10)
@@ -7925,33 +8071,34 @@ Key Index
* C-c C-j: Motion. (line 21)
* C-c C-l: Handling links. (line 25)
* C-c C-n: Motion. (line 8)
-* C-c C-o <1>: Creating timestamps. (line 31)
-* C-c C-o: Handling links. (line 58)
+* C-c C-o <1>: Handling links. (line 58)
+* C-c C-o: Creating timestamps. (line 31)
* C-c C-p: Motion. (line 9)
* C-c C-q <1>: Editing and debugging formulas.
(line 50)
* C-c C-q: Built-in table editor.
- (line 125)
+ (line 127)
* C-c C-r <1>: Editing and debugging formulas.
(line 53)
* C-c C-r: Visibility cycling. (line 34)
-* C-c C-s <1>: Agenda commands. (line 153)
+* C-c C-s <1>: Agenda commands. (line 154)
* C-c C-s: Inserting deadline/schedule.
(line 18)
* C-c C-t <1>: Clocking work time. (line 27)
* C-c C-t: TODO basics. (line 13)
* C-c C-u: Motion. (line 18)
-* C-c C-v: TODO basics. (line 34)
+* C-c C-v: TODO basics. (line 38)
* C-c C-w: Inserting deadline/schedule.
(line 11)
+* C-c C-x /: Agenda files. (line 22)
* C-c C-x b: Visibility cycling. (line 41)
* C-c C-x C-a: ARCHIVE tag. (line 28)
* C-c C-x C-b: Checkboxes. (line 39)
-* C-c C-x C-c <1>: Agenda commands. (line 218)
+* C-c C-x C-c <1>: Agenda commands. (line 219)
* C-c C-x C-c: Using column view. (line 9)
* C-c C-x C-d: Clocking work time. (line 35)
* C-c C-x C-i: Clocking work time. (line 12)
-* C-c C-x C-k: Structure editing. (line 39)
+* C-c C-x C-k: Structure editing. (line 43)
* C-c C-x C-l: Processing LaTeX fragments.
(line 9)
* C-c C-x C-n: Handling links. (line 91)
@@ -7960,27 +8107,28 @@ Key Index
* C-c C-x C-r: Clocking work time. (line 43)
* C-c C-x C-s: Moving subtrees. (line 10)
* C-c C-x C-t: Custom time format. (line 12)
-* C-c C-x C-u: Dynamic blocks. (line 21)
+* C-c C-x C-u <1>: Dynamic blocks. (line 21)
+* C-c C-x C-u: Clocking work time. (line 81)
* C-c C-x C-w <1>: Built-in table editor.
- (line 114)
-* C-c C-x C-w: Structure editing. (line 39)
+ (line 116)
+* C-c C-x C-w: Structure editing. (line 43)
* C-c C-x C-x: Clocking work time. (line 31)
* C-c C-x C-y <1>: Built-in table editor.
- (line 118)
-* C-c C-x C-y: Structure editing. (line 46)
+ (line 120)
+* C-c C-x C-y: Structure editing. (line 50)
* C-c C-x M-w <1>: Built-in table editor.
- (line 111)
-* C-c C-x M-w: Structure editing. (line 43)
+ (line 113)
+* C-c C-x M-w: Structure editing. (line 47)
* C-c C-y <1>: Clocking work time. (line 22)
* C-c C-y: Creating timestamps. (line 48)
* C-c l: Handling links. (line 9)
-* C-c { <1>: CDLaTeX mode. (line 21)
-* C-c {: Editing and debugging formulas.
+* C-c { <1>: Editing and debugging formulas.
(line 33)
+* C-c {: CDLaTeX mode. (line 21)
* C-c |: Built-in table editor.
(line 40)
* C-c }: Editing and debugging formulas.
- (line 28)
+ (line 79)
* C-c ~: Cooperation. (line 48)
* C-k: Agenda commands. (line 115)
* C-S-<left>: Multiple sets in one file.
@@ -7990,15 +8138,16 @@ Key Index
* C-TAB: ARCHIVE tag. (line 38)
* C-u C-c *: Updating the table. (line 16)
* C-u C-c .: Creating timestamps. (line 14)
-* C-u C-c = <1>: Editing and debugging formulas.
+* C-u C-c = <1>: Field formulas. (line 24)
+* C-u C-c =: Editing and debugging formulas.
(line 14)
-* C-u C-c =: Field formulas. (line 24)
* C-u C-c C-c: Updating the table. (line 19)
* C-u C-c C-l: Handling links. (line 43)
+* C-u C-c C-t: TODO basics. (line 22)
* C-u C-c C-x C-a: ARCHIVE tag. (line 31)
* C-u C-c C-x C-s: Moving subtrees. (line 14)
-* C-u C-c C-x C-u <1>: Dynamic blocks. (line 22)
-* C-u C-c C-x C-u: Clocking work time. (line 70)
+* C-u C-c C-x C-u <1>: Clocking work time. (line 83)
+* C-u C-c C-x C-u: Dynamic blocks. (line 22)
* C-u C-u C-c *: Updating the table. (line 22)
* C-u C-u C-c =: Editing and debugging formulas.
(line 18)
@@ -8007,354 +8156,361 @@ Key Index
(line 46)
* C-x C-w <1>: Exporting Agenda Views.
(line 11)
-* C-x C-w: Agenda commands. (line 227)
+* C-x C-w: Agenda commands. (line 228)
* D: Agenda commands. (line 72)
* d: Agenda commands. (line 66)
* e: Using column view. (line 33)
* f: Agenda commands. (line 42)
* g: Agenda commands. (line 76)
-* H: Agenda commands. (line 215)
-* i: Agenda commands. (line 196)
-* I: Agenda commands. (line 176)
-* l: Agenda commands. (line 55)
+* H: Agenda commands. (line 216)
+* I: Agenda commands. (line 177)
+* i: Agenda commands. (line 197)
* L: Agenda commands. (line 30)
-* M: Agenda commands. (line 202)
+* l: Agenda commands. (line 55)
* m: Agenda commands. (line 66)
+* M: Agenda commands. (line 203)
* M-<down> <1>: Editing and debugging formulas.
(line 76)
* M-<down>: Built-in table editor.
- (line 80)
-* M-<left> <1>: Built-in table editor.
- (line 72)
-* M-<left>: Structure editing. (line 21)
-* M-<RET> <1>: Plain lists. (line 49)
-* M-<RET>: Structure editing. (line 6)
+ (line 82)
+* M-<left> <1>: Structure editing. (line 25)
+* M-<left>: Built-in table editor.
+ (line 74)
+* M-<RET> <1>: Structure editing. (line 6)
+* M-<RET>: Plain lists. (line 49)
* M-<right> <1>: Built-in table editor.
- (line 72)
-* M-<right>: Structure editing. (line 24)
-* M-<TAB> <1>: Completion. (line 10)
-* M-<TAB> <2>: Property syntax. (line 46)
-* M-<TAB> <3>: Setting tags. (line 6)
-* M-<TAB> <4>: Per file keywords. (line 23)
-* M-<TAB>: Editing and debugging formulas.
+ (line 74)
+* M-<right>: Structure editing. (line 28)
+* M-<TAB> <1>: Per file keywords. (line 23)
+* M-<TAB> <2>: Editing and debugging formulas.
(line 64)
-* M-<up> <1>: Editing and debugging formulas.
+* M-<TAB> <3>: Property syntax. (line 46)
+* M-<TAB> <4>: Completion. (line 10)
+* M-<TAB>: Setting tags. (line 6)
+* M-<up> <1>: Built-in table editor.
+ (line 82)
+* M-<up>: Editing and debugging formulas.
(line 76)
-* M-<up>: Built-in table editor.
- (line 80)
-* M-S-<down> <1>: Editing and debugging formulas.
+* M-S-<down> <1>: Plain lists. (line 66)
+* M-S-<down> <2>: Structure editing. (line 40)
+* M-S-<down> <3>: Editing and debugging formulas.
(line 72)
-* M-S-<down> <2>: Built-in table editor.
- (line 87)
-* M-S-<down> <3>: Plain lists. (line 66)
-* M-S-<down>: Structure editing. (line 36)
-* M-S-<left> <1>: The date/time prompt.
+* M-S-<down>: Built-in table editor.
+ (line 89)
+* M-S-<left> <1>: Structure editing. (line 31)
+* M-S-<left> <2>: The date/time prompt.
(line 54)
-* M-S-<left> <2>: Built-in table editor.
- (line 74)
-* M-S-<left> <3>: Plain lists. (line 72)
-* M-S-<left>: Structure editing. (line 27)
+* M-S-<left> <3>: Built-in table editor.
+ (line 76)
+* M-S-<left>: Plain lists. (line 72)
* M-S-<RET> <1>: Checkboxes. (line 54)
* M-S-<RET> <2>: Plain lists. (line 59)
-* M-S-<RET>: Structure editing. (line 18)
-* M-S-<right> <1>: The date/time prompt.
- (line 51)
-* M-S-<right> <2>: Built-in table editor.
- (line 77)
+* M-S-<RET>: Structure editing. (line 22)
+* M-S-<right> <1>: Built-in table editor.
+ (line 79)
+* M-S-<right> <2>: Structure editing. (line 34)
* M-S-<right> <3>: Plain lists. (line 72)
-* M-S-<right>: Structure editing. (line 30)
-* M-S-<up> <1>: Editing and debugging formulas.
+* M-S-<right>: The date/time prompt.
+ (line 51)
+* M-S-<up> <1>: Structure editing. (line 37)
+* M-S-<up> <2>: Editing and debugging formulas.
(line 72)
-* M-S-<up> <2>: Built-in table editor.
- (line 84)
-* M-S-<up> <3>: Plain lists. (line 66)
-* M-S-<up>: Structure editing. (line 33)
-* mouse-1 <1>: Agenda commands. (line 33)
-* mouse-1 <2>: The date/time prompt.
+* M-S-<up> <3>: Built-in table editor.
+ (line 86)
+* M-S-<up>: Plain lists. (line 66)
+* mouse-1 <1>: Handling links. (line 72)
+* mouse-1 <2>: Agenda commands. (line 33)
+* mouse-1: The date/time prompt.
(line 36)
-* mouse-1: Handling links. (line 72)
-* mouse-2 <1>: Agenda commands. (line 33)
-* mouse-2: Handling links. (line 72)
+* mouse-2 <1>: Handling links. (line 72)
+* mouse-2: Agenda commands. (line 33)
* mouse-3 <1>: Agenda commands. (line 28)
* mouse-3: Handling links. (line 77)
-* n <1>: Agenda commands. (line 19)
-* n: Using column view. (line 30)
-* O: Agenda commands. (line 180)
+* n <1>: Using column view. (line 30)
+* n: Agenda commands. (line 19)
+* O: Agenda commands. (line 181)
* o: Agenda commands. (line 65)
-* P: Agenda commands. (line 140)
-* p <1>: Agenda commands. (line 20)
* p: Using column view. (line 30)
-* q <1>: Agenda commands. (line 238)
-* q: Using column view. (line 17)
+* P: Agenda commands. (line 141)
+* p: Agenda commands. (line 20)
+* q <1>: Using column view. (line 17)
+* q: Agenda commands. (line 239)
* r <1>: Agenda commands. (line 80)
* r: Global TODO list. (line 22)
-* S: Agenda commands. (line 206)
+* S: Agenda commands. (line 207)
* s: Agenda commands. (line 87)
-* S-<down> <1>: Agenda commands. (line 149)
+* S-<down> <1>: Priorities. (line 23)
* S-<down> <2>: The date/time prompt.
(line 45)
-* S-<down> <3>: Creating timestamps. (line 40)
-* S-<down> <4>: Priorities. (line 23)
-* S-<down> <5>: Editing and debugging formulas.
+* S-<down> <3>: Plain lists. (line 62)
+* S-<down> <4>: Creating timestamps. (line 40)
+* S-<down> <5>: Agenda commands. (line 150)
+* S-<down>: Editing and debugging formulas.
(line 67)
-* S-<down>: Plain lists. (line 62)
-* S-<left> <1>: Agenda commands. (line 167)
-* S-<left> <2>: The date/time prompt.
- (line 42)
-* S-<left> <3>: Creating timestamps. (line 35)
-* S-<left> <4>: Using column view. (line 26)
-* S-<left> <5>: Property syntax. (line 62)
-* S-<left> <6>: Multiple sets in one file.
- (line 29)
-* S-<left> <7>: TODO basics. (line 20)
-* S-<left>: Editing and debugging formulas.
+* S-<left> <1>: Editing and debugging formulas.
(line 67)
+* S-<left> <2>: TODO basics. (line 26)
+* S-<left> <3>: Multiple sets in one file.
+ (line 29)
+* S-<left> <4>: Property syntax. (line 62)
+* S-<left> <5>: Using column view. (line 26)
+* S-<left> <6>: Agenda commands. (line 168)
+* S-<left> <7>: Creating timestamps. (line 35)
+* S-<left>: The date/time prompt.
+ (line 42)
* S-<RET>: Built-in table editor.
- (line 144)
-* S-<right> <1>: Agenda commands. (line 159)
-* S-<right> <2>: The date/time prompt.
+ (line 146)
+* S-<right> <1>: Agenda commands. (line 160)
+* S-<right> <2>: TODO basics. (line 26)
+* S-<right> <3>: The date/time prompt.
(line 39)
-* S-<right> <3>: Creating timestamps. (line 35)
-* S-<right> <4>: Using column view. (line 26)
-* S-<right> <5>: Property syntax. (line 62)
-* S-<right> <6>: Multiple sets in one file.
- (line 29)
-* S-<right> <7>: TODO basics. (line 20)
-* S-<right>: Editing and debugging formulas.
+* S-<right> <4>: Editing and debugging formulas.
(line 67)
+* S-<right> <5>: Multiple sets in one file.
+ (line 29)
+* S-<right> <6>: Property syntax. (line 62)
+* S-<right> <7>: Using column view. (line 26)
+* S-<right>: Creating timestamps. (line 35)
* S-<TAB> <1>: Built-in table editor.
- (line 59)
+ (line 61)
* S-<TAB>: Visibility cycling. (line 22)
-* S-<up> <1>: Agenda commands. (line 143)
-* S-<up> <2>: The date/time prompt.
+* S-<up> <1>: Creating timestamps. (line 40)
+* S-<up> <2>: Agenda commands. (line 144)
+* S-<up> <3>: Plain lists. (line 62)
+* S-<up> <4>: The date/time prompt.
(line 48)
-* S-<up> <3>: Creating timestamps. (line 40)
-* S-<up> <4>: Priorities. (line 23)
* S-<up> <5>: Editing and debugging formulas.
(line 67)
-* S-<up>: Plain lists. (line 62)
+* S-<up>: Priorities. (line 23)
* S-M-<left>: Using column view. (line 58)
-* S-M-<RET>: TODO basics. (line 52)
+* S-M-<RET>: TODO basics. (line 56)
* S-M-<right>: Using column view. (line 55)
-* T: Agenda commands. (line 124)
* t: Agenda commands. (line 111)
+* T: Agenda commands. (line 124)
* v: Using column view. (line 39)
* w: Agenda commands. (line 66)
-* x: Agenda commands. (line 239)
-* X: Agenda commands. (line 183)
+* X: Agenda commands. (line 184)
+* x: Agenda commands. (line 240)
* y: Agenda commands. (line 66)

Tag Table:
Node: Top970
-Node: Introduction12966
-Node: Summary13381
-Node: Installation16533
-Node: Activation17911
-Node: Feedback19148
-Node: Document structure21224
-Node: Outlines22116
-Node: Headlines22781
-Ref: Headlines-Footnote-123785
-Node: Visibility cycling23896
-Ref: Visibility cycling-Footnote-126106
-Ref: Visibility cycling-Footnote-226164
-Ref: Visibility cycling-Footnote-326214
-Node: Motion26484
-Node: Structure editing27438
-Node: Archiving30277
-Node: ARCHIVE tag30835
-Node: Moving subtrees32628
-Node: Sparse trees34100
-Ref: Sparse trees-Footnote-136235
-Ref: Sparse trees-Footnote-236417
-Node: Plain lists36532
-Ref: Plain lists-Footnote-140729
-Ref: Plain lists-Footnote-241087
-Node: Drawers41268
-Node: orgstruct-mode42106
-Node: Tables43006
-Node: Built-in table editor43587
-Node: Narrow columns50832
-Ref: Narrow columns-Footnote-152767
-Node: Column groups52813
-Node: orgtbl-mode54346
-Node: The spreadsheet55149
-Node: References56236
-Ref: References-Footnote-160700
-Node: Formula syntax for Calc60989
-Node: Formula syntax for Lisp63446
-Node: Field formulas65164
-Node: Column formulas66472
-Node: Editing and debugging formulas68071
-Node: Updating the table72224
-Node: Advanced features73277
-Node: Hyperlinks77802
-Node: Link format78640
-Node: Internal links79933
-Ref: Internal links-Footnote-181858
-Node: Radio targets81993
-Node: External links82693
-Node: Handling links85097
-Ref: Handling links-Footnote-190394
-Ref: Handling links-Footnote-290631
-Node: Using links outside Org-mode90705
-Node: Link abbreviations91215
-Node: Search options92908
-Ref: Search options-Footnote-194688
-Node: Custom searches94769
-Node: Remember95817
-Node: Setting up remember96804
-Node: Remember templates97386
-Ref: Remember templates-Footnote-1100832
-Node: Storing notes100930
-Node: TODO items102817
-Node: TODO basics103794
-Node: TODO extensions105876
-Node: Workflow states106695
-Ref: Workflow states-Footnote-1107870
-Node: TODO types107963
-Ref: TODO types-Footnote-1109546
-Node: Multiple sets in one file109628
-Node: Per file keywords111239
-Ref: Per file keywords-Footnote-1112508
-Node: Priorities112709
-Node: Breaking down tasks114319
-Ref: Breaking down tasks-Footnote-1114839
-Node: Checkboxes114935
-Node: Tags117784
-Node: Tag inheritance118556
-Node: Setting tags119493
-Ref: Setting tags-Footnote-1124016
-Ref: Setting tags-Footnote-2124128
-Node: Tag searches124211
-Node: Properties and columns126928
-Node: Property syntax128033
-Node: Special properties130454
-Node: Property searches131370
-Node: Column view132025
-Node: Defining columns133192
-Node: Scope of column definitions133590
-Node: Column attributes134512
-Node: Using column view136760
-Node: Property API138747
-Node: Timestamps139101
-Node: Time stamps139562
-Ref: Time stamps-Footnote-1141990
-Node: Creating timestamps142106
-Node: The date/time prompt144180
-Ref: The date/time prompt-Footnote-1146168
-Node: Custom time format146274
-Node: Deadlines and scheduling147966
-Ref: Deadlines and scheduling-Footnote-1149586
-Node: Inserting deadline/schedule149741
-Node: Repeated tasks150679
-Node: Progress logging152318
-Node: Closing items152973
-Ref: Closing items-Footnote-1153907
-Ref: Closing items-Footnote-2153976
-Node: Tracking TODO state changes154049
-Node: Clocking work time154905
-Ref: Clocking work time-Footnote-1158551
-Ref: Clocking work time-Footnote-2158629
-Node: Agenda views158755
-Node: Agenda files160706
-Ref: Agenda files-Footnote-1161672
-Ref: Agenda files-Footnote-2161821
-Node: Agenda dispatcher162014
-Node: Built-in agenda views163711
-Node: Weekly/Daily agenda164291
-Node: Global TODO list167233
-Node: Matching tags and properties169511
-Node: Timeline170600
-Node: Stuck projects171272
-Node: Presentation and sorting173123
-Node: Categories173914
-Node: Time-of-day specifications174578
-Node: Sorting of agenda items176549
-Node: Agenda commands177831
-Node: Custom agenda views185112
-Node: Storing searches185831
-Node: Block agenda187743
-Node: Setting Options188973
-Node: Exporting Agenda Views191712
-Ref: Exporting Agenda Views-Footnote-1195996
-Ref: Exporting Agenda Views-Footnote-2196053
-Node: Extracting Agenda Information for other programs196239
-Node: Embedded LaTeX200365
-Ref: Embedded LaTeX-Footnote-1201459
-Node: Math symbols201649
-Node: Subscripts and Superscripts202416
-Node: LaTeX fragments203262
-Ref: LaTeX fragments-Footnote-1205495
-Ref: LaTeX fragments-Footnote-2205756
-Node: Processing LaTeX fragments205890
-Node: CDLaTeX mode206838
-Ref: CDLaTeX mode-Footnote-1209324
-Node: Exporting209472
-Node: ASCII export210939
-Node: HTML export212440
-Node: HTML Export commands213066
-Node: Quoting HTML tags214853
-Node: Links215488
-Node: Images216185
-Ref: Images-Footnote-1217056
-Node: CSS support217117
-Ref: CSS support-Footnote-1218436
-Node: LaTeX export218549
-Node: LaTeX export commands218873
-Node: Quoting LaTeX code220035
-Node: XOXO export220540
-Node: iCalendar export220980
-Node: Text interpretation222199
-Node: Comment lines222790
-Node: Initial text223185
-Node: Footnotes224854
-Node: Enhancing text225669
-Ref: Enhancing text-Footnote-1227538
-Node: Export options227628
-Node: Publishing229904
-Ref: Publishing-Footnote-1230865
-Ref: Publishing-Footnote-2231009
-Node: Configuration231160
-Node: Project alist231878
-Node: Sources and destinations232944
-Node: Selecting files233674
-Node: Publishing action234422
-Node: Publishing options235756
-Node: Publishing links238131
-Node: Project page index239644
-Node: Sample configuration240422
-Node: Simple example240914
-Node: Complex example241587
-Node: Triggering publication243663
-Node: Miscellaneous244348
-Node: Completion244982
-Node: Customization246652
-Node: In-buffer settings247235
-Node: The very busy C-c C-c key252762
-Node: Clean view254523
-Node: TTY keys257100
-Node: Interaction258710
-Node: Cooperation259107
-Node: Conflicts261983
-Node: Bugs263986
-Node: Extensions and Hacking265482
-Node: Extensions266207
-Node: Adding hyperlink types268150
-Node: Tables in arbitrary syntax271812
-Node: Radio tables272901
-Node: A LaTeX example275404
-Ref: A LaTeX example-Footnote-1279050
-Ref: A LaTeX example-Footnote-2279198
-Node: Translator functions279633
-Ref: Translator functions-Footnote-1282742
-Node: Dynamic blocks282830
-Node: Special agenda views284802
-Node: Using the property API287980
-Node: History and Acknowledgments289461
-Node: Index296037
-Node: Key Index330529
+Node: Introduction13081
+Node: Summary13496
+Node: Installation16623
+Node: Activation18001
+Node: Feedback19238
+Node: Document structure21307
+Node: Outlines22199
+Node: Headlines22864
+Ref: Headlines-Footnote-123868
+Node: Visibility cycling23979
+Ref: Visibility cycling-Footnote-126189
+Ref: Visibility cycling-Footnote-226247
+Ref: Visibility cycling-Footnote-326297
+Node: Motion26567
+Node: Structure editing27521
+Node: Archiving30515
+Node: ARCHIVE tag31073
+Node: Moving subtrees32866
+Ref: Moving subtrees-Footnote-134413
+Node: Sparse trees34700
+Ref: Sparse trees-Footnote-136835
+Ref: Sparse trees-Footnote-237017
+Node: Plain lists37132
+Ref: Plain lists-Footnote-141329
+Ref: Plain lists-Footnote-241687
+Node: Drawers41868
+Node: orgstruct-mode42706
+Node: Tables43606
+Node: Built-in table editor44187
+Node: Narrow columns51593
+Ref: Narrow columns-Footnote-153528
+Node: Column groups53574
+Node: orgtbl-mode55107
+Node: The spreadsheet55910
+Node: References56997
+Ref: References-Footnote-161461
+Node: Formula syntax for Calc61750
+Node: Formula syntax for Lisp64207
+Node: Field formulas65925
+Node: Column formulas67233
+Node: Editing and debugging formulas68832
+Node: Updating the table72985
+Node: Advanced features74038
+Node: Hyperlinks78563
+Node: Link format79341
+Node: Internal links80634
+Ref: Internal links-Footnote-182559
+Node: Radio targets82694
+Node: External links83394
+Node: Handling links85798
+Ref: Handling links-Footnote-191095
+Ref: Handling links-Footnote-291332
+Node: Using links outside Org-mode91406
+Node: Link abbreviations91916
+Node: Search options93609
+Ref: Search options-Footnote-195389
+Node: Custom searches95470
+Node: TODO items96501
+Node: TODO basics97539
+Node: TODO extensions99744
+Node: Workflow states100688
+Ref: Workflow states-Footnote-1101863
+Node: TODO types101956
+Ref: TODO types-Footnote-1103539
+Node: Multiple sets in one file103621
+Node: Fast access to TODO states105241
+Node: Per file keywords106384
+Ref: Per file keywords-Footnote-1107686
+Node: Faces for TODO keywords107887
+Node: Progress logging108593
+Node: Closing items109024
+Ref: Closing items-Footnote-1109958
+Ref: Closing items-Footnote-2110027
+Node: Tracking TODO state changes110100
+Node: Priorities111246
+Ref: Priorities-Footnote-1112896
+Node: Breaking down tasks112966
+Ref: Breaking down tasks-Footnote-1113486
+Node: Checkboxes113582
+Node: Tags116431
+Node: Tag inheritance117203
+Node: Setting tags118140
+Ref: Setting tags-Footnote-1122663
+Ref: Setting tags-Footnote-2122775
+Node: Tag searches122858
+Node: Properties and columns125575
+Node: Property syntax126680
+Node: Special properties129101
+Node: Property searches130017
+Node: Column view130672
+Node: Defining columns131839
+Node: Scope of column definitions132237
+Node: Column attributes133159
+Node: Using column view135407
+Node: Property API137394
+Node: Timestamps137748
+Node: Time stamps138159
+Ref: Time stamps-Footnote-1140513
+Node: Creating timestamps140629
+Node: The date/time prompt142703
+Ref: The date/time prompt-Footnote-1144691
+Node: Custom time format144797
+Node: Deadlines and scheduling146489
+Ref: Deadlines and scheduling-Footnote-1148562
+Node: Inserting deadline/schedule148717
+Node: Repeated tasks149655
+Node: Clocking work time151294
+Ref: Clocking work time-Footnote-1155650
+Ref: Clocking work time-Footnote-2155728
+Node: Remember155854
+Node: Setting up remember156736
+Node: Remember templates157339
+Ref: Remember templates-Footnote-1160856
+Ref: Remember templates-Footnote-2161039
+Node: Storing notes161137
+Ref: Storing notes-Footnote-1163616
+Node: Agenda views163718
+Node: Agenda files165669
+Ref: Agenda files-Footnote-1166761
+Ref: Agenda files-Footnote-2166910
+Node: Agenda dispatcher167103
+Node: Built-in agenda views168802
+Node: Weekly/Daily agenda169384
+Node: Global TODO list172328
+Node: Matching tags and properties174608
+Node: Timeline175699
+Node: Stuck projects176373
+Node: Presentation and sorting178226
+Node: Categories179019
+Ref: Categories-Footnote-1179730
+Node: Time-of-day specifications180050
+Node: Sorting of agenda items182023
+Node: Agenda commands183307
+Node: Custom agenda views190685
+Node: Storing searches191406
+Node: Block agenda193320
+Node: Setting Options194552
+Node: Exporting Agenda Views197293
+Ref: Exporting Agenda Views-Footnote-1201579
+Ref: Exporting Agenda Views-Footnote-2201636
+Node: Extracting Agenda Information for other programs201822
+Node: Embedded LaTeX205950
+Ref: Embedded LaTeX-Footnote-1207044
+Node: Math symbols207234
+Node: Subscripts and Superscripts208001
+Node: LaTeX fragments208847
+Ref: LaTeX fragments-Footnote-1211080
+Ref: LaTeX fragments-Footnote-2211341
+Node: Processing LaTeX fragments211475
+Node: CDLaTeX mode212423
+Ref: CDLaTeX mode-Footnote-1214909
+Node: Exporting215057
+Node: ASCII export216524
+Node: HTML export218025
+Node: HTML Export commands218651
+Node: Quoting HTML tags220438
+Node: Links221073
+Node: Images221770
+Ref: Images-Footnote-1222641
+Node: CSS support222702
+Ref: CSS support-Footnote-1224021
+Node: LaTeX export224134
+Node: LaTeX export commands224458
+Node: Quoting LaTeX code225620
+Node: XOXO export226125
+Node: iCalendar export226565
+Node: Text interpretation227784
+Node: Comment lines228375
+Node: Initial text228770
+Node: Footnotes230439
+Node: Enhancing text231230
+Ref: Enhancing text-Footnote-1233099
+Node: Export options233189
+Node: Publishing235542
+Ref: Publishing-Footnote-1236503
+Ref: Publishing-Footnote-2236647
+Node: Configuration236798
+Node: Project alist237516
+Node: Sources and destinations238582
+Node: Selecting files239312
+Node: Publishing action240060
+Node: Publishing options241394
+Node: Publishing links243769
+Node: Project page index245282
+Node: Sample configuration246060
+Node: Simple example246552
+Node: Complex example247225
+Node: Triggering publication249301
+Node: Miscellaneous249986
+Node: Completion250620
+Node: Customization252290
+Node: In-buffer settings252873
+Node: The very busy C-c C-c key258408
+Node: Clean view260263
+Node: TTY keys262840
+Node: Interaction264450
+Node: Cooperation264847
+Node: Conflicts267723
+Node: Bugs269726
+Node: Extensions and Hacking271222
+Node: Extensions271947
+Node: Adding hyperlink types274209
+Node: Tables in arbitrary syntax277871
+Node: Radio tables278960
+Node: A LaTeX example281463
+Ref: A LaTeX example-Footnote-1285109
+Ref: A LaTeX example-Footnote-2285257
+Node: Translator functions285692
+Ref: Translator functions-Footnote-1288801
+Node: Dynamic blocks288889
+Node: Special agenda views290861
+Node: Using the property API294106
+Node: History and Acknowledgments295587
+Node: Index302163
+Node: Key Index336794

End Tag Table
diff --git a/org-export-latex.el b/org-export-latex.el
index 52e502a..0fbd514 100644
--- a/org-export-latex.el
+++ b/org-export-latex.el
@@ -1,27 +1,27 @@
-;;; org-export-latex.el --- LaTeX exporter for Org-mode
-;; Copyright (C) 2007 Free Software Foundation, Inc.
+;;; org-export-latex.el --- latex exporter for org-mode
+;; copyright (c) 2007 free software foundation, inc.
;;
;; Author: Bastien Guerry <bzg AT altern DOT org>
-;; Keywords: org organizer latex export convert
-;; Version: $Id: org-export-latex.el,v 0.27b 2007/08/25 14:26:06 guerry Exp guerry $
-;; X-URL: <http://www.cognition.ens.fr/~guerry/u/org-export-latex.el>
+;; Keywords: Org organizer latex export convert
+;; Homepage: http://www.cognition.ens.fr/~guerry/u/org-export-latex.el
+;; Version: 5.10
;;
;; This file is part of GNU Emacs.
;;
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
+;; GNU Emacs is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by the
+;; Free Software Foundation; either version 3, or (at your option) any
+;; later version.
;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;; GNU General Public License for more details.
+;; GNU Emacs is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+;; more details.
;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; You should have received a copy of the GNU General Public License along
+;; with GNU Emacs; see the file COPYING. If not, write to the Free Software
+;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+;; 02110-1301, USA.
;;
;;; Commentary:
;;
@@ -41,16 +41,19 @@
;;; Code:
(eval-when-compile
- (require 'cl)
- (require 'footnote))
+ (require 'cl))
+(require 'footnote)
(require 'org)
+;;; Variables:
(defvar org-latex-options-plist nil)
(defvar org-latex-todo-keywords-1 nil)
(defvar org-latex-all-targets-regexp nil)
(defvar org-latex-add-level 0)
(defvar org-latex-sectioning-depth 0)
+(defvar org-export-latex-list-beginning-re
+ "^\\([ \t]*\\)\\([-+]\\|[0-9]+\\(?:\\.\\|)\\)\\) *?")
(defvar org-latex-special-string-regexps
'(org-ts-regexp
@@ -59,6 +62,11 @@
org-clock-string)
"A list of regexps to convert as special keywords.")
+(defvar latexp) ; dynamically scoped from org.el
+(defvar re-quote) ; dynamically scoped from org.el
+(defvar commentsp) ; dynamically scoped from org.el
+
+;;; Custom variables:
(defcustom org-export-latex-sectioning-alist
'((1 "\\section{%s}" "\\section*{%s}")
(2 "\\subsection{%s}" "\\subsection*{%s}")
@@ -75,12 +83,17 @@ The %s formatter will be replaced by the title of the section."
:type 'alist)
(defcustom org-export-latex-emphasis-alist
- '(("*" "\\textbf{%s}")
- ("/" "\\emph{%s}")
- ("_" "\\underline{%s}")
- ("+" "\\texttt{%s}")
- ("=" "\\texttt{%s}"))
- "Alist of LaTeX expressions to convert emphasis fontifiers."
+ '(("*" "\\textbf{%s}" nil)
+ ("/" "\\emph{%s}" nil)
+ ("_" "\\underline{%s}" nil)
+ ("+" "\\texttt{%s}" nil)
+ ("=" "\\texttt{%s}" t))
+ "Alist of LaTeX expressions to convert emphasis fontifiers.
+Each element of the list is a list of three elements.
+The first element is the character used as a marker for fontification.
+The second element is a formatting string to wrap fontified text with.
+If non-nil the third element tells to protect converted text from other
+conversions."
:group 'org-export-latex
:type 'alist)
@@ -93,11 +106,17 @@ The %s formatter will be replaced by the title of the section."
:group 'org-export-latex
:type 'string)
-(defcustom org-export-latex-date-format nil
+(defcustom org-export-latex-date-format
+ "%d %B %Y"
"Format string for \\date{...}."
:group 'org-export-latex
:type 'string)
+(defcustom org-export-latex-tables-verbatim nil
+ "When non-nil, export tables as verbatim."
+ :group 'org-export-latex
+ :type 'boolean)
+
(defcustom org-export-latex-packages-alist nil
"Alist of packages to be inserted in the preamble.
Each cell is of the forma \( option . package \).
@@ -120,7 +139,7 @@ headline is mandatory)."
(symbol :tag "Convert as descriptive list" description)
(string :tag "Use a section string" :value "\\subparagraph{%s}")))
-(defcustom org-export-latex-remove-from-headines
+(defcustom org-export-latex-remove-from-headlines
'(:todo t :priority t :tags t)
"A plist of keywords to remove from headlines.
Non-nil means remove this keyword type from the headline.
@@ -129,13 +148,6 @@ Don't remove the keys, just change their values."
:type 'plist
:group 'org-export-latex)
-(defcustom org-export-latex-quotation-marks-convention "en"
- "Convention for conversion of the quotation marks.
-This value is overriden by any infile language setup."
- :group 'org-export-latex
- :type '(choice (string :tag "english" "en")
- (string :tag "french" "fr")))
-
(defcustom org-export-latex-image-default-option "width=10em"
"Default option for images."
:group 'org-export-latex
@@ -149,6 +161,7 @@ This value is overriden by any infile language setup."
;; FIXME Do we want this one?
;; (defun org-export-as-latex-and-open (arg) ...)
+;;; Autoload functions:
;;;###autoload
(defun org-export-as-latex-batch ()
"Call `org-export-as-latex', may be used in batch processing as
@@ -272,16 +285,16 @@ in a window. A non-interactive call will only retunr the buffer."
(if region-p (region-beginning) (point-min))
(if region-p (region-end) (point-max))))
(string-for-export
- ;; FIXME Use org-cleaned-string-for-export instead, only when
- ;; everyone uses Org >5.04
- (org-latex-cleaned-string-for-export
- region :for-html nil
- :comments nil
+ (org-cleaned-string-for-export
+ region :emph-multiline t
:for-LaTeX t
- :skip-before-1st-heading nil
+ :comments nil
+ :add-text text
+ :skip-before-1st-heading skip
:LaTeX-fragments nil)))
(set-buffer buffer)
(erase-buffer)
+
(unless body-only (insert preamble))
(when text (insert (org-export-latex-content text) "\n\n"))
(unless skip (insert first-lines))
@@ -302,9 +315,9 @@ in a window. A non-interactive call will only retunr the buffer."
(setq org-latex-add-level
(if odd (1- (/ (1+ asters) 2)) (1- asters)))
(org-export-latex-parse-global level odd))))
-
+
(unless body-only (insert "\n\\end{document}"))
- (or to-buffer (write-file filename))
+ (or to-buffer (save-buffer))
(goto-char (point-min))
(message "Exporting to LaTeX...done")
(if (eq to-buffer 'string)
@@ -312,88 +325,8 @@ in a window. A non-interactive call will only retunr the buffer."
(kill-buffer (current-buffer)))
(current-buffer))))
-(defun org-export-latex-set-initial-vars (ext-plist)
- "Store org local variables required for LaTeX export.
-EXT-PLIST is an optional additional plist."
- (setq org-latex-todo-keywords-1 org-todo-keywords-1
- org-latex-all-targets-regexp
- (org-make-target-link-regexp (org-all-targets))
- org-latex-options-plist
- (org-combine-plists (org-default-export-plist) ext-plist
- (org-infile-export-plist))
- org-latex-sectioning-depth
- (let ((hl-levels (plist-get org-latex-options-plist :headline-levels))
- (sec-depth (length org-export-latex-sectioning-alist)))
- ;; Fall back on org-export-latex-sectioning-alist length if
- ;; headline-levels goes beyond it
- (if (> hl-levels sec-depth) sec-depth hl-levels))))
-
-(defun org-export-latex-make-preamble (opt-plist)
- "Make the LaTeX preamble and return it as a string.
-Argument OPT-PLIST is the options plist for current buffer."
- (let ((toc (plist-get opt-plist :table-of-contents)))
- (format (concat org-export-latex-preamble
- "
-%s
-
-\\begin{document}
-
-\\title{%s}
-%s
-%s
-\\maketitle
-%s
-%s
-")
- (if org-export-latex-packages-alist
- (mapconcat (lambda(p)
- (if (equal "" (car p))
- (format "\\usepackage{%s}" (cadr p))
- (format "\\usepackage[%s]{%s}"
- (car p) (cadr p))))
- org-export-latex-packages-alist "\n") "")
- (or (plist-get opt-plist :title)
- (and (not
- (plist-get opt-plist :skip-before-1st-heading))
- (org-export-grab-title-from-buffer))
- (and buffer-file-name
- (file-name-sans-extension
- (file-name-nondirectory buffer-file-name)))
- "UNTITLED")
- (if (plist-get opt-plist :author-info)
- (format "\\author{%s}"
- (or (plist-get opt-plist :author) user-full-name))
- (format "%%\\author{%s}"
- (or (plist-get opt-plist :author) user-full-name)))
- (if (plist-get opt-plist :timestamps)
- (format "\\date{%s}"
- (format-time-string (or org-export-latex-date-format
- (car org-time-stamp-formats))))
- "%\\date{}")
- (if (and (plist-get opt-plist :section-numbers) toc)
- (format "\\setcounter{tocdepth}{%s}"
- (plist-get opt-plist :headline-levels)) "")
- (if (and (plist-get opt-plist :section-numbers) toc)
- "\\tableofcontents" ""))))
-
-(defun org-export-latex-first-lines (&optional comments)
- "Export the first lines before first headline.
-COMMENTS is either nil to replace them with the empty string or a
-formatting string like %%%%s if we want to comment them out."
- (save-excursion
- (goto-char (point-min))
- (let* ((end (if (re-search-forward "^\\*" nil t)
- (goto-char (match-beginning 0))
- (goto-char (point-max)))))
- (org-export-latex-content
- (org-latex-cleaned-string-for-export
- (buffer-substring (point-min) end)
- :for-html nil
- :for-LaTeX t
- :comments nil
- :skip-before-1st-heading nil
- :LaTeX-fragments nil)))))
+;;; Parsing functions:
(defun org-export-latex-parse-global (level odd)
"Parse the current buffer recursively, starting at LEVEL.
If ODD is non-nil, assume the buffer only contains odd sections.
@@ -443,6 +376,52 @@ Return A list reflecting the document structure."
(widen)))
(list output))))
+(defun org-export-latex-parse-list (&optional delete)
+ "Parse the list at point.
+Return a list containing first level items as strings and
+sublevels as list of strings."
+ (let ((start (point))
+ ;; Find the end of the list
+ (end (save-excursion
+ (catch 'exit
+ (while (or (looking-at org-export-latex-list-beginning-re)
+ (looking-at "^[ \t]+\\|^$"))
+ (if (eq (point) (point-max))
+ (throw 'exit (point-max)))
+ (forward-line 1))) (point)))
+ output itemsep)
+ (while (re-search-forward org-export-latex-list-beginning-re end t)
+ (setq itemsep (if (save-match-data
+ (string-match "^[0-9]" (match-string 2)))
+ "[0-9]+\\(?:\\.\\|)\\)" "[-+]"))
+ (let* ((indent1 (match-string 1))
+ (nextitem (save-excursion
+ (save-match-data
+ (or (and (re-search-forward
+ (concat "^" indent1 itemsep " *?") end t)
+ (match-beginning 0)) end))))
+ (item (buffer-substring
+ (point)
+ (or (and (re-search-forward
+ org-export-latex-list-beginning-re end t)
+ (goto-char (match-beginning 0)))
+ (goto-char end))))
+ (nextindent (match-string 1))
+ (item (org-trim item))
+ (item (if (string-match "^\\[.+\\]" item)
+ (replace-match "\\\\texttt{\\&}"
+ t nil item) item)))
+ (push item output)
+ (when (> (length nextindent)
+ (length indent1))
+ (narrow-to-region (point) nextitem)
+ (push (org-export-latex-parse-list) output)
+ (widen))))
+ (when delete (delete-region start end))
+ (setq output (nreverse output))
+ (push (if (string-match "^\\[0" itemsep)
+ 'ordered 'unordered) output)))
+
(defun org-export-latex-parse-content ()
"Extract the content of a section."
(let ((beg (point))
@@ -462,6 +441,7 @@ If ODD Is non-nil, assume subcontent only contains odd sections."
nil ; subcontent is nil
(org-export-latex-parse-global (+ (if odd 2 1) level) odd)))
+;;; Rendering functions:
(defun org-export-latex-global (content)
"Export CONTENT to LaTeX.
CONTENT is an element of the list produced by
@@ -474,9 +454,10 @@ CONTENT is an element of the list produced by
"Export the list SUBCONTENT to LaTeX.
SUBCONTENT is an alist containing information about the headline
and its content."
- (mapc (lambda(x) (org-export-latex-subcontent x)) subcontent))
+ (let ((num (plist-get org-latex-options-plist :section-numbers)))
+ (mapc (lambda(x) (org-export-latex-subcontent x num)) subcontent)))
-(defun org-export-latex-subcontent (subcontent)
+(defun org-export-latex-subcontent (subcontent num)
"Export each cell of SUBCONTENT to LaTeX."
(let ((heading (org-export-latex-fontify-headline
(cdr (assoc 'heading subcontent))))
@@ -484,8 +465,7 @@ and its content."
org-latex-add-level))
(occur (number-to-string (cdr (assoc 'occur subcontent))))
(content (cdr (assoc 'content subcontent)))
- (subcontent (cadr (assoc 'subcontent subcontent)))
- (num (plist-get org-latex-options-plist :section-numbers)))
+ (subcontent (cadr (assoc 'subcontent subcontent))))
(cond
;; Normal conversion
((<= level org-latex-sectioning-depth)
@@ -508,6 +488,110 @@ and its content."
(cond ((stringp subcontent) (insert subcontent))
((listp subcontent) (org-export-latex-sub subcontent)))))))))
+
+;;; Exporting internals:
+(defun org-latex-protect (string)
+ (add-text-properties 0 (length string) '(org-protected t) string) string)
+
+(defun org-export-latex-protect-char-in-string (char-list string)
+ "Add org-protected text-property to char from CHAR-LIST in STRING."
+ (with-temp-buffer
+ (save-match-data
+ (insert string)
+ (goto-char (point-min))
+ (while (re-search-forward (regexp-opt char-list) nil t)
+ (add-text-properties (match-beginning 0)
+ (match-end 0) '(org-protected t)))
+ (buffer-string))))
+
+(defun org-export-latex-set-initial-vars (ext-plist)
+ "Store org local variables required for LaTeX export.
+EXT-PLIST is an optional additional plist."
+ (setq org-latex-todo-keywords-1 org-todo-keywords-1
+ org-latex-all-targets-regexp
+ (org-make-target-link-regexp (org-all-targets))
+ org-latex-options-plist
+ (org-combine-plists (org-default-export-plist) ext-plist
+ (org-infile-export-plist))
+ org-latex-sectioning-depth
+ (let ((hl-levels (plist-get org-latex-options-plist :headline-levels))
+ (sec-depth (length org-export-latex-sectioning-alist)))
+ ;; Fall back on org-export-latex-sectioning-alist length if
+ ;; headline-levels goes beyond it
+ (if (> hl-levels sec-depth) sec-depth hl-levels))))
+
+(defun org-export-latex-make-preamble (opt-plist)
+ "Make the LaTeX preamble and return it as a string.
+Argument OPT-PLIST is the options plist for current buffer."
+ (let ((toc (plist-get opt-plist :table-of-contents)))
+ (concat (if (plist-get opt-plist :time-stamp-file)
+ (format-time-string "% Created %Y-%m-%d %a %H:%M\n"))
+
+ ;; LaTeX custom preamble
+ org-export-latex-preamble "\n"
+
+ ;; LaTeX packages
+ (if org-export-latex-packages-alist
+ (mapconcat (lambda(p)
+ (if (equal "" (car p))
+ (format "\\usepackage{%s}" (cadr p))
+ (format "\\usepackage[%s]{%s}"
+ (car p) (cadr p))))
+ org-export-latex-packages-alist "\n") "")
+ "\n\\begin{document}\n\n"
+
+ ;; title
+ (format
+ "\\title{%s}\n"
+ (or (plist-get opt-plist :title)
+ (and (not
+ (plist-get opt-plist :skip-before-1st-heading))
+ (org-export-grab-title-from-buffer))
+ (and buffer-file-name
+ (file-name-sans-extension
+ (file-name-nondirectory buffer-file-name)))
+ "UNTITLED"))
+
+ ;; author info
+ (if (plist-get opt-plist :author-info)
+ (format "\\author{%s}\n"
+ (or (plist-get opt-plist :author) user-full-name))
+ (format "%%\\author{%s}\n"
+ (or (plist-get opt-plist :author) user-full-name)))
+
+ ;; date
+ (format "\\date{%s}\n"
+ (format-time-string
+ (or (plist-get opt-plist :date)
+ org-export-latex-date-format)))
+
+ "\\maketitle\n\n"
+ ;; table of contents
+ (if (and (plist-get opt-plist :section-numbers) toc)
+ (format "\\setcounter{tocdepth}{%s}\n"
+ (min toc (plist-get opt-plist :headline-levels))) "")
+ (if (and (plist-get opt-plist :section-numbers) toc)
+ "\\tableofcontents\n" "\n"))))
+
+(defun org-export-latex-first-lines (&optional comments)
+ "Export the first lines before first headline.
+COMMENTS is either nil to replace them with the empty string or a
+formatting string like %%%%s if we want to comment them out."
+ (save-excursion
+ (goto-char (point-min))
+ (let* ((end (if (re-search-forward "^\\*" nil t)
+ (goto-char (match-beginning 0))
+ (goto-char (point-max)))))
+ (org-export-latex-content
+ (org-cleaned-string-for-export
+ (buffer-substring (point-min) end)
+ :for-LaTeX t
+ :emph-multiline t
+ :add-text nil
+ :comments nil
+ :skip-before-1st-heading nil
+ :LaTeX-fragments nil)))))
+
(defun org-export-latex-keywords-maybe (remove-list)
"Maybe remove keywords depending on rules in REMOVE-LIST."
(goto-char (point-min))
@@ -536,12 +620,12 @@ and its content."
;; the beginning of the buffer - inserting "\n" is safe here though.
(insert "\n" headline)
(goto-char (point-min))
- (org-export-latex-special-chars
- (plist-get org-latex-options-plist :sub-superscript))
(when (plist-get org-latex-options-plist :emphasize)
(org-export-latex-fontify))
+ (org-export-latex-special-chars
+ (plist-get org-latex-options-plist :sub-superscript))
(org-export-latex-keywords-maybe
- org-export-latex-remove-from-headines)
+ org-export-latex-remove-from-headlines)
(org-export-latex-links)
(org-trim (buffer-substring-no-properties (point-min) (point-max)))))
@@ -550,34 +634,26 @@ and its content."
(with-temp-buffer
(insert content)
(org-export-latex-quotation-marks)
- (org-export-latex-special-chars
- (plist-get org-latex-options-plist :sub-superscript))
(when (plist-get org-latex-options-plist :emphasize)
(org-export-latex-fontify))
+ (org-export-latex-special-chars
+ (plist-get org-latex-options-plist :sub-superscript))
(org-export-latex-links)
- (org-export-latex-keywords)
- (org-export-latex-itemize)
- (org-export-latex-enumerate)
+ (org-export-latex-keywords
+ (plist-get org-latex-options-plist :timestamps))
+ (org-export-latex-lists)
(org-export-latex-tables
(plist-get org-latex-options-plist :tables))
(org-export-latex-fixed-width
(plist-get org-latex-options-plist :fixed-width))
- (org-export-fix-invisible-strings)
(buffer-substring (point-min) (point-max))))
-(defun org-export-fix-invisible-strings ()
- "Comment out (INVISIBLE) warnings."
- (goto-char (point-min))
- (while (re-search-forward "(INVISIBLE)" nil t)
- (replace-match "%\\&")))
-
(defun org-export-latex-quotation-marks ()
"Export question marks depending on language conventions.
Local definition of the language overrides
`org-export-latex-quotation-marks-convention' which overrides
`org-export-default-language'."
- (let* ((lang (or (plist-get org-latex-options-plist :language)
- org-export-latex-quotation-marks-convention))
+ (let* ((lang (plist-get org-latex-options-plist :language))
(quote-rpl (if (equal lang "fr")
'(("\\(\\s-\\)\"" "«~")
("\\(\\S-\\)\"" "~»")
@@ -595,7 +671,7 @@ Local definition of the language overrides
;; | chars/string in Org | normal environment | math environment |
;; |-----------------------+-----------------------+-----------------------|
;; | & # % $ | \& \# \% \$ | \& \# \% \$ |
-;; | { } _ ^ \ | \ { \ } \_ \^ \\ | { } _ ^ \ |
+;; | { } _ ^ \ | \{ \} \_ \^ \\ | { } _ ^ \ |
;; |-----------------------+-----------------------+-----------------------|
;; | a_b and a^b | $a_b$ and $a^b$ | a_b and a^b |
;; | a_abc and a_{abc} | $a_a$bc and $a_{abc}$ | a_abc and a_{abc} |
@@ -655,8 +731,8 @@ See the `org-export-latex.el' code for a complete conversion table."
(match-string 2)
(match-string 3))) "") t t)))))))
'("^\\([^\n$]*?\\|^\\)\\(\\\\?\\$\\)\\([^\n$]*\\)$"
- "\\([a-za-z0-9]+\\|[ \t\n]\\|\\\\\\)\\(_\\|\\^\\)\\([a-za-z0-9]+\\|[ \t\n]\\|[:punct:]\\|{[a-za-z0-9]+}\\|([a-za-z0-9]+)\\)"
- "\\(.\\|^\\)\\(\\\\\\)\\([ \t\n]\\|[a-za-z&#%{}]+\\)"
+ "\\([a-za-z0-9]+\\|[ \t\n]\\|\\b\\|\\\\\\)\\(_\\|\\^\\)\\([a-za-z0-9]+\\|[ \t\n]\\|[:punct:]\\|{[a-za-z0-9]+}\\|([a-za-z0-9]+)\\)"
+ "\\(.\\|^\\)\\(\\\\\\)\\([ \t\n]\\|[a-zA-Z&#%{}\"]+\\)"
"\\(.\\|^\\)\\(&\\)"
"\\(.\\|^\\)\\(#\\)"
"\\(.\\|^\\)\\(%\\)"
@@ -683,14 +759,16 @@ Convert CHAR depending on STRING-BEFORE and STRING-AFTER."
((string-match "[({]?\\([^)}]+\\)[)}]?" string-after)
(format "%s%s{%s}" string-before char
(match-string 1 string-after))))))
- ((and subsup
+ ((and subsup
(> (length string-after) 1)
(string-match "[({]?\\([^)}]+\\)[)}]?" string-after))
(format "$%s%s{%s}$" string-before char
(match-string 1 string-after)))
(subsup (concat "$" string-before char string-after "$"))
- (t (concat string-before "\\" char string-after))))
- (t (concat string-before "\\" char string-after))))
+ (t (org-latex-protect
+ (concat string-before "\\" char "{}" string-after)))))
+ (t (org-latex-protect
+ (concat string-before "\\" char "{}" string-after)))))
(defun org-export-latex-treat-backslash-char (string-before string-after)
"Convert the \"$\" special character to LaTeX.
@@ -701,7 +779,7 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
(or (cdar (member (list string-after) org-html-entities))
string-after) "$"))
((and (not (string-match "^[ \n\t]" string-after))
- (not (string-match "[ \t]\\'" string-before)))
+ (not (string-match "[ \t]\\'\\|^" string-before)))
;; backslash is inside a word
(concat string-before "$\\backslash$" string-after))
((not (or (equal string-after "")
@@ -715,6 +793,17 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
(concat string-before "$\\backslash$" string-after))
(t (concat string-before "$\\backslash$" string-after))))
+(defun org-export-latex-keywords (timestamps)
+ "Convert special keywords to LaTeX.
+Regexps are those from `org-latex-special-string-regexps'."
+ (let ((rg org-latex-special-string-regexps) r)
+ (while (setq r (pop rg))
+ (goto-char (point-min))
+ (while (re-search-forward (eval r) nil t)
+ (if (not timestamps)
+ (replace-match (format "\\\\texttt{%s}" (match-string 0)) t)
+ (replace-match ""))))))
+
(defun org-export-latex-fixed-width (opt)
"When OPT is non-nil convert fixed-width sections to LaTeX."
(goto-char (point-min))
@@ -734,6 +823,72 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
(forward-line))))))
;; FIXME Use org-export-highlight-first-table-line ?
+(defun org-export-latex-lists ()
+ "Convert lists to LaTeX."
+ (goto-char (point-min))
+ (while (re-search-forward org-export-latex-list-beginning-re nil t)
+ (beginning-of-line)
+ (org-export-list-to-latex
+ (org-export-latex-parse-list t))))
+
+(defun org-export-list-to-generic (list params)
+ "Convert a LIST parsed through `org-export-latex-parse-list' to other formats.
+
+Valid parameters are
+
+:ustart String to start an unordered list
+:uend String to end an unordered list
+
+:ostart String to start an ordered list
+:oend String to end an ordered list
+
+:splice When set to t, return only list body lines, don't wrap
+ them into :[u/o]start and :[u/o]end. Default is nil.
+
+:istart String to start a list item
+:iend String to end a list item
+:isep String to separate items
+:lsep String to separate sublists"
+ (interactive)
+ (let* ((p params) sublist
+ (splicep (plist-get p :splice))
+ (ostart (plist-get p :ostart))
+ (oend (plist-get p :oend))
+ (ustart (plist-get p :ustart))
+ (uend (plist-get p :uend))
+ (istart (plist-get p :istart))
+ (iend (plist-get p :iend))
+ (isep (plist-get p :isep))
+ (lsep (plist-get p :lsep)))
+ (let ((wrapper
+ (cond ((eq (car list) 'ordered)
+ (concat ostart "\n%s" oend "\n"))
+ ((eq (car list) 'unordered)
+ (concat ustart "\n%s" uend "\n"))))
+ rtn)
+ (while (setq sublist (pop list))
+ (cond ((symbolp sublist) nil)
+ ((stringp sublist)
+ (setq rtn (concat rtn istart sublist iend isep)))
+ (t
+ (setq rtn (concat rtn ;; previous list
+ lsep ;; list separator
+ (org-export-list-to-generic sublist p)
+ lsep ;; list separator
+ )))))
+ (format wrapper rtn))))
+
+(defun org-export-list-to-latex (list)
+ "Convert LIST into a LaTeX list."
+ (insert
+ (org-export-list-to-generic
+ list '(:splicep nil :ostart "\\begin{enumerate}" :oend "\\end{enumerate}"
+ :ustart "\\begin{itemize}" :uend "\\end{itemize}"
+ :istart "\\item " :iend ""
+ :isep "\n" :lsep "\n"))
+ ;; Add a trailing \n after list conversion
+ "\n"))
+
(defun org-export-latex-tables (opt)
"When OPT is non-nil convert tables to LaTeX."
(goto-char (point-min))
@@ -747,101 +902,40 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
(concat "^" (regexp-quote (match-string 1))
"[^|]\\|\\'") nil t) (match-beginning 0))))
(beginning-of-line)
- (while (not (eq end (point)))
- (if (looking-at "[ \t]*|\\([^-|].+\\)|[ \t]*$")
- (push (split-string (org-trim (match-string 1)) "|") tbl-list)
- (push 'hline tbl-list))
- (forward-line))
- ;; comment region out instead of deleting it ?
- (apply 'delete-region (list beg end))
- (when opt (insert (orgtbl-to-latex (nreverse tbl-list)
- nil) "\n\n")))))
-
-(defun org-export-latex-keywords ()
- "Convert special keywords to LaTeX.
-Regexps are those from `org-latex-special-string-regexps'."
- (let ((rg org-latex-special-string-regexps) r)
- (while (setq r (pop rg))
- (goto-char (point-min))
- (while (re-search-forward (eval r) nil t)
- (replace-match (format "\\\\texttt{%s}" (match-string 0)) t)))))
-
-;; FIXME - we need better implementation for nested lists
-(defun org-export-latex-list (srch0 srch1 srch2 rpl0 rpl1)
- "Convert lists to LaTeX."
- (goto-char (point-min))
- (while (re-search-forward srch0 nil t)
- (let* ((beg (match-beginning 0))
- (prefix (regexp-quote (match-string 1)))
- (end-string (when (re-search-forward srch1 nil t)
- (match-string 0))))
- (goto-char beg) (insert rpl0)
- (while (re-search-forward
- (concat "^" prefix srch2)
- (if (not end-string)
- (point-max)
- (save-match-data
- (save-excursion
- (re-search-forward
- (regexp-quote end-string) nil t)))) t)
- (replace-match
- (concat "\\item "
- (if (match-string 1)
- (format "\\texttt{%s}" (match-string 1))))
- t t))
- (goto-char (if end-string
- (progn (re-search-forward
- (regexp-quote end-string) nil t)
- (match-beginning 0))
- (point-max)))
- (skip-chars-backward "\n") (forward-line 2)
- (insert rpl1))))
-
-(defun org-export-latex-itemize ()
- "Convert item list to LaTeX."
- (org-export-latex-list
- "^\\([ \t]*\\)-"
- "^[^ \n\t-]+.*$"
- "- ?\\(\\[.+\\]\\)?"
- "\\begin{itemize}\n"
- "\\end{itemize}\n"))
-
-(defun org-export-latex-enumerate ()
- "Convert numeric list to LaTeX."
- (org-export-latex-list
- "^\\([ \t]*\\)[0-9]+[\.)] \\(\\[.+\\]\\)? ?"
- "^[^ \n\t0-9]+.*$"
- "[0-9]+[\.)] ?\\(\\[.+\\]\\)?"
- "\\begin{enumerate}\n"
- "\\end{enumerate}\n"))
+ (if org-export-latex-tables-verbatim
+ (let* ((raw-table (buffer-substring beg end))
+ (tbl (concat "\\begin{verbatim}\n" raw-table
+ "\\end{verbatim}\n")))
+ (apply 'delete-region (list beg end))
+ (insert tbl))
+ (progn
+ (while (not (eq end (point)))
+ (if (looking-at "[ \t]*|\\([^-|].+\\)|[ \t]*$")
+ (push (split-string (org-trim (match-string 1)) "|") tbl-list)
+ (push 'hline tbl-list))
+ (forward-line))
+ ;; comment region out instead of deleting it ?
+ (apply 'delete-region (list beg end))
+ (when opt (insert (orgtbl-to-latex (nreverse tbl-list)
+ nil) "\n\n")))))))
(defun org-export-latex-fontify ()
"Convert fontification to LaTeX."
(goto-char (point-min))
(while (re-search-forward org-emph-re nil t)
;; The match goes one char after the *string*
- (unless (get-text-property (1- (point)) 'org-protected)
- (replace-match
- (concat (match-string 1)
- (format
- (org-export-latex-protect-char-in-string
- '("\\" "{" "}")
- (cadr (assoc (match-string 3)
- org-export-latex-emphasis-alist)))
- (match-string 4))
- (match-string 5)) t t)
- (backward-char))))
-
-(defun org-export-latex-protect-char-in-string (char-list string)
- "Add org-protected text-property to char from CHAR-LIST in STRING."
- (with-temp-buffer
- (save-match-data
- (insert string)
- (goto-char (point-min))
- (while (re-search-forward (regexp-opt char-list) nil t)
- (add-text-properties (match-beginning 0)
- (match-end 0) '(org-protected t)))
- (buffer-string))))
+ (let ((emph (assoc (match-string 3)
+ org-export-latex-emphasis-alist))
+ rpl)
+ (unless (get-text-property (1- (point)) 'org-protected)
+ (setq rpl (concat (match-string 1)
+ (format (org-export-latex-protect-char-in-string
+ '("\\" "{" "}") (cadr emph))
+ (match-string 4))
+ (match-string 5)))
+ (if (caddr emph) (setq rpl (org-latex-protect rpl)))
+ (replace-match rpl t t)))
+ (backward-char)))
(defun org-export-latex-links ()
;; Make sure to use the LaTeX hyperref and graphicx package
@@ -890,193 +984,9 @@ Regexps are those from `org-latex-special-string-regexps'."
(path (insert (format "\\href{%s}{%s}" path desc)))
(t (insert "\\texttt{" desc "}")))))))
-
-(defun org-latex-cleaned-string-for-export (string &rest parameters)
- "Cleanup a buffer STRING so that links can be created safely."
- (interactive)
- (let* ((re-radio (and org-target-link-regexp
- (concat "\\([^<]\\)\\(" org-target-link-regexp "\\)")))
- (re-plain-link (concat "\\([^[<]\\)" org-plain-link-re))
- (re-angle-link (concat "\\([^[]\\)" org-angle-link-re))
- (re-archive (concat ":" org-archive-tag ":"))
- (re-quote (concat "^\\*+[ \t]+" org-quote-string "\\>"))
- (htmlp (plist-get parameters :for-html))
- (latexp (plist-get parameters :for-LaTeX))
- (commentsp (plist-get parameters :comments))
- (inhibit-read-only t)
- (outline-regexp "\\*+ ")
- a b xx
- rtn p)
- (save-excursion
- (set-buffer (get-buffer-create " org-mode-tmp"))
- (erase-buffer)
- (insert string)
- ;; Remove license-to-kill stuff
- (while (setq p (text-property-any (point-min) (point-max)
- :org-license-to-kill t))
- (delete-region p (next-single-property-change p :org-license-to-kill)))
-
- (let ((org-inhibit-startup t)) (org-mode))
- (untabify (point-min) (point-max))
-
- ;; Get the correct stuff before the first headline
- (when (plist-get parameters :skip-before-1st-heading)
- (goto-char (point-min))
- (when (re-search-forward "^\\*+[ \t]" nil t)
- (delete-region (point-min) (match-beginning 0))
- (goto-char (point-min))
- (insert "\n")))
- (when (plist-get parameters :add-text)
- (goto-char (point-min))
- (insert (plist-get parameters :add-text) "\n"))
-
- ;; Get rid of archived trees
- (when (not (eq org-export-with-archived-trees t))
- (goto-char (point-min))
- (while (re-search-forward re-archive nil t)
- (if (not (org-on-heading-p t))
- (org-end-of-subtree t)
- (beginning-of-line 1)
- (setq a (if org-export-with-archived-trees
- (1+ (point-at-eol)) (point))
- b (org-end-of-subtree t))
- (if (> b a) (delete-region a b)))))
-
- ;; Get rid of property drawers
- (unless org-export-with-property-drawer
- (goto-char (point-min))
- (while (re-search-forward "^[ \t]*:PROPERTIES:[ \t]*\n\\([^@]*?\n\\)?[ \t]*:END:[ \t]*\n" nil t)
- (replace-match "")))
-
- ;; Find targets in comments and move them out of comments,
- ;; but mark them as targets that should be invisible
- (goto-char (point-min))
- (while (re-search-forward "^#.*?\\(<<<?[^>\r\n]+>>>?\\).*" nil t)
- (replace-match "\\1(INVISIBLE)"))
-
- ;; Specific LaTeX cleaning
- (when latexp
- (require 'org-export-latex nil t)
- (org-export-latex-cleaned-string))
-
- ;; Protect stuff from HTML processing
- (goto-char (point-min))
- (let ((formatters `((,htmlp "HTML" "BEGIN_HTML" "END_HTML"))) fmt)
- (while (re-search-forward "^[ \t]*:.*\\(\n[ \t]*:.*\\)*" nil t)
- (add-text-properties (match-beginning 0) (match-end 0)
- '(org-protected t)))
- (while formatters
- (setq fmt (pop formatters))
- (when (car fmt)
- (goto-char (point-min))
- (while (re-search-forward (concat "^#\\+" (cadr fmt)
- ":[ \t]*\\(.*\\)") nil t)
- (replace-match "\\1" t)
- (add-text-properties
- (point-at-bol) (min (1+ (point-at-eol)) (point-max))
- '(org-protected t))))
- (goto-char (point-min))
- (while (re-search-forward
- (concat "^#\\+"
- (caddr fmt) "\\>.*\\(\\(\n.*\\)*?\n\\)#\\+"
- (cadddr fmt) "\\>.*\n?") nil t)
- (if (car fmt)
- (add-text-properties (match-beginning 1) (1+ (match-end 1))
- '(org-protected t))
- (delete-region (match-beginning 0) (match-end 0))))
- (goto-char (point-min))
- (while (re-search-forward re-quote nil t)
- (goto-char (match-beginning 0))
- (end-of-line 1)
- (add-text-properties (point) (org-end-of-subtree t)
- '(org-protected t)))))
-
- ;; Remove or replace comments
- ;; If :comments is set, use this char for commenting out comments and
- ;; protect them. otherwise delete them
- (goto-char (point-min))
- (while (re-search-forward "^#\\(.*\n?\\)" nil t)
- (if commentsp
- (progn (add-text-properties
- (match-beginning 0) (match-end 0) '(org-protected t))
- (replace-match (format commentsp (match-string 1)) t t))
- (replace-match "")))
-
- ;; Find matches for radio targets and turn them into internal links
- (goto-char (point-min))
- (when re-radio
- (while (re-search-forward re-radio nil t)
- (org-if-unprotected
- (replace-match "\\1[[\\2]]"))))
-
- ;; Find all links that contain a newline and put them into a single line
- (goto-char (point-min))
- (while (re-search-forward "\\(\\(\\[\\|\\]\\)\\[[^]]*?\\)[ \t]*\n[ \t]*\\([^]]*\\]\\(\\[\\|\\]\\)\\)" nil t)
- (org-if-unprotected
- (replace-match "\\1 \\3")
- (goto-char (match-beginning 0))))
-
- ;; Convert LaTeX fragments to images
- (when (plist-get parameters :LaTeX-fragments)
- (org-format-latex
- (concat "ltxpng/" (file-name-sans-extension
- (file-name-nondirectory
- org-current-export-file)))
- org-current-export-dir nil "Creating LaTeX image %s"))
- (message "Exporting...")
-
- ;; Normalize links: Convert angle and plain links into bracket links
- ;; Expand link abbreviations
- (goto-char (point-min))
- (while (re-search-forward re-plain-link nil t)
- (goto-char (1- (match-end 0)))
- (org-if-unprotected
- (let* ((s (concat (match-string 1) "[[" (match-string 2)
- ":" (match-string 3) "]]")))
- ;; added 'org-protected property to links
- (put-text-property 0 (length s) 'face 'org-link s)
- (replace-match s t t))))
- (goto-char (point-min))
- (while (re-search-forward re-angle-link nil t)
- (goto-char (1- (match-end 0)))
- (org-if-unprotected
- (let* ((s (concat (match-string 1) "[[" (match-string 2)
- ":" (match-string 3) "]]")))
- (put-text-property 0 (length s) 'face 'org-link s)
- (replace-match s t t))))
- (goto-char (point-min))
- (while (re-search-forward org-bracket-link-regexp nil t)
- (org-if-unprotected
- (let* ((s (concat "[[" (setq xx (save-match-data
- (org-link-expand-abbrev (match-string 1))))
- "]"
- (if (match-end 3)
- (match-string 2)
- (concat "[" xx "]"))
- "]")))
- (put-text-property 0 (length s) 'face 'org-link s)
- (replace-match s t t))))
-
- ;; Find multiline emphasis and put them into single line
- (when (plist-get parameters :emph-multiline)
- (goto-char (point-min))
- (while (re-search-forward org-emph-re nil t)
- (if (not (= (char-after (match-beginning 3))
- (char-after (match-beginning 4))))
- (org-if-unprotected
- (subst-char-in-region (match-beginning 0) (match-end 0)
- ?\n ?\ t)
- (goto-char (1- (match-end 0))))
- (goto-char (1+ (match-beginning 0))))))
-
- (setq rtn (buffer-string)))
- (kill-buffer " org-mode-tmp")
- rtn))
-
-(defsubst org-latex-protect (string)
- (add-text-properties 0 (length string) '(org-protected t) string) string)
-
-(defun org-export-latex-cleaned-string ()
+(defun org-export-latex-cleaned-string
+ ;; FIXME remove commentsp call in org.el and here
+ (&optional commentsp)
"Clean stuff in the LaTeX export."
;; Preserve line breaks
@@ -1085,7 +995,7 @@ Regexps are those from `org-latex-special-string-regexps'."
(add-text-properties (match-beginning 0) (match-end 0)
'(org-protected t)))
- ;; Convert LaTeX to @LaTeX{}
+ ;; Convert LaTeX to \LaTeX{}
(goto-char (point-min))
(let ((case-fold-search nil) rpl)
(while (re-search-forward "\\([^+_]\\)LaTeX" nil t)
@@ -1097,44 +1007,28 @@ Regexps are those from `org-latex-special-string-regexps'."
(while (re-search-forward "^----+.$" nil t)
(replace-match (org-latex-protect "\\hrule") t t))
- ;; Remove COMMENT subtrees
- ;; What about QUOTE subtrees?
- (goto-char (point-min))
- (while (re-search-forward
- (concat "^\\*+ \\(" org-comment-string "\\)")
- nil t)
- (beginning-of-line)
- (org-cut-subtree))
-
;; Protect LaTeX \commands{...}
(goto-char (point-min))
- (while (re-search-forward "\\\\[a-z]+\\(?:\\[.*\\]\\)?\\(?:{.*}\\)?" nil t)
+ (while (re-search-forward "\\\\[a-zA-Z]+\\(?:\\[.*\\]\\)?{.*}" nil t)
(add-text-properties (match-beginning 0) (match-end 0)
'(org-protected t)))
-
+
;; Replace radio links
(goto-char (point-min))
- (let ((search (concat "<<<?" org-latex-all-targets-regexp ">?>>")))
- (while (re-search-forward search nil t)
- (replace-match
- (org-latex-protect (format "\\label{%s}" (match-string 1))) t t)))
-
+ (while (re-search-forward
+ (concat "<<<?" org-latex-all-targets-regexp
+ ">>>?\\((INVISIBLE)\\)?") nil t)
+ (replace-match
+ (org-latex-protect
+ (format "\\label{%s}%s"(match-string 1)
+ (if (match-string 2) "" (match-string 1)))) t t))
+
;; Delete @<...> constructs
(goto-char (point-min))
;; Thanks to Daniel Clemente for this regexp
(while (re-search-forward "@<\\(?:[^\"\n]\\|\".*\"\\)*?>" nil t)
(replace-match ""))
-
- ;; Add #+BEGIN_LaTeX before any \begin{...}
- (goto-char (point-min))
- (while (re-search-forward "^ *\\\\begin{" nil t)
- (replace-match "#+BEGIN_LaTeX:\n\\&" t))
-
- ;; Add #+END_LaTeX after any \end{...}
- (goto-char (point-min))
- (while (re-search-forward "^ *\\\\end{.+}.*$" nil t)
- (replace-match "\\&\n#+END_LaTeX" t))
-
+
;; When converting to LaTeX, replace footnotes
;; FIXME: don't protect footnotes from conversion
(when (plist-get org-latex-options-plist :footnotes)
@@ -1142,7 +1036,7 @@ Regexps are those from `org-latex-special-string-regexps'."
(while (re-search-forward "\\[[0-9]+\\]" nil t)
(when (save-match-data
(save-excursion (beginning-of-line)
- (looking-at "[^:|]")))
+ (looking-at "[^:|#]")))
(let ((foot-beg (match-beginning 0))
(foot-end (match-end 0))
(foot-prefix (match-string 0))
@@ -1152,12 +1046,13 @@ Regexps are those from `org-latex-special-string-regexps'."
(let ((end (save-excursion
(if (re-search-forward "^$\\|\\[[0-9]+\\]" nil t)
(match-beginning 0) (point-max)))))
- (setq footnote (concat
- (org-trim (buffer-substring (point) end))
- ;; FIXME stupid workaround for cases where
- ;; `org-bracket-link-analytic-regexp' matches
- ;; }. as part of the link.
- " "))
+ (setq footnote
+ (concat
+ (org-trim (buffer-substring (point) end))
+ ;; FIXME stupid workaround for cases where
+ ;; `org-bracket-link-analytic-regexp' matches
+ ;; }. as part of the link.
+ " "))
(delete-region (point) end)))
(goto-char foot-beg)
(delete-region foot-beg foot-end)
@@ -1172,44 +1067,9 @@ Regexps are those from `org-latex-special-string-regexps'."
(goto-char (point-min))
(while (re-search-forward
(concat "^" footnote-section-tag-regexp) nil t)
- (replace-match "")))
-
- ;; Protect stuff from LaTeX processing.
- ;; We will get rid on this once org.el integrate org-export-latex.el
- (goto-char (point-min))
- (let ((formatters `((,latexp "LaTeX" "BEGIN_LaTeX" "END_LaTeX"))) fmt)
- (while (re-search-forward "^[ \t]*:.*\\(\n[ \t]*:.*\\)*" nil t)
- (add-text-properties (match-beginning 0) (match-end 0)
- '(org-protected t)))
- (while formatters
- (setq fmt (pop formatters))
- (when (car fmt)
- (goto-char (point-min))
- (while (re-search-forward (concat "^#\\+" (cadr fmt)
- ;; ":[ \t]*\\(.*\\)") nil t)
- ;; FIXME: authorize spaces after #+LaTeX:
- ;; to get list correctly exported
- ":\\(.*\\)") nil t)
- (replace-match "\\1" t)
- (add-text-properties
- (point-at-bol) (min (1+ (point-at-eol)) (point-max))
- '(org-protected t))))
- (goto-char (point-min))
- (while (re-search-forward
- (concat "^#\\+"
- (caddr fmt) "\\>.*\\(\\(\n.*\\)*?\n\\)#\\+"
- (cadddr fmt) "\\>.*\n?") nil t)
- (if (car fmt)
- (add-text-properties (match-beginning 1) (1+ (match-end 1))
- '(org-protected t))
- (delete-region (match-beginning 0) (match-end 0))))
- (goto-char (point-min))
- (while (re-search-forward re-quote nil t)
- (goto-char (match-beginning 0))
- (end-of-line 1)
- (add-text-properties (point) (org-end-of-subtree t)
- '(org-protected t))))))
+ (replace-match ""))))
(provide 'org-export-latex)
+;; arch-tag: 23c2b87d-da04-4c2d-ad2d-1eb6487bc3ad
;;; org-export-latex.el ends here
diff --git a/org-install.el b/org-install.el
index d4c953a..152acae 100644
--- a/org-install.el
+++ b/org-install.el
@@ -1,5 +1,6 @@
;;; org-install.el --- Autoloads for org.el
+;; org.el
(autoload 'org-mode "org" "Org mode" t)
(autoload 'org-diary "org" "Diary entries from Org mode.")
(autoload 'org-agenda "org" "Multi-file agenda from Org mode." t)
@@ -10,6 +11,7 @@
(autoload 'turn-on-orgtbl "org" "Org tables as a minor mode.")
(autoload 'orgstruct-mode "org" "Org structure as a minor mode." t)
(autoload 'turn-on-orgstruct "org" "Org structure as a minor mode.")
+(autoload 'turn-on-orgstruct++ "Orgstruct-mode with indentation settings.")
(autoload 'org-cycle "org" "Subtree visibility cycling." t)
(autoload 'org-global-cycle "org" "Global visibility cycling." t)
(autoload 'org-agenda-list "org" "Produce calendar-like agenda view." t)
@@ -25,7 +27,9 @@
"Export all files in `org-agenda-files' to iCalendar .ics files." t)
(autoload 'org-export-icalendar-combine-agenda-files "org"
"Export all files in `org-agenda-files' to a single combined iCalendar file." t)
+(autoload 'org-run-like-in-org-mode "Run a command like in Org-mode.")
+;; org-latex.el
(autoload 'org-export-as-latex-batch "org-export-latex")
(autoload 'org-export-as-latex-to-buffer "org-export-latex"
"Call `org-exort-as-latex` with output to a temporary buffer" t)
@@ -41,13 +45,15 @@
(autoload 'org-store-agenda-views "org" "Store agenda views to files" t)
(autoload 'org-batch-store-agenda-views "org")
+;; org-publish.el
(autoload 'org-publish-current-file "org-publish" "Publish current file." t)
(autoload 'org-publish-current-project "org-publish"
"Publish all files of current project." t)
(autoload 'org-publish "org-publish" "Publish a project." t)
(autoload 'org-publish-all "org-publish" "Publish all projects." t)
-(autoload 'org-run-like-in-org-mode "Run a command like in Org-mode.")
-
+;; org-toc.el
+(autoload 'org-show-toc "org-toc" "Create and display a table of contents" t)
+
(provide 'org-install)
diff --git a/org-mouse.el b/org-mouse.el
index 53cba3a..62e7c0c 100644
--- a/org-mouse.el
+++ b/org-mouse.el
@@ -1,43 +1,35 @@
;;; org-mouse.el --- Better mouse support for org-mode
-;; Copyright (c) 2006 Piotr Zielinski
+;; Copyright (c) 2006 Piotr Zielinski, 2007 Free Software Foundation
;;
;; Author: Piotr Zielinski <piotr dot zielinski at gmail dot com>
-;; Version: 0.24a
-;; $Id: org-mouse.el 817 2007-02-01 00:28:02Z pz215 $
-;;
-;; The latest version of this file is available from
+;; Maintainer: Carsten Dominik <carsten at orgmode dot org>
+;; Version: 5.10
;;
-;; http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el
+;; This file is part of GNU Emacs.
;;
-;; This file is *NOT* part of GNU Emacs.
-;; This file is distributed under the same terms as GNU Emacs.
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2 of
-;; the License, or (at your option) any later version.
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
-;; This program is distributed in the hope that it will be
-;; useful, but WITHOUT ANY WARRANTY; without even the implied
-;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-;; PURPOSE. See the GNU General Public License for more details.
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
-;; You should have received a copy of the GNU General Public
-;; License along with this program; if not, write to the Free
-;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-;; MA 02111-1307 USA
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Commentary:
;;
-;; Org-mouse provides better mouse support for org-mode. Org-mode is
-;; a mode for keeping notes, maintaining ToDo lists, and doing project
-;; planning with a fast and effective plain-text system. It is
-;; available from
+;; Org-mouse provides mouse support for org-mode.
;;
-;; http://staff.science.uva.nl/~dominik/Tools/org/
+;; http://orgmode.org
;;
;; Org-mouse implements the following features:
;; * following links with the left mouse button (in Emacs 22)
@@ -52,22 +44,14 @@
;; * promoting/demoting/moving subtrees with mouse-3
;; + if the drag starts and ends in the same line then promote/demote
;; + otherwise move the subtree
-;; * date/time extraction from selected text (requires a python script)
-;; (eg. select text from your email and click "Add Appointment")
-;;
-;; The python script that automatically extracts date/time information
-;; from a piece of English text is available from:
-;;
-;; http://www.cl.cam.ac.uk/~pz215/files/timeparser.py
;;
;; Use
-;; ------------
+;; ---
;;
;; To use this package, put the following line in your .emacs:
;;
;; (require 'org-mouse)
;;
-;; Tested with Emacs 22.0.50, org-mode 4.58
;; Fixme:
;; + deal with folding / unfolding issues
@@ -83,10 +67,18 @@
;; + ctrl-c ctrl-c, for example, renumber the current list
;; + internal links
-;; Please email me with new feature suggestions / bugs
+;; Please email the maintainer with new feature suggestions / bugs
;; History:
;;
+;; SInce version 5.10: Changes are listed in the general org-mode docs.
+;;
+;; Version 5.09
+;; + Version number synchronization with Org-mode.
+;;
+;; Version 0.25
+;; + made compatible with org-mode 4.70 (thanks to Carsten for the patch)
+;;
;; Version 0.24
;; + minor changes to the table menu
;;
@@ -148,24 +140,31 @@
;;
;; Versions 0.01 -- 0.07: (I don't remember)
-(require 'cl)
+(eval-when-compile (require 'cl))
+(require 'org)
-(defvar org-mouse-plain-list-regexp "\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) ")
-(defvar org-mouse-direct t)
+(defvar org-mouse-plain-list-regexp "\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) "
+ "Regular expression that matches a plain list.")
+(defvar org-mouse-direct t
+ "Internal variable indicating whether the current action is direct.
+
+If t, then the current action has been invoked directly through the buffer
+it is intended to operate on. If nil, then the action has been invoked
+indirectly, for example, through the agenda buffer.")
(defgroup org-mouse nil
- "Org-mouse"
- :tag "Org Mouse."
+ "Mouse support for org-mode."
+ :tag "Org Mouse"
:group 'org)
(defcustom org-mouse-punctuation ":"
- ""
+ "Punctuation used when inserting text by drag and drop."
:group 'org-mouse
:type 'string)
(defun org-mouse-re-search-line (regexp)
- "Searches the current line for a given regular expression."
+ "Search the current line for a given regular expression."
(beginning-of-line)
(re-search-forward regexp (point-at-eol) t))
@@ -178,8 +177,17 @@
(skip-chars-backward ":A-Za-z")
(skip-chars-backward "\t ")))
+(defvar org-mouse-context-menu-function nil
+ "Function to create the context menu.
+The value of this variable is the function invoked by
+`org-mouse-context-menu' as the context menu.")
+(make-variable-buffer-local 'org-mouse-context-menu-function)
(defun org-mouse-show-context-menu (event prefix)
+ "Invoke the context menu.
+
+If the value of `org-mouse-context-menu-function' is a function, then
+this function is called. Otherwise, the current major mode menu is used."
(interactive "@e \nP")
(if (and (= (event-click-count event) 1)
(or (not mark-active)
@@ -193,24 +201,30 @@
(sit-for 0)))
(if (functionp org-mouse-context-menu-function)
(funcall org-mouse-context-menu-function event)
- (mouse-major-mode-menu event prefix))
- )
+ (mouse-major-mode-menu event prefix)))
(setq this-command 'mouse-save-then-kill)
(mouse-save-then-kill event)))
(defun org-mouse-line-position ()
- "Returns :beginning :middle :end"
+ "Returns `:beginning' or `:middle' or `:end', depending on the point position.
+
+If the point is at the end of the line, return `:end'.
+If the point is separated from the beginning of the line only by white
+space and *'s (`org-mouse-bolp'), return `:beginning'. Otherwise,
+return `:middle'."
(cond
((eolp) :end)
- ((org-mouse-bolp) :begin)
+ ((org-mouse-bolp) :beginning)
(t :middle)))
(defun org-mouse-empty-line ()
+ "Return non-nil iff the line contains only white space."
(save-excursion (beginning-of-line) (looking-at "[ \t]*$")))
(defun org-mouse-next-heading ()
- "Goes to the next heading and if there is none, it ensures that the point is at the beginning of an empty line."
+ "Go to the next heading.
+If there is none, ensure that the point is at the beginning of an empty line."
(unless (outline-next-heading)
(beginning-of-line)
(unless (org-mouse-empty-line)
@@ -218,14 +232,22 @@
(newline))))
(defun org-mouse-insert-heading ()
+ "Insert a new heading, as `org-insert-heading'.
+
+If the point is at the :beginning (`org-mouse-line-position') of the line,
+insert the new heading before the current line. Otherwise, insert it
+after the current heading."
(interactive)
(case (org-mouse-line-position)
- (:begin (beginning-of-line)
+ (:beginning (beginning-of-line)
(org-insert-heading))
(t (org-mouse-next-heading)
(org-insert-heading))))
(defun org-mouse-timestamp-today (&optional shift units)
+ "Change the timestamp into SHIFT UNITS in the future.
+
+For the acceptable UNITS, see `org-timestamp-change'."
(interactive)
(flet ((org-read-date (&rest rest) (current-time)))
(org-time-stamp nil))
@@ -233,6 +255,24 @@
(org-timestamp-change shift units)))
(defun org-mouse-keyword-menu (keywords function &optional selected itemformat)
+ "A helper function.
+
+Returns a menu fragment consisting of KEYWORDS. When a keyword
+is selected by the user, FUNCTION is called with the selected
+keyword as the only argument.
+
+If SELECTED is nil, then all items are normal menu items. If
+SELECTED is a function, then each item is a checkbox, which is
+enabled for a given keyword iff (funcall SELECTED keyword) return
+non-nil. If SELECTED is neither nil nor a function, then the
+items are radio buttons. A radio button is enabled for the
+keyword `equal' to SELECTED.
+
+ITEMFORMAT governs formatting of the elements of KEYWORDS. If it
+is a function, it is invoked with the keyword as the only
+argument. If it is a string, it is interpreted as the format
+string to (format ITEMFORMAT keyword). If it is neither a string
+nor a function, elements of KEYWORDS are used directly. "
(mapcar
`(lambda (keyword)
(vector (cond
@@ -250,13 +290,15 @@
keywords))
(defun org-mouse-remove-match-and-spaces ()
+ "Remove the match, make just one space around the point."
(interactive)
(replace-match "")
(just-one-space))
+(defvar rest)
(defun org-mouse-replace-match-and-surround (newtext &optional fixedcase
literal string subexp)
- "The same as replace-match, but surrounds the replacement with spaces."
+ "The same as `replace-match', but surrounds the replacement with spaces."
(apply 'replace-match rest)
(save-excursion
(goto-char (match-beginning (or subexp 0)))
@@ -267,6 +309,23 @@
(defun org-mouse-keyword-replace-menu (keywords &optional group itemformat
nosurround)
+ "A helper function.
+
+Returns a menu fragment consisting of KEYWORDS. When a keyword
+is selected, group GROUP of the current match is replaced by the
+keyword. The method ensures that both ends of the replacement
+are separated from the rest of the text in the buffer by
+individual spaces (unless NOSURROND is non-nil).
+
+The final entry of the menu is always \"None\", which removes the
+match.
+
+ITEMFORMAT governs formatting of the elements of KEYWORDS. If it
+is a function, it is invoked with the keyword as the only
+argument. If it is a string, it is interpreted as the format
+string to (format ITEMFORMAT keyword). If it is neither a string
+nor a function, elements of KEYWORDS are used directly.
+"
(setq group (or group 0))
(let ((replace (org-mouse-match-closure
(if nosurround 'replace-match
@@ -281,10 +340,8 @@
:style radio
:selected ,(not (member (match-string group) keywords))]))))
-(defvar org-mouse-context-menu-function nil)
-(make-variable-buffer-local 'org-mouse-context-menu-function)
-
(defun org-mouse-show-headlines ()
+ "Change the visibility of the current org buffer to only show headlines."
(interactive)
(let ((this-command 'org-cycle)
(last-command 'org-cycle)
@@ -293,35 +350,40 @@
(org-cycle '(4))))
(defun org-mouse-show-overview ()
+ "Change visibility of current org buffer to first-level headlines only."
(interactive)
(let ((org-cycle-global-status nil))
(org-cycle '(4))))
(defun org-mouse-set-priority (priority)
+ "Set the priority of the current headline to PRIORITY."
(flet ((read-char-exclusive () priority))
(org-priority)))
(defvar org-mouse-priority-regexp "\\[#\\([A-Z]\\)\\]"
- "Regular expression matching the priority indicator. Differs from `org-priority-regexp' in that it doesn't contain the leading '.*?'.")
-
+ "Regular expression matching the priority indicator.
+Differs from `org-priority-regexp' in that it doesn't contain the
+leading '.*?'.")
(defun org-mouse-get-priority (&optional default)
+ "Return the priority of the current headline.
+DEFAULT is returned if no priority is given in the headline."
(save-excursion
(if (org-mouse-re-search-line org-mouse-priority-regexp)
(match-string 1)
(when default (char-to-string org-default-priority)))))
-(defun org-mouse-at-link ()
- (and (eq (get-text-property (point) 'face) 'org-link)
- (save-excursion
- (goto-char (previous-single-property-change (point) 'face))
- (or (looking-at org-bracket-link-regexp)
- (looking-at org-angle-link-re)
- (looking-at org-plain-link-re)))))
+;; (defun org-mouse-at-link ()
+;; (and (eq (get-text-property (point) 'face) 'org-link)
+;; (save-excursion
+;; (goto-char (previous-single-property-change (point) 'face))
+;; (or (looking-at org-bracket-link-regexp)
+;; (looking-at org-angle-link-re)
+;; (looking-at org-plain-link-re)))))
(defun org-mouse-delete-timestamp ()
- "Deletes the current timestamp as well as the preceding
+ "Deletes the current timestamp as well as the preceding keyword.
SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(when (or (org-at-date-range-p) (org-at-timestamp-p))
(replace-match "") ; delete the timestamp
@@ -338,7 +400,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(when (looking-at regexp)
(> (match-end 0) point))))))
-
(defun org-mouse-priority-list ()
(loop for priority from ?A to org-lowest-priority
collect (char-to-string priority)))
@@ -414,9 +475,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
:style 'toggle
:selected (and (member name options) t)))))
-
-
-
(defun org-mouse-clip-text (text maxlength)
(if (> (length text) maxlength)
(concat (substring text 0 (- maxlength 3)) "...")
@@ -471,7 +529,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(nth 2 entry)))
(t "Agenda Command '%s'"))
30))))
-;; )
"--"
["Delete Blank Lines" delete-blank-lines
:visible (org-mouse-empty-line)]
@@ -507,7 +564,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(defun org-mouse-insert-item (text)
(case (org-mouse-line-position)
- (:begin ; insert before
+ (:beginning ; insert before
(beginning-of-line)
(looking-at "[ \t]*")
(open-line 1)
@@ -529,8 +586,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(insert text)
(beginning-of-line))
-
-
(defadvice dnd-insert-text (around org-mouse-dnd-insert-text activate)
(if (eq major-mode 'org-mode)
(org-mouse-insert-item text)
@@ -567,7 +622,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(delete-horizontal-space)
(insert-for-yank (concat " [[" (current-kill 0) "]] ")))
-
(defun org-mouse-context-menu (&optional event)
(let ((stamp-prefixes (list org-deadline-string org-scheduled-string))
(contextlist (org-context)))
@@ -640,7 +694,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
((org-mouse-looking-at org-mouse-priority-regexp "[]A-Z#") ; priority
(popup-menu `(nil ,@(org-mouse-keyword-replace-menu
(org-mouse-priority-list) 1 "Priority %s" t))))
- ((org-mouse-at-link)
+ ((get-context :link)
(popup-menu
'(nil
["Open" org-open-at-point t]
@@ -800,8 +854,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
))))
(t
(org-mouse-popup-global-menu))))))
-
-
;; (defun org-mouse-at-regexp (regexp)
;; (save-excursion
@@ -936,9 +988,9 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(eq minlevel (- (match-end 1) (match-beginning 1))))
(replace-match replace-text))
(forward-line))))
-
-
-
+
+(defvar _cmd) ;dynamically scoped from `org-with-remote-undo'.
+
(defun org-mouse-do-remotely (command)
; (org-agenda-check-no-diary)
(when (get-text-property (point) 'org-marker)
@@ -1055,4 +1107,3 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(:right (org-agenda-later 1)))))))
(provide 'org-mouse)
- \ No newline at end of file
diff --git a/org-publish.el b/org-publish.el
index cdfc673..fb21e8e 100644
--- a/org-publish.el
+++ b/org-publish.el
@@ -6,11 +6,9 @@
;; Keywords: hypermedia, outlines
;; Version: 1.80
-;; $Id: org-publish.el,v 1.80 2007/03/22 02:31:03 dto Exp dto $
-
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
@@ -440,20 +438,6 @@ nil if not found."
;;;; Pluggable publishing back-end functions
-
-(defun org-publish-org-to-html (plist filename)
- "Publish an org file to HTML.
-PLIST is the property list for the given project.
-FILENAME is the filename of the org file to be published."
- (require 'org)
- (let* ((arg (plist-get plist :headline-levels)))
- (progn
- (find-file filename)
- (org-export-as-html arg nil plist)
- ;; get rid of HTML buffer
- (kill-buffer (current-buffer)))))
-
-
(defun org-publish-org-to-latex (plist filename)
"Publish an org file to LaTeX."
(org-publish-org-to "latex" plist filename))
@@ -619,4 +603,6 @@ With prefix argument, force publish all files."
(provide 'org-publish)
+
+;; arch-tag: 72807f3c-8af0-4a6b-8dca-c3376eb25adb
;;; org-publish.el ends here
diff --git a/org.el b/org.el
index c0c84b2..4f0fe39 100644
--- a/org.el
+++ b/org.el
@@ -2,10 +2,10 @@
;; Carstens outline-mode for keeping track of everything.
;; Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
;;
-;; Author: Carsten Dominik <dominik at science dot uva dot nl>
+;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
-;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 5.07a
+;; Homepage: http://orgmode.org
+;; Version: 5.10a
;;
;; This file is part of GNU Emacs.
;;
@@ -49,7 +49,7 @@
;; ---------------------------
;; See the corresponding sections in the manual at
;;
-;; http://staff.science.uva.nl/~dominik/Tools/org/org.html#Installation
+;; http://orgmode.org/org.html#Installation
;;
;; Documentation
;; -------------
@@ -60,7 +60,7 @@
;; in the etc/ directory of Emacs 22.
;;
;; A list of recent changes can be found at
-;; http://www.astro.uva.nl/~dominik/Tools/org/Changes
+;; http://orgmode.org/Changes.html
;;
;;; Code:
@@ -83,7 +83,7 @@
;;; Version
-(defconst org-version "5.07a"
+(defconst org-version "5.10a"
"The version number of the file org.el.")
(defun org-version ()
(interactive)
@@ -109,6 +109,8 @@
(save-match-data
(while (string-match "\\[:alnum:\\]" ss)
(setq ss (replace-match "a-zA-Z0-9" t t ss)))
+ (while (string-match "\\[:alpha:\\]" ss)
+ (setq ss (replace-match "a-zA-Z" t t ss)))
ss))
s))
@@ -1370,7 +1372,7 @@ You can set this on a per-template basis with the variable
(const :tag "Default from remember-data-file" nil)
file))
-(defcustom org-remember-store-without-prompt nil
+(defcustom org-remember-store-without-prompt t
"Non-nil means, `C-c C-c' stores remember note without further promts.
In this case, you need `C-u C-c C-c' to get the prompts for
note file and headline.
@@ -1508,8 +1510,6 @@ taken from the (otherwise obsolete) variable `org-todo-interpretation'."
(defvar org-todo-keywords-1 nil)
(make-variable-buffer-local 'org-todo-keywords-1)
-(defvar org-todo-tag-alist nil)
-(make-variable-buffer-local 'org-todo-tag-alist)
(defvar org-todo-keywords-for-agenda nil)
(defvar org-done-keywords-for-agenda nil)
(defvar org-not-done-keywords nil)
@@ -1520,8 +1520,14 @@ taken from the (otherwise obsolete) variable `org-todo-interpretation'."
(make-variable-buffer-local 'org-todo-heads)
(defvar org-todo-sets nil)
(make-variable-buffer-local 'org-todo-sets)
+(defvar org-todo-log-states nil)
+(make-variable-buffer-local 'org-todo-log-states)
(defvar org-todo-kwd-alist nil)
(make-variable-buffer-local 'org-todo-kwd-alist)
+(defvar org-todo-key-alist nil)
+(make-variable-buffer-local 'org-todo-key-alist)
+(defvar org-todo-key-trigger nil)
+(make-variable-buffer-local 'org-todo-key-trigger)
(defcustom org-todo-interpretation 'sequence
"Controls how TODO keywords are interpreted.
@@ -1534,6 +1540,30 @@ more information."
:type '(choice (const sequence)
(const type)))
+(defcustom org-use-fast-todo-selection 'prefix
+ "Non-nil means, use the fast todo selection scheme with C-c C-t.
+This variable describes if and under what circumstances the cycling
+mechanism for TODO keywords will be replaced by a single-key, direct
+selection scheme.
+
+When nil, fast selection is never used.
+
+When the symbol `prefix', it will be used when `org-todo' is called with
+a prefix argument, i.e. `C-u C-c C-t' in an Org-mode buffer, and `C-u t'
+in an agenda buffer.
+
+When t, fast selection is used by default. In this case, the prefix
+argument forces cycling instead.
+
+In all cases, the special interface is only used if access keys have actually
+been assigned by the user, i.e. if keywords in the configuration are followed
+by a letter in parenthesis, like TODO(t)."
+ :group 'org-todo
+ :type '(choice
+ (const :tag "Never" nil)
+ (const :tag "By default" t)
+ (const :tag "Only with C-u C-c C-t" prefix)))
+
(defcustom org-after-todo-state-change-hook nil
"Hook which is run after the state of a TODO item was changed.
The new state (a string with a TODO keyword, or nil) is available in the
@@ -1543,8 +1573,8 @@ Lisp variable `state'."
(defcustom org-log-done nil
"When set, insert a (non-active) time stamp when TODO entry is marked DONE.
-When the state of an entry is changed from nothing to TODO, remove a previous
-closing date.
+When the state of an entry is changed from nothing or a DONE state to
+a not-done TODO state, remove a previous closing date.
This can also be a list of symbols indicating under which conditions
the time stamp recording the action should be annotated with a short note.
@@ -1651,6 +1681,13 @@ This is the priority an item get if no explicit priority is given."
:group 'org-priorities
:type 'character)
+(defcustom org-priority-start-cycle-with-default t
+ "Non-nil means, start with default priority when starting to cycle.
+When this is nil, the first step in the cycle will be (depending on the
+command used) one higher or lower that the default priority."
+ :group 'org-priorities
+ :type 'boolean)
+
(defgroup org-time nil
"Options concerning time stamps and deadlines in Org-mode."
:tag "Org Time"
@@ -1713,9 +1750,11 @@ end of the second format."
(concat "[" (substring f 1 -1) "]")
f)))
-(defcustom org-deadline-warning-days 30
+(defcustom org-deadline-warning-days 14
"No. of days before expiration during which a deadline becomes active.
-This variable governs the display in sparse trees and in the agenda."
+This variable governs the display in sparse trees and in the agenda.
+When negative, it means use this number (the absolute value of it)
+even if a deadline has a different individual lead time specified."
:group 'org-time
:type 'number)
@@ -1727,6 +1766,12 @@ When nil, only the minibuffer will be available."
:group 'org-time
:type 'boolean)
+(defcustom org-edit-timestamp-down-means-later nil
+ "Non-nil means, S-down will increase the time in a time stamp.
+When nil, S-up will increase."
+ :group 'org-time
+ :type 'boolean)
+
(defcustom org-calendar-follow-timestamp-change t
"Non-nil means, make the calendar window follow timestamp changes.
When a timestamp is modified and the calendar window is visible, it will be
@@ -1743,9 +1788,10 @@ moved to the new date."
"List of tags allowed in Org-mode files.
When this list is nil, Org-mode will base TAG input on what is already in the
buffer.
-The value of this variable is an alist, the car may be (and should) be a
-character that is used to select that tag through the fast-tag-selection
-interface. See the manual for details."
+The value of this variable is an alist, the car of each entry must be a
+keyword as a string, the cdr may be a character that is used to select
+that tag through the fast-tag-selection interface.
+See the manual for details."
:group 'org-tags
:type '(repeat
(choice
@@ -1781,6 +1827,10 @@ displaying the tags menu is not even shown, until you press C-c again."
(const :tag "Yes" t)
(const :tag "Expert" expert)))
+(defvar org-fast-tag-selection-include-todo nil
+ "Non-nil means, fast tags selection interface will also offer TODO states.
+This is an undocumented feature, you should not rely on it.")
+
(defcustom org-tags-column 48
"The column to which tags should be indented in a headline.
If this number is positive, it specifies the column. If it is negative,
@@ -1824,6 +1874,8 @@ make sure all corresponding TODO items find their way into the list."
"History of minibuffer reads for tags.")
(defvar org-last-tags-completion-table nil
"The last used completion table for tags.")
+(defvar org-after-tags-change-hook nil
+ "Hook that is run after the tags in a line have changed.")
(defgroup org-properties nil
"Options concerning properties in Org-mode."
@@ -2271,13 +2323,25 @@ When nil, only the days which actually have entries are shown."
:group 'org-agenda-daily/weekly
:type 'boolean)
-(defcustom org-agenda-date-format "%A %d %B %Y"
+(defcustom org-agenda-format-date 'org-agenda-format-date-aligned
"Format string for displaying dates in the agenda.
Used by the daily/weekly agenda and by the timeline. This should be
-a format string understood by `format-time-string'.
-FIXME: Not used currently, because of timezone problem."
+a format string understood by `format-time-string', or a function returning
+the formatted date as a string. The function must take a single argument,
+a calendar-style date list like (month day year)."
:group 'org-agenda-daily/weekly
- :type 'string)
+ :type '(choice
+ (string :tag "Format string")
+ (function :tag "Function")))
+
+(defun org-agenda-format-date-aligned (date)
+ "Format a date string for display in the daily/weekly agenda, or timeline.
+This function makes sure that dates are aligned for easy reading."
+ (format "%-9s %2d %s %4d"
+ (calendar-day-name date)
+ (extract-calendar-day date)
+ (calendar-month-name (extract-calendar-month date))
+ (extract-calendar-year date)))
(defcustom org-agenda-include-diary nil
"If non-nil, include in the agenda entries from the Emacs Calendar's diary."
@@ -2601,8 +2665,8 @@ directory where the exported Org-mode files lives."
("cs" "Autor" "Datum" "Obsah")
("da" "Ophavsmand" "Dato" "Indhold")
("de" "Autor" "Datum" "Inhaltsverzeichnis")
- ("es" "Autor" "Fecha" "\xccndice")
- ("fr" "Auteur" "Date" "Table des Mati\xe8res")
+ ("es" "Autor" "Fecha" "\xcdndice")
+ ("fr" "Auteur" "Date" "Table des mati\xe8res")
("it" "Autore" "Data" "Indice")
("nl" "Auteur" "Datum" "Inhoudsopgave")
("nn" "Forfattar" "Dato" "Innhold") ;; nn = Norsk (nynorsk)
@@ -2923,6 +2987,11 @@ Org-mode file."
:group 'org-export-html
:type 'coding-system)
+(defcustom org-export-html-extension "html"
+ "The extension for exported HTML files."
+ :group 'org-export-html
+ :type 'string)
+
(defcustom org-export-html-style
"<style type=\"text/css\">
html {
@@ -3075,6 +3144,17 @@ These are entries like in the diary, but directly in an Org-mode file."
:group 'org-export-icalendar
:type 'boolean)
+(defcustom org-icalendar-include-body 100
+ "Amount of text below headline to be included in iCalendar export.
+This is a number of characters that should maximally be included.
+Properties, scheduling and clocking lines will always be removed.
+The text will be inserted into the DESCRIPTION field."
+ :group 'org-export-icalendar
+ :type '(choice
+ (const :tag "Nothing" nil)
+ (const :tag "Everything" t)
+ (integer :tag "Max characters")))
+
(defcustom org-icalendar-combined-name "OrgMode"
"Calendar name for the combined iCalendar representing all agenda files."
:group 'org-export-icalendar
@@ -3226,26 +3306,36 @@ Use customize to modify this, or restart Emacs after changing it."
;; FIXME: convert that into a macro? Not critical, because this
;; is only executed a few times at load time.
-(defun org-compatible-face (specs)
+(defun org-compatible-face (inherits specs)
"Make a compatible face specification.
+If INHERITS is an existing face and if the Emacs version supports it,
+just inherit the face. If not, use SPECS to define the face.
XEmacs and Emacs 21 do not know about the `min-colors' attribute.
For them we convert a (min-colors 8) entry to a `tty' entry and move it
to the top of the list. The `min-colors' attribute will be removed from
any other entries, and any resulting duplicates will be removed entirely."
- (if (or (featurep 'xemacs) (< emacs-major-version 22))
- (let (r e a)
- (while (setq e (pop specs))
- (cond
- ((memq (car e) '(t default)) (push e r))
- ((setq a (member '(min-colors 8) (car e)))
- (nconc r (list (cons (cons '(type tty) (delq (car a) (car e)))
- (cdr e)))))
- ((setq a (assq 'min-colors (car e)))
- (setq e (cons (delq a (car e)) (cdr e)))
- (or (assoc (car e) r) (push e r)))
- (t (or (assoc (car e) r) (push e r)))))
- (nreverse r))
- specs))
+ (cond
+ ((and inherits (facep inherits)
+ (not (featurep 'xemacs)) (> emacs-major-version 22))
+ ;; In Emacs 23, we use inheritance where possible.
+ ;; We only do this in Emacs 23, because only there the outline
+ ;; faces have been changed to the original org-mode-level-faces.
+ (list (list t :inherit inherits)))
+ ((or (featurep 'xemacs) (< emacs-major-version 22))
+ ;; These do not understand the `min-colors' attribute.
+ (let (r e a)
+ (while (setq e (pop specs))
+ (cond
+ ((memq (car e) '(t default)) (push e r))
+ ((setq a (member '(min-colors 8) (car e)))
+ (nconc r (list (cons (cons '(type tty) (delq (car a) (car e)))
+ (cdr e)))))
+ ((setq a (assq 'min-colors (car e)))
+ (setq e (cons (delq a (car e)) (cdr e)))
+ (or (assoc (car e) r) (push e r)))
+ (t (or (assoc (car e) r) (push e r)))))
+ (nreverse r)))
+ (t specs)))
(defface org-hide
'((((background light)) (:foreground "white"))
@@ -3257,6 +3347,7 @@ color of the frame."
(defface org-level-1 ;; font-lock-function-name-face
(org-compatible-face
+ 'outline-1
'((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
(((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
(((class color) (min-colors 16) (background light)) (:foreground "Blue"))
@@ -3268,6 +3359,7 @@ color of the frame."
(defface org-level-2 ;; font-lock-variable-name-face
(org-compatible-face
+ 'outline-2
'((((class color) (min-colors 16) (background light)) (:foreground "DarkGoldenrod"))
(((class color) (min-colors 16) (background dark)) (:foreground "LightGoldenrod"))
(((class color) (min-colors 8) (background light)) (:foreground "yellow"))
@@ -3278,6 +3370,7 @@ color of the frame."
(defface org-level-3 ;; font-lock-keyword-face
(org-compatible-face
+ 'outline-3
'((((class color) (min-colors 88) (background light)) (:foreground "Purple"))
(((class color) (min-colors 88) (background dark)) (:foreground "Cyan1"))
(((class color) (min-colors 16) (background light)) (:foreground "Purple"))
@@ -3290,6 +3383,7 @@ color of the frame."
(defface org-level-4 ;; font-lock-comment-face
(org-compatible-face
+ 'outline-4
'((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
(((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
(((class color) (min-colors 16) (background light)) (:foreground "red"))
@@ -3302,6 +3396,7 @@ color of the frame."
(defface org-level-5 ;; font-lock-type-face
(org-compatible-face
+ 'outline-5
'((((class color) (min-colors 16) (background light)) (:foreground "ForestGreen"))
(((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen"))
(((class color) (min-colors 8)) (:foreground "green"))))
@@ -3310,6 +3405,7 @@ color of the frame."
(defface org-level-6 ;; font-lock-constant-face
(org-compatible-face
+ 'outline-6
'((((class color) (min-colors 16) (background light)) (:foreground "CadetBlue"))
(((class color) (min-colors 16) (background dark)) (:foreground "Aquamarine"))
(((class color) (min-colors 8)) (:foreground "magenta"))))
@@ -3318,6 +3414,7 @@ color of the frame."
(defface org-level-7 ;; font-lock-builtin-face
(org-compatible-face
+ 'outline-7
'((((class color) (min-colors 16) (background light)) (:foreground "Orchid"))
(((class color) (min-colors 16) (background dark)) (:foreground "LightSteelBlue"))
(((class color) (min-colors 8)) (:foreground "blue"))))
@@ -3326,6 +3423,7 @@ color of the frame."
(defface org-level-8 ;; font-lock-string-face
(org-compatible-face
+ 'outline-8
'((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
(((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
(((class color) (min-colors 8)) (:foreground "green"))))
@@ -3334,6 +3432,7 @@ color of the frame."
(defface org-special-keyword ;; font-lock-string-face
(org-compatible-face
+ nil
'((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
(((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
(t (:italic t))))
@@ -3342,6 +3441,7 @@ color of the frame."
(defface org-drawer ;; font-lock-function-name-face
(org-compatible-face
+ nil
'((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
(((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
(((class color) (min-colors 16) (background light)) (:foreground "Blue"))
@@ -3357,6 +3457,7 @@ color of the frame."
(defface org-column
(org-compatible-face
+ nil
'((((class color) (min-colors 16) (background light))
(:background "grey90"))
(((class color) (min-colors 16) (background dark))
@@ -3373,8 +3474,9 @@ color of the frame."
:height (face-attribute 'default :height)
:family (face-attribute 'default :family)))
-(defface org-warning ;; font-lock-warning-face
+(defface org-warning
(org-compatible-face
+ 'font-lock-warning-face
'((((class color) (min-colors 16) (background light)) (:foreground "Red1" :bold t))
(((class color) (min-colors 16) (background dark)) (:foreground "Pink" :bold t))
(((class color) (min-colors 8) (background light)) (:foreground "red" :bold t))
@@ -3385,6 +3487,7 @@ color of the frame."
(defface org-archived ; similar to shadow
(org-compatible-face
+ 'shadow
'((((class color grayscale) (min-colors 88) (background light))
(:foreground "grey50"))
(((class color grayscale) (min-colors 88) (background dark))
@@ -3429,8 +3532,9 @@ color of the frame."
"Face for tags."
:group 'org-faces)
-(defface org-todo ;; font-lock-warning-face
+(defface org-todo ; font-lock-warning-face
(org-compatible-face
+ nil
'((((class color) (min-colors 16) (background light)) (:foreground "Red1" :bold t))
(((class color) (min-colors 16) (background dark)) (:foreground "Pink" :bold t))
(((class color) (min-colors 8) (background light)) (:foreground "red" :bold t))
@@ -3441,6 +3545,7 @@ color of the frame."
(defface org-done ;; font-lock-type-face
(org-compatible-face
+ nil
'((((class color) (min-colors 16) (background light)) (:foreground "ForestGreen" :bold t))
(((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen" :bold t))
(((class color) (min-colors 8)) (:foreground "green"))
@@ -3450,6 +3555,7 @@ color of the frame."
(defface org-headline-done ;; font-lock-string-face
(org-compatible-face
+ nil
'((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
(((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
(((class color) (min-colors 8) (background light)) (:bold nil))))
@@ -3472,6 +3578,7 @@ list of attributes, like (:foreground \"blue\" :weight bold :underline t)."
(defface org-table ;; font-lock-function-name-face
(org-compatible-face
+ nil
'((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
(((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
(((class color) (min-colors 16) (background light)) (:foreground "Blue"))
@@ -3483,6 +3590,7 @@ list of attributes, like (:foreground \"blue\" :weight bold :underline t)."
(defface org-formula
(org-compatible-face
+ nil
'((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
(((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
(((class color) (min-colors 8) (background light)) (:foreground "red"))
@@ -3493,6 +3601,7 @@ list of attributes, like (:foreground \"blue\" :weight bold :underline t)."
(defface org-code
(org-compatible-face
+ nil
'((((class color grayscale) (min-colors 88) (background light))
(:foreground "grey50"))
(((class color grayscale) (min-colors 88) (background dark))
@@ -3507,6 +3616,7 @@ list of attributes, like (:foreground \"blue\" :weight bold :underline t)."
(defface org-agenda-structure ;; font-lock-function-name-face
(org-compatible-face
+ nil
'((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
(((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
(((class color) (min-colors 16) (background light)) (:foreground "Blue"))
@@ -3518,6 +3628,7 @@ list of attributes, like (:foreground \"blue\" :weight bold :underline t)."
(defface org-scheduled-today
(org-compatible-face
+ nil
'((((class color) (min-colors 88) (background light)) (:foreground "DarkGreen"))
(((class color) (min-colors 88) (background dark)) (:foreground "PaleGreen"))
(((class color) (min-colors 8)) (:foreground "green"))
@@ -3527,6 +3638,7 @@ list of attributes, like (:foreground \"blue\" :weight bold :underline t)."
(defface org-scheduled-previously
(org-compatible-face
+ nil
'((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
(((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
(((class color) (min-colors 8) (background light)) (:foreground "red"))
@@ -3537,6 +3649,7 @@ list of attributes, like (:foreground \"blue\" :weight bold :underline t)."
(defface org-upcoming-deadline
(org-compatible-face
+ nil
'((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
(((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
(((class color) (min-colors 8) (background light)) (:foreground "red"))
@@ -3572,6 +3685,7 @@ month and 365.24 days for a year)."
(defface org-time-grid ;; font-lock-variable-name-face
(org-compatible-face
+ nil
'((((class color) (min-colors 16) (background light)) (:foreground "DarkGoldenrod"))
(((class color) (min-colors 16) (background dark)) (:foreground "LightGoldenrod"))
(((class color) (min-colors 8)) (:foreground "yellow" :weight light))))
@@ -3730,18 +3844,21 @@ means to push this value onto the list in the variable.")
"Precompute regular expressions for current buffer."
(when (org-mode-p)
(org-set-local 'org-todo-kwd-alist nil)
+ (org-set-local 'org-todo-key-alist nil)
+ (org-set-local 'org-todo-key-trigger nil)
(org-set-local 'org-todo-keywords-1 nil)
- (org-set-local 'org-todo-tag-alist nil)
(org-set-local 'org-done-keywords nil)
(org-set-local 'org-todo-heads nil)
(org-set-local 'org-todo-sets nil)
+ (org-set-local 'org-todo-log-states nil)
(let ((re (org-make-options-regexp
- '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO" "COLUMNS"
+ '("CATEGORY" "SEQ_TODO" "TYP_TODO" "TODO" "COLUMNS"
"STARTUP" "ARCHIVE" "TAGS" "LINK" "PRIORITIES"
"CONSTANTS" "PROPERTY")))
(splitre "[ \t]+")
kwds kws0 kwsa key value cat arch tags const links hw dws
- tail sep kws1 prio props)
+ tail sep kws1 prio props
+ ex log note)
(save-excursion
(save-restriction
(widen)
@@ -3753,7 +3870,7 @@ means to push this value onto the list in the variable.")
(if (string-match "[ \t]+$" value)
(setq value (replace-match "" t t value)))
(setq cat (intern value)))
- ((equal key "SEQ_TODO")
+ ((member key '("SEQ_TODO" "TODO"))
(push (cons 'sequence (org-split-string value splitre)) kwds))
((equal key "TYP_TODO")
(push (cons 'type (org-split-string value splitre)) kwds))
@@ -3811,32 +3928,41 @@ means to push this value onto the list in the variable.")
(default-value 'org-todo-keywords)))))
(setq kwds (reverse kwds)))
(setq kwds (nreverse kwds))
- (let (inter kws)
+ (let (inter kws kw)
(while (setq kws (pop kwds))
(setq inter (pop kws) sep (member "|" kws)
kws0 (delete "|" (copy-sequence kws))
kwsa nil
- kws1 (mapcar (lambda (x)
- (if (string-match "\\(.*\\)(\\(.\\))" x)
- (progn
- (push (cons (match-string 1 x)
- (string-to-char
- (match-string 2 x))) kwsa)
- (match-string 1 x))
- x))
- kws0)
- kwsa (if kwsa (append '((:startgroup)) kwsa '((:endgroup))))
+ kws1 (mapcar
+ (lambda (x)
+ (if (string-match "^\\(.*?\\)\\(?:(\\(..?\\))\\)?$" x)
+ (progn
+ (setq kw (match-string 1 x)
+ ex (and (match-end 2) (match-string 2 x))
+ log (and ex (string-match "@" ex))
+ key (and ex (substring ex 0 1)))
+ (if (equal key "@") (setq key nil))
+ (push (cons kw (and key (string-to-char key))) kwsa)
+ (and log (push kw org-todo-log-states))
+ kw)
+ (error "Invalid TODO keyword %s" x)))
+ kws0)
+ kwsa (if kwsa (append '((:startgroup))
+ (nreverse kwsa)
+ '((:endgroup))))
hw (car kws1)
dws (if sep (org-remove-keyword-keys (cdr sep)) (last kws1))
tail (list inter hw (car dws) (org-last dws)))
(add-to-list 'org-todo-heads hw 'append)
(push kws1 org-todo-sets)
(setq org-done-keywords (append org-done-keywords dws nil))
- (setq org-todo-tag-alist (append org-todo-tag-alist kwsa))
+ (setq org-todo-key-alist (append org-todo-key-alist kwsa))
(mapc (lambda (x) (push (cons x tail) org-todo-kwd-alist)) kws1)
(setq org-todo-keywords-1 (append org-todo-keywords-1 kws1 nil)))
(setq org-todo-sets (nreverse org-todo-sets)
- org-todo-kwd-alist (nreverse org-todo-kwd-alist)))
+ org-todo-kwd-alist (nreverse org-todo-kwd-alist)
+ org-todo-key-trigger (delq nil (mapcar 'cdr org-todo-key-alist))
+ org-todo-key-alist (org-assign-fast-keys org-todo-key-alist)))
;; Process the constants
(when const
(let (e cst)
@@ -3938,7 +4064,7 @@ means to push this value onto the list in the variable.")
(defun org-remove-keyword-keys (list)
(mapcar (lambda (x)
- (if (string-match "(.)$" x)
+ (if (string-match "(..?)$" x)
(substring x 0 (match-beginning 0))
x))
list))
@@ -4014,7 +4140,6 @@ This is for getting out of special buffers like remember.")
(defvar org-org-menu)
(defvar org-tbl-menu)
(defvar org-agenda-keymap)
-(defvar org-category-table)
;;;; Emacs/XEmacs compatibility
@@ -4147,7 +4272,7 @@ This variable is set by `org-before-change-function'.
(defvar org-inhibit-startup nil) ; Dynamically-scoped param.
(defvar org-agenda-keep-modes nil) ; Dynamically-scoped param.
(defvar org-table-buffer-is-an nil)
-
+(defconst org-outline-regexp "\\*+ ")
;;;###autoload
(define-derived-mode org-mode outline-mode "Org"
@@ -4190,8 +4315,8 @@ The following commands are available:
(org-add-to-invisibility-spec '(org-cwidth))
(when (featurep 'xemacs)
(org-set-local 'line-move-ignore-invisible t))
- (org-set-local 'outline-regexp "\\*+ ")
- (setq outline-level 'org-outline-level)
+ (org-set-local 'outline-regexp org-outline-regexp)
+ (org-set-local 'outline-level 'org-outline-level)
(when (and org-ellipsis
(fboundp 'set-display-table-slot) (boundp 'buffer-display-table)
(fboundp 'make-glyph-code))
@@ -4642,7 +4767,7 @@ between words."
(defvar org-font-lock-keywords nil)
-(defconst org-property-re "^[ \t]*\\(:\\([a-zA-Z_0-9]+\\):\\)[ \t]*\\(\\S-.*\\)"
+(defconst org-property-re (org-re "^[ \t]*\\(:\\([[:alnum:]_]+\\):\\)[ \t]*\\(\\S-.*\\)")
"Regular expression matching a property line.")
(defun org-set-font-lock-defaults ()
@@ -4735,7 +4860,6 @@ between words."
((eq n 2) org-f)
(t (if org-level-color-stars-only nil org-f))))
-
(defun org-get-todo-face (kwd)
"Get the right face for a TODO keyword KWD.
If KWD is a number, get the corresponding match group."
@@ -5071,7 +5195,7 @@ Optional argument N means, put the headline into the Nth line of the window."
(defvar org-goto-marker nil)
(defvar org-goto-map
(let ((map (make-sparse-keymap)))
- (let ((cmds '(isearch-forward isearch-backward)) cmd)
+ (let ((cmds '(isearch-forward isearch-backward kill-ring-save set-mark-command mouse-drag-region universal-argument org-occur)) cmd)
(while (setq cmd (pop cmds))
(substitute-key-definition cmd cmd map global-map)))
(org-defkey map "\C-m" 'org-goto-ret)
@@ -5088,6 +5212,7 @@ Optional argument N means, put the headline into the Nth line of the window."
(org-defkey map "f" 'outline-forward-same-level)
(org-defkey map "b" 'outline-backward-same-level)
(org-defkey map "u" 'outline-up-heading)
+ (org-defkey map "/" 'org-occur)
(org-defkey map "\C-c\C-n" 'outline-next-visible-heading)
(org-defkey map "\C-c\C-p" 'outline-previous-visible-heading)
(org-defkey map "\C-c\C-f" 'outline-forward-same-level)
@@ -5099,55 +5224,63 @@ Optional argument N means, put the headline into the Nth line of the window."
map))
(defconst org-goto-help
-"Select a location to jump to, press RET
-\[Up]/[Down]=next/prev headline TAB=cycle visibility RET=select [Q]uit")
+"Browse copy of buffer to find location or copy text.
+RET=jump to location [Q]uit and return to previous location
+\[Up]/[Down]=next/prev headline TAB=cycle visibility [/] org-occur"
+)
(defun org-goto ()
- "Go to a different location of the document, keeping current visibility.
+ "Look up a different location in the current file, keeping current visibility.
-When you want to go to a different location in a document, the fastest way
-is often to fold the entire buffer and then dive into the tree. This
-method has the disadvantage, that the previous location will be folded,
+When you want look-up or go to a different location in a document, the
+fastest way is often to fold the entire buffer and then dive into the tree.
+This method has the disadvantage, that the previous location will be folded,
which may not be what you want.
-This command works around this by showing a copy of the current buffer in
-overview mode. You can dive into the tree in that copy, to find the
-location you want to reach. When pressing RET, the command returns to the
-original buffer in which the visibility is still unchanged. It then jumps
-to the new location, making it and the headline hierarchy above it visible."
+This command works around this by showing a copy of the current buffer
+in an indirect buffer, in overview mode. You can dive into the tree in
+that copy, use org-occur and incremental search to find a location.
+When pressing RET or `Q', the command returns to the original buffer in
+which the visibility is still unchanged. After RET is will also jump to
+the location selected in the indirect buffer and expose the
+the headline hierarchy above."
(interactive)
(let* ((org-goto-start-pos (point))
(selected-point
- (org-get-location (current-buffer) org-goto-help)))
+ (car (org-get-location (current-buffer) org-goto-help))))
(if selected-point
(progn
(org-mark-ring-push org-goto-start-pos)
(goto-char selected-point)
(if (or (org-invisible-p) (org-invisible-p2))
(org-show-context 'org-goto)))
- (error "Quit"))))
+ (message "Quit"))))
-(defvar org-selected-point nil) ; dynamically scoped parameter
+(defvar org-goto-selected-point nil) ; dynamically scoped parameter
+(defvar org-goto-exit-command nil) ; dynamically scoped parameter
(defun org-get-location (buf help)
"Let the user select a location in the Org-mode buffer BUF.
This function uses a recursive edit. It returns the selected position
or nil."
- (let (org-selected-point)
+ (let (org-goto-selected-point org-goto-exit-command)
(save-excursion
(save-window-excursion
(delete-other-windows)
- (switch-to-buffer (get-buffer-create "*org-goto*"))
+ (and (get-buffer "*org-goto*") (kill-buffer "*org-goto*"))
+ (switch-to-buffer
+ (condition-case nil
+ (make-indirect-buffer (current-buffer) "*org-goto*")
+ (error (make-indirect-buffer (current-buffer) "*org-goto*"))))
(with-output-to-temp-buffer "*Help*"
(princ help))
(shrink-window-if-larger-than-buffer (get-buffer-window "*Help*"))
(setq buffer-read-only nil)
- (erase-buffer)
- (insert-buffer-substring buf)
(let ((org-startup-truncated t)
- (org-startup-folded t)
+ (org-startup-folded nil)
(org-startup-align-all-tables nil))
- (org-mode))
+ (org-mode)
+ (org-overview))
(setq buffer-read-only t)
(if (and (boundp 'org-goto-start-pos)
(integer-or-marker-p org-goto-start-pos))
@@ -5161,21 +5294,24 @@ or nil."
(message "Select location and press RET")
;; now we make sure that during selection, ony very few keys work
;; and that it is impossible to switch to another window.
- (let ((gm (current-global-map))
- (overriding-local-map org-goto-map))
- (unwind-protect
- (progn
- (use-global-map org-goto-map)
- (recursive-edit))
- (use-global-map gm)))))
+; (let ((gm (current-global-map))
+; (overriding-local-map org-goto-map))
+; (unwind-protect
+; (progn
+; (use-global-map org-goto-map)
+; (recursive-edit))
+; (use-global-map gm)))
+ (use-local-map org-goto-map)
+ (recursive-edit)
+ ))
(kill-buffer "*org-goto*")
- org-selected-point))
+ (cons org-goto-selected-point org-goto-exit-command)))
(defun org-goto-ret (&optional arg)
"Finish `org-goto' by going to the new location."
(interactive "P")
- (setq org-selected-point (point)
- current-prefix-arg arg)
+ (setq org-goto-selected-point (point)
+ org-goto-exit-command 'return)
(throw 'exit nil))
(defun org-goto-left ()
@@ -5184,8 +5320,8 @@ or nil."
(if (org-on-heading-p)
(progn
(beginning-of-line 1)
- (setq org-selected-point (point)
- current-prefix-arg (- (match-end 0) (match-beginning 0)))
+ (setq org-goto-selected-point (point)
+ org-goto-exit-command 'left)
(throw 'exit nil))
(error "Not on a heading")))
@@ -5194,17 +5330,16 @@ or nil."
(interactive)
(if (org-on-heading-p)
(progn
- (outline-end-of-subtree)
- (or (eobp) (forward-char 1))
- (setq org-selected-point (point)
- current-prefix-arg (- (match-end 0) (match-beginning 0)))
+ (setq org-goto-selected-point (point)
+ org-goto-exit-command 'right)
(throw 'exit nil))
(error "Not on a heading")))
(defun org-goto-quit ()
"Finish `org-goto' without cursor motion."
(interactive)
- (setq org-selected-point nil)
+ (setq org-goto-selected-point nil)
+ (setq org-goto-exit-command 'quit)
(throw 'exit nil))
;;; Indirect buffer display of subtrees
@@ -5327,6 +5462,14 @@ the current headline."
(unless (= (point) pos) (just-one-space) (backward-delete-char 1))
(run-hooks 'org-insert-heading-hook)))))
+(defun org-insert-heading-after-current ()
+ "Insert a new heading with same level as current, after current subtree."
+ (interactive)
+ (org-back-to-heading)
+ (org-insert-heading)
+ (org-move-subtree-down)
+ (end-of-line 1))
+
(defun org-insert-todo-heading (arg)
"Insert a new heading with the same level and TODO state as current heading.
If the heading has no TODO state, or if the state is DONE, use the first
@@ -5693,33 +5836,26 @@ If optional TREE is given, use this text instead of the kill ring."
(func (if (> shift 0) 'org-demote 'org-promote))
(org-odd-levels-only nil)
beg end)
- ;; Remove the forces level indicator
+ ;; Remove the forced level indicator
(if force-level
(delete-region (point-at-bol) (point)))
- ;; Make sure we start at the beginning of an empty line
- (if (not (bolp)) (insert "\n"))
- (if (not (looking-at "[ \t]*$"))
- (progn (insert "\n") (backward-char 1)))
;; Paste
+ (beginning-of-line 1)
(setq beg (point))
- (if (string-match "[ \t\r\n]+\\'" txt)
- (setq txt (replace-match "\n" t t txt)))
(insert txt)
+ (unless (string-match "\n[ \t]*\\'" txt) (insert "\n"))
(setq end (point))
- (if (looking-at "[ \t\r\n]+")
- (replace-match "\n"))
(goto-char beg)
;; Shift if necessary
- (if (= shift 0)
- (message "Pasted at level %d, without shift" new-level)
+ (unless (= shift 0)
(save-restriction
(narrow-to-region beg end)
(while (not (= shift 0))
(org-map-region func (point-min) (point-max))
(setq shift (+ delta shift)))
- (goto-char (point-min))
- (message "Pasted at level %d, with shift by %d levels"
- new-level shift1)))
+ (goto-char (point-min))))
+ (when (interactive-p)
+ (message "Clipboard pasted as level %d subtree" new-level))
(if (and kill-ring
(eq org-subtree-clip (current-kill 0))
org-subtree-clip-folded)
@@ -5735,16 +5871,17 @@ which is OK for `org-paste-subtree'.
If optional TXT is given, check this string instead of the current kill."
(let* ((kill (or txt (and kill-ring (current-kill 0)) ""))
(start-level (and kill
- (string-match (concat "\\`" outline-regexp) kill)
- (- (match-end 0) (match-beginning 0))))
- (re (concat "^" outline-regexp))
+ (string-match (concat "\\`" org-outline-regexp) kill)
+ (- (match-end 0) (match-beginning 0) 1)))
+ (re (concat "^" org-outline-regexp))
(start 1))
(if (not start-level)
- nil ;; does not even start with a heading
+ (progn
+ nil) ;; does not even start with a heading
(catch 'exit
(while (setq start (string-match re kill (1+ start)))
- (if (< (- (match-end 0) (match-beginning 0)) start-level)
- (throw 'exit nil)))
+ (when (< (- (match-end 0) (match-beginning 0) 1) start-level)
+ (throw 'exit nil)))
t))))
(defun org-narrow-to-subtree ()
@@ -6356,6 +6493,7 @@ with something like \"1.\" or \"2)\"."
(goto-line line)
(move-to-column col)))
+;; FIXME: use ARG to select bullet type.
(defun org-fix-bullet-type (arg)
"Make sure all items in this list have the same bullet."
(interactive "p")
@@ -6451,13 +6589,13 @@ I.e. to the first item in this list."
(delete-region (point-at-bol) (point))
(or (eolp) (indent-to-column (+ ind1 delta)))
(beginning-of-line 2))))
+ (org-fix-bullet-type 1)
(org-maybe-renumber-ordered-list-safe)
(save-excursion
(beginning-of-line 0)
(condition-case nil (org-beginning-of-item) (error nil))
(org-maybe-renumber-ordered-list-safe)))
-
(defun org-item-indent-positions ()
"Assumes cursor in item line. FIXME"
(let* ((bolpos (point-at-bol))
@@ -6510,6 +6648,9 @@ I.e. to the first item in this list."
(defvar orgstruct-mode-map (make-sparse-keymap)
"Keymap for the minor `orgstruct-mode'.")
+(defvar org-local-vars nil
+ "List of local variables, for use by `orgstruct-mode'")
+
;;;###autoload
(define-minor-mode orgstruct-mode
"Toggle the minor more `orgstruct-mode'.
@@ -6541,14 +6682,28 @@ C-c C-c Set tags / toggle checkbox"
"Unconditionally turn on `orgstruct-mode'."
(orgstruct-mode 1))
+;;;###autoload
+(defun turn-on-orgstruct++ ()
+ "Unconditionally turn on `orgstruct-mode', and force org-mode indentations.
+In addition to setting orgstruct-mode, this also exports all indentation and
+autofilling variables from org-mode into the buffer. Note that turning
+off orgstruct-mode will *not* remove these additonal settings."
+ (orgstruct-mode 1)
+ (let (var val)
+ (mapc
+ (lambda (x)
+ (when (string-match
+ "^\\(paragraph-\\|auto-fill\\|fill-paragraph\\|adaptive-fill\\|indent-\\)"
+ (symbol-name (car x)))
+ (setq var (car x) val (nth 1 x))
+ (org-set-local var (if (eq (car-safe val) 'quote) (nth 1 val) val))))
+ org-local-vars)))
+
(defun orgstruct-error ()
"Error when there is no default binding for a structure key."
(interactive)
(error "This key is has no function outside structure elements"))
-(defvar org-local-vars nil
- "List of local variables, for use by `orgstruct-mode'")
-
(defun orgstruct-setup ()
"Setup orgstruct keymaps."
(let ((nfunc 0)
@@ -6698,14 +6853,18 @@ this heading."
(substring (cdr org-time-stamp-formats) 1 -1)
(current-time)))
afile heading buffer level newfile-p
- category todo priority ltags itags)
+ category todo priority ltags itags prop)
;; Try to find a local archive location
(save-excursion
(save-restriction
(widen)
- (if (or (re-search-backward re nil t) (re-search-forward re nil t))
- (setq org-archive-location (match-string 1)))))
+ (setq prop (org-entry-get nil "ARCHIVE" 'inherit))
+ (if (and prop (string-match "\\S-" prop))
+ (setq org-archive-location prop)
+ (if (or (re-search-backward re nil t)
+ (re-search-forward re nil t))
+ (setq org-archive-location (match-string 1))))))
(if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location)
(progn
@@ -6726,11 +6885,12 @@ this heading."
(save-excursion
(org-back-to-heading t)
;; Get context information that will be lost by moving the tree
+ (org-refresh-category-properties)
(setq category (org-get-category)
todo (and (looking-at org-todo-line-regexp)
- (match-string 2))
+ (match-string 2))
priority (org-get-priority (if (match-end 3) (match-string 3) ""))
- ltags (org-split-string (org-get-tags) ":")
+ ltags (org-get-tags)
itags (org-delete-all ltags (org-get-tags-at)))
(setq ltags (mapconcat 'identity ltags " ")
itags (mapconcat 'identity itags " "))
@@ -6814,6 +6974,35 @@ this heading."
(concat "under heading: " heading)
(concat "in file: " (abbreviate-file-name afile)))))))
+(defun org-refresh-category-properties ()
+ "Refresh category text properties in teh buffer."
+ (let ((def-cat (cond
+ ((null org-category)
+ (if buffer-file-name
+ (file-name-sans-extension
+ (file-name-nondirectory buffer-file-name))
+ "???"))
+ ((symbolp org-category) (symbol-name org-category))
+ (t org-category)))
+ beg end cat pos optionp)
+ (org-unmodified
+ (save-excursion
+ (save-restriction
+ (widen)
+ (goto-char (point-min))
+ (put-text-property (point) (point-max) 'org-category def-cat)
+ (while (re-search-forward
+ "^\\(#\\+CATEGORY:\\|[ \t]*:CATEGORY:\\)\\(.*\\)" nil t)
+ (setq pos (match-end 0)
+ optionp (equal (char-after (match-beginning 0)) ?#)
+ cat (org-trim (match-string 2)))
+ (if optionp
+ (setq beg (point-at-bol) end (point-max))
+ (org-back-to-heading t)
+ (setq beg (point) end (org-end-of-subtree t t)))
+ (put-text-property beg end 'org-category cat)
+ (goto-char pos)))))))
+
(defun org-archive-all-done (&optional tag)
"Archive sublevels of the current tree without open TODO items.
If the cursor is not on a headline, try all level 1 trees. If
@@ -6937,8 +7126,9 @@ If ONOFF is `on' or `off', don't toggle but set to this state."
(end-of-line 1)
(when current
(insert " :" (mapconcat 'identity (nreverse current) ":") ":"))
- (org-set-tags nil t))
- res))
+ (org-set-tags nil t)
+ res)
+ (run-hooks 'org-after-tags-change-hook)))
(defun org-toggle-archive-tag (&optional arg)
"Toggle the archive tag for the current headline.
@@ -7052,7 +7242,9 @@ and table.el tables."
(defun org-table-create-or-convert-from-region (arg)
"Convert region to table, or create an empty table.
If there is an active region, convert it to a table, using the function
-`org-table-convert-region'.
+`org-table-convert-region'. See the documentation of that function
+to learn how the prefix argument is interpreted to determine the field
+separator.
If there is no such region, create an empty table with `org-table-create'."
(interactive "P")
(if (org-region-active-p)
@@ -7091,36 +7283,46 @@ SIZE is a string Columns x Rows like for example \"3x2\"."
(goto-char pos)))
(org-table-align)))
-(defun org-table-convert-region (beg0 end0 &optional nspace)
+(defun org-table-convert-region (beg0 end0 &optional separator)
"Convert region to a table.
The region goes from BEG0 to END0, but these borders will be moved
slightly, to make sure a beginning of line in the first line is included.
-When NSPACE is non-nil, it indicates the minimum number of spaces that
-separate columns. By default, the function first checks if every line
-contains at lease one TAB. If yes, it assumes that the material is TAB
-separated. If not, it assumes a single space as separator."
+
+SEPARATOR specifies the field separator in the lines. It can have the
+following values:
+
+'(4) Use the comma as a field separator
+'(16) Use a TAB as field separator
+integer When a number, use that many spaces as field separator
+nil When nil, the command tries to be smart and figure out the
+ separator in the following way:
+ - when each line contains a TAB, assume TAB-separated material
+ - when each line contains a comme, assume CSV material
+ - else, assume one or more SPACE charcters as separator."
(interactive "rP")
(let* ((beg (min beg0 end0))
(end (max beg0 end0))
- (tabsep t)
- re)
+ sep-re re)
(goto-char beg)
(beginning-of-line 1)
(setq beg (move-marker (make-marker) (point)))
(goto-char end)
(if (bolp) (backward-char 1) (end-of-line 1))
(setq end (move-marker (make-marker) (point)))
- ;; Lets see if this is tab-separated material. If every nonempty line
- ;; contains a tab, we will assume that it is tab-separated material
- (if nspace
- (setq tabsep nil)
+ ;; Get the right field separator
+ (unless separator
(goto-char beg)
- (and (re-search-forward "^[^\n\t]+$" end t) (setq tabsep nil)))
- (if nspace (setq tabsep nil))
- (if tabsep
- (setq re "^\\|\t")
- (setq re (format "^ *\\| *\t *\\| \\{%d,\\}"
- (max 1 (prefix-numeric-value nspace)))))
+ (setq separator
+ (cond
+ ((not (re-search-forward "^[^\n\t]+$" end t)) '(16))
+ ((not (re-search-forward "^[^\n,]+$" end t)) '(4))
+ (t 1))))
+ (setq re (cond
+ ((equal separator '(4)) "^\\|\"?[ \t]*,[ \t]*\"?")
+ ((equal separator '(16)) "^\\|\t")
+ ((integerp separator)
+ (format "^ *\\| *\t *\\| \\{%d,\\}" separator))
+ (t (error "This should not happen"))))
(goto-char beg)
(while (re-search-forward re end t)
(replace-match "| " t t))
@@ -10893,10 +11095,11 @@ For file links, arg negates `org-context-in-file-links'."
(setq cpltxt (substring cpltxt 0 -2)))
(setq link (org-make-link cpltxt)))
- (buffer-file-name
+ ((buffer-file-name (buffer-base-buffer))
;; Just link to this file here.
(setq cpltxt (concat "file:"
- (abbreviate-file-name buffer-file-name)))
+ (abbreviate-file-name
+ (buffer-file-name (buffer-base-buffer)))))
;; Add a context string
(when (org-xor org-context-in-file-links arg)
(setq txt (if (org-region-active-p)
@@ -10922,8 +11125,8 @@ For file links, arg negates `org-context-in-file-links'."
(if (and (interactive-p) link)
(progn
(setq org-stored-links
- (cons (list cpltxt link desc) org-stored-links))
- (message "Stored: %s" (or cpltxt link)))
+ (cons (list link desc) org-stored-links))
+ (message "Stored: %s" (or desc link)))
(and link (org-make-link-string link desc)))))
(defun org-store-link-props (&rest plist)
@@ -11016,6 +11219,8 @@ according to FMT (default from `org-email-link-description-format')."
(defconst org-link-escape-chars
'((" " . "%20")
+ ("[" . "%5B")
+ ("]" . "%5d")
("\340" . "%E0") ; `a
("\342" . "%E2") ; ^a
("\347" . "%E7") ; ,c
@@ -11031,29 +11236,37 @@ according to FMT (default from `org-email-link-description-format')."
("=" . "%3D")
("+" . "%2B")
)
- "Association list of escapes for some characters problematic in links.")
+ "Association list of escapes for some characters problematic in links.
+This is the list that is used for internal purposes.")
-(defun org-link-escape (text)
+(defconst org-link-escape-chars-browser
+ '((" " . "%20"))
+ "Association list of escapes for some characters problematic in links.
+This is the list that is used before handing over to the browser.")
+
+(defun org-link-escape (text &optional table)
"Escape charaters in TEXT that are problematic for links."
+ (setq table (or table org-link-escape-chars))
(when text
(let ((re (mapconcat (lambda (x) (regexp-quote (car x)))
- org-link-escape-chars "\\|")))
+ table "\\|")))
(while (string-match re text)
(setq text
(replace-match
- (cdr (assoc (match-string 0 text) org-link-escape-chars))
+ (cdr (assoc (match-string 0 text) table))
t t text)))
text)))
-(defun org-link-unescape (text)
+(defun org-link-unescape (text &optional table)
"Reverse the action of `org-link-escape'."
+ (setq table (or table org-link-escape-chars))
(when text
(let ((re (mapconcat (lambda (x) (regexp-quote (cdr x)))
- org-link-escape-chars "\\|")))
+ table "\\|")))
(while (string-match re text)
(setq text
(replace-match
- (car (rassoc (match-string 0 text) org-link-escape-chars))
+ (car (rassoc (match-string 0 text) table))
t t text)))
text)))
@@ -11172,7 +11385,10 @@ With three \\[universal-argument] prefixes, negate the meaning of
(princ "Insert a link. Use TAB to complete valid link prefixes.\n")
(when org-stored-links
(princ "\nStored links are available with <up>/<down> (most recent with RET):\n\n")
- (princ (mapconcat 'car (reverse org-stored-links) "\n"))))
+ (princ (mapconcat
+ (lambda (x)
+ (if (nth 1 x) (concat (car x) " (" (nth 1 x) ")") (car x)))
+ (reverse org-stored-links) "\n"))))
(let ((cw (selected-window)))
(select-window (get-buffer-window "*Org Links*"))
(shrink-window-if-larger-than-buffer)
@@ -11200,9 +11416,8 @@ With three \\[universal-argument] prefixes, negate the meaning of
(not org-keep-stored-link-after-insertion))
(setq org-stored-links (delq (assoc link org-stored-links)
org-stored-links)))
- (setq link (if entry (nth 1 entry) link)
- desc (or region desc (nth 2 entry)))))
-
+ (setq desc (or region desc (nth 1 entry)))))
+
(if (string-match org-plain-link-re link)
;; URL-like link, normalize the use of angular brackets.
(setq link (org-make-link (org-remove-angle-brackets link))))
@@ -11222,6 +11437,7 @@ With three \\[universal-argument] prefixes, negate the meaning of
;; Check if we can/should use a relative path. If yes, simplify the link
(when (string-match "\\<file:\\(.*\\)" link)
(let* ((path (match-string 1 link))
+ (desc-is-link (equal link desc))
(case-fold-search nil))
(cond
((eq org-link-file-path-type 'absolute)
@@ -11239,7 +11455,8 @@ With three \\[universal-argument] prefixes, negate the meaning of
;; We are linking a file with relative path name.
(setq path (substring (expand-file-name path)
(match-end 0)))))))
- (setq link (concat "file:" path))))
+ (setq link (concat "file:" path))
+ (if desc (setq desc link))))
(setq desc (read-string "Description: " desc))
(unless (string-match "\\S-" desc) (setq desc nil))
@@ -11403,7 +11620,8 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
(apply cmd (nreverse args1))))
((member type '("http" "https" "ftp" "news"))
- (browse-url (concat type ":" path)))
+ (browse-url (concat type ":" (org-link-escape
+ path org-link-escape-chars-browser))))
((string= type "tags")
(org-tags-view in-emacs path))
@@ -12157,10 +12375,12 @@ conventions in Org-mode. This function returns such a link."
(defconst org-remember-help
"Select a destination location for the note.
UP/DOWN=headline TAB=cycle visibility [Q]uit RET/<left>/<right>=Store
-RET at beg-of-buf -> Append to file as level 2 headline
RET on headline -> Store as sublevel entry to current headline
+RET at beg-of-buf -> Append to file as level 2 headline
<left>/<right> -> before/after current headline, same headings level")
+(defvar org-remember-previous-location nil)
+
;;;###autoload
(defun org-remember-apply-template (&optional use-char skip-interactive)
"Initialize *remember* buffer with template, invoke `org-mode'.
@@ -12190,6 +12410,10 @@ to be run from that hook to fucntion properly."
(v-U (concat "[" (substring v-T 1 -1) "]"))
(v-i initial) ; defined in `remember-mode'
(v-a (if (equal annotation "[[]]") "" annotation)) ; likewise
+ (v-A (if (and v-a
+ (string-match "\\[\\(\\[.*?\\]\\)\\(\\[.*?\\]\\)?\\]" v-a))
+ (replace-match "[\\1[%^{Link description}]]" nil nil v-a)
+ v-a))
(v-n user-full-name)
(org-startup-folded nil)
org-time-was-given org-end-time-was-given x prompt char time)
@@ -12200,16 +12424,20 @@ to be run from that hook to fucntion properly."
(erase-buffer)
(insert (substitute-command-keys
(format
- "## `%sC-c C-c' to file directly, `%sC-c C-c' to file interactively.
-## Target file \"%s\", headline \"%s\"
+"## Filing location: Select interactively, default, or last used:
+## %s to select file and header location interactively.
+## %s \"%s\" -> \"* %s\"
+## C-u C-u C-c C-c \"%s\" -> \"* %s\"
## To switch templates, use `\\[org-remember]'.\n\n"
- (if org-remember-store-without-prompt "" "C-u ")
- (if org-remember-store-without-prompt "C-u " "")
+ (if org-remember-store-without-prompt " C-u C-c C-c" " C-c C-c")
+ (if org-remember-store-without-prompt " C-c C-c" " C-u C-c C-c")
(abbreviate-file-name (or file org-default-notes-file))
- (or headline ""))))
+ (or headline "")
+ (or (car org-remember-previous-location) "???")
+ (or (cdr org-remember-previous-location) "???"))))
(insert tpl) (goto-char (point-min))
;; Simple %-escapes
- (while (re-search-forward "%\\([tTuUai]\\)" nil t)
+ (while (re-search-forward "%\\([tTuUaiA]\\)" nil t)
(when (and initial (equal (match-string 0) "%i"))
(save-match-data
(let* ((lead (buffer-substring
@@ -12307,7 +12535,7 @@ find a better place. Then press RET or <left> or <right> in insert the note.
Key Cursor position Note gets inserted
-----------------------------------------------------------------------------
-RET buffer-start as level 2 heading at end of file
+RET buffer-start as level 1 heading at end of file
RET on headline as sublevel of the heading at cursor
RET no heading at cursor position, level taken from context.
Or use prefix arg to specify level manually.
@@ -12343,7 +12571,10 @@ See also the variable `org-reverse-note-order'."
(org-startup-folded nil)
(org-startup-align-all-tables nil)
(org-goto-start-pos 1)
- spos level indent reversed)
+ spos exitcmd level indent reversed)
+ (if (and (equal current-prefix-arg '(16)) org-remember-previous-location)
+ (setq file (car org-remember-previous-location)
+ heading (cdr org-remember-previous-location)))
(setq current-prefix-arg nil)
;; Modify text so that it becomes a nice subtree which can be inserted
;; into an org tree.
@@ -12365,12 +12596,14 @@ See also the variable `org-reverse-note-order'."
;; Find the file
(if (not visiting) (find-file-noselect file))
(with-current-buffer (or visiting (get-file-buffer file))
+ (unless (org-mode-p)
+ (error "Target files for remember notes must be in Org-mode"))
(save-excursion
(save-restriction
(widen)
(and (goto-char (point-min))
(not (re-search-forward "^\\* " nil t))
- (insert "\n* Notes\n"))
+ (insert "\n* " (or heading "Notes") "\n"))
(setq reversed (org-notes-order-reversed-p))
;; Find the default location
@@ -12380,22 +12613,58 @@ See also the variable `org-reverse-note-order'."
(concat "^\\*+[ \t]+" (regexp-quote heading)
(org-re "\\([ \t]+:[[:alnum:]@_:]*\\)?[ \t]*$"))
nil t)
- (setq org-goto-start-pos (match-beginning 0))))
+ (setq org-goto-start-pos (match-beginning 0))
+ (when fastp
+ (goto-char (point-max))
+ (unless (bolp) (newline))
+ (insert "* " heading "\n")
+ (setq org-goto-start-pos (point-at-bol 0)))))
;; Ask the User for a location
- (setq spos (if fastp
- org-goto-start-pos
- (org-get-location (current-buffer) org-remember-help)))
+ (if fastp
+ (setq spos org-goto-start-pos
+ exitcmd 'return)
+ (setq spos (org-get-location (current-buffer) org-remember-help)
+ exitcmd (cdr spos)
+ spos (car spos)))
(if (not spos) (throw 'quit nil)) ; return nil to show we did
; not handle this note
(goto-char spos)
- (cond ((and (bobp) (not reversed))
+ (cond ((org-on-heading-p t)
+ (org-back-to-heading t)
+ (setq level (funcall outline-level))
+ (cond
+ ((eq exitcmd 'return)
+ ;; sublevel of current
+ (setq org-remember-previous-location
+ (cons (abbreviate-file-name file)
+ (org-get-heading 'notags)))
+ (if reversed
+ (outline-next-heading)
+ (org-end-of-subtree)
+ (if (not (bolp))
+ (if (looking-at "[ \t]*\n")
+ (beginning-of-line 2)
+ (end-of-line 1)
+ (insert "\n"))))
+ (org-paste-subtree (org-get-legal-level level 1) txt))
+ ((eq exitcmd 'left)
+ ;; before current
+ (org-paste-subtree level txt))
+ ((eq exitcmd 'right)
+ ;; after current
+ (org-end-of-subtree t)
+ (org-paste-subtree level txt))
+ (t (error "This should not happen"))))
+
+ ((and (bobp) (not reversed))
;; Put it at the end, one level below level 1
(save-restriction
(widen)
(goto-char (point-max))
(if (not (bolp)) (newline))
(org-paste-subtree (org-get-legal-level 1 1) txt)))
+
((and (bobp) reversed)
;; Put it at the start, as level 1
(save-restriction
@@ -12404,16 +12673,6 @@ See also the variable `org-reverse-note-order'."
(re-search-forward "^\\*+ " nil t)
(beginning-of-line 1)
(org-paste-subtree 1 txt)))
- ((and (org-on-heading-p t) (not current-prefix-arg))
- ;; Put it below this entry, at the beg/end of the subtree
- (org-back-to-heading t)
- (setq level (funcall outline-level))
- (if reversed
- (outline-next-heading)
- (org-end-of-subtree t))
- (if (not (bolp)) (newline))
- (beginning-of-line 1)
- (org-paste-subtree (org-get-legal-level level 1) txt))
(t
;; Put it right there, with automatic level determined by
;; org-paste-subtree or from prefix arg
@@ -12714,6 +12973,7 @@ For calling through lisp, arg is also interpreted in the following way:
(or (looking-at (concat " +" org-todo-regexp " *"))
(looking-at " *"))
(let* ((this (match-string 1))
+ (hl-pos (match-beginning 0))
(head (org-get-todo-sequence-head this))
(ass (assoc head org-todo-kwd-alist))
(interpret (nth 1 ass))
@@ -12724,7 +12984,15 @@ For calling through lisp, arg is also interpreted in the following way:
(member (member this org-todo-keywords-1))
(tail (cdr member))
(state (cond
- ((equal arg '(4))
+ ((and org-todo-key-trigger
+ (or (and (equal arg '(4)) (eq org-use-fast-todo-selection 'prefix))
+ (and (not arg) org-use-fast-todo-selection
+ (not (eq org-use-fast-todo-selection 'prefix)))))
+ ;; Use fast selection
+ (org-fast-todo-selection))
+ ((and (equal arg '(4))
+ (or (not org-use-fast-todo-selection)
+ (not org-todo-key-trigger)))
;; Read a state with completion
(completing-read "State: " (mapcar (lambda(x) (list x))
org-todo-keywords-1)
@@ -12740,6 +13008,8 @@ For calling through lisp, arg is also interpreted in the following way:
(nth (- (length org-todo-keywords-1) (length tail) 2)
org-todo-keywords-1)
(org-last org-todo-keywords-1))))
+ ((and (eq org-use-fast-todo-selection t) (equal arg '(4))
+ (setq arg nil))) ; hack to fall back to cycling
(arg
;; user or caller requests a specific state
(cond
@@ -12771,6 +13041,8 @@ For calling through lisp, arg is also interpreted in the following way:
(next (if state (concat " " state " ") " "))
dostates)
(replace-match next t t)
+ (unless (pos-visible-in-window-p hl-pos)
+ (message "TODO state changed to %s" (org-trim next)))
(unless head
(setq head (org-get-todo-sequence-head state)
ass (assoc head org-todo-kwd-alist)
@@ -12786,17 +13058,23 @@ For calling through lisp, arg is also interpreted in the following way:
(setq org-last-todo-state-is-todo
(not (member state org-done-keywords)))
(when (and org-log-done (not (memq arg '(nextset previousset))))
- (setq dostates (and (eq interpret 'sequence)
- (listp org-log-done) (memq 'state org-log-done)))
+ (setq dostates (and (listp org-log-done) (memq 'state org-log-done)
+ (or (not org-todo-log-states)
+ (member state org-todo-log-states))))
+
(cond
- ((and state (not this))
- ;; FIXME: should we remove CLOSED already then state is nil?
+ ((and state (member state org-not-done-keywords)
+ (not (member this org-not-done-keywords)))
+ ;; This is now a todo state and was not one before
+ ;; Remove any CLOSED timestamp, and possibly log the state change
(org-add-planning-info nil nil 'closed)
(and dostates (org-add-log-maybe 'state state 'findpos)))
((and state dostates)
+ ;; This is a non-nil state, and we need to log it
(org-add-log-maybe 'state state 'findpos))
- ((member state org-done-keywords)
- ;; Planning info calls the note-setting command.
+ ((and (member state org-done-keywords)
+ (not (member this org-done-keywords)))
+ ;; It is now done, and it was not done before
;; FIXME: We used to remove scheduling info....
; (org-add-planning-info 'closed (org-current-time)
; (if (org-get-repeat) nil 'scheduled))
@@ -12835,6 +13113,68 @@ right sequence."
(car org-todo-keywords-1))
(t (nth 2 (assoc kwd org-todo-kwd-alist))))))
+(defun org-fast-todo-selection ()
+ "Fast TODO keyword selection with single keys.
+Returns the new TODO keyword, or nil if no state change should occur."
+ (let* ((fulltable org-todo-key-alist)
+ (done-keywords org-done-keywords) ;; needed for the faces.
+ (maxlen (apply 'max (mapcar
+ (lambda (x)
+ (if (stringp (car x)) (string-width (car x)) 0))
+ fulltable)))
+ (buf (current-buffer))
+ (expert nil)
+ (fwidth (+ maxlen 3 1 3))
+ (ncol (/ (- (window-width) 4) fwidth))
+ tg cnt e c char c1 c2 ntable tbl rtn
+ groups ingroup)
+ (save-window-excursion
+ (if expert
+ (set-buffer (get-buffer-create " *Org todo*"))
+; (delete-other-windows)
+; (split-window-vertically)
+ (org-switch-to-buffer-other-window (get-buffer-create " *Org tags*")))
+ (erase-buffer)
+ (org-set-local 'org-done-keywords done-keywords)
+ (setq tbl fulltable char ?a cnt 0)
+ (while (setq e (pop tbl))
+ (cond
+ ((equal e '(:startgroup))
+ (push '() groups) (setq ingroup t)
+ (when (not (= cnt 0))
+ (setq cnt 0)
+ (insert "\n"))
+ (insert "{ "))
+ ((equal e '(:endgroup))
+ (setq ingroup nil cnt 0)
+ (insert "}\n"))
+ (t
+ (setq tg (car e) c (cdr e))
+ (if ingroup (push tg (car groups)))
+ (setq tg (org-add-props tg nil 'face
+ (org-get-todo-face tg)))
+ (if (and (= cnt 0) (not ingroup)) (insert " "))
+ (insert "[" c "] " tg (make-string
+ (- fwidth 4 (length tg)) ?\ ))
+ (when (= (setq cnt (1+ cnt)) ncol)
+ (insert "\n")
+ (if ingroup (insert " "))
+ (setq cnt 0)))))
+ (insert "\n")
+ (goto-char (point-min))
+ (if (and (not expert) (fboundp 'fit-window-to-buffer))
+ (fit-window-to-buffer))
+ (message "[a-z..]:Set [SPC]:clear")
+ (setq c (let ((inhibit-quit t)) (read-char-exclusive)))
+ (cond
+ ((or (= c ?\C-g)
+ (and (= c ?q) (not (rassoc c fulltable))))
+ (setq quit-flag t))
+ ((= c ?\ ) nil)
+ ((setq e (rassoc c fulltable) tg (car e))
+ tg)
+ (t (setq quit-flag t))))))
+
(defun org-get-repeat ()
"Check if tere is a deadline/schedule with repeater in this entry."
(save-match-data
@@ -13048,7 +13388,7 @@ The auto-repeater uses this.")
(org-switch-to-buffer-other-window "*Org Note*")
(erase-buffer)
(let ((org-inhibit-startup t)) (org-mode))
- (insert (format "# Insert note for %s, finish with C-c C-c.\n\n"
+ (insert (format "# Insert note for %s, finish with C-c C-c, or cancel with C-u C-c C-c.\n\n"
(cond
((eq org-log-note-purpose 'clock-out) "stopped clock")
((eq org-log-note-purpose 'done) "closed todo item")
@@ -13081,6 +13421,7 @@ The auto-repeater uses this.")
"")))))
(if lines (setq note (concat note " \\\\")))
(push note lines))
+ (when current-prefix-arg (setq lines nil))
(when lines
(save-excursion
(set-buffer (marker-buffer org-log-note-marker))
@@ -13240,16 +13581,27 @@ ACTION can be `set', `up', `down', or a character."
(setq new action)
(message "Priority %c-%c, SPC to remove: " org-highest-priority org-lowest-priority)
(setq new (read-char-exclusive)))
+ (if (and (= (upcase org-highest-priority) org-highest-priority)
+ (= (upcase org-lowest-priority) org-lowest-priority))
+ (setq new (upcase new)))
(cond ((equal new ?\ ) (setq remove t))
((or (< (upcase new) org-highest-priority) (> (upcase new) org-lowest-priority))
(error "Priority must be between `%c' and `%c'"
org-highest-priority org-lowest-priority))))
((eq action 'up)
- (setq new (1- current)))
+ (if (and (not have) (eq last-command this-command))
+ (setq new org-lowest-priority)
+ (setq new (if (and org-priority-start-cycle-with-default (not have))
+ org-default-priority (1- current)))))
((eq action 'down)
- (setq new (1+ current)))
+ (if (and (not have) (eq last-command this-command))
+ (setq new org-highest-priority)
+ (setq new (if (and org-priority-start-cycle-with-default (not have))
+ org-default-priority (1+ current)))))
(t (error "Invalid action")))
- (setq new (min (max org-highest-priority (upcase new)) org-lowest-priority))
+ (if (or (< (upcase new) org-highest-priority)
+ (> (upcase new) org-lowest-priority))
+ (setq remove t))
(setq news (format "%c" new))
(if have
(if remove
@@ -13526,7 +13878,7 @@ also TODO lines."
With prefix ARG, realign all tags in headings in the current buffer."
(interactive "P")
(let* ((re (concat "^" outline-regexp))
- (current (org-get-tags))
+ (current (org-get-tags-string))
(col (current-column))
(org-setting-tags t)
table current-tags inherited-tags ; computed below when needed
@@ -13553,8 +13905,9 @@ With prefix ARG, realign all tags in headings in the current buffer."
(if (or (eq t org-use-fast-tag-selection)
(and org-use-fast-tag-selection
(delq nil (mapcar 'cdr table))))
- (org-fast-tag-selection current-tags inherited-tags
- table org-todo-tag-alist)
+ (org-fast-tag-selection
+ current-tags inherited-tags table
+ (if org-fast-tag-selection-include-todo org-todo-key-alist))
(let ((org-add-colon-after-tag-completion t))
(org-trim
(completing-read "Tags: " 'org-tags-completion-function
@@ -13587,7 +13940,9 @@ With prefix ARG, realign all tags in headings in the current buffer."
(and (not (featurep 'xemacs)) c0 (tabify p0 (point)))
tags)
(t (error "Tags alignment failed")))
- (move-to-column col))))
+ (move-to-column col)
+ (unless just-align
+ (run-hooks 'org-after-tags-change-hook)))))
(defun org-change-tag-in-region (beg end tag off)
"Add or remove TAG for each entry in the region.
@@ -13702,6 +14057,7 @@ Returns the new tags string, or nil to not change the current settings."
tg cnt e c char c1 c2 ntable tbl rtn
ov-start ov-end ov-prefix
(exit-after-next org-fast-tag-selection-single-key)
+ (done-keywords org-done-keywords)
groups ingroup)
(save-excursion
(beginning-of-line 1)
@@ -13727,6 +14083,7 @@ Returns the new tags string, or nil to not change the current settings."
(split-window-vertically)
(org-switch-to-buffer-other-window (get-buffer-create " *Org tags*")))
(erase-buffer)
+ (org-set-local 'org-done-keywords done-keywords)
(org-fast-tag-insert "Inherited" inherited i-face "\n")
(org-fast-tag-insert "Current" current c-face "\n\n")
(org-fast-tag-show-exit exit-after-next)
@@ -13759,6 +14116,8 @@ Returns the new tags string, or nil to not change the current settings."
(if ingroup (push tg (car groups)))
(setq tg (org-add-props tg nil 'face
(cond
+ ((not (assoc tg table))
+ (org-get-todo-face tg))
((member tg current) c-face)
((member tg inherited) i-face)
(t nil))))
@@ -13848,19 +14207,20 @@ Returns the new tags string, or nil to not change the current settings."
(while (re-search-forward
(org-re "\\[.\\] \\([[:alnum:]_@]+\\)") nil t)
(setq tg (match-string 1))
- (add-text-properties (match-beginning 1) (match-end 1)
- (list 'face
- (cond
- ((member tg current) c-face)
- ((member tg inherited) i-face)
- (t nil)))))
+ (add-text-properties
+ (match-beginning 1) (match-end 1)
+ (list 'face
+ (cond
+ ((member tg current) c-face)
+ ((member tg inherited) i-face)
+ (t (get-text-property (match-beginning 1) 'face))))))
(goto-char (point-min)))))
(org-detach-overlay org-tags-overlay)
(if rtn
(mapconcat 'identity current ":")
nil))))
-(defun org-get-tags ()
+(defun org-get-tags-string ()
"Get the TAGS string in the current headline."
(unless (org-on-heading-p t)
(error "Not on a heading"))
@@ -13870,6 +14230,10 @@ Returns the new tags string, or nil to not change the current settings."
(org-match-string-no-properties 1)
"")))
+(defun org-get-tags ()
+ "Get the list of tags specified in the current headline."
+ (org-split-string (org-get-tags-string) ":"))
+
(defun org-get-buffer-tags ()
"Get a table of all tags used in the buffer, for completion."
(let (tags)
@@ -13927,7 +14291,7 @@ but in some other way.")
;; This is used by C-c C-c for property action.
(save-excursion
(beginning-of-line 1)
- (looking-at "^[ \t]*\\(:\\([a-zA-Z_0-9]+\\):\\)[ \t]*\\(.*\\)")))
+ (looking-at (org-re "^[ \t]*\\(:\\([[:alpha:]][[:alnum:]_-]*\\):\\)[ \t]*\\(.*\\)"))))
(defmacro org-with-point-at (pom &rest body)
"Move to buffer and point of point-or-marker POM for the duration of BODY."
@@ -13994,7 +14358,8 @@ If WHICH is nil or `all', get all properties. If WHICH is
(push (cons "TODO" (org-match-string-no-properties 2)) props))
(when (looking-at org-priority-regexp)
(push (cons "PRIORITY" (org-match-string-no-properties 2)) props))
- (when (and (setq value (org-get-tags)) (string-match "\\S-" value))
+ (when (and (setq value (org-get-tags-string))
+ (string-match "\\S-" value))
(push (cons "TAGS" value) props))
(when (setq value (org-get-tags-at))
(push (cons "ALLTAGS" (concat ":" (mapconcat 'identity value ":") ":"))
@@ -14016,7 +14381,7 @@ If WHICH is nil or `all', get all properties. If WHICH is
(when range
(goto-char (car range))
(while (re-search-forward
- "^[ \t]*:\\([a-zA-Z][a-zA-Z_0-9]*\\):[ \t]*\\(\\S-.*\\)?"
+ (org-re "^[ \t]*:\\([[:alpha:]][[:alnum:]_-]*\\):[ \t]*\\(\\S-.*\\)?")
(cdr range) t)
(setq key (org-match-string-no-properties 1)
value (org-trim (or (org-match-string-no-properties 2) "")))
@@ -14075,9 +14440,7 @@ If the property is not present at all, nil is returned."
(org-back-to-heading t)
(move-marker org-entry-property-inherited-from (point))
(throw 'ex tmp))
- (condition-case nil
- (org-up-heading-all 1)
- (error (throw 'ex nil))))))
+ (or (org-up-heading-safe) (throw 'ex nil)))))
(or tmp (cdr (assoc property org-local-properties))
(cdr (assoc property org-global-properties)))))
@@ -14115,7 +14478,8 @@ If the property is not present at all, nil is returned."
((eq value 'later) (org-timestamp-change 1 'day))
(t (call-interactively 'org-deadline)))
(call-interactively 'org-deadline)))
- ((member property org-special-properties)
+ ((and (member property org-special-properties)
+ (not (member property '("CATEGORY" "ARCHIVE"))))
(error "The %s property can not yet be set with `org-entry-put'"
property))
(t ; a non-special property
@@ -14144,7 +14508,9 @@ If the property is not present at all, nil is returned."
(while (re-search-forward org-property-start-re nil t)
(setq range (org-get-property-block))
(goto-char (car range))
- (while (re-search-forward "^[ \t]*:\\([a-zA-Z0-9]+\\):" (cdr range) t)
+ (while (re-search-forward
+ (org-re "^[ \t]*:\\([[:alnum:]_-]+\\):")
+ (cdr range) t)
(add-to-list 'rtn (org-match-string-no-properties 1)))
(outline-next-heading))))
(when include-specials
@@ -14385,8 +14751,8 @@ This is the compiled version of the format.")
(beg (point-at-bol))
(level-face (save-excursion
(beginning-of-line 1)
- (looking-at "\\(\\**\\)\\(\\* \\)")
- (org-get-level-face 2)))
+ (and (looking-at "\\(\\**\\)\\(\\* \\)")
+ (org-get-level-face 2))))
(color (list :foreground
(face-attribute (or level-face 'default) :foreground)))
props pom property ass width f string ov column)
@@ -14504,10 +14870,19 @@ This is the compiled version of the format.")
(when (eq major-mode 'org-agenda-mode)
(message "Modification not yet reflected in Agenda buffer, use `r' to refresh")))
+(defun org-columns-check-computed ()
+ "Check if this column value is computed.
+If yes, throw an error indicating that changing it does not make sense."
+ (let ((val (get-char-property (point) 'org-columns-value)))
+ (when (and (stringp val)
+ (get-char-property 0 'org-computed val))
+ (error "This value is computed from the entry's children"))))
+
(defun org-columns-edit-value ()
"Edit the value of the property at point in column view.
Where possible, use the standard interface for changing this line."
(interactive)
+ (org-columns-check-computed)
(let* ((col (current-column))
(key (get-char-property (point) 'org-columns-key))
(value (get-char-property (point) 'org-columns-value))
@@ -14600,6 +14975,7 @@ Where possible, use the standard interface for changing this line."
(defun org-columns-next-allowed-value (&optional previous)
"Switch to the next allowed value for this column."
(interactive)
+ (org-columns-check-computed)
(let* ((col (current-column))
(key (get-char-property (point) 'org-columns-key))
(value (get-char-property (point) 'org-columns-value))
@@ -14851,7 +15227,7 @@ display, or in the #+COLUMNS line of the current buffer."
(defun org-columns-get-autowidth-alist (s cache)
"Derive the maximum column widths from the format and the cache."
(let ((start 0) rtn)
- (while (string-match "%\\([a-zA-Z]\\S-*\\)" s start)
+ (while (string-match (org-re "%\\([[:alpha:]]\\S-*\\)") s start)
(push (cons (match-string 1 s) 1) rtn)
(setq start (match-end 0)))
(mapc (lambda (x)
@@ -14883,8 +15259,10 @@ display, or in the #+COLUMNS line of the current buffer."
(setq pos (org-overlay-start ov))
(goto-char pos)
(when (setq val (cdr (assoc property
- (get-text-property (point-at-bol) 'org-summaries))))
+ (get-text-property
+ (point-at-bol) 'org-summaries))))
(setq fmt (org-overlay-get ov 'org-columns-format))
+ (org-overlay-put ov 'org-columns-value val)
(org-overlay-put ov 'display (format fmt val)))))
org-columns-overlays))))
@@ -14894,11 +15272,12 @@ display, or in the #+COLUMNS line of the current buffer."
(let* ((re (concat "^" outline-regexp))
(lmax 30) ; Does anyone use deeper levels???
(lsum (make-vector lmax 0))
+ (lflag (make-vector lmax nil))
(level 0)
(ass (assoc property org-columns-current-fmt-compiled))
(format (nth 4 ass))
(beg org-columns-top-level-marker)
- last-level val end sumpos sum-alist sum str)
+ last-level val valflag flag end sumpos sum-alist sum str str1 useval)
(save-excursion
;; Find the region to compute
(goto-char beg)
@@ -14909,29 +15288,39 @@ display, or in the #+COLUMNS line of the current buffer."
(setq sumpos (match-beginning 0)
last-level level
level (org-outline-level)
- val (org-entry-get nil property))
+ val (org-entry-get nil property)
+ valflag (and val (string-match "\\S-" val)))
(cond
((< level last-level)
;; put the sum of lower levels here as a property
- (setq sum (aref lsum last-level)
+ (setq sum (aref lsum last-level) ; current sum
+ flag (aref lflag last-level) ; any valid entries from children?
str (org-column-number-to-string sum format)
+ str1 (org-add-props (copy-sequence str) nil 'org-computed t 'face 'bold)
+ useval (if flag str1 (if valflag val ""))
sum-alist (get-text-property sumpos 'org-summaries))
(if (assoc property sum-alist)
- (setcdr (assoc property sum-alist) str)
- (push (cons property str) sum-alist)
+ (setcdr (assoc property sum-alist) useval)
+ (push (cons property useval) sum-alist)
(org-unmodified
(add-text-properties sumpos (1+ sumpos)
(list 'org-summaries sum-alist))))
- (when val ;?????????????????????????????????? and force?????
- (org-entry-put nil property str))
+ (when val
+ (org-entry-put nil property (if flag str val)))
;; add current to current level accumulator
- (aset lsum level (+ (aref lsum level) sum))
+ (aset lsum level (+ (aref lsum level)
+ (if flag sum (org-column-string-to-number
+ val format))))
+ (if (or flag valflag) (aset lflag level t))
;; clear accumulators for deeper levels
- (loop for l from (1+ level) to (1- lmax) do (aset lsum l 0)))
+ (loop for l from (1+ level) to (1- lmax) do
+ (aset lsum l 0)
+ (aset lflag l nil)))
((>= level last-level)
;; add what we have here to the accumulator for this level
(aset lsum level (+ (aref lsum level)
- (org-column-string-to-number (or val "0") format))))
+ (org-column-string-to-number (or val "0") format)))
+ (and valflag (aset lflag level t)))
(t (error "This should not happen")))))))
(defun org-columns-redo ()
@@ -15010,8 +15399,9 @@ display, or in the #+COLUMNS line of the current buffer."
"FIXME"
(let ((start 0) width prop title op f)
(setq org-columns-current-fmt-compiled nil)
- (while (string-match "%\\([0-9]+\\)?\\([a-zA-Z_0-9]+\\)\\(?:(\\([^)]+\\))\\)?\\(?:{\\([^}]+\\)}\\)?\\s-*"
- fmt start)
+ (while (string-match
+ (org-re "%\\([0-9]+\\)?\\([[:alnum:]_-]+\\)\\(?:(\\([^)]+\\))\\)?\\(?:{\\([^}]+\\)}\\)?\\s-*")
+ fmt start)
(setq start (match-end 0)
width (match-string 1 fmt)
prop (match-string 2 fmt)
@@ -15044,18 +15434,28 @@ So if you press just return without typing anything, the time stamp
will represent the current date/time. If there is already a timestamp
at the cursor, it will be modified."
(interactive "P")
- (let (org-time-was-given org-end-time-was-given time)
+ (let ((default-time
+ ;; Default time is either today, or, when entering a range,
+ ;; the range start.
+ (if (or (org-at-timestamp-p t)
+ (save-excursion
+ (re-search-backward
+ (concat org-ts-regexp "--?-?\\=") ; 1-3 minuses
+ (- (point) 20) t)))
+ (apply 'encode-time (org-parse-time-string (match-string 1)))
+ (current-time)))
+ org-time-was-given org-end-time-was-given time)
(cond
((and (org-at-timestamp-p)
(eq last-command 'org-time-stamp)
(eq this-command 'org-time-stamp))
(insert "--")
(setq time (let ((this-command this-command))
- (org-read-date arg 'totime)))
+ (org-read-date arg 'totime nil nil default-time)))
(org-insert-time-stamp time (or org-time-was-given arg)))
((org-at-timestamp-p)
(setq time (let ((this-command this-command))
- (org-read-date arg 'totime)))
+ (org-read-date arg 'totime nil nil default-time)))
(when (org-at-timestamp-p) ; just to get the match data
(replace-match "")
(setq org-last-changed-timestamp
@@ -15065,9 +15465,9 @@ at the cursor, it will be modified."
(message "Timestamp updated"))
(t
(setq time (let ((this-command this-command))
- (org-read-date arg 'totime)))
+ (org-read-date arg 'totime nil nil default-time)))
(org-insert-time-stamp time (or org-time-was-given arg)
- nil nil nil (list org-end-time-was-given))))))
+ nil nil nil (list org-end-time-was-given))))))
(defun org-time-stamp-inactive (&optional arg)
"Insert an inactive time stamp.
@@ -15089,12 +15489,15 @@ So these are more for recording a certain time/date."
(defvar org-ans2) ; dynamically scoped parameter
(defvar org-plain-time-of-day-regexp) ; defined below
-(defun org-read-date (&optional with-time to-time from-string prompt)
+(defun org-read-date (&optional with-time to-time from-string prompt
+ default-time)
"Read a date and make things smooth for the user.
The prompt will suggest to enter an ISO date, but you can also enter anything
which will at least partially be understood by `parse-time-string'.
Unrecognized parts of the date will default to the current day, month, year,
-hour and minute. For example,
+hour and minute. If this command is called to replace a timestamp at point,
+of to enter the second timestamp of a range, the default time is taken from the
+existing stamp. For example,
3-2-5 --> 2003-02-05
feb 15 --> currentyear-02-15
sep 12 9 --> 2009-09-12
@@ -15120,32 +15523,25 @@ With an optional argument WITH-TIME, the prompt will suggest to also
insert a time. Note that when WITH-TIME is not set, you can still
enter a time, and this function will inform the calling routine about
this change. The calling routine may then choose to change the format
-used to insert the time stamp into the buffer to include the time."
+used to insert the time stamp into the buffer to include the time.
+With optional argument FROM-STRING, read fomr this string instead from
+the user. PROMPT can overwrite the default prompt. DEFAULT-TIME is
+the time/date that is used for everything that is not specified by the
+user."
(require 'parse-time)
(let* ((org-time-stamp-rounding-minutes
(if (equal with-time '(16)) 0 org-time-stamp-rounding-minutes))
(ct (org-current-time))
- (default-time
- ;; Default time is either today, or, when entering a range,
- ;; the range start.
- (if (save-excursion
- (re-search-backward
- (concat org-ts-regexp "--?-?\\=") ; 1-3 minuses
- (- (point) 20) t))
- (apply
- 'encode-time
- (mapcar (lambda(x) (or x 0))
- (parse-time-string (match-string 1))))
- ct))
+ (def (or default-time ct))
(calendar-move-hook nil)
(view-diary-entries-initially nil)
(view-calendar-holidays-initially nil)
(timestr (format-time-string
- (if with-time "%Y-%m-%d %H:%M" "%Y-%m-%d") default-time))
+ (if with-time "%Y-%m-%d %H:%M" "%Y-%m-%d") def))
(prompt (concat (if prompt (concat prompt " ") "")
(format "Date and/or time (default [%s]): " timestr)))
ans (org-ans0 "") org-ans1 org-ans2 (deltadays 0)
- second minute hour day month year tl wday wday1 pm)
+ second minute hour day month year tl wday wday1 pm h2 m2)
(cond
(from-string (setq ans from-string))
@@ -15153,7 +15549,7 @@ used to insert the time stamp into the buffer to include the time."
(save-excursion
(save-window-excursion
(calendar)
- (calendar-forward-day (- (time-to-days default-time)
+ (calendar-forward-day (- (time-to-days def)
(calendar-absolute-from-gregorian
(calendar-current-date))))
(org-eval-in-calendar nil t)
@@ -15220,7 +15616,7 @@ used to insert the time stamp into the buffer to include the time."
;; If there is a time with am/pm, and *no* time without it, we convert
;; so that matching will be successful.
;; FIXME: make this replace twice, so that we catch the end time.
- (when (and (not (string-match "[012]?[0-9]:[0-9][0-9]\\([ \t\n]\\|$\\)" ans))
+ (when (and (not (string-match "\\(\\`\\|[^+]\\)[012]?[0-9]:[0-9][0-9]\\([ \t\n]\\|$\\)" ans))
(string-match "\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)?\\(am\\|AM\\|pm\\|PM\\)\\>" ans))
(setq hour (string-to-number (match-string 1 ans))
minute (if (match-end 3) (string-to-number (match-string 3 ans)) 0)
@@ -15230,6 +15626,14 @@ used to insert the time stamp into the buffer to include the time."
(if (and pm (< hour 12)) (setq hour (+ 12 hour))))
(setq ans (replace-match (format "%02d:%02d" hour minute) t t ans)))
+ ;; Check if a time range is given as a duration
+ (when (string-match "\\([012]?[0-9]\\):\\([0-6][0-9]\\)\\+\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)?" ans)
+ (setq hour (string-to-number (match-string 1 ans))
+ h2 (+ hour (string-to-number (match-string 3 ans)))
+ minute (string-to-number (match-string 2 ans))
+ m2 (+ minute (if (match-end 5) (string-to-number (match-string 5 ans))0)))
+ (setq ans (replace-match (format "%02d:%02d-%02d:%02d" hour minute h2 m2) t t ans)))
+
;; Check if there is a time range
(when (and (boundp 'org-end-time-was-given)
(string-match org-plain-time-of-day-regexp ans)
@@ -15239,11 +15643,11 @@ used to insert the time stamp into the buffer to include the time."
(substring ans (match-end 7)))))
(setq tl (parse-time-string ans)
- year (or (nth 5 tl) (string-to-number (format-time-string "%Y" ct)))
- month (or (nth 4 tl) (string-to-number (format-time-string "%m" ct)))
- day (or (nth 3 tl) (string-to-number (format-time-string "%d" ct)))
- hour (or (nth 2 tl) (string-to-number (format-time-string "%H" ct)))
- minute (or (nth 1 tl) (string-to-number (format-time-string "%M" ct)))
+ year (or (nth 5 tl) (string-to-number (format-time-string "%Y" def)))
+ month (or (nth 4 tl) (string-to-number (format-time-string "%m" def)))
+ day (or (nth 3 tl) (string-to-number (format-time-string "%d" def)))
+ hour (or (nth 2 tl) (string-to-number (format-time-string "%H" def)))
+ minute (or (nth 1 tl) (string-to-number (format-time-string "%M" def)))
second (or (nth 0 tl) 0)
wday (nth 6 tl))
(setq day (+ day deltadays))
@@ -15412,10 +15816,25 @@ Don't touch the rest."
(defun org-deadline-close (timestamp-string &optional ndays)
"Is the time in TIMESTAMP-STRING close to the current date?"
- (and (< (org-days-to-time timestamp-string)
- (or ndays org-deadline-warning-days))
+ (setq ndays (or ndays (org-get-wdays timestamp-string)))
+ (and (< (org-days-to-time timestamp-string) ndays)
(not (org-entry-is-done-p))))
+(defun org-get-wdays (ts)
+ "Get the deadline lead time appropriate for timestring TS."
+ (cond
+ ((<= org-deadline-warning-days 0)
+ ;; 0 or negative, enforce this value no matter what
+ (- org-deadline-warning-days))
+ ((string-match "-\\([0-9]+\\)\\([dwmy]\\)\\(\\'\\|>\\)" ts)
+ ;; lead time is specified.
+ (floor (* (string-to-number (match-string 1 ts))
+ (cdr (assoc (match-string 2 ts)
+ '(("d" . 1) ("w" . 7)
+ ("m" . 30.4) ("y" . 365.25)))))))
+ ;; go for the default.
+ (t org-deadline-warning-days)))
+
(defun org-calendar-select-mouse (ev)
"Return to `org-read-date' with the date currently selected.
This is used by `org-read-date' in a temporary keymap for the calendar buffer."
@@ -15438,7 +15857,7 @@ days. If the prefix is a raw \\[universal-argument] prefix, all deadlines are s
(cond
((equal ndays '(4)) 100000)
(ndays (prefix-numeric-value ndays))
- (t org-deadline-warning-days)))
+ (t (abs org-deadline-warning-days))))
(case-fold-search nil)
(regexp (concat "\\<" org-deadline-string " *<\\([^>]+\\)>"))
(callback
@@ -15460,10 +15879,10 @@ days in order to avoid rounding problems."
(or
(org-clock-update-time-maybe)
(save-excursion
- (unless (org-at-date-range-p)
+ (unless (org-at-date-range-p t)
(goto-char (point-at-bol))
- (re-search-forward org-tr-regexp (point-at-eol) t))
- (if (not (org-at-date-range-p))
+ (re-search-forward org-tr-regexp-both (point-at-eol) t))
+ (if (not (org-at-date-range-p t))
(error "Not at a time-stamp range, and none found in current line")))
(let* ((ts1 (match-string 1))
(ts2 (match-string 2))
@@ -15540,6 +15959,12 @@ DAYNR."
(time-to-days (current-time))) (match-string 0 s)))
(t (time-to-days (apply 'encode-time (org-parse-time-string s))))))
+(defun org-time-from-absolute (d)
+ "Return the time corresponding to date D.
+D may be an absolute day number, or a calendar-type list (month day year)."
+ (if (numberp d) (setq d (calendar-gregorian-from-absolute d)))
+ (encode-time 0 0 0 (nth 1 d) (car d) (nth 2 d)))
+
(defun org-calendar-holiday ()
"List of holidays, for Diary display in Org-mode."
(let ((hl (check-calendar-holidays date)))
@@ -16134,8 +16559,18 @@ then the table will be inserted between these lines, replacing whatever
is was there before. If these lines are not in the buffer, the table
is inserted at point, surrounded by the special lines.
The BEGIN line can contain parameters. Allowed are:
+
:maxlevel The maximum level to be included in the table. Default is 3.
-:emphasize t/nil, if levell 1 and level 2 should be bold/italic in the table."
+
+:emphasize t/nil, if level 1 and level 2 should be bold/italic in the table.
+
+:scope nil/subtree/tree/treeN/file/agenda/'(\"file\"...).
+ The scope of file content to be searched for clock entries.
+ The default nil means the entire file (or the region to
+ which it is currently narrowed). \"subtree\" means the
+ enclosing subtree, \"treeN\" means the surrounding tree of level N.
+ \"agenda\" are all agenda files, a list of files searches
+ these files."
(interactive)
(org-remove-clock-overlays)
(unless (org-find-dblock "clocktable")
@@ -16219,9 +16654,12 @@ the returned times will be formatted strings."
(let ((hlchars '((1 . "*") (2 . ?/)))
(emph nil)
(ins (make-marker))
+ (total-time nil)
ipos time h m p level hlc hdl maxlevel
- ts te cc block)
- (setq maxlevel (or (plist-get params :maxlevel) 3)
+ ts te cc block beg end pos scope tbl tostring)
+ (setq scope (plist-get params :scope)
+ tostring (plist-get params :tostring)
+ maxlevel (or (plist-get params :maxlevel) 3)
emph (plist-get params :emphasize)
ts (plist-get params :tstart)
te (plist-get params :tend)
@@ -16235,48 +16673,105 @@ the returned times will be formatted strings."
(apply 'encode-time (org-parse-time-string te)))))
(move-marker ins (point))
(setq ipos (point))
- (insert-before-markers "Clock summary at ["
- (substring
- (format-time-string (cdr org-time-stamp-formats))
- 1 -1)
- "]."
- (if block
- (format " Considered range is /%s/." block)
- "")
- "\n\n|L|Headline|Time|\n")
- (org-clock-sum ts te)
- (setq h (/ org-clock-file-total-minutes 60)
- m (- org-clock-file-total-minutes (* 60 h)))
- (insert-before-markers "|-\n|0|" "*Total file time*| "
- (format "*%d:%02d*" h m)
- "|\n")
- (goto-char (point-min))
- (while (setq p (next-single-property-change (point) :org-clock-minutes))
- (goto-char p)
- (when (setq time (get-text-property p :org-clock-minutes))
- (save-excursion
- (beginning-of-line 1)
- (when (and (looking-at (org-re "\\(\\*+\\)[ \t]+\\(.*?\\)\\([ \t]+:[[:alnum:]_@:]+:\\)?[ \t]*$"))
- (setq level (- (match-end 1) (match-beginning 1)))
- (<= level maxlevel))
- (setq hlc (if emph (or (cdr (assoc level hlchars)) "") "")
- hdl (match-string 2)
- h (/ time 60)
- m (- time (* 60 h)))
- (goto-char ins)
- (if (= level 1) (insert-before-markers "|-\n"))
- (insert-before-markers
- "| " (int-to-string level) "|" hlc hdl hlc " |"
- (make-string (1- level) ?|)
- hlc
- (format "%d:%02d" h m)
- hlc
- " |\n")))))
- (goto-char ins)
- (backward-delete-char 1)
- (goto-char ipos)
- (skip-chars-forward "^|")
- (org-table-align)))
+
+ ;; Get the right scope
+ (setq pos (point))
+ (save-restriction
+ (cond
+ ((not scope))
+ ((eq scope 'file) (widen))
+ ((eq scope 'subtree) (org-narrow-to-subtree))
+ ((eq scope 'tree)
+ (while (org-up-heading-safe))
+ (org-narrow-to-subtree))
+ ((and (symbolp scope) (string-match "^tree\\([0-9]+\\)$"
+ (symbol-name scope)))
+ (setq level (string-to-number (match-string 1 (symbol-name scope))))
+ (catch 'exit
+ (while (org-up-heading-safe)
+ (looking-at outline-regexp) ;; FIXME do we need to test this?
+ (if (<= (org-reduced-level (funcall outline-level)) level)
+ (throw 'exit nil))))
+ (org-narrow-to-subtree))
+ ((or (listp scope) (eq scope 'agenda))
+ (let* ((files (if (listp scope) scope (org-agenda-files)))
+ (scope 'agenda)
+ (p1 (copy-sequence params))
+ file)
+ (plist-put p1 :tostring t)
+ (plist-put p1 :scope 'file)
+ (org-prepare-agenda-buffers files)
+ (setq total-time (+ (or total-time 0) org-clock-file-total-minutes))
+ (while (setq file (pop files))
+ (with-current-buffer (find-buffer-visiting file)
+ (push (org-clocktable-add-file
+ file(org-dblock-write:clocktable p1)) tbl))))))
+ (goto-char pos)
+
+ (unless (eq scope 'agenda)
+ (org-clock-sum ts te)
+ (goto-char (point-min))
+ (while (setq p (next-single-property-change (point) :org-clock-minutes))
+ (goto-char p)
+ (when (setq time (get-text-property p :org-clock-minutes))
+ (save-excursion
+ (beginning-of-line 1)
+ (when (and (looking-at (org-re "\\(\\*+\\)[ \t]+\\(.*?\\)\\([ \t]+:[[:alnum:]_@:]+:\\)?[ \t]*$"))
+ (setq level (- (match-end 1) (match-beginning 1)))
+ (<= level maxlevel))
+ (setq hlc (if emph (or (cdr (assoc level hlchars)) "") "")
+ hdl (match-string 2)
+ h (/ time 60)
+ m (- time (* 60 h)))
+ (if (= level 1) (push "|-\n" tbl))
+ (push (concat
+ "| " (int-to-string level) "|" hlc hdl hlc " |"
+ (make-string (1- level) ?|)
+ hlc (format "%d:%02d" h m) hlc
+ " |\n") tbl))))))
+ (setq tbl (nreverse tbl))
+ (if tostring
+ (mapconcat 'identity tbl "")
+ (goto-char ins)
+ (insert-before-markers
+ "Clock summary at ["
+ (substring
+ (format-time-string (cdr org-time-stamp-formats))
+ 1 -1)
+ "]."
+ (if block
+ (format " Considered range is /%s/." block)
+ "")
+ "\n\n"
+ (if (eq scope 'agenda) "|File" "")
+ "|L|Headline|Time|\n")
+ (setq total-time (or total-time org-clock-file-total-minutes)
+ h (/ total-time 60)
+ m (- total-time (* 60 h)))
+ (insert-before-markers
+ "|-\n|"
+ (if (eq scope 'agenda) "|" "")
+ "|"
+ "*Total time*| "
+ (format "*%d:%02d*" h m)
+ "|\n")
+ (insert-before-markers (mapconcat 'identity (nreverse tbl)
+ (if (eq scope 'agenda) "|-\n" "")))
+ (backward-delete-char 1)
+ (goto-char ipos)
+ (skip-chars-forward "^|")
+ (org-table-align)))))
+
+(defun org-clocktable-add-file (file table)
+ (let ((lines (org-split-string table "\n"))
+ (ff (file-name-nondirectory file)))
+ (mapconcat 'identity
+ (mapcar (lambda (x)
+ (if (string-match org-table-dataline-regexp x)
+ (concat "|" ff x)
+ x))
+ lines)
+ "\n")))
;; FIXME: I don't think anybody uses this, ask David
(defun org-collect-clock-time-entries ()
@@ -17278,6 +17773,7 @@ Optional argument FILE means, use this file instead of the current."
(set-buffer (org-get-agenda-file-buffer file))
(widen)
(setq bmp (buffer-modified-p))
+ (org-refresh-category-properties)
(setq org-todo-keywords-for-agenda
(append org-todo-keywords-for-agenda org-todo-keywords-1))
(setq org-done-keywords-for-agenda
@@ -17380,38 +17876,10 @@ When a buffer is unmodified, it is just killed. When modified, it is saved
(with-current-buffer buf (save-buffer)))
(kill-buffer buf))))
-(defvar org-category-table nil)
-(defun org-get-category-table ()
- "Get the table of categories and positions in current buffer."
- (let (tbl)
- (save-excursion
- (save-restriction
- (widen)
- (goto-char (point-min))
- (while (re-search-forward "^#\\+CATEGORY:[ \t]*\\(.*\\)"
- nil t)
- (push (cons (match-beginning 1)
- (org-trim (match-string 1))) tbl))))
- tbl))
-
(defun org-get-category (&optional pos)
"Get the category applying to position POS."
- (if (not org-category-table)
- (cond
- ((null org-category)
- (setq org-category
- (if buffer-file-name
- (file-name-sans-extension
- (file-name-nondirectory buffer-file-name))
- "???")))
- ((symbolp org-category) (symbol-name org-category))
- (t org-category))
- (let ((tbl org-category-table)
- (pos (or pos (point))))
- (while (and tbl (> (caar tbl) pos))
- (pop tbl))
- (or (cdar tbl) (cdr (nth (1- (length org-category-table))
- org-category-table))))))
+ (get-text-property (or pos (point)) 'org-category))
+
;;; Agenda timeline
(defun org-timeline (&optional include-all)
@@ -17470,18 +17938,16 @@ dates."
(setq date (calendar-gregorian-from-absolute d))
(setq s (point))
(setq rtn (and (not emptyp)
- (apply 'org-agenda-get-day-entries
- entry date args)))
+ (apply 'org-agenda-get-day-entries entry
+ date args)))
(if (or rtn (equal d today) org-timeline-show-empty-dates)
(progn
- (insert (calendar-day-name date) " "
- (number-to-string (extract-calendar-day date)) " "
- (calendar-month-name (extract-calendar-month date)) " "
- (number-to-string (extract-calendar-year date)) "\n")
-; FIXME: this gives a timezone problem
-; (insert (format-time-string org-agenda-date-format
-; (calendar-time-from-absolute d 0))
-; "\n")
+ (insert
+ (if (stringp org-agenda-format-date)
+ (format-time-string org-agenda-format-date
+ (org-time-from-absolute date))
+ (funcall org-agenda-format-date date))
+ "\n")
(put-text-property s (1- (point)) 'face 'org-agenda-structure)
(put-text-property s (1- (point)) 'org-date-line t)
(if (equal d today)
@@ -17544,7 +18010,7 @@ When EMPTY is non-nil, also include days without any entries."
(defvar org-starting-day nil) ; local variable in the agenda buffer
(defvar org-agenda-span nil) ; local variable in the agenda buffer
(defvar org-include-all-loc nil) ; local variable
-
+(defvar org-agenda-remove-date nil) ; dynamically scoped
;;;###autoload
(defun org-agenda-list (&optional include-all start-day ndays)
@@ -17654,14 +18120,12 @@ NDAYS defaults to `org-agenda-ndays'."
(setq rtnall (append rtnall rtn))))
(if (or rtnall org-agenda-show-all-dates)
(progn
- (insert (format "%-9s %2d %s %4d\n"
- (calendar-day-name date)
- (extract-calendar-day date)
- (calendar-month-name (extract-calendar-month date))
- (extract-calendar-year date)))
-; FIXME: this gives a timezone problem
-; (insert (format-time-string org-agenda-date-format
-; (calendar-time-from-absolute d 0)) "\n")
+ (insert
+ (if (stringp org-agenda-format-date)
+ (format-time-string org-agenda-format-date
+ (org-time-from-absolute date))
+ (funcall org-agenda-format-date date))
+ "\n")
(put-text-property s (1- (point)) 'face 'org-agenda-structure)
(put-text-property s (1- (point)) 'org-date-line t)
(if todayp (put-text-property s (1- (point)) 'org-today t))
@@ -17796,7 +18260,6 @@ The prefix arg TODO-ONLY limits the search to TODO entries."
(with-current-buffer buffer
(unless (org-mode-p)
(error "Agenda file %s is not in `org-mode'" file))
- (setq org-category-table (org-get-category-table))
(save-excursion
(save-restriction
(if org-agenda-restrict
@@ -18133,7 +18596,6 @@ the documentation of `org-diary'."
(with-current-buffer buffer
(unless (org-mode-p)
(error "Agenda file %s is not in `org-mode'" file))
- (setq org-category-table (org-get-category-table))
(let ((case-fold-search nil))
(save-excursion
(save-restriction
@@ -18262,6 +18724,13 @@ the documentation of `org-diary'."
(format "mouse-2 or RET jump to org file %s"
(abbreviate-file-name buffer-file-name))))
(d1 (calendar-absolute-from-gregorian date))
+ (remove-re
+ (concat
+ (regexp-quote
+ (format-time-string
+ "<%Y-%m-%d"
+ (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date))))
+ ".*?>"))
(regexp
(concat
(regexp-quote
@@ -18309,7 +18778,8 @@ the documentation of `org-diary'."
tags (org-get-tags-at))
(looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
(setq txt (org-format-agenda-item
- nil (match-string 1) category tags timestr)))
+ nil (match-string 1) category tags timestr nil
+ remove-re)))
(setq txt org-agenda-no-heading-message))
(setq priority (org-get-priority txt))
(org-add-props txt props
@@ -18437,17 +18907,10 @@ the documentation of `org-diary'."
(setq s (match-string 1)
pos (1- (match-beginning 1))
d2 (org-time-string-to-absolute (match-string 1) d1)
- diff (- d2 d1))
- (if (string-match "-\\([0-9]+\\)\\([dwmy]\\)\\'" s)
- (setq wdays
- (floor
- (* (string-to-number (match-string 1 s))
- (cdr (assoc (match-string 2 s)
- '(("d" . 1) ("w" . 7)
- ("m" . 30.4) ("y" . 365.25)))))))
- (setq wdays org-deadline-warning-days))
- (setq dfrac (/ (* 1.0 (- wdays diff)) wdays))
- (setq upcomingp (and todayp (> diff 0)))
+ diff (- d2 d1)
+ wdays (org-get-wdays s)
+ dfrac (/ (* 1.0 (- wdays diff)) wdays)
+ upcomingp (and todayp (> diff 0)))
;; When to show a deadline in the calendar:
;; If the expiration is within wdays warning time.
;; Past-due deadlines are only shown on the current date
@@ -18492,7 +18955,7 @@ the documentation of `org-diary'."
'face (if donep 'org-done face)
'undone-face face 'done-face 'org-done)
(push txt ee))))))
- ee))
+ (nreverse ee)))
(defun org-agenda-deadline-face (fraction)
"Return the face to displaying a deadline item.
@@ -18566,10 +19029,10 @@ FRACTION is what fraction of the head-warning time has passed."
'org-hd-marker (org-agenda-new-marker pos1)
'type (if pastschedp "past-scheduled" "scheduled")
'date (if pastschedp d2 date)
- 'priority (+ (- 5 diff) (org-get-priority txt))
+ 'priority (+ 94 (- 5 diff) (org-get-priority txt))
'org-category category)
(push txt ee))))))
- ee))
+ (nreverse ee)))
(defun org-agenda-get-blocks ()
"Return the date-range information for agenda display."
@@ -18638,6 +19101,18 @@ groups carry important information:
1 the first time, range or not
8 the second time, if it is a range.")
+(defconst org-plain-time-extension-regexp
+ (concat
+ "\\(\\<[012]?[0-9]"
+ "\\(\\(:\\([0-5][0-9]\\([AaPp][Mm]\\)?\\)\\)\\|\\([AaPp][Mm]\\)\\)\\>\\)"
+ "\\+\\([0-9]+\\)\\(:\\([0-5][0-9]\\)\\)?")
+ "Regular expression to match a time range like 13:30+2:10 = 13:30-15:40.
+Examples: 11:45 or 8am-13:15 or 2:45-2:45pm. After a match, the following
+groups carry important information:
+0 the full match
+7 hours of duration
+9 minutes of duration")
+
(defconst org-stamp-time-of-day-regexp
(concat
"<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} +\\sw+ +\\)"
@@ -18659,7 +19134,7 @@ The flag is set if the currently compiled format contains a `%t'.")
The flag is set if the currently compiled format contains a `%T'.")
(defun org-format-agenda-item (extra txt &optional category tags dotime
- noprefix)
+ noprefix remove-re)
"Format TXT to be inserted into the agenda buffer.
In particular, it adds the prefix and corresponding text properties. EXTRA
must be a string and replaces the `%s' specifier in the prefix format.
@@ -18670,7 +19145,8 @@ time-of-day should be extracted from TXT for sorting of this entry, and for
the `%t' specifier in the format. When DOTIME is a string, this string is
searched for a time before TXT is. NOPREFIX is a flag and indicates that
only the correctly processes TXT should be returned - this is used by
-`org-agenda-change-all-lines'. TAGS can be the tags of the headline."
+`org-agenda-change-all-lines'. TAGS can be the tags of the headline.
+Any match of REMOVE-RE will be removed from TXT."
(save-match-data
;; Diary entries sometimes have extra whitespace at the beginning
(if (string-match "^ +" txt) (setq txt (replace-match "" nil nil txt)))
@@ -18728,6 +19204,10 @@ only the correctly processes TXT should be returned - this is used by
(match-string 2 txt))
t t txt))))
+ (when remove-re
+ (while (string-match remove-re txt)
+ (setq txt (replace-match "" t t txt))))
+
;; Create the final string
(if noprefix
(setq rtn txt)
@@ -19257,8 +19737,13 @@ and by additional input from the age of a schedules or deadline entry."
(save-excursion
(and (outline-next-heading)
(org-flag-heading nil)))) ; show the next heading
+ (run-hooks 'org-agenda-after-show-hook)
(and highlight (org-highlight (point-at-bol) (point-at-eol)))))
+(defvar org-agenda-after-show-hook nil
+ "Normal hook run after an item has been shown from the agenda.
+Point is in the buffer where the item originated.")
+
(defun org-agenda-kill ()
"Kill the entry or subtree belonging to the current agenda entry."
(interactive)
@@ -19746,11 +20231,15 @@ be used to request time specification in the time stamp."
(setq ts (org-deadline))
(message "Deadline for this item set to %s" ts)))))
-(defun org-get-heading ()
+(defun org-get-heading (&optional no-tags)
"Return the heading of the current entry, without the stars."
(save-excursion
(org-back-to-heading t)
- (if (looking-at "\\*+[ \t]+\\([^\r\n]*\\)") (match-string 1) "")))
+ (if (looking-at
+ (if no-tags
+ (org-re "\\*+[ \t]+\\([^\n\r]*?\\)\\([ \t]+:[[:alnum:]:_@]+:[ \t]*\\)?$")
+ "\\*+[ \t]+\\([^\r\n]*\\)"))
+ (match-string 1) "")))
(defun org-agenda-clock-in (&optional arg)
"Start the clock on the currently selected item."
@@ -19909,7 +20398,7 @@ This is a command that has to be installed in `calendar-mode-map'."
"Hebrew: " (calendar-hebrew-date-string date) " (until sunset)\n"
"Islamic: " (calendar-islamic-date-string date) " (until sunset)\n"
"French: " (calendar-french-date-string date) "\n"
- "Bahai: " (calendar-bahai-date-string date) " (until sunset)\n"
+ "Baha'i: " (calendar-bahai-date-string date) " (until sunset)\n"
"Mayan: " (calendar-mayan-date-string date) "\n"
"Coptic: " (calendar-coptic-date-string date) "\n"
"Ethiopic: " (calendar-ethiopic-date-string date) "\n"
@@ -20262,6 +20751,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
(:agenda-style . org-agenda-export-html-style) ;; FIXME: Does this work????
(:convert-org-links . org-export-html-link-org-files-as-html)
(:inline-images . org-export-html-inline-images)
+ (:html-extension . org-export-html-extension)
(:expand-quoted-html . org-export-html-expand)
(:timestamp . org-export-html-with-timestamp)
(:publishing-directory . org-export-publishing-directory)
@@ -20284,7 +20774,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
(save-excursion
(goto-char 0)
(let ((re (org-make-options-regexp
- '("TITLE" "AUTHOR" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE")))
+ '("TITLE" "AUTHOR" "DATE" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE")))
p key val text options)
(while (re-search-forward re nil t)
(setq key (org-match-string-no-properties 1)
@@ -20293,6 +20783,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
((string-equal key "TITLE") (setq p (plist-put p :title val)))
((string-equal key "AUTHOR")(setq p (plist-put p :author val)))
((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 "TEXT")
(setq text (if text (concat text "\n" val) val)))
@@ -20839,7 +21330,7 @@ translations. There is currently no way for users to extend this.")
;; Specific LaTeX stuff
(when latexp
- (require 'org-export-latex nil t)
+ (require 'org-export-latex nil)
(org-export-latex-cleaned-string))
;; Specific HTML stuff
@@ -20854,9 +21345,6 @@ translations. There is currently no way for users to extend this.")
(message "Exporting..."))
;; Remove or replace comments
- ;; FIXME: Does LaTeX export take care of its own comments?
- ;; If :comments is set, use this char for commenting out comments and
- ;; protect them. otherwise delete them
(goto-char (point-min))
(while (re-search-forward "^#\\(.*\n?\\)" nil t)
(if commentsp
@@ -20968,6 +21456,15 @@ translations. There is currently no way for users to extend this.")
(a (assoc rtn alist)))
(or (cdr a) rtn))))
+(defun org-get-min-level (lines)
+ "Get the minimum level in LINES."
+ (let ((re "^\\(\\*+\\) ") l min)
+ (catch 'exit
+ (while (setq l (pop lines))
+ (if (string-match re l)
+ (throw 'exit (org-tr-level (length (match-string 1 l))))))
+ 1)))
+
;; Variable holding the vector with section numbers
(defvar org-section-numbers (make-vector org-level-max 0))
@@ -21058,8 +21555,7 @@ underlined headlines. The default is 3."
(buffer (find-file-noselect filename))
(org-levels-open (make-vector org-level-max nil))
(odd org-odd-levels-only)
- (date (format-time-string "%Y/%m/%d" (current-time)))
- (time (format-time-string "%X" (org-current-time)))
+ (date (plist-get opt-plist :date))
(author (plist-get opt-plist :author))
(title (or (and subtree-p (org-export-get-title-from-subtree))
(plist-get opt-plist :title)
@@ -21128,8 +21624,15 @@ underlined headlines. The default is 3."
(insert (concat (nth 1 lang-words) ": " (or author "")
(if email (concat " <" email ">") "")
"\n")))
- (if (and date time org-export-time-stamp-file)
- (insert (concat (nth 2 lang-words) ": " date " " time "\n")))
+
+ (cond
+ ((and date (string-match "%" date))
+ (setq date (format-time-string date (current-time))))
+ (date)
+ (t (setq date (format-time-string "%Y/%m/%d %X" (current-time)))))
+
+ (if (and date org-export-time-stamp-file)
+ (insert (concat (nth 2 lang-words) ": " date"\n")))
(insert "\n\n")
@@ -21648,7 +22151,7 @@ the body tags themselves."
(org-entry-get (region-beginning)
"EXPORT_FILE_NAME" t))
(file-name-nondirectory buffer-file-name)))
- ".html")))
+ "." org-export-html-extension)))
(current-dir (if buffer-file-name
(file-name-directory buffer-file-name)
default-directory))
@@ -21658,8 +22161,7 @@ the body tags themselves."
(t (get-buffer-create to-buffer)))
(find-file-noselect filename)))
(org-levels-open (make-vector org-level-max nil))
- (date (format-time-string "%Y/%m/%d" (current-time)))
- (time (format-time-string "%X" (org-current-time)))
+ (date (plist-get opt-plist :date))
(author (plist-get opt-plist :author))
(title (or (and subtree-p (org-export-get-title-from-subtree))
(plist-get opt-plist :title)
@@ -21730,6 +22232,12 @@ the body tags themselves."
(setq org-last-level org-min-level)
(org-init-section-numbers)
+ (cond
+ ((and date (string-match "%" date))
+ (setq date (format-time-string date (current-time))))
+ (date)
+ (t (setq date (format-time-string "%Y/%m/%d %X" (current-time)))))
+
;; Get the language-dependent settings
(setq lang-words (or (assoc language org-export-language-setup)
(assoc "en" org-export-language-setup)))
@@ -21766,13 +22274,13 @@ lang=\"%s\" xml:lang=\"%s\">
<title>%s</title>
<meta http-equiv=\"Content-Type\" content=\"text/html;charset=%s\"/>
<meta name=\"generator\" content=\"Org-mode\"/>
-<meta name=\"generated\" content=\"%s %s\"/>
+<meta name=\"generated\" content=\"%s\"/>
<meta name=\"author\" content=\"%s\"/>
%s
</head><body>
"
language language (org-html-expand title)
- (or charset "iso-8859-1") date time author style))
+ (or charset "iso-8859-1") date author style))
(insert (or (plist-get opt-plist :preamble) ""))
@@ -21995,7 +22503,7 @@ lang=\"%s\" xml:lang=\"%s\">
(string-match "\\.org$" thefile))
(setq thefile (concat (substring thefile 0
(match-beginning 0))
- ".html"))
+ "." org-export-html-extension))
(if (and search
;; make sure this is can be used as target search
(not (string-match "^[0-9]*$" search))
@@ -22187,10 +22695,10 @@ lang=\"%s\" xml:lang=\"%s\">
(insert "<a href=\"mailto:" email "\">&lt;"
email "&gt;</a>\n"))
(insert "</p>\n"))
- (when (and date time org-export-time-stamp-file)
+ (when (and date org-export-time-stamp-file)
(insert "<p class=\"date\"> "
(nth 2 lang-words) ": "
- date " " time "</p>\n")))
+ date "</p>\n")))
(if org-export-html-with-timestamp
(insert org-export-html-html-helper-timestamp))
@@ -22788,13 +23296,13 @@ the iCalendar file.")
When COMBINE is non nil, add the category to each line."
(let ((re1 (concat org-ts-regexp "\\|<%%([^>\n]+>"))
(re2 (concat "--?-?\\(" org-ts-regexp "\\)"))
- (org-category-table (org-get-category-table))
(dts (org-ical-ts-to-string
(format-time-string (cdr org-time-stamp-formats) (current-time))
"DTSTART"))
hd ts ts2 state status (inc t) pos b sexp rrule
- scheduledp deadlinep tmp pri category
+ scheduledp deadlinep tmp pri category entry
(sexp-buffer (get-buffer-create "*ical-tmp*")))
+ (org-refresh-category-properties)
(save-excursion
(goto-char (point-min))
(while (re-search-forward re1 nil t)
@@ -22804,6 +23312,7 @@ When COMBINE is non nil, add the category to each line."
ts (match-string 0)
inc t
hd (org-get-heading)
+ entry (org-get-cleaned-entry org-icalendar-include-body)
category (org-get-category))
(if (looking-at re2)
(progn
@@ -22845,12 +23354,15 @@ When COMBINE is non nil, add the category to each line."
(princ (format "BEGIN:VEVENT
%s
%s%s
-SUMMARY:%s
+SUMMARY:%s%s
CATEGORIES:%s
END:VEVENT\n"
(org-ical-ts-to-string ts "DTSTART")
(org-ical-ts-to-string ts2 "DTEND" inc)
- rrule hd category)))))
+ rrule hd
+ (if (and entry (string-match "\\S-" entry))
+ (concat "\nDESCRIPTION: " entry) "")
+ category)))))
(when (and org-icalendar-include-sexps
(condition-case nil (require 'icalendar) (error nil))
@@ -22882,7 +23394,8 @@ END:VEVENT\n"
(eq org-icalendar-include-todo 'all))
(not (member org-archive-tag (org-get-tags-at)))
)
- (setq hd (match-string 3))
+ (setq hd (match-string 3)
+ entry (org-get-cleaned-entry org-icalendar-include-body))
(if (string-match org-bracket-link-regexp hd)
(setq hd (replace-match (if (match-end 3) (match-string 3 hd)
(match-string 1 hd))
@@ -22897,13 +23410,34 @@ END:VEVENT\n"
(princ (format "BEGIN:VTODO
%s
-SUMMARY:%s
+SUMMARY:%s%s
CATEGORIES:%s
SEQUENCE:1
PRIORITY:%d
STATUS:%s
END:VTODO\n"
- dts hd category pri status)))))))))
+ dts hd
+ (if (and entry (string-match "\\S-" entry))
+ (concat "\nDESCRIPTION: " entry) "")
+ category pri status)))))))))
+
+(defun org-get-cleaned-entry (what)
+ "Clean-up description string."
+ (when what
+ (save-excursion
+ (org-back-to-heading t)
+ (let ((s (buffer-substring (point-at-bol 2) (org-end-of-subtree t)))
+ (re (concat org-drawer-regexp "[^\000]*?:END:.*\n?"))
+ (re2 (concat "^[ \t]*" org-keyword-time-regexp ".*\n?")))
+ (while (string-match re s) (setq s (replace-match "" t t s)))
+ (while (string-match re2 s) (setq s (replace-match "" t t s)))
+ (if (string-match "[ \t\r\n]+\\'" s) (setq s (replace-match "" t t s)))
+ (while (string-match "[ \t]*\n[ \t]*" s)
+ (setq s (replace-match "\\n" t t s)))
+ (if (and (numberp what)
+ (> (length s) what))
+ (substring s 0 what)
+ s)))))
(defun org-start-icalendar-file (name)
"Start an iCalendar file by inserting the header."
@@ -23117,9 +23651,11 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
(org-defkey org-mode-map "\C-c\C-v" 'org-show-todo-tree)
(org-defkey org-mode-map "\C-c\C-w" 'org-check-deadlines)
(org-defkey org-mode-map "\C-c/" 'org-occur) ; Minor-mode reserved
+(org-defkey org-mode-map "\C-c\C-x/" 'org-occur-in-agenda-files)
(org-defkey org-mode-map "\C-c\\" 'org-tags-sparse-tree) ; Minor-mode res.
(org-defkey org-mode-map "\C-c\C-m" 'org-ctrl-c-ret)
(org-defkey org-mode-map "\M-\C-m" 'org-insert-heading)
+(org-defkey org-mode-map [(control return)] 'org-insert-heading-after-current)
(org-defkey org-mode-map "\C-c\C-x\C-n" 'org-next-link)
(org-defkey org-mode-map "\C-c\C-x\C-p" 'org-previous-link)
(org-defkey org-mode-map "\C-c\C-l" 'org-insert-link)
@@ -23276,6 +23812,13 @@ because, in this case the deletion might narrow the column."
(put 'org-delete-char 'flyspell-delayed t)
(put 'org-delete-backward-char 'flyspell-delayed t)
+(eval-after-load "pabbrev"
+ '(progn
+ (add-to-list 'pabbrev-expand-after-command-list
+ 'orgtbl-self-insert-command t)
+ (add-to-list 'pabbrev-expand-after-command-list
+ 'org-self-insert-command t)))
+
;; How to do this: Measure non-white length of current string
;; If equal to column width, we should realign.
@@ -23418,7 +23961,9 @@ Calls `org-timestamp-up' or `org-priority-up', or `org-previous-item',
depending on context. See the individual commands for more information."
(interactive "P")
(cond
- ((org-at-timestamp-p t) (call-interactively 'org-timestamp-up))
+ ((org-at-timestamp-p t)
+ (call-interactively (if org-edit-timestamp-down-means-later
+ 'org-timestamp-down 'org-timestamp-up)))
((org-on-heading-p) (call-interactively 'org-priority-up))
((org-at-item-p) (call-interactively 'org-previous-item))
(t (call-interactively 'org-beginning-of-item) (beginning-of-line 1))))
@@ -23429,7 +23974,9 @@ Calls `org-timestamp-down' or `org-priority-down', or `org-next-item'
depending on context. See the individual commands for more information."
(interactive "P")
(cond
- ((org-at-timestamp-p t) (call-interactively 'org-timestamp-down))
+ ((org-at-timestamp-p t)
+ (call-interactively (if org-edit-timestamp-down-means-later
+ 'org-timestamp-up 'org-timestamp-down)))
((org-on-heading-p) (call-interactively 'org-priority-down))
(t (call-interactively 'org-next-item))))
@@ -23517,6 +24064,8 @@ This command does many different things, depending on context:
- If the cursor is on a #+TBLFM line, re-apply the formulas to
the entire table.
+- If the cursor is a the beginning of a dynamic block, update it.
+
- If the cursor is inside a table created by the table.el package,
activate that table.
@@ -23561,6 +24110,9 @@ This command does many different things, depending on context:
(call-interactively 'org-toggle-checkbox))
((org-at-item-p)
(call-interactively 'org-maybe-renumber-ordered-list))
+ ((save-excursion (beginning-of-line 1) (looking-at "#\\+BEGIN:"))
+ ;; Dynamic block
+ (call-interactively 'org-update-dblock))
((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)"))
(cond
((equal (match-string 1) "TBLFM")
@@ -23855,6 +24407,7 @@ With optional NODE, go directly to that node."
["Add/Move Current File to Front of List" org-agenda-file-to-front t]
["Remove Current File from List" org-remove-file t]
["Cycle through agenda files" org-cycle-agenda-files t]
+ ["Occur in all agenda files" org-occur-in-agenda-files t]
"--")
(mapcar 'org-file-menu-entry (org-agenda-files t))))))))
@@ -24016,6 +24569,15 @@ really on, so that the block visually is on the match."
(throw 'exit t)))
nil))))
+(defun org-occur-in-agenda-files (regexp)
+ "Call `multi-occur' with buffers for all agenda files."
+ (interactive "sList all lines matching: ")
+ (multi-occur
+ (mapcar
+ (lambda (x) (or (get-file-buffer x) (find-file-noselect x)))
+ (org-agenda-files))
+ regexp))
+
(defun org-uniquify (list)
"Remove duplicate elements from LIST."
(let (res)
@@ -24349,6 +24911,21 @@ With argument, move up ARG levels."
(outline-up-heading-all arg) ; emacs 21 version of outline.el
(outline-up-heading arg t))) ; emacs 22 version of outline.el
+(defun org-up-heading-safe ()
+ "Move to the heading line of which the present line is a subheading.
+This version will not throw an error. It will return the level of the
+headline found, or nil if no higher level is found."
+ (let ((pos (point)) start-level level
+ (re (concat "^" outline-regexp)))
+ (catch 'exit
+ (outline-back-to-heading t)
+ (setq start-level (funcall outline-level))
+ (if (equal start-level 1) (throw 'exit nil))
+ (while (re-search-backward re nil t)
+ (setq level (funcall outline-level))
+ (if (< level start-level) (throw 'exit level)))
+ nil)))
+
(defun org-goto-sibling (&optional previous)
"Goto the next sibling, even if it is invisible.
When PREVIOUS is set, go to the previous sibling instead. Returns t
@@ -24433,13 +25010,17 @@ When ENTRY is non-nil, show the entire entry."
Show the heading too, if it is currently invisible."
(interactive)
(save-excursion
- (org-back-to-heading t)
- (outline-flag-region
- (max (point-min) (1- (point)))
- (save-excursion
- (re-search-forward (concat "[\r\n]\\(" outline-regexp "\\)") nil 'move)
- (or (match-beginning 1) (point-max)))
- nil)))
+ (condition-case nil
+ (progn
+ (org-back-to-heading t)
+ (outline-flag-region
+ (max (point-min) (1- (point)))
+ (save-excursion
+ (re-search-forward
+ (concat "[\r\n]\\(" outline-regexp "\\)") nil 'move)
+ (or (match-beginning 1) (point-max)))
+ nil))
+ (error nil))))
(defun org-make-options-regexp (kwds)
"Make a regular expression for keyword lines."
@@ -24566,13 +25147,30 @@ Still experimental, may disappear in the furture."
t)))
(t nil)))) ; call paragraph-fill
-(defun org-get-min-level (lines)
- (let ((re "^\\(\\*+\\) ") l min)
- (catch 'exit
- (while (setq l (pop lines))
- (if (string-match re l)
- (throw 'exit (org-tr-level (length (match-string 1 l))))))
- 1)))
+;; FIXME: this needs a much better algorithm
+(defun org-assign-fast-keys (alist)
+ "Assign fast keys to a keyword-key alist.
+Respect keys that are already there."
+ (let (new e k c c1 c2 (char ?a))
+ (while (setq e (pop alist))
+ (cond
+ ((equal e '(:startgroup)) (push e new))
+ ((equal e '(:endgroup)) (push e new))
+ (t
+ (setq k (car e) c2 nil)
+ (if (cdr e)
+ (setq c (cdr e))
+ ;; automatically assign a character.
+ (setq c1 (string-to-char
+ (downcase (substring
+ k (if (= (string-to-char k) ?@) 1 0)))))
+ (if (or (rassoc c1 new) (rassoc c1 alist))
+ (while (or (rassoc char new) (rassoc char alist))
+ (setq char (1+ char)))
+ (setq c2 c1))
+ (setq c (or c2 char)))
+ (push (cons k c) new))))
+ (nreverse new)))
;;;; Finish up
diff --git a/org.pdf b/org.pdf
index 57fef5c..8c98569 100644
--- a/org.pdf
+++ b/org.pdf
Binary files differ
diff --git a/org.texi b/org.texi
index 598d60c..06011a0 100644
--- a/org.texi
+++ b/org.texi
@@ -3,7 +3,7 @@
@setfilename ../info/org
@settitle Org Mode Manual
-@set VERSION 5.08
+@set VERSION 5.10
@set DATE September 2007
@dircategory Emacs
@@ -12,11 +12,11 @@
@end direntry
@c Version and Contact Info
-@set MAINTAINERSITE @uref{http://www.astro.uva.nl/~dominik/Tools/org/,maintainers webpage}
+@set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
@set AUTHOR Carsten Dominik
@set MAINTAINER Carsten Dominik
-@set MAINTAINEREMAIL @email{dominik at science dot uva dot nl}
-@set MAINTAINERCONTACT @uref{mailto:dominik at science dot uva dot nl,contact the maintainer}
+@set MAINTAINEREMAIL @email{carsten at orgmode dot org}
+@set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
@c %**end of header
@finalout
@@ -81,8 +81,9 @@ Software Foundation raise funds for GNU development.''
* Hyperlinks:: Notes in context
* TODO items:: Every tree branch can be a TODO item
* Tags:: Tagging headlines and matching sets of tags
-* Properties and columns::
+* Properties and columns:: Storing information about an entry
* Timestamps:: Assign date and time to items
+* Remember:: Quickly adding nodes to the outline tree
* Agenda views:: Collecting information into views
* Embedded LaTeX:: LaTeX fragments and formulas
* Exporting:: Sharing and publishing of notes
@@ -150,22 +151,16 @@ Hyperlinks
* Link abbreviations:: Shortcuts for writing complex links
* Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
-* Remember:: Org-trees store quick notes
Internal links
* Radio targets:: Make targets trigger links in plain text.
-Remember
-
-* Setting up remember:: Some code for .emacs to get things going
-* Remember templates:: Define the outline of different note types
-* Storing notes:: Directly get the note to where it belongs
-
TODO items
* TODO basics:: Marking and displaying TODO entries
* TODO extensions:: Workflow and assignments
+* Progress logging:: Dates and notes for progress
* Priorities:: Some things are more important than others
* Breaking down tasks:: Splitting a task into manageable pieces
* Checkboxes:: Tick-off lists
@@ -175,7 +170,14 @@ Extended use of TODO keywords
* Workflow states:: From TODO to DONE in steps
* TODO types:: I do this, Fred the rest
* Multiple sets in one file:: Mixing it all, and still finding your way
+* Fast access to TODO states:: Single letter selection of a state
* Per file keywords:: Different files, different requirements
+* Faces for TODO keywords:: Highlighting states
+
+Progress Logging
+
+* Closing items:: When was this entry marked DONE?
+* Tracking TODO state changes:: When did the status change?
Tags
@@ -206,7 +208,7 @@ Timestamps
* Time stamps:: Assigning a time to a tree entry
* Creating timestamps:: Commands which insert timestamps
* Deadlines and scheduling:: Planning your work
-* Progress logging:: Documenting when what work was done.
+* Clocking work time::
Creating timestamps
@@ -218,11 +220,11 @@ Deadlines and Scheduling
* Inserting deadline/schedule:: Planning items
* Repeated tasks:: Items that show up again and again
-Progress Logging
+Remember
-* Closing items:: When was this entry marked DONE?
-* Tracking TODO state changes:: When did the status change?
-* Clocking work time:: When exactly did you work on this item?
+* Setting up remember:: Some code for .emacs to get things going
+* Remember templates:: Define the outline of different note types
+* Storing notes:: Directly get the note to where it belongs
Agenda Views
@@ -419,7 +421,7 @@ the minor Orgstruct-mode.
There is a website for Org-mode which provides links to the newest
version of Org-mode, as well as additional information, frequently asked
questions (FAQ), links to tutorials etc. This page is located at
-@uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
+@uref{http://orgmode.org}.
@page
@@ -806,6 +808,10 @@ the beginning of any other line, the content of that line is made the
new heading. If the command is used at the end of a folded subtree
(i.e. behind the ellipses at the end of a headline), then a headline
like the current one will be inserted after the end of the subtree.
+@kindex C-@key{RET}
+@item C-@key{RET}
+Insert a new heading after the current subtree, same level as the
+current headline. This command works from anywhere in the entry.
@kindex M-S-@key{RET}
@item M-S-@key{RET}
Insert new TODO entry with same level as current heading.
@@ -956,16 +962,20 @@ current file, with the name derived by appending @file{_archive} to the
current file name. For information and examples on how to change this,
see the documentation string of the variable
@code{org-archive-location}. There is also an in-buffer option for
-setting this variable, for example
+setting this variable, for example@footnote{If there are several such
+lines in the buffer, each will be valid for the entries below it. The
+first will also apply to any text before it. This method is only kept
+for backward compatibility. The preferred methods for setting multiple
+archive locations is using a property.}:
@example
#+ARCHIVE: %s_done::
@end example
@noindent
-You may have several such lines in the buffer, they will then be valid
-for the entries following the line (the first will also apply to any
-text before it).
+If you would like to have a special ARCHIVE location for a single entry
+or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
+location as the value (@pxref{Properties and columns}).
@node Sparse trees, Plain lists, Archiving, Document structure
@section Sparse trees
@@ -1254,9 +1264,12 @@ unpredictable for you, configure the variables
@item C-c |
Convert the active region to table. If every line contains at least one
TAB character, the function assumes that the material is tab separated.
+If every line contains a comma, comma-separated values (CSV) are assumed.
If not, lines are split at whitespace into fields. You can use a prefix
-argument to indicate the minimum number of consecutive spaces required
-to identify a field separator (default: just one).@*
+argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
+C-u} forces TAB, and a numeric argument N indicates that at least N
+consequtive spaces, or alternatively a TAB will be the separator.
+@*
If there is no active region, this command creates an empty Org-mode
table. But it's easier just to start typing, like
@kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
@@ -2099,7 +2112,6 @@ links to other files, Usenet articles, emails, and much more.
* Link abbreviations:: Shortcuts for writing complex links
* Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
-* Remember:: Org-trees store quick notes
@end menu
@node Link format, Internal links, Hyperlinks, Hyperlinks
@@ -2513,7 +2525,7 @@ to search the current file. For example, @code{[[file:::find me]]} does
a search for @samp{find me} in the current file, just as
@samp{[[find me]]} would.
-@node Custom searches, Remember, Search options, Hyperlinks
+@node Custom searches, , Search options, Hyperlinks
@section Custom Searches
@cindex custom search strings
@cindex search strings, custom
@@ -2537,175 +2549,6 @@ an implementation example. Search for @samp{BibTeX links} in the source
file.
-@node Remember, , Custom searches, Hyperlinks
-@section Remember
-@cindex @file{remember.el}
-
-Another way to create org entries with links to other files is through
-the @i{remember} package by John Wiegley. @i{Remember} lets you store
-quick notes with little interruption of your work flow. See
-@uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
-information. The notes produced by @i{Remember} can be stored in
-different ways, and Org-mode files are a good target. Org-mode
-significantly expands the possibilities of @i{remember}: You may define
-templates for different note types, and to associate target files and
-headlines with specific templates. It also allows you to select the
-location where a note should be stored interactively, on the fly.
-
-@menu
-* Setting up remember:: Some code for .emacs to get things going
-* Remember templates:: Define the outline of different note types
-* Storing notes:: Directly get the note to where it belongs
-@end menu
-
-@node Setting up remember, Remember templates, Remember, Remember
-@subsection Setting up remember
-
-The following customization will tell @i{remember} to use org files as
-target, and to create annotations compatible with Org-mode links.
-
-@example
-(setq org-directory "~/path/to/my/orgfiles/")
-(setq org-default-notes-file "~/.notes")
-(setq remember-annotation-functions '(org-remember-annotation))
-(setq remember-handler-functions '(org-remember-handler))
-(add-hook 'remember-mode-hook 'org-remember-apply-template)
-@end example
-
-@node Remember templates, Storing notes, Setting up remember, Remember
-@subsection Remember templates
-@cindex templates, for remember
-
-In combination with Org-mode, you can use templates to generate
-different types of @i{remember} notes. For example, if you would like
-to use one template to create general TODO entries, another one for
-journal entries, and a third one for collecting random ideas, you could
-use:
-
-@example
-(setq org-remember-templates
- '((?t "* TODO %?\n %i\n %a" "~/org/TODO.org")
- (?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org")
- (?i "* %^@{Title@}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
-@end example
-
-@noindent In these entries, the character specifies how to select the
-template. The first string specifies the template. Two more (optional)
-strings give the file in which, and the headline under which the new
-note should be stored. The file defaults (if not present or @code{nil})
-to @code{org-default-notes-file}, the heading to
-@code{org-remember-default-headline}. Both defaults help to get to the
-storing location quickly, but you can change the location interactively
-while storing the note.
-
-When you call @kbd{M-x remember} (or @kbd{M-x org-remember}) to remember
-something, org will prompt for a key to select the template (if you have
-more than one template) and then prepare the buffer like
-@example
-* TODO
- [[file:link to where you called remember]]
-@end example
-
-@noindent or
-
-@example
-* [2006-03-21 Tue 15:37]
-
- [[file:link to where you called remember]]
-@end example
-
-@noindent
-During expansion of the template, special @kbd{%}-escapes allow dynamic
-insertion of content:
-@example
-%^@{prompt@} @r{prompt the user for a string and replace this sequence with it.}
-%t @r{time stamp, date only}
-%T @r{time stamp with date and time}
-%u, %U @r{like the above, but inactive time stamps}
-%^t @r{like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}}
- @r{You may define a prompt like @code{%^@{Birthday@}t}}
-%n @r{user name (taken from @code{user-full-name})}
-%a @r{annotation, normally the link created with @code{org-store-link}}
-%i @r{initial content, the region when remember is called with C-u.}
- @r{The entire text will be indented like @code{%i} itself.}
-%^g @r{prompt for tags, with completion on tags in target file.}
-%^G @r{prompt for tags, with completion all tags in all agenda files.}
-%:keyword @r{specific information for certain link types, see below}
-@end example
-
-@noindent
-For specific link types, the following keywords will be defined:
-
-@example
-Link type | Available keywords
--------------------+----------------------------------------------
-bbdb | %:name %:company
-vm, wl, mh, rmail | %:type %:subject %:message-id
- | %:from %:fromname %:fromaddress
- | %:to %:toname %:toaddress
- | %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user. See the variable @code{org-from-is-user-regexp}.}}
-gnus | %:group, @r{for messages also all email fields}
-w3, w3m | %:url
-info | %:file %:node
-calendar | %:date"
-@end example
-
-@noindent
-To place the cursor after template expansion use:
-
-@example
-%? @r{After completing the template, position cursor here.}
-@end example
-
-@noindent
-If you change you mind about which template to use, call
-@code{org-remember} in the remember buffer. You may then select a new
-template that will be filled with the previous context information.
-
-@node Storing notes, , Remember templates, Remember
-@subsection Storing notes
-
-When you are finished preparing a note with @i{remember}, you have to press
-@kbd{C-c C-c} to file the note away. The handler first prompts for a
-target file - if you press @key{RET}, the value specified for the
-template is used. Then the command offers the headings tree of the
-selected file, with the cursor position at the default headline (if you
-had specified one in the template). You can either immediately press
-@key{RET} to get the note placed there. Or you can use the following
-keys to find a better location:
-@example
-@key{TAB} @r{Cycle visibility.}
-@key{down} / @key{up} @r{Next/previous visible headline.}
-n / p @r{Next/previous visible headline.}
-f / b @r{Next/previous headline same level.}
-u @r{One level up.}
-@c 0-9 @r{Digit argument.}
-@end example
-@noindent
-Pressing @key{RET} or @key{left} or @key{right}
-then leads to the following result.
-
-@multitable @columnfractions 0.2 0.15 0.65
-@item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
-@item buffer-start @tab @key{RET} @tab as level 2 heading at end of file
-@item on headline @tab @key{RET} @tab as sublevel of the heading at cursor
-@item @tab @key{left}/@key{right} @tab as same level, before/after current heading
-@item not on headline @tab @key{RET}
- @tab at cursor position, level taken from context.
-@end multitable
-
-So a fast way to store the note to its default location is to press
-@kbd{C-c C-c @key{RET} @key{RET}}. Even shorter would be @kbd{C-u C-c
-C-c}, which does the same without even asking for a file or showing the
-tree.
-
-Before inserting the text into a tree, the function ensures that the
-text has a headline, i.e. a first line that starts with a @samp{*}.
-If not, a headline is constructed from the current date and some
-additional data. If the variable @code{org-adapt-indentation} is
-non-nil, the entire text is also indented so that it starts in the
-same column as the headline (after the asterisks).
-
@node TODO items, Tags, Hyperlinks, Top
@chapter TODO items
@@ -2725,6 +2568,7 @@ things you have to do.
@menu
* TODO basics:: Marking and displaying TODO entries
* TODO extensions:: Workflow and assignments
+* Progress logging:: Dates and notes for progress
* Priorities:: Some things are more important than others
* Breaking down tasks:: Splitting a task into manageable pieces
* Checkboxes:: Tick-off lists
@@ -2756,6 +2600,12 @@ Rotate the TODO state of the current item among
The same rotation can also be done ``remotely'' from the timeline and
agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
+
+@kindex C-u C-c C-t
+@item C-u C-c C-t
+Select a specific keyword using completion of (if it has been set up)
+the fast selection interface.
+
@kindex S-@key{right}
@kindex S-@key{left}
@item S-@key{right}
@@ -2794,7 +2644,7 @@ the TODO entries directly from that buffer (@pxref{Agenda commands}).
Insert a new TODO entry below the current one.
@end table
-@node TODO extensions, Priorities, TODO basics, TODO items
+@node TODO extensions, Progress logging, TODO basics, TODO items
@section Extended use of TODO keywords
@cindex extended TODO keywords
@@ -2810,7 +2660,9 @@ TODO items in particular (@pxref{Tags}).
* Workflow states:: From TODO to DONE in steps
* TODO types:: I do this, Fred the rest
* Multiple sets in one file:: Mixing it all, and still finding your way
+* Fast access to TODO states:: Single letter selection of a state
* Per file keywords:: Different files, different requirements
+* Faces for TODO keywords:: Highlighting states
@end menu
@node Workflow states, TODO types, TODO extensions, TODO extensions
@@ -2875,7 +2727,7 @@ would use @kbd{C-3 C-c C-v}. To collect Lucy's items from all agenda
files into a single buffer, you would use the prefix arg as well when
creating the global todo list: @kbd{C-3 C-c t}.
-@node Multiple sets in one file, Per file keywords, TODO types, TODO extensions
+@node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
@subsection Multiple keyword sets in one file
@cindex todo keyword sets
@@ -2918,7 +2770,31 @@ These keys jump from one TODO subset to the next. In the above example,
would switch from @code{DONE} to @code{REPORT} in the example above.
@end table
-@node Per file keywords, , Multiple sets in one file, TODO extensions
+@node Fast access to TODO states, Per file keywords, Multiple sets in one file, TODO extensions
+@subsection Fast access to TODO states
+
+If you would like to quickly change an entry to an arbitrary TODO state
+instead of cycling through the states, you can set up keys for
+single-letter access to the states. This is done by adding the section
+key after each keyword, in parenthesis. For example:
+
+@lisp
+(setq org-todo-keywords
+ '((sequence "TODO(t)" "|" "DONE(d)")
+ (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
+ (sequence "|" "CANCELED(c)")))
+@end lisp
+
+If you then press @code{C-u C-c C-t} followed by the selection key, the
+entry will be switched to this state. @key{SPC} can be used to remove
+any TODO keyword from an entry. Should you like this way of selecting
+TODO states a lot, you might want to set the variable
+@code{org-use-fast-todo-selection} to @code{t} and make this behavior
+the default. Check also the variable
+@code{org-fast-tag-selection-include-todo}, it allows to change the TODO
+state through the tags interface (@pxref{Setting tags}).
+
+@node Per file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
@subsection Setting up keywords for individual files
@cindex keyword options
@cindex per file keywords
@@ -2961,7 +2837,99 @@ Org-mode is activated after visiting a file. @kbd{C-c C-c} with the
cursor in a line starting with @samp{#+} is simply restarting Org-mode
for the current buffer.}.
-@node Priorities, Breaking down tasks, TODO extensions, TODO items
+@node Faces for TODO keywords, , Per file keywords, TODO extensions
+@subsection Faces for TODO keywords
+@cindex faces, for TODO keywords
+
+Org-mode highlights TODO keywords with special faces: @code{org-todo}
+for keywords indicating that an item still has to be acted upon, and
+@code{org-done} for keywords indicating that an item is finished. If
+you are using more than 2 different states, you might want to use
+special faces for some of them. This can be done using the variable
+@code{org-todo-keyword-faces}. For example:
+
+@lisp
+(setq org-todo-keyword-faces
+ '(("TODO" . org-warning)
+ ("DEFERRED" . shadow)
+ ("CANCELED" . (:foreground "blue" :weight bold))))
+@end lisp
+
+@node Progress logging, Priorities, TODO extensions, TODO items
+@section Progress Logging
+@cindex progress logging
+@cindex logging, of progress
+
+Org-mode can automatically record a time stamp and even a note when you
+mark a TODO item as DONE, or even each time you change the state of
+a TODO item.
+
+@menu
+* Closing items:: When was this entry marked DONE?
+* Tracking TODO state changes:: When did the status change?
+@end menu
+
+@node Closing items, Tracking TODO state changes, Progress logging, Progress logging
+@subsection Closing items
+
+If you want to keep track of @emph{when} a certain TODO item was
+finished, turn on logging with@footnote{The corresponding in-buffer
+setting is: @code{#+STARTUP: logdone}}
+
+@lisp
+(setq org-log-done t)
+@end lisp
+
+@noindent
+Then each time you turn a TODO entry into DONE using either @kbd{C-c
+C-t} in the Org-mode buffer or @kbd{t} in the agenda buffer, a line
+@samp{CLOSED: [timestamp]} will be inserted just after the headline. If
+you turn the entry back into a TODO item through further state cycling,
+that line will be removed again. In the timeline (@pxref{Timeline}) and
+in the agenda (@pxref{Weekly/Daily agenda}), you can then use the
+@kbd{l} key to display the TODO items closed on each day, giving you an
+overview of what has been done on a day. If you want to record a note
+along with the timestamp, use@footnote{The corresponding in-buffer
+setting is: @code{#+STARTUP: lognotedone}}
+
+@lisp
+(setq org-log-done '(done))
+@end lisp
+
+@node Tracking TODO state changes, , Closing items, Progress logging
+@subsection Tracking TODO state changes
+
+When TODO keywords are used as workflow states (@pxref{Workflow
+states}), you might want to keep track of when a state change occurred
+and record a note about this change. With the setting
+
+@lisp
+(setq org-log-done '(state))
+@end lisp
+
+@noindent
+each state change will prompt you for a note that will be attached to
+the current headline. If you press @kbd{C-c C-c} without typing
+anything into the note buffer, only the time of the state change will be
+noted. Very likely you do not want this verbose tracking all the time,
+so it is probably better to configure this behavior with in-buffer
+options. For example, if you are tracking purchases, put these into a
+separate file that contains:
+
+@example
+#+SEQ_TODO: TODO(t) ORDERED(o) INVOICE(i) PAYED(p) | RECEIVED(r)
+#+STARTUP: lognotestate
+@end example
+
+If you only need to take a note for some of the states, mark those
+states with an additional @samp{@@}, like this:
+
+@example
+#+SEQ_TODO: TODO(t) ORDERED(o@@) INVOICE(i@@) PAYED(p) | RECEIVED(r)
+#+STARTUP: lognotestate
+@end example
+
+@node Priorities, Breaking down tasks, Progress logging, TODO items
@section Priorities
@cindex priorities
@@ -2993,8 +2961,9 @@ agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
@kindex S-@key{down}
@item S-@key{up}
@itemx S-@key{down}
-Increase/decrease priority of current headline. Note that these keys
-are also used to modify time stamps (@pxref{Creating timestamps}).
+Increase/decrease priority of current headline@footnote{See also the
+option @code{org-priority-start-cycle-with-default'}.}. Note that these
+keys are also used to modify time stamps (@pxref{Creating timestamps}).
Furthermore, these keys are also used by CUA-mode (@pxref{Conflicts}).
@end table
@@ -3671,7 +3640,7 @@ be used by Emacs Lisp programs to work with properties and to implement
features based on them. For more information see @ref{Using the
property API}.
-@node Timestamps, Agenda views, Properties and columns, Top
+@node Timestamps, Remember, Properties and columns, Top
@chapter Timestamps
@cindex time stamps
@cindex date stamps
@@ -3683,7 +3652,7 @@ planning.
* Time stamps:: Assigning a time to a tree entry
* Creating timestamps:: Commands which insert timestamps
* Deadlines and scheduling:: Planning your work
-* Progress logging:: Documenting when what work was done.
+* Clocking work time::
@end menu
@@ -3705,13 +3674,12 @@ Its presence causes entries to be shown on specific dates in the agenda
(@pxref{Weekly/Daily agenda}). We distinguish:
@table @var
-@item Plain time stamp
+@item Plain time stamp, Event, Appointment
@cindex timestamp
A simple time stamp just assigns a date/time to an item. This is just
-like writing down an appointment in a paper agenda, or like writing down
-an event in a diary, when you want to take note of when something
-happened. In the timeline and agenda displays, the headline of an entry
-associated with a plain time stamp will be shown exactly on that date.
+like writing down an appointment or event in a paper agenda. In the
+timeline and agenda displays, the headline of an entry associated with a
+plain time stamp will be shown exactly on that date.
@example
* Meet Peter at the movies <2006-11-01 Wed 19:15>
@@ -3953,7 +3921,7 @@ format is shorter, things do work as expected.
@end itemize
-@node Deadlines and scheduling, Progress logging, Creating timestamps, Timestamps
+@node Deadlines and scheduling, Clocking work time, Creating timestamps, Timestamps
@section Deadlines and Scheduling
A time stamp may be preceded by special keywords to facilitate planning
@@ -3992,6 +3960,15 @@ I.e., the task will automatically be forwarded until completed.
*** TODO Call Trillian for a date on New Years Eve.
SCHEDULED: <2004-12-25 Sat>
@end example
+
+@noindent
+@b{Important:} Scheduling an item in Org-mode should @i{not} be
+understood like @i{Scheduling a meeting}. Setting a date for a meeting
+is just a simple appointment, you should mark this entry with a simple
+plain time stamp, to get this item shown on the date where it applies.
+This is a frequent mis-understanding from Org-users. In Org-mode,
+@i{Scheduling} means setting a date when you want to start working on an
+action item.
@end table
@menu
@@ -4068,77 +4045,8 @@ will be visible.
You may have both scheduling and deadline information for a specific
task - just make sure that the repeater intervals on both are the same.
-@node Progress logging, , Deadlines and scheduling, Timestamps
-@section Progress Logging
-@cindex progress logging
-@cindex logging, of progress
-
-Org-mode can automatically record a time stamp when you mark a TODO item
-as DONE, or even each time when you change the state of a TODO item.
-You can also measure precisely the time you spent on specific items in a
-project by starting and stopping a clock when you start and stop working
-on an aspect of a project.
-
-@menu
-* Closing items:: When was this entry marked DONE?
-* Tracking TODO state changes:: When did the status change?
-* Clocking work time:: When exactly did you work on this item?
-@end menu
-
-@node Closing items, Tracking TODO state changes, Progress logging, Progress logging
-@subsection Closing items
-
-If you want to keep track of @emph{when} a certain TODO item was
-finished, turn on logging with@footnote{The corresponding in-buffer
-setting is: @code{#+STARTUP: logdone}}
-
-@lisp
-(setq org-log-done t)
-@end lisp
-
-@noindent
-Then each time you turn a TODO entry into DONE using either @kbd{C-c
-C-t} in the Org-mode buffer or @kbd{t} in the agenda buffer, a line
-@samp{CLOSED: [timestamp]} will be inserted just after the headline. If
-you turn the entry back into a TODO item through further state cycling,
-that line will be removed again. In the timeline (@pxref{Timeline}) and
-in the agenda (@pxref{Weekly/Daily agenda}), you can then use the
-@kbd{l} key to display the TODO items closed on each day, giving you an
-overview of what has been done on a day. If you want to record a note
-along with the timestamp, use@footnote{The corresponding in-buffer
-setting is: @code{#+STARTUP: lognotedone}}
-
-@lisp
-(setq org-log-done '(done))
-@end lisp
-
-@node Tracking TODO state changes, Clocking work time, Closing items, Progress logging
-@subsection Tracking TODO state changes
-
-When TODO keywords are used as workflow states (@pxref{Workflow
-states}), you might want to keep track of when a state change occurred,
-and you may even want to attach notes to that state change. With the
-setting
-
-@lisp
-(setq org-log-done '(state))
-@end lisp
-
-@noindent
-each state change will prompt you for a note that will be attached to
-the current headline. Very likely you do not want this verbose tracking
-all the time, so it is probably better to configure this behavior with
-in-buffer options. For example, if you are tracking purchases, put
-these into a separate file that starts with:
-
-@example
-#+SEQ_TODO: TODO ORDERED INVOICE PAYED RECEIVED SENT
-#+STARTUP: lognotestate
-@end example
-
-
-@node Clocking work time, , Tracking TODO state changes, Progress logging
-@subsection Clocking work time
+@node Clocking work time, , Deadlines and scheduling, Timestamps
+@section Clocking work time
Org-mode allows you to clock the time you spent on specific tasks in a
project. When you start working on an item, you can start the clock.
@@ -4194,8 +4102,16 @@ report as an org-mode table into the current file.
If such a block already exists, its content is replaced by the new
table. The @samp{BEGIN} line can specify options:
@example
-:maxlevels @r{Maximum level depth to which times are listed in the table.}
+:maxlevel @r{Maximum level depth to which times are listed in the table.}
:emphasize @r{When @code{t}, emphasize level one and level two items}
+:scope @r{The scope to consider. This can be any of the following:}
+ nil @r{the current buffer or narrowed region}
+ file @r{the full current buffer}
+ subtree @r{the subtree where the clocktable is located}
+ treeN @r{the surrounding level N tree, for example @code{tree3}}
+ tree @r{the surrounding level 1 tree}
+ agenda @r{all agenda files}
+ ("file"..) @r{scan these files}
:block @r{The time block to consider. This block is specified relative}
@r{to the current time and may be any of these keywords:}
@r{@code{today}, @code{yesterday}, @code{thisweek}, @code{lastweek},}
@@ -4203,9 +4119,10 @@ table. The @samp{BEGIN} line can specify options:
:tstart @r{A time string specifying when to start considering times}
:tend @r{A time string specifying when to stop considering times}
@end example
-So to get a clock summary for the current day, you could write
+So to get a clock summary of the current level 1 tree, for the current
+day, you could write
@example
-#+BEGIN: clocktable :maxlevel 2 :block today
+#+BEGIN: clocktable :maxlevel 2 :block today :scope tree1
#+END: clocktable
@end example
@@ -4218,6 +4135,12 @@ only to fit it onto the manual.}
#+END: clocktable
@end example
+@kindex C-c C-c
+@item C-c C-c
+@kindex C-c C-x C-u
+@itemx C-c C-x C-u
+Update dynamical block at point. The cursor needs to be in the
+@code{#+BEGIN} line of the dynamic block.
@kindex C-u C-c C-x C-u
@item C-u C-c C-x C-u
Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
@@ -4228,7 +4151,189 @@ The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
the agenda (@pxref{Weekly/Daily agenda}) to show which tasks have been
worked on or closed during a day.
-@node Agenda views, Embedded LaTeX, Timestamps, Top
+@node Remember, Agenda views, Timestamps, Top
+@chapter Remember
+@cindex @file{remember.el}
+
+The @i{Remember} package by John Wiegley lets you store quick notes with
+little interruption of your work flow. See
+@uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
+information. It is an excellent way to add new notes and TODO items to
+Org-mode files. Org-mode significantly expands the possibilities of
+@i{remember}: You may define templates for different note types, and to
+associate target files and headlines with specific templates. It also
+allows you to select the location where a note should be stored
+interactively, on the fly.
+
+@menu
+* Setting up remember:: Some code for .emacs to get things going
+* Remember templates:: Define the outline of different note types
+* Storing notes:: Directly get the note to where it belongs
+@end menu
+
+@node Setting up remember, Remember templates, Remember, Remember
+@section Setting up remember
+
+The following customization will tell @i{remember} to use org files as
+target, and to create annotations compatible with Org-mode links.
+
+@example
+(setq org-directory "~/path/to/my/orgfiles/")
+(setq org-default-notes-file (concat org-directory "/notes.org"))
+(setq remember-annotation-functions '(org-remember-annotation))
+(setq remember-handler-functions '(org-remember-handler))
+(add-hook 'remember-mode-hook 'org-remember-apply-template)
+@end example
+
+
+@node Remember templates, Storing notes, Setting up remember, Remember
+@section Remember templates
+@cindex templates, for remember
+
+In combination with Org-mode, you can use templates to generate
+different types of @i{remember} notes. For example, if you would like
+to use one template to create general TODO entries, another one for
+journal entries, and a third one for collecting random ideas, you could
+use:
+
+@example
+(setq org-remember-templates
+ '((?t "* TODO %?\n %i\n %a" "~/org/TODO.org" "Tasks")
+ (?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org")
+ (?i "* %^@{Title@}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
+@end example
+
+@noindent In these entries, the character specifies how to select the
+template. The first string specifies the template. Two more (optional)
+strings give the file in which, and the headline under which the new
+note should be stored. The file defaults (if not present or @code{nil})
+to @code{org-default-notes-file}, the heading to
+@code{org-remember-default-headline}. Both defaults help to get to the
+storing location quickly, but you can change the location interactively
+while storing the note.
+
+When you call @kbd{M-x remember} (or @kbd{M-x org-remember}) to remember
+something, org will prompt for a key to select the template (if you have
+more than one template) and then prepare the buffer like
+@example
+* TODO
+ [[file:link to where you called remember]]
+@end example
+
+@noindent or
+
+@example
+* [2006-03-21 Tue 15:37]
+
+ [[file:link to where you called remember]]
+@end example
+
+@noindent
+During expansion of the template, special @kbd{%}-escapes allow dynamic
+insertion of content:
+@example
+%^@{prompt@} @r{prompt the user for a string and replace this sequence with it.}
+%t @r{time stamp, date only}
+%T @r{time stamp with date and time}
+%u, %U @r{like the above, but inactive time stamps}
+%^t @r{like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}}
+ @r{You may define a prompt like @code{%^@{Birthday@}t}}
+%n @r{user name (taken from @code{user-full-name})}
+%a @r{annotation, normally the link created with @code{org-store-link}}
+%A @r{like @code{%a}, but prompt for the description part}
+%i @r{initial content, the region when remember is called with C-u.}
+ @r{The entire text will be indented like @code{%i} itself.}
+%^g @r{prompt for tags, with completion on tags in target file.}
+%^G @r{prompt for tags, with completion all tags in all agenda files.}
+%:keyword @r{specific information for certain link types, see below}
+@end example
+
+@noindent
+For specific link types, the following keywords will be
+defined@footnote{If you define your own link types (@pxref{Adding
+hyperlink types}), any property you store with
+@code{org-store-link-props} can be accessed in remember templates in a
+similar way.}:
+
+@example
+Link type | Available keywords
+-------------------+----------------------------------------------
+bbdb | %:name %:company
+vm, wl, mh, rmail | %:type %:subject %:message-id
+ | %:from %:fromname %:fromaddress
+ | %:to %:toname %:toaddress
+ | %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user. See the variable @code{org-from-is-user-regexp}.}}
+gnus | %:group, @r{for messages also all email fields}
+w3, w3m | %:url
+info | %:file %:node
+calendar | %:date"
+@end example
+
+@noindent
+To place the cursor after template expansion use:
+
+@example
+%? @r{After completing the template, position cursor here.}
+@end example
+
+@noindent
+If you change you mind about which template to use, call
+@code{org-remember} in the remember buffer. You may then select a new
+template that will be filled with the previous context information.
+
+@node Storing notes, , Remember templates, Remember
+@section Storing notes
+
+When you are finished preparing a note with @i{remember}, you have to press
+@kbd{C-c C-c} to file the note away. The handler will store the note in
+the file and under the headline specified in the template, or it will
+use the default file and headlines. The window configuration will be
+restored, and you are back in the working context before the call to
+@code{remember}. To re-use the location found during the last call to
+@code{remember}, exit the remember buffer with @kbd{C-u C-u C-c C-c},
+i.e. specify a double prefix argument to @kbd{C-c C-c}.
+
+If you want to store the note to a different place, use @kbd{C-u C-c
+C-c} instead to exit remember@footnote{Configure the variable
+@code{org-remember-store-without-prompt} to make this behavior the
+default.}. The handler will then first prompt for a target file - if you
+press @key{RET}, the value specified for the template is used. Then the
+command offers the headings tree of the selected file, with the cursor
+position at the default headline (if you had specified one in the
+template). You can either immediately press @key{RET} to get the note
+placed there. Or you can use the following keys to find a different
+location:
+@example
+@key{TAB} @r{Cycle visibility.}
+@key{down} / @key{up} @r{Next/previous visible headline.}
+n / p @r{Next/previous visible headline.}
+f / b @r{Next/previous headline same level.}
+u @r{One level up.}
+@c 0-9 @r{Digit argument.}
+@end example
+@noindent
+Pressing @key{RET} or @key{left} or @key{right}
+then leads to the following result.
+
+@multitable @columnfractions 0.2 0.15 0.65
+@item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
+@item on headline @tab @key{RET} @tab as sublevel of the heading at cursor, first or last
+@item @tab @tab depending on @code{org-reverse-note-order}.
+@item @tab @key{left}/@key{right} @tab as same level, before/after current heading
+@item buffer-start @tab @key{RET} @tab as level 2 heading at end of file or level 1 at beginning
+@item @tab @tab depending on @code{org-reverse-note-order}.
+@item not on headline @tab @key{RET}
+ @tab at cursor position, level taken from context.
+@end multitable
+
+Before inserting the text into a tree, the function ensures that the
+text has a headline, i.e. a first line that starts with a @samp{*}. If
+not, a headline is constructed from the current date and some additional
+data. If you have indented the text of the note below the headline, the
+indentation will be adapted if inserting the note into the tree requires
+demotion from level 1.
+
+@node Agenda views, Embedded LaTeX, Remember, Top
@chapter Agenda Views
@cindex agenda views
@@ -4313,6 +4418,10 @@ Remove current file from the list of agenda files.
@item C-,
@itemx C-'
Cycle through agenda file list, visiting one file after the other.
+@kindex C-c C-x /
+@item C-c C-x /
+Search for a regular rexpression in all agenda files and display the
+results in an @code{occur} buffer.
@end table
@noindent
@@ -4616,16 +4725,25 @@ associated with the item.
@cindex category
The category is a broad label assigned to each agenda item. By default,
the category is simply derived from the file name, but you can also
-specify it with a special line in the buffer, like this:
+specify it with a special line in the buffer, like this@footnote{If
+there are several such lines in a file, each specifies the category for
+the text below it. The first category also applies to any text before
+the first CATEGORY line. This method is only kept for backward
+compatibility. The preferred method for setting multiple categories in
+a buffer is using a property.}:
@example
#+CATEGORY: Thesis
@end example
-If there are several such lines in a file, each specifies the category
-for the text below it (but the first category also applies to any text
-before the first CATEGORY line). The display in the agenda buffer looks
-best if the category is not longer than 10 characters.
+@noindent
+If you would like to have a special CATEGORY for a single entry or a
+(sub)tree, give the entry a @code{:CATEGORY:} property with the location
+as the value (@pxref{Properties and columns}).
+
+@noindent
+The display in the agenda buffer looks best if the category is not
+longer than 10 characters.
@node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
@subsection Time-of-Day Specifications
@@ -4860,7 +4978,8 @@ inheritance, this may be more than the tags listed in the line itself.
@c
@kindex :
@item :
-Set tags for the current headline.
+Set tags for the current headline. If there is an active region in the
+agenda, change a tag for all headings in the region.
@c
@kindex a
@item a
@@ -6068,7 +6187,7 @@ the Emacs package @file{footnote.el} to create footnotes. For example:
The org-mode homepage[1] clearly needs help from
a good web designer.
-[1] The link is: http://www.astro.uva.nl/~dominik/Tools/org
+[1] The link is: http://orgmode.org
@end example
@noindent
@@ -6172,6 +6291,7 @@ Insert template with export options, see example below.
@example
#+TITLE: the title to be shown (default is the buffer name)
#+AUTHOR: the author (default taken from @code{user-full-name})
+#+DATE: A date, fixed, of a format string for @code{format-time-string}
#+EMAIL: his/her email address (default from @code{user-mail-address})
#+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language})
#+TEXT: Some descriptive text to be inserted at the beginning.
@@ -6776,7 +6896,7 @@ this file, and (potentially) the corresponding @emph{fast tag selection}
keys. The corresponding variable is @code{org-tag-alist}.
@item #+TBLFM:
This line contains the formulas for the table directly above the line.
-@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:
+@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS, #+DATE:
These lines provide settings for exporting files. For more details see
@ref{Export options}.
@item #+SEQ_TODO: #+TYP_TODO:
@@ -6830,6 +6950,9 @@ of the checkbox.
@item
If the cursor is on a numbered item in a plain list, renumber the
ordered list.
+@item
+If the cursor is on the @code{#+BEGIN} line of a dynamical block, the
+block is updated.
@end itemize
@node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
@@ -7197,6 +7320,12 @@ blogs. @url{http://www.cognition.ens.fr/~guerry/blorg.html}.
@item @file{org2rem.el} by Bastien Guerry
Translates Org-mode files into something readable by
Remind. @url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
+@item @file{org-toc.el} by Bastien Guerry
+Produces a simple table of contents of an Org-mode file, for easy
+navigation. @url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
+@item @file{org-registry.el} by Bastien Guerry
+Find which Org-file link to a certain document.
+@url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
@end table
@page
@@ -7683,8 +7812,9 @@ Skip current entry if it has a deadline.
@item '(org-agenda-skip-entry-if 'scheduled 'deadline)
Skip current entry if it has a deadline, or if it is scheduled.
@item '(org-agenda-skip-entry 'regexp "regular expression")
-Skip current entry if the regular expression contained in the variable
-@code{org-agenda-skip-regexp} matches in the entry.
+Skip current entry if the regular expression matches in the entry.
+@item '(org-agenda-skip-entry 'notregexp "regular expression")
+Skip current entry unless the regular expression matches.
@item '(org-agenda-skip-subtree-if 'regexp "regular expression")
Same as above, but check and skip the entire subtree.
@end table
diff --git a/orgcard.pdf b/orgcard.pdf
index 17cd75d..1b6b57b 100644
--- a/orgcard.pdf
+++ b/orgcard.pdf
Binary files differ
diff --git a/orgcard.tex b/orgcard.tex
index d6a304e..2260c9f 100644
--- a/orgcard.tex
+++ b/orgcard.tex
@@ -1,5 +1,5 @@
% Reference Card for Org Mode
-\def\orgversionnumber{5.08}
+\def\orgversionnumber{5.10}
\def\versionyear{2007} % latest update
\def\year{2007} % latest copyright year
@@ -308,6 +308,7 @@ are preserved on all copies.
\section{Structure Editing}
\key{insert new heading/item at current level}{M-RET}
+\key{insert new heading after subtree}{C-RET}
\key{insert new TODO entry/checkbox item}{M-S-RET}
\key{promote current heading up one level}{M-LEFT}
@@ -612,12 +613,12 @@ after ``{\tt :}'', and dictionary words elsewhere.
\key{configure stuck projects}{C-c a !$^1$}
\key{agenda for date at cursor}{C-c C-o}
-\vskip 1mm
-To set categories, add lines like$^2$:
-\vskip -1mm
-\beginexample%
-\#+CATEGORY: MyCateg
-\endexample
+%\vskip 1mm
+%To set categories, add lines like$^2$:
+%\vskip -1mm
+%\beginexample%
+%\#+CATEGORY: MyCateg
+%\endexample
{\bf Commands available in an agenda buffer}
diff --git a/orgcard_letter.pdf b/orgcard_letter.pdf
index 863372f..a31975e 100644
--- a/orgcard_letter.pdf
+++ b/orgcard_letter.pdf
Binary files differ