1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-25 19:11:56 +00:00

(org-agenda-custom-commands): New option.

(org-agenda): Offer custom commands on splash screen.
	(org-make-tags-matcher): Parser for Boolean logic added.
	(org-agenda-set-tags): New command.
	(org-agenda-menu, org-agenda-mode-map): Add `org-agenda-set-tags'.
	(org-set-tags): Efficiency improvements.
	(org-auto-align-tags): New option.
	(org-todo, org-demote, org-promote): Realign tags.
	(org-tags-completion-function): Use also "&" and "|" as
	separators.
	(org-org-menu): Agenda commands simplified.
This commit is contained in:
Carsten Dominik 2005-12-20 08:08:48 +00:00
parent 54e42ad99a
commit d924f2e5dc
4 changed files with 308 additions and 159 deletions

View File

@ -1,3 +1,17 @@
2005-12-20 Carsten Dominik <dominik@science.uva.nl>
* textmodes/org.el: (org-agenda-custom-commands): New option.
(org-agenda): Offer custom commands on splash screen.
(org-make-tags-matcher): Parser for Boolean logic added.
(org-agenda-set-tags): New command.
(org-agenda-menu, org-agenda-mode-map): Add `org-agenda-set-tags'.
(org-set-tags): Efficiency improvements.
(org-auto-align-tags): New option.
(org-todo, org-demote, org-promote): Realign tags.
(org-tags-completion-function): Use also "&" and "|" as
separators.
(org-org-menu): Agenda commands simplified.
2005-12-19 Luc Teirlinck <teirllm@auburn.edu>
* cus-edit.el (customize-apropos, customize-apropos-options):

View File

@ -5,7 +5,7 @@
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
;; Version: 4.00
;; Version: 4.01
;;
;; This file is part of GNU Emacs.
;;
@ -81,6 +81,13 @@
;;
;; Changes:
;; -------
;; Version 4.01
;; - Tags can also be set remotely from agenda buffer.
;; - Boolean logic for tag searches.
;; - Additional agenda commands can be configured through the variable
;; `org-agenda-custom-commands'.
;; - Minor bug fixes.
;;
;; Version 4.00
;; - Headlines can contain TAGS, and Org-mode can produced a list
;; of matching headlines based on a TAG search expression.
@ -199,7 +206,7 @@
;; - Cleanup.
;;
;; Version 3.07
;; - Some folding incinsistencies removed.
;; - Some folding inconsistencies removed.
;; - BBDB links to company-only entries.
;; - Bug fixes and global cleanup.
;;
@ -266,7 +273,7 @@
;;; Customization variables
(defvar org-version "4.00"
(defvar org-version "4.01"
"The version number of the file org.el.")
(defun org-version ()
(interactive)
@ -594,6 +601,23 @@ Entries are added to this list with \\[org-agenda-file-to-front] and removed wit
:group 'org-agenda
:type '(repeat file))
(defcustom org-agenda-custom-commands
'(("w" todo "WAITING")
("u" tags "+WORK+URGENT-BOSS"))
"Custom commands for the agenda.
These commands will be offered on the splash screen displayed by the
agenda dispatcher \\[org-agenda]. Each entry is a list of 3 items:
key The key (as a string) to be associated with the command.
type The command type, either `todo' for a todo list with a specific
todo keyword, or `tags' for a tags search.
match What to search for. Either a TODO keyword, or a tags match query."
:group 'org-agenda
:type '(repeat
(list (string :tag "Key")
(choice :tag "Type" (const tags) (const todo))
(string :tag "Match"))))
(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."
@ -981,7 +1005,7 @@ first line, so it is probably best to use this in combinations with
:tag "Org Tags"
:group 'org)
(defcustom org-tags-column 40
(defcustom org-tags-column 48
"The column to which tags should be indented in a headline.
If this number is positive, it specified the column. If it is negative,
it means that the tags should be flushright to that column. For example,
@ -989,9 +1013,19 @@ it means that the tags should be flushright to that column. For example,
:group 'org-tags
:type 'integer)
(defcustom org-auto-align-tags t
"Non-nil means, realign tags after pro/demotion of TODO state change.
These operations change the length of a headline and therefore shift
the tags around. With this options turned on, after each such operation
the tags are again aligned to `org-tags-column'."
:group 'org-tags
:type 'boolean)
(defcustom org-use-tag-inheritance t
"Non-nil means, tags in levels apply also for sublevels.
When nil, only the tags directly give in a specific line apply there."
When nil, only the tags directly give in a specific line apply there.
If you turn off this option, you very likely want to turn on the
companion option `org-tags-match-list-sublevels'."
:group 'org-tags
:type 'boolean)
@ -1000,7 +1034,9 @@ When nil, only the tags directly give in a specific line apply there."
Because of tag inheritance (see variable `org-use-tag-inheritance'),
the sublevels of a headline matching a tag search often also match
the same search. Listing all of them can create very long lists.
Setting this variable to nil causes subtrees to be skipped."
Setting this variable to nil causes subtrees to be skipped.
This option is off by default, because inheritance in on. If you turn
inheritance off, you very likely want to turn this option on."
:group 'org-tags
:type 'boolean)
@ -2721,6 +2757,8 @@ in the region."
(up-head (make-string (1- level) ?*)))
(if (= level 1) (error "Cannot promote to level 0. UNDO to recover"))
(replace-match up-head nil t)
;; Fixup tag positioning
(and org-auto-align-tags (org-set-tags nil t))
(if org-adapt-indentation
(org-fixup-indentation "^ " "" "^ ?\\S-"))))
@ -2732,6 +2770,8 @@ in the region."
(let* ((level (save-match-data (funcall outline-level)))
(down-head (make-string (1+ level) ?*)))
(replace-match down-head nil t)
;; Fixup tag positioning
(and org-auto-align-tags (org-set-tags nil t))
(if org-adapt-indentation
(org-fixup-indentation "^ " " " "^\\S-"))))
@ -3467,6 +3507,8 @@ prefix arg, switch to that state."
(org-log-done)
(if (not this)
(org-log-done t))))
;; Fixup tag positioning
(and org-auto-align-tags (org-set-tags nil t))
(run-hooks 'org-after-todo-state-change-hook)))
;; Fixup cursor location if close to the keyword
(if (and (outline-on-heading-p)
@ -4226,6 +4268,7 @@ The following commands are available:
(define-key org-agenda-mode-map "o" 'delete-other-windows)
(define-key org-agenda-mode-map "L" 'org-agenda-recenter)
(define-key org-agenda-mode-map "t" 'org-agenda-todo)
(define-key org-agenda-mode-map ":" 'org-agenda-set-tags)
(define-key org-agenda-mode-map "." 'org-agenda-goto-today)
(define-key org-agenda-mode-map "d" 'org-agenda-day-view)
(define-key org-agenda-mode-map "w" 'org-agenda-week-view)
@ -4293,6 +4336,7 @@ The following commands are available:
:style toggle :selected org-agenda-follow-mode :active t]
"--"
["Cycle TODO" org-agenda-todo t]
["Set Tags" org-agenda-set-tags t]
("Reschedule"
["Reschedule +1 day" org-agenda-date-later t]
["Reschedule -1 day" org-agenda-date-earlier t]
@ -4338,7 +4382,7 @@ The following commands are available:
(defun org-agenda (arg)
"Dispatch agenda commands to collect entries to the agenda buffer.
Prompts for a character to select a command. Any prefix arg will be passed
on to the selected command. Possible selections are:
on to the selected command. The default selections are:
a Call `org-agenda' to display the agenda for the current day or week.
t Call `org-todo-list' to display the global todo list.
@ -4349,35 +4393,70 @@ m Call `org-tags-view' to display headlines with tags matching
selections, like `+WORK+URGENT-WITHBOSS'.
M like `m', but select only TODO entries, no ordinary headlines.
More commands can be added by configuring the variable
`org-agenda-custom-commands'.
If the current buffer is in Org-mode and visiting a file, you can also
first press `1' to indicate that the agenda should be temporarily
restricted to the current file."
(interactive "P")
(let ((restrict-ok (and (buffer-file-name) (eq major-mode 'org-mode)))
c)
(put 'org-agenda-files 'org-restrict nil)
(message"[a]genda [t]odoList [T]odoKwd [m]atchTags [M]atchTagsTodo%s"
(if restrict-ok " [1]JustThisFile" ""))
(setq c (read-char-exclusive))
(message "")
(when (equal c ?1)
(if restrict-ok
(put 'org-agenda-files 'org-restrict (list (buffer-file-name)))
(error "Cannot restrict agenda to current buffer"))
(message "Single file: [a]genda [t]odoList [T]odoKwd [m]atchTags [M]atchTagsTodo")
(setq c (read-char-exclusive))
(message ""))
(cond
((equal c ?a) (call-interactively 'org-agenda-list))
((equal c ?t) (call-interactively 'org-todo-list))
((equal c ?T)
(setq current-prefix-arg (or arg '(4)))
(call-interactively 'org-todo-list))
((equal c ?m) (call-interactively 'org-tags-view))
((equal c ?M)
(setq current-prefix-arg (or arg '(4)))
(call-interactively 'org-tags-view))
(t (error "Invalid key")))))
(catch 'exit
(let ((restrict-ok (and (buffer-file-name) (eq major-mode 'org-mode)))
(custom org-agenda-custom-commands)
c entry key type string)
(put 'org-agenda-files 'org-restrict nil)
(save-window-excursion
(delete-other-windows)
(switch-to-buffer-other-window " *Agenda Commands*")
(erase-buffer)
(insert
"Press key for an agenda command:
--------------------------------
a Agenda for current week or day
t List of all TODO entries T Entries with special TODO kwd
m Match a TAGS query M Like m, but only TODO entries.
C Configure your own agenda commands")
(while (setq entry (pop custom))
(setq key (car entry) type (nth 1 entry) string (nth 2 entry))
(insert (format "\n%-4s%-12s: %s"
key
(if (eq type 'tags) "Tags query" "TODO keyword")
string)))
(goto-char (point-min))
(fit-window-to-buffer)
(message "Press key for agenda command%s"
(if restrict-ok ", or [1] to restrict to current file" ""))
(setq c (read-char-exclusive))
(message "")
(when (equal c ?1)
(if restrict-ok
(put 'org-agenda-files 'org-restrict (list (buffer-file-name)))
(error "Cannot restrict agenda to current buffer"))
(message "Press key for agenda command%s"
(if restrict-ok " (restricted to current file)" ""))
(setq c (read-char-exclusive))
(message "")))
(require 'calendar) ; FIXME: can we avoid this for some commands?
(cond
((equal c ?C) (customize-variable 'org-agenda-custom-commands))
((equal c ?a) (call-interactively 'org-agenda-list))
((equal c ?t) (call-interactively 'org-todo-list))
((equal c ?T)
(setq current-prefix-arg (or arg '(4)))
(call-interactively 'org-todo-list))
((equal c ?m) (call-interactively 'org-tags-view))
((equal c ?M)
(setq current-prefix-arg (or arg '(4)))
(call-interactively 'org-tags-view))
((setq entry (assoc (char-to-string c) org-agenda-custom-commands))
(setq type (nth 1 entry) string (nth 2 entry))
(cond
((eq type 'tags)
(org-tags-view current-prefix-arg string))
((eq type 'todo)
(org-todo-list string))
(t (error "Invalid custom agenda command type %s" type))))
(t (error "Invalid key"))))))
(defun org-fit-agenda-window ()
"Fit the window to the buffer size."
@ -4667,7 +4746,8 @@ for a keyword. A numeric prefix directly selects the Nth keyword in
(kwds org-todo-keywords)
(completion-ignore-case t)
(org-select-this-todo-keyword
(and arg (integerp arg) (nth (1- arg) org-todo-keywords)))
(if (stringp arg) arg
(and arg (integerp arg) (nth (1- arg) org-todo-keywords))))
rtn rtnall files file pos)
(when (equal arg '(4))
(setq org-select-this-todo-keyword
@ -6005,6 +6085,30 @@ the same tree node, and the headline of the tree node in the Org-mode file."
(org-agenda-change-all-lines newhead hdmarker)
(beginning-of-line 1)))
(defun org-agenda-set-tags ()
"Set tags for the current headline."
(interactive)
(org-agenda-check-no-diary)
(let* ((marker (or (get-text-property (point) 'org-marker)
(org-agenda-error)))
(hdmarker (get-text-property (point) 'org-hd-marker))
(buffer (marker-buffer hdmarker))
(pos (marker-position hdmarker))
(buffer-read-only nil)
newhead)
(with-current-buffer buffer
(widen)
(goto-char pos)
(org-show-hidden-entry)
(save-excursion
(and (outline-next-heading)
(org-flag-heading nil))) ; show the next heading
(call-interactively 'org-set-tags)
(end-of-line 1)
(setq newhead (org-get-heading)))
(org-agenda-change-all-lines newhead hdmarker)
(beginning-of-line 1)))
(defun org-agenda-date-later (arg &optional what)
"Change the date of this item to one day later."
(interactive "p")
@ -6269,21 +6373,34 @@ MATCH can contain positive and negative selection of tags, like
(defun org-make-tags-matcher (match)
"Create the TAGS matcher form for the tags-selecting string MATCH."
(unless match
;; Get a new match request, with completion
(setq org-last-tags-completion-table
(or (org-get-buffer-tags)
org-last-tags-completion-table))
(setq match (completing-read
"Tags: " 'org-tags-completion-function nil nil nil
'org-tags-history)))
(let ((match0 match) minus tag mm matcher)
(while (string-match "^\\([-+:]\\)?\\([A-Za-z_]+\\)" match)
(setq minus (and (match-end 1) (equal (string-to-char match) ?-))
tag (match-string 2 match)
match (substring match (match-end 0))
mm (list 'member (downcase tag) 'tags-list)
mm (if minus (list 'not mm) mm))
(push mm matcher))
(cons match0 (cons 'and matcher))))
;; parse the string and create a lisp form
(let ((match0 match) minus tag mm matcher orterms term orlist)
(setq orterms (org-split-string match "|"))
(while (setq term (pop orterms))
(while (string-match "^&?\\([-+:]\\)?\\([A-Za-z_]+\\)" term)
(setq minus (and (match-end 1)
(equal (match-string 1 term) "-"))
tag (match-string 2 term)
term (substring term (match-end 0))
mm (list 'member (downcase tag) 'tags-list)
mm (if minus (list 'not mm) mm))
(push mm matcher))
(push (if (> (length matcher) 1) (cons 'and matcher) (car matcher))
orlist)
(setq matcher nil))
(setq matcher (if (> (length orlist) 1) (cons 'or orlist) (car orlist)))
;; Return the string and lisp forms of the matcher
(cons match0 matcher)))
;;(org-make-tags-matcher "&hello&-you")
;;;###autoload
(defun org-tags-view (&optional todo-only match keep-modes)
@ -6368,32 +6485,35 @@ With prefix ARG, realign all tags in headings in the current buffer."
(if just-align
(setq tags current)
(setq org-last-tags-completion-table
(or (org-get-buffer-tags);; FIXME: replace +- with :, so that we can use history stuff???
(or (org-get-buffer-tags)
org-last-tags-completion-table))
(setq tags
(let ((org-add-colon-after-tag-completion t))
(completing-read "Tags: " 'org-tags-completion-function
nil nil current 'org-tags-history)))
(while (string-match "[-+]" tags)
(while (string-match "[-+&]+" tags)
(setq tags (replace-match ":" t t tags)))
(unless (string-match ":$" tags) (setq tags (concat tags ":")))
(unless (string-match "^:" tags) (setq tags (concat ":" tags))))
(beginning-of-line 1)
(looking-at (concat "\\(.*\\)\\(" (regexp-quote current) "\\)[ \t]*"))
(setq hd (save-match-data (org-trim (match-string 1))))
(delete-region (match-beginning 0) (match-end 0))
(insert hd " ")
(move-to-column (max (current-column)
(if (> org-tags-column 0)
org-tags-column
(- org-tags-column (length tags))))
t)
(insert tags)
(if (equal current "")
(end-of-line 1)
(beginning-of-line 1)
(looking-at (concat "\\(.*\\)\\(" (regexp-quote current) "\\)[ \t]*"))
(setq hd (match-string 1))
(delete-region (match-beginning 0) (match-end 0))
(insert (org-trim hd) " "))
(unless (equal tags "")
(move-to-column (max (current-column)
(if (> org-tags-column 0)
org-tags-column
(- (- org-tags-column) (length tags))))
t)
(insert tags))
(move-to-column col))))
(defun org-tags-completion-function (string predicate &optional flag)
(let (s1 s2 rtn (ctable org-last-tags-completion-table))
(if (string-match "^\\(.*[-+:]\\)\\([^-+:]*\\)$" string)
(if (string-match "^\\(.*[-+:&|]\\)\\([^-+:&|]*\\)$" string)
(setq s1 (match-string 1 string)
s2 (match-string 2 string))
(setq s1 "" s2 string))
@ -11610,19 +11730,13 @@ See the individual commands for more information."
["Goto Calendar" org-goto-calendar t]
["Date from Calendar" org-date-from-calendar t])
"--"
("Agenda/Summary Views"
"Current File"
["Agenda Command" org-agenda t]
("File List for Agenda")
("Special views current file"
["TODO Tree" org-show-todo-tree t]
["Check Deadlines" org-check-deadlines t]
["Timeline" org-timeline t]
["Tags Tree" org-tags-sparse-tree t]
"--"
"All Agenda Files"
["Command Dispatcher" org-agenda t]
["TODO list" org-todo-list t]
["Agenda" org-agenda-list t]
["Tags View" org-tags-view t])
("File List for Agenda")
["Tags Tree" org-tags-sparse-tree t])
"--"
("Hyperlinks"
["Store Link (Global)" org-store-link t]
@ -12011,5 +12125,3 @@ Show the heading too, if it is currently invisible."
;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
;;; org.el ends here

View File

@ -1,3 +1,8 @@
2005-12-20 Carsten Dominik <dominik@science.uva.nl>
* org.texi: (Tags): Boolean logic documented.
(Agenda Views): Document custom commands.
2005-12-20 David Kastrup <dak@gnu.org>
* faq.texi (AUCTeX): Update version and mailing list info.

View File

@ -4,7 +4,7 @@
@setfilename ../info/org
@settitle Org Mode Manual
@set VERSION 4.00
@set VERSION 4.01
@set DATE December 2005
@dircategory Emacs
@ -229,7 +229,7 @@ ways, for example
@example
@r{@bullet{} as an outline extension with visibility cycling and structure editing}
@r{@bullet{} as an ASCII system and table editor to take structured notes}
@r{@bullet{} as an ASCII system and table editor for taking structured notes}
@r{@bullet{} as an ASCII table editor with spreadsheet-like capabilities}
@r{@bullet{} as a simple hypertext system, with HTML export}
@r{@bullet{} as a TODO list editor}
@ -532,7 +532,7 @@ functionality.
@node Archiving, Sparse trees, Structure editing, Document Structure
@section Archiving
@cindex archiving
@cindex filing subtries
@cindex filing subtrees
When a project represented by a (sub)tree is finished, you may want
to move the tree to an archive place, either in the same file under a
@ -618,12 +618,24 @@ well. For example, in the list
@example
* Meeting with the French group :WORK:
** Summary by Frank :BOSS:
** Summary by Frank :BOSS:NOTES:
*** TODO Prepare slides for him :ACTION:
@end example
@noindent
the final heading will have the tags @samp{:WORK:}, @samp{:BOSS:}, and
@samp{:ACTION:}.
the final heading will have the tags @samp{:WORK:}, @samp{:BOSS:},
@samp{:NOTES:}, and @samp{:ACTION:}. When executing tag searches and
Org-mode finds that a certain headline matches the search criterion,
it will not check any sublevel headline, assuming that these likely
also match, and that the list of matches can become very long. You
can influence inheritance and searching using the variables
@code{org-use-tag-inheritance} and
@code{org-tags-match-list-sublevels}.
@kindex M-@key{TAB}
Tags can simply be typed into the buffer. After a colon,
@kbd{M-@key{TAB}} offers completion on all tags being used in the
current buffer. There are also special commands for inserting tags,
and for executing searches based on tags.
@table @kbd
@kindex C-c C-c
@ -631,29 +643,33 @@ the final heading will have the tags @samp{:WORK:}, @samp{:BOSS:}, and
@cindex completion, of tags
Enter new tags for the current headline. The minibuffer will prompt
for a list of tags and offer completion with respect to all other tags
used in the current buffer. After pressing @key{RET}, the tags will
used in the current buffer. Several tags, separated by colons, may be
specified at the prompt. After pressing @key{RET}, the tags will
be inserted and aligned to @code{org-tags-column}. When called with a
@kbd{C-u} prefix, align all tags in the current buffer to that column,
just to make things look nice. Tags can also be just typed into the
buffer, with @kbd{M-@key{TAB}} support.
@cindex M-@key{TAB}
@item M-@key{TAB}
Tags can also be typed directly into the buffer, using
@kbd{M-@key{TAB}} completion.
just to make things look nice. TAGS are automatically realigned after
promotion, demotion, and TODO state changes (@pxref{TODO basics}).
@kindex C-c \
@item C-c \
Create a sparse tree with all headlines matching a given set of tags.
The command prompts for the tags to match. The criterion is just a
list of tags separated by @samp{+} or @samp{-} for positive and
negative selection. For example, @samp{+WORK-BOSS} would select all
headlines that are tagged @samp{:WORK:}, but discard those also tagged
@samp{:BOSS:}.
Create a sparse tree with all headlines matching a tags search.
@kindex C-c a m
@item C-c a m
Create a global list of tag matches from all agenda files.
@xref{Matching headline tags}.
@end table
A tags search string can use Boolean operators @samp{&} for AND and
@samp{|} for OR. @samp{&} binds more strongly than
@samp{|}. Parenthesis are currently no implemented. A tag may also be
preceded by @samp{-}, to select against it, and @samp{+} is syntactic
sugar for positive selection. The AND operator @samp{&} is optional
when @samp{+} or @samp{-} is present. For example, @samp{+WORK-BOSS}
would select all headlines that are tagged @samp{:WORK:}, but discard
those also tagged @samp{:BOSS:}. The search string @samp{WORK|LAPTOP}
selects all lines tagged @samp{:WORK:} or @samp{:LAPTOP:}. The string
@samp{WORK|LAPTOP&NIGHT} requires that the @samp{:LAPTOP:} lines are
also tagged @samp{NIGHT}.
@node Plain Lists, , Tags, Document Structure
@section Plain Lists
@cindex plain lists
@ -692,7 +708,7 @@ My favorite scenes are (in this order)
@end example
Org-mode supports these lists by tuning filling and wrapping commands
to correctly deal with them. Futhermore, the following commands act
to correctly deal with them. Furthermore, the following commands act
on items when the cursor is in the first line of an item (the line
with the bullet or number).
@ -1322,11 +1338,11 @@ links to other files, Usenet articles, emails and much more.
Similar to Wiki implementations, Org-mode interprets words spelled in
CamelCase (i.e. mixed case with at least one capital letter following
on a small letter inside the word) as links. While in Wiki
implementations these links usually point to another file, in Org-mode
they point to a target in the current file. Targets are CamelCased
words in double angular brackets, and may be located anywhere, also in
a comment line. For example
on a small letter inside the word) as links. While in Wiki these
links usually point to another file, in Org-mode they point to a
target in the current file. Targets are CamelCased words in double
angular brackets, and may be located anywhere, also in a comment line.
For example
@example
# <<MyTarget>>
@end example
@ -2020,32 +2036,16 @@ Choose date in calendar (only if nothing typed into minibuffer).
@chapter Agenda Views
@cindex agenda views
@ignore
We have already described three commands to filter important
information in an org file into a sparse tree (@pxref{Sparse trees}):
@cindex sparse trees
@itemize @bullet
@item
The TODO tree, (@kbd{C-c C-v}), see @ref{TODO items}.
@item
The occur tree @kbd{C-c /}, see @ref{TODO items}.
@item
Checking upcoming deadlines with @kbd{C-c C-w}, see @ref{Creating
timestamps}.
@end itemize
@noindent
@end ignore
Org-mode can collect and sort selected items into a separate buffer.
The information to be listed is collected from all @emph{agenda
files}, the files listed in the variable @code{org-agenda-files}.
Thus even if you only work with a single Org-mode file, this file must
be put into that list@footnote{When using the dispatcher pressing
@kbd{1} before selecting a command will actually limit the command to
the current file, and ignore @code{org-agenda-files} until the next
dispatcher command.}. You can customize this variable, but the easiest
way to maintain it is through the following commands
Org-mode can select items based of various criteria, and display them
in a separate buffer. The information to be shown is collected from
all @emph{agenda files}, the files listed in the variable
@code{org-agenda-files}. Thus even if you only work with a single
Org-mode file, this file must be put into that list@footnote{When
using the dispatcher pressing @kbd{1} before selecting a command will
actually limit the command to the current file, and ignore
@code{org-agenda-files} until the next dispatcher command.}. You can
customize @code{org-agenda-files}, but the easiest way to maintain it
is through the following commands
@cindex files, adding to agenda list
@table @kbd
@ -2084,11 +2084,21 @@ buffer}. This buffer is read-only, but provides commands to visit the
corresponding locations in the original Org-mode files, and even to
edit these files remotely.
@cindex custom agenda commands
@cindex agenda commands, custom
The views are created through a dispatcher that should be bound to a
global key, for example @kbd{C-c a} (@pxref{Installation and
Activation}). In the following we will assume that @kbd{C-c a} is
indeed how the dispatcher is accessed and list keyboard access to
commands accordingly.
commands accordingly. The dispatcher offers a number of default
commands, for example to create a TODO list or a the calendar-like
agenda. You can also define a number of custom searches for tags and
specific TODO keywords through the variable
@code{org-agenda-custom-commands}.
@kindex C-c a C
These commands will be offered by the dispatcher just like the default
commands. If you press @kbd{C-c a C}, you will get a customization
buffer for this variable.
@menu
* Agenda:: Your weekly planner
@ -2230,7 +2240,7 @@ a prefix argument to this command to change the selected TODO keyword,
for example @kbd{3 r}.
@end table
Remote editing of TDOD items means that you can change the state of a
Remote editing of TODO items means that you can change the state of a
TODO entry with a single key press. The commands available in the
TODO list are described in @ref{Agenda commands}.
@ -2241,15 +2251,15 @@ TODO list are described in @ref{Agenda commands}.
If headlines in the agenda files are marked with @emph{tags}
(@pxref{Tags}), you can select headlines based on the tags that apply
to them and collect them into an ageenda buffer.
to them and collect them into an agenda buffer.
@table @kbd
@kindex C-c a m
@item C-c a m
Produce a list of all headlines that match a given set of tags. The
command prompts for a selection criterion, which is a simple list of
TAGS with positive and negative selection, like
@samp{+WORK+URGENT-WITHBOSS}.
command prompts for a selection criterion, which is a boolean logic
expression with tags, like @samp{+WORK+URGENT-WITHBOSS} or
@samp{WORK|HOME} (@pxref{Tags}).
@kindex C-c a M
@item C-c a M
Like @kbd{C-c a m}, but only select headlines that are also TODO
@ -2396,6 +2406,10 @@ Digit argument.
Change the TODO state of the item, both in the agenda and in the
original org file.
@kindex :
@item :
Set tags for the current headline.
@kindex ,
@item ,
Set the priority for the current item. Org-mode prompts for the
@ -2900,7 +2914,7 @@ After @samp{\}, complete @TeX{} symbols supported by the exporter.
After @samp{*}, complete CamelCase versions of all headlines in the
buffer.
@item
After @samp{:}, complete tags used elswhere in the buffer.
After @samp{:}, complete tags used elsewhere in the buffer.
@item
After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
@samp{OPTIONS} which set file-specific options for Org-mode. When the
@ -2917,11 +2931,11 @@ Elsewhere, complete dictionary words using ispell.
@cindex options, for customization
@cindex variables, for customization
There is a large number of variables which can be used to customize
There are more than 100 variables that can be used to customize
Org-mode. For the sake of compactness of the manual, we are not
describing the variables here. For an overview of customization
variables, use @kbd{M-x org-customize}. Or select @code{Browse Org
Group} from the @code{Org->Customization} menu.
describing the variables here. A structured overview of customization
variables is available with @kbd{M-x org-customize}. Or select
@code{Browse Org Group} from the @code{Org->Customization} menu.
@node FAQ, Interaction, Customization, Miscellaneous
@section Frequently asked questions
@ -3167,59 +3181,63 @@ The exporters work well, but could be made more efficient.
Org-mode was written by Carsten Dominik, who still maintains it at the
Org-mode homepage @uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
The following people have helped the development along with ideas,
suggestions and patches.
The following people (in alphabetic order) have helped the development
along with ideas, suggestions and patches. Many thanks to all of you,
Org-mode would not be what it is without your input.
@itemize @bullet
@item
Pavel Chalmoviansky reported bugs and suggested improvements
related to the agenda treatment of items with specified time.
@item
Sacha Chua, the current maintainer of Planner, suggested to copy
linking code from Planner (I took code for RMAIL and Wanderlust).
@item
Christian Egli converted the documentation into TeXInfo format and
patched basic CSS formatting support into the HTML exporter. He also
inspired the agenda by showing me his plans for a multifile summary.
@item
Kai Grossjohann pointed out that a number of key bindings in Org-mode
conflict with other packages.
@item
Stefan Monnier provided a patch with lots of little fixes to keep the
Emacs-Lisp compiler happy.
@item
Tim O'Callaghan suggested in-file links, search options for
general file links, and TAGS.
@item
Oliver Oppitz made useful suggestions.
@item
Pete Phillips helped the development of the TAGS feature with beta
testing and suggestions.
@item
Matthias Rempe (Oelde) provided ideas, a patch introducing Windows
NT/2000 support, and quality control.
@item
Kevin Rogers contributed code to access VM files on remote hosts.
@item
Juergen Vollmer contributed code generating the table of contents
in HTML output, and other export improvements.
@item
Christian Egli converted the documentation into TeXInfo format and
patched basic CSS formatting support into the HTML exporter. He also
inspired the agenda by showing me his plans for a multifile summary.
@item
Philip Rooke created the Org-mode reference card. He also helped with
beta testing and contributed a number of very useful ideas.
@item
Christian Schlauer proposed angular brackets around links, among other
things.
@item
David Wainberg suggested to implement an archiving mechanism and helped
testing.
@item
Linking to VM/BBDB/GNUS was inspired by Tom Shannon's
@file{organizer-mode.el}.
@item
Juergen Vollmer contributed code generating the table of contents
in HTML output, and other export improvements.
@item
David Wainberg suggested to implement an archiving mechanism and helped
testing.
@item
Scheduling TODO items was inspired by John Wiegley's @file{planner.el}.
@item
Sacha Chua, the current maintainer of Planner, suggested to copy
linking code from Planner (I took code for RMAIL and Wanderlust).
@item
Oliver Oppitz made useful suggestions.
@item
Carsten Wimmer suggested some changes and helped fix a bug in linking
to GNUS.
@item
Pavel Chalmoviansky reported bugs and suggested improvements related
to the agenda treatment of items with specified time.
@item
Stefan Monnier provided a patch with lots of little fixes to keep the
Emacs-Lisp compiler happy.
@item
Kai Grossjohann pointed out that a number of key bindings in Org-mode
conflict with other packages.
@item
Roland Winkler pointed out that additional keybindings are needed to
use Org-mode on a tty.
@item
Tim O'Callaghan suggested in-file links, search options for
general file links, and TAGS.
@c @item
@c Nic Ferrier and Christian Egli implemented XML export.
@end itemize