diff --git a/org b/org index 2efd1c25e..bbd41a185 100644 --- a/org +++ b/org @@ -5,7 +5,7 @@ START-INFO-DIR-ENTRY * Org Mode: (org). outline-based notes management and organizer END-INFO-DIR-ENTRY - This manual is for Org-mode (version 4.40). + This manual is for Org-mode (version 4.41). Copyright (C) 2004, 2005, 2006 Free Software Foundation @@ -27,7 +27,7 @@ File: org, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) Org Mode Manual *************** -This manual is for Org-mode (version 4.40). +This manual is for Org-mode (version 4.41). Copyright (C) 2004, 2005, 2006 Free Software Foundation @@ -80,6 +80,7 @@ Document Structure * Archiving:: Move done task trees to a different place * Sparse trees:: Matches embedded in context * Plain lists:: Editing hand-formatted lists +* Checkboxes:: Easily checking off things. Archiving @@ -373,6 +374,7 @@ edit the structure of the document. * Archiving:: Move done task trees to a different place * Sparse trees:: Matches embedded in context * Plain lists:: Editing hand-formatted lists +* Checkboxes:: Easily checking off things.  File: org, Node: Outlines, Next: Headlines, Prev: Document structure, Up: Document structure @@ -684,7 +686,7 @@ only the visible part of the document and print the resulting file. display for outlining, not text properties.  -File: org, Node: Plain lists, Prev: Sparse trees, Up: Document structure +File: org, Node: Plain lists, Next: Checkboxes, Prev: Sparse trees, Up: Document structure 2.8 Plain lists =============== @@ -719,15 +721,6 @@ is indented like the bullet/number, or less. For example: Org-mode supports these lists by tuning filling and wrapping commands to deal with them correctly. - Every item in a plain list can be made a checkbox by starting it with -the string `[ ]'. The checkbox status can conveniently be toggled with -`C-c C-c'. - - * Stupid mistakes when distributing a new version - - [ ] update also Emacs CVS - - [X] forget to update index.html on the website - - [X] leaving a `(debug)' form in the code - The following commands act on items when the cursor is in the first line of an item (the line with the bullet or number). @@ -749,7 +742,7 @@ line of an item (the line with the bullet or number). contain the bullet, a bullet is added to the current line. `M-S-' - Insert a new item with a checkbox. + Insert a new item with a checkbox (*note Checkboxes::). `S-' `S-' @@ -771,9 +764,9 @@ line of an item (the line with the bullet or number). hierarchy, break the command chain with a cursor motion or so. `C-c C-c' - If there is a checkbox in the item line, toggle the state of the - checkbox. Otherwise, if this is an ordered list, renumber the - ordered list at the cursor. + If there is a checkbox (*note Checkboxes::) in the item line, + toggle the state of the checkbox. Otherwise, if this is an + ordered list, renumber the ordered list at the cursor. ---------- Footnotes ---------- @@ -784,6 +777,48 @@ star are visually indistinguishable from true headlines. In short: even though `*' is supported, it may be better not to use it for plain list items + +File: org, Node: Checkboxes, Prev: Plain lists, Up: Document structure + +2.9 Checkboxes +============== + +Every item in a plain list (ordered and unordered) can be made a +checkbox by starting it with the string `[ ]'. This feature is similar +to TODO items (*note TODO items::), but more lightweight. Checkboxes +are not included into the global TODO list, so they are often great to +split a task into a number of simple steps. Or you can use them in a +shopping list to select the items you need to buy. To toggle a +checkbox, use `C-c C-c', or try Piotr Zielinski's `org-mouse.el'. Here +is an example of a checkbox list. + + * Avoid stupid mistakes when distributing a new version + - [ ] update also Emacs CVS + - [X] forget to update index.html on the website + - [X] leaving a `(debug)' form in the code + +The following commands work with checkboxes: + +`C-c C-c' + Toggle checkbox at point. + +`C-c C-x C-b' + Toggle checkbox at point. + - If there is an active region, toggle the first checkbox in + the region and set all remaining boxes to the same status as + the first. If you want to toggle all boxes in the region + independently, use a prefix argument. + + - If the cursor is in a headline, toggle checkboxes in the + region between this headline and the next. This does _not_ + act on the entire subtree, just the current entry. + + - If no active region, just toggle the checkbox at point. + +`M-S-' + Insert a new item with a checkbox. This works only if the cursor + is already in a plain list item (*note Plain lists::). +  File: org, Node: Tables, Next: Hyperlinks, Prev: Document structure, Up: Top @@ -4537,7 +4572,7 @@ Index * CamelCase links, completion of: CamelCase links. (line 6) * category: Categories. (line 6) * cdlatex.el: Cooperation. (line 29) -* checkboxes: Plain lists. (line 36) +* checkboxes: Checkboxes. (line 6) * children, subtree visibility state: Visibility cycling. (line 10) * clean outline view: Clean view. (line 6) * CLOCK keyword: Time stamps. (line 61) @@ -4839,7 +4874,7 @@ File: org, Node: Key Index, Prev: Index, Up: Top * <2>: Agenda commands. (line 35) * <3>: Built-in table editor. (line 57) -* <4>: Plain lists. (line 48) +* <4>: Plain lists. (line 39) * : Visibility cycling. (line 10) * > <1>: Agenda commands. (line 151) * >: Creating timestamps. (line 79) @@ -4911,7 +4946,8 @@ File: org, Node: Key Index, Prev: Index, Up: Top (line 16) * C-c C-c <6>: Built-in table editor. (line 54) -* C-c C-c: Plain lists. (line 85) +* C-c C-c <7>: Checkboxes. (line 22) +* C-c C-c: Plain lists. (line 76) * C-c C-d <1>: Agenda commands. (line 136) * C-c C-d: Creating timestamps. (line 37) * C-c C-f: Motion. (line 12) @@ -4937,6 +4973,7 @@ File: org, Node: Key Index, Prev: Index, Up: Top * C-c C-x b: HTML export. (line 11) * C-c C-x c: iCalendar export. (line 20) * C-c C-x C-a: ARCHIVE tag. (line 27) +* C-c C-x C-b: Checkboxes. (line 23) * C-c C-x C-c: Agenda commands. (line 198) * C-c C-x C-d: Clocking work time. (line 28) * C-c C-x C-i <1>: iCalendar export. (line 15) @@ -4994,7 +5031,7 @@ File: org, Node: Key Index, Prev: Index, Up: Top * M- <1>: Built-in table editor. (line 72) * M-: Structure editing. (line 18) -* M- <1>: Plain lists. (line 53) +* M- <1>: Plain lists. (line 44) * M-: Structure editing. (line 6) * M- <1>: Built-in table editor. (line 72) @@ -5006,23 +5043,24 @@ File: org, Node: Key Index, Prev: Index, Up: Top (line 82) * M-S- <1>: Built-in table editor. (line 89) -* M-S- <2>: Plain lists. (line 70) +* M-S- <2>: Plain lists. (line 61) * M-S-: Structure editing. (line 33) * M-S- <1>: Creating timestamps. (line 100) * M-S- <2>: Built-in table editor. (line 76) -* M-S- <3>: Plain lists. (line 76) +* M-S- <3>: Plain lists. (line 67) * M-S-: Structure editing. (line 24) -* M-S- <1>: Plain lists. (line 63) +* M-S- <1>: Checkboxes. (line 37) +* M-S- <2>: Plain lists. (line 54) * M-S-: Structure editing. (line 15) * M-S- <1>: Creating timestamps. (line 97) * M-S- <2>: Built-in table editor. (line 79) -* M-S- <3>: Plain lists. (line 76) +* M-S- <3>: Plain lists. (line 67) * M-S-: Structure editing. (line 27) * M-S- <1>: Built-in table editor. (line 86) -* M-S- <2>: Plain lists. (line 70) +* M-S- <2>: Plain lists. (line 61) * M-S-: Structure editing. (line 30) * mouse-1 <1>: Agenda commands. (line 35) * mouse-1 <2>: Creating timestamps. (line 82) @@ -5043,7 +5081,7 @@ File: org, Node: Key Index, Prev: Index, Up: Top * S- <1>: Agenda commands. (line 129) * S- <2>: Creating timestamps. (line 58) * S- <3>: Priorities. (line 25) -* S-: Plain lists. (line 66) +* S-: Plain lists. (line 57) * S- <1>: Agenda commands. (line 147) * S- <2>: Creating timestamps. (line 53) * S-: TODO basics. (line 20) @@ -5058,7 +5096,7 @@ File: org, Node: Key Index, Prev: Index, Up: Top * S- <1>: Agenda commands. (line 123) * S- <2>: Creating timestamps. (line 58) * S- <3>: Priorities. (line 25) -* S-: Plain lists. (line 66) +* S-: Plain lists. (line 57) * T: Agenda commands. (line 104) * t: Agenda commands. (line 100) * w: Agenda commands. (line 62) @@ -5069,136 +5107,137 @@ File: org, Node: Key Index, Prev: Index, Up: Top  Tag Table: Node: Top959 -Node: Introduction9455 -Node: Summary9768 -Node: Installation12035 -Node: Feedback13824 -Node: Document structure14595 -Node: Outlines15361 -Node: Headlines16021 -Node: Visibility cycling16644 -Ref: Visibility cycling-Footnote-118119 -Ref: Visibility cycling-Footnote-218177 -Node: Motion18227 -Node: Structure editing19011 -Node: Archiving21120 -Node: ARCHIVE tag21678 -Node: Moving subtrees23353 -Node: Sparse trees24394 -Ref: Sparse trees-Footnote-126373 -Ref: Sparse trees-Footnote-226465 -Node: Plain lists26580 -Ref: Plain lists-Footnote-130478 -Node: Tables30835 -Node: Built-in table editor31383 -Node: Narrow columns38990 -Ref: Narrow columns-Footnote-140929 -Node: Table calculations40975 -Node: Formula syntax42295 -Ref: Formula syntax-Footnote-145200 -Node: Lisp formulas45500 -Node: Column formulas46289 -Node: Advanced features48051 -Node: Named-field formulas51305 -Node: Editing/debugging formulas51945 -Node: Appetizer53703 -Node: orgtbl-mode54806 -Node: table.el55297 -Node: Hyperlinks56274 -Node: Link format56979 -Node: Internal links58272 -Ref: Internal links-Footnote-160261 -Node: Radio targets60393 -Node: CamelCase links61108 -Node: External links61606 -Node: Handling links63737 -Ref: Handling links-Footnote-168323 -Node: Search options68560 -Ref: Search options-Footnote-170334 -Node: Custom searches70415 -Node: Remember71463 -Node: TODO items75153 -Node: TODO basics76017 -Node: TODO extensions77544 -Node: Workflow states78339 -Node: TODO types79207 -Ref: TODO types-Footnote-180865 -Node: Per file keywords80947 -Ref: Per file keywords-Footnote-182401 -Node: Priorities82629 -Node: Timestamps83845 -Node: Time stamps84235 -Node: Creating timestamps87332 -Node: Progress logging90678 -Node: Closing items91208 -Node: Clocking work time92003 -Node: Tags94172 -Node: Tag inheritance94934 -Node: Setting tags95871 -Ref: Setting tags-Footnote-199001 -Ref: Setting tags-Footnote-299113 -Node: Tag searches99193 -Node: Agenda views100402 -Node: Agenda files101946 -Ref: Agenda files-Footnote-1102906 -Ref: Agenda files-Footnote-2103055 -Node: Agenda dispatcher103247 -Node: Weekly/Daily agenda105363 -Node: Categories106498 -Node: Time-of-day specifications107146 -Node: Calendar/Diary integration109122 -Node: Sorting of agenda items110499 -Node: Global TODO list111331 -Node: Matching headline tags112692 -Node: Timeline113635 -Node: Agenda commands114508 -Node: Embedded LaTeX120286 -Ref: Embedded LaTeX-Footnote-1121378 -Node: Math symbols121568 -Node: Subscripts and Superscripts122333 -Node: LaTeX fragments123177 -Node: Processing LaTeX fragments125246 -Node: CDLaTeX mode126192 -Ref: CDLaTeX mode-Footnote-1128676 -Node: Exporting128824 -Node: ASCII export129961 -Node: HTML export131251 -Node: XOXO export134087 -Node: iCalendar export134528 -Node: Text interpretation136353 -Node: Comment lines136832 -Node: Enhancing text137303 -Node: Export options138995 -Node: Publishing140662 -Ref: Publishing-Footnote-1141458 -Node: Configuration141654 -Node: Project alist142372 -Node: Sources and destinations143438 -Node: Selecting files143985 -Node: Publishing action144733 -Node: Publishing options145848 -Node: Publishing links148000 -Node: Project page index149513 -Node: Sample configuration150291 -Node: Simple example150783 -Node: Complex example151456 -Node: Triggering publication153532 -Node: Miscellaneous154188 -Node: Completion154822 -Node: Customization155818 -Node: In-buffer settings156403 -Node: The very busy C-c C-c key159634 -Node: Clean view161271 -Node: TTY keys163848 -Node: Interaction165457 -Node: Cooperation165854 -Node: Conflicts167756 -Node: Bugs169348 -Node: Extensions and Hacking170971 -Node: Extensions171457 -Node: Dynamic blocks173027 -Node: History and Acknowledgments174945 -Node: Index179726 -Node: Key Index202566 +Node: Introduction9515 +Node: Summary9828 +Node: Installation12095 +Node: Feedback13884 +Node: Document structure14655 +Node: Outlines15481 +Node: Headlines16141 +Node: Visibility cycling16764 +Ref: Visibility cycling-Footnote-118239 +Ref: Visibility cycling-Footnote-218297 +Node: Motion18347 +Node: Structure editing19131 +Node: Archiving21240 +Node: ARCHIVE tag21798 +Node: Moving subtrees23473 +Node: Sparse trees24514 +Ref: Sparse trees-Footnote-126493 +Ref: Sparse trees-Footnote-226585 +Node: Plain lists26700 +Ref: Plain lists-Footnote-130305 +Node: Checkboxes30662 +Node: Tables32299 +Node: Built-in table editor32847 +Node: Narrow columns40454 +Ref: Narrow columns-Footnote-142393 +Node: Table calculations42439 +Node: Formula syntax43759 +Ref: Formula syntax-Footnote-146664 +Node: Lisp formulas46964 +Node: Column formulas47753 +Node: Advanced features49515 +Node: Named-field formulas52769 +Node: Editing/debugging formulas53409 +Node: Appetizer55167 +Node: orgtbl-mode56270 +Node: table.el56761 +Node: Hyperlinks57738 +Node: Link format58443 +Node: Internal links59736 +Ref: Internal links-Footnote-161725 +Node: Radio targets61857 +Node: CamelCase links62572 +Node: External links63070 +Node: Handling links65201 +Ref: Handling links-Footnote-169787 +Node: Search options70024 +Ref: Search options-Footnote-171798 +Node: Custom searches71879 +Node: Remember72927 +Node: TODO items76617 +Node: TODO basics77481 +Node: TODO extensions79008 +Node: Workflow states79803 +Node: TODO types80671 +Ref: TODO types-Footnote-182329 +Node: Per file keywords82411 +Ref: Per file keywords-Footnote-183865 +Node: Priorities84093 +Node: Timestamps85309 +Node: Time stamps85699 +Node: Creating timestamps88796 +Node: Progress logging92142 +Node: Closing items92672 +Node: Clocking work time93467 +Node: Tags95636 +Node: Tag inheritance96398 +Node: Setting tags97335 +Ref: Setting tags-Footnote-1100465 +Ref: Setting tags-Footnote-2100577 +Node: Tag searches100657 +Node: Agenda views101866 +Node: Agenda files103410 +Ref: Agenda files-Footnote-1104370 +Ref: Agenda files-Footnote-2104519 +Node: Agenda dispatcher104711 +Node: Weekly/Daily agenda106827 +Node: Categories107962 +Node: Time-of-day specifications108610 +Node: Calendar/Diary integration110586 +Node: Sorting of agenda items111963 +Node: Global TODO list112795 +Node: Matching headline tags114156 +Node: Timeline115099 +Node: Agenda commands115972 +Node: Embedded LaTeX121750 +Ref: Embedded LaTeX-Footnote-1122842 +Node: Math symbols123032 +Node: Subscripts and Superscripts123797 +Node: LaTeX fragments124641 +Node: Processing LaTeX fragments126710 +Node: CDLaTeX mode127656 +Ref: CDLaTeX mode-Footnote-1130140 +Node: Exporting130288 +Node: ASCII export131425 +Node: HTML export132715 +Node: XOXO export135551 +Node: iCalendar export135992 +Node: Text interpretation137817 +Node: Comment lines138296 +Node: Enhancing text138767 +Node: Export options140459 +Node: Publishing142126 +Ref: Publishing-Footnote-1142922 +Node: Configuration143118 +Node: Project alist143836 +Node: Sources and destinations144902 +Node: Selecting files145449 +Node: Publishing action146197 +Node: Publishing options147312 +Node: Publishing links149464 +Node: Project page index150977 +Node: Sample configuration151755 +Node: Simple example152247 +Node: Complex example152920 +Node: Triggering publication154996 +Node: Miscellaneous155652 +Node: Completion156286 +Node: Customization157282 +Node: In-buffer settings157867 +Node: The very busy C-c C-c key161098 +Node: Clean view162735 +Node: TTY keys165312 +Node: Interaction166921 +Node: Cooperation167318 +Node: Conflicts169220 +Node: Bugs170812 +Node: Extensions and Hacking172435 +Node: Extensions172921 +Node: Dynamic blocks174491 +Node: History and Acknowledgments176409 +Node: Index181190 +Node: Key Index204030  End Tag Table diff --git a/org.el b/org.el index a1ff47de7..58c02d9a8 100644 --- a/org.el +++ b/org.el @@ -5,7 +5,7 @@ ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, wp ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ -;; Version: 4.40 +;; Version: 4.41 ;; ;; This file is part of GNU Emacs. ;; @@ -90,6 +90,12 @@ ;; ;; Recent changes ;; -------------- +;; Version 4.41 +;; - Shift-curser keys can modify inactive time stamps (inactive time +;; stamps are the ones in [...] brackets. +;; - Toggle all checkboxes in a region/below a headline. +;; - Bug fixes. +;; ;; Version 4.40 ;; - Bug fixes. ;; @@ -199,7 +205,7 @@ ;;; Customization variables -(defvar org-version "4.40" +(defvar org-version "4.41" "The version number of the file org.el.") (defun org-version () (interactive) @@ -1905,6 +1911,11 @@ headline Only export the headline, but skip the tree below it." :group 'org-export :type 'boolean) +(defcustom org-export-remove-timestamps-from-toc t + "Nil means, remove timestamps from the table of contents entries." + :group 'org-export + :type 'boolean) + (defcustom org-export-with-tags t "Nil means, do not export tags, just remove them from headlines." :group 'org-export-general @@ -3075,10 +3086,12 @@ that will be added to PLIST. Returns the string that was modified." "Regular expression for fast time stamp matching.") (defconst org-ts-regexp-both "[[<]\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^\r\n>]*?\\)[]>]" "Regular expression for fast time stamp matching.") -(defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)\\([^0-9>\r\n]*\\)\\(\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)" +(defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)\\([^]0-9>\r\n]*\\)\\(\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)" "Regular expression matching time strings for analysis.") (defconst org-ts-regexp2 (concat "<" org-ts-regexp1 ">") "Regular expression matching time stamps, with groups.") +(defconst org-ts-regexp3 (concat "[[<]" org-ts-regexp1 "[]>]") + "Regular expression matching time stamps (also [..]), with groups.") (defconst org-tr-regexp (concat org-ts-regexp "--?-?" org-ts-regexp) "Regular expression matching a time stamp range.") (defconst org-tsr-regexp (concat org-ts-regexp "\\(--?-?" @@ -4157,12 +4170,31 @@ If optional TXT is given, check this string instead of the current kill." (skip-chars-forward " \t") (looking-at "\\[[ X]\\]")))) -(defun org-toggle-checkbox () +(defun org-toggle-checkbox (&optional arg) "Toggle the checkbox in the current line." - (interactive) - (save-excursion - (if (org-at-item-checkbox-p) - (replace-match (if (equal (match-string 0) "[ ]") "[X]" "[ ]") t t)))) + (interactive "P") + (catch 'exit + (let (beg end status (firstnew 'unknown)) + (cond + ((org-region-active-p) + (setq beg (region-beginning) end (region-end))) + ((org-on-heading-p) + (setq beg (point) end (save-excursion (outline-next-heading) (point)))) + ((org-at-item-checkbox-p) + (save-excursion + (replace-match (if (equal (match-string 0) "[ ]") "[X]" "[ ]") t t)) + (throw 'exit t)) + (t (error "Not at a checkbox or heading, and no active region"))) + (save-excursion + (goto-char beg) + (while (< (point) end) + (when (org-at-item-checkbox-p) + (setq status (equal (match-string 0) "[X]")) + (when (eq firstnew 'unknown) + (setq firstnew (not status))) + (replace-match + (if (if arg (not status) firstnew) "[X]" "[ ]") t t)) + (beginning-of-line 2)))))) (defun org-get-indentation (&optional line) "Get the indentation of the current line, interpreting tabs. @@ -4216,7 +4248,7 @@ If the cursor is not in an item, throw an error." (while t (beginning-of-line 0) (if (< (point) limit) (throw 'exit nil)) - (unless (looking-at " \t]*$") + (unless (looking-at "[ \t]*$") (skip-chars-forward " \t") (setq ind1 (current-column)) (if (< ind1 ind) @@ -4575,7 +4607,7 @@ When TAG is non-nil, don't move trees, but mark them with the ARCHIVE tag." (save-excursion (goto-char begm) (while (re-search-forward re1 endm t) - beg (match-beginning 0) + (setq beg (match-beginning 0) end (save-excursion (org-end-of-subtree t) (point))) (goto-char beg) (if (re-search-forward re end t) @@ -4588,10 +4620,9 @@ When TAG is non-nil, don't move trees, but mark them with the ARCHIVE tag." (org-toggle-tag org-archive-tag 'on) (org-archive-subtree)) (setq cntarch (1+ cntarch))) - (goto-char end)))) + (goto-char end))))) (message "%d trees archived" cntarch))) - (defun org-cycle-hide-archived-subtrees (state) "Re-hide all archived subtrees after a visibility state change." (when (and (not org-cycle-open-archived-trees) @@ -4658,6 +4689,7 @@ the children that do not contain any open TODO items." (defun org-prepare-agenda-buffers (files) "Create buffers for all agenda files, protect archived trees and comments." + (interactive) (let ((pa '(:org-archived t)) (pc '(:org-comment t)) (pall '(:org-archived t :org-comment t)) @@ -4674,12 +4706,12 @@ the children that do not contain any open TODO items." (goto-char (point-min)) (while (re-search-forward rea nil t) (if (org-on-heading-p) - (add-text-properties (point-at-bol) (org-end-of-subtree) pa)))) + (add-text-properties (point-at-bol) (org-end-of-subtree t) pa)))) (goto-char (point-min)) (setq re (concat "^\\*+ +" org-comment-string "\\>")) (while (re-search-forward re nil t) (add-text-properties - (match-beginning 0) (org-end-of-subtree) pc))))))) + (match-beginning 0) (org-end-of-subtree t) pc))))))) (defun org-agenda-skip () "Throw to `:skip' in places that should be skipped." @@ -5686,7 +5718,7 @@ With prefix ARG, change by that many units." "Increase the date in the time stamp by one day. With prefix ARG, change that many days." (interactive "p") - (if (and (not (org-at-timestamp-p)) + (if (and (not (org-at-timestamp-p t)) (org-on-heading-p)) (org-todo 'up) (org-timestamp-change (prefix-numeric-value arg) 'day))) @@ -5695,7 +5727,7 @@ With prefix ARG, change that many days." "Decrease the date in the time stamp by one day. With prefix ARG, change that many days." (interactive "p") - (if (and (not (org-at-timestamp-p)) + (if (and (not (org-at-timestamp-p t)) (org-on-heading-p)) (org-todo 'down) (org-timestamp-change (- (prefix-numeric-value arg)) 'day))) @@ -5705,14 +5737,14 @@ With prefix ARG, change that many days." (<= (match-beginning n) pos) (>= (match-end n) pos))) -(defun org-at-timestamp-p () +(defun org-at-timestamp-p (&optional also-inactive) "Determine if the cursor is in or at a timestamp." (interactive) - (let* ((tsr org-ts-regexp2) + (let* ((tsr (if also-inactive org-ts-regexp3 org-ts-regexp2)) (pos (point)) (ans (or (looking-at tsr) (save-excursion - (skip-chars-backward "^<\n\r\t") + (skip-chars-backward "^[<\n\r\t") (if (> (point) 1) (backward-char 1)) (and (looking-at tsr) (> (- (match-end 0) pos) -1)))))) @@ -5737,7 +5769,7 @@ in the timestamp determines what will be changed." org-ts-what (pos (point)) ts time time0) - (if (not (org-at-timestamp-p)) + (if (not (org-at-timestamp-p t)) (error "Not at a timestamp")) (setq org-ts-what (or what org-ts-what)) (setq fmt (if (<= (abs (- (cdr org-ts-lengths) @@ -5745,6 +5777,8 @@ in the timestamp determines what will be changed." 1) (cdr org-time-stamp-formats) (car org-time-stamp-formats))) + (if (= (char-after (match-beginning 0)) ?\[) + (setq fmt (concat "[" (substring fmt 1 -1) "]"))) (setq ts (match-string 0)) (replace-match "") (setq time0 (org-parse-time-string ts)) @@ -13819,7 +13853,7 @@ lang=\"%s\" xml:lang=\"%s\"> level (org-tr-level level) txt (save-match-data (org-html-expand - (org-html-cleanup-toc-line + (org-export-cleanup-toc-line (match-string 3 line)))) todo (or (and org-export-mark-todo-in-toc @@ -14055,9 +14089,9 @@ lang=\"%s\" xml:lang=\"%s\"> ;; Normal lines (when (string-match (cond - ((eq llt t) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+[.)]\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)") - ((= llt ?.) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+\\.\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)") - ((= llt ?\)) "^\\( \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+)\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)") + ((eq llt t) "^\\([ \t]*\\)\\(\\([-+*] \\)\\|\\([0-9]+[.)]\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)") + ((= llt ?.) "^\\([ \t]*\\)\\(\\([-+*] \\)\\|\\([0-9]+\\.\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)") + ((= llt ?\)) "^\\( \t]*\\)\\(\\([-+*] \\)\\|\\([0-9]+)\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)") (t (error "Invalid value of `org-plain-list-ordered-item-terminator'"))) line) (setq ind (org-get-string-indentation line) @@ -14345,12 +14379,13 @@ But it has the disadvantage, that Org-mode's HTML conversions cannot be used." (setq s (replace-match ">" t t s)))) s) -(defun org-html-cleanup-toc-line (s) +(defun org-export-cleanup-toc-line (s) "Remove tags and time staps from lines going into the toc." (if (string-match " +:[a-zA-Z0-9_@:]+: *$" s) (setq s (replace-match "" t t s))) - (while (string-match org-maybe-keyword-time-regexp s) - (setq s (replace-match "" t t s))) + (when org-export-remove-timestamps-from-toc + (while (string-match org-maybe-keyword-time-regexp s) + (setq s (replace-match "" t t s)))) s) (defun org-html-expand (string) @@ -15219,6 +15254,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]." (define-key org-mode-map "\C-c\C-x\C-r" 'org-clock-report) (define-key org-mode-map "\C-c\C-x\C-u" 'org-dblock-update) (define-key org-mode-map "\C-c\C-x\C-l" 'org-preview-latex-fragment) +(define-key org-mode-map "\C-c\C-x\C-b" 'org-toggle-checkbox) (when (featurep 'xemacs) (define-key org-mode-map 'button3 'popup-mode-menu)) @@ -15435,7 +15471,7 @@ Calls `org-timestamp-up' or `org-priority-up', depending on context. See the individual commands for more information." (interactive "P") (cond - ((org-at-timestamp-p) (call-interactively 'org-timestamp-up)) + ((org-at-timestamp-p t) (call-interactively 'org-timestamp-up)) ((org-on-heading-p) (call-interactively 'org-priority-up)) ((org-at-item-p) (call-interactively 'org-previous-item)) (t (call-interactively 'org-beginning-of-item) (beginning-of-line 1)))) @@ -15446,7 +15482,7 @@ Calls `org-timestamp-down' or `org-priority-down', depending on context. See the individual commands for more information." (interactive "P") (cond - ((org-at-timestamp-p) (call-interactively 'org-timestamp-down)) + ((org-at-timestamp-p t) (call-interactively 'org-timestamp-down)) ((org-on-heading-p) (call-interactively 'org-priority-down)) (t (call-interactively 'org-next-item)))) @@ -15454,7 +15490,7 @@ See the individual commands for more information." "Next TODO keyword or timestamp one day later, depending on context." (interactive) (cond - ((org-at-timestamp-p) (call-interactively 'org-timestamp-up-day)) + ((org-at-timestamp-p t) (call-interactively 'org-timestamp-up-day)) ((org-on-heading-p) (org-call-with-arg 'org-todo 'right)) (t (org-shiftcursor-error)))) @@ -15462,7 +15498,7 @@ See the individual commands for more information." "Previous TODO keyword or timestamp one day earlier, depending on context." (interactive) (cond - ((org-at-timestamp-p) (call-interactively 'org-timestamp-down-day)) + ((org-at-timestamp-p t) (call-interactively 'org-timestamp-down-day)) ((org-on-heading-p) (org-call-with-arg 'org-todo 'left)) (t (org-shiftcursor-error)))) @@ -15986,7 +16022,7 @@ return nil." (set (make-local-variable 'paragraph-separate) "\f\\|\\*\\|[ ]*$\\|[ \t]*[:|]") ;; The paragraph starter includes hand-formatted lists. (set (make-local-variable 'paragraph-start) - "\f\\|[ ]*$\\|\\([*\f]+\\)\\|[ \t]*\\([-+*]\\|[0-9]+[.)][ \t]+\\)\\|[ \t]*[:|]") + "\f\\|[ ]*$\\|\\([*\f]+\\)\\|[ \t]*\\([-+*][ \t]+\\|[0-9]+[.)][ \t]+\\)\\|[ \t]*[:|]") ;; Inhibit auto-fill for headers, tables and fixed-width lines. ;; But only if the user has not turned off tables or fixed-width regions (set (make-local-variable 'auto-fill-inhibit-regexp) diff --git a/org.pdf b/org.pdf index 4c36a7342..a49449765 100644 Binary files a/org.pdf and b/org.pdf differ diff --git a/org.texi b/org.texi index 26d0f25f9..8cbedce87 100644 --- a/org.texi +++ b/org.texi @@ -3,7 +3,7 @@ @setfilename ../info/org @settitle Org Mode Manual -@set VERSION 4.40 +@set VERSION 4.41 @set DATE June 2006 @dircategory Emacs @@ -111,6 +111,7 @@ Document Structure * Archiving:: Move done task trees to a different place * Sparse trees:: Matches embedded in context * Plain lists:: Editing hand-formatted lists +* Checkboxes:: Easily checking off things. Archiving @@ -419,6 +420,7 @@ edit the structure of the document. * Archiving:: Move done task trees to a different place * Sparse trees:: Matches embedded in context * Plain lists:: Editing hand-formatted lists +* Checkboxes:: Easily checking off things. @end menu @node Outlines, Headlines, Document structure, Document structure @@ -780,7 +782,7 @@ Or you can use the command @kbd{C-c C-x v} to export only the visible part of the document and print the resulting file. -@node Plain lists, , Sparse trees, Document structure +@node Plain lists, Checkboxes, Sparse trees, Document structure @section Plain lists @cindex plain lists @cindex lists, plain @@ -827,18 +829,6 @@ But in the end, not individual scenes matter but the film as a whole. Org-mode supports these lists by tuning filling and wrapping commands to deal with them correctly. -@cindex checkboxes -Every item in a plain list can be made a checkbox by starting it with -the string @samp{[ ]}. The checkbox status can conveniently be toggled -with @kbd{C-c C-c}. - -@example -* Stupid mistakes when distributing a new version - - [ ] update also Emacs CVS - - [X] forget to update index.html on the website - - [X] leaving a `(debug)' form in the code -@end example - The following commands act on items when the cursor is in the first line of an item (the line with the bullet or number). @@ -862,7 +852,7 @@ an item but does not contain the bullet, a bullet is added to the current line. @kindex M-S-@key{RET} @item M-S-@key{RET} -Insert a new item with a checkbox. +Insert a new item with a checkbox (@pxref{Checkboxes}). @kindex S-@key{up} @kindex S-@key{down} @item S-@key{up} @@ -887,11 +877,60 @@ would imply a different hierarchy. To use the new hierarchy, break the command chain with a cursor motion or so. @kindex C-c C-c @item C-c C-c -If there is a checkbox in the item line, toggle the state of the -checkbox. Otherwise, if this is an ordered list, renumber the ordered -list at the cursor. +If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the +state of the checkbox. Otherwise, if this is an ordered list, renumber +the ordered list at the cursor. @end table +@page +@node Checkboxes, , Plain lists, Document structure +@section Checkboxes +@cindex checkboxes + +Every item in a plain list (ordered and unordered) can be made a +checkbox by starting it with the string @samp{[ ]}. This feature is +similar to TODO items (@pxref{TODO items}), but more lightweight. +Checkboxes are not included into the global TODO list, so they are often +great to split a task into a number of simple steps. Or you can use +them in a shopping list to select the items you need to buy. To toggle +a checkbox, use @kbd{C-c C-c}, or try Piotr Zielinski's +@file{org-mouse.el}. Here is an example of a checkbox list. + +@example +* Avoid stupid mistakes when distributing a new version + - [ ] update also Emacs CVS + - [X] forget to update index.html on the website + - [X] leaving a `(debug)' form in the code +@end example + +@noindent The following commands work with checkboxes: + +@table @kbd +@kindex C-c C-c +@item C-c C-c +Toggle checkbox at point. +@kindex C-c C-x C-b +@item C-c C-x C-b +Toggle checkbox at point. +@itemize @minus +@item +If there is an active region, toggle the first checkbox in the region +and set all remaining boxes to the same status as the first. If you +want to toggle all boxes in the region independently, use a prefix +argument. +@item +If the cursor is in a headline, toggle checkboxes in the region between +this headline and the next. This does @emph{not} act on the entire +subtree, just the current entry. +@item +If no active region, just toggle the checkbox at point. +@end itemize +@kindex M-S-@key{RET} +@item M-S-@key{RET} +Insert a new item with a checkbox. +This works only if the cursor is already in a plain list item +(@pxref{Plain lists}). +@end table @node Tables, Hyperlinks, Document structure, Top @chapter Tables diff --git a/orgcard.pdf b/orgcard.pdf index 813a1ac6f..a26ed817c 100644 Binary files a/orgcard.pdf and b/orgcard.pdf differ diff --git a/orgcard.tex b/orgcard.tex index a97d024d1..d9cfbad33 100644 --- a/orgcard.tex +++ b/orgcard.tex @@ -1,5 +1,5 @@ % Reference Card for Org Mode -\def\orgversionnumber{4.40} +\def\orgversionnumber{4.41} \def\year{2006} % %**start of header @@ -297,7 +297,9 @@ are preserved on all copies. \section{Structure Editing} \key{insert new heading/item at current level}{M-RET} -\key{insert new TODO entry}{M-S-RET} +\key{insert new TODO entry/checkbox item}{M-S-RET} +\key{toggle checkbox(es) in region/entry/at point}{C-c C-x C-b} +\key{toggle checkbox at point}{C-c C-c} \key{promote current heading up one level}{M-LEFT} \key{demote current heading down one level}{M-RIGHT}