diff --git a/org b/org index b2fcd6dca..4a17dbc8d 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.27). + This manual is for Org-mode (version 4.28). 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.27). +This manual is for Org-mode (version 4.28). Copyright (C) 2004, 2005, 2006 Free Software Foundation @@ -2514,7 +2514,9 @@ View/GoTo org file `f' Toggle Follow mode. In Follow mode, as you move the cursor through the agenda buffer, the other window always shows the corresponding - location in the org file. + location in the org file. The initial setting for this mode in new + agenda buffers can be set with the variable + `org-agenda-start-with-follow-mode'. `l' Toggle Logbook mode. In Logbook mode, entries that where marked @@ -3415,6 +3417,10 @@ Org-mode can cooperate with the following packages: want to have other replacement keys, look at the variable `org-disputed-keys'. +`windmove.el' by Hovav Shacham + Also this package uses the `S-' keys, so everything written + in the paragraph above about CUA mode also applies here. + `remember.el' by John Wiegley Org mode cooperates with remember, see *Note Remember::. `Remember.el' is not part of Emacs, find it on the web. @@ -3575,7 +3581,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top * agenda: Weekly/Daily agenda. (line 6) * agenda commands, custom: Agenda dispatcher. (line 6) * agenda dispatcher: Agenda dispatcher. (line 6) -* agenda files, removing buffers: Agenda commands. (line 187) +* agenda files, removing buffers: Agenda commands. (line 189) * agenda views: Agenda views. (line 6) * agenda, for single file: Timeline. (line 6) * allout.el, conflict with: FAQ. (line 6) @@ -3640,7 +3646,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top * DEADLINE keyword: Time stamps. (line 43) * deadlines: Time stamps. (line 6) * demotion, of subtrees: Structure editing. (line 6) -* diary entries, creating from agenda: Agenda commands. (line 145) +* diary entries, creating from agenda: Agenda commands. (line 147) * diary integration: Calendar/Diary integration. (line 6) * dictionary word completion: Completion. (line 6) @@ -3773,7 +3779,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top * region, active <3>: Built-in table editor. (line 165) * region, active: Structure editing. (line 51) -* remember.el <1>: Interaction. (line 40) +* remember.el <1>: Interaction. (line 64) * remember.el: Remember. (line 6) * richer text: Enhancing text. (line 6) * RMAIL links: External links. (line 6) @@ -3856,6 +3862,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top * visible text, printing: Sparse trees. (line 39) * VM links: External links. (line 6) * WANDERLUST links: External links. (line 6) +* windmove.el: Interaction. (line 60) * workflow states as TODO keywords: Workflow states. (line 6) * XML export: XML export. (line 6) @@ -3868,28 +3875,28 @@ File: org, Node: Key Index, Prev: Index, Up: Top [index] * Menu: -* +: Agenda commands. (line 118) -* ,: Agenda commands. (line 110) -* -: Agenda commands. (line 124) -* .: Agenda commands. (line 89) -* :: Agenda commands. (line 107) +* +: Agenda commands. (line 120) +* ,: Agenda commands. (line 112) +* -: Agenda commands. (line 126) +* .: Agenda commands. (line 91) +* :: Agenda commands. (line 109) * <: Creating timestamps. (line 75) -* : Agenda commands. (line 86) +* : Agenda commands. (line 88) * <1>: Agenda commands. (line 41) * <2>: Creating timestamps. (line 100) * : Built-in table editor. (line 64) -* : Agenda commands. (line 81) +* : Agenda commands. (line 83) * : Agenda commands. (line 28) * <1>: Agenda commands. (line 35) * <2>: Built-in table editor. (line 57) * <3>: Plain lists. (line 38) * : Visibility cycling. (line 10) -* > <1>: Agenda commands. (line 140) +* > <1>: Agenda commands. (line 142) * >: Creating timestamps. (line 76) -* C: Agenda commands. (line 170) -* c: Agenda commands. (line 154) +* C: Agenda commands. (line 172) +* c: Agenda commands. (line 156) * C-#: Built-in table editor. (line 155) * C-,: Agenda files. (line 18) @@ -3972,7 +3979,7 @@ File: org, Node: Key Index, Prev: Index, Up: Top * C-c C-x a: ASCII export. (line 9) * C-c C-x b: HTML export. (line 11) * C-c C-x c: iCalendar export. (line 20) -* C-c C-x C-c: Agenda commands. (line 177) +* C-c C-x C-c: Agenda commands. (line 179) * C-c C-x C-i: iCalendar export. (line 15) * C-c C-x C-k: Structure editing. (line 36) * C-c C-x C-w <1>: Built-in table editor. @@ -3998,15 +4005,15 @@ File: org, Node: Key Index, Prev: Index, Up: Top * C-u C-c =: Built-in table editor. (line 139) * C-u C-c C-l: Handling links. (line 40) -* D: Agenda commands. (line 66) -* d: Agenda commands. (line 63) +* D: Agenda commands. (line 68) +* d: Agenda commands. (line 65) * f: Agenda commands. (line 44) -* g: Agenda commands. (line 70) -* H: Agenda commands. (line 174) -* i: Agenda commands. (line 145) -* l: Agenda commands. (line 49) +* g: Agenda commands. (line 72) +* H: Agenda commands. (line 176) +* i: Agenda commands. (line 147) +* l: Agenda commands. (line 51) * L: Agenda commands. (line 32) -* M: Agenda commands. (line 161) +* M: Agenda commands. (line 163) * M-: Built-in table editor. (line 82) * M- <1>: Built-in table editor. @@ -4049,32 +4056,32 @@ File: org, Node: Key Index, Prev: Index, Up: Top * mouse-3 <1>: Agenda commands. (line 28) * mouse-3: Handling links. (line 74) * n: Agenda commands. (line 19) -* o: Agenda commands. (line 57) -* P: Agenda commands. (line 115) +* o: Agenda commands. (line 59) +* P: Agenda commands. (line 117) * p: Agenda commands. (line 20) -* q: Agenda commands. (line 184) -* r <1>: Agenda commands. (line 74) +* q: Agenda commands. (line 186) +* r <1>: Agenda commands. (line 76) * r: Global TODO list. (line 21) -* S: Agenda commands. (line 165) -* S- <1>: Agenda commands. (line 124) +* S: Agenda commands. (line 167) +* S- <1>: Agenda commands. (line 126) * S- <2>: Creating timestamps. (line 55) * S-: Priorities. (line 25) -* S- <1>: Agenda commands. (line 136) +* S- <1>: Agenda commands. (line 138) * S-: Creating timestamps. (line 50) * S-: Built-in table editor. (line 170) -* S- <1>: Agenda commands. (line 128) +* S- <1>: Agenda commands. (line 130) * S-: Creating timestamps. (line 50) * S- <1>: Built-in table editor. (line 61) * S-: Visibility cycling. (line 19) -* S- <1>: Agenda commands. (line 118) +* S- <1>: Agenda commands. (line 120) * S- <2>: Creating timestamps. (line 55) * S-: Priorities. (line 25) -* T: Agenda commands. (line 102) -* t: Agenda commands. (line 98) -* w: Agenda commands. (line 60) -* x: Agenda commands. (line 187) +* T: Agenda commands. (line 104) +* t: Agenda commands. (line 100) +* w: Agenda commands. (line 62) +* x: Agenda commands. (line 189)  @@ -4153,27 +4160,27 @@ Node: Global TODO list98135 Node: Matching headline tags99550 Node: Timeline100493 Node: Agenda commands101366 -Node: Exporting106622 -Node: ASCII export107752 -Node: HTML export108574 -Node: XML export110322 -Node: iCalendar export110689 -Node: Text interpretation112511 -Node: Comment lines112988 -Node: Enhancing text113457 -Node: Export options115288 -Node: Miscellaneous116890 -Node: Completion117648 -Node: Customization118644 -Node: Summary of in-buffer settings119251 -Node: The very busy C-c C-c key122012 -Node: Clean view123417 -Node: TTY keys125994 -Node: FAQ127595 -Node: Interaction134497 -Node: Bugs137364 -Node: Acknowledgments139318 -Node: Index142413 -Node: Key Index163710 +Node: Exporting106755 +Node: ASCII export107885 +Node: HTML export108707 +Node: XML export110455 +Node: iCalendar export110822 +Node: Text interpretation112644 +Node: Comment lines113121 +Node: Enhancing text113590 +Node: Export options115421 +Node: Miscellaneous117023 +Node: Completion117781 +Node: Customization118777 +Node: Summary of in-buffer settings119384 +Node: The very busy C-c C-c key122145 +Node: Clean view123550 +Node: TTY keys126127 +Node: FAQ127728 +Node: Interaction134630 +Node: Bugs137664 +Node: Acknowledgments139618 +Node: Index142713 +Node: Key Index164083  End Tag Table diff --git a/org.el b/org.el index 2270d4641..eb1951651 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.27 +;; Version: 4.28 ;; ;; This file is part of GNU Emacs. ;; @@ -81,6 +81,9 @@ ;; ;; Changes since version 4.10: ;; --------------------------- +;; Version 4.28 +;; - Bug fixes. +;; ;; Version 4.27 ;; - HTML exporter generalized to receive external options. ;; As part of the process, author, email and date have been moved to the @@ -146,7 +149,7 @@ ;;; Customization variables -(defvar org-version "4.27" +(defvar org-version "4.28" "The version number of the file org.el.") (defun org-version () (interactive) @@ -385,6 +388,11 @@ body starts at column 0, indentation is not changed at all." :group 'org-edit-structure :type 'boolean) +(defcustom org-insert-heading-hook nil + "Hook being run after inserting a new heading." + :group 'org-edit-structure + :type 'boolean) + (defcustom org-enable-fixed-width-editor t "Non-nil means, lines starting with \":\" are treated as fixed-width. This currently only means, they are never auto-wrapped. @@ -1244,6 +1252,7 @@ key The key (a single char as a string) to be associated with the command. type The command type, any of the following symbols: todo Entries with a specific TODO keyword, in all agenda files. tags Tags match in all agenda files. + tags-todo Tags match in all agenda files, TODO entries only. todo-tree Sparse tree of specific TODO keyword in *current* file. tags-tree Sparse tree with all tags matches in *current* file. occur-tree Occur sparse tree for current file. @@ -1256,6 +1265,7 @@ match What to search for: (list (string :tag "Key") (choice :tag "Type" (const :tag "Tags search in all agenda files" tags) + (const :tag "Tags search of TODO entries, all agenda files" tags-todo) (const :tag "TODO keyword search in all agenda files" todo) (const :tag "Tags sparse tree in current buffer" tags-tree) (const :tag "TODO keyword tree in current buffer" todo-tree) @@ -1272,7 +1282,7 @@ potentially much shorter TODO lists." :group 'org-todo :type 'boolean) -(defcustom org-agenda-include-all-todo t +(defcustom org-agenda-include-all-todo nil "Non-nil means, the agenda will always contain all TODO entries. When nil, date-less entries will only be shown if `org-agenda' is called with a prefix argument. @@ -1294,7 +1304,7 @@ forth between agenda and calendar." :group 'org-agenda :type 'sexp) -(defgroup org-agenda-window-setup nil +(defgroup org-agenda-setup nil "Options concerning setting up the Agenda window in Org Mode." :tag "Org Agenda Window Setup" :group 'org-agenda) @@ -1306,6 +1316,11 @@ Needs to be set before org.el is loaded." :group 'org-agenda-setup :type 'boolean) +(defcustom org-agenda-start-with-follow-mode t + "The initial value of follwo-mode in a newly created agenda window." + :group 'org-agenda-setup + :type 'boolean) + (defcustom org-select-timeline-window t "Non-nil means, after creating a timeline, move cursor into Timeline window. When nil, cursor will remain in the current window." @@ -1618,6 +1633,16 @@ This option can also be set with the +OPTIONS line, e.g. \"\\n:t\"." :group 'org-export-general :type 'boolean) +(defcustom org-export-with-tags t + "Nil means, do not export tags, just remove them from headlines." + :group 'org-export-general + :type 'boolean) + +(defcustom org-export-with-timestamps t + "Nil means, do not export timestamps and associated keywords." + :group 'org-export-general + :type 'boolean) + (defgroup org-export-translation nil "Options for translating special ascii sequences for the export backends." :tag "Org Export Translation" @@ -2220,6 +2245,13 @@ This face is only used if `org-fontify-done-headline' is set." (defvar org-scheduled-time-regexp nil "Matches the SCHEDULED keyword together with a time stamp.") (make-variable-buffer-local 'org-scheduled-time-regexp) +(defvar org-closed-time-regexp nil + "Matches the CLOSED keyword together with a time stamp.") +(make-variable-buffer-local 'org-closed-time-regexp) + +(defvar org-keyword-time-regexp nil + "Matches any of the 3 keywords, together with the time stamp.") +(make-variable-buffer-local 'org-keyword-time-regexp) (defun org-set-regexps-and-options () "Precompute regular expressions for current buffer." @@ -2309,7 +2341,15 @@ This face is only used if `org-fontify-done-headline' is set." org-scheduled-regexp (concat "\\<" org-scheduled-string) org-scheduled-time-regexp - (concat "\\<" org-scheduled-string " *<\\([^>]+\\)>")) + (concat "\\<" org-scheduled-string " *<\\([^>]+\\)>") + org-closed-time-regexp + (concat "\\<" org-closed-string " *\\[\\([^]]+\\)\\]") + org-keyword-time-regexp + (concat "\\<\\(" org-scheduled-string + "\\|" org-deadline-string + "\\|" org-closed-string "\\)" + " *[[<]\\([^]>]+\\)[]>]")) ;; FIXME: is this correct? + (org-set-font-lock-defaults))) ;; Tell the compiler about dynamically scoped variables, @@ -3138,22 +3178,24 @@ or nil." (defun org-insert-heading (&optional force-heading) "Insert a new heading or item with same depth at point." (interactive "P") - (when (or force-heading (not (org-insert-item))) - (let* ((head (save-excursion - (condition-case nil - (org-back-to-heading) - (error (outline-next-heading))) - (prog1 (match-string 0) - (funcall outline-level))))) - (cond - ((and (org-on-heading-p) (bolp) - (save-excursion (backward-char 1) (not (org-invisible-p)))) - (open-line 1)) - ((bolp) nil) - (t (newline))) - (insert head) - (just-one-space) - (run-hooks 'org-insert-heading-hook)))) + (if (= (buffer-size) 0) + (insert "\n* ") + (when (or force-heading (not (org-insert-item))) + (let* ((head (save-excursion + (condition-case nil + (org-back-to-heading) + (error (outline-next-heading))) + (prog1 (match-string 0) + (funcall outline-level))))) + (cond + ((and (org-on-heading-p) (bolp) + (save-excursion (backward-char 1) (not (org-invisible-p)))) + (open-line 1)) + ((bolp) nil) + (t (newline))) + (insert head) + (just-one-space) + (run-hooks 'org-insert-heading-hook))))) (defun org-insert-item () "Insert a new item at the current level. @@ -3838,7 +3880,7 @@ heading be marked DONE, and the current time will be added." ;; Here we are back in the original buffer. Everything seems to have ;; worked. So now cut the tree and finish up. (let (this-command) (org-cut-subtree)) - (if (looking-at "[ \t]*$") (kill-line)) + (if (and (not (eobp)) (looking-at "[ \t]*$")) (kill-line)) (message "Subtree archived %s" (if (eq this-buffer buffer) (concat "under heading: " heading) @@ -4108,6 +4150,61 @@ to modify it to the correct date." (message "%s" (substitute-command-keys "Use \\[org-timestamp-up-day] and \\[org-timestamp-down-day] to change the date."))) +(defun org-add-planning-info (what &optional time &rest remove) + "Insert new timestamp with keyword in the line directly after the headline. +WHAT indicates what kind of time stamp to add. TIME indicated the time to use. +If non is given, the user is prompted for a date. +REMOVE indicates what kind of entries to remove. An old WHAT entry will also +be removed." + (interactive) + (save-excursion + (let (beg end col list elt) + (org-show-entry) ; Avoid this. + (org-back-to-heading t) + (setq beg (point)) + (looking-at (concat outline-regexp "\\( *\\)[^\r\n]*")) + (goto-char (match-end 1)) + (setq col (current-column)) + (goto-char (1+ (match-end 0))) + (if (and (not (looking-at outline-regexp)) + (looking-at (concat "[^\r\n]*?" org-keyword-time-regexp + "[^\r\n]*"))) + (narrow-to-region (match-beginning 0) (match-end 0)) + (insert "\n") + (backward-char 1) + (narrow-to-region (point) (point)) + (indent-to-column col)) + ;; Check if we have to remove something. + (setq list (cons what remove)) + (while list + (setq elt (pop list)) + (goto-char (point-min)) + (when (or (and (eq elt 'scheduled) + (re-search-forward org-scheduled-time-regexp nil t)) + (and (eq elt 'deadline) + (re-search-forward org-deadline-time-regexp nil t)) + (and (eq elt 'closed) + (re-search-forward org-closed-time-regexp nil t))) + (replace-match "") + (if (looking-at " +") (replace-match "")))) + (goto-char (point-max)) + (when what + (insert + (if (not (equal (char-before) ?\ )) " " "") + (cond ((eq what 'scheduled) org-scheduled-string) + ((eq what 'deadline) org-deadline-string) + ((eq what 'closed) org-closed-string)) + " ") + (insert + (format-time-string + (if (eq what 'closed) + (concat "[" (substring (cdr org-time-stamp-formats) 1 -1) "]") + (car org-time-stamp-formats)) + (or time (org-read-date nil 'to-time))))) + (goto-char (point-min)) + (widen) + (if (looking-at "[ \t]+\r?\n") + (replace-match ""))))) (defun org-occur (regexp &optional callback) "Make a compact tree which shows all matches of REGEXP. @@ -4798,7 +4895,7 @@ The following commands are available: (org-add-hook 'post-command-hook 'org-agenda-post-command-hook nil 'local) (org-add-hook 'pre-command-hook 'org-unhighlight nil 'local) (unless org-agenda-keep-modes - (setq org-agenda-follow-mode nil + (setq org-agenda-follow-mode org-agenda-start-with-follow-mode org-agenda-show-log nil)) (easy-menu-change '("Agenda") "Agenda Files" @@ -5023,6 +5120,8 @@ C Configure your own agenda commands") (cond ((eq type 'tags) (org-tags-view current-prefix-arg string)) + ((eq type 'tags-todo) + (org-tags-view '(4) string)) ((eq type 'todo) (org-todo-list string)) ((eq type 'tags-tree) @@ -7497,7 +7596,6 @@ in all files." (cond ;; First check if there are any special ((run-hook-with-args-until-success 'org-execute-file-search-functions s)) - ;; Now try the builtin stuff ((save-excursion (goto-char (point-min)) @@ -7538,7 +7636,7 @@ in all files." ; re4 (concat "\\<" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\>") re2 (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t]+") "\\)[ \t\r\n]") re2a (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t\r\n]+") "\\)[ \t\r\n]") - re4 (concat "[^a-zA-Z_\r\n]\\(" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\)[^a-zA-Z_\r\n]") + re4 (concat "[^a-zA-Z_]\\(" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\)[^a-zA-Z_]") re1 (concat pre re2 post) re3 (concat pre re4 post) re5 (concat pre ".*" re4) @@ -7917,9 +8015,9 @@ folders." (set-window-configuration org-window-config-before-follow-link) (save-excursion (set-buffer b) (goto-char p) (bibtex-url))) - (recenter 0))) ; Move entry start to beginning of window + (recenter 0)) ; Move entry start to beginning of window ;; return t to indicate that the search is done. - t) + t)) ;; Finally add the functions to the right hooks. (add-hook 'org-create-file-search-functions 'org-create-file-search-in-bibtex) @@ -8473,45 +8571,48 @@ RET on headline -> Store as sublevel entry to current headline "Initialize *remember* buffer with template, invode `org-mode'. This function should be placed into `remember-mode-hook' and in fact requires to be run from that hook to fucntion properly." - (when org-remember-templates - (let* ((entry (if (= (length org-remember-templates) 1) - (cdar org-remember-templates) - (message "Select template: %s" - (mapconcat - (lambda (x) (char-to-string (car x))) - org-remember-templates " ")) - (cdr (assoc (read-char-exclusive) org-remember-templates)))) - (tpl (if (consp (cdr entry)) (cadr entry) (cdr entry))) - (file (if (consp (cdr entry)) (nth 2 entry))) - (v-t (format-time-string (car org-time-stamp-formats) (org-current-time))) - (v-T (format-time-string (cdr org-time-stamp-formats) (org-current-time))) - (v-u (concat "[" (substring v-t 1 -1) "]")) - (v-U (concat "[" (substring v-T 1 -1) "]")) - (v-a annotation) ; defined in `remember-mode' - (v-i initial) ; defined in `remember-mode' - (v-n user-full-name) - ) - (unless tpl (setq tpl "") (message "No template") (ding)) - (insert tpl) (goto-char (point-min)) - (while (re-search-forward "%\\([tTuTai]\\)" nil t) - (when (and initial (equal (match-string 0) "%i")) - (save-match-data - (let* ((lead (buffer-substring - (point-at-bol) (match-beginning 0)))) - (setq v-i (mapconcat 'identity + (if org-remember-templates + (let* ((entry (if (= (length org-remember-templates) 1) + (cdar org-remember-templates) + (message "Select template: %s" + (mapconcat + (lambda (x) (char-to-string (car x))) + org-remember-templates " ")) + (cdr (assoc (read-char-exclusive) org-remember-templates)))) + (tpl (if (consp (cdr entry)) (cadr entry) (cdr entry))) + (file (if (consp (cdr entry)) (nth 2 entry))) + (v-t (format-time-string (car org-time-stamp-formats) (org-current-time))) + (v-T (format-time-string (cdr org-time-stamp-formats) (org-current-time))) + (v-u (concat "[" (substring v-t 1 -1) "]")) + (v-U (concat "[" (substring v-T 1 -1) "]")) + (v-a annotation) ; defined in `remember-mode' + (v-i initial) ; defined in `remember-mode' + (v-n user-full-name) + ) + (unless tpl (setq tpl "") (message "No template") (ding)) + (insert tpl) (goto-char (point-min)) + (while (re-search-forward "%\\([tTuTai]\\)" nil t) + (when (and initial (equal (match-string 0) "%i")) + (save-match-data + (let* ((lead (buffer-substring + (point-at-bol) (match-beginning 0)))) + (setq v-i (mapconcat 'identity (org-split-string initial "\n") (concat "\n" lead)))))) - (replace-match - (or (eval (intern (concat "v-" (match-string 1)))) "") - t t)) - (let ((org-startup-folded nil) - (org-startup-with-deadline-check nil)) - (org-mode)) - (if (and file (string-match "\\S-" file) (not (file-directory-p file))) - (set (make-local-variable 'org-default-notes-file) file)) - (goto-char (point-min)) - (if (re-search-forward "%\\?" nil t) (replace-match "")) - (set (make-local-variable 'org-finish-function) 'remember-buffer)))) + (replace-match + (or (eval (intern (concat "v-" (match-string 1)))) "") + t t)) + (let ((org-startup-folded nil) + (org-startup-with-deadline-check nil)) + (org-mode)) + (if (and file (string-match "\\S-" file) (not (file-directory-p file))) + (set (make-local-variable 'org-default-notes-file) file)) + (goto-char (point-min)) + (if (re-search-forward "%\\?" nil t) (replace-match ""))) + (let ((org-startup-folded nil) + (org-startup-with-deadline-check nil)) + (org-mode))) + (set (make-local-variable 'org-finish-function) 'remember-buffer)) ;;;###autoload (defun org-remember-handler () @@ -8580,6 +8681,9 @@ See also the variable `org-reverse-note-order'." (if (not visiting) (find-file-noselect file)) (with-current-buffer (get-file-buffer file) + (save-excursion (and (goto-char (point-min)) + (not (re-search-forward "^\\* " nil t)) + (insert "\n* Notes\n"))) (setq reversed (org-notes-order-reversed-p)) (save-excursion (save-restriction @@ -9007,7 +9111,9 @@ With argument TABLE-TYPE, go to the beginning of a table.el-type table." (if table-type org-table-any-border-regexp org-table-border-regexp) nil t)) - (error "Can't find beginning of table") +; FIXME: OK to just use beginning-of-buffer? + ; (error "Can't find beginning of table") + (progn (goto-char (point-min)) (point)) (goto-char (match-beginning 0)) (beginning-of-line 2) (point)))) @@ -9542,7 +9648,7 @@ also in table column 3. The command will prompt for the sorting method (lambda (a b) (< (car a) (car b))) (lambda (a b) (string< (car a) (car b))))) (setq lns (mapcar (lambda(x) (cons (org-trim (substring x bcol ecol)) x)) - (split-string (buffer-substring beg end) "\n"))) + (org-split-string (buffer-substring beg end) "\n"))) (if numericp (setq lns (mapcar (lambda(x) (cons (string-to-number (car x)) (cdr x))) @@ -10980,7 +11086,7 @@ overwritten, and the table is not marked as requiring realignment." (defconst org-export-plist-vars '((:language . org-export-default-language) (:headline-levels . org-export-headline-levels) - (:with-section-numbers . org-export-with-section-numbers) + (:section-numbers . org-export-with-section-numbers) (:table-of-contents . org-export-with-toc) (:emphasize . org-export-with-emphasize) (:sub-superscript . org-export-with-sub-superscripts) @@ -11902,7 +12008,8 @@ org-mode's default settings, but still inferior to file-local settings." (title (or (plist-get opt-plist :title) (file-name-sans-extension (file-name-nondirectory buffer-file-name)))) - (quote-re (concat "^\\*+[ \t]*" org-quote-string "\\>")) + (quote-re0 (concat "^[ \t]*" org-quote-string "\\>")) + (quote-re (concat "^\\(\\*+\\)\\([ \t]*" org-quote-string "\\>\\)")) (inquote nil) (infixed nil) (in-local-list nil) @@ -12060,7 +12167,7 @@ org-mode's default settings, but still inferior to file-local settings." (catch 'nextline ;; end of quote section? - (when (and inquote (string-match "^\\*+" line)) + (when (and inquote (string-match "^\\*+" line)) (insert "\n") (setq inquote nil)) ;; inside a quote section? @@ -12104,6 +12211,8 @@ org-mode's default settings, but still inferior to file-local settings." "\" class=\"target\">" (match-string 1 line) "@ ") t t line))))) + (setq line (org-html-handle-time-stamps line)) + ;; replace "&" by "&", "<" and ">" by "<" and ">" ;; handle @<..> HTML tags (replace "@>..<" by "<..>") (setq line (org-html-expand line)) @@ -12191,6 +12300,8 @@ org-mode's default settings, but still inferior to file-local settings." ;; This is a headline (setq level (org-tr-level (- (match-end 1) (match-beginning 1))) txt (match-string 2 line)) + (if (string-match quote-re0 txt) + (setq txt (replace-match "" t t txt))) (if (<= level umax) (setq head-count (+ head-count 1))) (when in-local-list ;; Close any local lists before inserting a new header line @@ -12265,6 +12376,7 @@ org-mode's default settings, but still inferior to file-local settings." )) ;; Properly close all local lists and other lists + (when inquote (insert "\n")) (when in-local-list ;; Close any local lists before inserting a new header line (while local-list-num @@ -12441,6 +12553,10 @@ But it has the disadvantage, that Org-mode's HTML conversions cannot be used." (set-buffer " org-tmp2 ") (buffer-substring (point-min) (point-max)))) +(defun org-html-handle-time-stamps (s) + "FIXME: Format time stamps, or remove them" + s) + (defun org-html-protect (s) ;; convert & to &, < to < and > to > (let ((start 0)) @@ -13072,7 +13188,8 @@ because, in this case the deletion might narrow the column." (goto-char pos) ;; noalign: if there were two spaces at the end, this field ;; does not determine the width of the column. - (if noalign (setq org-table-may-need-update c)))) + (if noalign (setq org-table-may-need-update c))) + (delete-char N)) (delete-char N))) ;; How to do this: Measure non-white length of current string @@ -13103,7 +13220,8 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names." (defun org-shifttab () "Global visibility cycling or move to previous table field. -Calls `(org-cycle t)' or `org-table-previous-field', depending on context. +Calls `org-cycle' with argument t, or `org-table-previous-field', depending +on context. See the individual commands for more information." (interactive) (cond @@ -13507,6 +13625,11 @@ See the individual commands for more information." "--" ["Option Template" org-insert-export-options-template t] ["Toggle Fixed Width" org-toggle-fixed-width-section t]) + ("Publish" + ["Current File" org-publish-current-file t] + ["Current Project" org-publish-current-project t] + ["Project..." org-publish t] + ["All Projects" org-publish-all t]) "--" ("Documentation" ["Show Version" org-version t] diff --git a/org.pdf b/org.pdf index 81602e3c9..1f84eaaeb 100644 Binary files a/org.pdf and b/org.pdf differ diff --git a/org.texi b/org.texi index 8f37831ab..2958bed61 100644 --- a/org.texi +++ b/org.texi @@ -4,7 +4,7 @@ @c @setfilename ../info/org @settitle Org Mode Manual -@set VERSION 4.27 +@set VERSION 4.28 @set DATE April 2006 @dircategory Emacs @@ -2782,7 +2782,9 @@ Go to the original location of the item and delete other windows. @item f Toggle Follow mode. In Follow mode, as you move the cursor through the agenda buffer, the other window always shows the corresponding -location in the org file. +location in the org file. The initial setting for this mode in new +agenda buffers can be set with the variable +@code{org-agenda-start-with-follow-mode}. @kindex l @item l @@ -3819,7 +3821,6 @@ at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for the function @code{constants-get}, which has to be autoloaded in your setup. See the installation instructions in the file @file{constants.el}. -@cindex @file{remember.el} @cindex @file{CUA.el} @item @file{CUA.el} by Kim. F. Storm Keybindings in Org-mode conflict with the @kbd{S-} keys @@ -3839,7 +3840,12 @@ S-RET -> C-S-RET Yes, these are unfortunately more difficult to remember. If you want to have other replacement keys, look at the variable @code{org-disputed-keys}. +@item @file{windmove.el} by Hovav Shacham +@cindex @file{windmove.el} +Also this package uses the @kbd{S-} keys, so everything written +in the paragraph above about CUA mode also applies here. @item @file{remember.el} by John Wiegley +@cindex @file{remember.el} Org mode cooperates with remember, see @ref{Remember}. @file{Remember.el} is not part of Emacs, find it on the web. @end table diff --git a/orgcard.pdf b/orgcard.pdf index aea61e660..22963ddfc 100644 Binary files a/orgcard.pdf and b/orgcard.pdf differ diff --git a/orgcard.tex b/orgcard.tex index 67b7715e3..518412523 100644 --- a/orgcard.tex +++ b/orgcard.tex @@ -1,5 +1,5 @@ % Reference Card for Org Mode -\def\orgversionnumber{4.27} +\def\orgversionnumber{4.28} \def\year{2006} % %**start of header