comparison lisp/org/org-list.el @ 104164:ac1a55cc2c38

2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-create-formula-image): Remove the -E option for dvipng. * org-exp.el (org-default-export-plist): Respect #+BIND. (org-export-confirm-letbind): New function. * org.el (org-paste-subtree): Test the kill ring entry if it is going to be used. (org-copy-subtree): Use `org-forward-same-level'. (org-forward-same-level): Respect the `invisibe-ok' arg for back-to-heading. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-table-map-tables): Make sure cursor is back at table beginning after funcall. * org-agenda.el (org-agenda-bulk-action): Make sure parents are handled before children, and do not error if an entry is not found, probably because it hase been remove when the parent was archived or refiled. * org.el (org-ido-completing-read): Accept straight lists for completion as well as alists. * org-timer.el (org-timer-cancel-timers): Renamed from `org-timer-cancel-timers'. * org.el (org-cycle-internal-local): Fix problem with finding next invisible line. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-list.el (org-list-send-list): Call `org-list-goto-true-beginning' instead of `org-list-find-true-beginning', which does not exist. * org-timer.el (org-timer-reset-timers): Use `mapc'. (org-timer-set-timer): Do not assign to heading. * org-id.el (org-id-open): Quote function name. * org-macs.el (org-unmodified): Turn off recording undo information while running inside the macro. * org-table.el (org-table-export): Also work in file-less buffers. * org.el (org-startup-indented): New option. (org-startup-options): Add new options indent and noindent. (org-unfontify-region): Remove line-prefix and wrap-prefix properties. (org-after-demote-entry-hook, org-after-promote-entry-hook): New hooks. (org-promote, org-demote): Run the new hooks. * org-table.el (org-table-align): Replace leading \n as well. * org-exp.el (org-export-push-to-kill-ring): Remove `line-prefix' and `line-wrap' text properties. * org-compat.el (org-kill-new): New function. * org-agenda.el (org-format-agenda-item): Remove `line-prefix' and `line-wrap' text properties. * org-indent.el: New file. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-provide-todo-statistics): Tweak docstring. * org-id.el (org-id-open): Honor `org-link-frame-setup'. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-as-org): Insert the "-source" string before the extension. * org.el (org-read-date): Make sure the calendar is in the current frame. (org-set-emph-re): Remove the ? from the post-match. (org-emphasis-regexp-components): Add backslash to the postmatch class. (org-set-font-lock-defaults): Write \n instead of \xa, and make it optional so that also lines at the end of the buffers will still be matched as headlines. * org-table.el (org-table-error-on-row-ref-crossing-hline): Variable made obsolete. (org-table-relative-ref-may-cross-hline): New option. (org-table-find-row-type): Honow the new option `org-table-relative-ref-may-cross-hline'. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-table.el (org-table-cut-region, org-table-copy-region): Work on single field if no active region. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-make-header): Only insert title if one is defined. * org.el (org-make-options-regexp): Allow empty values. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-cycle-internal-local): Improved version of finding next visible line. (org-cycle-hide-drawers): Only hide drawers if this is really necessary. (outline-end-of-subtree): Make `outline-end-of-subtree' use the org-version of this function in Org-mode. We use advice to implement this change, so that future changes to this function in outline.el wil be handled properly. (org-forward-same-level, org-backward-same-level): New commands. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-remove-empty-overlays-at) (org-clean-visibility-after-subtree-move): New functons. (org-move-subtree-down): Simplify cleanup of display. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-mac-message.el (org-mac-message-get-links): Improve docstring. Make argument SELECT-OR-FLAGGED optional, default to "s". Fix the return value. (org-mac-message-insert-flagged): Simplify. * org.el (org-refile-get-location): Tamper with refile history o that history contains compete matches instead of the entered string. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-store-link): Never store a link to an inline task. * org-footnote.el (org-footnote-goto-local-insertion-point): Skip inline tasks when positioning footnotes. * org.el (org-refile): Remove the END line when archiving an inline task that does have an END line. * org-archive.el (org-archive-subtree): Remove the END line when archiving an inline task that does have an END line. * org-macs.el (org-with-limited-levels): New macro. (org-get-limited-outline-regexp): New function. * org-exp.el (org-export-format-source-code-or-example): Fix bug that did not enumerate first line. (org-export-mark-radio-links): Skip matches in links. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-activate-plain-links): Make single-match. (org-adapt-indentation): Fix docstring. * org-macs.el (org-unmodified): Turn of modification hooks while running this macro. 2009-08-06 Bastien Guerry <bzg@altern.org> * org.el (org-adapt-indentation): Slightly improve the docstring. (org-occur): Sends an error when the user inputs an empty string. (org-priority): Bugfix: the tag alignement should happen within save-excursion. 2009-08-06 Bastien Guerry <bzg@altern.org> * org.el (org-make-link-regexps): Don't exclude parentheses from `org-plain-link-re' (org-cycle-internal-local): When locally cycling, switch directly from CHILDREN to FOLDED if there is no subtree (org-cycle): Update the docstring to document the new behavior of `org-cycle-internal-local'. 2009-08-06 Nicolas Goaziou <n.goaziou@neuf.fr> (tiny change) * org-clock.el (org-clock-in): Bugfix: recognize timestamps with an abbreviated format for days. 2009-08-06 Bastien Guerry <bzg@altern.org> * org-protocol.el (org-protocol-default-template-key): New option. * org.el (org-refile): Bugfix: save-excursion before reading the refile target, otherwise cursor moves might confuse `org-refile'. * org.el (org-toggle-heading): Bugfix: correctly convert list items before the first headline. * org.el (org-provide-todo-statistics): Allow a list of TODO keywords to compute statistics against headlines containing a keyword from this list. (org-update-parent-todo-statistics): Possibly use the new allowed value of `org-provide-todo-statistics'. 2009-08-06 Bastien Guerry <bzg@altern.org> * org-timer.el: Add autoload cookie. * org.el (org-occur-link-in-agenda-files): New function. * org-timer.el (org-timer-last-timer): New variable. * org-agenda.el (org-agenda-mode-map): New key for org-timer-set-timer called from the agenda. * org.el (org-mode-map): New key for org-timer-set-timer. * org-timer.el (org-timer-reset-timers) (org-timer-show-remaining-time, org-timer-set-timer): New functions. * org-clock.el (org-show-notification): Update the docstring. * org.el (org-provide-todo-statistics): Allow new value 'all-headlines for this option, which includes entries with no TODO keywords in the todo statistics. (org-update-parent-todo-statistics): Possibly use the new 'all-headline value from `org-provide-todo-statistics'. 2009-08-06 Bastien Guerry <bzg@altern.org> * org-clock.el (org-dblock-write:clocktable): Add a new option :timestamp which allows display of timestamps in clock reports. * org.el (org-mode-map): Define new key `C-c C-*': convert a plain list to a subtree, preserving the structure of the list. (org-set-emph-re): Make the last element optional in the regexp. This regexp now matches an emphasized string at the end of a line. * org-list.el (org-list-goto-true-beginning) (org-list-make-subtree, org-list-make-subtrees): New functions. * org.el (org-eval-in-calendar): Select the right frame. (org-save-frame-excursion): Remove this macro. 2009-08-06 Bastien Guerry <bzg@altern.org> * org-list.el (org-list-beginning-re): Bugfix: don't use * when trying to find the beginning of a list. * org-exp.el (org-get-file-contents): Use a new argument: markup. When present, tell org-get-file-contents not to protect org-like lines. * org-id.el (org-id-uuid-program): New option to set the name of the uuidgen program. (org-id-method): Use `org-id-uuid-program'. (org-id-new): Use `org-id-uuid-program'. 2009-08-06 Bastien Guerry <bzg@altern.org> * org-exp.el (org-export-number-lines): Allow whitespace in code references. Allow the -r switch to remove the references in the source code even when the lines are not numbered: the labels can be explicit enough. * org.el (org-fontify-whole-heading-line): New option. (org-set-font-lock-defaults): Use the new option. * org-clock.el (org-show-notification-handler): New option. (org-show-notification): Use the new option. 2009-08-06 Bastien Guerry <bzg@altern.org> * org.el (org-eval-in-calendar): Fix a bug about calendar navigation when `calendar-setup' value is 'calendar-only. 2009-08-06 Bastien Guerry <bzg@altern.org> * org.el (orgstruct++-mode): Fix typo in docstring. (org-insert-link): Clean up: (or (...)) => (...) (org-insert-link): Use TAB for stored links completion. 2009-08-06 Bastien Guerry <bzg@altern.org> * org.el (org-get-refile-targets): Fix bug: don't ignore case when building the list of targets. * org-remember.el (org-remember-delete-empty-lines-at-end): New option. (org-remember-handler): Use the new option. 2009-08-06 James TD Smith <ahktenzero@mohorovi.cc> * org.el (org-tags-sort-function): New option for sorting tags. (org-set-tags): Use the new option to sort tags. * org-plot.el (org-plot/gnuplot): Run with an idle timer to avoid premature deletion of the data when using org-plot in a script. 2009-08-06 Bastien Guerry <bzg@altern.org> * org-clock.el (org-clock-in-prepare-hook): New hook. (org-clock-in): Use this new hook. 2009-08-06 Bastien Guerry <bzg@altern.org> * org.el (org-special-ctrl-a/e): Explicitely bind the value 'reversed for this option to the "true line boundary first" behavior. (org-tags-match-list-sublevels): Document the 'indented value for this variable. * org-latex.el (org-export-latex-first-lines): Fix problem with publishing the region. * org-exp.el (org-export-format-source-code-or-example): Fix bad line numbering when exporting examples in HTML. 2009-08-06 James TD Smith <ahktenzero@mohorovi.cc> * org-colview.el (org-format-time-period): Formats a time in fractional days as days, hours, mins, seconds. (org-columns-display-here): Add special handling for SINCE and SINCE_IA to format for display. * org.el (org-time-since): Add a function to get the time since an org timestamp. (org-entry-properties): Add two new special properties: SINCE and SINCE_IA. These give the time since any active or inactive timestamp in an entry. (org-special-properties): Add SINCE, SINCE_IA. (org-tags-sort-function): Add custom declaration for tags sorting function. (org-set-tags): Sort tags if org-tags-sort-function is set 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-goto): Find hidden headlines as well. * org.el (org-narrow-to-subtree): Find hidden headlines as well. * org-plot.el (org-plot/add-options-to-plist): Add timeind option. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-publish.el (org-publish-remove-all-timestamps): New function. (org-publish-all): Remove all timestamp files if `org-publish-all' is called with a prefix argument. * org-list.el (org-indent-item): Fix typo. (org-item-indent-positions): Normalize ordered bullet. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-macs.el (org-set-local): Make a local variable, do not make the variable buffer-local! * org-latex.el (org-export-as-latex): Call `org-install-letbind'. * org-exp.el (org-infile-export-plist): Read BIND lines. (org-install-letbind): New function. (org-export-as-org, org-export-preprocess-string): Call `org-install-letbind'. * org-list.el (org-list-demote-modify-bullet): New option. (org-first-list-item-p): Save point. (org-fix-bullet-type): New optional argument FORCE-BULLET. (org-indent-item): Honor `org-list-demote-modify-bullet'. (org-item-indent-positions): Return bullet types along with indentation. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-show-entry): Hide drawers. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-footnote.el (org-footnote-auto-adjust): New option. (org-footnote-auto-adjust-maybe): New function. (org-footnote-new, org-footnote-delete): Call `org-footnote-auto-adjust-maybe'. * org.el (org-startup-options): Add new footnote-related keywords. * org-publish.el (org-publish-timestamp-filename): Additional arguments PUB-DIR and PUB-FUNC, which are included in the hash. (org-publish-needed-p): Additional arguments PUB-DIR PUB-FUNC TRUE-PUB-DIR. Pass them through to `org-publish-timestamp-filename'. (org-publish-update-timestamp): Additional arguments PUB-DIR and PUB-FUNC, which are included in the hash. (org-publish-file): Delay timestamp test until the publishing function is known. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-bulk-action): Add scheduling and setting the deadline. * org.el (org-read-date-final-answer): New variable. (org-read-date): Store the final answer string, including the date from the calendar, for reuse by agenda bulk commands. * org-publish.el (org-publish-attachment): Fix publishing of attachments. * org-latex.el (org-export-latex-quotation-marks): Fix export of quotation makrs in parenthesis. (org-remove-initial-hash): New function. (org-export-latex-preprocess): Fix bug with infinite loop if environment is not properly closed. * org-table.el (org-table-get-remote-range): Find #+TBLNAME also when indented. * org.el (org-fontify-meta-lines-and-blocks): Make #+TBLNAME highlight also when indented. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-footnote.el (org-footnote-renumber-fn:N): New command. (org-footnote-action): Offer renumbering. * org.el (org-cycle): Honor the `integrate' value of org-cycle-include-plain-lists'. * org-list.el (org-cycle-include-plain-lists): New allowed value `internal'. Improve the docstring. * org.el (org-set-autofill-regexps): Improve the paragraph-start regexp to work better with LaTeX commands. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-inline-image-extensions): Add ps and eps extensions. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-write-agenda): Make sure org-icalendar is loaded. * org.el (org-map-entries): No longer force `org-tags-match-list-sublevels' to t during a todo-only tags search. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-low-levels): Allow user-defined environment. (org-export-latex-subcontent): Handle user-defined environment. * org-agenda.el (org-agenda-view-mode-dispatch): Add more keys to the View dispatcher. * org.el (org-hide-block-toggle): Use `org-make-overlay' instead of `make-overlay'. * org-latex.el (org-export-as-pdf): Protect match data during call to shell-quote-argument. * org-agenda.el (org-agenda-mode-map): Modify bulk action keys. (org-agenda-view-mode-dispatch): New function. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-mode): Reset list of marks. (org-agenda-mode-map): Define new keys for refile and bulk action. (org-agenda-menu): Add menu itesm for refile and bulk action. (org-agenda-refile): New function. (org-agenda-set-tags): Optional arguments TAG and ONOFF. (org-agenda-marked-entries): New variable. (org-agenda-bulk-select, org-agenda-remove-bulk-action-overlays) (org-agenda-remove-all-bulk-action-marks) (org-agenda-bulk-action): New functions/commands. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-get-file-contents): Protect org-like lines in included files. (org-export-format-source-code-or-example): Remove newlines. * org-latex.el (org-export-latex-links): Check for no-description marking. * org-exp.el (org-export-preprocess-apply-macros): Switch macro argument separator back to comma. (org-export-normalize-links): Mark links without description. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-infile-export-plist): Fix bug in macro processing. * org-agenda.el (org-agenda-clock-out): Update line after clocking out. (org-agenda-highlight-todo): Fix bug with highlighting. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-set-font-lock-defaults): Adapt formatting to capture new alignment strings. * org-table.el (orgtbl-self-insert-command): Add yas/expand to command list. (org-table-align): Check for forced align type. * org.el (org-self-insert-command): Add yas/expand to command list. * org-clock.el (org-clock-in-hook): New hook. (org-clock-in): Run `org-clock-in-hook. (org-clock-out-hook): New hook. (org-clock-out): Run `org-clock-out-hook. (org-clock-cancel-hook): New hook. (org-clock-cancel): Run `org-clock-cancel-hook. (org-clock-goto-hook): New hook. (org-clock-goto): Run `org-clock-goto-hook. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-store-link): Better default description for link to Org-mode headline. * org-exp.el (org-export-generic): Autoload the generic exporter function. (org-export): Implement the `g' key for the generic exporter. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-table.el (orgtbl-setup): Add a binding for `S-iso-lefttab', and for zbacktab'. * org-exp.el (org-infile-export-plist): Get macros also from #+SETUPFILE. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-colview.el (org-columns-capture-view): Protect vertical bars in column values. (org-columns-capture-view): Exclude comment and archived trees. * org-colview-xemacs.el (org-columns-capture-view): Protect vertical bars in column values. (org-columns-capture-view): Exclude comment and archived trees. * org.el (org-quote-vert): New function. * org-latex.el (org-export-latex-verbatim-wrap): New option. * org-exp.el (org-export-format-source-code-or-example): Use `org-export-latex-verbatim-wrap'. * org.el (org-clone-subtree-with-time-shift): Also shift inactive time stamps. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp-blocks.el: New file. * org-remember.el (org-remember-templates): Allow the headline element to be a function. (org-remember-apply-template): If the headline is a function, call it to get the true function. * org-clock.el (org-clock-menu): New function. (org-clock-update-mode-line): Update help string. (org-clock-modify-effort-estimate): New function. (org-clock-mark-default-task): New function. * org.el (org-hh:mm-string-to-minutes): Also take just a number of minutes as input. (org-org-menu): Add new clocking stuff. (org-clock-is-active): New function. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-open-non-existing-files): Improve docstring. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-icalendar.el (org-icalendar-include-bbdb-anniversaries): New option. (org-export-icalendar): Call `org-bbdb-anniv-export-ical'. * org-bbdb.el (org-bbdb-anniv-export-ical): New function. * org-list.el (org-get-checkbox-statistics-face): Use the new faces. * org-faces.el (org-checkbox-statistics-todo) (org-checkbox-statistics-done): New faces. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-use-verb): New variable. (org-export-latex-emph-format): Prefer \texttt over \verb when org-export-latex-use-verb is set. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-remember.el (org-remember-handler): Abort remember if the buffer is empty. * org-exp.el (org-export-format-source-code-or-example): Run `org-src-mode-hook'. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-indent-line-function): Fix indentation of +#end lines. 2009-08-06 Tassilo Horn <tassilo@member.fsf.org> * org-gnus.el (org-gnus-store-link): Require message.el in org-gnus-store-link. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-src.el: New file, split out of org.el * org-macs.el (org-replace-match-keep-properties): New function. * org-exp.el (org-export-mark-blockquote-verse-center): Better preprocessing of center and quote and verse blocks. * org-list.el (org-list-end): Respect the stored "original" indentation when determining the end of the list. * org-exp.el (org-export-replace-src-segments-and-examples): Remember indentation correctly. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-update-mode-line): Apply face org-mode-line-clock. * org-faces.el (org-mode-line-clock): New face. 2009-08-06 Tassilo Horn <tassilo@member.fsf.org> * org-gnus.el (org-gnus-store-link): Fix bug where `org-gnus-store-link' used wrong subject when called in an article buffer. Patch provided by fengli AT gmail DOT com. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-format-source-code-or-example): Remember the original indentation of source code snippets and examples. * org-latex.el (org-export-as-latex): Relocate the table of contents. * org.el (org-ctrl-c-ctrl-c): Update clock lines. * org-agenda.el (org-run-agenda-series): Scope global options also when creating the agenda buffer. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-adapt-indentation): Improve documentation. (org-insert-property-drawer): Respect org-adapt-indentation when inserting the drawer. (org-remove-flyspell-overlays-in): New function. (org-do-emphasis-faces, org-activate-plain-links) (org-activate-code, org-fontify-meta-lines-and-blocks) (org-activate-angle-links, org-activate-footnote-links) (org-activate-bracket-links, org-activate-dates) (org-activate-target-links, org-activate-tags): Remove flyspell overlays. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-edit-src-save): New function. * org-clock.el (org-clock-out-switch-to-state): New option. (org-clock-out): Honor `org-clock-out-switch-to-state'. * org-compat.el (org-compatible-face): Improve macro. * org.el (org-global-properties-fixed): Add default for CLOCK_MODELINE_TOTAL. * org-clock.el (org-clock-sum): Accept lists and strigs as tstart andd tend. (org-clock-sum-current-item): Optional argument TSTART, pass it to org-clock-sum. (org-clock-get-sum-start): New function. * org.el (org-startup-options): New keywords blockhide and blockshow. (org-mode): Add new invisibility spec. (org-set-startup-visibility): Hide block on startup if so desired. (org-hide-block-startup): New option. (org-block-regexp): New constant. (org-hide-block-overlays): New variable. (org-block-map, org-hide-block-toggle-all, org-hide-block-all) (org-show-block-all, org-hide-block-toggle-maybe) (org-hide-block-toggle): New functions. (org-edit-src-exit): Do not quote lines starting with # and no + behind it. (org-auto-repeat-maybe): Add LAST_REPEAT properter for a repeating entry. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-buffer-property-keys): Add Effort property for completion. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-sum-current-item): Fix positioning bug when retrieving total clocked time in the subtree. * org.el (org-quoting-blocks): New variable. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-table.el (org-table-store-formulas) (org-table-get-stored-formulas, org-table-fix-formulas) (org-table-edit-formulas, orgtbl-ctrl-c-ctrl-c) (orgtbl-gather-send-defs): Allow indented #+TBLFM line. * org.el (org-fontify-meta-lines, org-ctrl-c-ctrl-c): Allow indented #+TBLFM line. * org-footnote.el (org-footnote-goto-local-insertion-point): Allow indented #+TBLFM line. * org-colview.el (org-dblock-write:columnview): Allow indented #+TBLFM line. * org-colview-xemacs.el (org-dblock-write:columnview): Allow indented #+TBLFM line. * org-clock.el (org-dblock-write:clocktable): Allow indented #+TBLFM line. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-format-source-code-or-example): Make editing indented blocks work correctly. * org.el (org-edit-src-nindent): New variable. (org-edit-src-code, org-edit-fixed-width-region) (org-edit-src-find-region-and-lang, org-edit-src-exit): Make editing indented blocks work correctly. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-replace-src-segments-and-examples): FInd indented blocks. (org-export-format-source-code-or-example): Fix indentation of blocks. (org-export-remove-indentation): New function. (org-export-select-backend-specific-text): Allow backend-specific code to be indented. (org-export-mark-blockquote-verse-center): Allow markers to be indented. * org.el (org-fontify-meta-lines): New function. (org-set-font-lock-defaults): Call the new fontification function. * org-faces.el (org-meta-line): New face (org-block): New face. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-treat-insert-todo-heading-as-state-change) (org-treat-S-cursor-todo-selection-as-state-change): New variables. (org-insert-todo-heading): Honor `org-treat-insert-todo-heading-as-state-change'. (org-shiftright, org-shiftleft): Honor `org-treat-S-cursor-todo-selection-as-state-change'. (org-inhibit-logging): New variable. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-remove-subtree-entries-from-agenda): Reduce range for marker position checking. * org-latex.el (org-export-latex-first-lines): Fix bug when exporting a region. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-push-to-kill-ring): Protect using x-set-selection, because that does not always work. * org-agenda.el (org-agenda-list): Apply the new face `org-agenda-date-today'. * org-faces.el (org-agenda-date-today): New face. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-to-appt): Turn off restriction when creating appointments. * org-latex.el (org-export-latex-low-levels): Fix customization type. * org.el (org-priority, org-shiftup, org-shiftdown): Disable priority commands. * org-agenda.el (org-agenda-priority): Disable priority commands. * org.el (org-enable-priority-commands): New option. * org-colview-xemacs.el (org-columns-compute) (org-columns-number-to-string): Fix problems with empty fields. * org-colview.el (org-columns-compute) (org-columns-number-to-string): Fix problems with empty fields. * org-exp.el (org-export-push-to-kill-ring): New function. (org-export-copy-to-kill-ring): New option. * org-latex.el (org-export-as-latex): Call `org-export-push-to-kill-ring'. * org-exp.el (org-export-show-temporary-export-buffer): New option. * org-latex.el (org-export-as-latex): Use `org-export-show-temporary-export-buffer'. * org-exp.el (org-export-show-temporary-export-buffer): New option. (org-export-push-to-kill-ring): New function. * org-colview.el (org-columns-compile-map): New variable. (org-columns-new, org-columns-compute) (org-columns-number-to-string, org-columns-uncompile-format) (org-columns-compile-format): Implement new operators. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-plist-vars): Add :xml-declaration. * org-list.el (org-update-checkbox-count): Make property dependent. * org.el (org-hierarchical-todo-statistics): New option. (org-update-parent-todo-statistics): Modified to handle recursive statistics. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-publish.el (org-publish): Make this function behave correctly in interactive use when called with a prefix argument. * org.el (org-todo-statistics-hook): New hook. (org-update-parent-todo-statistics): Use new hook. (org-log-into-drawer): New function. (org-add-log-setup): Use the new `org-log-into-drawer' function to determine if we should be logging into a drawer. (org-log-into-drawer): Update docstring. (org-default-properties): Add LOG_INTO_DRAWER as a property. * org-list.el (org-checkbox-statistics-hook): New hook. (org-update-checkbox-count-maybe): Use new hook. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-edit-src-code, org-edit-fixed-width-region): Use a better bufer-generating mechanism. (org-edit-src-find-buffer): New function. * org-icalendar.el (org-print-icalendar-entries): Don't check for archive tag, this is already done by `org-agenda-skip'. data while constructing lost of tags. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-preprocess-apply-macros): Use semicolon as argument separator in macros. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-after-sorting-entries-or-items-hook): New hook. (org-sort-entries-or-items): Run the new hook. (org-after-refile-insert-hook): New hook. (org-refile): Run `org-after-refile-insert-hook'. * org-agenda.el (org-agenda-get-progress): Never take time of day from headline when displaying progress. * org-latex.el (org-export-latex-complex-heading-re): New variable. (org-export-as-latex): Force the correct regexp in the preprocessor buffer. (org-export-latex-set-initial-vars): Set `org-export-latex-complex-heading-re'. * org-agenda.el (org-agenda-start-with-log-mode): New option. (org-agenda-mode): Use `org-agenda-start-with-log-mode'. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-tables-centered): New option. (org-export-latex-tables): Use `org-export-latex-tables-centered'. * org-exp.el (org-export-as-org): New command. (org-export-as-org): New command. * org-publish.el (org-publish-org-to-org): New function. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-yank): Just call `org-yank-generic'. (org-yank-generic): New function, containing the formaer functionality of `org-yank'. * org-latex.el (org-export-latex-not-done-keywords) (org-export-latex-done-keywords): New variables. (org-export-latex-todo-keyword-markup): New option. (org-export-latex-set-initial-vars): Remember the TODO keywords. (org-export-latex-keywords-maybe): Apply the TODO markup. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-infile-export-plist): Add more default macros. (org-export-preprocess-apply-macros): Process macro arguments. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-icalendar.el (org-icalendar-include-todo): New allowedvalue `unblocked'. (org-print-icalendar-entries): Respect the new value of `org-icalendar-include-todo'. * org.el (org-link-try-special-completion) (org-file-complete-link): New functions. (org-insert-link): Add special completion support for some link types. * org-bbdb.el (org-bbdb-complete-link): New function. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-list.el (org-update-checkbox-count): Allow recursive statistics. (org-hierarchical-checkbox-statistics): New option. * org.el (org-cycle): Remove erraneous space character. * org-icalendar.el (org-icalendar-timezone): Initialize from environment. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-autoload): Fix autoloading of ascii export functions. (org-modules): Add org-special-blocks. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-icalendar.el (org-start-icalendar-file): Use the new option. (org-ical-timezone): New option. * org-exp.el (org-export-get-coderef-format): Use the description is present. * org.el (org-sort-entries-or-items): Improve docstring, and make better implementation for time sorting. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-edit-src-persistent-message): New option. (org-edit-src-code, org-edit-fixed-width-region): Use the new option. * org-clock.el (org-clock-insert-selection-line): Fix prefious patch. * org.el (org-edit-src-code, org-edit-fixed-width-region): Use separate buffer instead of indirect buffer to edit source code. (org-edit-src-exit): Make this function work with the new setup. * org-clock.el (org-clock-insert-selection-line): Make sure tasks are properly fontified before shown in the selection menu. * org.el (org-fontify-like-in-org-mode): New function. * org-latex.el (org-export-latex-links): Use the property list to retrieve the default image attributes. * org-exp.el (org-export-plist-vars): Add a new option. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export, org-export-visible): Support ASCII export to buffer (org-export-normalize-links): Do not protect the description if it is explicitly given. * org-list.el (org-reset-checkbox-state-subtree): Moved here from org-checklist.el. (org-reset-checkbox-state-subtree): Call `org-reset-checkbox-state-subtree'. * org-remember.el (org-select-remember-template): For the selection of a valid template. * org-latex.el (org-export-region-as-latex): Supply the force-no-subtree argument. (org-export-as-latex): Provide better limits when exporting the first line. When exporting to string, we still want the first lines. (org-export-latex-first-lines): New argument END, to force the end of the region. (org-export-region-as-latex): Use the property list. (org-export-as-latex): * org-colview-xemacs.el (org-columns-remove-overlays) (org-columns): Fix call to `local-variable-p'. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-after-blockquotes-hook): New hook. (org-export-latex-preprocess): Run the new hook. * org-exp.el (org-export-preprocess-after-blockquote-hook): New hook. (org-export-preprocess-string): Run the new hook. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-macs.el (org-check-external-command): New defsubst. * org.el (org-mode-map): New key for reload. (org-format-latex): Better error message when external programs are not available. * org-agenda.el (org-agenda-mode-map): Bind `org-reload'. * org.el (org-sort-entries-or-items): Explicit sorting function for priorities, needed for XEmacs compatibility. * org-remember.el (org-remember-apply-template): Improve auto-save behavior. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-preprocess): Also protect environments ending in a star. * org-list.el (org-at-item-p): Fix regular expression. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-end-of-subtree): Improve speed. * org-agenda.el (org-agenda-get-timestamps) (org-agenda-get-progress, org-agenda-get-deadlines) (org-agenda-get-scheduled, org-agenda-get-blocks): Optimizations, in particular, wait as long as possible to collect the tags. (org-stuck-projects): Improve docstring. * org.el (org-store-link): No errors when getting custom id before first headline. (org-get-tags-at): Use `org-up-heading-safe' when getting tags. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-prepare-agenda-buffers): Catch a throw to nextfile. * org-protocol.el: Remove dependency on url.el. (org-protocol-unhex-compound, org-protocol-open-source): Remove dependency on url.el. * org-latex.el (org-export-as-pdf): Use `org-latex-to-pdf-process'. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-latex-to-pdf-process): New option. * org-agenda.el (org-agenda-skip-additional-timestamps-same-entry): New option. (org-agenda-get-timestamps): Honor `org-agenda-skip-additional-timestamps-same-entry'. * org-clock.el (org-clock-goto-may-find-recent-task): New option. (org-clock-goto): Find recent task only if `org-clock-goto-may-find-recent-task' allows it. * org-exp.el (org-export-remove-or-extract-drawers): Handle empty drawers, and drawers that are missing the :END: line. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-goto): Go to recently clocked task if no clock is running. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-update-parent-todo-statistics): Check for STATISTICS_FROM property. * org-list.el (org-update-checkbox-count): Check for STATISTICS_FROM property. * org.el (org-tab-first-hook) (org-tab-after-check-for-table-hook) (org-tab-after-check-for-cycling-hook): New hooks. (org-cycle-internal-global, org-cycle-internal-local): New functions, split out from `org-cycle'. (org-cycle): Call the new hooks. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-preprocess-string): Reset the list of preferred targets for each run of the preprocessor. * org.el (org-refile-target-verify-function): Improve documentation. (org-get-refile-targets): Respect point being moved by the verification function. * org-latex.el (org-export-latex-timestamp-keyword-markup): New option. (org-export-latex-keywords): Use new option. * org.el (org-rear-nonsticky-at): New defsubst. (org-activate-plain-links, org-activate-angle-links) (org-activate-footnote-links, org-activate-bracket-links) (org-activate-dates, org-activate-target-links) (org-activate-tags): Place the rear-nonsticky properties at the correct location. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-protocol.el (server-edit): Declare `server-edit'. (org-protocol-unhex-string, org-protocol-unhex-compound): New functions. (org-protocol-check-filename-for-protocol): Call `server-edit'. * org.el (org-default-properties): New default properteis for completion. * org-exp.el (org-export-add-subtree-options): Add new properties for subtree export. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-id.el (org-id-get-with-outline-path-completion): Turn off org-refile-target-verify-function for the duration of the command. * org.el (org-link-to-org-use-id): New possible value `create-if-interactive-and-no-custom-id'. (org-store-link): Use custom IDs. (org-link-search): Find custom ID properties from #link. (org-default-properties): Add CUSTOM_ID for property completion. (org-refile-target-verify-function): New option. (org-goto): Turn off org-refile-target-verify-function for the duration of the command. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-preferred-target-alist): New variable. (org-export-define-heading-targets): Find the new CUSTOM_ID property. (org-export-target-internal-links): Target the custom ids when possible. * org-latex.el (org-export-latex-preprocess): Better regexp for matching latex macros with arguments. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-remember.el (org-remember-handler): Allow filing to non-org files. 2009-08-06 Magnus Henoch <magnus.henoch@gmail.com> * org-table.el (org-table-fix-formulas): Do not change references to remote tables. (org-table-get-remote-range): Convert standard coordinates to RC format. * org-latex.el (org-export-latex-keywords): Fix regexp bug. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-compat.el (org-sha1-string): Function removed. * org.el (org-refile-allow-creating-parent-nodes): New option. (org-refile-get-location): New argument NEW-NODES. (org-refile): Call `org-refile-get-location' with the new argument. (org-refile-get-location): Arrange for adding a new child. (org-refile-new-child): New function. * org-clock.el: Fix a number of docstrings. (org-clock-find-position): New argument FIND-UNCLOSED to make the function find an unclosed clock in the entry. (org-clock-in): Call `org-clock-find-position' with the new argument if we might be resuming a clock. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-display-custom-times): New variable. (org-export-latex-timestamp-markup): New option. (org-export-latex-set-initial-vars): Remember the local value of `org-display-custom-times'. (org-export-latex-content): Process time stamps. (org-export-latex-time-stamps): New function. * org-macs.el (org-maybe-intangible): Add intangible property again to invisible text. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-default-export-plist): Handle undefined variables. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-sort-entries-or-items): Match TODO keywrds case-sensitively, when sorting. (org-priority): Do not match TODO keywords with wrong case. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-todo): Honor the NOBLOCKING property. * org-agenda.el (org-agenda-dim-blocked-tasks): Honor the NOBLOCKING property. * org.el (org-scan-tags): Fix bug in tag scanner 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-modules): Mark obsolete packages. * org-html.el: New file, split out from org-exp.el. * org-icalendar.el: New file, split out from org-exp.el. * org-xoxo.el: New file, split out from org-exp.el. * org-ascii.el: New file, split out from org-exp.el. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-compat.el (org-find-library-name): New function. * org.el (org-pre-cycle-hook): New hook. (org-cycle): Call the new hook in appropriate places. (org-reload): Only reload files that have been loaded before. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-set-font-lock-defaults): Enforxe space or line end after todo keyword. (org-todo): When changing TODO state, do matching case-sensitively. (org-map-continue-from): New variable. (org-scan-tags): Respect values in `org-map-continue-from'. (org-reload): Make XEmacs compatible. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-protocol.el (org-protocol-flatten-greedy): New function. (org-protocol-flatten): New function. * org.el (org-open-link-from-string): Pass reference buffer to `org-open-at-point'. (org-open-at-point): New optional argument `reference-buffer'. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-scan-tags): Make tag scan find headline in first line, 2nd attempt. (org-get-refile-targets): Add the naked file name. (org-refile): Store as top-level entry when only file name was given. * org-agenda.el (org-agenda-get-progress): Fix regexp bug. * org.el (org-block-todo-from-children-or-siblings-or-parent): Renamed from org-block-todo-from-children-or-siblings, and enhanced to look for the parent's status as well. * org-agenda.el (org-agenda-log-mode-add-notes): New option. (org-agenda-get-progress): Add first notes line to log entry if so desired. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-cleanup-fancy-diary-hook): New hook. (org-agenda-cleanup-fancy-diary): Call the new hook. * org-remember.el (org-remember-apply-template): Take the default for the annotation from the :annotation property. * org-mac-message.el (org-mac-message-get-link): Remove the quotes. (org-mac-message-get-link): Return the result. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-refile-get-location): Add file name only if not already included in outline path. * org-faces.el (org-n-level-faces): Fix customization type from number to integer. * org-exp.el (org-export-headline-levels): Fix customization type from number to integer. * org-agenda.el (org-agenda-confirm-kill) (org-agenda-custom-commands-local-options) (org-timeline-show-empty-dates, org-agenda-ndays) (org-agenda-start-on-weekday, org-scheduled-past-days): Fix customization type from number to integer. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-protocol.el: Declare some functions. * org-agenda.el (org-agenda-compare-effort): Honor `org-sort-agenda-noeffort-is-high'. (org-agenda-filter-by-tag, org-agenda-filter-make-matcher) (org-agenda-compare-effort): Implement the "?" operator for finding entries without effort setting. * org.el (org-extract-attributes-from-string): New function. * org-exp.el (org-export-splice-attributes): New function. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-mouse.el: XEmacs compatibility fixes * org.el (org-modules): Add org-inlinetasks.el (org-cycle): Implement limiting level on cycling. (org-move-subtree-down): Fix bug with swapping subtrees at end of buffer. * org-inlinetask.el: New file. * org-protocol.el: New file. * org.el (org-emphasis-regexp-components): Allow braces in emphasis pre and post match. * org-footnote.el (org-footnote-normalize): When only dorting, do not insert inline notes at the end. * org.el (org-require-autoloaded-modules): Add org-docbook.el. * org-docbook.el: New file. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-reftex-citation): New command. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-cmp-user-defined): New option. (org-sorting-choice, org-agenda-sorting-strategy): Add the new sorting options. (org-entries-lessp): Apply the new sorting option. * org.el (org-block-todo-from-children-or-siblings): Fix bug in blocker code, when an older sibling has children. * org-mac-message.el (org-mac-message-get-link): Improve getting links from multiple selected messages. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-remember.el (org-remember-finalize): Do not set buffer file name to nil. (org-remember-handler): Mark buffer as unmodified. (org-remember-handler): Delete backup file and show message about remaining backup files. (org-remember-auto-remove-backup-files): New option. * org.el (org-store-link): Use buffer name as link description in w3-mode buffers. (org-ido-switchb): Fix argument bug for completion. * org-remember.el (org-remember-apply-template): Set local variable `auto-save-visited-file-name' instead of global one. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-get-todos): Fix bug with match-data. (org-agenda-get-todos): Mark file tags as inherited. (org-agenda-list): Always search diary lines for a time. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-feed.el: New file. * org-exp.el (org-export-as-html): Close local lists depending on indentation, also when starting a table. * org-remember.el (org-remember-backup-directory) (org-remember-backup-name): New internal variable. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-out-if-current): Make buffer detection work in indirect buffers as well. * org.el (org-emphasis-regexp-components): Add the exxclamation mark to the post-emphasis characters. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-read-date-minibiffer-septup-hook): New hook. (org-read-date): Run the new hook. * org-mac-message.el (org-mac-flagged-mail): New group. (org-mac-mail-account): New variable. (org-mac-create-flagged-mail, org-mac-insert-flagged-mail): New commands. * org-remember.el (org-remember-backup-directory): New variable. (org-remember-apply-template): Write file to backup directory. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-mouse.el (org-mouse-todo-menu): New function. (org-mouse-todo-keywords): Function removed. (org-mouse-context-menu): Use `org-mouse-todo-menu'. * org-table.el (org-table-beginning-of-field) (org-table-end-of-field): New commands (org-table-previous-field, org-table-beginning-of-field): Better error messages. (orgtbl-setup): Include `M-a' and `M-e'. * org.el (org-backward-sentence, org-forward-sentence): New commands. * org-colview.el (org-colview-initial-truncate-line-value): New variable. (org-columns-remove-overlays): Restore the value of `truncate-lines'. (org-columns): Remember the value of `truncate-lines'. * org-colview-xemacs.el (org-colview-initial-truncate-line-value): New variable. (org-columns-remove-overlays): Restore the value of `truncate-lines'. (org-columns): Remember the value of `truncate-lines'. * org.el (org-columns-skip-arrchived-trees): New option. * org-agenda.el (org-agenda-export-html-style): Define color for org-agenda-done face. (org-search-view, org-agenda-get-todos, org-agenda-get-progress) (org-agenda-get-deadlines, org-agenda-get-scheduled): Use new face. * org.el (org-scan-tags): Use the new face. * org-faces.el (org-agenda-done): New face. * org.el (org-scan-tags): Test the value org `org-tags-match-list-sublevels'. (org-tags-match-list-sublevels): New allowed value: indented. * org-latex.el (org-export-latex-make-header): Apply macros in header. * org-exp.el (org-export-apply-macros-in-string): New function. * org-latex.el (org-export-latex-list-parameters): Fix bug with the definition of a checked box. * org-clock.el (org-clock-find-position): Fix drawer indentations. * org-latex.el (org-export-latex-low-levels): More options for how to process lower levels in LaTeX. (org-export-latex-subcontent): Better treatment for lists as a means of publishing lower levels. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-set-font-lock-defaults): Use new checkbox face. * org-faces.el (org-checkbox): New face. * org-exp.el (org-export-html-preprocess): Only create LaTeX fragement images if there is an export file. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-stuck-projects): Document that the subtree of projects that are not stuck will now be searched for stuck sub-projects. (org-agenda-skip-entry-when-regexp-matches) (org-agenda-skip-entry-when-regexp-matches-in-subtree): New functions. (org-agenda-list-stuck-projects): Use `org-agenda-skip-entry-when-regexp-matches-in-subtree'. * org-latex.el (org-export-latex-preprocess): Improve export of verses. * org-exp.el (org-export-as-html): Implement centering as a div rather than a paragraph. Do a better job with line-end in verse environments. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-open-at-point): Fix tags searches by mouse click. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-preprocess): Implement the centering markup. * org-exp.el (org-export-mark-blockquote-verse-center): Renamed from `org-export-mark-blockquote-and-verse'. (org-export-as-html): Implement the centering markup. * org-latex.el (org-export-latex-tables): Fix vertical lines in tables. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-read-date-history): New variable. (org-read-date): Use new history variable. (org-toggle-heading): Fix bug when used before first headline. (org-store-log-note): Remove drawer if empty while note is aborted. (org-remove-empty-drawer-at): New function. (org-check-after-date): New command. (org-sparse-tree): New sparse tree command "a". * org-exp.el (org-export-as-ascii): Improve export of plain lists. 2009-08-06 Bastien Guerry <bzg@altern.org> * org.el (org-toggle-fixed-width-section): Bug fix: insert a column and a space, not only a column. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-emphasis-alist): Better defaults for verbose emphasis. (org-export-latex-emph-format): New function. (org-export-latex-fontify): Call `org-export-latex-emph-format'. * org-agenda.el (org-agenda-menu): Add new commands to menu. (org-agenda-do-date-later, org-agenda-do-date-earlier) (org-agenda-date-later-minutes, org-agenda-date-earlier-minutes) (org-agenda-date-later-hours, org-agenda-date-earlier-hours): New commands. * org.el (org-timestamp-change): Move end-time along with start time. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-target-internal-links) (org-export-as-html): Protect links specified as #name. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-clone-subtree-with-time-shift): New command. * org-latex.el (org-export-latex-special-chars) (org-export-latex-treat-sub-super-char): Fix subscript export. * org-exp.el (org-create-multibrace-regexp): Do not add backslashes to the class. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-colview.el (org-columns-map): Better functions for moving up and down a row, even if `truncate-line' is nil. * org.el (org-insert-todo-heading): Make sure the keyword is inserted at the correct position. * org-publish.el (org-publish-project-alist) (org-publish-projects, org-publish-org-index): Change default anme for the index of file names to "sitemap.org". * org-latex.el (org-export-latex-tables): Use `org-split-string', for Emacs 21 compatibility. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-log-mode-items): Improve docstring. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-page-description) (org-export-page-keywords): New variables. (org-export-plist-vars): Add entries for :keywords and :description. (org-infile-export-plist): Parse for new keywords. (org-get-current-options): Add new keywords (org-export-as-html): Publish description and keywords. * org-agenda.el (org-agenda-add-entry-text-descriptive-links): New option. (org-agenda-add-entry-text): Honor `org-agenda-add-entry-text-descriptive-links'. * org-latex.el (org-export-latex-preprocess): Make all external preprocess functions use a PARAMETER arg. * org-exp.el (org-export-preprocess-string) (org-export-select-backend-specific-text) (org-export-format-source-code-or-example) (org-format-org-table-html): Support docbook export. (org-export-preprocess-string): Make all external preprocess functions use a PARAMETER arg. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-html-style-include-scripts): New option. (org-export-plist-vars): Add new option `org-export-html-style-include-scripts'. (org-export-as-html): Honor new option `org-export-html-style-include-scripts'. (org-export-html-scripts, org-export-html-style-default): Fix xml issues with the Safari browser. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-publish.el (org-publish-attachment): Only copy file when the directories differ. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clocktable-steps): Use inactive time stamps for clocktable steps. * org.el (org-additional-option-like-keywords): Add two more keywords. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-format-source-code-or-example): Mark temporary buffer unmodified, so that it will be killed even if mode like message mode has decided to assign a file name. * org.el (org-scan-tags): Improve tag inheritance. (org-scan-tags, org-make-tags-matcher): Make tag comparison case-sensitive. (org-scan-tags): Use the internal tags list instead of creating it from scratch. (org-trust-scanner-tags, org-scanner-tags): New variables. (org-scan-tags): Set `org-scanner-tags'. (org-get-tags-at): Take advantage of `org-trust-scanner-tags'. (org-map-entries): Document the possible speedup using scanner tags. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-add-planning-info): Fix bug with looking for keyword only at column 0. * org-agenda.el (org-agenda-custom-commands-local-options): Add option for tags filter preset. (org-prepare-agenda): Store filter preset as a property on the filter variable. (org-finalize-agenda): Call the filter, if there is a preset. (org-agenda-filter-by-tag): Filter again after clearing the filter, when there still is a preset. (org-agenda-filter-make-matcher, org-agenda-set-mode-name): Include the preset filter. (org-agenda-redo): Apply the filter again, also the preset filter. * org-exp.el (org-export-as-html): Use IDs in the correct way. * org.el (org-uuidgen-p): New funtion. * org-agenda.el (org-agenda-fontify-priorities): New default value `cookies'. (org-agenda-fontify-priorities): Renamed from org-fontify-priorities. * org.el (org-set-font-lock-defaults): Call `org-font-lock-add-priority-faces'. (org-font-lock-add-priority-faces): New function. * org-faces.el: (org-set-tag-faces): New option. (org-priority-faces): New variable. * org-exp.el (org-export-as-html): Add a "content" div around the entire content of the body tag. (org-export-html-get-bibliography): New function. (org-export-html-validation-link): New variable. (org-export-as-html): Add validation link to exported page. * org.el (org-match-sparse-tree): Renamed from `org-tags-sparse-tree'. (org-tags-sparse-tree): New alias. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-get-valid-level): Catch the case where the level change is nil. * org-clock.el (org-clock-find-position): Better indentation of new clock drawers. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-quit): Delete window only when the frame-setup was not `current-window'. * org.el (org-tag-persistent-alist): New option. (org-startup-options): Add keyword `noptag'. (org-fast-todo-selection): Handle :newline correctly. (org-set-tags): Handle :newline correctly. (org-fast-tag-selection): Handle :newline correctly. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-as-ascii): Reverse link buffer before outputting it. (org-export-ascii-push-links): Fix bug with pussing links into the export buffer. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-archive.el (org-archive-subtree): Do not add 1 to level if pasting at top level. * org-bbdb.el: Improve documentation. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-list.el (org-insert-item): Only consider insert empty lines is `org-empty-line-terminates-plain-lists' is not nil. * org.el (org-blank-before-new-entry): Mention the dependence on `org-empty-line-terminates-plain-lists' in the docstring. * org-publish.el (org-publish-get-project-from-filename): New optional argument UP. Only find the top project if UP is set. (org-publish-current-project): Find the top encloding project. * org-agenda.el (org-agenda-before-write-hook) (org-agenda-add-entry-text-maxlines): New options. (org-write-agenda): Run the new hook in the temporary buffer. (org-agenda-add-entry-text): New function. (org-write-agenda): Implement PDF export, using ps2pdf. * org.el (org-global-properties-fixed, org-global-properties): Improve documentation string. * org-exp.el (org-export-ascii-links-to-notes): New option. (org-export-as-ascii): Handle links better. (org-export-ascii-wrap, org-export-ascii-push-links): New functions. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda): Make prefix arg optional. (org-agenda-search-headline-for-time): New option. (org-format-agenda-item): Honor `org-agenda-search-headline-for-time'. * org-table.el (orgtbl-self-insert-command): Cluster undo for 20 characters. * org.el (org-self-insert-cluster-for-undo): New option. (org-self-insert-command): Cluster undo for 20 characters. (org-self-insert-command-undo-counter): New variable. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-as-html): Fix problem with closing colone example. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-as-latex) (org-export-latex-first-lines): Avoid modification flag when adding or removing text properties. (org-export-latex-fontify): Catch error when org-emph-alist has entries that are not defined for LaTeX export. * org-export-latex.el: renamed to org-latex.el * org-latex.el: renamed from org-export-latex.el * org.el (orgstruct++-mode): New function. (turn-on-orgstruct++): Call `orgstruct++-mode'. (org-context-p): Allow detecting item context after the first line of an item. (orgstruct-make-binding): Detect if item-body context should be seen. (orgstruct-is-++): New variable. (org-add-planning-info): Catch the case when there is no planning info yet and the call does not want to add anything, only maybe tries to remove something. (org-special-ctrl-a/e): All value to be a cons cell with separate settings for `C-a. and `C-e'. (org-beginning-of-line, org-end-of-line): Honor separate values for `C-a' and `C-e'. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-reload): New command. 2009-08-06 Carsten Dominik <carsten.dominik@gmail.com> * org.texi (Publishing action): Improve documentation of file names when publishing to the source directory. (Clean view): Document `org-indent-mode'. (Clocking work time): Add documentation for the new :timetamp option when creating a clock report. (Paragraphs): Fix many typos. (Plain lists): Remove duplicate explanation about the `C-c *' command. (Literal examples): Update to reflect the new behavior of the -n -r -k switches when exporting source code examples. (Structure editing): Add information about `C-c *', converting a plain list into a list of Org items. (Remember): Small rephrasing of the paragraph describing remember.el. Also mentioned that remember.el is part of Emacs 23, not Emacs 22. (Clocking work time): Add documentation about displaying the current clocking time against the effort estimate. Also add a footnote about using `org-clock-in-prepare-hook' to add an effort estimate on the fly, just before clocking it. (Footnotes): Document automatic renumbering and sorting. (Agenda commands): Document new bulk commands. (Plain lists): Document new behavior of `org-cycle-include-plain-lists'. Hyphenation only in TeX. (Clocking work time): Document the key to update effort estimates. (Clocking work time): Document the clock time display. (Structure editing, TODO basics): Document new variables. (Column attributes): Document new colciew operators. (Publishing options): Document :xml-declaration. (Tracking TODO state changes): Document the LOG_INTO_DRAWER property. (Literal examples): Document the new implementation for editing source code. (Publishing action): Mention the new publishing function, to publish an Org source file. (Publishing links): Mention how to link to an Org source file. (Macro replacement): Document new macros. (Handling links): Document type-specific completion when inserting links. (Structure editing, Plain lists): Improve documentation on sorting. (Internal links): Document custom ids for links. (Handling links): Document custom ids for links. (CSS support): Document new class. (Refiling notes): Document the possibility to create new nodes during refiling. (Agenda commands): Document the "?" operator to find tasks without effort setting. (Exporting agenda information): Section moved. (RSS Feeds): New section. (Built-in table editor): Document M-e and M-a navigate inside table field. (Stuck projects): Docment that projects identified as un-stuck will still be searchd for stuck sub-projects. (Paragraphs): Document centering. (Creating timestamps, Agenda commands): Document new behavior when changing time stamps. (Structure editing): Document the new command `org-clone-subtree-with-time-shift'. (Publishing): Refresh this chapter. (Export options, Export options, In-buffer settings): Document the new keywords. (Matching tags and properties): Collect all documentation about tags/property matches here. (Setting tags): Document `org-tag-persistent-alist'. (Weekly/daily agenda): New section. (Orgstruct mode): Describe `orgstruct++-mode'. (Drawers): Mention the LOGBOOK drawer. (Export options, Sectioning structure): Document the #+LEATEX_HEADER in-buffer setting. (Bugs): Section removed. (Hooks): New section. (Add-on packages): Moved here from old location. (Context-sensitive commands): New section. (Setting tags): Document newline option. (Global TODO list, Matching tags and properties): Mention more variables. (Checkboxes): Update to changed command behavior.
author Carsten Dominik <dominik@science.uva.nl>
date Thu, 06 Aug 2009 09:14:10 +0000
parents 6d71fc980cde
children 86b7fe7d1d8f
comparison
equal deleted inserted replaced
104163:a4d9f7df78e8 104164:ac1a55cc2c38
5 ;; 5 ;;
6 ;; Author: Carsten Dominik <carsten at orgmode dot org> 6 ;; Author: Carsten Dominik <carsten at orgmode dot org>
7 ;; Bastien Guerry <bzg AT altern DOT org> 7 ;; Bastien Guerry <bzg AT altern DOT org>
8 ;; Keywords: outlines, hypermedia, calendar, wp 8 ;; Keywords: outlines, hypermedia, calendar, wp
9 ;; Homepage: http://orgmode.org 9 ;; Homepage: http://orgmode.org
10 ;; Version: 6.21b 10 ;; Version: 6.29c
11 ;; 11 ;;
12 ;; This file is part of GNU Emacs. 12 ;; This file is part of GNU Emacs.
13 ;; 13 ;;
14 ;; GNU Emacs is free software: you can redistribute it and/or modify 14 ;; GNU Emacs is free software: you can redistribute it and/or modify
15 ;; it under the terms of the GNU General Public License as published by 15 ;; it under the terms of the GNU General Public License as published by
34 (require 'org-macs) 34 (require 'org-macs)
35 (require 'org-compat) 35 (require 'org-compat)
36 36
37 (defvar org-blank-before-new-entry) 37 (defvar org-blank-before-new-entry)
38 (defvar org-M-RET-may-split-line) 38 (defvar org-M-RET-may-split-line)
39 (defvar org-complex-heading-regexp)
40 (defvar org-odd-levels-only)
39 41
40 (declare-function org-invisible-p "org" ()) 42 (declare-function org-invisible-p "org" ())
41 (declare-function org-on-heading-p "org" (&optional invisible-ok)) 43 (declare-function org-on-heading-p "org" (&optional invisible-ok))
42 (declare-function outline-next-heading "outline" ()) 44 (declare-function outline-next-heading "outline" ())
43 (declare-function outline-back-to-heading "outline" (&optional invisible-ok)) 45 (declare-function outline-back-to-heading "outline" (&optional invisible-ok))
46 (declare-function org-skip-whitespace "org" ()) 48 (declare-function org-skip-whitespace "org" ())
47 (declare-function org-trim "org" (s)) 49 (declare-function org-trim "org" (s))
48 (declare-function org-get-indentation "org" (&optional line)) 50 (declare-function org-get-indentation "org" (&optional line))
49 (declare-function org-timer-item "org-timer" (&optional arg)) 51 (declare-function org-timer-item "org-timer" (&optional arg))
50 (declare-function org-combine-plists "org" (&rest plists)) 52 (declare-function org-combine-plists "org" (&rest plists))
53 (declare-function org-entry-get "org" (pom property &optional inherit))
54 (declare-function org-narrow-to-subtree "org" ())
55 (declare-function org-show-subtree "org" ())
51 56
52 (defgroup org-plain-lists nil 57 (defgroup org-plain-lists nil
53 "Options concerning plain lists in Org-mode." 58 "Options concerning plain lists in Org-mode."
54 :tag "Org Plain lists" 59 :tag "Org Plain lists"
55 :group 'org-structure) 60 :group 'org-structure)
56 61
57 (defcustom org-cycle-include-plain-lists nil 62 (defcustom org-cycle-include-plain-lists t
58 "Non-nil means, include plain lists into visibility cycling. 63 "When t, make TAB cycle visibility on plain list items.
59 This means that during cycling, plain list items will *temporarily* be 64
60 interpreted as outline headlines with a level given by 1000+i where i is the 65 Cycling plain lists works only when the cursor is on a plain list
61 indentation of the bullet. In all other operations, plain list items are 66 item. When the cursor is on an outline heading, plain lists are
62 not seen as headlines. For example, you cannot assign a TODO keyword to 67 treated as text. This is the most stable way of handling this,
63 such an item." 68 which is why it is the default.
69
70 When this is the symbol `integrate', then during cycling, plain
71 list items will *temporarily* be interpreted as outline headlines
72 with a level given by 1000+i where i is the indentation of the
73 bullet. This setting can lead to strange effects when switching
74 visibility to `children', because the first \"child\" in a
75 subtree decides what children should be listed. If that first
76 \"child\" is a plain list item with an implied large level
77 number, all true children and grand children of the outline
78 heading will be exposed in a children' view."
64 :group 'org-plain-lists 79 :group 'org-plain-lists
65 :type 'boolean) 80 :type '(choice
81 (const :tag "Never" nil)
82 (const :tag "With cursor in plain list (recommended)" t)
83 (const :tag "As children of outline headings" integrate)))
84
85 (defcustom org-list-demote-modify-bullet nil
86 "Default bullet type installed when demoting an item.
87 This is an association list, for each bullet type, this alist will point
88 to the bulled that should be used when this item is demoted."
89 :group 'org-plain-lists
90 :type '(repeat
91 (cons
92 (choice :tag "If the current bullet is "
93 (const "-")
94 (const "+")
95 (const "*")
96 (const "1.")
97 (const "1)"))
98 (choice :tag "demotion will change it to"
99 (const "-")
100 (const "+")
101 (const "*")
102 (const "1.")
103 (const "1)")))))
66 104
67 (defcustom org-plain-list-ordered-item-terminator t 105 (defcustom org-plain-list-ordered-item-terminator t
68 "The character that makes a line with leading number an ordered list item. 106 "The character that makes a line with leading number an ordered list item.
69 Valid values are ?. and ?\). To get both terminators, use t. While 107 Valid values are ?. and ?\). To get both terminators, use t. While
70 ?. may look nicer, it creates the danger that a line with leading 108 ?. may look nicer, it creates the danger that a line with leading
101 :group 'org-plain-lists 139 :group 'org-plain-lists
102 :type 'boolean) 140 :type 'boolean)
103 141
104 (defcustom org-provide-checkbox-statistics t 142 (defcustom org-provide-checkbox-statistics t
105 "Non-nil means, update checkbox statistics after insert and toggle. 143 "Non-nil means, update checkbox statistics after insert and toggle.
106 When this is set, checkbox statistics is updated each time you either insert 144 When this is set, checkbox statistics is updated each time you
107 a new checkbox with \\[org-insert-todo-heading] or toggle a checkbox 145 either insert a new checkbox with \\[org-insert-todo-heading] or
108 with \\[org-ctrl-c-ctrl-c\\]." 146 toggle a checkbox with \\[org-ctrl-c-ctrl-c]."
147 :group 'org-plain-lists
148 :type 'boolean)
149
150 (defcustom org-hierarchical-checkbox-statistics t
151 "Non-nil means, checkbox statistics counts only the state of direct children.
152 When nil, all boxes below the cookie are counted."
109 :group 'org-plain-lists 153 :group 'org-plain-lists
110 :type 'boolean) 154 :type 'boolean)
111 155
112 (defcustom org-description-max-indent 20 156 (defcustom org-description-max-indent 20
113 "Maximum indentation for the second line of a description list. 157 "Maximum indentation for the second line of a description list.
115 5 characters instead." 159 5 characters instead."
116 :group 'org-plain-lists 160 :group 'org-plain-lists
117 :type 'integer) 161 :type 'integer)
118 162
119 (defvar org-list-beginning-re 163 (defvar org-list-beginning-re
120 "^\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) +\\(.*\\)$") 164 "^\\([ \t]*\\)\\([-+]\\|[0-9]+[.)]\\) +\\(.*\\)$")
121 165
122 (defcustom org-list-radio-list-templates 166 (defcustom org-list-radio-list-templates
123 '((latex-mode "% BEGIN RECEIVE ORGLST %n 167 '((latex-mode "% BEGIN RECEIVE ORGLST %n
124 % END RECEIVE ORGLST %n 168 % END RECEIVE ORGLST %n
125 \\begin{comment} 169 \\begin{comment}
157 (goto-char (point-at-bol)) 201 (goto-char (point-at-bol))
158 (looking-at 202 (looking-at
159 (cond 203 (cond
160 ((eq llt t) "\\([ \t]*\\([-+]\\|\\([0-9]+[.)]\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)") 204 ((eq llt t) "\\([ \t]*\\([-+]\\|\\([0-9]+[.)]\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)")
161 ((= llt ?.) "\\([ \t]*\\([-+]\\|\\([0-9]+\\.\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)") 205 ((= llt ?.) "\\([ \t]*\\([-+]\\|\\([0-9]+\\.\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)")
162 ((= llt ?\)) "\\([ \t]*\\([-+]\\|\\([0-9]+))\\)\\|[ \t]+\\*\\)\\( \\|$\\)") 206 ((= llt ?\)) "\\([ \t]*\\([-+]\\|\\([0-9]+)\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)")
163 (t (error "Invalid value of `org-plain-list-ordered-item-terminator'"))))))) 207 (t (error "Invalid value of `org-plain-list-ordered-item-terminator'")))))))
164 208
165 (defun org-at-item-bullet-p () 209 (defun org-at-item-bullet-p ()
166 "Is point at the bullet of a plain list item?" 210 "Is point at the bullet of a plain list item?"
167 (and (org-at-item-p) 211 (and (org-at-item-p)
206 (save-match-data 250 (save-match-data
207 (string-match "^[-+*][ \t]+[0-9]+:[0-9]+:[0-9]+$" 251 (string-match "^[-+*][ \t]+[0-9]+:[0-9]+:[0-9]+$"
208 descp)))) 252 descp))))
209 (eow (save-excursion (beginning-of-line 1) (looking-at "[ \t]*") 253 (eow (save-excursion (beginning-of-line 1) (looking-at "[ \t]*")
210 (match-end 0))) 254 (match-end 0)))
211 (blank-a (cdr (assq 'plain-list-item org-blank-before-new-entry))) 255 (blank-a (if org-empty-line-terminates-plain-lists
256 nil
257 (cdr (assq 'plain-list-item org-blank-before-new-entry))))
212 (blank (if (eq blank-a 'auto) empty-line-p blank-a)) 258 (blank (if (eq blank-a 'auto) empty-line-p blank-a))
213 pos) 259 pos)
214 (if descp (setq checkbox nil)) 260 (if descp (setq checkbox nil))
215 (if timerp 261 (if timerp
216 (progn (org-timer-item) t) 262 (progn (org-timer-item) t)
249 (looking-at "\\[[- X]\\]")))) 295 (looking-at "\\[[- X]\\]"))))
250 296
251 (defun org-toggle-checkbox (&optional toggle-presence) 297 (defun org-toggle-checkbox (&optional toggle-presence)
252 "Toggle the checkbox in the current line. 298 "Toggle the checkbox in the current line.
253 With prefix arg TOGGLE-PRESENCE, add or remove checkboxes. 299 With prefix arg TOGGLE-PRESENCE, add or remove checkboxes.
300 With double prefix, set checkbox to [-].
254 When there is an active region, toggle status or presence of the checkbox 301 When there is an active region, toggle status or presence of the checkbox
255 in the first line, and make every item in the region have the same 302 in the first line, and make every item in the region have the same
256 status or presence, respectively. 303 status or presence, respectively.
257 If the cursor is in a headline, apply this to all checkbox items in the 304 If the cursor is in a headline, apply this to all checkbox items in the
258 text below the heading." 305 text below the heading."
259 (interactive "P") 306 (interactive "P")
260 (catch 'exit 307 (catch 'exit
261 (let (beg end status first-present first-status) 308 (let (beg end status first-present first-status blocked)
262 (cond 309 (cond
263 ((org-region-active-p) 310 ((org-region-active-p)
264 (setq beg (region-beginning) end (region-end))) 311 (setq beg (region-beginning) end (region-end)))
265 ((org-on-heading-p) 312 ((org-on-heading-p)
266 (setq beg (point) end (save-excursion (outline-next-heading) (point)))) 313 (setq beg (point) end (save-excursion (outline-next-heading) (point))))
267 ((org-at-item-checkbox-p) 314 ((org-at-item-checkbox-p)
268 (let ((pos (point))) 315 (save-excursion
269 (if toggle-presence 316 (if (equal toggle-presence '(4))
270 (progn 317 (progn
271 (replace-match "") 318 (replace-match "")
272 (goto-char (match-beginning 0)) 319 (goto-char (match-beginning 0))
273 (just-one-space)) 320 (just-one-space))
321 (when (setq blocked (org-checkbox-blocked-p))
322 (error "Checkbox blocked because of unchecked box in line %d"
323 blocked))
274 (replace-match 324 (replace-match
275 (cond ((member (match-string 0) '("[ ]" "[-]")) "[X]") 325 (cond ((equal toggle-presence '(16)) "[-]")
326 ((member (match-string 0) '("[ ]" "[-]")) "[X]")
276 (t "[ ]")) 327 (t "[ ]"))
277 t t)) 328 t t)))
278 (goto-char pos))
279 (throw 'exit t)) 329 (throw 'exit t))
280 ((org-at-item-p) 330 ((org-at-item-p)
281 ;; add a checkbox 331 ;; add a checkbox
282 (save-excursion 332 (save-excursion
283 (goto-char (match-end 0)) 333 (goto-char (match-end 0))
310 (replace-match 360 (replace-match
311 (if first-status "[ ]" "[X]") t t))) 361 (if first-status "[ ]" "[X]") t t)))
312 (beginning-of-line 2))))) 362 (beginning-of-line 2)))))
313 (org-update-checkbox-count-maybe)) 363 (org-update-checkbox-count-maybe))
314 364
365 (defun org-reset-checkbox-state-subtree ()
366 "Reset all checkboxes in an entry subtree."
367 (interactive "*")
368 (save-restriction
369 (save-excursion
370 (org-narrow-to-subtree)
371 (org-show-subtree)
372 (goto-char (point-min))
373 (let ((end (point-max)))
374 (while (< (point) end)
375 (when (org-at-item-checkbox-p)
376 (replace-match "[ ]" t t))
377 (beginning-of-line 2))))
378 (org-update-checkbox-count-maybe)))
379
380 (defun org-checkbox-blocked-p ()
381 "Is the current checkbox blocked from for being checked now?
382 A checkbox is blocked if all of the following conditions are fulfilled:
383
384 1. The checkbox is not checked already.
385 2. The current entry has the ORDERED property set.
386 3. There is an unchecked checkbox in this entry before the current line."
387 (catch 'exit
388 (save-match-data
389 (save-excursion
390 (unless (org-at-item-checkbox-p) (throw 'exit nil))
391 (when (equal (match-string 0) "[X]")
392 ;; the box is already checked!
393 (throw 'exit nil))
394 (let ((end (point-at-bol)))
395 (condition-case nil (org-back-to-heading t)
396 (error (throw 'exit nil)))
397 (unless (org-entry-get nil "ORDERED") (throw 'exit nil))
398 (if (re-search-forward "^[ \t]*[-+*0-9.)] \\[[- ]\\]" end t)
399 (org-current-line)
400 nil))))))
401
402 (defvar org-checkbox-statistics-hook nil
403 "Hook that is run whenever Org thinks checkbox statistics should be updated.
404 This hook runs even if `org-provide-checkbox-statistics' is nil, to it can
405 be used to implement alternative ways of collecting statistics information.")
406
315 (defun org-update-checkbox-count-maybe () 407 (defun org-update-checkbox-count-maybe ()
316 "Update checkbox statistics unless turned off by user." 408 "Update checkbox statistics unless turned off by user."
317 (when org-provide-checkbox-statistics 409 (when org-provide-checkbox-statistics
318 (org-update-checkbox-count))) 410 (org-update-checkbox-count))
411 (run-hooks 'org-checkbox-statistics-hook))
319 412
320 (defun org-update-checkbox-count (&optional all) 413 (defun org-update-checkbox-count (&optional all)
321 "Update the checkbox statistics in the current section. 414 "Update the checkbox statistics in the current section.
322 This will find all statistic cookies like [57%] and [6/12] and update them 415 This will find all statistic cookies like [57%] and [6/12] and update them
323 with the current numbers. With optional prefix argument ALL, do this for 416 with the current numbers. With optional prefix argument ALL, do this for
333 (re "\\(\\(\\[[0-9]*%\\]\\)\\|\\(\\[[0-9]*/[0-9]*\\]\\)\\)") 426 (re "\\(\\(\\[[0-9]*%\\]\\)\\|\\(\\[[0-9]*/[0-9]*\\]\\)\\)")
334 (re-box "^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[[- X]\\]\\)") 427 (re-box "^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[[- X]\\]\\)")
335 (re-find (concat re "\\|" re-box)) 428 (re-find (concat re "\\|" re-box))
336 beg-cookie end-cookie is-percent c-on c-off lim 429 beg-cookie end-cookie is-percent c-on c-off lim
337 eline curr-ind next-ind continue-from startsearch 430 eline curr-ind next-ind continue-from startsearch
431 (recursive
432 (or (not org-hierarchical-checkbox-statistics)
433 (string-match "\\<recursive\\>"
434 (or (org-entry-get nil "COOKIE_DATA") ""))))
338 (cstat 0) 435 (cstat 0)
339 ) 436 )
340 (when all 437 (when all
341 (goto-char (point-min)) 438 (goto-char (point-min))
342 (outline-next-heading) 439 (outline-next-heading)
343 (setq beg (point) end (point-max))) 440 (setq beg (point) end (point-max)))
344 (goto-char end) 441 (goto-char end)
345 ;; find each statistic cookie 442 ;; find each statistics cookie
346 (while (re-search-backward re-find beg t) 443 (while (and (re-search-backward re-find beg t)
444 (not (save-match-data
445 (and (org-on-heading-p)
446 (string-match "\\<todo\\>"
447 (downcase
448 (or (org-entry-get
449 nil "COOKIE_DATA")
450 "")))))))
347 (setq beg-cookie (match-beginning 1) 451 (setq beg-cookie (match-beginning 1)
348 end-cookie (match-end 1) 452 end-cookie (match-end 1)
349 cstat (+ cstat (if end-cookie 1 0)) 453 cstat (+ cstat (if end-cookie 1 0))
350 startsearch (point-at-eol) 454 startsearch (point-at-eol)
351 continue-from (match-beginning 0) 455 continue-from (match-beginning 0)
363 (if (re-search-forward re-box lim t) 467 (if (re-search-forward re-box lim t)
364 (progn 468 (progn
365 (org-beginning-of-item) 469 (org-beginning-of-item)
366 (setq curr-ind (org-get-indentation)) 470 (setq curr-ind (org-get-indentation))
367 (setq next-ind curr-ind) 471 (setq next-ind curr-ind)
368 (while (and (bolp) (org-at-item-p) (= curr-ind next-ind)) 472 (while (and (bolp) (org-at-item-p)
473 (if recursive
474 (<= curr-ind next-ind)
475 (= curr-ind next-ind)))
369 (save-excursion (end-of-line) (setq eline (point))) 476 (save-excursion (end-of-line) (setq eline (point)))
370 (if (re-search-forward re-box eline t) 477 (if (re-search-forward re-box eline t)
371 (if (member (match-string 2) '("[ ]" "[-]")) 478 (if (member (match-string 2) '("[ ]" "[-]"))
372 (setq c-off (1+ c-off)) 479 (setq c-off (1+ c-off))
373 (setq c-on (1+ c-on)) 480 (setq c-on (1+ c-on))))
374 ) 481 (if (not recursive)
375 ) 482 (org-end-of-item)
376 (org-end-of-item) 483 (end-of-line)
377 (setq next-ind (org-get-indentation)) 484 (when (re-search-forward org-list-beginning-re lim t)
378 ))) 485 (beginning-of-line)))
486 (setq next-ind (org-get-indentation)))))
379 (goto-char continue-from) 487 (goto-char continue-from)
380 ;; update cookie 488 ;; update cookie
381 (when end-cookie 489 (when end-cookie
382 (delete-region beg-cookie end-cookie) 490 (delete-region beg-cookie end-cookie)
383 (goto-char beg-cookie) 491 (goto-char beg-cookie)
406 (defun org-get-checkbox-statistics-face () 514 (defun org-get-checkbox-statistics-face ()
407 "Select the face for checkbox statistics. 515 "Select the face for checkbox statistics.
408 The face will be `org-done' when all relevant boxes are checked. Otherwise 516 The face will be `org-done' when all relevant boxes are checked. Otherwise
409 it will be `org-todo'." 517 it will be `org-todo'."
410 (if (match-end 1) 518 (if (match-end 1)
411 (if (equal (match-string 1) "100%") 'org-done 'org-todo) 519 (if (equal (match-string 1) "100%")
520 'org-checkbox-statistics-done
521 'org-checkbox-statistics-todo)
412 (if (and (> (match-end 2) (match-beginning 2)) 522 (if (and (> (match-end 2) (match-beginning 2))
413 (equal (match-string 2) (match-string 3))) 523 (equal (match-string 2) (match-string 3)))
414 'org-done 524 'org-checkbox-statistics-done
415 'org-todo))) 525 'org-checkbox-statistics-todo)))
416 526
417 (defun org-beginning-of-item () 527 (defun org-beginning-of-item ()
418 "Go to the beginning of the current hand-formatted item. 528 "Go to the beginning of the current hand-formatted item.
419 If the cursor is not in an item, throw an error." 529 If the cursor is not in an item, throw an error."
420 (interactive) 530 (interactive)
511 (org-beginning-of-item)) 621 (org-beginning-of-item))
512 (error (goto-char pos) 622 (error (goto-char pos)
513 (error "On first item"))))) 623 (error "On first item")))))
514 624
515 (defun org-first-list-item-p () 625 (defun org-first-list-item-p ()
516 "Is this heading the item in a plain list?" 626 "Is this heading the first item in a plain list?"
517 (unless (org-at-item-p) 627 (unless (org-at-item-p)
518 (error "Not at a plain list item")) 628 (error "Not at a plain list item"))
519 (org-beginning-of-item) 629 (save-excursion
520 (= (point) (save-excursion (org-beginning-of-item-list)))) 630 (org-beginning-of-item)
631 (= (point) (save-excursion (org-beginning-of-item-list)))))
521 632
522 (defun org-move-item-down () 633 (defun org-move-item-down ()
523 "Move the plain list item at point down, i.e. swap with following item. 634 "Move the plain list item at point down, i.e. swap with following item.
524 Subitems (items with larger indentation) are considered part of the item, 635 Subitems (items with larger indentation) are considered part of the item,
525 so this really moves item trees." 636 so this really moves item trees."
703 fmt bobp old new) 814 fmt bobp old new)
704 ;; find where this list begins 815 ;; find where this list begins
705 (org-beginning-of-item-list) 816 (org-beginning-of-item-list)
706 (setq bobp (bobp)) 817 (setq bobp (bobp))
707 (looking-at "[ \t]*[0-9]+\\([.)]\\)") 818 (looking-at "[ \t]*[0-9]+\\([.)]\\)")
708 (setq fmt (concat "%d" (match-string 1))) 819 (setq fmt (concat "%d" (or (match-string 1) ".")))
709 (beginning-of-line 0) 820 (beginning-of-line 0)
710 ;; walk forward and replace these numbers 821 ;; walk forward and replace these numbers
711 (catch 'exit 822 (catch 'exit
712 (while t 823 (while t
713 (catch 'next 824 (catch 'next
724 (insert (setq new (format fmt (setq n (1+ n))))) 835 (insert (setq new (format fmt (setq n (1+ n)))))
725 (org-shift-item-indentation (- (length new) (length old)))))) 836 (org-shift-item-indentation (- (length new) (length old))))))
726 (goto-line line) 837 (goto-line line)
727 (org-move-to-column col))) 838 (org-move-to-column col)))
728 839
729 (defun org-fix-bullet-type () 840 (defun org-fix-bullet-type (&optional force-bullet)
730 "Make sure all items in this list have the same bullet as the first item. 841 "Make sure all items in this list have the same bullet as the first item.
731 Also, fix the indentation." 842 Also, fix the indentation."
732 (interactive) 843 (interactive)
733 (unless (org-at-item-p) (error "This is not a list")) 844 (unless (org-at-item-p) (error "This is not a list"))
734 (let ((line (org-current-line)) 845 (let ((line (org-current-line))
738 ;; find where this list begins 849 ;; find where this list begins
739 (org-beginning-of-item-list) 850 (org-beginning-of-item-list)
740 (beginning-of-line 1) 851 (beginning-of-line 1)
741 ;; find out what the bullet type is 852 ;; find out what the bullet type is
742 (looking-at "[ \t]*\\(\\S-+\\)") 853 (looking-at "[ \t]*\\(\\S-+\\)")
743 (setq bullet (concat (match-string 1) " ")) 854 (setq bullet (concat (or force-bullet (match-string 1)) " "))
744 (if (and org-list-two-spaces-after-bullet-regexp 855 (if (and org-list-two-spaces-after-bullet-regexp
745 (string-match org-list-two-spaces-after-bullet-regexp bullet)) 856 (string-match org-list-two-spaces-after-bullet-regexp bullet))
746 (setq bullet (concat bullet " "))) 857 (setq bullet (concat bullet " ")))
747 ;; walk forward and replace these numbers 858 ;; walk forward and replace these numbers
748 (beginning-of-line 0) 859 (beginning-of-line 0)
757 (if (< ind1 ind) (throw 'exit t)) 868 (if (< ind1 ind) (throw 'exit t))
758 (if (not (org-at-item-p)) (throw 'exit nil)) 869 (if (not (org-at-item-p)) (throw 'exit nil))
759 (skip-chars-forward " \t") 870 (skip-chars-forward " \t")
760 (looking-at "\\S-+ *") 871 (looking-at "\\S-+ *")
761 (setq oldbullet (match-string 0)) 872 (setq oldbullet (match-string 0))
762 (replace-match bullet) 873 (unless (equal bullet oldbullet) (replace-match bullet))
763 (org-shift-item-indentation (- (length bullet) (length oldbullet)))))) 874 (org-shift-item-indentation (- (length bullet) (length oldbullet))))))
764 (goto-line line) 875 (goto-line line)
765 (org-move-to-column col) 876 (org-move-to-column col)
766 (if (string-match "[0-9]" bullet) 877 (if (string-match "[0-9]" bullet)
767 (org-renumber-ordered-list 1)))) 878 (org-renumber-ordered-list 1))))
805 (setq pos (point-min)))) 916 (setq pos (point-min))))
806 (throw 'exit t) 917 (throw 'exit t)
807 (when (org-at-item-p) (setq pos (point-at-bol))))))) 918 (when (org-at-item-p) (setq pos (point-at-bol)))))))
808 (goto-char pos))) 919 (goto-char pos)))
809 920
810
811 (defun org-end-of-item-list () 921 (defun org-end-of-item-list ()
812 "Go to the end of the current item list. 922 "Go to the end of the current item list.
813 I.e. to the text after the last item." 923 I.e. to the text after the last item."
814 (interactive) 924 (interactive)
815 (org-beginning-of-item) 925 (org-beginning-of-item)
820 (catch 'exit 930 (catch 'exit
821 (while t 931 (while t
822 (catch 'next 932 (catch 'next
823 (beginning-of-line 2) 933 (beginning-of-line 2)
824 (if (looking-at "[ \t]*$") 934 (if (looking-at "[ \t]*$")
825 (throw (if (eobp) 'exit 'next) t)) 935 (if (eobp)
936 (progn (setq pos (point)) (throw 'exit t))
937 (throw 'next t)))
826 (skip-chars-forward " \t") (setq ind1 (current-column)) 938 (skip-chars-forward " \t") (setq ind1 (current-column))
827 (if (or (< ind1 ind) 939 (if (or (< ind1 ind)
828 (and (= ind1 ind) 940 (and (= ind1 ind)
829 (not (org-at-item-p))) 941 (not (org-at-item-p)))
830 (eobp)) 942 (eobp))
843 (org-indent-item (- arg))) 955 (org-indent-item (- arg)))
844 956
845 (defun org-indent-item (arg) 957 (defun org-indent-item (arg)
846 "Indent a local list item." 958 "Indent a local list item."
847 (interactive "p") 959 (interactive "p")
960 (and (org-region-active-p) (org-cursor-to-region-beginning))
848 (unless (org-at-item-p) 961 (unless (org-at-item-p)
849 (error "Not on an item")) 962 (error "Not on an item"))
850 (save-excursion 963 (let (beg end ind ind1 ind-bul delta ind-down ind-up firstp)
851 (let (beg end ind ind1 tmp delta ind-down ind-up) 964 (setq firstp (org-first-list-item-p))
965 (save-excursion
966 (setq end (and (org-region-active-p) (region-end)))
852 (if (memq last-command '(org-shiftmetaright org-shiftmetaleft)) 967 (if (memq last-command '(org-shiftmetaright org-shiftmetaleft))
853 (setq beg org-last-indent-begin-marker 968 (setq beg org-last-indent-begin-marker
854 end org-last-indent-end-marker) 969 end org-last-indent-end-marker)
855 (org-beginning-of-item) 970 (org-beginning-of-item)
856 (setq beg (move-marker org-last-indent-begin-marker (point))) 971 (setq beg (move-marker org-last-indent-begin-marker (point)))
857 (org-end-of-item) 972 (org-end-of-item)
858 (setq end (move-marker org-last-indent-end-marker (point)))) 973 (setq end (move-marker org-last-indent-end-marker (or end (point)))))
859 (goto-char beg) 974 (goto-char beg)
860 (setq tmp (org-item-indent-positions) 975 (setq ind-bul (org-item-indent-positions)
861 ind (car tmp) 976 ind (caar ind-bul)
862 ind-down (nth 2 tmp) 977 ind-down (car (nth 2 ind-bul))
863 ind-up (nth 1 tmp) 978 ind-up (car (nth 1 ind-bul))
864 delta (if (> arg 0) 979 delta (if (> arg 0)
865 (if ind-down (- ind-down ind) 2) 980 (if ind-down (- ind-down ind) 2)
866 (if ind-up (- ind-up ind) -2))) 981 (if ind-up (- ind-up ind) -2)))
867 (if (< (+ delta ind) 0) (error "Cannot outdent beyond margin")) 982 (if (< (+ delta ind) 0) (error "Cannot outdent beyond margin"))
868 (while (< (point) end) 983 (while (< (point) end)
869 (beginning-of-line 1) 984 (beginning-of-line 1)
870 (skip-chars-forward " \t") (setq ind1 (current-column)) 985 (skip-chars-forward " \t") (setq ind1 (current-column))
871 (delete-region (point-at-bol) (point)) 986 (delete-region (point-at-bol) (point))
872 (or (eolp) (org-indent-to-column (+ ind1 delta))) 987 (or (eolp) (org-indent-to-column (+ ind1 delta)))
873 (beginning-of-line 2)))) 988 (beginning-of-line 2)))
874 (org-fix-bullet-type) 989 (org-fix-bullet-type
875 (org-maybe-renumber-ordered-list-safe) 990 (and (> arg 0)
876 (save-excursion 991 (not firstp)
877 (beginning-of-line 0) 992 (cdr (assoc (cdr (nth 0 ind-bul)) org-list-demote-modify-bullet))))
878 (condition-case nil (org-beginning-of-item) (error nil)) 993 (org-maybe-renumber-ordered-list-safe)
879 (org-maybe-renumber-ordered-list-safe))) 994 (save-excursion
995 (beginning-of-line 0)
996 (condition-case nil (org-beginning-of-item) (error nil))
997 (org-maybe-renumber-ordered-list-safe))))
880 998
881 (defun org-item-indent-positions () 999 (defun org-item-indent-positions ()
882 "Return indentation for plain list items. 1000 "Return indentation for plain list items.
883 This returns a list with three values: The current indentation, the 1001 This returns a list with three values: The current indentation, the
884 parent indentation and the indentation a child should have. 1002 parent indentation and the indentation a child should have.
885 Assumes cursor in item line." 1003 Assumes cursor in item line."
886 (let* ((bolpos (point-at-bol)) 1004 (let* ((bolpos (point-at-bol))
887 (ind (org-get-indentation)) 1005 (ind (org-get-indentation))
888 ind-down ind-up pos) 1006 (bullet (org-get-bullet))
1007 ind-down ind-up bullet-up bullet-down pos)
889 (save-excursion 1008 (save-excursion
890 (org-beginning-of-item-list) 1009 (org-beginning-of-item-list)
891 (skip-chars-backward "\n\r \t") 1010 (skip-chars-backward "\n\r \t")
892 (when (org-in-item-p) 1011 (when (org-in-item-p)
893 (org-beginning-of-item) 1012 (org-beginning-of-item)
894 (setq ind-up (org-get-indentation)))) 1013 (setq ind-up (org-get-indentation))
1014 (setq bullet-up (org-get-bullet))))
895 (setq pos (point)) 1015 (setq pos (point))
896 (save-excursion 1016 (save-excursion
897 (cond 1017 (cond
898 ((and (condition-case nil (progn (org-previous-item) t) 1018 ((and (condition-case nil (progn (org-previous-item) t)
899 (error nil)) 1019 (error nil))
900 (or (forward-char 1) t) 1020 (or (forward-char 1) t)
901 (re-search-forward "^\\([ \t]*\\([-+]\\|\\([0-9]+[.)]\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)" bolpos t)) 1021 (re-search-forward "^\\([ \t]*\\([-+]\\|\\([0-9]+[.)]\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)" bolpos t))
902 (setq ind-down (org-get-indentation))) 1022 (setq ind-down (org-get-indentation)
1023 bullet-down (org-get-bullet)))
903 ((and (goto-char pos) 1024 ((and (goto-char pos)
904 (org-at-item-p)) 1025 (org-at-item-p))
905 (goto-char (match-end 0)) 1026 (goto-char (match-end 0))
906 (skip-chars-forward " \t") 1027 (skip-chars-forward " \t")
907 (setq ind-down (current-column))))) 1028 (setq ind-down (current-column)
908 (list ind ind-up ind-down))) 1029 bullet-down (org-get-bullet)))))
909 1030 (if (and bullet-down (string-match "\\`[0-9]+\\(\\.\\|)\\)\\'" bullet-down))
1031 (setq bullet-down (concat "1" (match-string 1 bullet-down))))
1032 (if (and bullet-up (string-match "\\`[0-9]+\\(\\.\\|)\\)\\'" bullet-up))
1033 (setq bullet-up (concat "1" (match-string 1 bullet-up))))
1034 (if (and bullet (string-match "\\`[0-9]+\\(\\.\\|)\\)\\'" bullet))
1035 (setq bullet (concat "1" (match-string 1 bullet))))
1036 (list (cons ind bullet)
1037 (cons ind-up bullet-up)
1038 (cons ind-down bullet-down))))
1039
1040 (defun org-get-bullet ()
1041 (save-excursion
1042 (goto-char (point-at-bol))
1043 (and (looking-at
1044 "^\\([ \t]*\\([-+]\\|\\([0-9]+[.)]\\)\\)\\|[ \t]+\\(\\*\\)\\)\\( \\|$\\)")
1045 (or (match-string 2) (match-string 4)))))
910 1046
911 ;;; Send and receive lists 1047 ;;; Send and receive lists
912 1048
913 (defun org-list-parse-list (&optional delete) 1049 (defun org-list-parse-list (&optional delete)
914 "Parse the list at point and maybe DELETE it. 1050 "Parse the list at point and maybe DELETE it.
966 (re-search-backward 1102 (re-search-backward
967 org-list-beginning-re nil t))) 1103 org-list-beginning-re nil t)))
968 (progn (goto-char (point-min)) (point)) 1104 (progn (goto-char (point-min)) (point))
969 (cons (match-beginning 0) (match-string 1))))) 1105 (cons (match-beginning 0) (match-string 1)))))
970 1106
1107 (defun org-list-goto-true-beginning ()
1108 "Go to the beginning of the list at point."
1109 (beginning-of-line 1)
1110 (while (looking-at org-list-beginning-re)
1111 (beginning-of-line 0))
1112 (progn
1113 (re-search-forward org-list-beginning-re nil t)
1114 (goto-char (match-beginning 0))))
1115
1116 (defun org-list-make-subtree ()
1117 "Convert the plain list at point into a subtree."
1118 (interactive)
1119 (org-list-goto-true-beginning)
1120 (let ((list (org-list-parse-list t)) nstars)
1121 (save-excursion
1122 (if (condition-case nil
1123 (org-back-to-heading)
1124 (error nil))
1125 (progn (re-search-forward org-complex-heading-regexp nil t)
1126 (setq nstars (length (match-string 1))))
1127 (setq nstars 0)))
1128 (org-list-make-subtrees list (1+ nstars))))
1129
1130 (defun org-list-make-subtrees (list level)
1131 "Convert LIST into subtrees starting at LEVEL."
1132 (if (symbolp (car list))
1133 (org-list-make-subtrees (cdr list) level)
1134 (mapcar (lambda (item)
1135 (if (stringp item)
1136 (insert (make-string
1137 (if org-odd-levels-only
1138 (1- (* 2 level)) level) ?*) " " item "\n")
1139 (org-list-make-subtrees item (1+ level))))
1140 list)))
1141
971 (defun org-list-end (indent) 1142 (defun org-list-end (indent)
972 "Return the position of the end of the list. 1143 "Return the position of the end of the list.
973 INDENT is the indentation of the list." 1144 INDENT is the indentation of the list, as a string."
974 (save-excursion 1145 (save-excursion
975 (catch 'exit 1146 (catch 'exit
976 (while (or (looking-at org-list-beginning-re) 1147 (while (or (looking-at org-list-beginning-re)
977 (looking-at (concat "^" indent "[ \t]+\\|^$"))) 1148 (looking-at (concat "^" indent "[ \t]+\\|^$"))
1149 (> (or (get-text-property (point) 'original-indentation) -1)
1150 (length indent)))
978 (if (eq (point) (point-max)) 1151 (if (eq (point) (point-max))
979 (throw 'exit (point-max))) 1152 (throw 'exit (point-max)))
980 (forward-line 1))) (point))) 1153 (forward-line 1)))
1154 (point)))
981 1155
982 (defun org-list-insert-radio-list () 1156 (defun org-list-insert-radio-list ()
983 "Insert a radio list template appropriate for this major mode." 1157 "Insert a radio list template appropriate for this major mode."
984 (interactive) 1158 (interactive)
985 (let* ((e (assq major-mode org-list-radio-list-templates)) 1159 (let* ((e (assq major-mode org-list-radio-list-templates))
1000 this list." 1174 this list."
1001 (interactive) 1175 (interactive)
1002 (catch 'exit 1176 (catch 'exit
1003 (unless (org-at-item-p) (error "Not at a list")) 1177 (unless (org-at-item-p) (error "Not at a list"))
1004 (save-excursion 1178 (save-excursion
1005 (goto-char (car (org-list-item-beginning))) 1179 (org-list-goto-true-beginning)
1006 (beginning-of-line 0) 1180 (beginning-of-line 0)
1007 (unless (looking-at "#\\+ORGLST: *SEND +\\([a-zA-Z0-9_]+\\) +\\([^ \t\r\n]+\\)\\( +.*\\)?") 1181 (unless (looking-at "#\\+ORGLST: *SEND +\\([a-zA-Z0-9_]+\\) +\\([^ \t\r\n]+\\)\\( +.*\\)?")
1008 (if maybe 1182 (if maybe
1009 (throw 'exit nil) 1183 (throw 'exit nil)
1010 (error "Don't know how to transform this list")))) 1184 (error "Don't know how to transform this list"))))
1148 (defun org-list-to-texinfo (list &optional params) 1322 (defun org-list-to-texinfo (list &optional params)
1149 "Convert LIST into a Texinfo list. 1323 "Convert LIST into a Texinfo list.
1150 LIST is as returnd by `org-list-parse-list'. PARAMS is a property list 1324 LIST is as returnd by `org-list-parse-list'. PARAMS is a property list
1151 with overruling parameters for `org-list-to-generic'." 1325 with overruling parameters for `org-list-to-generic'."
1152 (org-list-to-generic 1326 (org-list-to-generic
1153 list 1327 list
1154 (org-combine-plists 1328 (org-combine-plists
1155 '(:splicep nil :ostart "@itemize @minus" :oend "@end itemize" 1329 '(:splicep nil :ostart "@itemize @minus" :oend "@end itemize"
1156 :ustart "@enumerate" :uend "@end enumerate" 1330 :ustart "@enumerate" :uend "@end enumerate"
1157 :dstart "@table" :dend "@end table" 1331 :dstart "@table" :dend "@end table"
1158 :dtstart "@item " :dtend "\n" 1332 :dtstart "@item " :dtend "\n"