Release 5.10a

This commit is contained in:
Carsten Dominik 2008-01-31 11:36:18 +01:00
parent a557732ba7
commit 70b6cc5da4
14 changed files with 5132 additions and 2158 deletions

2170
ChangeLog Normal file

File diff suppressed because it is too large Load Diff

View File

@ -67,7 +67,7 @@ HTMLDIR = /home/dominik/public_html/Tools/org
.SUFFIXES: .el .elc .texi
SHELL = /bin/sh
DISTFILES= README ${LISPFILES} ${DOCFILES} ${CARDFILES} Makefile dir
DISTFILES= README ${LISPFILES} ${DOCFILES} ${CARDFILES} Makefile dir ChangeLog
DISTFILES_xemacs= xemacs/noutline.el xemacs/ps-print-invisible.el xemacs/README
all: $(ELCFILES)
@ -148,7 +148,7 @@ ecompile:
distfile:
@if [ "X$(TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi
touch org.pdf orgcard.tex
touch org.texi orgcard.tex
make info
make doc
rm -rf org-$(TAG) org-$(TAG).zip
@ -159,6 +159,22 @@ distfile:
zip -r org-$(TAG).zip org-$(TAG)
gtar zcvf org-$(TAG).tar.gz org-$(TAG)
release:
@if [ "X$(TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi
make distfile
make doc
rm -rf org-release
$(MKDIR) org-release
cp org-$(TAG).zip org-$(TAG).tar.gz org-release
cp org.pdf orgcard.pdf org.texi org.html org-release
cp ORGWEBPAGE/tmp/*.html org-release
cp ORGWEBPAGE/tmp/*.el org-release
cp ORGWEBPAGE/tmp/*.txt org-release
cp ORGWEBPAGE/tmp/*.css org-release
cp ORGWEBPAGE/tmp/*.jpg org-release
cp org-release/org-$(TAG).zip org-release/org.zip
cp org-release/org-$(TAG).tar.gz org-release/org.tar.gz
dist:
make distfile TAG=$(TAG)
cp org-$(TAG).zip org-$(TAG).tar.gz $(HTMLDIR)

2
README
View File

@ -1,7 +1,7 @@
The is a distribution of Org-mode, a plain text notes and project planning
tool for Emacs.
The homepage of Org-mode is at http://www.astro.uva.nl/~domnik/Tools/org/
The homepage of Org-mode is at http://orgmode.org
The manual is in the file org.pdf, it includes a section about installation.

1812
org

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,6 @@
;;; org-install.el --- Autoloads for org.el
;; org.el
(autoload 'org-mode "org" "Org mode" t)
(autoload 'org-diary "org" "Diary entries from Org mode.")
(autoload 'org-agenda "org" "Multi-file agenda from Org mode." t)
@ -10,6 +11,7 @@
(autoload 'turn-on-orgtbl "org" "Org tables as a minor mode.")
(autoload 'orgstruct-mode "org" "Org structure as a minor mode." t)
(autoload 'turn-on-orgstruct "org" "Org structure as a minor mode.")
(autoload 'turn-on-orgstruct++ "Orgstruct-mode with indentation settings.")
(autoload 'org-cycle "org" "Subtree visibility cycling." t)
(autoload 'org-global-cycle "org" "Global visibility cycling." t)
(autoload 'org-agenda-list "org" "Produce calendar-like agenda view." t)
@ -25,7 +27,9 @@
"Export all files in `org-agenda-files' to iCalendar .ics files." t)
(autoload 'org-export-icalendar-combine-agenda-files "org"
"Export all files in `org-agenda-files' to a single combined iCalendar file." t)
(autoload 'org-run-like-in-org-mode "Run a command like in Org-mode.")
;; org-latex.el
(autoload 'org-export-as-latex-batch "org-export-latex")
(autoload 'org-export-as-latex-to-buffer "org-export-latex"
"Call `org-exort-as-latex` with output to a temporary buffer" t)
@ -41,13 +45,15 @@
(autoload 'org-store-agenda-views "org" "Store agenda views to files" t)
(autoload 'org-batch-store-agenda-views "org")
;; org-publish.el
(autoload 'org-publish-current-file "org-publish" "Publish current file." t)
(autoload 'org-publish-current-project "org-publish"
"Publish all files of current project." t)
(autoload 'org-publish "org-publish" "Publish a project." t)
(autoload 'org-publish-all "org-publish" "Publish all projects." t)
(autoload 'org-run-like-in-org-mode "Run a command like in Org-mode.")
;; org-toc.el
(autoload 'org-show-toc "org-toc" "Create and display a table of contents" t)
(provide 'org-install)

View File

@ -1,43 +1,35 @@
;;; org-mouse.el --- Better mouse support for org-mode
;; Copyright (c) 2006 Piotr Zielinski
;; Copyright (c) 2006 Piotr Zielinski, 2007 Free Software Foundation
;;
;; Author: Piotr Zielinski <piotr dot zielinski at gmail dot com>
;; Version: 0.24a
;; $Id: org-mouse.el 817 2007-02-01 00:28:02Z pz215 $
;;
;; The latest version of this file is available from
;; Maintainer: Carsten Dominik <carsten at orgmode dot org>
;; Version: 5.10
;;
;; http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el
;; This file is part of GNU Emacs.
;;
;; This file is *NOT* part of GNU Emacs.
;; This file is distributed under the same terms as GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2 of
;; the License, or (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; This program is distributed in the hope that it will be
;; useful, but WITHOUT ANY WARRANTY; without even the implied
;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
;; PURPOSE. See the GNU General Public License for more details.
;; You should have received a copy of the GNU General Public
;; License along with this program; if not, write to the Free
;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
;; MA 02111-1307 USA
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Commentary:
;;
;; Org-mouse provides better mouse support for org-mode. Org-mode is
;; a mode for keeping notes, maintaining ToDo lists, and doing project
;; planning with a fast and effective plain-text system. It is
;; available from
;; Org-mouse provides mouse support for org-mode.
;;
;; http://staff.science.uva.nl/~dominik/Tools/org/
;; http://orgmode.org
;;
;; Org-mouse implements the following features:
;; * following links with the left mouse button (in Emacs 22)
@ -52,22 +44,14 @@
;; * promoting/demoting/moving subtrees with mouse-3
;; + if the drag starts and ends in the same line then promote/demote
;; + otherwise move the subtree
;; * date/time extraction from selected text (requires a python script)
;; (eg. select text from your email and click "Add Appointment")
;;
;; The python script that automatically extracts date/time information
;; from a piece of English text is available from:
;;
;; http://www.cl.cam.ac.uk/~pz215/files/timeparser.py
;;
;; Use
;; ------------
;; ---
;;
;; To use this package, put the following line in your .emacs:
;;
;; (require 'org-mouse)
;;
;; Tested with Emacs 22.0.50, org-mode 4.58
;; Fixme:
;; + deal with folding / unfolding issues
@ -83,10 +67,18 @@
;; + ctrl-c ctrl-c, for example, renumber the current list
;; + internal links
;; Please email me with new feature suggestions / bugs
;; Please email the maintainer with new feature suggestions / bugs
;; History:
;;
;; SInce version 5.10: Changes are listed in the general org-mode docs.
;;
;; Version 5.09
;; + Version number synchronization with Org-mode.
;;
;; Version 0.25
;; + made compatible with org-mode 4.70 (thanks to Carsten for the patch)
;;
;; Version 0.24
;; + minor changes to the table menu
;;
@ -148,24 +140,31 @@
;;
;; Versions 0.01 -- 0.07: (I don't remember)
(require 'cl)
(eval-when-compile (require 'cl))
(require 'org)
(defvar org-mouse-plain-list-regexp "\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) ")
(defvar org-mouse-direct t)
(defvar org-mouse-plain-list-regexp "\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) "
"Regular expression that matches a plain list.")
(defvar org-mouse-direct t
"Internal variable indicating whether the current action is direct.
If t, then the current action has been invoked directly through the buffer
it is intended to operate on. If nil, then the action has been invoked
indirectly, for example, through the agenda buffer.")
(defgroup org-mouse nil
"Org-mouse"
:tag "Org Mouse."
"Mouse support for org-mode."
:tag "Org Mouse"
:group 'org)
(defcustom org-mouse-punctuation ":"
""
"Punctuation used when inserting text by drag and drop."
:group 'org-mouse
:type 'string)
(defun org-mouse-re-search-line (regexp)
"Searches the current line for a given regular expression."
"Search the current line for a given regular expression."
(beginning-of-line)
(re-search-forward regexp (point-at-eol) t))
@ -178,8 +177,17 @@
(skip-chars-backward ":A-Za-z")
(skip-chars-backward "\t ")))
(defvar org-mouse-context-menu-function nil
"Function to create the context menu.
The value of this variable is the function invoked by
`org-mouse-context-menu' as the context menu.")
(make-variable-buffer-local 'org-mouse-context-menu-function)
(defun org-mouse-show-context-menu (event prefix)
"Invoke the context menu.
If the value of `org-mouse-context-menu-function' is a function, then
this function is called. Otherwise, the current major mode menu is used."
(interactive "@e \nP")
(if (and (= (event-click-count event) 1)
(or (not mark-active)
@ -193,24 +201,30 @@
(sit-for 0)))
(if (functionp org-mouse-context-menu-function)
(funcall org-mouse-context-menu-function event)
(mouse-major-mode-menu event prefix))
)
(mouse-major-mode-menu event prefix)))
(setq this-command 'mouse-save-then-kill)
(mouse-save-then-kill event)))
(defun org-mouse-line-position ()
"Returns :beginning :middle :end"
"Returns `:beginning' or `:middle' or `:end', depending on the point position.
If the point is at the end of the line, return `:end'.
If the point is separated from the beginning of the line only by white
space and *'s (`org-mouse-bolp'), return `:beginning'. Otherwise,
return `:middle'."
(cond
((eolp) :end)
((org-mouse-bolp) :begin)
((org-mouse-bolp) :beginning)
(t :middle)))
(defun org-mouse-empty-line ()
"Return non-nil iff the line contains only white space."
(save-excursion (beginning-of-line) (looking-at "[ \t]*$")))
(defun org-mouse-next-heading ()
"Goes to the next heading and if there is none, it ensures that the point is at the beginning of an empty line."
"Go to the next heading.
If there is none, ensure that the point is at the beginning of an empty line."
(unless (outline-next-heading)
(beginning-of-line)
(unless (org-mouse-empty-line)
@ -218,14 +232,22 @@
(newline))))
(defun org-mouse-insert-heading ()
"Insert a new heading, as `org-insert-heading'.
If the point is at the :beginning (`org-mouse-line-position') of the line,
insert the new heading before the current line. Otherwise, insert it
after the current heading."
(interactive)
(case (org-mouse-line-position)
(:begin (beginning-of-line)
(:beginning (beginning-of-line)
(org-insert-heading))
(t (org-mouse-next-heading)
(org-insert-heading))))
(defun org-mouse-timestamp-today (&optional shift units)
"Change the timestamp into SHIFT UNITS in the future.
For the acceptable UNITS, see `org-timestamp-change'."
(interactive)
(flet ((org-read-date (&rest rest) (current-time)))
(org-time-stamp nil))
@ -233,6 +255,24 @@
(org-timestamp-change shift units)))
(defun org-mouse-keyword-menu (keywords function &optional selected itemformat)
"A helper function.
Returns a menu fragment consisting of KEYWORDS. When a keyword
is selected by the user, FUNCTION is called with the selected
keyword as the only argument.
If SELECTED is nil, then all items are normal menu items. If
SELECTED is a function, then each item is a checkbox, which is
enabled for a given keyword iff (funcall SELECTED keyword) return
non-nil. If SELECTED is neither nil nor a function, then the
items are radio buttons. A radio button is enabled for the
keyword `equal' to SELECTED.
ITEMFORMAT governs formatting of the elements of KEYWORDS. If it
is a function, it is invoked with the keyword as the only
argument. If it is a string, it is interpreted as the format
string to (format ITEMFORMAT keyword). If it is neither a string
nor a function, elements of KEYWORDS are used directly. "
(mapcar
`(lambda (keyword)
(vector (cond
@ -250,13 +290,15 @@
keywords))
(defun org-mouse-remove-match-and-spaces ()
"Remove the match, make just one space around the point."
(interactive)
(replace-match "")
(just-one-space))
(defvar rest)
(defun org-mouse-replace-match-and-surround (newtext &optional fixedcase
literal string subexp)
"The same as replace-match, but surrounds the replacement with spaces."
"The same as `replace-match', but surrounds the replacement with spaces."
(apply 'replace-match rest)
(save-excursion
(goto-char (match-beginning (or subexp 0)))
@ -267,6 +309,23 @@
(defun org-mouse-keyword-replace-menu (keywords &optional group itemformat
nosurround)
"A helper function.
Returns a menu fragment consisting of KEYWORDS. When a keyword
is selected, group GROUP of the current match is replaced by the
keyword. The method ensures that both ends of the replacement
are separated from the rest of the text in the buffer by
individual spaces (unless NOSURROND is non-nil).
The final entry of the menu is always \"None\", which removes the
match.
ITEMFORMAT governs formatting of the elements of KEYWORDS. If it
is a function, it is invoked with the keyword as the only
argument. If it is a string, it is interpreted as the format
string to (format ITEMFORMAT keyword). If it is neither a string
nor a function, elements of KEYWORDS are used directly.
"
(setq group (or group 0))
(let ((replace (org-mouse-match-closure
(if nosurround 'replace-match
@ -281,10 +340,8 @@
:style radio
:selected ,(not (member (match-string group) keywords))]))))
(defvar org-mouse-context-menu-function nil)
(make-variable-buffer-local 'org-mouse-context-menu-function)
(defun org-mouse-show-headlines ()
"Change the visibility of the current org buffer to only show headlines."
(interactive)
(let ((this-command 'org-cycle)
(last-command 'org-cycle)
@ -293,35 +350,40 @@
(org-cycle '(4))))
(defun org-mouse-show-overview ()
"Change visibility of current org buffer to first-level headlines only."
(interactive)
(let ((org-cycle-global-status nil))
(org-cycle '(4))))
(defun org-mouse-set-priority (priority)
"Set the priority of the current headline to PRIORITY."
(flet ((read-char-exclusive () priority))
(org-priority)))
(defvar org-mouse-priority-regexp "\\[#\\([A-Z]\\)\\]"
"Regular expression matching the priority indicator. Differs from `org-priority-regexp' in that it doesn't contain the leading '.*?'.")
"Regular expression matching the priority indicator.
Differs from `org-priority-regexp' in that it doesn't contain the
leading '.*?'.")
(defun org-mouse-get-priority (&optional default)
"Return the priority of the current headline.
DEFAULT is returned if no priority is given in the headline."
(save-excursion
(if (org-mouse-re-search-line org-mouse-priority-regexp)
(match-string 1)
(when default (char-to-string org-default-priority)))))
(defun org-mouse-at-link ()
(and (eq (get-text-property (point) 'face) 'org-link)
(save-excursion
(goto-char (previous-single-property-change (point) 'face))
(or (looking-at org-bracket-link-regexp)
(looking-at org-angle-link-re)
(looking-at org-plain-link-re)))))
;; (defun org-mouse-at-link ()
;; (and (eq (get-text-property (point) 'face) 'org-link)
;; (save-excursion
;; (goto-char (previous-single-property-change (point) 'face))
;; (or (looking-at org-bracket-link-regexp)
;; (looking-at org-angle-link-re)
;; (looking-at org-plain-link-re)))))
(defun org-mouse-delete-timestamp ()
"Deletes the current timestamp as well as the preceding
"Deletes the current timestamp as well as the preceding keyword.
SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(when (or (org-at-date-range-p) (org-at-timestamp-p))
(replace-match "") ; delete the timestamp
@ -338,7 +400,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(when (looking-at regexp)
(> (match-end 0) point))))))
(defun org-mouse-priority-list ()
(loop for priority from ?A to org-lowest-priority
collect (char-to-string priority)))
@ -414,9 +475,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
:style 'toggle
:selected (and (member name options) t)))))
(defun org-mouse-clip-text (text maxlength)
(if (> (length text) maxlength)
(concat (substring text 0 (- maxlength 3)) "...")
@ -471,7 +529,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(nth 2 entry)))
(t "Agenda Command '%s'"))
30))))
;; )
"--"
["Delete Blank Lines" delete-blank-lines
:visible (org-mouse-empty-line)]
@ -507,7 +564,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(defun org-mouse-insert-item (text)
(case (org-mouse-line-position)
(:begin ; insert before
(:beginning ; insert before
(beginning-of-line)
(looking-at "[ \t]*")
(open-line 1)
@ -529,8 +586,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(insert text)
(beginning-of-line))
(defadvice dnd-insert-text (around org-mouse-dnd-insert-text activate)
(if (eq major-mode 'org-mode)
(org-mouse-insert-item text)
@ -567,7 +622,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(delete-horizontal-space)
(insert-for-yank (concat " [[" (current-kill 0) "]] ")))
(defun org-mouse-context-menu (&optional event)
(let ((stamp-prefixes (list org-deadline-string org-scheduled-string))
(contextlist (org-context)))
@ -640,7 +694,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
((org-mouse-looking-at org-mouse-priority-regexp "[]A-Z#") ; priority
(popup-menu `(nil ,@(org-mouse-keyword-replace-menu
(org-mouse-priority-list) 1 "Priority %s" t))))
((org-mouse-at-link)
((get-context :link)
(popup-menu
'(nil
["Open" org-open-at-point t]
@ -800,8 +854,6 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
))))
(t
(org-mouse-popup-global-menu))))))
;; (defun org-mouse-at-regexp (regexp)
;; (save-excursion
@ -936,9 +988,9 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(eq minlevel (- (match-end 1) (match-beginning 1))))
(replace-match replace-text))
(forward-line))))
(defvar _cmd) ;dynamically scoped from `org-with-remote-undo'.
(defun org-mouse-do-remotely (command)
; (org-agenda-check-no-diary)
(when (get-text-property (point) 'org-marker)
@ -1055,4 +1107,3 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
(:right (org-agenda-later 1)))))))
(provide 'org-mouse)

View File

@ -6,11 +6,9 @@
;; Keywords: hypermedia, outlines
;; Version: 1.80
;; $Id: org-publish.el,v 1.80 2007/03/22 02:31:03 dto Exp dto $
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
@ -440,20 +438,6 @@ nil if not found."
;;;; Pluggable publishing back-end functions
(defun org-publish-org-to-html (plist filename)
"Publish an org file to HTML.
PLIST is the property list for the given project.
FILENAME is the filename of the org file to be published."
(require 'org)
(let* ((arg (plist-get plist :headline-levels)))
(progn
(find-file filename)
(org-export-as-html arg nil plist)
;; get rid of HTML buffer
(kill-buffer (current-buffer)))))
(defun org-publish-org-to-latex (plist filename)
"Publish an org file to LaTeX."
(org-publish-org-to "latex" plist filename))
@ -619,4 +603,6 @@ With prefix argument, force publish all files."
(provide 'org-publish)
;; arch-tag: 72807f3c-8af0-4a6b-8dca-c3376eb25adb
;;; org-publish.el ends here

1456
org.el

File diff suppressed because it is too large Load Diff

BIN
org.pdf

Binary file not shown.

718
org.texi
View File

@ -3,7 +3,7 @@
@setfilename ../info/org
@settitle Org Mode Manual
@set VERSION 5.08
@set VERSION 5.10
@set DATE September 2007
@dircategory Emacs
@ -12,11 +12,11 @@
@end direntry
@c Version and Contact Info
@set MAINTAINERSITE @uref{http://www.astro.uva.nl/~dominik/Tools/org/,maintainers webpage}
@set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
@set AUTHOR Carsten Dominik
@set MAINTAINER Carsten Dominik
@set MAINTAINEREMAIL @email{dominik at science dot uva dot nl}
@set MAINTAINERCONTACT @uref{mailto:dominik at science dot uva dot nl,contact the maintainer}
@set MAINTAINEREMAIL @email{carsten at orgmode dot org}
@set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
@c %**end of header
@finalout
@ -81,8 +81,9 @@ Software Foundation raise funds for GNU development.''
* Hyperlinks:: Notes in context
* TODO items:: Every tree branch can be a TODO item
* Tags:: Tagging headlines and matching sets of tags
* Properties and columns::
* Properties and columns:: Storing information about an entry
* Timestamps:: Assign date and time to items
* Remember:: Quickly adding nodes to the outline tree
* Agenda views:: Collecting information into views
* Embedded LaTeX:: LaTeX fragments and formulas
* Exporting:: Sharing and publishing of notes
@ -150,22 +151,16 @@ Hyperlinks
* Link abbreviations:: Shortcuts for writing complex links
* Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
* Remember:: Org-trees store quick notes
Internal links
* Radio targets:: Make targets trigger links in plain text.
Remember
* Setting up remember:: Some code for .emacs to get things going
* Remember templates:: Define the outline of different note types
* Storing notes:: Directly get the note to where it belongs
TODO items
* TODO basics:: Marking and displaying TODO entries
* TODO extensions:: Workflow and assignments
* Progress logging:: Dates and notes for progress
* Priorities:: Some things are more important than others
* Breaking down tasks:: Splitting a task into manageable pieces
* Checkboxes:: Tick-off lists
@ -175,7 +170,14 @@ Extended use of TODO keywords
* Workflow states:: From TODO to DONE in steps
* TODO types:: I do this, Fred the rest
* Multiple sets in one file:: Mixing it all, and still finding your way
* Fast access to TODO states:: Single letter selection of a state
* Per file keywords:: Different files, different requirements
* Faces for TODO keywords:: Highlighting states
Progress Logging
* Closing items:: When was this entry marked DONE?
* Tracking TODO state changes:: When did the status change?
Tags
@ -206,7 +208,7 @@ Timestamps
* Time stamps:: Assigning a time to a tree entry
* Creating timestamps:: Commands which insert timestamps
* Deadlines and scheduling:: Planning your work
* Progress logging:: Documenting when what work was done.
* Clocking work time::
Creating timestamps
@ -218,11 +220,11 @@ Deadlines and Scheduling
* Inserting deadline/schedule:: Planning items
* Repeated tasks:: Items that show up again and again
Progress Logging
Remember
* Closing items:: When was this entry marked DONE?
* Tracking TODO state changes:: When did the status change?
* Clocking work time:: When exactly did you work on this item?
* Setting up remember:: Some code for .emacs to get things going
* Remember templates:: Define the outline of different note types
* Storing notes:: Directly get the note to where it belongs
Agenda Views
@ -419,7 +421,7 @@ the minor Orgstruct-mode.
There is a website for Org-mode which provides links to the newest
version of Org-mode, as well as additional information, frequently asked
questions (FAQ), links to tutorials etc. This page is located at
@uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
@uref{http://orgmode.org}.
@page
@ -806,6 +808,10 @@ the beginning of any other line, the content of that line is made the
new heading. If the command is used at the end of a folded subtree
(i.e. behind the ellipses at the end of a headline), then a headline
like the current one will be inserted after the end of the subtree.
@kindex C-@key{RET}
@item C-@key{RET}
Insert a new heading after the current subtree, same level as the
current headline. This command works from anywhere in the entry.
@kindex M-S-@key{RET}
@item M-S-@key{RET}
Insert new TODO entry with same level as current heading.
@ -956,16 +962,20 @@ current file, with the name derived by appending @file{_archive} to the
current file name. For information and examples on how to change this,
see the documentation string of the variable
@code{org-archive-location}. There is also an in-buffer option for
setting this variable, for example
setting this variable, for example@footnote{If there are several such
lines in the buffer, each will be valid for the entries below it. The
first will also apply to any text before it. This method is only kept
for backward compatibility. The preferred methods for setting multiple
archive locations is using a property.}:
@example
#+ARCHIVE: %s_done::
@end example
@noindent
You may have several such lines in the buffer, they will then be valid
for the entries following the line (the first will also apply to any
text before it).
If you would like to have a special ARCHIVE location for a single entry
or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
location as the value (@pxref{Properties and columns}).
@node Sparse trees, Plain lists, Archiving, Document structure
@section Sparse trees
@ -1254,9 +1264,12 @@ unpredictable for you, configure the variables
@item C-c |
Convert the active region to table. If every line contains at least one
TAB character, the function assumes that the material is tab separated.
If every line contains a comma, comma-separated values (CSV) are assumed.
If not, lines are split at whitespace into fields. You can use a prefix
argument to indicate the minimum number of consecutive spaces required
to identify a field separator (default: just one).@*
argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
C-u} forces TAB, and a numeric argument N indicates that at least N
consequtive spaces, or alternatively a TAB will be the separator.
@*
If there is no active region, this command creates an empty Org-mode
table. But it's easier just to start typing, like
@kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
@ -2099,7 +2112,6 @@ links to other files, Usenet articles, emails, and much more.
* Link abbreviations:: Shortcuts for writing complex links
* Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
* Remember:: Org-trees store quick notes
@end menu
@node Link format, Internal links, Hyperlinks, Hyperlinks
@ -2513,7 +2525,7 @@ to search the current file. For example, @code{[[file:::find me]]} does
a search for @samp{find me} in the current file, just as
@samp{[[find me]]} would.
@node Custom searches, Remember, Search options, Hyperlinks
@node Custom searches, , Search options, Hyperlinks
@section Custom Searches
@cindex custom search strings
@cindex search strings, custom
@ -2537,175 +2549,6 @@ an implementation example. Search for @samp{BibTeX links} in the source
file.
@node Remember, , Custom searches, Hyperlinks
@section Remember
@cindex @file{remember.el}
Another way to create org entries with links to other files is through
the @i{remember} package by John Wiegley. @i{Remember} lets you store
quick notes with little interruption of your work flow. See
@uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
information. The notes produced by @i{Remember} can be stored in
different ways, and Org-mode files are a good target. Org-mode
significantly expands the possibilities of @i{remember}: You may define
templates for different note types, and to associate target files and
headlines with specific templates. It also allows you to select the
location where a note should be stored interactively, on the fly.
@menu
* Setting up remember:: Some code for .emacs to get things going
* Remember templates:: Define the outline of different note types
* Storing notes:: Directly get the note to where it belongs
@end menu
@node Setting up remember, Remember templates, Remember, Remember
@subsection Setting up remember
The following customization will tell @i{remember} to use org files as
target, and to create annotations compatible with Org-mode links.
@example
(setq org-directory "~/path/to/my/orgfiles/")
(setq org-default-notes-file "~/.notes")
(setq remember-annotation-functions '(org-remember-annotation))
(setq remember-handler-functions '(org-remember-handler))
(add-hook 'remember-mode-hook 'org-remember-apply-template)
@end example
@node Remember templates, Storing notes, Setting up remember, Remember
@subsection Remember templates
@cindex templates, for remember
In combination with Org-mode, you can use templates to generate
different types of @i{remember} notes. For example, if you would like
to use one template to create general TODO entries, another one for
journal entries, and a third one for collecting random ideas, you could
use:
@example
(setq org-remember-templates
'((?t "* TODO %?\n %i\n %a" "~/org/TODO.org")
(?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org")
(?i "* %^@{Title@}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
@end example
@noindent In these entries, the character specifies how to select the
template. The first string specifies the template. Two more (optional)
strings give the file in which, and the headline under which the new
note should be stored. The file defaults (if not present or @code{nil})
to @code{org-default-notes-file}, the heading to
@code{org-remember-default-headline}. Both defaults help to get to the
storing location quickly, but you can change the location interactively
while storing the note.
When you call @kbd{M-x remember} (or @kbd{M-x org-remember}) to remember
something, org will prompt for a key to select the template (if you have
more than one template) and then prepare the buffer like
@example
* TODO
[[file:link to where you called remember]]
@end example
@noindent or
@example
* [2006-03-21 Tue 15:37]
[[file:link to where you called remember]]
@end example
@noindent
During expansion of the template, special @kbd{%}-escapes allow dynamic
insertion of content:
@example
%^@{prompt@} @r{prompt the user for a string and replace this sequence with it.}
%t @r{time stamp, date only}
%T @r{time stamp with date and time}
%u, %U @r{like the above, but inactive time stamps}
%^t @r{like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}}
@r{You may define a prompt like @code{%^@{Birthday@}t}}
%n @r{user name (taken from @code{user-full-name})}
%a @r{annotation, normally the link created with @code{org-store-link}}
%i @r{initial content, the region when remember is called with C-u.}
@r{The entire text will be indented like @code{%i} itself.}
%^g @r{prompt for tags, with completion on tags in target file.}
%^G @r{prompt for tags, with completion all tags in all agenda files.}
%:keyword @r{specific information for certain link types, see below}
@end example
@noindent
For specific link types, the following keywords will be defined:
@example
Link type | Available keywords
-------------------+----------------------------------------------
bbdb | %:name %:company
vm, wl, mh, rmail | %:type %:subject %:message-id
| %:from %:fromname %:fromaddress
| %:to %:toname %:toaddress
| %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user. See the variable @code{org-from-is-user-regexp}.}}
gnus | %:group, @r{for messages also all email fields}
w3, w3m | %:url
info | %:file %:node
calendar | %:date"
@end example
@noindent
To place the cursor after template expansion use:
@example
%? @r{After completing the template, position cursor here.}
@end example
@noindent
If you change you mind about which template to use, call
@code{org-remember} in the remember buffer. You may then select a new
template that will be filled with the previous context information.
@node Storing notes, , Remember templates, Remember
@subsection Storing notes
When you are finished preparing a note with @i{remember}, you have to press
@kbd{C-c C-c} to file the note away. The handler first prompts for a
target file - if you press @key{RET}, the value specified for the
template is used. Then the command offers the headings tree of the
selected file, with the cursor position at the default headline (if you
had specified one in the template). You can either immediately press
@key{RET} to get the note placed there. Or you can use the following
keys to find a better location:
@example
@key{TAB} @r{Cycle visibility.}
@key{down} / @key{up} @r{Next/previous visible headline.}
n / p @r{Next/previous visible headline.}
f / b @r{Next/previous headline same level.}
u @r{One level up.}
@c 0-9 @r{Digit argument.}
@end example
@noindent
Pressing @key{RET} or @key{left} or @key{right}
then leads to the following result.
@multitable @columnfractions 0.2 0.15 0.65
@item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
@item buffer-start @tab @key{RET} @tab as level 2 heading at end of file
@item on headline @tab @key{RET} @tab as sublevel of the heading at cursor
@item @tab @key{left}/@key{right} @tab as same level, before/after current heading
@item not on headline @tab @key{RET}
@tab at cursor position, level taken from context.
@end multitable
So a fast way to store the note to its default location is to press
@kbd{C-c C-c @key{RET} @key{RET}}. Even shorter would be @kbd{C-u C-c
C-c}, which does the same without even asking for a file or showing the
tree.
Before inserting the text into a tree, the function ensures that the
text has a headline, i.e. a first line that starts with a @samp{*}.
If not, a headline is constructed from the current date and some
additional data. If the variable @code{org-adapt-indentation} is
non-nil, the entire text is also indented so that it starts in the
same column as the headline (after the asterisks).
@node TODO items, Tags, Hyperlinks, Top
@chapter TODO items
@ -2725,6 +2568,7 @@ things you have to do.
@menu
* TODO basics:: Marking and displaying TODO entries
* TODO extensions:: Workflow and assignments
* Progress logging:: Dates and notes for progress
* Priorities:: Some things are more important than others
* Breaking down tasks:: Splitting a task into manageable pieces
* Checkboxes:: Tick-off lists
@ -2756,6 +2600,12 @@ Rotate the TODO state of the current item among
The same rotation can also be done ``remotely'' from the timeline and
agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
@kindex C-u C-c C-t
@item C-u C-c C-t
Select a specific keyword using completion of (if it has been set up)
the fast selection interface.
@kindex S-@key{right}
@kindex S-@key{left}
@item S-@key{right}
@ -2794,7 +2644,7 @@ the TODO entries directly from that buffer (@pxref{Agenda commands}).
Insert a new TODO entry below the current one.
@end table
@node TODO extensions, Priorities, TODO basics, TODO items
@node TODO extensions, Progress logging, TODO basics, TODO items
@section Extended use of TODO keywords
@cindex extended TODO keywords
@ -2810,7 +2660,9 @@ TODO items in particular (@pxref{Tags}).
* Workflow states:: From TODO to DONE in steps
* TODO types:: I do this, Fred the rest
* Multiple sets in one file:: Mixing it all, and still finding your way
* Fast access to TODO states:: Single letter selection of a state
* Per file keywords:: Different files, different requirements
* Faces for TODO keywords:: Highlighting states
@end menu
@node Workflow states, TODO types, TODO extensions, TODO extensions
@ -2875,7 +2727,7 @@ would use @kbd{C-3 C-c C-v}. To collect Lucy's items from all agenda
files into a single buffer, you would use the prefix arg as well when
creating the global todo list: @kbd{C-3 C-c t}.
@node Multiple sets in one file, Per file keywords, TODO types, TODO extensions
@node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
@subsection Multiple keyword sets in one file
@cindex todo keyword sets
@ -2918,7 +2770,31 @@ These keys jump from one TODO subset to the next. In the above example,
would switch from @code{DONE} to @code{REPORT} in the example above.
@end table
@node Per file keywords, , Multiple sets in one file, TODO extensions
@node Fast access to TODO states, Per file keywords, Multiple sets in one file, TODO extensions
@subsection Fast access to TODO states
If you would like to quickly change an entry to an arbitrary TODO state
instead of cycling through the states, you can set up keys for
single-letter access to the states. This is done by adding the section
key after each keyword, in parenthesis. For example:
@lisp
(setq org-todo-keywords
'((sequence "TODO(t)" "|" "DONE(d)")
(sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
(sequence "|" "CANCELED(c)")))
@end lisp
If you then press @code{C-u C-c C-t} followed by the selection key, the
entry will be switched to this state. @key{SPC} can be used to remove
any TODO keyword from an entry. Should you like this way of selecting
TODO states a lot, you might want to set the variable
@code{org-use-fast-todo-selection} to @code{t} and make this behavior
the default. Check also the variable
@code{org-fast-tag-selection-include-todo}, it allows to change the TODO
state through the tags interface (@pxref{Setting tags}).
@node Per file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
@subsection Setting up keywords for individual files
@cindex keyword options
@cindex per file keywords
@ -2961,7 +2837,99 @@ Org-mode is activated after visiting a file. @kbd{C-c C-c} with the
cursor in a line starting with @samp{#+} is simply restarting Org-mode
for the current buffer.}.
@node Priorities, Breaking down tasks, TODO extensions, TODO items
@node Faces for TODO keywords, , Per file keywords, TODO extensions
@subsection Faces for TODO keywords
@cindex faces, for TODO keywords
Org-mode highlights TODO keywords with special faces: @code{org-todo}
for keywords indicating that an item still has to be acted upon, and
@code{org-done} for keywords indicating that an item is finished. If
you are using more than 2 different states, you might want to use
special faces for some of them. This can be done using the variable
@code{org-todo-keyword-faces}. For example:
@lisp
(setq org-todo-keyword-faces
'(("TODO" . org-warning)
("DEFERRED" . shadow)
("CANCELED" . (:foreground "blue" :weight bold))))
@end lisp
@node Progress logging, Priorities, TODO extensions, TODO items
@section Progress Logging
@cindex progress logging
@cindex logging, of progress
Org-mode can automatically record a time stamp and even a note when you
mark a TODO item as DONE, or even each time you change the state of
a TODO item.
@menu
* Closing items:: When was this entry marked DONE?
* Tracking TODO state changes:: When did the status change?
@end menu
@node Closing items, Tracking TODO state changes, Progress logging, Progress logging
@subsection Closing items
If you want to keep track of @emph{when} a certain TODO item was
finished, turn on logging with@footnote{The corresponding in-buffer
setting is: @code{#+STARTUP: logdone}}
@lisp
(setq org-log-done t)
@end lisp
@noindent
Then each time you turn a TODO entry into DONE using either @kbd{C-c
C-t} in the Org-mode buffer or @kbd{t} in the agenda buffer, a line
@samp{CLOSED: [timestamp]} will be inserted just after the headline. If
you turn the entry back into a TODO item through further state cycling,
that line will be removed again. In the timeline (@pxref{Timeline}) and
in the agenda (@pxref{Weekly/Daily agenda}), you can then use the
@kbd{l} key to display the TODO items closed on each day, giving you an
overview of what has been done on a day. If you want to record a note
along with the timestamp, use@footnote{The corresponding in-buffer
setting is: @code{#+STARTUP: lognotedone}}
@lisp
(setq org-log-done '(done))
@end lisp
@node Tracking TODO state changes, , Closing items, Progress logging
@subsection Tracking TODO state changes
When TODO keywords are used as workflow states (@pxref{Workflow
states}), you might want to keep track of when a state change occurred
and record a note about this change. With the setting
@lisp
(setq org-log-done '(state))
@end lisp
@noindent
each state change will prompt you for a note that will be attached to
the current headline. If you press @kbd{C-c C-c} without typing
anything into the note buffer, only the time of the state change will be
noted. Very likely you do not want this verbose tracking all the time,
so it is probably better to configure this behavior with in-buffer
options. For example, if you are tracking purchases, put these into a
separate file that contains:
@example
#+SEQ_TODO: TODO(t) ORDERED(o) INVOICE(i) PAYED(p) | RECEIVED(r)
#+STARTUP: lognotestate
@end example
If you only need to take a note for some of the states, mark those
states with an additional @samp{@@}, like this:
@example
#+SEQ_TODO: TODO(t) ORDERED(o@@) INVOICE(i@@) PAYED(p) | RECEIVED(r)
#+STARTUP: lognotestate
@end example
@node Priorities, Breaking down tasks, Progress logging, TODO items
@section Priorities
@cindex priorities
@ -2993,8 +2961,9 @@ agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
@kindex S-@key{down}
@item S-@key{up}
@itemx S-@key{down}
Increase/decrease priority of current headline. Note that these keys
are also used to modify time stamps (@pxref{Creating timestamps}).
Increase/decrease priority of current headline@footnote{See also the
option @code{org-priority-start-cycle-with-default'}.}. Note that these
keys are also used to modify time stamps (@pxref{Creating timestamps}).
Furthermore, these keys are also used by CUA-mode (@pxref{Conflicts}).
@end table
@ -3671,7 +3640,7 @@ be used by Emacs Lisp programs to work with properties and to implement
features based on them. For more information see @ref{Using the
property API}.
@node Timestamps, Agenda views, Properties and columns, Top
@node Timestamps, Remember, Properties and columns, Top
@chapter Timestamps
@cindex time stamps
@cindex date stamps
@ -3683,7 +3652,7 @@ planning.
* Time stamps:: Assigning a time to a tree entry
* Creating timestamps:: Commands which insert timestamps
* Deadlines and scheduling:: Planning your work
* Progress logging:: Documenting when what work was done.
* Clocking work time::
@end menu
@ -3705,13 +3674,12 @@ Its presence causes entries to be shown on specific dates in the agenda
(@pxref{Weekly/Daily agenda}). We distinguish:
@table @var
@item Plain time stamp
@item Plain time stamp, Event, Appointment
@cindex timestamp
A simple time stamp just assigns a date/time to an item. This is just
like writing down an appointment in a paper agenda, or like writing down
an event in a diary, when you want to take note of when something
happened. In the timeline and agenda displays, the headline of an entry
associated with a plain time stamp will be shown exactly on that date.
like writing down an appointment or event in a paper agenda. In the
timeline and agenda displays, the headline of an entry associated with a
plain time stamp will be shown exactly on that date.
@example
* Meet Peter at the movies <2006-11-01 Wed 19:15>
@ -3953,7 +3921,7 @@ format is shorter, things do work as expected.
@end itemize
@node Deadlines and scheduling, Progress logging, Creating timestamps, Timestamps
@node Deadlines and scheduling, Clocking work time, Creating timestamps, Timestamps
@section Deadlines and Scheduling
A time stamp may be preceded by special keywords to facilitate planning
@ -3992,6 +3960,15 @@ I.e., the task will automatically be forwarded until completed.
*** TODO Call Trillian for a date on New Years Eve.
SCHEDULED: <2004-12-25 Sat>
@end example
@noindent
@b{Important:} Scheduling an item in Org-mode should @i{not} be
understood like @i{Scheduling a meeting}. Setting a date for a meeting
is just a simple appointment, you should mark this entry with a simple
plain time stamp, to get this item shown on the date where it applies.
This is a frequent mis-understanding from Org-users. In Org-mode,
@i{Scheduling} means setting a date when you want to start working on an
action item.
@end table
@menu
@ -4068,77 +4045,8 @@ will be visible.
You may have both scheduling and deadline information for a specific
task - just make sure that the repeater intervals on both are the same.
@node Progress logging, , Deadlines and scheduling, Timestamps
@section Progress Logging
@cindex progress logging
@cindex logging, of progress
Org-mode can automatically record a time stamp when you mark a TODO item
as DONE, or even each time when you change the state of a TODO item.
You can also measure precisely the time you spent on specific items in a
project by starting and stopping a clock when you start and stop working
on an aspect of a project.
@menu
* Closing items:: When was this entry marked DONE?
* Tracking TODO state changes:: When did the status change?
* Clocking work time:: When exactly did you work on this item?
@end menu
@node Closing items, Tracking TODO state changes, Progress logging, Progress logging
@subsection Closing items
If you want to keep track of @emph{when} a certain TODO item was
finished, turn on logging with@footnote{The corresponding in-buffer
setting is: @code{#+STARTUP: logdone}}
@lisp
(setq org-log-done t)
@end lisp
@noindent
Then each time you turn a TODO entry into DONE using either @kbd{C-c
C-t} in the Org-mode buffer or @kbd{t} in the agenda buffer, a line
@samp{CLOSED: [timestamp]} will be inserted just after the headline. If
you turn the entry back into a TODO item through further state cycling,
that line will be removed again. In the timeline (@pxref{Timeline}) and
in the agenda (@pxref{Weekly/Daily agenda}), you can then use the
@kbd{l} key to display the TODO items closed on each day, giving you an
overview of what has been done on a day. If you want to record a note
along with the timestamp, use@footnote{The corresponding in-buffer
setting is: @code{#+STARTUP: lognotedone}}
@lisp
(setq org-log-done '(done))
@end lisp
@node Tracking TODO state changes, Clocking work time, Closing items, Progress logging
@subsection Tracking TODO state changes
When TODO keywords are used as workflow states (@pxref{Workflow
states}), you might want to keep track of when a state change occurred,
and you may even want to attach notes to that state change. With the
setting
@lisp
(setq org-log-done '(state))
@end lisp
@noindent
each state change will prompt you for a note that will be attached to
the current headline. Very likely you do not want this verbose tracking
all the time, so it is probably better to configure this behavior with
in-buffer options. For example, if you are tracking purchases, put
these into a separate file that starts with:
@example
#+SEQ_TODO: TODO ORDERED INVOICE PAYED RECEIVED SENT
#+STARTUP: lognotestate
@end example
@node Clocking work time, , Tracking TODO state changes, Progress logging
@subsection Clocking work time
@node Clocking work time, , Deadlines and scheduling, Timestamps
@section Clocking work time
Org-mode allows you to clock the time you spent on specific tasks in a
project. When you start working on an item, you can start the clock.
@ -4194,8 +4102,16 @@ report as an org-mode table into the current file.
If such a block already exists, its content is replaced by the new
table. The @samp{BEGIN} line can specify options:
@example
:maxlevels @r{Maximum level depth to which times are listed in the table.}
:maxlevel @r{Maximum level depth to which times are listed in the table.}
:emphasize @r{When @code{t}, emphasize level one and level two items}
:scope @r{The scope to consider. This can be any of the following:}
nil @r{the current buffer or narrowed region}
file @r{the full current buffer}
subtree @r{the subtree where the clocktable is located}
treeN @r{the surrounding level N tree, for example @code{tree3}}
tree @r{the surrounding level 1 tree}
agenda @r{all agenda files}
("file"..) @r{scan these files}
:block @r{The time block to consider. This block is specified relative}
@r{to the current time and may be any of these keywords:}
@r{@code{today}, @code{yesterday}, @code{thisweek}, @code{lastweek},}
@ -4203,9 +4119,10 @@ table. The @samp{BEGIN} line can specify options:
:tstart @r{A time string specifying when to start considering times}
:tend @r{A time string specifying when to stop considering times}
@end example
So to get a clock summary for the current day, you could write
So to get a clock summary of the current level 1 tree, for the current
day, you could write
@example
#+BEGIN: clocktable :maxlevel 2 :block today
#+BEGIN: clocktable :maxlevel 2 :block today :scope tree1
#+END: clocktable
@end example
@ -4218,6 +4135,12 @@ only to fit it onto the manual.}
#+END: clocktable
@end example
@kindex C-c C-c
@item C-c C-c
@kindex C-c C-x C-u
@itemx C-c C-x C-u
Update dynamical block at point. The cursor needs to be in the
@code{#+BEGIN} line of the dynamic block.
@kindex C-u C-c C-x C-u
@item C-u C-c C-x C-u
Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
@ -4228,7 +4151,189 @@ The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
the agenda (@pxref{Weekly/Daily agenda}) to show which tasks have been
worked on or closed during a day.
@node Agenda views, Embedded LaTeX, Timestamps, Top
@node Remember, Agenda views, Timestamps, Top
@chapter Remember
@cindex @file{remember.el}
The @i{Remember} package by John Wiegley lets you store quick notes with
little interruption of your work flow. See
@uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
information. It is an excellent way to add new notes and TODO items to
Org-mode files. Org-mode significantly expands the possibilities of
@i{remember}: You may define templates for different note types, and to
associate target files and headlines with specific templates. It also
allows you to select the location where a note should be stored
interactively, on the fly.
@menu
* Setting up remember:: Some code for .emacs to get things going
* Remember templates:: Define the outline of different note types
* Storing notes:: Directly get the note to where it belongs
@end menu
@node Setting up remember, Remember templates, Remember, Remember
@section Setting up remember
The following customization will tell @i{remember} to use org files as
target, and to create annotations compatible with Org-mode links.
@example
(setq org-directory "~/path/to/my/orgfiles/")
(setq org-default-notes-file (concat org-directory "/notes.org"))
(setq remember-annotation-functions '(org-remember-annotation))
(setq remember-handler-functions '(org-remember-handler))
(add-hook 'remember-mode-hook 'org-remember-apply-template)
@end example
@node Remember templates, Storing notes, Setting up remember, Remember
@section Remember templates
@cindex templates, for remember
In combination with Org-mode, you can use templates to generate
different types of @i{remember} notes. For example, if you would like
to use one template to create general TODO entries, another one for
journal entries, and a third one for collecting random ideas, you could
use:
@example
(setq org-remember-templates
'((?t "* TODO %?\n %i\n %a" "~/org/TODO.org" "Tasks")
(?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org")
(?i "* %^@{Title@}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
@end example
@noindent In these entries, the character specifies how to select the
template. The first string specifies the template. Two more (optional)
strings give the file in which, and the headline under which the new
note should be stored. The file defaults (if not present or @code{nil})
to @code{org-default-notes-file}, the heading to
@code{org-remember-default-headline}. Both defaults help to get to the
storing location quickly, but you can change the location interactively
while storing the note.
When you call @kbd{M-x remember} (or @kbd{M-x org-remember}) to remember
something, org will prompt for a key to select the template (if you have
more than one template) and then prepare the buffer like
@example
* TODO
[[file:link to where you called remember]]
@end example
@noindent or
@example
* [2006-03-21 Tue 15:37]
[[file:link to where you called remember]]
@end example
@noindent
During expansion of the template, special @kbd{%}-escapes allow dynamic
insertion of content:
@example
%^@{prompt@} @r{prompt the user for a string and replace this sequence with it.}
%t @r{time stamp, date only}
%T @r{time stamp with date and time}
%u, %U @r{like the above, but inactive time stamps}
%^t @r{like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}}
@r{You may define a prompt like @code{%^@{Birthday@}t}}
%n @r{user name (taken from @code{user-full-name})}
%a @r{annotation, normally the link created with @code{org-store-link}}
%A @r{like @code{%a}, but prompt for the description part}
%i @r{initial content, the region when remember is called with C-u.}
@r{The entire text will be indented like @code{%i} itself.}
%^g @r{prompt for tags, with completion on tags in target file.}
%^G @r{prompt for tags, with completion all tags in all agenda files.}
%:keyword @r{specific information for certain link types, see below}
@end example
@noindent
For specific link types, the following keywords will be
defined@footnote{If you define your own link types (@pxref{Adding
hyperlink types}), any property you store with
@code{org-store-link-props} can be accessed in remember templates in a
similar way.}:
@example
Link type | Available keywords
-------------------+----------------------------------------------
bbdb | %:name %:company
vm, wl, mh, rmail | %:type %:subject %:message-id
| %:from %:fromname %:fromaddress
| %:to %:toname %:toaddress
| %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user. See the variable @code{org-from-is-user-regexp}.}}
gnus | %:group, @r{for messages also all email fields}
w3, w3m | %:url
info | %:file %:node
calendar | %:date"
@end example
@noindent
To place the cursor after template expansion use:
@example
%? @r{After completing the template, position cursor here.}
@end example
@noindent
If you change you mind about which template to use, call
@code{org-remember} in the remember buffer. You may then select a new
template that will be filled with the previous context information.
@node Storing notes, , Remember templates, Remember
@section Storing notes
When you are finished preparing a note with @i{remember}, you have to press
@kbd{C-c C-c} to file the note away. The handler will store the note in
the file and under the headline specified in the template, or it will
use the default file and headlines. The window configuration will be
restored, and you are back in the working context before the call to
@code{remember}. To re-use the location found during the last call to
@code{remember}, exit the remember buffer with @kbd{C-u C-u C-c C-c},
i.e. specify a double prefix argument to @kbd{C-c C-c}.
If you want to store the note to a different place, use @kbd{C-u C-c
C-c} instead to exit remember@footnote{Configure the variable
@code{org-remember-store-without-prompt} to make this behavior the
default.}. The handler will then first prompt for a target file - if you
press @key{RET}, the value specified for the template is used. Then the
command offers the headings tree of the selected file, with the cursor
position at the default headline (if you had specified one in the
template). You can either immediately press @key{RET} to get the note
placed there. Or you can use the following keys to find a different
location:
@example
@key{TAB} @r{Cycle visibility.}
@key{down} / @key{up} @r{Next/previous visible headline.}
n / p @r{Next/previous visible headline.}
f / b @r{Next/previous headline same level.}
u @r{One level up.}
@c 0-9 @r{Digit argument.}
@end example
@noindent
Pressing @key{RET} or @key{left} or @key{right}
then leads to the following result.
@multitable @columnfractions 0.2 0.15 0.65
@item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
@item on headline @tab @key{RET} @tab as sublevel of the heading at cursor, first or last
@item @tab @tab depending on @code{org-reverse-note-order}.
@item @tab @key{left}/@key{right} @tab as same level, before/after current heading
@item buffer-start @tab @key{RET} @tab as level 2 heading at end of file or level 1 at beginning
@item @tab @tab depending on @code{org-reverse-note-order}.
@item not on headline @tab @key{RET}
@tab at cursor position, level taken from context.
@end multitable
Before inserting the text into a tree, the function ensures that the
text has a headline, i.e. a first line that starts with a @samp{*}. If
not, a headline is constructed from the current date and some additional
data. If you have indented the text of the note below the headline, the
indentation will be adapted if inserting the note into the tree requires
demotion from level 1.
@node Agenda views, Embedded LaTeX, Remember, Top
@chapter Agenda Views
@cindex agenda views
@ -4313,6 +4418,10 @@ Remove current file from the list of agenda files.
@item C-,
@itemx C-'
Cycle through agenda file list, visiting one file after the other.
@kindex C-c C-x /
@item C-c C-x /
Search for a regular rexpression in all agenda files and display the
results in an @code{occur} buffer.
@end table
@noindent
@ -4616,16 +4725,25 @@ associated with the item.
@cindex category
The category is a broad label assigned to each agenda item. By default,
the category is simply derived from the file name, but you can also
specify it with a special line in the buffer, like this:
specify it with a special line in the buffer, like this@footnote{If
there are several such lines in a file, each specifies the category for
the text below it. The first category also applies to any text before
the first CATEGORY line. This method is only kept for backward
compatibility. The preferred method for setting multiple categories in
a buffer is using a property.}:
@example
#+CATEGORY: Thesis
@end example
If there are several such lines in a file, each specifies the category
for the text below it (but the first category also applies to any text
before the first CATEGORY line). The display in the agenda buffer looks
best if the category is not longer than 10 characters.
@noindent
If you would like to have a special CATEGORY for a single entry or a
(sub)tree, give the entry a @code{:CATEGORY:} property with the location
as the value (@pxref{Properties and columns}).
@noindent
The display in the agenda buffer looks best if the category is not
longer than 10 characters.
@node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
@subsection Time-of-Day Specifications
@ -4860,7 +4978,8 @@ inheritance, this may be more than the tags listed in the line itself.
@c
@kindex :
@item :
Set tags for the current headline.
Set tags for the current headline. If there is an active region in the
agenda, change a tag for all headings in the region.
@c
@kindex a
@item a
@ -6068,7 +6187,7 @@ the Emacs package @file{footnote.el} to create footnotes. For example:
The org-mode homepage[1] clearly needs help from
a good web designer.
[1] The link is: http://www.astro.uva.nl/~dominik/Tools/org
[1] The link is: http://orgmode.org
@end example
@noindent
@ -6172,6 +6291,7 @@ Insert template with export options, see example below.
@example
#+TITLE: the title to be shown (default is the buffer name)
#+AUTHOR: the author (default taken from @code{user-full-name})
#+DATE: A date, fixed, of a format string for @code{format-time-string}
#+EMAIL: his/her email address (default from @code{user-mail-address})
#+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language})
#+TEXT: Some descriptive text to be inserted at the beginning.
@ -6776,7 +6896,7 @@ this file, and (potentially) the corresponding @emph{fast tag selection}
keys. The corresponding variable is @code{org-tag-alist}.
@item #+TBLFM:
This line contains the formulas for the table directly above the line.
@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:
@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS, #+DATE:
These lines provide settings for exporting files. For more details see
@ref{Export options}.
@item #+SEQ_TODO: #+TYP_TODO:
@ -6830,6 +6950,9 @@ of the checkbox.
@item
If the cursor is on a numbered item in a plain list, renumber the
ordered list.
@item
If the cursor is on the @code{#+BEGIN} line of a dynamical block, the
block is updated.
@end itemize
@node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
@ -7197,6 +7320,12 @@ blogs. @url{http://www.cognition.ens.fr/~guerry/blorg.html}.
@item @file{org2rem.el} by Bastien Guerry
Translates Org-mode files into something readable by
Remind. @url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
@item @file{org-toc.el} by Bastien Guerry
Produces a simple table of contents of an Org-mode file, for easy
navigation. @url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
@item @file{org-registry.el} by Bastien Guerry
Find which Org-file link to a certain document.
@url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
@end table
@page
@ -7683,8 +7812,9 @@ Skip current entry if it has a deadline.
@item '(org-agenda-skip-entry-if 'scheduled 'deadline)
Skip current entry if it has a deadline, or if it is scheduled.
@item '(org-agenda-skip-entry 'regexp "regular expression")
Skip current entry if the regular expression contained in the variable
@code{org-agenda-skip-regexp} matches in the entry.
Skip current entry if the regular expression matches in the entry.
@item '(org-agenda-skip-entry 'notregexp "regular expression")
Skip current entry unless the regular expression matches.
@item '(org-agenda-skip-subtree-if 'regexp "regular expression")
Same as above, but check and skip the entire subtree.
@end table

Binary file not shown.

View File

@ -1,5 +1,5 @@
% Reference Card for Org Mode
\def\orgversionnumber{5.08}
\def\orgversionnumber{5.10}
\def\versionyear{2007} % latest update
\def\year{2007} % latest copyright year
@ -308,6 +308,7 @@ are preserved on all copies.
\section{Structure Editing}
\key{insert new heading/item at current level}{M-RET}
\key{insert new heading after subtree}{C-RET}
\key{insert new TODO entry/checkbox item}{M-S-RET}
\key{promote current heading up one level}{M-LEFT}
@ -612,12 +613,12 @@ after ``{\tt :}'', and dictionary words elsewhere.
\key{configure stuck projects}{C-c a !$^1$}
\key{agenda for date at cursor}{C-c C-o}
\vskip 1mm
To set categories, add lines like$^2$:
\vskip -1mm
\beginexample%
\#+CATEGORY: MyCateg
\endexample
%\vskip 1mm
%To set categories, add lines like$^2$:
%\vskip -1mm
%\beginexample%
%\#+CATEGORY: MyCateg
%\endexample
{\bf Commands available in an agenda buffer}

Binary file not shown.