>>.
-When this option is set, any occurrence of \"my target\" in normal text
-becomes a link."
- :group 'org-link
- :type 'boolean)
-
-(defcustom org-activate-camels nil
- "Non-nil means, treat words in CamelCase as in-file links.
-Changing this requires restart of Emacs to become effective."
- :group 'org-link
- :type 'boolean)
-
-(defcustom org-context-in-file-links t
- "Non-nil means, file links from `org-store-link' contain context.
-A search string will be added to the file name with :: as separator and
-used to find the context when the link is activated by the command
-`org-open-at-point'.
-Using a prefix arg to the command \\[org-store-link] (`org-store-link')
-negates this setting for the duration of the command."
- :group 'org-link
- :type 'boolean)
-
-(defcustom org-file-link-context-use-camel-case nil
- "Non-nil means, use CamelCase to store a search context in a file link.
-When nil, the search string simply consists of the words of the string.
-CamelCase is deprecated, and support for it may be dropped in the future."
- :group 'org-link
- :type 'boolean)
-
-(defcustom org-keep-stored-link-after-insertion nil
- "Non-nil means, keep link in list for entire session.
-
-The command `org-store-link' adds a link pointing to the current
-location to an internal list. These links accumulate during a session.
-The command `org-insert-link' can be used to insert links into any
-Org-mode file (offering completion for all stored links). When this
-option is nil, every link which has been inserted once using \\[org-insert-link]
-will be removed from the list, to make completing the unused links
-more efficient."
- :group 'org-link
- :type 'boolean)
-
-(defcustom org-link-frame-setup
- '((vm . vm-visit-folder-other-frame)
- (gnus . gnus-other-frame)
- (file . find-file-other-window))
- "Setup the frame configuration for following links.
-When following a link with Emacs, it may often be useful to display
-this link in another window or frame. This variable can be used to
-set this up for the different types of links.
-For VM, use any of
- `vm-visit-folder'
- `vm-visit-folder-other-frame'
-For Gnus, use any of
- `gnus'
- `gnus-other-frame'
-For FILE, use any of
- `find-file'
- `find-file-other-window'
- `find-file-other-frame'
-For the calendar, use the variable `calendar-setup'.
-For BBDB, it is currently only possible to display the matches in
-another window."
- :group 'org-link
- :type '(list
- (cons (const vm)
- (choice
- (const vm-visit-folder)
- (const vm-visit-folder-other-window)
- (const vm-visit-folder-other-frame)))
- (cons (const gnus)
- (choice
- (const gnus)
- (const gnus-other-frame)))
- (cons (const file)
- (choice
- (const find-file)
- (const find-file-other-window)
- (const find-file-other-frame)))))
-
-(defcustom org-usenet-links-prefer-google nil
- "Non-nil means, `org-store-link' will create web links to Google groups.
-When nil, Gnus will be used for such links.
-Using a prefix arg to the command \\[org-store-link] (`org-store-link')
-negates this setting for the duration of the command."
- :group 'org-link
- :type 'boolean)
-
-(defcustom org-open-non-existing-files nil
- "Non-nil means, `org-open-file' will open non-existing file.
-When nil, an error will be generated."
- :group 'org-link
- :type 'boolean)
-
-(defcustom org-confirm-shell-links t
- "Non-nil means, ask for confirmation before executing shell links.
-The default is true, to keep new users from shooting into their own foot."
- :group 'org-link
- :type 'boolean)
-
-(defconst org-file-apps-defaults-gnu
- '((t . mailcap))
- "Default file applications on a UNIX or GNU/Linux system.
-See `org-file-apps'.")
-
-(defconst org-file-apps-defaults-macosx
- '((t . "open %s")
- ("ps" . "gv %s")
- ("ps.gz" . "gv %s")
- ("eps" . "gv %s")
- ("eps.gz" . "gv %s")
- ("dvi" . "xdvi %s")
- ("fig" . "xfig %s"))
- "Default file applications on a MacOS X system.
-The system \"open\" is known as a default, but we use X11 applications
-for some files for which the OS does not have a good default.
-See `org-file-apps'.")
-
-(defconst org-file-apps-defaults-windowsnt
- '((t . (w32-shell-execute "open" file)))
- "Default file applications on a Windows NT system.
-The system \"open\" is used for most files.
-See `org-file-apps'.")
-
-(defcustom org-file-apps
- '(
- ("txt" . emacs)
- ("tex" . emacs)
- ("ltx" . emacs)
- ("org" . emacs)
- ("el" . emacs)
- )
- "External applications for opening `file:path' items in a document.
-Org-mode uses system defaults for different file types, but
-you can use this variable to set the application for a given file
-extension. The entries in this list are cons cells with a file extension
-and the corresponding command. Possible values for the command are:
- `emacs' The file will be visited by the current Emacs process.
- `default' Use the default application for this file type.
- string A command to be executed by a shell; %s will be replaced
- by the path to the file.
- sexp A Lisp form which will be evaluated. The file path will
- be available in the Lisp variable `file'.
-For more examples, see the system specific constants
-`org-file-apps-defaults-macosx'
-`org-file-apps-defaults-windowsnt'
-`org-file-apps-defaults-gnu'."
- :group 'org-link
- :type '(repeat
- (cons (choice :value ""
- (string :tag "Extension")
- (const :tag "Default for unrecognized files" t)
- (const :tag "Links to a directory" directory))
- (choice :value ""
- (const :tag "Visit with Emacs" emacs)
- (const :tag "Use system default" default)
- (string :tag "Command")
- (sexp :tag "Lisp form")))))
-
-(defcustom org-mhe-search-all-folders nil
- "Non-nil means, that the search for the mh-message will be extended to
-all folders if the message cannot be found in the folder given in the link.
-Searching all folders is very effective with one of the search engines
-supported by MH-E, but will be slow with pick."
- :group 'org-link
- :type 'boolean)
-
-(defgroup org-remember nil
- "Options concerning interaction with remember.el."
- :tag "Org Remember"
- :group 'org)
-
-(defcustom org-directory "~/org"
- "Directory with org files.
-This directory will be used as default to prompt for org files.
-Used by the hooks for remember.el."
- :group 'org-remember
- :type 'directory)
-
-(defcustom org-default-notes-file "~/.notes"
- "Default target for storing notes.
-Used by the hooks for remember.el. This can be a string, or nil to mean
-the value of `remember-data-file'."
- :group 'org-remember
- :type '(choice
- (const :tag "Default from remember-data-file" nil)
- file))
-
-(defcustom org-remember-templates nil
- "Templates for the creation of remember buffers.
-When nil, just let remember make the buffer.
-When not nil, this is a list of 3-element lists. In each entry, the first
-element is a character, a unique key to select this template.
-The second element is the template. The third element is optional and can
-specify a destination file for remember items created with this template.
-The default file is given by `org-default-notes-file'.
-
-The template specifies the structure of the remember buffer. It should have
-a first line starting with a star, to act as the org-mode headline.
-Furthermore, the following %-escapes will be replaced with content:
- %t time stamp, date only
- %T time stamp with date and time
- %u inactive time stamp, date only
- %U inactive time stamp with date and time
- %n user name
- %a annotation, normally the link created with org-store-link
- %i initial content, the region when remember is called with C-u.
- If %i is indented, the entire inserted text will be indented as well.
- %? This will be removed, and the cursor placed at this position."
- :group 'org-remember
- :type '(repeat :tag "enabled"
- (list :value (?a "\n" nil)
- (character :tag "Selection Key")
- (string :tag "Template")
- (file :tag "Destination file (optional)"))))
-
-(defcustom org-reverse-note-order nil
- "Non-nil means, store new notes at the beginning of a file or entry.
-When nil, new notes will be filed to the end of a file or entry."
- :group 'org-remember
- :type '(choice
- (const :tag "Reverse always" t)
- (const :tag "Reverse never" nil)
- (repeat :tag "By file name regexp"
- (cons regexp boolean))))
-
(defgroup org-table nil
"Options concerning tables in Org-mode."
:tag "Org Table"
@@ -1321,46 +569,39 @@ See also the variable `org-table-auto-blank-field'."
(const :tag "on" t)
(const :tag "on, optimized" optimized)))
-;; FIXME: We could have a third option which makes it jump only over the first
-;; hline in a table.
-(defcustom org-table-tab-jumps-over-hlines t
- "Non-nil means, tab in the last column of a table with jump over a hline.
-If a horizontal separator line is following the current line,
-`org-table-next-field' can either create a new row before that line, or jump
-over the line. When this option is nil, a new line will be created before
-this line."
+(defcustom orgtbl-optimized (eq org-enable-table-editor 'optimized)
+ "Non-nil means, use the optimized table editor version for `orgtbl-mode'.
+In the optimized version, the table editor takes over all simple keys that
+normally just insert a character. In tables, the characters are inserted
+in a way to minimize disturbing the table structure (i.e. in overwrite mode
+for empty fields). Outside tables, the correct binding of the keys is
+restored.
+
+The default for this option is t if the optimized version is also used in
+Org-mode. See the variable `org-enable-table-editor' for details. Changing
+this variable requires a restart of Emacs to become effective."
:group 'org-table
:type 'boolean)
-(defcustom org-table-auto-blank-field t
- "Non-nil means, automatically blank table field when starting to type into it.
-This only happens when typing immediately after a field motion
-command (TAB, S-TAB or RET).
-Only relevant when `org-enable-table-editor' is equal to `optimized'."
- :group 'org-table
- :type 'boolean)
+(defgroup org-table-settings nil
+ "Settings for tables in Org-mode."
+ :tag "Org Table Settings"
+ :group 'org-table)
(defcustom org-table-default-size "5x2"
"The default size for newly created tables, Columns x Rows."
- :group 'org-table
+ :group 'org-table-settings
:type 'string)
-(defcustom org-table-automatic-realign t
- "Non-nil means, automatically re-align table when pressing TAB or RETURN.
-When nil, aligning is only done with \\[org-table-align], or after column
-removal/insertion."
- :group 'org-table
- :type 'boolean)
-
(defcustom org-table-spaces-around-separators '(1 . 1)
"The number of spaces to be placed before and after separators."
- :group 'org-table
+ :group 'org-table-settings
:type '(cons (number :tag "Before \"|\"") (number :tag " After \"|\"")))
(defcustom org-table-spaces-around-invisible-separators '(1 . 2)
"The number of spaces to be placed before and after separators.
This option applies when the column separators have been made invisible."
- :group 'org-table
+ :group 'org-table-settings
:type '(cons (number :tag "Before \"|\"") (number :tag " After \"|\"")))
(defcustom org-table-number-regexp "^[<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%]*$"
@@ -1375,7 +616,7 @@ number:
12 12.2 2.4e-08 2x10^12 4.034+-0.02 2.7(10) >3.5
Other options offered by the customize interface are more restrictive."
- :group 'org-table
+ :group 'org-table-settings
:type '(choice
(const :tag "Positive Integers"
"^[0-9]+$")
@@ -1396,34 +637,54 @@ Other options offered by the customize interface are more restrictive."
In a column all non-white fields are considered. If at least this
fraction of fields is matched by `org-table-number-fraction',
alignment to the right border applies."
- :group 'org-table
+ :group 'org-table-settings
:type 'number)
-(defcustom org-export-highlight-first-table-line t
- "Non-nil means, highlight the first table line.
-In HTML export, this means use instead of | .
-In tables created with table.el, this applies to the first table line.
-In Org-mode tables, all lines before the first horizontal separator
-line will be formatted with | tags."
- :group 'org-table
+(defgroup org-table-editing nil
+ "Bahavior of tables during editing in Org-mode."
+ :tag "Org Table Editing"
+ :group 'org-table)
+
+(defcustom org-table-automatic-realign t
+ "Non-nil means, automatically re-align table when pressing TAB or RETURN.
+When nil, aligning is only done with \\[org-table-align], or after column
+removal/insertion."
+ :group 'org-table-editing
+ :type 'boolean)
+
+(defcustom org-table-limit-column-width t
+ "Non-nil means, allow to limit the width of table columns with fields."
+ :group 'org-table-editing
+ :type 'boolean)
+
+(defcustom org-table-auto-blank-field t
+ "Non-nil means, automatically blank table field when starting to type into it.
+This only happens when typing immediately after a field motion
+command (TAB, S-TAB or RET).
+Only relevant when `org-enable-table-editor' is equal to `optimized'."
+ :group 'org-table-editing
+ :type 'boolean)
+
+(defcustom org-table-tab-jumps-over-hlines t
+ "Non-nil means, tab in the last column of a table with jump over a hline.
+If a horizontal separator line is following the current line,
+`org-table-next-field' can either create a new row before that line, or jump
+over the line. When this option is nil, a new line will be created before
+this line."
+ :group 'org-table-editing
:type 'boolean)
(defcustom org-table-tab-recognizes-table.el t
"Non-nil means, TAB will automatically notice a table.el table.
When it sees such a table, it moves point into it and - if necessary -
calls `table-recognize-table'."
- :group 'org-table
- :type 'boolean)
-
-(defcustom org-table-limit-column-width t
- "Non-nil means, allow to limit the width of table columns with fields."
- :group 'org-table
+ :group 'org-table-editing
:type 'boolean)
(defgroup org-table-calculation nil
"Options concerning tables in Org-mode."
:tag "Org Table Calculation"
- :group 'org)
+ :group 'org-table)
(defcustom org-table-copy-increment t
"Non-nil means, increment when copying current field with \\[org-table-copy-down]."
@@ -1494,11 +755,809 @@ Automatically means, when TAB or RET or C-c C-c are pressed in the line."
:group 'org-table-calculation
:type 'boolean)
+(defgroup org-link nil
+ "Options concerning links in Org-mode."
+ :tag "Org Link"
+ :group 'org)
+
+(defcustom org-descriptive-links t
+ "Non-nil means, hide link part and only show description of bracket links.
+Bracket links are like [[link][descritpion]]. This variable sets the initial
+state in new org-mode buffers. The setting can then be toggled on a
+per-buffer basis from the Org->Hyperlinks menu."
+ :group 'org-link
+ :type 'boolean)
+
+(defcustom org-link-style 'bracket
+ "The style of links to be inserted with \\[org-insert-link].
+Possible values are:
+bracket [[link][description]]. This is recommended
+plain Description \\n link. The old way, no longer recommended."
+ :group 'org-link
+ :type '(choice
+ (const :tag "Bracket (recommended)" bracket)
+ (const :tag "Plain (no longer recommended)" plain)))
+
+(defcustom org-link-format "%s"
+ "Default format for external, URL-like linkes in the buffer.
+This is a format string for printf, %s will be replaced by the link text.
+The recommended value is just \"%s\", since links will be protected by
+enclosing them in double brackets. If you prefer plain links (see variable
+`org-link-style'), \"<%s>\" is useful. Some people also recommend an
+additional URL: prefix, so the format would be \"\"."
+ :group 'org-link
+ :type '(choice
+ (const :tag "\"%s\" (e.g. http://www.there.com)" "%s")
+ (const :tag "\"<%s>\" (e.g. )" "<%s>")
+ (const :tag "\"\" (e.g. )" "")
+ (string :tag "Other" :value "<%s>")))
+
+(defvaralias 'org-allow-space-in-links 'org-allow-space-in-plain-links)
+
+(defcustom org-allow-space-in-plain-links nil
+ "Non-nil means, space characters may be part of a plain text link.
+Space characters are no problem in links enclosed by double square brackets.
+But in plain text, if space is allowed, org-mode does not know where to
+terminate the link and reads until the end of the line.
+This variable exists only to force compatibility with old org-mode files.
+I discourage setting this to t, and support for this may not be available
+in the future.
+Changing this requires a restart of Emacs to become effective."
+ :group 'org-link
+ :type 'boolean)
+
+(defcustom org-radio-targets t
+ "Non-nil means activate text matching a link target.
+Radio targets are strings in triple angular brackets, like <<>>.
+When this option is set, any occurrence of \"my target\" in normal text
+becomes a link."
+ :group 'org-link
+ :type 'boolean)
+
+(defcustom org-activate-camels nil
+ "Non-nil means, treat words in CamelCase as in-file links.
+Changing this requires restart of Emacs to become effective."
+ :group 'org-link
+ :type 'boolean)
+
+(defgroup org-link-store nil
+ "Options concerning storing links in Org-mode"
+ :tag "Org Store Link"
+ :group 'org-link)
+
+(defcustom org-context-in-file-links t
+ "Non-nil means, file links from `org-store-link' contain context.
+A search string will be added to the file name with :: as separator and
+used to find the context when the link is activated by the command
+`org-open-at-point'.
+Using a prefix arg to the command \\[org-store-link] (`org-store-link')
+negates this setting for the duration of the command."
+ :group 'org-link-store
+ :type 'boolean)
+
+(defcustom org-file-link-context-use-camel-case nil
+ "Non-nil means, use CamelCase to store a search context in a file link.
+When nil, the search string simply consists of the words of the string.
+CamelCase is deprecated, and support for it may be dropped in the future."
+ :group 'org-link-store
+ :type 'boolean)
+
+(defcustom org-keep-stored-link-after-insertion nil
+ "Non-nil means, keep link in list for entire session.
+
+The command `org-store-link' adds a link pointing to the current
+location to an internal list. These links accumulate during a session.
+The command `org-insert-link' can be used to insert links into any
+Org-mode file (offering completion for all stored links). When this
+option is nil, every link which has been inserted once using \\[org-insert-link]
+will be removed from the list, to make completing the unused links
+more efficient."
+ :group 'org-link-store
+ :type 'boolean)
+
+(defcustom org-usenet-links-prefer-google nil
+ "Non-nil means, `org-store-link' will create web links to Google groups.
+When nil, Gnus will be used for such links.
+Using a prefix arg to the command \\[org-store-link] (`org-store-link')
+negates this setting for the duration of the command."
+ :group 'org-link-store
+ :type 'boolean)
+
+(defgroup org-link-follow nil
+ "Options concerning following links in Org-mode"
+ :tag "Org Follow Link"
+ :group 'org-link)
+
+(defcustom org-tab-follows-link nil
+ "Non-nil means, on links TAB will follow the link.
+Needs to be set before org.el is loaded."
+ :group 'org-link-follow
+ :type 'boolean)
+
+(defcustom org-return-follows-link nil
+ "Non-nil means, on links RET will follow the link.
+Needs to be set before org.el is loaded."
+ :group 'org-link-follow
+ :type 'boolean)
+
+(defcustom org-mark-ring-length 4
+ "Number of different positions to be recorded in the ring
+Changing this requires a restart of Emacs to work correctly."
+ :group 'org-link-follow
+ :type 'interger)
+
+(defcustom org-link-frame-setup
+ '((vm . vm-visit-folder-other-frame)
+ (gnus . gnus-other-frame)
+ (file . find-file-other-window))
+ "Setup the frame configuration for following links.
+When following a link with Emacs, it may often be useful to display
+this link in another window or frame. This variable can be used to
+set this up for the different types of links.
+For VM, use any of
+ `vm-visit-folder'
+ `vm-visit-folder-other-frame'
+For Gnus, use any of
+ `gnus'
+ `gnus-other-frame'
+For FILE, use any of
+ `find-file'
+ `find-file-other-window'
+ `find-file-other-frame'
+For the calendar, use the variable `calendar-setup'.
+For BBDB, it is currently only possible to display the matches in
+another window."
+ :group 'org-link-follow
+ :type '(list
+ (cons (const vm)
+ (choice
+ (const vm-visit-folder)
+ (const vm-visit-folder-other-window)
+ (const vm-visit-folder-other-frame)))
+ (cons (const gnus)
+ (choice
+ (const gnus)
+ (const gnus-other-frame)))
+ (cons (const file)
+ (choice
+ (const find-file)
+ (const find-file-other-window)
+ (const find-file-other-frame)))))
+
+(defcustom org-open-non-existing-files nil
+ "Non-nil means, `org-open-file' will open non-existing file.
+When nil, an error will be generated."
+ :group 'org-link-follow
+ :type 'boolean)
+
+(defcustom org-confirm-shell-links t
+ "Non-nil means, ask for confirmation before executing shell links.
+The default is true, to keep new users from shooting into their own foot."
+ :group 'org-link-follow
+ :type 'boolean)
+
+(defconst org-file-apps-defaults-gnu
+ '((t . mailcap))
+ "Default file applications on a UNIX or GNU/Linux system.
+See `org-file-apps'.")
+
+(defconst org-file-apps-defaults-macosx
+ '((t . "open %s")
+ ("ps" . "gv %s")
+ ("ps.gz" . "gv %s")
+ ("eps" . "gv %s")
+ ("eps.gz" . "gv %s")
+ ("dvi" . "xdvi %s")
+ ("fig" . "xfig %s"))
+ "Default file applications on a MacOS X system.
+The system \"open\" is known as a default, but we use X11 applications
+for some files for which the OS does not have a good default.
+See `org-file-apps'.")
+
+(defconst org-file-apps-defaults-windowsnt
+ '((t . (w32-shell-execute "open" file)))
+ "Default file applications on a Windows NT system.
+The system \"open\" is used for most files.
+See `org-file-apps'.")
+
+(defcustom org-file-apps
+ '(
+ ("txt" . emacs)
+ ("tex" . emacs)
+ ("ltx" . emacs)
+ ("org" . emacs)
+ ("el" . emacs)
+ )
+ "External applications for opening `file:path' items in a document.
+Org-mode uses system defaults for different file types, but
+you can use this variable to set the application for a given file
+extension. The entries in this list are cons cells with a file extension
+and the corresponding command. Possible values for the command are:
+ `emacs' The file will be visited by the current Emacs process.
+ `default' Use the default application for this file type.
+ string A command to be executed by a shell; %s will be replaced
+ by the path to the file.
+ sexp A Lisp form which will be evaluated. The file path will
+ be available in the Lisp variable `file'.
+For more examples, see the system specific constants
+`org-file-apps-defaults-macosx'
+`org-file-apps-defaults-windowsnt'
+`org-file-apps-defaults-gnu'."
+ :group 'org-link-follow
+ :type '(repeat
+ (cons (choice :value ""
+ (string :tag "Extension")
+ (const :tag "Default for unrecognized files" t)
+ (const :tag "Links to a directory" directory))
+ (choice :value ""
+ (const :tag "Visit with Emacs" emacs)
+ (const :tag "Use system default" default)
+ (string :tag "Command")
+ (sexp :tag "Lisp form")))))
+
+(defcustom org-mhe-search-all-folders nil
+ "Non-nil means, that the search for the mh-message will be extended to
+all folders if the message cannot be found in the folder given in the link.
+Searching all folders is very effective with one of the search engines
+supported by MH-E, but will be slow with pick."
+ :group 'org-link-follow
+ :type 'boolean)
+
+(defgroup org-remember nil
+ "Options concerning interaction with remember.el."
+ :tag "Org Remember"
+ :group 'org)
+
+(defcustom org-directory "~/org"
+ "Directory with org files.
+This directory will be used as default to prompt for org files.
+Used by the hooks for remember.el."
+ :group 'org-remember
+ :type 'directory)
+
+(defcustom org-default-notes-file "~/.notes"
+ "Default target for storing notes.
+Used by the hooks for remember.el. This can be a string, or nil to mean
+the value of `remember-data-file'."
+ :group 'org-remember
+ :type '(choice
+ (const :tag "Default from remember-data-file" nil)
+ file))
+
+(defcustom org-remember-templates nil
+ "Templates for the creation of remember buffers.
+When nil, just let remember make the buffer.
+When not nil, this is a list of 3-element lists. In each entry, the first
+element is a character, a unique key to select this template.
+The second element is the template. The third element is optional and can
+specify a destination file for remember items created with this template.
+The default file is given by `org-default-notes-file'.
+
+The template specifies the structure of the remember buffer. It should have
+a first line starting with a star, to act as the org-mode headline.
+Furthermore, the following %-escapes will be replaced with content:
+ %t time stamp, date only
+ %T time stamp with date and time
+ %u inactive time stamp, date only
+ %U inactive time stamp with date and time
+ %n user name
+ %a annotation, normally the link created with org-store-link
+ %i initial content, the region when remember is called with C-u.
+ If %i is indented, the entire inserted text will be indented as well.
+ %? This will be removed, and the cursor placed at this position."
+ :group 'org-remember
+ :type '(repeat :tag "enabled"
+ (list :value (?a "\n" nil)
+ (character :tag "Selection Key")
+ (string :tag "Template")
+ (file :tag "Destination file (optional)"))))
+
+(defcustom org-reverse-note-order nil
+ "Non-nil means, store new notes at the beginning of a file or entry.
+When nil, new notes will be filed to the end of a file or entry."
+ :group 'org-remember
+ :type '(choice
+ (const :tag "Reverse always" t)
+ (const :tag "Reverse never" nil)
+ (repeat :tag "By file name regexp"
+ (cons regexp boolean))))
+
+(defgroup org-todo nil
+ "Options concerning TODO items in Org-mode."
+ :tag "Org TODO"
+ :group 'org)
+
+(defcustom org-todo-keywords '("TODO" "DONE")
+ "List of TODO entry keywords.
+\\By default, this is '(\"TODO\" \"DONE\"). The last entry in the list is
+considered to mean that the entry is \"done\". All the other mean that
+action is required, and will make the entry show up in todo lists, diaries
+etc.
+The command \\[org-todo] cycles an entry through these states, and an
+additional state where no keyword is present. For details about this
+cycling, see also the variable `org-todo-interpretation'
+Changes become only effective after restarting Emacs."
+ :group 'org-todo
+ :group 'org-keywords
+ :type '(repeat (string :tag "Keyword")))
+
+(defcustom org-todo-interpretation 'sequence
+ "Controls how TODO keywords are interpreted.
+\\Possible values are `sequence' and `type'.
+This variable is only relevant if `org-todo-keywords' contains more than two
+states. There are two ways how these keywords can be used:
+
+- As a sequence in the process of working on a TODO item, for example
+ (setq org-todo-keywords '(\"TODO\" \"STARTED\" \"VERIFY\" \"DONE\")
+ org-todo-interpretation 'sequence)
+
+- As different types of TODO items, for example
+ (setq org-todo-keywords '(\"URGENT\" \"RELAXED\" \"REMIND\" \"FOR_TOM\" \"DONE\")
+ org-todo-interpretation 'type)
+
+When the states are interpreted as a sequence, \\[org-todo] always cycles
+to the next state, in order to walk through all different states. So with
+\\[org-todo], you turn an empty entry into the state TODO. When you started
+working on the item, you use \\[org-todo] again to switch it to \"STARTED\",
+later to VERIFY and finally to DONE.
+
+When the states are interpreted as types, \\[org-todo] still cycles through
+when it is called several times in direct succession, in order to initially
+select the type. However, if not called immediately after a previous
+\\[org-todo], it switches from each type directly to DONE. So with the
+above example, you could use `\\[org-todo] \\[org-todo]' to label an entry
+RELAXED. If you later return to this entry and press \\[org-todo] again,
+RELAXED will not be changed REMIND, but directly to DONE.
+
+You can create a large number of types. To initially select a
+type, it is then best to use \\[universal-argument] \\[org-todo] in order to specify the
+type with completion. Of course, you can also type the keyword
+directly into the buffer. M-TAB completes TODO keywords at the
+beginning of a headline."
+ :group 'org-todo
+ :group 'org-keywords
+ :type '(choice (const sequence)
+ (const type)))
+
+(defcustom org-after-todo-state-change-hook nil
+ "Hook which is run after the state of a TODO item was changed.
+The new state (a string with a TODO keyword, or nil) is available in the
+Lisp variable `state'."
+ :group 'org-todo
+ :type 'hook)
+
+(defcustom org-log-done nil
+ "When set, insert a (non-active) time stamp when TODO entry is marked DONE.
+When the state of an entry is changed from nothing to TODO, remove a previous
+closing date."
+ :group 'org-todo
+ :type 'boolean)
+
+;; FIXME: Correct to put this into the TODO group???
+(defgroup org-priorities nil
+ "Keywords in Org-mode."
+ :tag "Org Priorities"
+ :group 'org-todo)
+
+(defcustom org-default-priority ?B
+ "The default priority of TODO items.
+This is the priority an item get if no explicit priority is given."
+ :group 'org-priorities
+ :type 'character)
+
+(defcustom org-lowest-priority ?C
+ "The lowest priority of TODO items. A character like ?A, ?B etc."
+ :group 'org-priorities
+ :type 'character)
+
+;; FIXME: move to agenda?????
+(defvar org-category nil
+ "Variable used by org files to set a category for agenda display.
+Such files should use a file variable to set it, for example
+
+ -*- mode: org; org-category: \"ELisp\"
+
+or contain a special line
+
+#+CATEGORY: ELisp
+
+If the file does not specify a category, then file's base name
+is used instead.")
+(make-variable-buffer-local 'org-category)
+
+(defgroup org-time nil
+ "Options concerning time stamps and deadlines in Org-mode."
+ :tag "Org Time"
+ :group 'org)
+
+(defconst org-time-stamp-formats '("<%Y-%m-%d %a>" . "<%Y-%m-%d %a %H:%M>")
+ "Formats for `format-time-string' which are used for time stamps.
+It is not recommended to change this constant.")
+
+(defcustom org-time-stamp-rounding-minutes 0
+ "Number of minutes to round time stamps to upon insertion.
+When zero, insert the time unmodified. Useful rounding numbers
+should be factors of 60, so for example 5, 10, 15.
+When this is not zero, you can still force an exact time-stamp by using
+a double prefix argument to a time-stamp command like `C-c .' or `C-c !'."
+ :group 'org-time
+ :type 'integer)
+
+(defcustom org-deadline-warning-days 30
+ "No. of days before expiration during which a deadline becomes active.
+This variable governs the display in the org file."
+ :group 'org-time
+ :type 'number)
+
+(defcustom org-popup-calendar-for-date-prompt t
+ "Non-nil means, pop up a calendar when prompting for a date.
+In the calendar, the date can be selected with mouse-1. However, the
+minibuffer will also be active, and you can simply enter the date as well.
+When nil, only the minibuffer will be available."
+ :group 'org-time
+ :type 'boolean)
+
+(defcustom org-calendar-follow-timestamp-change t
+ "Non-nil means, make the calendar window follow timestamp changes.
+When a timestamp is modified and the calendar window is visible, it will be
+moved to the new date."
+ :group 'org-time
+ :type 'boolean)
+
+(defgroup org-tags nil
+ "Options concerning startup of Org-mode."
+ :tag "Org Tags"
+ :group 'org)
+
+(defcustom org-tags-column 48
+ "The column to which tags should be indented in a headline.
+If this number is positive, it specifies the column. If it is negative,
+it means that the tags should be flushright to that column. For example,
+-79 works well for a normal 80 character screen."
+ :group 'org-tags
+ :type 'integer)
+
+(defcustom org-auto-align-tags t
+ "Non-nil means, realign tags after pro/demotion of TODO state change.
+These operations change the length of a headline and therefore shift
+the tags around. With this options turned on, after each such operation
+the tags are again aligned to `org-tags-column'."
+ :group 'org-tags
+ :type 'boolean)
+
+(defcustom org-use-tag-inheritance t
+ "Non-nil means, tags in levels apply also for sublevels.
+When nil, only the tags directly given in a specific line apply there.
+If you turn off this option, you very likely want to turn on the
+companion option `org-tags-match-list-sublevels'."
+ :group 'org-tags
+ :type 'boolean)
+
+(defcustom org-tags-match-list-sublevels nil
+ "Non-nil means list also sublevels of headlines matching tag search.
+Because of tag inheritance (see variable `org-use-tag-inheritance'),
+the sublevels of a headline matching a tag search often also match
+the same search. Listing all of them can create very long lists.
+Setting this variable to nil causes subtrees to be skipped.
+This option is off by default, because inheritance in on. If you turn
+inheritance off, you very likely want to turn this option on.
+
+As a special case, if the tag search is restricted to TODO items, the
+value of this variable is ignored and sublevels are always checked, to
+make sure all corresponding TODO items find their way into the list."
+ :group 'org-tags
+ :type 'boolean)
+
+(defvar org-tags-history nil
+ "History of minibuffer reads for tags.")
+(defvar org-last-tags-completion-table nil
+ "The last used completion table for tags.")
+
+(defgroup org-agenda nil
+ "Options concerning agenda display Org-mode."
+ :tag "Org Agenda"
+ :group 'org)
+
+(defcustom org-agenda-files nil
+ "The files to be used for agenda display.
+Entries may be added to this list with \\[org-agenda-file-to-front] and removed with
+\\[org-remove-file]. You can also use customize to edit the list.
+
+If the value of the variable is not a list but a single file name, then
+the list of agenda files is actually stored in that file, one agenda file
+per line"
+ :group 'org-agenda
+ :type '(choice
+ (repeat :tag "List of files" file)
+ (file :tag "Store list in a file\n" :value "~/.agenda_files")))
+
+(defcustom org-agenda-custom-commands '(("w" todo "WAITING"))
+ "Custom commands for the agenda.
+These commands will be offered on the splash screen displayed by the
+agenda dispatcher \\[org-agenda]. Each entry is a list of 3 items:
+
+key The key (a single char as a string) to be associated with the command.
+type The command type, any of the following symbols:
+ todo Entries with a specific TODO keyword, in all agenda files.
+ tags Tags match in all agenda files.
+ todo-tree Sparse tree of specific TODO keyword in *current* file.
+ tags-tree Sparse tree with all tags matches in *current* file.
+ occur-tree Occur sparse tree for current file.
+match What to search for:
+ - a single keyword for TODO keyword searches
+ - a tags match expression for tags searches
+ - a regular expression for occur searches"
+ :group 'org-agenda
+ :type '(repeat
+ (list (string :tag "Key")
+ (choice :tag "Type"
+ (const :tag "Tags search in all agenda files" tags)
+ (const :tag "TODO keyword search in all agenda files" todo)
+ (const :tag "Tags sparse tree in current buffer" tags-tree)
+ (const :tag "TODO keyword tree in current buffer" todo-tree)
+ (const :tag "Occur tree in current buffer" occur-tree))
+ (string :tag "Match"))))
+
+(defcustom org-agenda-include-all-todo t
+ "Non-nil means, the agenda will always contain all TODO entries.
+When nil, date-less entries will only be shown if `org-agenda' is called
+with a prefix argument.
+When non-nil, the TODO entries will be listed at the top of the agenda, before
+the entries for specific days."
+ :group 'org-agenda
+ :type 'boolean)
+
+(defcustom org-agenda-include-diary nil
+ "If non-nil, include in the agenda entries from the Emacs Calendar's diary."
+ :group 'org-agenda
+ :type 'boolean)
+
+(defcustom org-calendar-to-agenda-key [?c]
+ "The key to be installed in `calendar-mode-map' for switching to the agenda.
+The command `org-calendar-goto-agenda' will be bound to this key. The
+default is the character `c' because then `c' can be used to switch back and
+forth between agenda and calendar."
+ :group 'org-agenda
+ :type 'sexp)
+
+(defgroup org-agenda-window-setup nil
+ "Options concerning setting up the Agenda window in Org Mode."
+ :tag "Org Agenda Window Setup"
+ :group 'org-agenda)
+
+(defcustom org-select-timeline-window t
+ "Non-nil means, after creating a timeline, move cursor into Timeline window.
+When nil, cursor will remain in the current window."
+ :group 'org-agenda-window-setup
+ :type 'boolean)
+
+(defcustom org-select-agenda-window t
+ "Non-nil means, after creating an agenda, move cursor into Agenda window.
+When nil, cursor will remain in the current window."
+ :group 'org-agenda-window-setup
+ :type 'boolean)
+
+(defcustom org-fit-agenda-window t
+ "Non-nil means, change window size of agenda to fit content."
+ :group 'org-agenda-window-setup
+ :type 'boolean)
+
+(defgroup org-agenda-display nil
+ "Options concerning what to display initially in Agenda."
+ :tag "Org Agenda Display"
+ :group 'org-agenda)
+
+(defcustom org-agenda-show-all-dates t
+ "Non-nil means, `org-agenda' shows every day in the selected range.
+When nil, only the days which actually have entries are shown."
+ :group 'org-agenda-display
+ :type 'boolean)
+
+(defcustom org-agenda-start-on-weekday 1
+ "Non-nil means, start the overview always on the specified weekday.
+0 Denotes Sunday, 1 denotes Monday etc.
+When nil, always start on the current day."
+ :group 'org-agenda-display
+ :type '(choice (const :tag "Today" nil)
+ (number :tag "Weekday No.")))
+
+(defcustom org-agenda-ndays 7
+ "Number of days to include in overview display.
+Should be 1 or 7."
+ :group 'org-agenda-display
+ :type 'number)
+
+(defcustom org-agenda-use-time-grid t
+ "Non-nil means, show a time grid in the agenda schedule.
+A time grid is a set of lines for specific times (like every two hours between
+8:00 and 20:00). The items scheduled for a day at specific times are
+sorted in between these lines.
+For details about when the grid will be shown, and what it will look like, see
+the variable `org-agenda-time-grid'."
+ :group 'org-agenda-display
+ :type 'boolean)
+
+(defcustom org-agenda-time-grid
+ '((daily today require-timed)
+ "----------------"
+ (800 1000 1200 1400 1600 1800 2000))
+
+ "The settings for time grid for agenda display.
+This is a list of three items. The first item is again a list. It contains
+symbols specifying conditions when the grid should be displayed:
+
+ daily if the agenda shows a single day
+ weekly if the agenda shows an entire week
+ today show grid on current date, independent of daily/weekly display
+ require-timed show grid only if at least on item has a time specification
+
+The second item is a string which will be places behing the grid time.
+
+The third item is a list of integers, indicating the times that should have
+a grid line."
+ :group 'org-agenda-display
+ :type
+ '(list
+ (set :greedy t :tag "Grid Display Options"
+ (const :tag "Show grid in single day agenda display" daily)
+ (const :tag "Show grid in weekly agenda display" weekly)
+ (const :tag "Always show grid for today" today)
+ (const :tag "Show grid only if any timed entries are present"
+ require-timed)
+ (const :tag "Skip grid times already present in an entry"
+ remove-match))
+ (string :tag "Grid String")
+ (repeat :tag "Grid Times" (integer :tag "Time"))))
+
+(defcustom org-agenda-sorting-strategy '(time-up category-keep priority-down)
+ "Sorting structure for the agenda items of a single day.
+This is a list of symbols which will be used in sequence to determine
+if an entry should be listed before another entry. The following
+symbols are recognized:
+
+time-up Put entries with time-of-day indications first, early first
+time-down Put entries with time-of-day indications first, late first
+category-keep Keep the default order of categories, corresponding to the
+ sequence in `org-agenda-files'.
+category-up Sort alphabetically by category, A-Z.
+category-down Sort alphabetically by category, Z-A.
+priority-up Sort numerically by priority, high priority last.
+priority-down Sort numerically by priority, high priority first.
+
+The different possibilities will be tried in sequence, and testing stops
+if one comparison returns a \"not-equal\". For example, the default
+ '(time-up category-keep priority-down)
+means: Pull out all entries having a specified time of day and sort them,
+in order to make a time schedule for the current day the first thing in the
+agenda listing for the day. Of the entries without a time indication, keep
+the grouped in categories, don't sort the categories, but keep them in
+the sequence given in `org-agenda-files'. Within each category sort by
+priority.
+
+Leaving out `category-keep' would mean that items will be sorted across
+categories by priority."
+ :group 'org-agenda-display
+ :type '(repeat
+ (choice
+ (const time-up)
+ (const time-down)
+ (const category-keep)
+ (const category-up)
+ (const category-down)
+ (const priority-up)
+ (const priority-down))))
+
+(defcustom org-sort-agenda-notime-is-late t
+ "Non-nil means, items without time are considered late.
+This is only relevant for sorting. When t, items which have no explicit
+time like 15:30 will be considered as 24:01, i.e. later than any items which
+do have a time. When nil, the default time is before 0:00. You can use this
+option to decide if the schedule for today should come before or after timeless
+agenda entries."
+ :group 'org-agenda-display
+ :type 'boolean)
+
+
+(defgroup org-agenda-prefix nil
+ "Options concerning the entry prefix in the Org-mode agenda display."
+ :tag "Org Agenda Prefix"
+ :group 'org-agenda)
+
+(defcustom org-agenda-prefix-format " %-12:c%?-12t% s"
+ "Format specification for the prefix of items in the agenda buffer.
+This format works similar to a printf format, with the following meaning:
+
+ %c the category of the item, \"Diary\" for entries from the diary, or
+ as given by the CATEGORY keyword or derived from the file name.
+ %T the first tag of the item.
+ %t the time-of-day specification if one applies to the entry, in the
+ format HH:MM
+ %s Scheduling/Deadline information, a short string
+
+All specifiers work basically like the standard `%s' of printf, but may
+contain two additional characters: A question mark just after the `%' and
+a whitespace/punctuation character just before the final letter.
+
+If the first character after `%' is a question mark, the entire field
+will only be included if the corresponding value applies to the
+current entry. This is useful for fields which should have fixed
+width when present, but zero width when absent. For example,
+\"%?-12t\" will result in a 12 character time field if a time of the
+day is specified, but will completely disappear in entries which do
+not contain a time.
+
+If there is punctuation or whitespace character just before the final
+format letter, this character will be appended to the field value if
+the value is not empty. For example, the format \"%-12:c\" leads to
+\"Diary: \" if the category is \"Diary\". If the category were be
+empty, no additional colon would be interted.
+
+The default value of this option is \" %-12:c%?-12t% s\", meaning:
+- Indent the line with two space characters
+- Give the category in a 12 chars wide field, padded with whitespace on
+ the right (because of `-'). Append a colon if there is a category
+ (because of `:').
+- If there is a time-of-day, put it into a 12 chars wide field. If no
+ time, don't put in an empty field, just skip it (because of '?').
+- Finally, put the scheduling information and append a whitespace.
+
+As another example, if you don't want the time-of-day of entries in
+the prefix, you could use:
+
+ (setq org-agenda-prefix-format \" %-11:c% s\")
+
+See also the variables `org-agenda-remove-times-when-in-prefix' and
+`org-agenda-remove-tags-when-in-prefix'."
+ :type 'string
+ :group 'org-agenda-prefix)
+
+(defcustom org-timeline-prefix-format " % s"
+ "Like `org-agenda-prefix-format', but for the timeline of a single file."
+ :type 'string
+ :group 'org-agenda-prefix)
+
+(defvar org-prefix-format-compiled nil
+ "The compiled version of the most recently used prefix format.
+Depending on which command was used last, this may be the compiled version
+of `org-agenda-prefix-format' or `org-timeline-prefix-format'.")
+
+(defcustom org-agenda-remove-times-when-in-prefix t
+ "Non-nil means, remove duplicate time specifications in agenda items.
+When the format `org-agenda-prefix-format' contains a `%t' specifier, a
+time-of-day specification in a headline or diary entry is extracted and
+placed into the prefix. If this option is non-nil, the original specification
+\(a timestamp or -range, or just a plain time(range) specification like
+11:30-4pm) will be removed for agenda display. This makes the agenda less
+cluttered.
+The option can be t or nil. It may also be the symbol `beg', indicating
+that the time should only be removed what it is located at the beginning of
+the headline/diary entry."
+ :group 'org-agenda-prefix
+ :type '(choice
+ (const :tag "Always" t)
+ (const :tag "Never" nil)
+ (const :tag "When at beginning of entry" beg)))
+
+(defcustom org-agenda-remove-tags-when-in-prefix nil
+ "Non-nil means, the tags from copy of headline in agenda.
+When this is the symbol `prefix', only remove tags when
+`org-agenda-prefix-format' contains a `%T' specifier."
+ :group 'org-agenda-prefix
+ :type '(choice
+ (const :tag "Always" t)
+ (const :tag "Never" nil)
+ (const :tag "When prefix format contains %T" prefix)))
+
(defgroup org-export nil
"Options for exporting org-listings."
:tag "Org Export"
:group 'org)
+(defgroup org-export-general nil
+ "General options for exporting Org-mode files."
+ :tag "Org Export General"
+ :group 'org-export)
+
(defcustom org-export-language-setup
'(("en" "Author" "Date" "Table of Contents")
("da" "Ophavsmand" "Dato" "Indhold")
@@ -1512,7 +1571,7 @@ Automatically means, when TAB or RET or C-c C-c are pressed in the line."
"Terms used in export text, translated to different languages.
Use the variable `org-export-default-language' to set the language,
or use the +OPTION lines for a per-file setting."
- :group 'org-export
+ :group 'org-export-general
:type '(repeat
(list
(string :tag "HTML language tag")
@@ -1523,9 +1582,208 @@ or use the +OPTION lines for a per-file setting."
(defcustom org-export-default-language "en"
"The default language of HTML export, as a string.
This should have an association in `org-export-language-setup'."
- :group 'org-export
+ :group 'org-export-general
:type 'string)
+(defcustom org-export-headline-levels 3
+ "The last level which is still exported as a headline.
+Inferior levels will produce itemize lists when exported.
+Note that a numeric prefix argument to an exporter function overrides
+this setting.
+
+This option can also be set with the +OPTIONS line, e.g. \"H:2\"."
+ :group 'org-export-general
+ :type 'number)
+
+(defcustom org-export-with-section-numbers t
+ "Non-nil means, add section numbers to headlines when exporting.
+
+This option can also be set with the +OPTIONS line, e.g. \"num:t\"."
+ :group 'org-export-general
+ :type 'boolean)
+
+(defcustom org-export-with-toc t
+ "Non-nil means, create a table of contents in exported files.
+The TOC contains headlines with levels up to`org-export-headline-levels'.
+
+Headlines which contain any TODO items will be marked with \"(*)\" in
+ASCII export, and with red color in HTML output.
+
+In HTML output, the TOC will be clickable.
+
+This option can also be set with the +OPTIONS line, e.g. \"toc:nil\"."
+ :group 'org-export-general
+ :type 'boolean)
+
+(defcustom org-export-plain-list-max-depth 20
+ "Maximum depth of hand-formatted lists in HTML export.
+
+Org-mode parses hand-formatted enumeration and bullet lists and
+transforms them to HTML open export. Different indentation of the
+bullet or number indicates different list nesting levels. To avoid
+confusion, only a single level is allowed by default. When this is
+larger than 1, deeper indentation leads to deeper list nesting. For
+example, the default value of 3 allows the following list to be
+formatted correctly in HTML:
+
+ * Fruit
+ - Apple
+ - Banana
+ 1. from Africa
+ 2. from South America
+ - Pineapple
+ * Bread
+ * Dairy products"
+ :group 'org-export-general
+ :type 'integer)
+
+(defcustom org-export-preserve-breaks nil
+ "Non-nil means, preserve all line breaks when exporting.
+Normally, in HTML output paragraphs will be reformatted. In ASCII
+export, line breaks will always be preserved, regardless of this variable.
+
+This option can also be set with the +OPTIONS line, e.g. \"\\n:t\"."
+ :group 'org-export-general
+ :type 'boolean)
+
+(defcustom org-export-with-emphasize t
+ "Non-nil means, interpret *word*, /word/, and _word_ as emphasized text.
+If the export target supports emphasizing text, the word will be
+typeset in bold, italic, or underlined, respectively. Works only for
+single words, but you can say: I *really* *mean* *this*.
+Not all export backends support this.
+
+This option can also be set with the +OPTIONS line, e.g. \"*:nil\"."
+ :group 'org-export-general
+ :type 'boolean)
+
+;; FIXME: Is this in the right place????
+(defcustom org-match-sexp-depth 3
+ "Number of stacked braces for sub/superscript matching.
+This has to be set before loading org.el to be effective."
+ :group 'org-export-general
+ :type 'integer)
+
+(defcustom org-export-with-sub-superscripts t
+ "Non-nil means, interpret \"_\" and \"^\" for export.
+When this option is turned on, you can use TeX-like syntax for sub- and
+superscripts. Several characters after \"_\" or \"^\" will be
+considered as a single item - so grouping with {} is normally not
+needed. For example, the following things will be parsed as single
+sub- or superscripts.
+
+ 10^24 or 10^tau several digits will be considered 1 item.
+ 10^-12 or 10^-tau a leading sign with digits or a word
+ x^2-y^3 will be read as x^2 - y^3, because items are
+ terminated by almost any nonword/nondigit char.
+ x_{i^2} or x^(2-i) braces or parenthesis do grouping.
+
+Still, ambiguity is possible - so when in doubt use {} to enclose the
+sub/superscript.
+Not all export backends support this.
+
+This option can also be set with the +OPTIONS line, e.g. \"^:nil\"."
+ :group 'org-export-general
+ :type 'boolean)
+
+(defcustom org-export-with-TeX-macros t
+ "Non-nil means, interpret simple TeX-like macros when exporting.
+For example, HTML export converts \\alpha to α and \\AA to Å.
+No only real TeX macros will work here, but the standard HTML entities
+for math can be used as macro names as well. For a list of supported
+names in HTML export, see the constant `org-html-entities'.
+Not all export backends support this.
+
+This option can also be set with the +OPTIONS line, e.g. \"TeX:nil\"."
+ :group 'org-export-general
+ :type 'boolean)
+
+(defcustom org-export-with-fixed-width t
+ "Non-nil means, lines starting with \":\" will be in fixed width font.
+This can be used to have pre-formatted text, fragments of code etc. For
+example:
+ : ;; Some Lisp examples
+ : (while (defc cnt)
+ : (ding))
+will be looking just like this in also HTML.
+Not all export backends support this.
+
+This option can also be set with the +OPTIONS line, e.g. \"::nil\"."
+ :group 'org-export-general
+ :type 'boolean)
+
+(defcustom org-export-with-tables t
+ "If non-nil, lines starting with \"|\" define a table.
+For example:
+
+ | Name | Address | Birthday |
+ |-------------+----------+-----------|
+ | Arthur Dent | England | 29.2.2100 |
+
+Not all export backends support this.
+
+This option can also be set with the +OPTIONS line, e.g. \"|:nil\"."
+ :group 'org-export-general
+ :type 'boolean)
+
+(defcustom org-export-highlight-first-table-line t
+ "Non-nil means, highlight the first table line.
+In HTML export, this means use instead of | .
+In tables created with table.el, this applies to the first table line.
+In Org-mode tables, all lines before the first horizontal separator
+line will be formatted with | tags."
+ :group 'org-export-general
+ :type 'boolean)
+
+(defcustom org-export-table-remove-special-lines t
+ "Remove special lines and marking characters in calculating tables.
+This removes the special marking character column from tables that are set
+up for spreadsheet calculations. It also removes the entire lines
+marked with `!', `_', or `^'. The lines with `$' are kept, because
+the values of constants may be useful to have."
+ :group 'org-export-general
+ :type 'boolean)
+
+(defcustom org-export-prefer-native-exporter-for-tables nil
+ "Non-nil means, always export tables created with table.el natively.
+Natively means, use the HTML code generator in table.el.
+When nil, Org-mode's own HTML generator is used when possible (i.e. if
+the table does not use row- or column-spanning). This has the
+advantage, that the automatic HTML conversions for math symbols and
+sub/superscripts can be applied. Org-mode's HTML generator is also
+much faster."
+ :group 'org-export-general
+ :type 'boolean)
+
+(defgroup org-export-ascii nil
+ "Options specific for ASCII export of Org-mode files."
+ :tag "Org Export ASCII"
+ :group 'org-export)
+
+(defcustom org-export-ascii-show-new-buffer t
+ "Non-nil means, popup buffer containing the exported ASCII text.
+Otherwise the buffer will just be saved to a file and stay hidden."
+ :group 'org-export-ascii
+ :type 'boolean)
+
+(defgroup org-export-xml nil
+ "Options specific for XML export of Org-mode files."
+ :tag "Org Export XML"
+ :group 'org-export)
+
+(defcustom org-export-xml-type 'xoxo
+ "The kind of XML to be produced by the XML exporter.
+Allowed values are:
+xoxo The XOXO exporter."
+ :group 'org-export-xml
+ :type '(choice
+ (const :tag "XOXO" xoxo)))
+
+(defgroup org-export-html nil
+ "Options specific for HTML export of Org-mode files."
+ :tag "Org Export HTML"
+ :group 'org-export)
+
(defcustom org-export-html-style
" | |