summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Dominik <dominik@nb-dominik2.science.uva.nl>2008-01-31 11:32:48 +0100
committerCarsten Dominik <dominik@nb-dominik2.science.uva.nl>2008-01-31 11:32:48 +0100
commitd790f20ba961a8aa4dee513cccc29884ce4f3c42 (patch)
tree8a965b4277e9acc475355737c7dee7b4db235bf0
parentfdf165e556950b649951c603cae95d02d58f653f (diff)
Release 4.52release_4.52
-rw-r--r--org268
-rw-r--r--org.el135
-rw-r--r--org.pdfbin606895 -> 611746 bytes
-rw-r--r--org.texi118
-rw-r--r--orgcard.pdfbin58419 -> 60170 bytes
-rw-r--r--orgcard.tex2
-rw-r--r--xemacs/README2
-rw-r--r--xemacs/noutline.el1
8 files changed, 366 insertions, 160 deletions
diff --git a/org b/org
index 7e9fa791b..12ff26f49 100644
--- a/org
+++ b/org
@@ -5,7 +5,7 @@ START-INFO-DIR-ENTRY
* Org Mode: (org). outline-based notes management and organizer
END-INFO-DIR-ENTRY
- This manual is for Org-mode (version 4.51).
+ This manual is for Org-mode (version 4.52).
Copyright (C) 2004, 2005, 2006 Free Software Foundation
@@ -27,7 +27,7 @@ File: org, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
Org Mode Manual
***************
-This manual is for Org-mode (version 4.51).
+This manual is for Org-mode (version 4.52).
Copyright (C) 2004, 2005, 2006 Free Software Foundation
@@ -2610,16 +2610,22 @@ special command for inserting tags:
default this list is constructed dynamically, containing all tags
currently used in the buffer. You may also globally specify a hard list
of tags with the variable `org-tag-alist'. Finally you can set the
-allowed tags for a given file with lines like
+default tags for a given file with lines like
#+TAGS: @WORK @HOME @TENNISCLUB
#+TAGS: Laptop Car PC Sailboat
- The default support method is minibuffer completion. However,
-Org-mode also implements a much better method: _fast tag selection_.
-This method allows to select and deselect tags with a single key per
-tag. To function efficiently, you should assign unique keys to all
-tags. This can be done globally with
+ If you have globally defined your preferred set of tags using the
+variable `org-tag-alist', but would like to use a dynamic tag list in a
+specific file: Just add an empty TAGS option line to that file:
+
+ #+TAGS:
+
+ The default support method for entering tags is minibuffer
+completion. However, Org-mode also implements a much better method:
+_fast tag selection_. This method allows to select and deselect tags
+with a single key per tag. To function efficiently, you should assign
+unique keys to most tags. This can be done globally with
(setq org-tag-alist '(("@WORK" . ?w) ("@HOME" . ?h) ("Laptop" . ?l)))
@@ -2641,21 +2647,35 @@ to activate any changes.
If at least one tag has a selection key, pressing `C-c C-c' will
automatically present you with a special interface, listing inherited
tags, the tags of the current headline, and a list of all legal tags
-with corresponding keys(2). Pressing keys for the tags will add or
-remove them from the list of tags in the current line. Selecting a tag
-in a group of mutually exclusive tags will turn off any other tags from
-that group. <SPC> clears all tags for this line, `RET' accepts the
-modified set, and `C-g' aborts without installing changes. This method
-lets you assign tags to a headline with very few keys. With the above
-setup, you could clear the current tags and set `@HOME', `Laptop' and
-`PC' tags with just the following keys: `C-c C-c <SPC> h l p <RET>'.
-Switching from `@HOME' to `@WORK' would be done with `C-c C-c w <RET>'.
-
- What if you have globally defined your preferred set of tags using
-the variable `org-tag-alist', but would like to use a dynamic tag list
-in a specific file? Just add an empty TAGS option line to that file:
+with corresponding keys(2). In this interface, you can use the
+following keys:
- #+TAGS:
+`a-z...'
+ Pressing keys assigned to tags will add or remove them from the
+ list of tags in the current line. Selecting a tag in a group of
+ mutually exclusive tags will turn off any other tags from that
+ group.
+
+`<TAB>'
+ Enter a tag in the minibuffer, even if the tag is not in the
+ predefined list. You will be able to complete on all tags present
+ in the buffer.
+
+`<SPC>'
+ Clear all tags for this line.
+
+`<RET>'
+ Accept the modified set.
+
+`C-g'
+ Abort without installing changes.
+
+This method lets you assign tags to a headline with very few keys. With
+the above setup, you could clear the current tags and set `@HOME',
+`Laptop' and `PC' tags with just the following keys: `C-c C-c <SPC> h l
+p <RET>'. Switching from `@HOME' to `@WORK' would be done with `C-c
+C-c w <RET>'. Adding the non-predefined tag `Sarah' could be done with
+`C-c C-c <TAB> S a r a h <RET> <RET>'.
---------- Footnotes ----------
@@ -2690,12 +2710,38 @@ information into special lists.
for OR. `&' binds more strongly than `|'. Parenthesis are currently
not implemented. A tag may also be preceded by `-', to select against
it, and `+' is syntactic sugar for positive selection. The AND
-operator `&' is optional when `+' or `-' is present. For example,
-`+WORK-BOSS' would select all headlines that are tagged `:WORK:', but
-discard those also tagged `:BOSS:'. The search string `WORK|LAPTOP'
-selects all lines tagged `:WORK:' or `:LAPTOP:'. The string
-`WORK|LAPTOP&NIGHT' requires that the `:LAPTOP:' lines are also tagged
-`NIGHT'.
+operator `&' is optional when `+' or `-' is present. Examples:
+
+`+WORK-BOSS'
+ Select all headlines that are tagged `:WORK:', but discard those
+ also tagged `:BOSS:'.
+
+`WORK|LAPTOP'
+ Selects lines tagged `:WORK:' or `:LAPTOP:'.
+
+`WORK|LAPTOP&NIGHT'
+ Like the previous example, but require the `:LAPTOP:' lines to be
+ tagged also `NIGHT'.
+
+ If you are using multi-state TODO keywords (*note TODO
+extensions::), it can be useful to also match on the TODO keyword.
+This can be done by adding a condition after a double slash to a tags
+match. The syntax is similar to the tag matches, but should be applied
+with consideration: For example, a positive selection on several TODO
+keywords can not meaningfully be combined with boolean AND. However,
+_negative selection_ combined with AND can be meaningful. Examples:
+
+`WORK//WAITING'
+ Select `:WORK:'-tagged TODO lines with the specific TODO keyword
+ `WAITING'.
+
+`WORK//-WAITING-NEXT'
+ Select `:WORK:'-tagged TODO lines that are neither `WAITING' nor
+ `NEXT'
+
+`WORK//+WAITING|+NEXT'
+ Select `:WORK:'-tagged TODO lines that are either `WAITING' or
+ `NEXT'.

File: org, Node: Agenda views, Next: Embedded LaTeX, Prev: Tags, Up: Top
@@ -2904,6 +2950,8 @@ collected into a single place.
keyword, for example `3 r'. If you often need a search for a
specific keyword, define a custom command for it (*note Agenda
dispatcher::).
+ Matching specific TODO keywords can also be done as part of a tags
+ search (*note Tag searches::).
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
@@ -2942,7 +2990,9 @@ collect them into an agenda buffer.
`C-c a M'
Like `C-c a m', but only select headlines that are also TODO items
and force checking subitems (see variable
- `org-tags-match-list-sublevels').
+ `org-tags-match-list-sublevels'). Matching specific todo keywords
+ together with a tags match is also possible, see *Note Tag
+ searches::.
The commands available in the tags list are described in *Note
Agenda commands::.
@@ -5035,6 +5085,7 @@ Index
* BBDB links: External links. (line 6)
* block agenda: Block agenda. (line 6)
* bold text: Enhancing text. (line 15)
+* Boolean logic, for tag searches: Tag searches. (line 21)
* bug reports: Feedback. (line 6)
* bugs: Bugs. (line 6)
* C-c C-c, overview: The very busy C-c C-c key.
@@ -5289,7 +5340,7 @@ Index
* structure editing: Structure editing. (line 6)
* structure of document: Document structure. (line 6)
* sublevels, inclusion into tags match: Tag inheritance. (line 6)
-* sublevels, inclusion into todo list: Global TODO list. (line 31)
+* sublevels, inclusion into todo list: Global TODO list. (line 33)
* subscript: Subscripts and Superscripts.
(line 6)
* subtree cycling: Visibility cycling. (line 10)
@@ -5342,6 +5393,8 @@ Index
* timestamp: Time stamps. (line 13)
* timestamps, creating: Creating timestamps. (line 6)
* TODO items: TODO items. (line 6)
+* TODO keyword matching: Global TODO list. (line 17)
+* TODO keyword matching, with tags search: Tag searches. (line 38)
* TODO keywords completion: Completion. (line 6)
* TODO list, global: Global TODO list. (line 6)
* TODO types: TODO types. (line 6)
@@ -5389,17 +5442,20 @@ Key Index
(line 28)
* <left>: Agenda commands. (line 91)
* <RET> <1>: Agenda commands. (line 41)
-* <RET> <2>: The date/time prompt.
+* <RET> <2>: Setting tags. (line 76)
+* <RET> <3>: The date/time prompt.
(line 53)
* <RET>: Built-in table editor.
(line 64)
* <right>: Agenda commands. (line 86)
-* <SPC>: Agenda commands. (line 28)
+* <SPC> <1>: Agenda commands. (line 28)
+* <SPC>: Setting tags. (line 73)
* <TAB> <1>: CDLaTeX mode. (line 23)
* <TAB> <2>: Agenda commands. (line 35)
-* <TAB> <3>: Built-in table editor.
+* <TAB> <3>: Setting tags. (line 68)
+* <TAB> <4>: Built-in table editor.
(line 57)
-* <TAB> <4>: Plain lists. (line 37)
+* <TAB> <5>: Plain lists. (line 37)
* <TAB>: Visibility cycling. (line 10)
* > <1>: Agenda commands. (line 154)
* >: The date/time prompt.
@@ -5726,77 +5782,77 @@ Ref: Clocking work time-Footnote-1103930
Node: Tags104056
Node: Tag inheritance104818
Node: Setting tags105755
-Ref: Setting tags-Footnote-1108887
-Ref: Setting tags-Footnote-2108999
-Node: Tag searches109079
-Node: Agenda views110288
-Node: Agenda files112381
-Ref: Agenda files-Footnote-1113341
-Ref: Agenda files-Footnote-2113490
-Node: Agenda dispatcher113683
-Node: Weekly/Daily agenda115300
-Node: Calendar/Diary integration116265
-Node: Global TODO list117603
-Node: Matching headline tags119655
-Node: Timeline120599
-Node: Presentation and sorting121262
-Node: Categories122040
-Node: Time-of-day specifications122704
-Node: Sorting of agenda items124682
-Node: Agenda commands125964
-Node: Custom agenda views131852
-Node: Storing searches132527
-Node: Block agenda134439
-Node: Setting Options135669
-Node: Batch processing138381
-Node: Embedded LaTeX139511
-Ref: Embedded LaTeX-Footnote-1140603
-Node: Math symbols140793
-Node: Subscripts and Superscripts141558
-Node: LaTeX fragments142402
-Ref: LaTeX fragments-Footnote-1144510
-Node: Processing LaTeX fragments144772
-Node: CDLaTeX mode145718
-Ref: CDLaTeX mode-Footnote-1148202
-Node: Exporting148350
-Node: ASCII export149664
-Node: HTML export150954
-Node: XOXO export153790
-Node: iCalendar export154229
-Node: Text interpretation156052
-Node: Comment lines156531
-Node: Enhancing text157002
-Node: Export options158694
-Node: Publishing160361
-Ref: Publishing-Footnote-1161157
-Node: Configuration161353
-Node: Project alist162071
-Node: Sources and destinations163137
-Node: Selecting files163867
-Node: Publishing action164615
-Node: Publishing options165848
-Node: Publishing links168000
-Node: Project page index169513
-Node: Sample configuration170291
-Node: Simple example170783
-Node: Complex example171456
-Node: Triggering publication173532
-Node: Miscellaneous174217
-Node: Completion174851
-Node: Customization176322
-Node: In-buffer settings176907
-Node: The very busy C-c C-c key180328
-Node: Clean view181972
-Node: TTY keys184549
-Node: Interaction186158
-Node: Cooperation186555
-Node: Conflicts188422
-Node: Bugs190014
-Node: Extensions and Hacking191637
-Node: Extensions192123
-Node: Dynamic blocks193693
-Node: History and Acknowledgments195620
-Node: Index200628
-Node: Key Index227059
+Ref: Setting tags-Footnote-1109271
+Ref: Setting tags-Footnote-2109383
+Node: Tag searches109463
+Node: Agenda views111474
+Node: Agenda files113567
+Ref: Agenda files-Footnote-1114527
+Ref: Agenda files-Footnote-2114676
+Node: Agenda dispatcher114869
+Node: Weekly/Daily agenda116486
+Node: Calendar/Diary integration117451
+Node: Global TODO list118789
+Node: Matching headline tags120949
+Node: Timeline122007
+Node: Presentation and sorting122670
+Node: Categories123448
+Node: Time-of-day specifications124112
+Node: Sorting of agenda items126090
+Node: Agenda commands127372
+Node: Custom agenda views133260
+Node: Storing searches133935
+Node: Block agenda135847
+Node: Setting Options137077
+Node: Batch processing139789
+Node: Embedded LaTeX140919
+Ref: Embedded LaTeX-Footnote-1142011
+Node: Math symbols142201
+Node: Subscripts and Superscripts142966
+Node: LaTeX fragments143810
+Ref: LaTeX fragments-Footnote-1145918
+Node: Processing LaTeX fragments146180
+Node: CDLaTeX mode147126
+Ref: CDLaTeX mode-Footnote-1149610
+Node: Exporting149758
+Node: ASCII export151072
+Node: HTML export152362
+Node: XOXO export155198
+Node: iCalendar export155637
+Node: Text interpretation157460
+Node: Comment lines157939
+Node: Enhancing text158410
+Node: Export options160102
+Node: Publishing161769
+Ref: Publishing-Footnote-1162565
+Node: Configuration162761
+Node: Project alist163479
+Node: Sources and destinations164545
+Node: Selecting files165275
+Node: Publishing action166023
+Node: Publishing options167256
+Node: Publishing links169408
+Node: Project page index170921
+Node: Sample configuration171699
+Node: Simple example172191
+Node: Complex example172864
+Node: Triggering publication174940
+Node: Miscellaneous175625
+Node: Completion176259
+Node: Customization177730
+Node: In-buffer settings178315
+Node: The very busy C-c C-c key181736
+Node: Clean view183380
+Node: TTY keys185957
+Node: Interaction187566
+Node: Cooperation187963
+Node: Conflicts189830
+Node: Bugs191422
+Node: Extensions and Hacking193045
+Node: Extensions193531
+Node: Dynamic blocks195101
+Node: History and Acknowledgments197028
+Node: Index202036
+Node: Key Index228686

End Tag Table
diff --git a/org.el b/org.el
index bff450119..d8eaa0ccb 100644
--- a/org.el
+++ b/org.el
@@ -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.51
+;; Version: 4.52
;;
;; This file is part of GNU Emacs.
;;
@@ -61,6 +61,12 @@
;;
;; Recent changes
;; --------------
+;; Version 4.52
+;; - TAG matches can also specify conditions on TODO keywords.
+;; - The fast tag interface allows setting tags that are not in the
+;; predefined list.
+;; - Bug fixes.
+;;
;; Version 4.51
;; - Link abbreviations (manual section 4.5).
;; - More control over how agenda is displayed. See the new variables
@@ -143,7 +149,7 @@
;;; Customization variables
-(defvar org-version "4.51"
+(defvar org-version "4.52"
"The version number of the file org.el.")
(defun org-version ()
(interactive)
@@ -1676,7 +1682,7 @@ other-window Use `switch-to-buffer-other-window' to display agenda.
reorganize-frame Show only two windows on the current frame, the current
window and the agenda. Also, if the option
`org-fit-agenda-window' is set, resize the agenda window to
- try to as much as possible of the buffer content.
+ try to show as much as possible of the buffer content.
See also the variable `org-agenda-restore-windows-after-quit'."
:group 'org-agenda-setup
:type '(choice
@@ -9237,7 +9243,8 @@ MATCH can contain positive and negative selection of tags, like
(org-show-hierarchy-above nil))
(org-scan-tags 'sparse-tree (cdr (org-make-tags-matcher match)))))
-(defun org-make-tags-matcher (match)
+;; FIXME: remove this function.
+(defun org-make-tags-matcher-old (match)
"Create the TAGS matcher form for the tags-selecting string MATCH."
(unless match
;; Get a new match request, with completion
@@ -9266,6 +9273,76 @@ MATCH can contain positive and negative selection of tags, like
;; Return the string and lisp forms of the matcher
(cons match0 matcher)))
+
+(defun org-make-tags-matcher (match)
+ "Create the TAGS//TODO matcher form for the selection string MATCH."
+ (unless match
+ ;; Get a new match request, with completion
+ (setq org-last-tags-completion-table
+ (or org-tag-alist
+ org-last-tags-completion-table))
+ (setq match (completing-read
+ "Match: " 'org-tags-completion-function nil nil nil
+ 'org-tags-history))) ; FIXME: SHould we have a separate history for this?
+
+ ;; Parse the string and create a lisp form
+ (let ((match0 match) minus tag mm
+ tagsmatch todomatch tagsmatcher todomatcher kwd matcher
+ orterms term orlist)
+ (if (string-match "//" match)
+ ;; match contains also a todo-matching request
+ (setq tagsmatch (substring match 0 (match-beginning 0))
+ todomatch (substring match (match-end 0)))
+ ;; only matching tags
+ (setq tagsmatch match todomatch nil))
+
+ ;; Make the tags matcher
+ (if (or (not tagsmatch) (not (string-match "\\S-" tagsmatch)))
+ (setq tagsmatcher t)
+ (setq orterms (org-split-string tagsmatch "|") orlist nil)
+ (while (setq term (pop orterms))
+ (while (string-match "^&?\\([-+:]\\)?\\([A-Za-z_@0-9]+\\)" 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 tagsmatcher))
+ (push (if (> (length tagsmatcher) 1)
+ (cons 'and tagsmatcher)
+ (car tagsmatcher))
+ orlist)
+ (setq tagsmatcher nil))
+ (setq tagsmatcher (if (> (length orlist) 1) (cons 'or orlist) (car orlist))))
+
+ ;; Make the todo matcher ;; FIXME: reduce syntax richness?
+ (if (or (not todomatch) (not (string-match "\\S-" todomatch)))
+ (setq todomatcher t)
+ (setq orterms (org-split-string todomatch "|") orlist nil)
+ (while (setq term (pop orterms))
+ (while (string-match "^&?\\([-+:]\\)?\\([A-Za-z_@0-9]+\\)" term)
+ (setq minus (and (match-end 1)
+ (equal (match-string 1 term) "-"))
+ kwd (match-string 2 term)
+ term (substring term (match-end 0))
+ mm (list 'equal 'todo kwd)
+ mm (if minus (list 'not mm) mm))
+ (push mm todomatcher))
+ (push (if (> (length todomatcher) 1)
+ (cons 'and todomatcher)
+ (car todomatcher))
+ orlist)
+ (setq todomatcher nil))
+ (setq todomatcher (if (> (length orlist) 1)
+ (cons 'or orlist) (car orlist))))
+
+ ;; Return the string and lisp forms of the matcher
+ (setq matcher (if todomatcher
+ (list 'and tagsmatcher todomatcher)
+ tagsmatcher))
+ (cons match0 matcher)))
+
;;;###autoload
(defun org-tags-view (&optional todo-only match)
"Show all headlines for all `org-agenda-files' matching a TAGS criterion.
@@ -9342,8 +9419,9 @@ With prefix ARG, realign all tags in headings in the current buffer."
(if arg
(save-excursion
(goto-char (point-min))
- (while (re-search-forward re nil t)
- (org-set-tags nil t))
+ (let (buffer-invisibility-spec) ; Emacs 21 compatibility
+ (while (re-search-forward re nil t)
+ (org-set-tags nil t)))
(message "All tags realigned to column %d" org-tags-column))
(if just-align
(setq tags current)
@@ -9437,6 +9515,8 @@ Returns the new tags string, or nil to not change the current settings."
(lambda (x)
(if (stringp (car x)) (string-width (car x)) 0))
table)))
+ (buf (current-buffer))
+ (buffer-tags nil)
(fwidth (+ maxlen 3 1 3))
(ncol (/ (- (window-width) 4) fwidth))
(i-face 'org-done)
@@ -9496,8 +9576,8 @@ Returns the new tags string, or nil to not change the current settings."
(setq rtn
(catch 'exit
(while t
- (message "[key]:Toggle SPC: clear current RET accept%s"
- (if groups " [!] ignore goups" ""))
+ (message "[a-z..]:Toggle [SPC] clear [RET] accept [TAB] free tag%s"
+ (if groups " [!] no goups" ""))
(setq c (read-char-exclusive))
(cond
((= c ?\r) (throw 'exit t))
@@ -9509,6 +9589,19 @@ Returns the new tags string, or nil to not change the current settings."
(and (= c ?q) (not (rassoc c ntable))))
(setq quit-flag t))
((= c ?\ ) (setq current nil))
+ ((= c ?\t)
+ (condition-case nil
+ (setq tg (completing-read
+ "Tag: "
+ (or buffer-tags
+ (with-current-buffer buf
+ (org-get-buffer-tags)))))
+ (quit (setq tg "")))
+ (when (string-match "\\S-" tg)
+ (add-to-list 'buffer-tags (list tg))
+ (if (member tg current)
+ (setq current (delete tg current))
+ (push tg current))))
((setq e (rassoc c ntable) tg (car e))
(if (member tg current)
(setq current (delete tg current))
@@ -9517,7 +9610,7 @@ Returns the new tags string, or nil to not change the current settings."
(mapcar (lambda (x)
(setq current (delete x current)))
g)))
- (setq current (cons tg current)))))
+ (push tg current))))
;; Create a sorted list
(setq current
(sort current
@@ -9821,7 +9914,6 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
(t
(browse-url-at-point))))))
-
(defun org-link-expand-abbrev (link)
"Apply replacements as defined in `org-link-abbrev-alist."
(if (string-match "^\\([a-zA-Z]+\\)\\(::\\(.*\\)\\)?$" link)
@@ -13967,6 +14059,11 @@ translations. There is currently no way for users to extend this.")
(while (re-search-forward "^#.*?\\(<<<?[^>\r\n]+>>>?\\).*" nil t)
(replace-match "\\1(INVISIBLE)"))
+ ;; Remove comments
+ (goto-char (point-min))
+ (while (re-search-forward "^#.*\n?" nil t)
+ (replace-match ""))
+
;; Find matches for radio targets and turn them into internal links
(goto-char (point-min))
(when re-radio
@@ -14003,10 +14100,16 @@ translations. There is currently no way for users to extend this.")
(match-string 1) "[[" (match-string 2) ":" (match-string 3) "]]")
t t))
(goto-char (point-min))
- (while (re-search-forward "\\[\\[\\([^]]+\\)\\]" nil t)
- (replace-match (concat "[[" (save-match-data
- (org-link-expand-abbrev (match-string 1)))
- "]")))
+ (while (re-search-forward org-bracket-link-regexp nil t)
+ (replace-match
+ (concat "[[" (save-match-data
+ (org-link-expand-abbrev (match-string 1)))
+ "]"
+ (if (match-end 3)
+ (match-string 2)
+ (concat "[" (match-string 1) "]"))
+ "]")
+ t t))
;; Find multiline emphasis and put them into single line
(when (memq :emph-multiline parameters)
@@ -14015,10 +14118,6 @@ translations. There is currently no way for users to extend this.")
(subst-char-in-region (match-beginning 0) (match-end 0) ?\n ?\ t)
(goto-char (1- (match-end 0)))))
- ;; Remove comments
- (goto-char (point-min))
- (while (re-search-forward "^#.*\n?" nil t)
- (replace-match ""))
(setq rtn (buffer-string)))
(kill-buffer " org-mode-tmp")
rtn))
diff --git a/org.pdf b/org.pdf
index f32ae3ff5..9ae580ba6 100644
--- a/org.pdf
+++ b/org.pdf
Binary files differ
diff --git a/org.texi b/org.texi
index 7f59d3454..6139979cb 100644
--- a/org.texi
+++ b/org.texi
@@ -3,8 +3,8 @@
@setfilename ../info/org
@settitle Org Mode Manual
-@set VERSION 4.51
-@set DATE September 2006
+@set VERSION 4.52
+@set DATE October 2006
@dircategory Emacs
@direntry
@@ -2884,18 +2884,26 @@ Org will support tag insertion based on a @emph{list of tags}. By
default this list is constructed dynamically, containing all tags
currently used in the buffer. You may also globally specify a hard list
of tags with the variable @code{org-tag-alist}. Finally you can set
-the allowed tags for a given file with lines like
+the default tags for a given file with lines like
@example
#+TAGS: @@WORK @@HOME @@TENNISCLUB
#+TAGS: Laptop Car PC Sailboat
@end example
-The default support method is minibuffer completion. However, Org-mode
-also implements a much better method: @emph{fast tag selection}. This
-method allows to select and deselect tags with a single key per tag. To
-function efficiently, you should assign unique keys to all tags. This
-can be done globally with
+If you have globally defined your preferred set of tags using the
+variable @code{org-tag-alist}, but would like to use a dynamic tag list
+in a specific file: Just add an empty TAGS option line to that file:
+
+@example
+#+TAGS:
+@end example
+
+The default support method for entering tags is minibuffer completion.
+However, Org-mode also implements a much better method: @emph{fast tag
+selection}. This method allows to select and deselect tags with a
+single key per tag. To function efficiently, you should assign unique
+keys to most tags. This can be done globally with
@lisp
(setq org-tag-alist '(("@@WORK" . ?w) ("@@HOME" . ?h) ("Laptop" . ?l)))
@@ -2927,26 +2935,36 @@ If at least one tag has a selection key, pressing @kbd{C-c C-c} will
automatically present you with a special interface, listing inherited
tags, the tags of the current headline, and a list of all legal tags
with corresponding keys@footnote{Keys will automatically assigned to
-tags which have no configured keys.}. Pressing keys for the tags will
-add or remove them from the list of tags in the current line. Selecting
-a tag in a group of mutually exclusive tags will turn off any other tags
-from that group. @key{SPC} clears all tags for this line, @kbd{RET}
-accepts the modified set, and @kbd{C-g} aborts without installing
-changes. This method lets you assign tags to a headline with very few
-keys. With the above setup, you could clear the current tags and set
-@samp{@@HOME}, @samp{Laptop} and @samp{PC} tags with just the following
-keys: @kbd{C-c C-c @key{SPC} h l p @key{RET}}. Switching from
-@samp{@@HOME} to @samp{@@WORK} would be done with @kbd{C-c C-c w
-@key{RET}}.
-
-What if you have globally defined your preferred set of tags using the
-variable @code{org-tag-alist}, but would like to use a dynamic tag list
-in a specific file? Just add an empty TAGS option line to that file:
+tags which have no configured keys.}. In this interface, you can use
+the following keys:
-@example
-#+TAGS:
-@end example
+@table @kbd
+@item a-z...
+Pressing keys assigned to tags will add or remove them from the list of
+tags in the current line. Selecting a tag in a group of mutually
+exclusive tags will turn off any other tags from that group.
+@kindex @key{TAB}
+@item @key{TAB}
+Enter a tag in the minibuffer, even if the tag is not in the predefined
+list. You will be able to complete on all tags present in the buffer.
+@kindex @key{SPC}
+@item @key{SPC}
+Clear all tags for this line.
+@kindex @key{RET}
+@item @key{RET}
+Accept the modified set.
+@item C-g
+Abort without installing changes.
+@end table
+@noindent
+This method lets you assign tags to a headline with very few keys. With
+the above setup, you could clear the current tags and set @samp{@@HOME},
+@samp{Laptop} and @samp{PC} tags with just the following keys: @kbd{C-c
+C-c @key{SPC} h l p @key{RET}}. Switching from @samp{@@HOME} to
+@samp{@@WORK} would be done with @kbd{C-c C-c w @key{RET}}. Adding the
+non-predefined tag @samp{Sarah} could be done with @kbd{C-c C-c
+@key{TAB} S a r a h @key{RET} @key{RET}}.
@node Tag searches, , Setting tags, Tags
@@ -2972,17 +2990,45 @@ only TODO items and force checking subitems (see variable
@code{org-tags-match-list-sublevels}).
@end table
+@cindex Boolean logic, for tag searches
A @i{tags} search string can use Boolean operators @samp{&} for AND and
@samp{|} for OR. @samp{&} binds more strongly than @samp{|}.
Parenthesis are currently not 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}.
+or @samp{-} is present. Examples:
+
+@table @samp
+@item +WORK-BOSS
+Select all headlines that are tagged @samp{:WORK:}, but discard those also tagged
+@samp{:BOSS:}.
+@item WORK|LAPTOP
+Selects lines tagged @samp{:WORK:} or @samp{:LAPTOP:}.
+@item WORK|LAPTOP&NIGHT
+Like the previous example, but require the @samp{:LAPTOP:} lines to be
+tagged also @samp{NIGHT}.
+@end table
+
+@cindex TODO keyword matching, with tags search
+If you are using multi-state TODO keywords (@pxref{TODO extensions}), it
+can be useful to also match on the TODO keyword. This can be done by
+adding a condition after a double slash to a tags match. The syntax is
+similar to the tag matches, but should be applied with consideration:
+For example, a positive selection on several TODO keywords can not
+meaningfully be combined with boolean AND. However, @emph{negative
+selection} combined with AND can be meaningful. Examples:
+
+@table @samp
+@item WORK//WAITING
+Select @samp{:WORK:}-tagged TODO lines with the specific TODO
+keyword @samp{WAITING}.
+@item WORK//-WAITING-NEXT
+Select @samp{:WORK:}-tagged TODO lines that are neither @samp{WAITING}
+nor @samp{NEXT}
+@item WORK//+WAITING|+NEXT
+Select @samp{:WORK:}-tagged TODO lines that are either @samp{WAITING} or
+@samp{NEXT}.
+@end table
@node Agenda views, Embedded LaTeX, Tags, Top
@chapter Agenda Views
@@ -3188,6 +3234,7 @@ agenda files (@pxref{Agenda views}) into a single buffer. The buffer is in
the TODO entries directly from that buffer (@pxref{Agenda commands}).
@kindex C-c a T
@item C-c a T
+@cindex TODO keyword matching
Like the above, but allows selection of a specific TODO keyword. You can
also do this by specifying a prefix argument to @kbd{C-c a t}. With a
@kbd{C-u} prefix you are prompted for a keyword. With a numeric
@@ -3196,7 +3243,9 @@ prefix, the Nth keyword in @code{org-todo-keywords} is selected.
The @kbd{r} key in the agenda buffer regenerates it, and you can give
a prefix argument to this command to change the selected TODO keyword,
for example @kbd{3 r}. If you often need a search for a specific
-keyword, define a custom command for it (@pxref{Agenda dispatcher}).
+keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
+Matching specific TODO keywords can also be done as part of a tags
+search (@pxref{Tag searches}).
@end table
Remote editing of TODO items means that you can change the state of a
@@ -3241,7 +3290,8 @@ define a custom command for it (@pxref{Agenda dispatcher}).
@item C-c a M
Like @kbd{C-c a m}, but only select headlines that are also TODO items
and force checking subitems (see variable
-@code{org-tags-match-list-sublevels}).
+@code{org-tags-match-list-sublevels}). Matching specific todo keywords
+together with a tags match is also possible, see @ref{Tag searches}.
@end table
The commands available in the tags list are described in @ref{Agenda
diff --git a/orgcard.pdf b/orgcard.pdf
index 9c41a27fd..f9b72fbb2 100644
--- a/orgcard.pdf
+++ b/orgcard.pdf
Binary files differ
diff --git a/orgcard.tex b/orgcard.tex
index f72d6553c..013ec8dc5 100644
--- a/orgcard.tex
+++ b/orgcard.tex
@@ -1,5 +1,5 @@
% Reference Card for Org Mode
-\def\orgversionnumber{4.51}
+\def\orgversionnumber{4.52}
\def\year{2006}
%
%**start of header
diff --git a/xemacs/README b/xemacs/README
index e2992bb26..00c332c77 100644
--- a/xemacs/README
+++ b/xemacs/README
@@ -1,5 +1,5 @@
This directory contains files that are necessary or at least useful
-companions for Org-mode:
+companions for Org-mode under XEmacs:
noutline.el
diff --git a/xemacs/noutline.el b/xemacs/noutline.el
index 2e11ee505..609af07c2 100644
--- a/xemacs/noutline.el
+++ b/xemacs/noutline.el
@@ -44,6 +44,7 @@
;;; Code:
+(require 'xemacs)
(require 'easymenu)
;; XEmacs and compatibility