Release 4.27

This commit is contained in:
Carsten Dominik 2008-01-31 11:31:19 +01:00
parent 4007298466
commit 5f473f46df
6 changed files with 656 additions and 318 deletions

291
org
View File

@ -5,7 +5,7 @@ START-INFO-DIR-ENTRY
* Org Mode: (org). outline-based notes management and organizer * Org Mode: (org). outline-based notes management and organizer
END-INFO-DIR-ENTRY END-INFO-DIR-ENTRY
This manual is for Org-mode (version 4.26). This manual is for Org-mode (version 4.27).
Copyright (C) 2004, 2005, 2006 Free Software Foundation 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 Org Mode Manual
*************** ***************
This manual is for Org-mode (version 4.26). This manual is for Org-mode (version 4.27).
Copyright (C) 2004, 2005, 2006 Free Software Foundation Copyright (C) 2004, 2005, 2006 Free Software Foundation
@ -66,7 +66,7 @@ Introduction
* Installation and activation:: How to install Org-mode * Installation and activation:: How to install Org-mode
* Feedback:: Bug reports, ideas, patches etc. * Feedback:: Bug reports, ideas, patches etc.
Document structure Document Structure
* Outlines:: Org-mode is based on outline-mode * Outlines:: Org-mode is based on outline-mode
* Headlines:: How to typeset org-tree headlines * Headlines:: How to typeset org-tree headlines
@ -100,7 +100,8 @@ Hyperlinks
* Internal links:: Links to other places in the current file * Internal links:: Links to other places in the current file
* External links:: URL-like links to the world * External links:: URL-like links to the world
* Handling links:: Creating, inserting and following * Handling links:: Creating, inserting and following
* Search Options:: Linking to a specific location * Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
* Remember:: Org-trees store quick notes * Remember:: Org-trees store quick notes
Internal links Internal links
@ -132,7 +133,7 @@ Tags
* Setting tags:: How to assign tags to a headline * Setting tags:: How to assign tags to a headline
* Tag searches:: Searching for combinations of tags * Tag searches:: Searching for combinations of tags
Agenda views Agenda Views
* Agenda files:: Files being searched for agenda information * Agenda files:: Files being searched for agenda information
* Agenda dispatcher:: Keyboard access to agenda views * Agenda dispatcher:: Keyboard access to agenda views
@ -1230,7 +1231,8 @@ links to other files, Usenet articles, emails and much more.
* Internal links:: Links to other places in the current file * Internal links:: Links to other places in the current file
* External links:: URL-like links to the world * External links:: URL-like links to the world
* Handling links:: Creating, inserting and following * Handling links:: Creating, inserting and following
* Search Options:: Linking to a specific location * Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
* Remember:: Org-trees store quick notes * Remember:: Org-trees store quick notes
 
@ -1377,7 +1379,7 @@ them as links. If spaces must be part of the link (for example in
link, enclose them in angular brackets. link, enclose them in angular brackets.
 
File: org, Node: Handling links, Next: Search Options, Prev: External links, Up: Hyperlinks File: org, Node: Handling links, Next: Search options, Prev: External links, Up: Hyperlinks
4.4 Handling links 4.4 Handling links
================== ==================
@ -1395,10 +1397,14 @@ insert it into an org-mode file, and to follow the link.
the link will indicate to the current article/entry. For W3 and the link will indicate to the current article/entry. For W3 and
W3M buffers, the link goes to the current URL. For any other W3M buffers, the link goes to the current URL. For any other
files, the link will point to the file, with a search string files, the link will point to the file, with a search string
(*note Search Options::) pointing to the contents of the current (*note Search options::) pointing to the contents of the current
line. If there is an active region, the selected words will form line. If there is an active region, the selected words will form
the basis of the search string. The key binding `C-c l' is only a the basis of the search string. If the automatically created link
suggestion - see *Note Installation and activation::. is not working correctly or accurately enough, you can write
custom functions to select the search string and to do the search
for particular file types - see *Note Custom searches::. The key
binding `C-c l' is only a suggestion - see *Note Installation and
activation::.
`C-c C-l' `C-c C-l'
Insert a link. This prompts for a link to be inserted into the Insert a link. This prompts for a link to be inserted into the
@ -1460,22 +1466,27 @@ insert it into an org-mode file, and to follow the link.
previously recorded positions. previously recorded positions.
 
File: org, Node: Search Options, Next: Remember, Prev: Handling links, Up: Hyperlinks File: org, Node: Search options, Next: Custom searches, Prev: Handling links, Up: Hyperlinks
4.5 Search options in file links 4.5 Search options in file links
================================ ================================
File links can contain additional information to make Emacs jump to a File links can contain additional information to make Emacs jump to a
particular location in the file when following a link. This can be a particular location in the file when following a link. This can be a
line number or a search option after a double(1) colon. For example: line number or a search option after a double(1) colon. For example,
when the command `C-c l' creates a link (*note Handling links::) to a
file, it encodes the words in the current line as a search string that
can be used to find this line back later when following the link with
`C-c C-o'.
Here is the syntax of the different ways to attach a search to a file
link, together with an explanation:
[[file:~/code/main.c::255]] [[file:~/code/main.c::255]]
[[file:~/xx.org::My Target]] [[file:~/xx.org::My Target]]
[[file:~/xx.org::*My Target]] [[file:~/xx.org::*My Target]]
[[file:~/xx.org::/regexp/]] [[file:~/xx.org::/regexp/]]
Here is what these options do.
`255' `255'
Jump to line 255. Jump to line 255.
@ -1505,9 +1516,31 @@ search for `find me' in the current file, just like `[[find me]]' would.
single colon. single colon.
 
File: org, Node: Remember, Prev: Search Options, Up: Hyperlinks File: org, Node: Custom searches, Next: Remember, Prev: Search options, Up: Hyperlinks
4.6 Remember 4.6 Custom Searches
===================
The default mechanism for creating search strings and for doing the
actual search related to a file link may not work correctly in all
cases. For example, BibTeX database files have many entries like
`year="1993"' which would not result in good search strings, because
the only unique identification for a BibTeX entry is the citation key.
If you come across such a problem, you can write custom functions to
set the right search string for a particular file type, and to do the
search for the string in the file. Using `add-hook', these functions
need to be added to the hook variables
`org-create-file-search-functions' and
`org-execute-file-search-functions'. See the docstring for these
variables for more information. Org-mode actually uses this mechanism
for BibTeX database files, and you can use the corresponding code as an
implementation example. Search for `BibTeX links' in the source file.

File: org, Node: Remember, Prev: Custom searches, Up: Hyperlinks
4.7 Remember
============ ============
Another way to create org entries with links to other files is through Another way to create org entries with links to other files is through
@ -3578,8 +3611,8 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* completion, of CamelCase links <1>: Completion. (line 6) * completion, of CamelCase links <1>: Completion. (line 6)
* completion, of CamelCase links: CamelCase links. (line 6) * completion, of CamelCase links: CamelCase links. (line 6)
* completion, of dictionary words: Completion. (line 6) * completion, of dictionary words: Completion. (line 6)
* completion, of file names: Handling links. (line 36) * completion, of file names: Handling links. (line 40)
* completion, of links: Handling links. (line 24) * completion, of links: Handling links. (line 28)
* completion, of option keywords <1>: Completion. (line 6) * completion, of option keywords <1>: Completion. (line 6)
* completion, of option keywords: Export options. (line 6) * completion, of option keywords: Export options. (line 6)
* Completion, of option keywords: Per file keywords. (line 17) * Completion, of option keywords: Per file keywords. (line 17)
@ -3596,6 +3629,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* creating timestamps: Creating timestamps. (line 6) * creating timestamps: Creating timestamps. (line 6)
* CUA.el: Interaction. (line 40) * CUA.el: Interaction. (line 40)
* custom agenda commands: Agenda dispatcher. (line 6) * custom agenda commands: Agenda dispatcher. (line 6)
* custom search strings: Custom searches. (line 6)
* customization: Customization. (line 6) * customization: Customization. (line 6)
* cutting, of subtrees: Structure editing. (line 6) * cutting, of subtrees: Structure editing. (line 6)
* cycling, of TODO states: TODO basics. (line 13) * cycling, of TODO states: TODO basics. (line 13)
@ -3627,15 +3661,15 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* FAQ: FAQ. (line 6) * FAQ: FAQ. (line 6)
* feedback: Feedback. (line 6) * feedback: Feedback. (line 6)
* file links: External links. (line 6) * file links: External links. (line 6)
* file links, searching: Search Options. (line 6) * file links, searching: Search options. (line 6)
* file name completion: Handling links. (line 36) * file name completion: Handling links. (line 40)
* files, adding to agenda list: Agenda files. (line 12) * files, adding to agenda list: Agenda files. (line 12)
* filing subtrees: Archiving. (line 6) * filing subtrees: Archiving. (line 6)
* fixed width: Enhancing text. (line 30) * fixed width: Enhancing text. (line 30)
* fixed-width sections: Export options. (line 25) * fixed-width sections: Export options. (line 25)
* folded, subtree visibility state: Visibility cycling. (line 10) * folded, subtree visibility state: Visibility cycling. (line 10)
* folding, sparse trees: Sparse trees. (line 6) * folding, sparse trees: Sparse trees. (line 6)
* following links: Handling links. (line 51) * following links: Handling links. (line 55)
* format specifier: Formula syntax. (line 34) * format specifier: Formula syntax. (line 34)
* format, of links: Link format. (line 6) * format, of links: Link format. (line 6)
* formula editing: Editing/debugging formulas. * formula editing: Editing/debugging formulas.
@ -3669,7 +3703,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* indentation, of tables: FAQ. (line 113) * indentation, of tables: FAQ. (line 113)
* indirect buffers: FAQ. (line 65) * indirect buffers: FAQ. (line 65)
* inheritance, of tags: Tag inheritance. (line 6) * inheritance, of tags: Tag inheritance. (line 6)
* inserting links: Handling links. (line 24) * inserting links: Handling links. (line 28)
* installation: Installation and activation. * installation: Installation and activation.
(line 6) (line 6)
* internal links: Internal links. (line 6) * internal links: Internal links. (line 6)
@ -3681,18 +3715,18 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* keymapp nil error: FAQ. (line 6) * keymapp nil error: FAQ. (line 6)
* keyword options: Per file keywords. (line 6) * keyword options: Per file keywords. (line 6)
* linebreak preservation: Export options. (line 25) * linebreak preservation: Export options. (line 25)
* link completion: Handling links. (line 24) * link completion: Handling links. (line 28)
* link format: Link format. (line 6) * link format: Link format. (line 6)
* links, external: External links. (line 6) * links, external: External links. (line 6)
* links, internal: Internal links. (line 6) * links, internal: Internal links. (line 6)
* links, returning to: Handling links. (line 77) * links, returning to: Handling links. (line 81)
* lists, hand-formatted: Enhancing text. (line 11) * lists, hand-formatted: Enhancing text. (line 11)
* lists, ordered: Plain lists. (line 6) * lists, ordered: Plain lists. (line 6)
* lists, plain: Plain lists. (line 6) * lists, plain: Plain lists. (line 6)
* logging, of progress: Progress logging. (line 6) * logging, of progress: Progress logging. (line 6)
* maintainer: Feedback. (line 6) * maintainer: Feedback. (line 6)
* make-indirect-buffer: FAQ. (line 65) * make-indirect-buffer: FAQ. (line 65)
* mark ring: Handling links. (line 73) * mark ring: Handling links. (line 77)
* marking characters, tables: Advanced features. (line 34) * marking characters, tables: Advanced features. (line 34)
* matching, of tags: Matching headline tags. * matching, of tags: Matching headline tags.
(line 6) (line 6)
@ -3745,7 +3779,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* RMAIL links: External links. (line 6) * RMAIL links: External links. (line 6)
* SCHEDULED keyword: Time stamps. (line 30) * SCHEDULED keyword: Time stamps. (line 30)
* scheduling: Time stamps. (line 6) * scheduling: Time stamps. (line 6)
* search option in file links: Search Options. (line 6) * search option in file links: Search options. (line 6)
* section-numbers: Export options. (line 25) * section-numbers: Export options. (line 25)
* setting tags: Setting tags. (line 6) * setting tags: Setting tags. (line 6)
* SHELL links: External links. (line 6) * SHELL links: External links. (line 6)
@ -3861,8 +3895,8 @@ File: org, Node: Key Index, Prev: Index, Up: Top
* C-,: Agenda files. (line 18) * C-,: Agenda files. (line 18)
* C-c !: Creating timestamps. (line 21) * C-c !: Creating timestamps. (line 21)
* C-c $: Archiving. (line 9) * C-c $: Archiving. (line 9)
* C-c %: Handling links. (line 73) * C-c %: Handling links. (line 77)
* C-c &: Handling links. (line 77) * C-c &: Handling links. (line 81)
* C-c ' <1>: Editing/debugging formulas. * C-c ' <1>: Editing/debugging formulas.
(line 20) (line 20)
* C-c ': Built-in table editor. * C-c ': Built-in table editor.
@ -3920,10 +3954,10 @@ File: org, Node: Key Index, Prev: Index, Up: Top
* C-c C-d: Creating timestamps. (line 37) * C-c C-d: Creating timestamps. (line 37)
* C-c C-f: Motion. (line 12) * C-c C-f: Motion. (line 12)
* C-c C-j: Motion. (line 21) * C-c C-j: Motion. (line 21)
* C-c C-l: Handling links. (line 24) * C-c C-l: Handling links. (line 28)
* C-c C-n: Motion. (line 8) * C-c C-n: Motion. (line 8)
* C-c C-o <1>: Creating timestamps. (line 33) * C-c C-o <1>: Creating timestamps. (line 33)
* C-c C-o: Handling links. (line 51) * C-c C-o: Handling links. (line 55)
* C-c C-p: Motion. (line 9) * C-c C-p: Motion. (line 9)
* C-c C-q <1>: Editing/debugging formulas. * C-c C-q <1>: Editing/debugging formulas.
(line 20) (line 20)
@ -3963,7 +3997,7 @@ File: org, Node: Key Index, Prev: Index, Up: Top
* C-u C-c .: Creating timestamps. (line 16) * C-u C-c .: Creating timestamps. (line 16)
* C-u C-c =: Built-in table editor. * C-u C-c =: Built-in table editor.
(line 139) (line 139)
* C-u C-c C-l: Handling links. (line 36) * C-u C-c C-l: Handling links. (line 40)
* D: Agenda commands. (line 66) * D: Agenda commands. (line 66)
* d: Agenda commands. (line 63) * d: Agenda commands. (line 63)
* f: Agenda commands. (line 44) * f: Agenda commands. (line 44)
@ -4009,11 +4043,11 @@ File: org, Node: Key Index, Prev: Index, Up: Top
* M-S-<up>: Structure editing. (line 30) * M-S-<up>: Structure editing. (line 30)
* mouse-1 <1>: Agenda commands. (line 35) * mouse-1 <1>: Agenda commands. (line 35)
* mouse-1 <2>: Creating timestamps. (line 79) * mouse-1 <2>: Creating timestamps. (line 79)
* mouse-1: Handling links. (line 65) * mouse-1: Handling links. (line 69)
* mouse-2 <1>: Agenda commands. (line 35) * mouse-2 <1>: Agenda commands. (line 35)
* mouse-2: Handling links. (line 65) * mouse-2: Handling links. (line 69)
* mouse-3 <1>: Agenda commands. (line 28) * mouse-3 <1>: Agenda commands. (line 28)
* mouse-3: Handling links. (line 70) * mouse-3: Handling links. (line 74)
* n: Agenda commands. (line 19) * n: Agenda commands. (line 19)
* o: Agenda commands. (line 57) * o: Agenda commands. (line 57)
* P: Agenda commands. (line 115) * P: Agenda commands. (line 115)
@ -4046,99 +4080,100 @@ File: org, Node: Key Index, Prev: Index, Up: Top
 
Tag Table: Tag Table:
Node: Top959 Node: Top959
Node: Introduction7444 Node: Introduction7514
Node: Summary7758 Node: Summary7828
Node: Installation and activation9866 Node: Installation and activation9936
Node: Feedback11535 Node: Feedback11605
Node: Document structure12321 Node: Document structure12391
Node: Outlines13087 Node: Outlines13157
Node: Headlines13747 Node: Headlines13817
Node: Visibility cycling14370 Node: Visibility cycling14440
Node: Motion15566 Node: Motion15636
Node: Structure editing16350 Node: Structure editing16420
Node: Archiving18459 Node: Archiving18529
Node: Sparse trees19319 Node: Sparse trees19389
Ref: Sparse trees-Footnote-121348 Ref: Sparse trees-Footnote-121418
Ref: Sparse trees-Footnote-221440 Ref: Sparse trees-Footnote-221510
Node: Plain lists21555 Node: Plain lists21625
Ref: Plain lists-Footnote-124849 Ref: Plain lists-Footnote-124919
Node: Tables25206 Node: Tables25276
Node: Built-in table editor25754 Node: Built-in table editor25824
Node: Narrow columns33367 Node: Narrow columns33437
Ref: Narrow columns-Footnote-135306 Ref: Narrow columns-Footnote-135376
Node: Table calculations35352 Node: Table calculations35422
Node: Formula syntax36528 Node: Formula syntax36598
Ref: Formula syntax-Footnote-139457 Ref: Formula syntax-Footnote-139527
Node: Column formulas39756 Node: Column formulas39826
Node: Advanced features41518 Node: Advanced features41588
Node: Named-field formulas44773 Node: Named-field formulas44843
Node: Editing/debugging formulas45413 Node: Editing/debugging formulas45483
Node: Appetizer47171 Node: Appetizer47241
Node: orgtbl-mode48273 Node: orgtbl-mode48343
Node: table.el48764 Node: table.el48834
Node: Hyperlinks49741 Node: Hyperlinks49811
Node: Link format50375 Node: Link format50515
Node: Internal links51672 Node: Internal links51812
Node: Radio targets53622 Node: Radio targets53762
Node: CamelCase links54337 Node: CamelCase links54477
Node: External links54835 Node: External links54975
Node: Handling links56760 Node: Handling links56900
Node: Search Options60853 Node: Search options61232
Ref: Search Options-Footnote-162323 Ref: Search options-Footnote-163008
Node: Remember62404 Node: Custom searches63089
Ref: Remember-Footnote-166270 Node: Remember64137
Node: TODO items66394 Ref: Remember-Footnote-168004
Node: TODO basics67317 Node: TODO items68128
Node: Progress logging68658 Node: TODO basics69051
Node: TODO extensions69444 Node: Progress logging70392
Node: Workflow states70244 Node: TODO extensions71178
Node: TODO types71112 Node: Workflow states71978
Ref: TODO types-Footnote-172770 Node: TODO types72846
Node: Per file keywords72852 Ref: TODO types-Footnote-174504
Ref: Per file keywords-Footnote-174305 Node: Per file keywords74586
Node: Priorities74533 Ref: Per file keywords-Footnote-176039
Node: Timestamps75742 Node: Priorities76267
Node: Time stamps76063 Node: Timestamps77476
Node: Creating timestamps78491 Node: Time stamps77797
Node: Tags81620 Node: Creating timestamps80225
Node: Tag inheritance82355 Node: Tags83354
Node: Setting tags83292 Node: Tag inheritance84089
Node: Tag searches84254 Node: Setting tags85026
Node: Agenda views85463 Node: Tag searches85988
Node: Agenda files87002 Node: Agenda views87197
Ref: Agenda files-Footnote-187962 Node: Agenda files88736
Ref: Agenda files-Footnote-288111 Ref: Agenda files-Footnote-189696
Node: Agenda dispatcher88303 Ref: Agenda files-Footnote-289845
Node: Weekly/Daily agenda90433 Node: Agenda dispatcher90037
Node: Categories91568 Node: Weekly/Daily agenda92167
Node: Time-of-day specifications92216 Node: Categories93302
Node: Calendar/Diary integration94192 Node: Time-of-day specifications93950
Node: Sorting of agenda items95569 Node: Calendar/Diary integration95926
Node: Global TODO list96401 Node: Sorting of agenda items97303
Node: Matching headline tags97816 Node: Global TODO list98135
Node: Timeline98759 Node: Matching headline tags99550
Node: Agenda commands99632 Node: Timeline100493
Node: Exporting104888 Node: Agenda commands101366
Node: ASCII export106018 Node: Exporting106622
Node: HTML export106840 Node: ASCII export107752
Node: XML export108588 Node: HTML export108574
Node: iCalendar export108955 Node: XML export110322
Node: Text interpretation110777 Node: iCalendar export110689
Node: Comment lines111254 Node: Text interpretation112511
Node: Enhancing text111723 Node: Comment lines112988
Node: Export options113554 Node: Enhancing text113457
Node: Miscellaneous115156 Node: Export options115288
Node: Completion115914 Node: Miscellaneous116890
Node: Customization116910 Node: Completion117648
Node: Summary of in-buffer settings117517 Node: Customization118644
Node: The very busy C-c C-c key120278 Node: Summary of in-buffer settings119251
Node: Clean view121683 Node: The very busy C-c C-c key122012
Node: TTY keys124260 Node: Clean view123417
Node: FAQ125861 Node: TTY keys125994
Node: Interaction132763 Node: FAQ127595
Node: Bugs135630 Node: Interaction134497
Node: Acknowledgments137584 Node: Bugs137364
Node: Index140679 Node: Acknowledgments139318
Node: Key Index161903 Node: Index142413
Node: Key Index163710
 
End Tag Table End Tag Table

467
org.el
View File

@ -5,7 +5,7 @@
;; Author: Carsten Dominik <dominik at science dot uva dot nl> ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar, wp ;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
;; Version: 4.26 ;; Version: 4.27
;; ;;
;; This file is part of GNU Emacs. ;; This file is part of GNU Emacs.
;; ;;
@ -81,6 +81,15 @@
;; ;;
;; Changes since version 4.10: ;; Changes since version 4.10:
;; --------------------------- ;; ---------------------------
;; Version 4.27
;; - HTML exporter generalized to receive external options.
;; As part of the process, author, email and date have been moved to the
;; end of the HTML file.
;; - Support for customizable file search in file links.
;; - BibTeX database links as first application of the above.
;; - New option `org-agenda-todo-list-sublevels' to turn off listing TODO
;; entries that are sublevels of another TODO entry.
;;
;; Version 4.26 ;; Version 4.26
;; - Bug fixes. ;; - Bug fixes.
;; ;;
@ -137,7 +146,7 @@
;;; Customization variables ;;; Customization variables
(defvar org-version "4.26" (defvar org-version "4.27"
"The version number of the file org.el.") "The version number of the file org.el.")
(defun org-version () (defun org-version ()
(interactive) (interactive)
@ -946,6 +955,7 @@ See `org-file-apps'.")
("ltx" . emacs) ("ltx" . emacs)
("org" . emacs) ("org" . emacs)
("el" . emacs) ("el" . emacs)
("bib" . emacs)
) )
"External applications for opening `file:path' items in a document. "External applications for opening `file:path' items in a document.
Org-mode uses system defaults for different file types, but Org-mode uses system defaults for different file types, but
@ -1252,6 +1262,16 @@ match What to search for:
(const :tag "Occur tree in current buffer" occur-tree)) (const :tag "Occur tree in current buffer" occur-tree))
(string :tag "Match")))) (string :tag "Match"))))
;; Fixme: Need a way to toggle this variable, maybe a mode in the
;; agenda buffer?
(defcustom org-agenda-todo-list-sublevels t
"Non-nil means, check also the sublevels of a TODO entry for TODO entries.
When nil, the sublevels of a TODO entry are not checked, resulting in
potentially much shorter TODO lists."
:group 'org-agenda
:group 'org-todo
:type 'boolean)
(defcustom org-agenda-include-all-todo t (defcustom org-agenda-include-all-todo t
"Non-nil means, the agenda will always contain all TODO entries. "Non-nil means, the agenda will always contain all TODO entries.
When nil, date-less entries will only be shown if `org-agenda' is called When nil, date-less entries will only be shown if `org-agenda' is called
@ -1520,6 +1540,13 @@ When this is the symbol `prefix', only remove tags when
:tag "Org Export General" :tag "Org Export General"
:group 'org-export) :group 'org-export)
(defcustom org-export-publishing-directory "."
"Path to the location where exported files should be located.
This path may be relative to the directory where the Org-mode file lives.
The default is to put them into the same directory as the Org-mode file."
:group 'org-export-general
:type 'directory)
(defcustom org-export-language-setup (defcustom org-export-language-setup
'(("en" "Author" "Date" "Table of Contents") '(("en" "Author" "Date" "Table of Contents")
("da" "Ophavsmand" "Dato" "Indhold") ("da" "Ophavsmand" "Dato" "Indhold")
@ -2223,7 +2250,6 @@ This face is only used if `org-fontify-done-headline' is set."
(setq int 'type (setq int 'type
kwds (append kwds (org-split-string value splitre)))) kwds (append kwds (org-split-string value splitre))))
((equal key "STARTUP") ((equal key "STARTUP")
(debug)
(let ((opts (org-split-string value splitre)) (let ((opts (org-split-string value splitre))
(set '(("fold" org-startup-folded t) (set '(("fold" org-startup-folded t)
("overview" org-startup-folded t) ("overview" org-startup-folded t)
@ -2299,14 +2325,9 @@ This face is only used if `org-fontify-done-headline' is set."
(defvar mark-active) ; Emacs only, not available in XEmacs. (defvar mark-active) ; Emacs only, not available in XEmacs.
(defvar timecnt) ; dynamically scoped parameter (defvar timecnt) ; dynamically scoped parameter
(defvar levels-open) ; dynamically scoped parameter (defvar levels-open) ; dynamically scoped parameter
(defvar title) ; dynamically scoped parameter
(defvar author) ; dynamically scoped parameter
(defvar email) ; dynamically scoped parameter
(defvar text) ; dynamically scoped parameter
(defvar entry) ; dynamically scoped parameter (defvar entry) ; dynamically scoped parameter
(defvar date) ; dynamically scoped parameter (defvar date) ; dynamically scoped parameter
(defvar language) ; dynamically scoped parameter (defvar description) ; dynamically scoped parameter
(defvar options) ; dynamically scoped parameter
(defvar ans1) ; dynamically scoped parameter (defvar ans1) ; dynamically scoped parameter
(defvar ans2) ; dynamically scoped parameter (defvar ans2) ; dynamically scoped parameter
(defvar starting-day) ; local variable (defvar starting-day) ; local variable
@ -5996,7 +6017,9 @@ the documentation of `org-diary'."
'org-marker marker 'org-hd-marker marker 'org-marker marker 'org-hd-marker marker
'priority priority 'category category) 'priority priority 'category category)
(push txt ee) (push txt ee)
(goto-char (match-end 1))) (if org-agenda-todo-list-sublevels
(goto-char (match-end 1))
(org-end-of-subtree 'invisible)))
(nreverse ee))) (nreverse ee)))
(defconst org-agenda-no-heading-message (defconst org-agenda-no-heading-message
@ -7232,6 +7255,50 @@ With prefix ARG, realign all tags in headings in the current buffer."
;;; Link Stuff ;;; Link Stuff
(defvar org-create-file-search-functions nil
"List of functions to construct the right search string for a file link.
These functions are called in turn with point at the location to
which the link should point.
A function in the hook should first test if it would like to
handle this file type, for example by checking the major-mode or
the file extension. If it decides not to handle this file, it
should just return nil to give other functions a chance. If it
does handle the file, it must return the search string to be used
when following the link. The search string will be part of the
file link, given after a double colon, and `org-open-at-point'
will automatically search for it. If special measures must be
taken to make the search successful, another function should be
added to the companion hook `org-execute-file-search-functions',
which see.
A function in this hook may also use `setq' to set the variable
`description' to provide a suggestion for the descriptive text to
be used for this link when it gets inserted into an Org-mode
buffer with \\[org-insert-link].")
(defvar org-execute-file-search-functions nil
"List of functions to execute a file search triggered by a link.
Functions added to this hook must accept a single argument, the
search string that was part of the file link, the part after the
double colon. The function must first check if it would like to
handle this search, for example by checking the major-mode or the
file extension. If it decides not to handle this search, it
should just return nil to give other functions a chance. If it
does handle the search, it must return a non-nil value to keep
other functions from trying.
Each function can access the current prefix argument through the
variable `current-prefix-argument'. Note that a single prefix is
used to force opening a link in Emacs, so it may be good to only
use a numeric or double prefix to guide the search function.
In case this is needed, a function in this hook can also restore
the window configuration before `org-open-at-point' was called using:
(set-window-configuration org-window-config-before-follow-link)")
(defun org-find-file-at-mouse (ev) (defun org-find-file-at-mouse (ev)
"Open file link or URL at mouse." "Open file link or URL at mouse."
(interactive "e") (interactive "e")
@ -7244,6 +7311,10 @@ With prefix ARG, realign all tags in headings in the current buffer."
(mouse-set-point ev) (mouse-set-point ev)
(org-open-at-point)) (org-open-at-point))
(defvar org-window-config-before-follow-link nil
"The window configuration before following a link.
This is saved in case the need arises to restore it.")
(defun org-open-at-point (&optional in-emacs) (defun org-open-at-point (&optional in-emacs)
"Open link at or after point. "Open link at or after point.
If there is no link at point, this function will search forward up to If there is no link at point, this function will search forward up to
@ -7251,6 +7322,7 @@ the end of the current subtree.
Normally, files will be opened by an appropriate application. If the Normally, files will be opened by an appropriate application. If the
optional argument IN-EMACS is non-nil, Emacs will visit the file." optional argument IN-EMACS is non-nil, Emacs will visit the file."
(interactive "P") (interactive "P")
(setq org-window-config-before-follow-link (current-window-configuration))
(org-remove-occur-highlights nil nil t) (org-remove-occur-highlights nil nil t)
(if (org-at-timestamp-p) (if (org-at-timestamp-p)
(org-agenda-list nil (time-to-days (org-time-string-to-time (org-agenda-list nil (time-to-days (org-time-string-to-time
@ -7335,6 +7407,7 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
((string= type "file") ((string= type "file")
(if (string-match "::?\\([0-9]+\\)\\'" path) ;; second : optional (if (string-match "::?\\([0-9]+\\)\\'" path) ;; second : optional
;; FIXME: It is unsafe to allow a single colon.
(setq line (string-to-number (match-string 1 path)) (setq line (string-to-number (match-string 1 path))
path (substring path 0 (match-beginning 0))) path (substring path 0 (match-beginning 0)))
(if (string-match "::\\(.+\\)\\'" path) (if (string-match "::\\(.+\\)\\'" path)
@ -7421,7 +7494,12 @@ in all files."
(pos (point)) (pos (point))
(pre "") (post "") (pre "") (post "")
words re0 re1 re2 re3 re4 re5 re2a reall camel) words re0 re1 re2 re3 re4 re5 re2a reall camel)
(cond ((save-excursion (cond
;; First check if there are any special
((run-hook-with-args-until-success 'org-execute-file-search-functions s))
;; Now try the builtin stuff
((save-excursion
(goto-char (point-min)) (goto-char (point-min))
(and (and
(re-search-forward (re-search-forward
@ -7442,8 +7520,8 @@ in all files."
;; A camel or a normal search string ;; A camel or a normal search string
(when (equal (string-to-char s) ?*) (when (equal (string-to-char s) ?*)
;; Anchor on headlines, post may include tags. ;; Anchor on headlines, post may include tags.
(setq pre "^\\*+[ \t]*\\(\\sw+\\)?[ \t]*" (setq pre "^\\*+[ \t]*\\(?:\\sw+\\)?[ \t]*"
post "[ \t]*\\([ \t]+:[a-zA-Z_@0-9:+]:[ \t]*\\)?$" post "[ \t]*\\(?:[ \t]+:[a-zA-Z_@0-9:+]:[ \t]*\\)?$"
s (substring s 1))) s (substring s 1)))
(remove-text-properties (remove-text-properties
0 (length s) 0 (length s)
@ -7453,10 +7531,14 @@ in all files."
(if camel (if camel
(org-camel-to-words s) (org-camel-to-words s)
(org-split-string s "[ \n\r\t]+")) (org-split-string s "[ \n\r\t]+"))
re0 (concat "<<" (regexp-quote s0) ">>") re0 (concat "\\(<<" (regexp-quote s0) ">>\\)")
re2 (concat "\\<" (mapconcat 'downcase words "[ \t]+") "\\>") ;; FIXME: The word delimiters in the following are not quite correct.
re2a (concat "\\<" (mapconcat 'downcase words "[ \t\r\n]+") "\\>") ; re2 (concat "\\<" (mapconcat 'downcase words "[ \t]+") "\\>")
re4 (concat "\\<" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\>") ; re2a (concat "\\<" (mapconcat 'downcase words "[ \t\r\n]+") "\\>")
; re4 (concat "\\<" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\>")
re2 (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t]+") "\\)[ \t\r\n]")
re2a (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t\r\n]+") "\\)[ \t\r\n]")
re4 (concat "[^a-zA-Z_\r\n]\\(" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\)[^a-zA-Z_\r\n]")
re1 (concat pre re2 post) re1 (concat pre re2 post)
re3 (concat pre re4 post) re3 (concat pre re4 post)
re5 (concat pre ".*" re4) re5 (concat pre ".*" re4)
@ -7479,7 +7561,7 @@ in all files."
(org-search-not-link re4 nil t) (org-search-not-link re4 nil t)
(org-search-not-link re5 nil t) (org-search-not-link re5 nil t)
) )
(goto-char (match-beginning 0)) (goto-char (match-beginning 1)) ;; Fixme: does every re have group 1?
(goto-char pos) (goto-char pos)
(error "No match"))))) (error "No match")))))
(t (t
@ -7790,6 +7872,61 @@ folders."
(kill-this-buffer) (kill-this-buffer)
(error "Message not found")))) (error "Message not found"))))
;; BibTeX links
;; Use the custom search meachnism to construct and use search strings for
;; file links to BibTeX database entries.
(defun org-create-file-search-in-bibtex ()
"Create the search string and description for a BibTeX database entry."
(when (eq major-mode 'bibtex-mode)
;; yes, we want to construct this search string.
;; Make a good description for this entry, using names, year and the title
;; Put it into the `description' variable which is dynamically scoped.
(let ((bibtex-autokey-names 1)
(bibtex-autokey-names-stretch 1)
(bibtex-autokey-name-case-convert-function 'identity)
(bibtex-autokey-name-separator " & ")
(bibtex-autokey-additional-names " et al.")
(bibtex-autokey-year-length 4)
(bibtex-autokey-name-year-separator " ")
(bibtex-autokey-titlewords 3)
(bibtex-autokey-titleword-separator " ")
(bibtex-autokey-titleword-case-convert-function 'identity)
(bibtex-autokey-titleword-length 'infty)
(bibtex-autokey-year-title-separator ": "))
(setq description (bibtex-generate-autokey)))
;; Now parse the entry, get the key and return it.
(save-excursion
(bibtex-beginning-of-entry)
(cdr (assoc "=key=" (bibtex-parse-entry))))))
(defun org-execute-file-search-in-bibtex (s)
"Find the link search string S as a key for a database entry."
(when (eq major-mode 'bibtex-mode)
;; Yes, we want to do the search in this file.
;; We construct a regexp that searches for "@entrytype{" followed by the key
(goto-char (point-min))
(and (re-search-forward (concat "@[a-zA-Z]+[ \t\n]*{[ \t\n]*"
(regexp-quote s) "[ \t\n]*,") nil t)
(goto-char (match-beginning 0)))
(if (and (match-beginning 0) (equal current-prefix-arg '(16)))
;; Use double prefix to indicate that any web link should be browsed
(let ((b (current-buffer)) (p (point)))
;; Restore the window configuration because we just use the web link
(set-window-configuration org-window-config-before-follow-link)
(save-excursion (set-buffer b) (goto-char p)
(bibtex-url)))
(recenter 0))) ; Move entry start to beginning of window
;; return t to indicate that the search is done.
t)
;; Finally add the functions to the right hooks.
(add-hook 'org-create-file-search-functions 'org-create-file-search-in-bibtex)
(add-hook 'org-execute-file-search-functions 'org-execute-file-search-in-bibtex)
;; end of Bibtex link setup
(defun org-upgrade-old-links (&optional query-description) (defun org-upgrade-old-links (&optional query-description)
"Transfer old <...> style links to new [[...]] style links. "Transfer old <...> style links to new [[...]] style links.
With arg query-description, ask at each match for a description text to use With arg query-description, ask at each match for a description text to use
@ -7905,7 +8042,7 @@ For some link types, a prefix arg is interpreted:
For links to usenet articles, arg negates `org-usenet-links-prefer-google'. For links to usenet articles, arg negates `org-usenet-links-prefer-google'.
For file links, arg negates `org-context-in-file-links'." For file links, arg negates `org-context-in-file-links'."
(interactive "P") (interactive "P")
(let (link cpltxt desc txt (pos (point))) (let (link cpltxt desc description search txt (pos (point)))
(cond (cond
((eq major-mode 'bbdb-mode) ((eq major-mode 'bbdb-mode)
@ -8018,6 +8155,12 @@ For file links, arg negates `org-context-in-file-links'."
(setq cpltxt w3m-current-url (setq cpltxt w3m-current-url
link (org-make-link cpltxt))) link (org-make-link cpltxt)))
((setq search (run-hook-with-args-until-success
'org-create-file-search-functions))
(setq link (concat "file:" (abbreviate-file-name buffer-file-name)
"::" search))
(setq cpltxt (or description link))) ;; FIXME: is this the best way?
((eq major-mode 'org-mode) ((eq major-mode 'org-mode)
;; Just link to current headline ;; Just link to current headline
(setq cpltxt (concat "file:" (setq cpltxt (concat "file:"
@ -10825,6 +10968,101 @@ overwritten, and the table is not marked as requiring realignment."
(defconst org-level-max 20) (defconst org-level-max 20)
(defvar org-export-html-preamble nil
"Preamble, to be inserted just after <body>. Set by publishing functions.")
(defvar org-export-html-postamble nil
"Preamble, to be inserted just before </body>. Set by publishing functions.")
(defvar org-export-html-auto-preamble t
"Should default preamble be inserted? Set by publishing functions.")
(defvar org-export-html-auto-postamble t
"Should default postamble be inserted? Set by publishing functions.")
(defconst org-export-plist-vars
'((:language . org-export-default-language)
(:headline-levels . org-export-headline-levels)
(:with-section-numbers . org-export-with-section-numbers)
(:table-of-contents . org-export-with-toc)
(:emphasize . org-export-with-emphasize)
(:sub-superscript . org-export-with-sub-superscripts)
(:TeX-macros . org-export-with-TeX-macros)
(:fixed-width . org-export-with-fixed-width)
(:tables . org-export-with-tables)
(:table-auto-headline . org-export-highlight-first-table-line)
(:style . org-export-html-style)
(:convert-org-links . org-export-html-link-org-files-as-html)
(:inline-images . org-export-html-inline-images)
(:expand-quoted-html . org-export-html-expand)
(:timestamp . org-export-html-with-timestamp)
(:publishing-directory . org-export-publishing-directory)
(:preamble . org-export-html-preamble)
(:postamble . org-export-html-postamble)
(:auto-preamble . org-export-html-auto-preamble)
(:auto-postamble . org-export-html-auto-postamble)
(:author . user-full-name)
(:email . user-mail-address)))
(defun org-default-export-plist ()
"Return the property list with default settings for the export variables."
(let ((l org-export-plist-vars) rtn e)
(while (setq e (pop l))
(setq rtn (cons (car e) (cons (symbol-value (cdr e)) rtn))))
rtn))
(defun org-infile-export-plist ()
"Return the property list with file-local settings for export."
(save-excursion
(goto-char 0)
(let ((re (org-make-options-regexp
'("TITLE" "AUTHOR" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE")))
(text nil)
p key val text options)
(while (re-search-forward re nil t)
(setq key (org-match-string-no-properties 1)
val (org-match-string-no-properties 2))
(cond
((string-equal key "TITLE") (setq p (plist-put p :title val)))
((string-equal key "AUTHOR")(setq p (plist-put p :author val)))
((string-equal key "EMAIL") (setq p (plist-put p :email val)))
((string-equal key "LANGUAGE") (setq p (plist-put p :language val)))
((string-equal key "TEXT")
(setq text (if text (concat text "\n" val) val)))
((string-equal key "OPTIONS") (setq options val))))
(setq p (plist-put p :text text))
(when options
(let ((op '(("H" . :headline-levels)
("num" . :section-numbers)
("toc" . :table-of-contents)
("\\n" . :preserve-breaks)
("@" . :expand-quoted-html)
(":" . :fixed-width)
("|" . :tables)
("^" . :sub-superscript)
("*" . :emphasize)
("TeX" . :TeX-macros)))
o)
(while (setq o (pop op))
(if (string-match (concat (regexp-quote (car o))
":\\([^ \t\n\r;,.]*\\)")
options)
(setq p (plist-put p (cdr o)
(car (read-from-string
(match-string 1 options)))))))))
p)))
(defun org-combine-plists (&rest plists)
"Create a single property list from all plists in PLISTS.
The process starts by copying the last list, and then setting properties
from the other lists. Settings in the first list are the most significant
ones and overrule settings in the other lists."
(let ((rtn (copy-sequence (pop plists)))
p v ls)
(while plists
(setq ls (pop plists))
(while ls
(setq p (pop ls) v (pop ls))
(setq rtn (plist-put rtn p v))))
rtn))
(defun org-export-find-first-heading-line (list) (defun org-export-find-first-heading-line (list)
"Remove all lines from LIST which are before the first headline." "Remove all lines from LIST which are before the first headline."
(let ((orig-list list) (let ((orig-list list)
@ -11272,7 +11510,9 @@ The prefix ARG specifies how many levels of the outline should become
underlined headlines. The default is 3." underlined headlines. The default is 3."
(interactive "P") (interactive "P")
(setq-default org-todo-line-regexp org-todo-line-regexp) (setq-default org-todo-line-regexp org-todo-line-regexp)
(let* ((region (let* ((opt-plist (org-combine-plists (org-default-export-plist)
(org-infile-export-plist)))
(region
(buffer-substring (buffer-substring
(if (org-region-active-p) (region-beginning) (point-min)) (if (org-region-active-p) (region-beginning) (point-min))
(if (org-region-active-p) (region-end) (point-max)))) (if (org-region-active-p) (region-end) (point-max))))
@ -11285,17 +11525,23 @@ underlined headlines. The default is 3."
(level 0) line txt (level 0) line txt
(umax nil) (umax nil)
(case-fold-search nil) (case-fold-search nil)
(filename (concat (file-name-sans-extension buffer-file-name) (filename (concat (file-name-as-directory
(plist-get opt-plist :publishing-directory))
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
".txt")) ".txt"))
(buffer (find-file-noselect filename)) (buffer (find-file-noselect filename))
(levels-open (make-vector org-level-max nil)) (levels-open (make-vector org-level-max nil))
(odd org-odd-levels-only)
(date (format-time-string "%Y/%m/%d" (current-time))) (date (format-time-string "%Y/%m/%d" (current-time)))
(time (format-time-string "%X" (org-current-time))) (time (format-time-string "%X" (org-current-time)))
(author user-full-name) (author (plist-get opt-plist :author))
(title (buffer-name)) (title (or (plist-get opt-plist :title)
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))))
(options nil) (options nil)
(email user-mail-address) (email (plist-get opt-plist :email))
(language org-export-default-language) (language (plist-get opt-plist :language))
(text nil) (text nil)
(todo nil) (todo nil)
(lang-words nil)) (lang-words nil))
@ -11305,9 +11551,6 @@ underlined headlines. The default is 3."
(find-file-noselect filename) (find-file-noselect filename)
;; Search for the export key lines
(org-parse-key-lines)
(setq lang-words (or (assoc language org-export-language-setup) (setq lang-words (or (assoc language org-export-language-setup)
(assoc "en" org-export-language-setup))) (assoc "en" org-export-language-setup)))
(if org-export-ascii-show-new-buffer (if org-export-ascii-show-new-buffer
@ -11315,7 +11558,13 @@ underlined headlines. The default is 3."
(set-buffer buffer)) (set-buffer buffer))
(erase-buffer) (erase-buffer)
(fundamental-mode) (fundamental-mode)
(if options (org-parse-export-options options)) ;; create local variables for all options, to make sure all called
;; functions get the correct information
(mapcar (lambda (x)
(set (make-local-variable (cdr x))
(plist-get opt-plist (car x))))
org-export-plist-vars)
(set (make-local-variable 'org-odd-levels-only) odd)
(setq umax (if arg (prefix-numeric-value arg) (setq umax (if arg (prefix-numeric-value arg)
org-export-headline-levels)) org-export-headline-levels))
@ -11345,7 +11594,8 @@ underlined headlines. The default is 3."
level (org-tr-level level) level (org-tr-level level)
txt (match-string 3 line) txt (match-string 3 line)
todo todo
(or (and (match-beginning 2) (or (and org-export-mark-todo-in-toc
(match-beginning 2)
(not (equal (match-string 2 line) (not (equal (match-string 2 line)
org-done-string))) org-done-string)))
; TODO, not DONE ; TODO, not DONE
@ -11444,7 +11694,12 @@ underlined headlines. The default is 3."
Also removes the first line of the buffer if it specifies a mode, Also removes the first line of the buffer if it specifies a mode,
and all options lines." and all options lines."
(interactive) (interactive)
(let* ((filename (concat (file-name-sans-extension buffer-file-name) (let* ((opt-plist (org-combine-plists (org-default-export-plist)
(org-infile-export-plist)))
(filename (concat (file-name-as-directory
(plist-get opt-plist :publishing-directory))
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
".txt")) ".txt"))
(buffer (find-file-noselect filename)) (buffer (find-file-noselect filename))
(ore (concat (ore (concat
@ -11604,16 +11859,23 @@ emacs --batch
--visit=MyFile --funcall org-export-as-html-batch" --visit=MyFile --funcall org-export-as-html-batch"
(org-export-as-html org-export-headline-levels 'hidden)) (org-export-as-html org-export-headline-levels 'hidden))
(defun org-export-as-html (arg &optional hidden) (defun org-export-as-html (arg &optional hidden ext-plist)
"Export the outline as a pretty HTML file. "Export the outline as a pretty HTML file.
If there is an active region, export only the region. If there is an active region, export only the region.
The prefix ARG specifies how many levels of the outline should become The prefix ARG specifies how many levels of the outline should become
headlines. The default is 3. Lower levels will become bulleted lists." headlines. The default is 3. Lower levels will become bulleted lists.
When HIDDEN is non-nil, don't display the HTML buffer.
EXT-PLIST is a property list with external parameters overriding
org-mode's default settings, but still inferior to file-local settings."
(interactive "P") (interactive "P")
(setq-default org-todo-line-regexp org-todo-line-regexp) (setq-default org-todo-line-regexp org-todo-line-regexp)
(setq-default org-deadline-line-regexp org-deadline-line-regexp) (setq-default org-deadline-line-regexp org-deadline-line-regexp)
(setq-default org-done-string org-done-string) (setq-default org-done-string org-done-string)
(let* ((style org-export-html-style) (let* ((opt-plist (org-combine-plists (org-default-export-plist)
ext-plist
(org-infile-export-plist)))
(style (plist-get opt-plist :style))
(odd org-odd-levels-only) (odd org-odd-levels-only)
(region-p (org-region-active-p)) (region-p (org-region-active-p))
(region (region
@ -11627,15 +11889,19 @@ headlines. The default is 3. Lower levels will become bulleted lists."
(lines (org-export-find-first-heading-line all_lines)) (lines (org-export-find-first-heading-line all_lines))
(level 0) (line "") (origline "") txt todo (level 0) (line "") (origline "") txt todo
(umax nil) (umax nil)
(filename (concat (file-name-sans-extension buffer-file-name) (filename (concat (file-name-as-directory
(plist-get opt-plist :publishing-directory))
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
".html")) ".html"))
(buffer (find-file-noselect filename)) (buffer (find-file-noselect filename))
(levels-open (make-vector org-level-max nil)) (levels-open (make-vector org-level-max nil))
(date (format-time-string "%Y/%m/%d" (current-time))) (date (format-time-string "%Y/%m/%d" (current-time)))
(time (format-time-string "%X" (org-current-time))) (time (format-time-string "%X" (org-current-time)))
(author user-full-name) (author (plist-get opt-plist :author))
(title (buffer-name)) (title (or (plist-get opt-plist :title)
(options nil) (file-name-sans-extension
(file-name-nondirectory buffer-file-name))))
(quote-re (concat "^\\*+[ \t]*" org-quote-string "\\>")) (quote-re (concat "^\\*+[ \t]*" org-quote-string "\\>"))
(inquote nil) (inquote nil)
(infixed nil) (infixed nil)
@ -11643,9 +11909,9 @@ headlines. The default is 3. Lower levels will become bulleted lists."
(local-list-num nil) (local-list-num nil)
(local-list-indent nil) (local-list-indent nil)
(llt org-plain-list-ordered-item-terminator) (llt org-plain-list-ordered-item-terminator)
(email user-mail-address) (email (plist-get opt-plist :email))
(language org-export-default-language) (language (plist-get opt-plist :language))
(text nil) (text (plist-get opt-plist :text))
(lang-words nil) (lang-words nil)
(target-alist nil) tg (target-alist nil) tg
(head-count 0) cnt (head-count 0) cnt
@ -11668,8 +11934,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
(setq org-last-level 1) (setq org-last-level 1)
(org-init-section-numbers) (org-init-section-numbers)
;; Search for the export key lines ;; Get the language-dependent settings
(org-parse-key-lines)
(setq lang-words (or (assoc language org-export-language-setup) (setq lang-words (or (assoc language org-export-language-setup)
(assoc "en" org-export-language-setup))) (assoc "en" org-export-language-setup)))
@ -11681,7 +11946,12 @@ headlines. The default is 3. Lower levels will become bulleted lists."
(fundamental-mode) (fundamental-mode)
(let ((case-fold-search nil) (let ((case-fold-search nil)
(org-odd-levels-only odd)) (org-odd-levels-only odd))
(if options (org-parse-export-options options)) ;; create local variables for all options, to make sure all called
;; functions get the correct information
(mapcar (lambda (x)
(set (make-local-variable (cdr x))
(plist-get opt-plist (car x))))
org-export-plist-vars)
(setq umax (if arg (prefix-numeric-value arg) (setq umax (if arg (prefix-numeric-value arg)
org-export-headline-levels)) org-export-headline-levels))
@ -11700,15 +11970,21 @@ headlines. The default is 3. Lower levels will become bulleted lists."
" "
language (org-html-expand title) (or charset "iso-8859-1") language (org-html-expand title) (or charset "iso-8859-1")
date time author style)) date time author style))
(insert (or (plist-get opt-plist :preamble) ""))
(when (plist-get opt-plist :auto-preamble)
(if title (insert (concat "<H1 class=\"title\">" (if title (insert (concat "<H1 class=\"title\">"
(org-html-expand title) "</H1>\n"))) (org-html-expand title) "</H1>\n")))
(if author (insert (concat (nth 1 lang-words) ": " author "\n"))) ; (if author (insert (concat (nth 1 lang-words) ": " author "\n")))
(if email (insert (concat "<a href=\"mailto:" email "\">&lt;" ; (if email (insert (concat "<a href=\"mailto:" email "\">&lt;"
email "&gt;</a>\n"))) ; email "&gt;</a>\n")))
(if (or author email) (insert "<br>\n")) ; (if (or author email) (insert "<br>\n"))
(if (and date time) (insert (concat (nth 2 lang-words) ": " ; (if (and date time) (insert (concat (nth 2 lang-words) ": "
date " " time "<br>\n"))) ; date " " time "<br>\n")))
(if text (insert (concat "<p>\n" (org-html-expand text)))) (if text (insert (concat "<p>\n" (org-html-expand text)))))
(if org-export-with-toc (if org-export-with-toc
(progn (progn
(insert (format "<H2>%s</H2>\n" (nth 3 lang-words))) (insert (format "<H2>%s</H2>\n" (nth 3 lang-words)))
@ -11724,7 +12000,8 @@ headlines. The default is 3. Lower levels will become bulleted lists."
(org-html-expand (org-html-expand
(match-string 3 line))) (match-string 3 line)))
todo todo
(or (and (match-beginning 2) (or (and org-export-mark-todo-in-toc
(match-beginning 2)
(not (equal (match-string 2 line) (not (equal (match-string 2 line)
org-done-string))) org-done-string)))
; TODO, not DONE ; TODO, not DONE
@ -11875,7 +12152,11 @@ headlines. The default is 3. Lower levels will become bulleted lists."
(not (string-match "^/.*/$" search))) (not (string-match "^/.*/$" search)))
(setq thefile (concat thefile "#" (setq thefile (concat thefile "#"
(org-solidify-link-text (org-solidify-link-text
(org-link-unescape search))))))) (org-link-unescape search)))))
(when (string-match "^file:" desc)
(setq desc (replace-match "" t t desc))
(if (string-match "\\.org$" desc)
(setq desc (replace-match "" t t desc))))))
(setq rpl (if (and org-export-html-inline-images (setq rpl (if (and org-export-html-inline-images
file-is-image-p) file-is-image-p)
(concat "<img src=\"" thefile "\"/>") (concat "<img src=\"" thefile "\"/>")
@ -11982,8 +12263,30 @@ headlines. The default is 3. Lower levels will become bulleted lists."
(if (string-match "^ [-+*]-\\|^[ \t]*$" line) (insert "<p>")) (if (string-match "^ [-+*]-\\|^[ \t]*$" line) (insert "<p>"))
(insert line (if org-export-preserve-breaks "<br>\n" "\n")))) (insert line (if org-export-preserve-breaks "<br>\n" "\n"))))
)) ))
;; Properly close all local lists and other lists
(when in-local-list
;; Close any local lists before inserting a new header line
(while local-list-num
(insert (if (car local-list-num) "</ol>\n" "</ul>"))
(pop local-list-num))
(setq local-list-indent nil
in-local-list nil))
(org-html-level-start 1 nil umax
(and org-export-with-toc (<= level umax))
head-count)
(when (plist-get opt-plist :auto-postamble)
(if author (insert (concat (nth 1 lang-words) ": " author "\n")))
(if email (insert (concat "<a href=\"mailto:" email "\">&lt;"
email "&gt;</a>\n")))
(if (or author email) (insert "<br>\n"))
(if (and date time) (insert (concat (nth 2 lang-words) ": "
date " " time "<br>\n"))))
(if org-export-html-with-timestamp (if org-export-html-with-timestamp
(insert org-export-html-html-helper-timestamp)) (insert org-export-html-html-helper-timestamp))
(insert (or (plist-get opt-plist :postamble) ""))
(insert "</body>\n</html>\n") (insert "</body>\n</html>\n")
(normal-mode) (normal-mode)
(save-buffer) (save-buffer)
@ -12237,49 +12540,9 @@ stacked delimiters is N. Escaping delimiters is not possible."
(setq string (replace-match "\\1<u>\\3</u>\\4" t nil string))) (setq string (replace-match "\\1<u>\\3</u>\\4" t nil string)))
string) string)
(defun org-parse-key-lines ()
"Find the special key lines with the information for exporters."
(save-excursion
(goto-char 0)
(let ((re (org-make-options-regexp
'("TITLE" "AUTHOR" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE")))
key)
(while (re-search-forward re nil t)
(setq key (match-string 1))
(cond ((string-equal key "TITLE")
(setq title (match-string 2)))
((string-equal key "AUTHOR")
(setq author (match-string 2)))
((string-equal key "EMAIL")
(setq email (match-string 2)))
((string-equal key "LANGUAGE")
(setq language (match-string 2)))
((string-equal key "TEXT")
(setq text (concat text "\n" (match-string 2))))
((string-equal key "OPTIONS")
(setq options (match-string 2))))))))
(defun org-parse-export-options (s)
"Parse the export options line."
(let ((op '(("H" . org-export-headline-levels)
("num" . org-export-with-section-numbers)
("toc" . org-export-with-toc)
("\\n" . org-export-preserve-breaks)
("@" . org-export-html-expand)
(":" . org-export-with-fixed-width)
("|" . org-export-with-tables)
("^" . org-export-with-sub-superscripts)
("*" . org-export-with-emphasize)
("TeX" . org-export-with-TeX-macros)))
o)
(while (setq o (pop op))
(if (string-match (concat (regexp-quote (car o)) ":\\([^ \t\n\r;,.]*\\)")
s)
(set (make-local-variable (cdr o))
(car (read-from-string (match-string 1 s))))))))
(defun org-html-level-start (level title umax with-toc head-count) (defun org-html-level-start (level title umax with-toc head-count)
"Insert a new level in HTML export." "Insert a new level in HTML export.
When TITLE is nil, just close all open levels."
(let ((l (1+ (max level umax)))) (let ((l (1+ (max level umax))))
(while (<= l org-level-max) (while (<= l org-level-max)
(if (aref levels-open (1- l)) (if (aref levels-open (1- l))
@ -12287,6 +12550,9 @@ stacked delimiters is N. Escaping delimiters is not possible."
(org-html-level-close l) (org-html-level-close l)
(aset levels-open (1- l) nil))) (aset levels-open (1- l) nil)))
(setq l (1+ l))) (setq l (1+ l)))
(when title
;; If title is nil, this means this function is called to close
;; all levels, so the rest is done only if title is given
(if (> level umax) (if (> level umax)
(progn (progn
(if (aref levels-open (1- level)) (if (aref levels-open (1- level))
@ -12299,7 +12565,7 @@ stacked delimiters is N. Escaping delimiters is not possible."
(if with-toc (if with-toc
(insert (format "\n<H%d><a name=\"sec-%d\">%s</a></H%d>\n" (insert (format "\n<H%d><a name=\"sec-%d\">%s</a></H%d>\n"
level head-count title level)) level head-count title level))
(insert (format "\n<H%d>%s</H%d>\n" level title level)))))) (insert (format "\n<H%d>%s</H%d>\n" level title level)))))))
(defun org-html-level-close (&rest args) (defun org-html-level-close (&rest args)
"Terminate one level in HTML export." "Terminate one level in HTML export."
@ -12378,7 +12644,12 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
;; Output everything as XOXO ;; Output everything as XOXO
(with-current-buffer (get-buffer buffer) (with-current-buffer (get-buffer buffer)
(goto-char (point-min)) ;; CD: beginning-of-buffer is not allowed. (goto-char (point-min)) ;; CD: beginning-of-buffer is not allowed.
(let* ((filename (concat (file-name-sans-extension buffer-file-name) (let* ((opt-plist (org-combine-plists (org-default-export-plist)
(org-infile-export-plist)))
(filename (concat (file-name-as-directory
(plist-get opt-plist :publishing-directory))
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
".xml")) ".xml"))
(out (find-file-noselect filename)) (out (find-file-noselect filename))
(last-level 1) (last-level 1)
@ -12437,7 +12708,7 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
;; Finish the buffer off and clean it up. ;; Finish the buffer off and clean it up.
(switch-to-buffer-other-window out) (switch-to-buffer-other-window out)
(indent-region (point-min) (point-max)) (indent-region (point-min) (point-max) nil)
(save-buffer) (save-buffer)
(goto-char (point-min)) (goto-char (point-min))
))) )))

BIN
org.pdf

Binary file not shown.

View File

@ -4,7 +4,7 @@
@c @setfilename ../info/org @c @setfilename ../info/org
@settitle Org Mode Manual @settitle Org Mode Manual
@set VERSION 4.26 @set VERSION 4.27
@set DATE April 2006 @set DATE April 2006
@dircategory Emacs @dircategory Emacs
@ -97,7 +97,7 @@ Introduction
* Installation and activation:: How to install Org-mode * Installation and activation:: How to install Org-mode
* Feedback:: Bug reports, ideas, patches etc. * Feedback:: Bug reports, ideas, patches etc.
Document structure Document Structure
* Outlines:: Org-mode is based on outline-mode * Outlines:: Org-mode is based on outline-mode
* Headlines:: How to typeset org-tree headlines * Headlines:: How to typeset org-tree headlines
@ -131,7 +131,8 @@ Hyperlinks
* Internal links:: Links to other places in the current file * Internal links:: Links to other places in the current file
* External links:: URL-like links to the world * External links:: URL-like links to the world
* Handling links:: Creating, inserting and following * Handling links:: Creating, inserting and following
* Search Options:: Linking to a specific location * Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
* Remember:: Org-trees store quick notes * Remember:: Org-trees store quick notes
Internal links Internal links
@ -163,7 +164,7 @@ Tags
* Setting tags:: How to assign tags to a headline * Setting tags:: How to assign tags to a headline
* Tag searches:: Searching for combinations of tags * Tag searches:: Searching for combinations of tags
Agenda views Agenda Views
* Agenda files:: Files being searched for agenda information * Agenda files:: Files being searched for agenda information
* Agenda dispatcher:: Keyboard access to agenda views * Agenda dispatcher:: Keyboard access to agenda views
@ -1377,7 +1378,8 @@ links to other files, Usenet articles, emails and much more.
* Internal links:: Links to other places in the current file * Internal links:: Links to other places in the current file
* External links:: URL-like links to the world * External links:: URL-like links to the world
* Handling links:: Creating, inserting and following * Handling links:: Creating, inserting and following
* Search Options:: Linking to a specific location * Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
* Remember:: Org-trees store quick notes * Remember:: Org-trees store quick notes
@end menu @end menu
@ -1543,7 +1545,7 @@ as links. If spaces must be part of the link (for example in
@samp{bbdb:Richard Stallman}) or to remove ambiguities about the end of @samp{bbdb:Richard Stallman}) or to remove ambiguities about the end of
the link, enclose them in angular brackets. the link, enclose them in angular brackets.
@node Handling links, Search Options, External links, Hyperlinks @node Handling links, Search options, External links, Hyperlinks
@section Handling links @section Handling links
Org-mode provides methods to create a link in the correct syntax, to Org-mode provides methods to create a link in the correct syntax, to
@ -1561,11 +1563,14 @@ points to the target. Otherwise it points to the current headline. For
VM, RMAIL, WANDERLUST, MH-E, GNUS and BBDB buffers, the link will VM, RMAIL, WANDERLUST, MH-E, GNUS and BBDB buffers, the link will
indicate to the current article/entry. For W3 and W3M buffers, the link indicate to the current article/entry. For W3 and W3M buffers, the link
goes to the current URL. For any other files, the link will point to goes to the current URL. For any other files, the link will point to
the file, with a search string (@pxref{Search Options}) pointing to the the file, with a search string (@pxref{Search options}) pointing to the
contents of the current line. If there is an active region, the contents of the current line. If there is an active region, the
selected words will form the basis of the search string. The key selected words will form the basis of the search string. If the
binding @kbd{C-c l} is only a suggestion - see @ref{Installation and automatically created link is not working correctly or accurately
activation}. enough, you can write custom functions to select the search string and
to do the search for particular file types - see @ref{Custom searches}.
The key binding @kbd{C-c l} is only a suggestion - see @ref{Installation
and activation}.
@kindex C-c C-l @kindex C-c C-l
@cindex link completion @cindex link completion
@ -1643,7 +1648,7 @@ previously recorded positions.
@end table @end table
@node Search Options, Remember, Handling links, Hyperlinks @node Search options, Custom searches, Handling links, Hyperlinks
@section Search options in file links @section Search options in file links
@cindex search option in file links @cindex search option in file links
@cindex file links, searching @cindex file links, searching
@ -1651,8 +1656,14 @@ previously recorded positions.
File links can contain additional information to make Emacs jump to a File links can contain additional information to make Emacs jump to a
particular location in the file when following a link. This can be a particular location in the file when following a link. This can be a
line number or a search option after a double@footnote{For backward line number or a search option after a double@footnote{For backward
compatibility, line numbers can also follow a single colon.} colon. compatibility, line numbers can also follow a single colon.} colon. For
For example: example, when the command @kbd{C-c l} creates a link (@pxref{Handling
links}) to a file, it encodes the words in the current line as a search
string that can be used to find this line back later when following the
link with @kbd{C-c C-o}.
Here is the syntax of the different ways to attach a search to a file
link, together with an explanation:
@example @example
[[file:~/code/main.c::255]] [[file:~/code/main.c::255]]
@ -1661,8 +1672,6 @@ For example:
[[file:~/xx.org::/regexp/]] [[file:~/xx.org::/regexp/]]
@end example @end example
@noindent Here is what these options do.
@table @code @table @code
@item 255 @item 255
Jump to line 255. Jump to line 255.
@ -1688,7 +1697,30 @@ to search the current file. For example, @code{<file:::find me>} does
a search for @samp{find me} in the current file, just like a search for @samp{find me} in the current file, just like
@samp{[[find me]]} would. @samp{[[find me]]} would.
@node Remember, , Search Options, Hyperlinks @node Custom searches, Remember, Search options, Hyperlinks
@section Custom Searches
@cindex custom search strings
The default mechanism for creating search strings and for doing the
actual search related to a file link may not work correctly in all
cases. For example, BibTeX database files have many entries like
@samp{year="1993"} which would not result in good search strings,
because the only unique identification for a BibTeX entry is the
citation key.
If you come across such a problem, you can write custom functions to set
the right search string for a particular file type, and to do the search
for the string in the file. Using @code{add-hook}, these functions need
to be added to the hook variables
@code{org-create-file-search-functions} and
@code{org-execute-file-search-functions}. See the docstring for these
variables for more information. Org-mode actually uses this mechanism
for Bib@TeX{} database files, and you can use the corresponding code as
an implementation example. Search for @samp{BibTeX links} in the source
file.
@node Remember, , Custom searches, Hyperlinks
@section Remember @section Remember
@cindex @file{remember.el} @cindex @file{remember.el}

Binary file not shown.

View File

@ -1,5 +1,5 @@
% Reference Card for Org Mode % Reference Card for Org Mode
\def\orgversionnumber{4.26} \def\orgversionnumber{4.27}
\def\year{2006} \def\year{2006}
% %
%**start of header %**start of header