# HG changeset patch # User Karoly Lorentey # Date 1144863636 0 # Node ID 24cf4bf418dcc568fe2d24f662bdd0619d0ad8b4 # Parent cc8354d6fe8726516744f9e3d35dc35ffa84c443# Parent d0312c3f2374c7f64619b89a6547e3490bcf5b45 Merged from emacs@sv.gnu.org Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-207 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-208 Sync from erc--emacs--0 * emacs@sv.gnu.org/emacs--devo--0--patch-209 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-210 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-211 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-212 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-213 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-214 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-215 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-81 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-82 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-83 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-549 diff -r cc8354d6fe87 -r 24cf4bf418dc admin/FOR-RELEASE --- a/admin/FOR-RELEASE Mon Apr 10 15:09:46 2006 +0000 +++ b/admin/FOR-RELEASE Wed Apr 12 17:40:36 2006 +0000 @@ -33,6 +33,10 @@ * BUGS +** Stefan Monnier's March 20 bug report about 3d boxes in header line. + +** Is there a basic problem with cl-byte-compile-compiler-macro? + ** Markus Gritsch's report about Emacs looping on Windoze with the following .emacs file, and then reduce Emacs frame width to "something quite narrow": (setq-default truncate-lines t) diff -r cc8354d6fe87 -r 24cf4bf418dc etc/ChangeLog --- a/etc/ChangeLog Mon Apr 10 15:09:46 2006 +0000 +++ b/etc/ChangeLog Wed Apr 12 17:40:36 2006 +0000 @@ -1,3 +1,17 @@ +2006-04-11 Carsten Dominik + + * orgcard.tex: (section{Tables}): Document column narrowing. + (section{Links}): Document bracket links. + +2006-04-11 Kenichi Handa + + * PROBLEMS (C-SPC fails ...): Add description for fcitx. + +2006-04-10 Bill Wohler + + * NEWS: Add package-version keyword to `defcustom' and mention + associated variable `customize-package-emacs-version-alist'. + 2006-04-07 Reiner Steib * NEWS: Add string-or-null-p. diff -r cc8354d6fe87 -r 24cf4bf418dc etc/NEWS --- a/etc/NEWS Mon Apr 10 15:09:46 2006 +0000 +++ b/etc/NEWS Wed Apr 12 17:40:36 2006 +0000 @@ -3692,6 +3692,12 @@ ** defcustom changes: +++ +*** The package-version keyword has been added to provide +`customize-changed-options' functionality to packages in the future. +Developers who make use of this keyword must also update the new +variable `customize-package-emacs-version-alist'. + ++++ *** The new customization type `float' requires a floating point number. ** String changes: @@ -3961,6 +3967,12 @@ properties--any specified text properties are discarded. +++ +*** The variable `enable-local-variables' controls how local variable +lists are handled. t, the default, specifies the standard querying +behavior. :safe means use only safe values, and ignore the rest. +nil means ignore them all. Anything else means always query. + ++++ *** The variable `safe-local-eval-forms' specifies a list of forms that are ok to evaluate when they appear in an `eval' local variables specification. Normally Emacs asks for confirmation before evaluating @@ -10784,9 +10796,6 @@ editing SQL files, and M-x sql-interactive-mode for interacting with SQL interpreters. It has an entry on `auto-mode-alist'. -*** M-x highlight-changes-mode provides a minor mode displaying buffer -changes with a special face. - *** ispell4.el has been deleted. It got in the way of ispell.el and this was hard to fix reliably. It has long been obsolete -- use Ispell 3.1 and ispell.el. diff -r cc8354d6fe87 -r 24cf4bf418dc etc/PROBLEMS --- a/etc/PROBLEMS Mon Apr 10 15:09:46 2006 +0000 +++ b/etc/PROBLEMS Wed Apr 12 17:40:36 2006 +0000 @@ -991,7 +991,7 @@ Use the shell command `xset bc' to make the old X Menu package work. -*** C-SPC fails to work on Fedora GNU/Linux. +*** C-SPC fails to work on Fedora GNU/Linux (or with some input method). Fedora Core 4 steals the C-SPC key by default for the `iiimx' program which is the input method for some languages. It blocks Emacs users @@ -1005,6 +1005,12 @@ Another is to build Emacs with the `--without-xim' configure option. +The same problem happens on any other system if you are using fcitx +(Chinese input method) which by default use C-SPC for toggling. If +you want to use fcitx with Emacs, you have two choices. Toggle fcitx +by another key (e.g. C-\) by modifying ~/.fcitx/config, or be +accustomed to use C-@ for `set-mark-command'. + *** M-SPC seems to be ignored as input. See if your X server is set up to use this as a command diff -r cc8354d6fe87 -r 24cf4bf418dc etc/orgcard.tex --- a/etc/orgcard.tex Mon Apr 10 15:09:46 2006 +0000 +++ b/etc/orgcard.tex Wed Apr 12 17:40:36 2006 +0000 @@ -1,4 +1,6 @@ -% Reference Card for Org Mode 4.10 +% Reference Card for Org Mode +\def\orgversionnumber{4.21} +\def\year{2006} % %**start of header \newcount\columnsperpage @@ -58,9 +60,6 @@ % Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik % for their many good ideas. -\def\orgversionnumber{4.10} -\def\year{2006} - \def\shortcopyrightnotice{\vskip 1ex plus 2 fill \centerline{\small \copyright\ 2004, 2005, 2006\ Free Software Foundation, Inc. Permissions on back. v\orgversionnumber}} @@ -367,10 +366,8 @@ \key{insert SCHEDULED timestamp}{C-c C-s} \key{create sparse tree with all deadlines due}{C-c C-w} \key{the time between 2 dates in a time range}{C-c C-y} -\key{change timestamp at cursor by $-1$ day}{S-LEFT$^4$} -\key{change timestamp at cursor by $+1$ day}{S-RIGHT$^4$} -\key{change year/month/day at cursor by $-1$}{S-DOWN$^4$} -\key{change year/month/day at cursor by $+1$}{S-UP$^4$} +\key{change timestamp at cursor by $\pm 1$ day}{S-RIGHT/LEFT$^4$} +\key{change year/month/day at cursor by $\pm 1$}{S-UP/DOWN$^4$} \key{access the calendar for the current date}{C-c >} \key{insert timestamp matching date in calendar}{C-c <} \key{access agenda for current date}{C-c C-o} @@ -386,6 +383,7 @@ \key{globally store link to the current location}{C-c l$^2$} \key{insert a link (TAB completes stored links)}{C-c C-l} \key{insert file link with file name completion}{C-u C-c C-l} +\key{edit (also hidden part of) link at point}{C-c C-l} \key{open file links in emacs (\kbd{C-u} : in emacs)}{C-c C-o} \key{open link at point (3: in emacs)}{mouse-2/3} @@ -399,24 +397,26 @@ \key{\kbd{<<>>}}{\rm radio target$^3$} \key{\kbd{[[*this text]]}}{\rm find headline} \metax{\kbd{[[this text]]}}{\rm find target or text in buffer} +\metax{\kbd{[[this text][description]]}}{\rm optional link text} {\bf External Links} -\key{\kbd{}}{\rm file, absolute} -\key{\kbd{}}{\rm file, relative} -\key{\kbd{}}{\rm find headline} -\key{\kbd{}}{\rm find tgt/string} -\key{\kbd{}}{\rm regexp search} -\key{\kbd{}}{\rm on the web} -\key{\kbd{}}{\rm EMail address} -\key{\kbd{}}{\rm Usenet group} -\key{\kbd{}}{\rm BBDB person} -\key{\kbd{}}{\rm shell command} -\key{\kbd{}}{\rm GNUS group} -\key{\kbd{}}{\rm GNUS message} -\key{\kbd{}}{\rm Mail folder} -\key{\kbd{}}{\rm Mail message} -%\key{\kbd{}}{\rm VM remote} +\key{\kbd{file:/home/dominik/img/mars.jpg}}{\rm file, absolute} +\key{\kbd{file:papers/last.pdf}}{\rm file, relative} +\key{\kbd{file:projects.org::*that text}}{\rm find headline} +\key{\kbd{file:projects.org::find me}}{\rm find tgt/string} +\key{\kbd{file:projects.org::/regexp/}}{\rm regexp search} +\key{\kbd{http://www.astro.uva.nl/~dominik}}{\rm on the web} +\key{\kbd{mailto:adent@galaxy.net}}{\rm EMail address} +\key{\kbd{news:comp.emacs}}{\rm Usenet group} +\key{\kbd{bbdb:Richard Stallman}}{\rm BBDB person} +\key{\kbd{shell:ls *.org}}{\rm shell command} +\key{\kbd{gnus:group}}{\rm GNUS group} +\key{\kbd{gnus:group\#id}}{\rm GNUS message} +\key{\kbd{vm|wl|mhe|rmail:folder}}{\rm Mail folder} +\key{\kbd{vm|wl|mhe|rmail:folder\#id}}{\rm Mail message} +\metax{\kbd{[[external link][description]]}}{\rm optional link text} +%\key{\kbd{vm://myself@some.where.org/folder\#id}}{\rm VM remote} \section{Tables} @@ -425,11 +425,10 @@ {\bf Creating a table} -\metax{insert a new Org-mode table}{M-x org-table-create} -\metax{... or just start typing, e.g.}{|Name|Phone|Age RET |- TAB} -\key{convert region to table}{C-c C-c} -\key{... separator at least 3 spaces}{C-3 C-c C-c} -%\key{... prompt for separator regexp}{C-u C-c C-c} +%\metax{insert a new Org-mode table}{M-x org-table-create} +\metax{just start typing, e.g.}{|Name|Phone|Age RET |- TAB} +\key{convert region to table}{C-c |} +\key{... separator at least 3 spaces}{C-3 C-c |} {\bf Commands available inside tables} @@ -465,9 +464,7 @@ \key{paste rectangular region}{C-c C-x C-y} \key{fill paragraph across selected cells}{C-c C-q} -{\bf Calculations} - -These need the Emacs calc package installed. +{\bf Calculations} (in combination with Emacs \kbd{calc} package) \key{set and eval column formula}{C-c =} \key{set and eval named-field formula}{C-u C-c =} @@ -475,8 +472,8 @@ \key{re-apply all stored equations to current line}{C-c *} \key{re-apply all stored equations to entire table}{C-u C-c *} -\kbd{TAB}, \kbd{RET} and \kbd{C-c C-c} trigger automatic recalculation -in lines starting with: {\tt | \# |}. +%\kbd{TAB}, \kbd{RET} and \kbd{C-c C-c} trigger automatic recalculation +%in lines starting with: {\tt | \# |}. \key{rotate calculation mark through \# * ! \^ \_ \$}{C-\#} @@ -484,9 +481,9 @@ \key{sum numbers in current column/rectangle}{C-c +} \key{copy down with increment}{S-RET$^4$} -A formula can also be typed directly into into a field and will -executed by \kbd{TAB}, \kbd{RET} and \kbd{C-c C-c}. A leading \kbd{=} -introduces a column formula, \kbd{:=} a named-field formula. +Formulas typed in field are executed by \kbd{TAB}, +\kbd{RET} and \kbd{C-c C-c}. \kbd{=} introduces a column +formula, \kbd{:=} a named-field formula. \key{Example: Add Col1 and Col2}{=\$1+\$2} \key{... with printf format specification}{=\$1+\$2;\%.2f} @@ -496,7 +493,9 @@ {\bf Miscellaneous} -\key{toggle visibility of vertical lines}{C-c |} +\key{to limit column width to \kbd{N} characters, use}{...| |...} +\key{edit the current field in a separate window}{C-c `} +\key{make current field fully visible}{C-u TAB} \metax{export as tab-separated file}{M-x org-table-export} \metax{import tab-separated file}{M-x org-table-import} diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/ChangeLog --- a/lisp/ChangeLog Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/ChangeLog Wed Apr 12 17:40:36 2006 +0000 @@ -1,3 +1,152 @@ +2006-04-12 Stefan Monnier + + * progmodes/perl-mode.el (perl-indent-new-calculate): + Recompute parse-start after jumping backward by a whole sexp. + +2006-04-11 Stefan Monnier + + * vc.el (vc-ensure-vc-buffer): Only change current-buffer, not the + window configuration. + (vc-annotate-display-select): Select the buffer so that current-buffer + (and selected-window) is the output buffer at the end of vc-annotate. + +2006-04-11 J.D. Smith + + * vc.el (vc-annotate-color-map): Add custom TTY color map for + 8-color terminals, to use all of the colors in a sensible order. + 256-color terminals work well with the standard map. + (vc-annotate-lines): Only strip the first color character if it + is "#", to allow for terminal-style named colors. + (vc-annotate-warp-version): Pass buf to `goto-line' to ensure + the correct buffer is scrolled. + +2006-04-11 Richard Stallman + + * emacs-lisp/bytecomp.el (byte-compile-file): + Bind enable-local-variables to :safe, and make normal-mode obey it. + + * files.el (enable-local-variables): Allow value :safe. + (normal-mode): Doc fix. + (hack-local-variables): Implement enable-local-variables = :safe. + (hack-local-variables-confirm): Don't prevent quitting. + +2006-04-11 Stefan Monnier + + * loadhist.el (unload-feature): A bit of sanity check of + load-history entries. Cancel timer-vars before unbinding them. + + * hexl.el (hexl-isearch-search-function): Fix regexp-building code to + quote special chars, and make the trick work on the hex part of the + buffer as well. + (hexl-mode, hexl-save-buffer, hexl-mode-exit) + (hexl-maybe-dehexlify-buffer): Use restore-buffer-modified-p. + + * startup.el (normal-splash-screen): Fix last change so we don't wait + 2 minutes if we don't show the splash screen. + +2006-04-11 Carsten Dominik + + * textmodes/org.el (org-export-plain-list-max-depth) + (org-table-spaces-around-separators) + (org-radio-targets, org-activate-camels) + (org-table-spaces-around-invisible-separators): Options removed. + (org-time-stamp-rounding-minutes, org-remember-templates) + (org-ellipsis, org-activate-links, org-descriptive-links): + New options. + (org-remember-apply-template, org-current-time) + (org-finish-edit-table-field) + (org-link-unescape, org-link-escape) + (org-string-width, org-table-clean-line, org-html-do-expand) + (org-edit-agenda-file-list, org-store-new-agenda-file-list) + (org-read-agenda-file-list): New functions. + (org-table-edit-field) + (org-table-create-or-convert-from-region): New commands + (org-table-toggle-vline-visibility): Command removed. + (org-table-convert-region): Made a command. + (orgtbl-deleta-backward-char,orgtbl-delete-char): Remove commands. + Replace with the normal org- functions. + (org-self-insert-command): Don't trigger realign unnecessarily + when blanking a field that is not full. + (org-mode): `Set buffer-invisibility-spec' for links. + (org-activate-links2): Hide link part and only show descriptive + part of the link. + (org-insert-link): Modify for new linking system. + (org-store-link): Store description separately, for use by + `org-insert-link'. + (org-table-align): Use `org-string-width'. + (defgroup): Completely new group structure for custom variables. + (org-agenda-files): Option: Single file name allowed. Function: + Optional argument unrestrited means ignore any restricitons. + (org-install-agenda-files-menu): Find a buffer in Org-mode before + trying to modify the menu. Use generalized access to + `org-agenda-files.' + (org-agenda-list, org-todo-list, org-cycle-agenda-files) + (org-agenda-file-to-front, org-remove-file, org-diary) + (org-tags-view, org-export-icalendar-all-agenda-files) + (org-export-icalendar-combine-agenda-files): Use generalized + access to `org-agenda-files'. + (org-remember-handler): Correctly preserve heading if present. + (org-table-insert-row, org-table-insert-hline): Deal with + invisible characters. + +2006-04-10 J.D. Smith + + * vc.el (vc-annotate-display-mode): Made default 'fullscale. + (vc-annotate-color-map): New 18 element constant + value/saturation, rotating hue colormap, from red->blue. + (vc-annotate-mode-menu): "Default" -> "By Color Map Range". + (vc-annotate-display-select): Switch to annotate-mode elsewhere. + (vc-annotate): To avoid killing the required local variables, + set them before the end of `with-output-to-temp-buffer', and + after first switching to annotate-mode. + (vc-annotate-warp-version): Add buffer argument in goto-line to + ensure annotation, not source, is scrolled. + +2006-04-10 Bill Wohler + + * custom.el (defcustom, custom-handle-keyword): + Add :package-version keyword. + (custom-add-package-version): New function. Sets value of new + property 'custom-package-version from :package-version keyword. + (defcustom): Create Common Keywords section in docstring. + (defface, defgroup): Replace definitions of a select few keywords + with a reference to the Common Keywords in defcustom. + (defcustom, defface, defgroup): Replace reference to Customization + chapter in manual with hyperlink. + + * cus-edit.el (customize-package-emacs-version-alist): + New variable. + (customize-changed-options): Add check for custom-package-version. + (customize-package-emacs-version): New function to look up Emacs + version corresponding to the given package version. + + * emacs-lisp/find-func.el (find-function-regexp): Allow dashes in + defun name, in similar fashion to find-variable-regexp. + +2006-04-10 Eli Zaretskii + + * international/mule-cmds.el (set-locale-environment): Fix last + change for when the locale's preferences don't specify any encoding. + +2006-04-10 Stefan Monnier + + * emacs-lisp/find-func.el (find-function-search-for-symbol): Fix regexp + so the defined var/fun doesn't need to be quoted. + +2006-04-10 Richard Stallman + + * finder.el (finder-mode-map): Add n and p bindings. + +2006-04-10 Nick Roberts + + * progmodes/gdb-ui.el (gdb-init-1): Re-initialise gdb-main-file to nil. + (gdb-get-version): Make it work for pre "interpreter mi" (GDB 5.3?). + (gdb-setup-windows): Put something in source window if we can't find + the source file. + (gdb-frame-handler): Make it work again with just assembly. + (gdb-data-list-register-values-handler): Make it work when there is + no stack. + 2006-04-09 Richard Stallman * mail/rmail.el (rmail-mime-charset-pattern): Ignore format and delsp @@ -94,12 +243,11 @@ (rcirc-multiline-minor-mode-map): New mode map. (rcirc-edit-multiline): Put multiline-edit buffer in rcirc-multiline-major-mode along with rcirc-multiline-minor-mode. - (rcirc-print): Any line starting with an ignored nick will be - ignored. + (rcirc-print): Ignore any line starting with an ignored nick. (rcirc-print): Decode using rcirc-decode-coding-system. (rcirc-track-minor-mode): Update global-mode-string when disabling this mode. - (minor-mode-alist): add LowPri indicator. + (minor-mode-alist): Add LowPri indicator. (rcirc-toggle-low-priority): New function. (rcirc-last-non-irc-buffer): Prefix arg now no means switch to next lowpriority buffer with activity. @@ -132,8 +280,7 @@ 2006-04-07 Reiner Steib - * pgg-gpg.el: Revert to revision 1.8 to allow the use of - gpg-agent. + * pgg-gpg.el: Revert to revision 1.8 to allow the use of gpg-agent. 2006-04-07 Nick Roberts @@ -146,21 +293,20 @@ * textmodes/paragraphs.el (sentence-end): Use string-or-null-p. - * textmodes/ispell.el (ispell-local-dictionary): Use - string-or-null-p. + * textmodes/ispell.el (ispell-local-dictionary): Use string-or-null-p. * files.el: Update comment about safe-local-variable declarations. 2006-04-06 J.D. Smith - * progmodes/idlwave.el: Updated to IDLWAVE version 6.0. See - idlwave.org. - - * progmodes/idlw-shell.el: Updated to IDLWAVE version 6.0. See - idlwave.org. Includes code to obsolete idlw-rinfo.el. - - * progmodes/idlw-help.el: Updated to IDLWAVE version 6.0. See - idlwave.org. + * progmodes/idlwave.el: Updated to IDLWAVE version 6.0. + See idlwave.org. + + * progmodes/idlw-shell.el: Updated to IDLWAVE version 6.0. + See idlwave.org. Includes code to obsolete idlw-rinfo.el. + + * progmodes/idlw-help.el: Updated to IDLWAVE version 6.0. + See idlwave.org. * progmodes/idlw-complete-structtag.el: Updated to IDLWAVE version 6.0 (minimal changes). See idlwave.org. @@ -231,8 +377,8 @@ 2006-04-05 Daiki Ueno - * pgg-gpg.el (pgg-gpg-encrypt-region, pgg-gpg-sign-region): Wait - for BEGIN_SIGNING too, new in GnuPG 1.4.3. + * pgg-gpg.el (pgg-gpg-encrypt-region, pgg-gpg-sign-region): + Wait for BEGIN_SIGNING too, new in GnuPG 1.4.3. 2006-04-05 Kenichi Handa @@ -245,8 +391,7 @@ default-enable-multibyte-characters. This reverts the change from revision 6.17 which is no longer necessary because the passphrase is sent separately now. GnuPG messages are unreadable under - multibyte locales with default-enable-multibyte-characters set to - nil. + multibyte locales with default-enable-multibyte-characters set to nil. 2006-04-04 Andreas Schwab diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/cus-edit.el --- a/lisp/cus-edit.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/cus-edit.el Wed Apr 12 17:40:36 2006 +0000 @@ -786,7 +786,7 @@ (if (or (and (= 1 (length children)) (memq (widget-type (car children)) '(custom-variable custom-face))) - (y-or-n-p "Reset all settings' buffer text to show current values? ")) + (y-or-n-p "Reset all settings' buffer text to show current values? ")) (mapc (lambda (widget) (if (memq (widget-get widget :custom-state) '(modified changed)) @@ -1079,6 +1079,18 @@ (defvar customize-changed-options-previous-release "21.1" "Version for `customize-changed-options' to refer back to by default.") +;; Packages will update this variable, so make it available. +;;;###autoload +(defvar customize-package-emacs-version-alist nil + "Alist that maps packages to alists of package to Emacs versions. +The value alists map all package versions used with +the :package-version keyword to Emacs versions. Packages are +symbols and versions are strings. + +For example: + '((MH-E (\"7.4\" \"22.1\") (\"8.0\" \"22.1\")) + (Gnus (\"5.11\" \"22.1\")))") + ;;;###autoload (defalias 'customize-changed 'customize-changed-options) @@ -1119,7 +1131,12 @@ (let (found) (mapatoms (lambda (symbol) - (let ((version (get symbol 'custom-version))) + (let* ((package-version (get symbol 'custom-package-version)) + (version + (or (and package-version + (customize-package-emacs-version symbol + package-version)) + (get symbol 'custom-version)))) (if version (when (customize-version-lessp since-version version) (if (or (get symbol 'custom-group) @@ -1135,6 +1152,31 @@ (error "No user option defaults have been changed since Emacs %s" since-version)))) +(defun customize-package-emacs-version (symbol package-version) + "Return Emacs version of SYMBOL. +PACKAGE-VERSION has the form (PACKAGE VERSION). The VERSION of +PACKAGE is looked up in the associated list +`customize-package-emacs-version-alist' to find the version of +Emacs that is associated with it." + (let (package-versions emacs-version) + ;; Use message instead of error since we want user to be able to + ;; see the rest of the symbols even if a package author has + ;; botched things up. + (cond ((not (listp package-version)) + (message "Invalid package-version value for %s" symbol)) + ((setq package-versions (assq (car package-version) + customize-package-emacs-version-alist)) + (setq emacs-version + (cadr (assoc (cadr package-version) package-versions))) + (unless emacs-version + (message "Package version of %s not found in %s" symbol + "customize-package-emacs-version-alist"))) + (t + (message "Package %s neglected to update %s" + (car package-version) + "customize-package-emacs-version-alist"))) + emacs-version)) + (defun customize-version-lessp (version1 version2) ;; Why are the versions strings, and given that they are, why aren't ;; they converted to numbers and compared as such here? -- fx diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/custom.el --- a/lisp/custom.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/custom.el Wed Apr 12 17:40:36 2006 +0000 @@ -203,8 +203,27 @@ :type VALUE should be a widget type for editing the symbol's value. :options VALUE should be a list of valid members of the widget type. +:initialize + VALUE should be a function used to initialize the + variable. It takes two arguments, the symbol and value + given in the `defcustom' call. The default is + `custom-initialize-reset'. +:set VALUE should be a function to set the value of the symbol. + It takes two arguments, the symbol to set and the value to + give it. The default choice of function is `custom-set-default'. +:get VALUE should be a function to extract the value of symbol. + The function takes one argument, a symbol, and should return + the current value for that symbol. The default choice of function + is `custom-default-value'. +:require + VALUE should be a feature symbol. If you save a value + for this option, then when your `.emacs' file loads the value, + it does (require VALUE) first. + +The following common keywords are also meaningful. + :group VALUE should be a customization group. - Add SYMBOL to that group. + Add SYMBOL (or FACE with `defface') to that group. :link LINK-DATA Include an external link after the documentation string for this item. This is a sentence containing an active field which @@ -248,26 +267,16 @@ An item can have more than one external link; however, most items have none at all. -:initialize - VALUE should be a function used to initialize the - variable. It takes two arguments, the symbol and value - given in the `defcustom' call. The default is - `custom-initialize-reset'. -:set VALUE should be a function to set the value of the symbol. - It takes two arguments, the symbol to set and the value to - give it. The default choice of function is `custom-set-default'. -:get VALUE should be a function to extract the value of symbol. - The function takes one argument, a symbol, and should return - the current value for that symbol. The default choice of function - is `custom-default-value'. -:require - VALUE should be a feature symbol. If you save a value - for this option, then when your `.emacs' file loads the value, - it does (require VALUE) first. :version VALUE should be a string specifying that the variable was first introduced, or its default value was changed, in Emacs version VERSION. +:package-version + VALUE should be a list with the form (PACKAGE VERSION) + specifying that the variable was first introduced, or its + default value was changed, in PACKAGE version VERSION. This + keyword takes priority over :version. The PACKAGE and VERSION + must appear in the alist `customize-package-emacs-version-alist'. :tag LABEL Use LABEL, a string, instead of the item's name, to label the item in customization menus and buffers. @@ -286,8 +295,8 @@ _outside_ any bindings for these variables. \(`defvar' and `defconst' behave similarly in this respect.) -Read the section about customization in the Emacs Lisp manual for more -information." +See Info node `(elisp) Customization' in the Emacs Lisp manual +for more information." (declare (doc-string 3)) ;; It is better not to use backquote in this file, ;; because that makes a bootstrapping problem @@ -314,10 +323,8 @@ [KEYWORD VALUE]... -The following KEYWORDs are defined: - -:group VALUE should be a customization group. - Add FACE to that group. +For a list of valid keywords, see the common keywords listed in +`defcustom'. SPEC should be an alist of the form ((DISPLAY ATTS)...). @@ -368,8 +375,8 @@ the function `display-supports-face-attributes-p' for more information on exactly how testing is done. -Read the section about customization in the Emacs Lisp manual for more -information." +See Info node `(elisp) Customization' in the Emacs Lisp manual +for more information." (declare (doc-string 3)) ;; It is better not to use backquote in this file, ;; because that makes a bootstrapping problem @@ -426,16 +433,11 @@ [KEYWORD VALUE]... -The following KEYWORDs are defined: - -:group VALUE should be a customization group. - Add SYMBOL to that group. +For a list of valid keywords, see the common keywords listed in +`defcustom'. -:version VALUE should be a string specifying that the group was introduced - in Emacs version VERSION. - -Read the section about customization in the Emacs Lisp manual for more -information." +See Info node `(elisp) Customization' in the Emacs Lisp manual +for more information." (declare (doc-string 3)) ;; It is better not to use backquote in this file, ;; because that makes a bootstrapping problem @@ -489,6 +491,8 @@ (custom-add-to-group value symbol type)) ((eq keyword :version) (custom-add-version symbol value)) + ((eq keyword :package-version) + (custom-add-package-version symbol value)) ((eq keyword :link) (custom-add-link symbol value)) ((eq keyword :load) @@ -540,6 +544,10 @@ "To the custom option SYMBOL add the version VERSION." (put symbol 'custom-version (purecopy version))) +(defun custom-add-package-version (symbol version) + "To the custom option SYMBOL add the package version VERSION." + (put symbol 'custom-package-version (purecopy version))) + (defun custom-add-load (symbol load) "To the custom option SYMBOL add the dependency LOAD. LOAD should be either a library file name, or a feature name." diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/emacs-lisp/bytecomp.el --- a/lisp/emacs-lisp/bytecomp.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/emacs-lisp/bytecomp.el Wed Apr 12 17:40:36 2006 +0000 @@ -1650,8 +1650,12 @@ ;; If they change the file name, then change it for the output also. (let ((buffer-file-name filename) (default-major-mode 'emacs-lisp-mode) + ;; Ignore unsafe local variables. + ;; We only care about a few of them for our purposes. + (enable-local-variables :safe) (enable-local-eval nil)) - (normal-mode) + ;; Arg of t means don't alter enable-local-variables. + (normal-mode t) (setq filename buffer-file-name)) ;; Set the default directory, in case an eval-when-compile uses it. (setq default-directory (file-name-directory filename))) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/emacs-lisp/find-func.el --- a/lisp/emacs-lisp/find-func.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/emacs-lisp/find-func.el Wed Apr 12 17:40:36 2006 +0000 @@ -64,7 +64,7 @@ (concat "^\\s-*(\\(def\\(ine-skeleton\\|ine-generic-mode\\|ine-derived-mode\\|\ ine\\(?:-global\\)?-minor-mode\\|ine-compilation-mode\\|un-cvs-mode\\|\ -foo\\|[^cfgv]\\w+\\*?\\)\\|easy-mmode-define-[a-z-]+\\|easy-menu-define\\|\ +foo\\|[^cfgv]\\(\\w\\|\\s_\\)+\\*?\\)\\|easy-mmode-define-[a-z-]+\\|easy-menu-define\\|\ menu-bar-make-toggle\\)" find-function-space-re "\\('\\|\(quote \\)?%s\\(\\s-\\|$\\|\(\\|\)\\)") @@ -229,7 +229,7 @@ (goto-char (point-min)) (if (or (re-search-forward regexp nil t) (re-search-forward - (concat "^([^ ]+" find-function-space-re "['(]" + (concat "^([^ ]+" find-function-space-re "['(]?" (regexp-quote (symbol-name symbol)) "\\_>") nil t)) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/erc/ChangeLog --- a/lisp/erc/ChangeLog Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/erc/ChangeLog Wed Apr 12 17:40:36 2006 +0000 @@ -1,3 +1,23 @@ +2006-04-05 Diane Murray + + * erc.el (erc-cmd-SV): Removed the exclamation point. Show the + build date as it's shown in `emacs-version'. + + * erc-capab.el (erc-capab-identify-add-prefix): Insert the prefix + with the same face property as the previous character. + +2006-04-02 Michael Olson + + * erc-backend.el, erc-ezbounce.el, erc-join.el, erc-netsplit.el, + erc.el: Make sure to include a newline inside of negated classes, + so that a newline is not matched. + +2006-04-01 Michael Olson + + * erc-backend.el (erc-server-connect-function): Don't try to + detect the existence of the `open-network-stream-nowait' function, + since I can't find it in Emacs21, XEmacs21, or Emacs22. + 2006-03-26 Michael Olson * erc.el (erc-header-line): New face that will be used to colorize diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/erc/erc-backend.el --- a/lisp/erc/erc-backend.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/erc/erc-backend.el Wed Apr 12 17:40:36 2006 +0000 @@ -312,13 +312,7 @@ :type '(repeat (cons (string :tag "Target") coding-system))) -(defcustom erc-server-connect-function - (if (and (fboundp 'open-network-stream-nowait) - ;; CVS Emacs claims to define open-network-stream-nowait on - ;; windows, however, it does, in fact, not work. - (not (memq system-type '(windows-nt cygwin ms-dos darwin)))) - 'open-network-stream-nowait - 'open-network-stream) +(defcustom erc-server-connect-function 'open-network-stream "Function used to initiate a connection. It should take same arguments as `open-network-stream' does." :group 'erc-server @@ -762,10 +756,10 @@ (substring string 1 posn))) (setf (erc-response.command msg) - (let* ((bposn (string-match "[^ ]" string posn)) + (let* ((bposn (string-match "[^ \n]" string posn)) (eposn (string-match " " string bposn))) (setq posn (and eposn - (string-match "[^ ]" string eposn))) + (string-match "[^ \n]" string eposn))) (substring string bposn eposn))) (while (and posn @@ -773,7 +767,7 @@ (push (let* ((bposn posn) (eposn (string-match " " string bposn))) (setq posn (and eposn - (string-match "[^ ]" string eposn))) + (string-match "[^ \n]" string eposn))) (substring string bposn eposn)) (erc-response.command-args msg))) (when posn diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/erc/erc-ezbounce.el --- a/lisp/erc/erc-ezbounce.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/erc/erc-ezbounce.el Wed Apr 12 17:40:36 2006 +0000 @@ -139,7 +139,7 @@ (defun erc-ezb-add-session (message) "Add an EZBounce session to the session list." (when (and erc-ezb-inside-session-listing - (string-match "^\\([^ ]+\\) +\\([^ ]+\\) +\\([^ ]+\\) +\\([^ ]+\\)$" message)) + (string-match "^\\([^ \n]+\\) +\\([^ \n]+\\) +\\([^ \n]+\\) +\\([^ \n]+\\)$" message)) (let ((id (match-string 1 message)) (nick (match-string 2 message)) (to (match-string 3 message))) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/erc/erc-join.el --- a/lisp/erc/erc-join.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/erc/erc-join.el Wed Apr 12 17:40:36 2006 +0000 @@ -92,7 +92,7 @@ (or erc-server-announced-name erc-session-server)))) (when (erc-current-nick-p nick) (when (and erc-autojoin-domain-only - (string-match "[^.]+\\.\\([^.]+\\.[^.]+\\)$" server)) + (string-match "[^.\n]+\\.\\([^.\n]+\\.[^.\n]+\\)$" server)) (setq server (match-string 1 server))) (let ((elem (assoc server erc-autojoin-channels-alist))) (if elem @@ -115,7 +115,7 @@ (or erc-server-announced-name erc-session-server)))) (when (erc-current-nick-p nick) (when (and erc-autojoin-domain-only - (string-match "[^.]+\\.\\([^.]+\\.[^.]+\\)$" server)) + (string-match "[^.\n]+\\.\\([^.\n]+\\.[^.\n]+\\)$" server)) (setq server (match-string 1 server))) (let ((elem (assoc server erc-autojoin-channels-alist))) (when elem diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/erc/erc-netsplit.el --- a/lisp/erc/erc-netsplit.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/erc/erc-netsplit.el Wed Apr 12 17:40:36 2006 +0000 @@ -64,7 +64,8 @@ :group 'erc-netsplit :type 'boolean) -(defcustom erc-netsplit-regexp "^[^ @!\"]+\\.[^ @!]+ [^ @!]+\\.[^ @!\"]+$" +(defcustom erc-netsplit-regexp + "^[^ @!\"\n]+\\.[^ @!\n]+ [^ @!\n]+\\.[^ @!\"\n]+$" "This regular expression should match quit reasons produced by netsplits." :group 'erc-netsplit @@ -131,7 +132,7 @@ (defun erc-netsplit-MODE (proc parsed) "Hide mode changes from servers." ;; regexp matches things with a . in them, and no ! or @ in them. - (when (string-match "^[^@!]+\\.[^@!]+$" (erc-response.sender parsed)) + (when (string-match "^[^@!\n]+\\.[^@!\n]+$" (erc-response.sender parsed)) (and erc-netsplit-debug (erc-display-message parsed 'notice (process-buffer proc) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/erc/erc.el --- a/lisp/erc/erc.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/erc/erc.el Wed Apr 12 17:40:36 2006 +0000 @@ -3132,7 +3132,7 @@ (defun erc-cmd-SV () "Say the current ERC and Emacs version into channel." - (erc-send-message (format "I'm using ERC %s with %s %s (%s%s%s)!" + (erc-send-message (format "I'm using ERC %s with %s %s (%s%s) of %s." erc-version-string (if (featurep 'xemacs) "XEmacs" "GNU Emacs") emacs-version @@ -3155,7 +3155,7 @@ x-toolkit-scroll-bars))) "") (if (featurep 'multi-tty) ", multi-tty" "")) - (concat ", built " erc-emacs-build-time))) + erc-emacs-build-time)) t) (defun erc-cmd-SM () @@ -3490,7 +3490,7 @@ If `point' is at the beginning of a channel name, use that as default." (interactive (list - (let ((chnl (if (looking-at "\\([&#+!][^ ]+\\)") (match-string 1) "")) + (let ((chnl (if (looking-at "\\([&#+!][^ \n]+\\)") (match-string 1) "")) (table (when (erc-server-buffer-live-p) (set-buffer (process-buffer erc-server-process)) erc-channel-list))) @@ -4734,12 +4734,12 @@ Return a list of the three separate tokens." (cond - ((string-match "^\\([^!]*\\)!\\([^@]*\\)@\\(.*\\)$" string) + ((string-match "^\\([^!\n]*\\)!\\([^@\n]*\\)@\\(.*\\)$" string) (list (match-string 1 string) (match-string 2 string) (match-string 3 string))) ;; Some bogus bouncers send Nick!(null), try to live with that. - ((string-match "^\\([^!]*\\)!\\(.*\\)$" string) + ((string-match "^\\([^!\n]*\\)!\\(.*\\)$" string) (list (match-string 1 string) "" (match-string 2 string))) @@ -5053,7 +5053,7 @@ "Return the addressed target in MSG. The addressed target is the string before the first colon in MSG." - (if (string-match "^\\([^: ]*\\):" msg) + (if (string-match "^\\([^: \n]*\\):" msg) (match-string 1 msg) nil)) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/files.el --- a/lisp/files.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/files.el Wed Apr 12 17:40:36 2006 +0000 @@ -444,14 +444,19 @@ (defcustom enable-local-variables t "*Control use of local variables in files you visit. -The value can be t, nil or something else. +The value can be t, nil, :safe, or something else. A value of t means file local variables specifications are obeyed if all the specified variable values are safe; if any values are not safe, Emacs queries you, once, whether to set them all. - -A value of nil means always ignore the file local variables. +\(When you say yes to certain values, they are remembered as safe.) + +:safe means set the safe variables, and ignore the rest. +nil means always ignore the file local variables. + Any other value means always query you once whether to set them all. +\(When you say yes to certain values, they are remembered as safe, but +this has no effect when `enable-local-variables' is \"something else\".) This variable also controls use of major modes specified in a -*- line. @@ -460,6 +465,7 @@ always obeys file local variable specifications and the -*- line, and ignores this variable." :type '(choice (const :tag "Obey" t) + (const :tag "Safe Only" :safe) (const :tag "Ignore" nil) (other :tag "Query" other)) :group 'find-file) @@ -1779,8 +1785,7 @@ This function is called automatically from `find-file'. In that case, we may set up the file-specified mode and local variables, -depending on the value of `enable-local-variables': if it is t, we do; -if it is nil, we don't; otherwise, we query. +depending on the value of `enable-local-variables'. In addition, if `local-enable-local-variables' is nil, we do not set local variables (though we do notice a mode specified with -*-.) @@ -2414,8 +2419,7 @@ "" ", or C-v to scroll"))) (goto-char (point-min)) - (let ((inhibit-quit t) - (cursor-in-echo-area t) + (let ((cursor-in-echo-area t) (exit-chars (if offer-save '(?! ?y ?n ?\s ?\C-g) '(?y ?n ?\s ?\C-g))) done) @@ -2427,9 +2431,7 @@ (condition-case nil (scroll-up) (error (goto-char (point-min)))) - (setq done (memq (downcase char) exit-chars))))) - (if (= char ?\C-g) - (setq quit-flag nil))) + (setq done (memq (downcase char) exit-chars)))))) (setq char (downcase char)) (when (and offer-save (= char ?!) unsafe-vars) (dolist (elt unsafe-vars) @@ -2617,13 +2619,22 @@ (and (risky-local-variable-p var val) (push elt risky-vars)) (push elt unsafe-vars)))) - (if (or (and (eq enable-local-variables t) - (null unsafe-vars) - (null risky-vars)) - (hack-local-variables-confirm - result unsafe-vars risky-vars)) + (if (eq enable-local-variables :safe) + ;; If caller wants only the safe variables, + ;; install only them. (dolist (elt result) - (hack-one-local-variable (car elt) (cdr elt))))) + (unless (or (memq (car elt) unsafe-vars) + (memq (car elt) risky-vars)) + (hack-one-local-variable (car elt) (cdr elt)))) + ;; Query, except in the case where all are known safe + ;; if the user wants no quuery in that case. + (if (or (and (eq enable-local-variables t) + (null unsafe-vars) + (null risky-vars)) + (hack-local-variables-confirm + result unsafe-vars risky-vars)) + (dolist (elt result) + (hack-one-local-variable (car elt) (cdr elt)))))) (run-hooks 'hack-local-variables-hook)))))) (defun safe-local-variable-p (sym val) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/finder.el --- a/lisp/finder.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/finder.el Wed Apr 12 17:40:36 2006 +0000 @@ -104,6 +104,8 @@ (define-key map [mouse-2] 'finder-mouse-select) (define-key map "\C-m" 'finder-select) (define-key map "?" 'finder-summary) + (define-key map "n" 'next-line) + (define-key map "p" 'previous-line) (define-key map "q" 'finder-exit) (define-key map "d" 'finder-list-keywords) map)) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/gnus/ChangeLog Wed Apr 12 17:40:36 2006 +0000 @@ -1,3 +1,56 @@ +2006-04-12 Katsumi Yamaoka + + * gnus-art.el (gnus-mime-view-part-as-charset): Ignore charset + that the part specifies. + + * mm-decode.el (mm-display-part): Work with external parts and + usual parts similarly. + + * mm-extern.el (mm-inline-external-body): Use mm-display-part + instead of gnus-display-mime. + + * gnus-uu.el (gnus-uu-save-article): Put mml tags instead of part + tag to summarized topics part in order to encode non-ASCII text. + +2006-04-12 Kenichi Handa + + * rfc2231.el (rfc2231-decode-encoded-string): Work on unibyte + buffer and then decode the buffer text if necessary. + (rfc2231-encode-string): Be sure to work on multibyte buffer at + first, and after mm-encode-body, change the buffer to unibyte. + +2006-04-11 Reiner Steib + + * gnus-art.el (gnus-button-valid-localpart-regexp): Exclude `@'. + +2006-04-11 Arne J,Ax(Brgensen + + * gnus-sieve.el (gnus-sieve-generate): Delete from the start of + the sieve region. + +2006-04-11 Reiner Steib + + * gnus.el: Gnus v5.10.8 is released. + +2006-04-11 Lars Magne Ingebrigtsen + + * nnslashdot.el (nnslashdot-retrieve-headers-1): Fix up to new + layout. + + * rfc2047.el (rfc2047-decode-encoded-words): Don't message about + unknown charset. + + * message.el (message-header-synonyms): Add Original-To to the + default. + + * gnus-sum.el (gnus-get-newsgroup-headers-xover): group is an + optional parameter. + +2006-04-07 Reiner Steib + + * pgg-gpg.el: Revert to revision 7.15 to allow the use of + gpg-agent. + 2006-04-06 Reiner Steib * gnus-fun.el (gnus): Require it for gnus-directory. diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/gnus/gnus-art.el --- a/lisp/gnus/gnus-art.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/gnus/gnus-art.el Wed Apr 12 17:40:36 2006 +0000 @@ -4477,19 +4477,29 @@ specified charset." (interactive (list nil current-prefix-arg)) (gnus-article-check-buffer) - (let* ((handle (or handle (get-text-property (point) 'gnus-data))) - contents charset - (b (point)) - (inhibit-read-only t)) + (let ((handle (or handle (get-text-property (point) 'gnus-data))) + (fun (get-text-property (point) 'gnus-callback)) + (gnus-newsgroup-ignored-charsets 'gnus-all) + gnus-newsgroup-charset type charset) (when handle (if (mm-handle-undisplayer handle) (mm-remove-part handle)) - (let ((gnus-newsgroup-charset - (or (cdr (assq arg - gnus-summary-show-article-charset-alist)) - (mm-read-coding-system "Charset: "))) - (gnus-newsgroup-ignored-charsets 'gnus-all)) - (gnus-article-press-button))))) + (when fun + (setq gnus-newsgroup-charset + (or (cdr (assq arg gnus-summary-show-article-charset-alist)) + (mm-read-coding-system "Charset: "))) + ;; Strip the charset parameter from `handle'. + (setq type (mm-handle-type + (if (equal (mm-handle-media-type handle) + "message/external-body") + (progn + (unless (mm-handle-cache handle) + (mm-extern-cache-contents handle)) + (mm-handle-cache handle)) + handle)) + charset (assq 'charset (cdr type))) + (delq charset type) + (funcall fun handle))))) (defun gnus-mime-view-part-externally (&optional handle) "View the MIME part under point with an external viewer." @@ -5972,7 +5982,7 @@ ;; Regexp suggested by Felix Wiemann in <87oeuomcz9.fsf@news2.ososo.de> (defcustom gnus-button-valid-localpart-regexp - "[a-z0-9$%(*-=?[_][^<>\")!;:,{}\n\t ]*" + "[a-z0-9$%(*-=?[_][^<>\")!;:,{}\n\t @]*" "Regular expression that matches a localpart of mail addresses or MIDs." :version "22.1" :group 'gnus-article-buttons diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/gnus/gnus-sieve.el --- a/lisp/gnus/gnus-sieve.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/gnus/gnus-sieve.el Wed Apr 12 17:40:36 2006 +0000 @@ -107,7 +107,7 @@ (find-file gnus-sieve-file) (goto-char (point-min)) (if (re-search-forward (regexp-quote gnus-sieve-region-start) nil t) - (delete-region (match-end 0) + (delete-region (match-beginning 0) (or (re-search-forward (regexp-quote gnus-sieve-region-end) nil t) (point))) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/gnus/gnus-sum.el --- a/lisp/gnus/gnus-sum.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/gnus/gnus-sum.el Wed Apr 12 17:40:36 2006 +0000 @@ -5962,7 +5962,8 @@ (allp (cond ((eq gnus-read-all-available-headers t) t) - ((stringp gnus-read-all-available-headers) + ((and (stringp gnus-read-all-available-headers) + group) (string-match gnus-read-all-available-headers group)) (t nil))) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/gnus/gnus-uu.el --- a/lisp/gnus/gnus-uu.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/gnus/gnus-uu.el Wed Apr 12 17:40:36 2006 +0000 @@ -839,7 +839,9 @@ "Date: %s\nFrom: %s\nSubject: %s Digest\n\n" (message-make-date) name name)) (when (and message-forward-as-mime gnus-uu-digest-buffer) - (insert "<#part type=message/rfc822>\nSubject: Topics\n\n")) + (insert + "<#mml type=message/rfc822>\nSubject: Topics\n\n<#/mml>\n") + (forward-line -1)) (insert "Topics:\n"))) (when (not (eq in-state 'end)) (setq state (list 'middle)))) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/gnus/message.el --- a/lisp/gnus/message.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/gnus/message.el Wed Apr 12 17:40:36 2006 +0000 @@ -2749,7 +2749,8 @@ (message-carefully-insert-headers headers))) (defcustom message-header-synonyms - '((To Cc Bcc)) + '((To Cc Bcc) + (Original-To)) "List of lists of header synonyms. E.g., if this list contains a member list with elements `Cc' and `To', then `message-carefully-insert-headers' will not insert a `To' header diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/gnus/mm-decode.el --- a/lisp/gnus/mm-decode.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/gnus/mm-decode.el Wed Apr 12 17:40:36 2006 +0000 @@ -672,7 +672,14 @@ (mailcap-parse-mailcaps) (if (mm-handle-displayed-p handle) (mm-remove-part handle) - (let* ((type (mm-handle-media-type handle)) + (let* ((ehandle (if (equal (mm-handle-media-type handle) + "message/external-body") + (progn + (unless (mm-handle-cache handle) + (mm-extern-cache-contents handle)) + (mm-handle-cache handle)) + handle)) + (type (mm-handle-media-type ehandle)) (method (mailcap-mime-info type)) (filename (or (mail-content-type-get (mm-handle-disposition handle) 'filename) @@ -680,8 +687,8 @@ (mm-handle-type handle) 'name) "")) (external mm-enable-external)) - (if (and (mm-inlinable-p handle) - (mm-inlined-p handle)) + (if (and (mm-inlinable-p ehandle) + (mm-inlined-p ehandle)) (progn (forward-line 1) (mm-display-inline handle) @@ -689,7 +696,7 @@ (when (or method (not no-default)) (if (and (not method) - (equal "text" (car (split-string type)))) + (equal "text" (car (split-string type "/")))) (progn (forward-line 1) (mm-insert-inline handle (mm-get-part handle)) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/gnus/mm-extern.el --- a/lisp/gnus/mm-extern.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/gnus/mm-extern.el Wed Apr 12 17:40:36 2006 +0000 @@ -157,25 +157,11 @@ (save-excursion (save-restriction (narrow-to-region (point) (point)) - (let* ((type (regexp-quote - (mm-handle-media-type (mm-handle-cache handle)))) - ;; Force the part to be displayed (but if there is no - ;; method to display, a user will be prompted to save). - ;; See `gnus-mime-display-single'. - (mm-inline-override-types nil) - (mm-attachment-override-types - (cons type mm-attachment-override-types)) - (mm-automatic-display (cons type mm-automatic-display)) - (mm-automatic-external-display - (cons type mm-automatic-external-display)) - ;; Suppress adding of button to the cached part. - (gnus-inhibit-mime-unbuttonizing nil)) - (gnus-display-mime (mm-handle-cache handle))) - ;; Move undisplayer added to the cached handle to the parent. - (mm-handle-set-undisplayer - handle - (mm-handle-undisplayer (mm-handle-cache handle))) - (mm-handle-set-undisplayer (mm-handle-cache handle) nil))))) + (mm-display-part (mm-handle-cache handle)))) + ;; Move undisplayer added to the cached handle to the parent. + (mm-handle-set-undisplayer + handle (mm-handle-undisplayer (mm-handle-cache handle))) + (mm-handle-set-undisplayer (mm-handle-cache handle) nil))) (provide 'mm-extern) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/gnus/nnslashdot.el --- a/lisp/gnus/nnslashdot.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/gnus/nnslashdot.el Wed Apr 12 17:40:36 2006 +0000 @@ -142,7 +142,7 @@ (setq article (if (and article (< start article)) article start)) (goto-char point) (while (re-search-forward - "\\([^<]+\\).*\n.*score:\\([^)]+\\))" + "\\([^<]+\\).*\n.*\n.*score:\\([^)]+\\))" nil t) (setq cid (match-string 1) subject (match-string 2) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/gnus/rfc2047.el --- a/lisp/gnus/rfc2047.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/gnus/rfc2047.el Wed Apr 12 17:40:36 2006 +0000 @@ -851,11 +851,8 @@ (let (word charset cs encoding text rest) (while words (setq word (pop words)) - (if (and (or (setq cs (rfc2047-charset-to-coding-system - (setq charset (car word)))) - (progn - (message "Unknown charset: %s" charset) - nil)) + (if (and (setq cs (rfc2047-charset-to-coding-system + (setq charset (car word)))) (condition-case code (cond ((char-equal ?B (nth 1 word)) (setq text (base64-decode-string diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/hexl.el --- a/lisp/hexl.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/hexl.el Wed Apr 12 17:40:36 2006 +0000 @@ -38,7 +38,7 @@ ;; grouping. ;; ;; -iso in `hexl-options' will allow iso characters to display in the -;; ASCII region of the screen (if your emacs supports this) instead of +;; ASCII region of the screen (if your Emacs supports this) instead of ;; changing them to dots. ;;; Code: @@ -62,7 +62,7 @@ :group 'hexl) (defcustom hexl-iso "" - "If your emacs can handle ISO characters, this should be set to + "If your Emacs can handle ISO characters, this should be set to \"-iso\" otherwise it should be \"\"." :type 'string :group 'hexl) @@ -229,7 +229,7 @@ original-point)) (or (bolp) (setq original-point (1- original-point)))) (hexlify-buffer) - (set-buffer-modified-p modified)) + (restore-buffer-modified-p modified)) (make-local-variable 'hexl-max-address) (setq hexl-max-address max-address) (condition-case nil @@ -300,9 +300,16 @@ (lambda (string &optional bound noerror count) (funcall (if isearch-forward 're-search-forward 're-search-backward) - (if (> (length string) 80) - (regexp-quote string) - (mapconcat 'string string "\\(?:\n\\(?:[:a-f0-9]+ \\)+ \\)?")) + (let ((textre + (if (> (length string) 80) + (regexp-quote string) + (mapconcat (lambda (c) (regexp-quote (string c))) string + "\\(?:\n\\(?:[:a-f0-9]+ \\)+ \\)?")))) + (if (string-match "\\` ?\\([a-f0-9]+ \\)*[a-f0-9]+ ?\\'" string) + (concat textre "\\|" + (mapconcat 'regexp-quote (split-string string " ") + " \\(?: .+\n[a-f0-9]+: \\)?")) + textre)) bound noerror count)) (let ((isearch-search-fun-function nil)) (isearch-search-fun)))) @@ -318,34 +325,33 @@ "Save a hexl format buffer as binary in visited file if modified." (interactive) (if hexl-in-save-buffer nil - (set-buffer-modified-p (if (buffer-modified-p) - (save-excursion - (let ((buf (generate-new-buffer " hexl")) - (name (buffer-name)) - (file-name (buffer-file-name)) - (start (point-min)) - (end (point-max)) - modified) - (set-buffer buf) - (insert-buffer-substring name start end) - (set-buffer name) - (dehexlify-buffer) - ;; Prevent infinite recursion. - (let ((hexl-in-save-buffer t)) - (save-buffer)) - (setq modified (buffer-modified-p)) - (delete-region (point-min) (point-max)) - (insert-buffer-substring buf start end) - (kill-buffer buf) - modified)) - (message "(No changes need to be saved)") - nil)) + (restore-buffer-modified-p + (if (buffer-modified-p) + (let ((buf (generate-new-buffer " hexl")) + (name (buffer-name)) + (start (point-min)) + (end (point-max)) + modified) + (with-current-buffer buf + (insert-buffer-substring name start end) + (set-buffer name) + (dehexlify-buffer) + ;; Prevent infinite recursion. + (let ((hexl-in-save-buffer t)) + (save-buffer)) + (setq modified (buffer-modified-p)) + (delete-region (point-min) (point-max)) + (insert-buffer-substring buf start end) + (kill-buffer buf) + modified)) + (message "(No changes need to be saved)") + nil)) ;; Return t to indicate we have saved t t)) ;;;###autoload (defun hexl-find-file (filename) - "Edit file FILENAME in hexl-mode. + "Edit file FILENAME in `hexl-mode'. Switch to a buffer visiting file FILENAME, creating one in none exists." (interactive (list @@ -367,7 +373,7 @@ (original-point (1+ (hexl-current-address)))) (dehexlify-buffer) (remove-hook 'write-contents-functions 'hexl-save-buffer t) - (set-buffer-modified-p modified) + (restore-buffer-modified-p modified) (goto-char original-point) ;; Maybe adjust point for the removed CR characters. (when (eq (coding-system-eol-type buffer-file-coding-system) 1) @@ -403,7 +409,7 @@ (original-point (1+ (hexl-current-address)))) (dehexlify-buffer) (remove-hook 'write-contents-functions 'hexl-save-buffer t) - (set-buffer-modified-p modified) + (restore-buffer-modified-p modified) (goto-char original-point)))) (defun hexl-current-address (&optional validate) @@ -917,14 +923,14 @@ ))))) (defun hexl-activate-ruler () - "Activate `ruler-mode'" + "Activate `ruler-mode'." (require 'ruler-mode) (set (make-local-variable 'ruler-mode-ruler-function) 'hexl-mode-ruler) (ruler-mode 1)) (defun hexl-follow-line () - "Activate `hl-line-mode'" + "Activate `hl-line-mode'." (require 'frame) (require 'hl-line) (with-no-warnings @@ -1071,5 +1077,5 @@ (provide 'hexl) -;;; arch-tag: d5a7aa8a-9bce-480b-bcff-6c4c7ca5ea4a +;; arch-tag: d5a7aa8a-9bce-480b-bcff-6c4c7ca5ea4a ;;; hexl.el ends here diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/international/mule-cmds.el --- a/lisp/international/mule-cmds.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/international/mule-cmds.el Wed Apr 12 17:40:36 2006 +0000 @@ -2531,7 +2531,9 @@ ;; If a specific EOL conversion was specified in the default ;; buffer-file-coding-system, preserve it in the coding system ;; we will be using from now on. - (if (memq default-eol-type '(0 1 2 unix dos mac)) + (if (and (memq default-eol-type '(0 1 2 unix dos mac)) + coding-system + (coding-system-p coding-system)) (setq coding-system (coding-system-change-eol-conversion coding-system default-eol-type))) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/loadhist.el --- a/lisp/loadhist.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/loadhist.el Wed Apr 12 17:40:36 2006 +0000 @@ -32,6 +32,8 @@ ;;; Code: +(eval-when-compile (require 'cl)) + (defun feature-symbols (feature) "Return the file and list of definitions associated with FEATURE. The value is actually the element of `load-history' @@ -207,23 +209,29 @@ (elp-restore-function elt)))) (dolist (x unload-hook-features-list) (if (consp x) - (cond + (case (car x) ;; Remove any feature names that this file provided. - ((eq (car x) 'provide) + (provide (setq features (delq (cdr x) features))) - ((eq (car x) 'defun) + (defun (let ((fun (cdr x))) (when (fboundp fun) (when (fboundp 'ad-unadvise) (ad-unadvise fun)) - (fmakunbound fun) (let ((aload (get fun 'autoload))) - (when aload - (fset fun (cons 'autoload aload)))))))) + (if aload + (fset fun (cons 'autoload aload)) + (fmakunbound fun)))))) + (require nil) + (t (message "Unexpected element %s in load-history" x))) ;; Kill local values as much as possible. (dolist (buf (buffer-list)) (with-current-buffer buf + (if (and (boundp x) (timerp (symbol-value x))) + (cancel-timer (symbol-value x))) (kill-local-variable x))) + (if (and (boundp x) (timerp (symbol-value x))) + (cancel-timer (symbol-value x))) ;; Get rid of the default binding if we can. (unless (local-variable-if-set-p x) (makunbound x)))) @@ -232,5 +240,5 @@ (provide 'loadhist) -;;; arch-tag: 70bb846a-c413-4f01-bf88-78dba4ac0798 +;; arch-tag: 70bb846a-c413-4f01-bf88-78dba4ac0798 ;;; loadhist.el ends here diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/progmodes/gdb-ui.el --- a/lisp/progmodes/gdb-ui.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/progmodes/gdb-ui.el Wed Apr 12 17:40:36 2006 +0000 @@ -524,6 +524,7 @@ gdb-frame-number nil gdb-var-list nil gdb-force-update t + gdb-main-file nil gdb-first-post-prompt t gdb-prompting nil gdb-input-queue nil @@ -580,8 +581,7 @@ (defun gdb-get-version () (goto-char (point-min)) - (if (and (re-search-forward gdb-error-regexp nil t) - (string-match ".*(missing implementation)" (match-string 1))) + (if (re-search-forward "Undefined\\( mi\\)* command:" nil t) (setq gdb-version "pre-6.4") (setq gdb-version "6.4+")) (gdb-init-2)) @@ -2746,7 +2746,11 @@ (switch-to-buffer (if gud-last-last-frame (gud-find-file (car gud-last-last-frame)) - (gud-find-file gdb-main-file))) + (if gdb-main-file + (gud-find-file gdb-main-file) + ;; Put buffer list in window if we + ;; can't find a source file. + (list-buffers-noselect)))) (when gdb-use-separate-io-buffer (split-window-horizontally) (other-window 1) @@ -3139,19 +3143,18 @@ (if (re-search-forward "Stack level \\([0-9]+\\)" nil t) (setq gdb-frame-number (match-string 1))) (goto-char (point-min)) - (if (re-search-forward - ".*=\\s-+0x0*\\(\\S-*\\)\\s-+in\\s-+\\(\\S-*?\\) (\\(\\S-*?\\):[0-9]+?);? " - nil t) - (progn - (setq gdb-selected-frame (match-string 2)) - (if (gdb-get-buffer 'gdb-locals-buffer) - (with-current-buffer (gdb-get-buffer 'gdb-locals-buffer) - (setq mode-name (concat "Locals:" gdb-selected-frame)))) - (if (gdb-get-buffer 'gdb-assembler-buffer) - (with-current-buffer (gdb-get-buffer 'gdb-assembler-buffer) - (setq mode-name (concat "Machine:" gdb-selected-frame)))) - (setq gdb-frame-address (match-string 1)))) - (if gud-overlay-arrow-position + (when (re-search-forward ".*=\\s-+0x0*\\(\\S-*\\)\\s-+in\\s-+\\(\\S-+?\\)\ +\\(?: (\\(\\S-+?\\):[0-9]+?)\\)*;? " + nil t) + (setq gdb-selected-frame (match-string 2)) + (if (gdb-get-buffer 'gdb-locals-buffer) + (with-current-buffer (gdb-get-buffer 'gdb-locals-buffer) + (setq mode-name (concat "Locals:" gdb-selected-frame)))) + (if (gdb-get-buffer 'gdb-assembler-buffer) + (with-current-buffer (gdb-get-buffer 'gdb-assembler-buffer) + (setq mode-name (concat "Machine:" gdb-selected-frame)))) + (setq gdb-frame-address (match-string 1)) + (if (and (match-string 3) gud-overlay-arrow-position) (let ((buffer (marker-buffer gud-overlay-arrow-position)) (position (marker-position gud-overlay-arrow-position))) (when (and buffer (string-equal (buffer-name buffer) (match-string 3))) @@ -3160,9 +3163,9 @@ (if (string-equal gdb-frame-number "0") nil '((overlay-arrow . hollow-right-triangle)))) - (set-marker gud-overlay-arrow-position position))))) + (set-marker gud-overlay-arrow-position position)))))) (goto-char (point-min)) - (if (re-search-forward " source language \\(\\S-*\\)\." nil t) + (if (re-search-forward " source language \\(\\S-+\\)\." nil t) (setq gdb-current-language (match-string 1))) (gdb-invalidate-assembler)) @@ -3281,11 +3284,12 @@ gdb-pending-triggers)) (goto-char (point-min)) (if (re-search-forward gdb-error-regexp nil t) - (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer) - (let ((buffer-read-only nil)) - (erase-buffer) - (insert (match-string 1)) - (goto-char (point-min)))) + (let ((err (match-string 1))) + (with-current-buffer (gdb-get-buffer 'gdb-registers-buffer) + (let ((buffer-read-only nil)) + (erase-buffer) + (insert err) + (goto-char (point-min))))) (let ((register-list (reverse gdb-register-names)) (register nil) (register-string nil) (register-values nil)) (goto-char (point-min)) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/progmodes/perl-mode.el --- a/lisp/progmodes/perl-mode.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/progmodes/perl-mode.el Wed Apr 12 17:40:36 2006 +0000 @@ -721,7 +721,10 @@ (save-excursion (forward-char 1) (forward-sexp -1) - (perl-indent-new-calculate 'virtual nil parse-start))) + (perl-indent-new-calculate + ;; Recalculate the parsing-start, since we may have jumped + ;; dangerously close (typically in the case of nested functions). + 'virtual nil (save-excursion (perl-beginning-of-function))))) (and (and (= (following-char) ?{) (save-excursion (forward-char) (perl-hanging-paren-p))) (+ (or default (perl-calculate-indent parse-start)) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/startup.el --- a/lisp/startup.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/startup.el Wed Apr 12 17:40:36 2006 +0000 @@ -1536,9 +1536,15 @@ ;; Display the input that we set up in the buffer. (set-buffer-modified-p nil) (goto-char (point-min)) - (save-window-excursion - (switch-to-buffer (current-buffer)) - (sit-for 120))) + (if (or (window-minibuffer-p) + (window-dedicated-p (selected-window))) + ;; There's no point is using pop-to-buffer since creating + ;; a new frame will generate enough events that the + ;; subsequent `sit-for' will immediately return anyway. + nil ;; (pop-to-buffer (current-buffer)) + (save-window-excursion + (switch-to-buffer (current-buffer)) + (sit-for 120)))) ;; Unwind ... ensure splash buffer is killed (kill-buffer "GNU Emacs")))) diff -r cc8354d6fe87 -r 24cf4bf418dc lisp/textmodes/org.el --- a/lisp/textmodes/org.el Mon Apr 10 15:09:46 2006 +0000 +++ b/lisp/textmodes/org.el Wed Apr 12 17:40:36 2006 +0000 @@ -5,7 +5,7 @@ ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, wp ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ -;; Version: 4.10 +;; Version: 4.21 ;; ;; This file is part of GNU Emacs. ;; @@ -81,6 +81,30 @@ ;; ;; Changes since version 4.00: ;; --------------------------- +;; Version 4.21 +;; - Bug fixes. +;; +;; Version 4.20 +;; - Links use now the [[link][description]] format by default. +;; When inserting links, the user is prompted for a description. +;; - If a link has a description, only the description is displayed +;; the link part is hidden. Use C-c C-l to edit the link part. +;; - TAGS are now bold, but in the same color as the headline. +;; - The width of a table column can be limited by using a field "". +;; - New structure for the customization tree. +;; - Bug fixes. +;; +;; Version 4.13 +;; - The list of agenda files can be maintainted in an external file. +;; - Bug fixes. +;; +;; Version 4.12 +;; - Templates for remember buffer. Note that the remember setup changes. +;; To set up templates, see `org-remember-templates'. +;; - The time in new time stamps can be rounded, see new option +;; `org-time-stamp-rounding-minutes'. +;; - Bug fixes (there are *always* more bugs). +;; ;; Version 4.10 ;; - Bug fixes. ;; @@ -98,7 +122,7 @@ ;; - Leading stars in headlines can be hidden, so make the outline look ;; cleaner. ;; - Mouse-1 can be used to follow links. -;; +;; ;; Version 4.06 ;; - HTML exporter treats targeted internal links. ;; - Bug fixes. @@ -137,30 +161,35 @@ ;; ;;; Code: -(eval-when-compile (require 'cl) (require 'calendar)) +(eval-when-compile + (require 'cl) + (require 'calendar)) (require 'outline) (require 'time-date) (require 'easymenu) -(defvar calc-embedded-close-formula) -(defvar calc-embedded-open-formula) -(defvar font-lock-unfontify-region-function) +(defvar calc-embedded-close-formula) ; defined by the calc package +(defvar calc-embedded-open-formula) ; defined by the calc package +(defvar font-lock-unfontify-region-function) ; defined by font-lock.el ;;; Customization variables -(defvar org-version "4.10" +(defvar org-version "4.21" "The version number of the file org.el.") (defun org-version () (interactive) (message "Org-mode version %s" org-version)) -;; The following two constants are for compatibility with different Emacs -;; versions (Emacs versus XEmacs) and with different versions of outline.el. -;; The compatibility code in org.el is based on these two constants. -(defconst org-xemacs-p (featurep 'xemacs) - "Are we running XEmacs?") +;; The following constant is for compatibility with different versions +;; of outline.el. (defconst org-noutline-p (featurep 'noutline) "Are we using the new outline mode?") +(defconst org-xemacs-p (featurep 'xemacs)) +(defconst org-format-transports-properties-p + (let ((x "a")) + (add-text-properties 0 1 '(test t) x) + (get-text-property 0 'test (format "%s" x))) + "Does format transport text properties?") (defgroup org nil "Outline-based notes management and organizer." @@ -174,6 +203,56 @@ :tag "Org Startup" :group 'org) +(defcustom org-startup-folded t + "Non-nil means, entering Org-mode will switch to OVERVIEW. +This can also be configured on a per-file basis by adding one of +the following lines anywhere in the buffer: + + #+STARTUP: fold + #+STARTUP: nofold + #+STARTUP: content" + :group 'org-startup + :type '(choice + (const :tag "nofold: show all" nil) + (const :tag "fold: overview" t) + (const :tag "content: all headlines" content))) + +(defcustom org-startup-truncated t + "Non-nil means, entering Org-mode will set `truncate-lines'. +This is useful since some lines containing links can be very long and +uninteresting. Also tables look terrible when wrapped." + :group 'org-startup + :type 'boolean) + +(defcustom org-startup-align-all-tables nil + "Non-nil means, align all tables when visiting a file. +This is useful when the column width in tables is forced with cookies +in table fields. Such tables will look correct only after the first re-align." + :group 'org-startup + :type 'boolean) + +(defcustom org-startup-with-deadline-check nil + "Non-nil means, entering Org-mode will run the deadline check. +This means, if you start editing an org file, you will get an +immediate reminder of any due deadlines. +This can also be configured on a per-file basis by adding one of +the following lines anywhere in the buffer: + + #+STARTUP: dlcheck + #+STARTUP: nodlcheck" + :group 'org-startup + :type 'boolean) + +(defcustom org-insert-mode-line-in-empty-file nil + "Non-nil means insert the first line setting Org-mode in empty files. +When the function `org-mode' is called interactively in an empty file, this +normally means that the file name does not automatically trigger Org-mode. +To ensure that the file will always be in Org-mode in the future, a +line enforcing Org-mode will be inserted into the buffer, if this option +has been set." + :group 'org-startup + :type 'boolean) + (defcustom org-CUA-compatible nil "Non-nil means use alternative key bindings for S-. Org-mode used S- for changing timestamps and priorities. @@ -212,115 +291,24 @@ (or (assq key org-disputed-keys) (error "Invalid Key %s in `org-key'" key)))) -(defcustom org-startup-folded t - "Non-nil means, entering Org-mode will switch to OVERVIEW. -This can also be configured on a per-file basis by adding one of -the following lines anywhere in the buffer: - - #+STARTUP: fold - #+STARTUP: nofold - #+STARTUP: content" - :group 'org-startup - :type '(choice - (const :tag "nofold: show all" nil) - (const :tag "fold: overview" t) - (const :tag "content: all headlines" content))) - -(defcustom org-startup-truncated t - "Non-nil means, entering Org-mode will set `truncate-lines'. -This is useful since some lines containing links can be very long and -uninteresting. Also tables look terrible when wrapped." +(defcustom org-ellipsis nil + "The ellipsis to use in the Org-mode outline. +When nil, just use the standard three dots. When a string, use that instead, +and just in Org-mode (which will then use its own display table). +Changing this requires executing `M-x org-mode' in a buffer to become +effective." :group 'org-startup - :type 'boolean) - -(defcustom org-startup-with-deadline-check nil - "Non-nil means, entering Org-mode will run the deadline check. -This means, if you start editing an org file, you will get an -immediate reminder of any due deadlines. -This can also be configured on a per-file basis by adding one of -the following lines anywhere in the buffer: - - #+STARTUP: dlcheck - #+STARTUP: nodlcheck" - :group 'org-startup - :type 'boolean) - -(defcustom org-insert-mode-line-in-empty-file nil - "Non-nil means insert the first line setting Org-mode in empty files. -When the function `org-mode' is called interactively in an empty file, this -normally means that the file name does not automatically trigger Org-mode. -To ensure that the file will always be in Org-mode in the future, a -line enforcing Org-mode will be inserted into the buffer, if this option -has been set." - :group 'org-startup - :type 'boolean) + :type '(choice (const :tag "Default" nil) + (string :tag "String" :value "...#"))) + +(defvar org-display-table nil + "The display table for org-mode, in case `org-ellipsis' is non-nil.") (defgroup org-keywords nil - "Options concerning TODO items in Org-mode." + "Keywords in Org-mode." :tag "Org Keywords" :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-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-keywords - :type '(choice (const sequence) - (const type))) - -(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-keywords - :type 'character) - -(defcustom org-lowest-priority ?C - "The lowest priority of TODO items. A character like ?A, ?B etc." - :group 'org-keywords - :type 'character) - (defcustom org-deadline-string "DEADLINE:" "String to mark deadline entries. A deadline is this string, followed by a time stamp. Should be a word, @@ -361,405 +349,22 @@ :group 'org-keywords :type 'string) -(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-keywords - :type 'hook) - -;; Variables for pre-computed regular expressions, all buffer local -(defvar org-todo-kwd-priority-p nil - "Do TODO items have priorities?") -(make-variable-buffer-local 'org-todo-kwd-priority-p) -(defvar org-todo-kwd-max-priority nil - "Maximum priority of TODO items.") -(make-variable-buffer-local 'org-todo-kwd-max-priority) -(defvar org-ds-keyword-length 12 - "Maximum length of the Deadline and SCHEDULED keywords.") -(make-variable-buffer-local 'org-ds-keyword-length) -(defvar org-done-string nil - "The last string in `org-todo-keywords', indicating an item is DONE.") -(make-variable-buffer-local 'org-done-string) -(defvar org-todo-regexp nil - "Matches any of the TODO state keywords.") -(make-variable-buffer-local 'org-todo-regexp) -(defvar org-not-done-regexp nil - "Matches any of the TODO state keywords except the last one.") -(make-variable-buffer-local 'org-not-done-regexp) -(defvar org-todo-line-regexp nil - "Matches a headline and puts TODO state into group 2 if present.") -(make-variable-buffer-local 'org-todo-line-regexp) -(defvar org-nl-done-regexp nil - "Matches newline followed by a headline with the DONE keyword.") -(make-variable-buffer-local 'org-nl-done-regexp) -(defvar org-looking-at-done-regexp nil - "Matches the DONE keyword a point.") -(make-variable-buffer-local 'org-looking-at-done-regexp) -(defvar org-deadline-regexp nil - "Matches the DEADLINE keyword.") -(make-variable-buffer-local 'org-deadline-regexp) -(defvar org-deadline-time-regexp nil - "Matches the DEADLINE keyword together with a time stamp.") -(make-variable-buffer-local 'org-deadline-time-regexp) -(defvar org-deadline-line-regexp nil - "Matches the DEADLINE keyword and the rest of the line.") -(make-variable-buffer-local 'org-deadline-line-regexp) -(defvar org-scheduled-regexp nil - "Matches the SCHEDULED keyword.") -(make-variable-buffer-local 'org-scheduled-regexp) -(defvar org-scheduled-time-regexp nil - "Matches the SCHEDULED keyword together with a time stamp.") -(make-variable-buffer-local 'org-scheduled-time-regexp) - -(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-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) - -(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-time - :type 'boolean) - -(defgroup org-agenda nil - "Options concerning agenda display Org-mode." - :tag "Org Agenda" - :group 'org) - -(defcustom org-agenda-files nil - "A list of org files for agenda/diary display. -Entries are 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." - :group 'org-agenda - :type '(repeat file)) - -(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-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 - :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 - :type 'boolean) - -(defcustom org-fit-agenda-window t - "Non-nil means, change window size of agenda to fit content." - :group 'org-agenda - :type 'boolean) - -(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 - :type 'boolean) - -;; FIXME: First day of month works only for current month because it would -;; require a variable ndays treatment. -(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 - :type '(choice (const :tag "Today" nil) - (const :tag "First day of month" t) - (number :tag "Weekday No."))) - -(defcustom org-agenda-ndays 7 - "Number of days to include in overview display." - :group 'org-agenda - :type 'number) - -(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) - -(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 - :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-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) - -(defcustom org-timeline-prefix-format " % s" - "Like `org-agenda-prefix-format', but for the timeline of a single file." - :type 'string - :group 'org-agenda) - -(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-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 - :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 - :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-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 - :type '(choice - (const :tag "Always" t) - (const :tag "Never" nil) - (const :tag "When at beginning of entry" beg))) - -(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 - :type 'boolean) - -(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 - :type '(choice - (const :tag "Always" t) - (const :tag "Never" nil) - (const :tag "When prefix format contains %T" prefix))) - (defgroup org-structure nil - "Options concerning structure editing in Org-mode." + "Options concerning the general structure of Org-mode files." :tag "Org Structure" :group 'org) -(defcustom org-cycle-include-plain-lists nil - "Non-nil means, include plain lists into visibility cycling. -This means that during cycling, plain list items will *temporarily* be -interpreted as outline headlines with a level given by 1000+i where i is the -indentation of the bullet. In all other operations, plain list items are -not seen as headlines. For example, you cannot assign a TODO keyword to -such an item." - :group 'org-structure - :type 'boolean) +(defgroup org-cycle nil + "Options concerning visibility cycling in Org-mode." + :tag "Org Cycle" + :group 'org-structure) (defcustom org-cycle-emulate-tab t "Where should `org-cycle' emulate TAB. nil Never white Only in completely white lines t Everywhere except in headlines" - :group 'org-structure + :group 'org-cycle :type '(choice (const :tag "Never" nil) (const :tag "Only in completely white lines" white) (const :tag "Everywhere except in headlines" t) @@ -772,20 +377,58 @@ argument is a symbol. After a global state change, it can have the values `overview', `content', or `all'. After a local state change, it can have the values `folded', `children', or `subtree'." - :group 'org-structure + :group 'org-cycle :type 'hook) +(defgroup org-edit-structure nil + "Options concerning structure editing in Org-mode." + :tag "Org Edit Structure" + :group 'org-structure) + +(defcustom org-odd-levels-only nil + "Non-nil means, skip even levels and only use odd levels for the outline. +This has the effect that two stars are being added/taken away in +promotion/demotion commands. It also influences how levels are +handled by the exporters. +Changing it requires restart of `font-lock-mode' to become effective +for fontification also in regions already fontified." + :group 'org-edit-structure + :group 'org-font-lock + :type 'boolean) + +(defcustom org-adapt-indentation t + "Non-nil means, adapt indentation when promoting and demoting. +When this is set and the *entire* text in an entry is indented, the +indentation is increased by one space in a demotion command, and +decreased by one in a promotion command. If any line in the entry +body starts at column 0, indentation is not changed at all." + :group 'org-edit-structure + :type 'boolean) + +(defcustom org-enable-fixed-width-editor t + "Non-nil means, lines starting with \":\" are treated as fixed-width. +This currently only means, they are never auto-wrapped. +When nil, such lines will be treated like ordinary lines. +See also the QUOTE keyword." + :group 'org-edit-structure + :type 'boolean) + +(defgroup org-sparse-trees nil + "Options concerning sparse trees in Org-mode." + :tag "Org Sparse Trees" + :group 'org-structure) + (defcustom org-highlight-sparse-tree-matches t "Non-nil means, highlight all matches that define a sparse tree. The highlights will automatically disappear the next time the buffer is changed by an edit command." - :group 'org-structure + :group 'org-sparse-trees :type 'boolean) (defcustom org-show-hierarchy-above t "Non-nil means, show full hierarchy when showing a spot in the tree. Turning this off makes sparse trees more compact, but also less clear." - :group 'org-structure + :group 'org-sparse-trees :type 'boolean) (defcustom org-show-following-heading t @@ -795,35 +438,31 @@ easier to edit directly inside the sparse tree. However, if you use `org-occur' mainly as an overview, the following headlines are unnecessary clutter." - :group 'org-structure + :group 'org-sparse-trees :type 'boolean) (defcustom org-occur-hook '(org-first-headline-recenter) "Hook that is run after `org-occur' has constructed a sparse tree. This can be used to recenter the window to show as much of the structure as possible." - :group 'org-structure + :group 'org-sparse-trees :type 'hook) -(defcustom org-odd-levels-only nil - "Non-nil means, skip even levels and only use odd levels for the outline. -This has the effect that two stars are being added/taken away in -promotion/demotion commands. It also influences how levels are -handled by the exporters. -Changing it requires restart of `font-lock-mode' to become effective -for fontification also in regions already fontified." - :group 'org-structure - :group 'org-font-lock +(defgroup org-plain-lists nil + "Options concerning plain lists in Org-mode." + :tag "Org Plain lists" + :group 'org-structure) + +(defcustom org-cycle-include-plain-lists nil + "Non-nil means, include plain lists into visibility cycling. +This means that during cycling, plain list items will *temporarily* be +interpreted as outline headlines with a level given by 1000+i where i is the +indentation of the bullet. In all other operations, plain list items are +not seen as headlines. For example, you cannot assign a TODO keyword to +such an item." + :group 'org-plain-lists :type 'boolean) -(defcustom org-adapt-indentation t - "Non-nil means, adapt indentation when promoting and demoting. -When this is set and the *entire* text in an entry is indented, the -indentation is increased by one space in a demotion command, and -decreased by one in a promotion command. If any line in the entry -body starts at column 0, indentation is not changed at all." - :group 'org-structure - :type 'boolean) (defcustom org-plain-list-ordered-item-terminator t "The character that makes a line with leading number an ordered list item. @@ -831,7 +470,7 @@ ?. may look nicer, it creates the danger that a line with leading number may be incorrectly interpreted as an item. ?\) therefore is the safe choice." - :group 'org-structure + :group 'org-plain-lists :type '(choice (const :tag "dot like in \"2.\"" ?.) (const :tag "paren like in \"2)\"" ?\)) (const :tab "both" t))) @@ -841,16 +480,13 @@ Renumbering happens when the sequence have been changed with \\[org-shiftmetaup] or \\[org-shiftmetadown]. After other editing commands, use \\[org-ctrl-c-ctrl-c] to trigger renumbering." - :group 'org-structure + :group 'org-plain-lists :type 'boolean) -(defcustom org-enable-fixed-width-editor t - "Non-nil means, lines starting with \":\" are treated as fixed-width. -This currently only means, they are never auto-wrapped. -When nil, such lines will be treated like ordinary lines. -See also the QUOTE keyword." - :group 'org-structure - :type 'boolean) +(defgroup org-archive nil + "Options concerning archiving in Org-mode." + :tag "Org Archive" + :group 'org-structure) (defcustom org-archive-location "%s_archive::" "The location where subtrees should be archived. @@ -885,12 +521,12 @@ line like #+ARCHIVE: basement::** Finished Tasks" - :group 'org-structure + :group 'org-archive :type 'string) (defcustom org-archive-mark-done t "Non-nil means, mark archived entries as DONE." - :group 'org-structure + :group 'org-archive :type 'boolean) (defcustom org-archive-stamp-time t @@ -898,302 +534,9 @@ The time stamp will be added directly after the TODO state keyword in the first line, so it is probably best to use this in combinations with `org-archive-mark-done'." - :group 'org-structure - :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-link nil - "Options concerning links in Org-mode." - :tag "Org Link" - :group 'org) - -(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 - :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 - :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 - :type 'interger) - -(defcustom org-link-format "<%s>" - "Default format for linkes in the buffer. -This is a format string for printf, %s will be replaced by the link text. -If you want to make sure that your link is always properly terminated, -include angle brackets into this format, like \"<%s>\". 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>"))) - -(defcustom org-allow-space-in-links t - "Non-nil means, file names in links may contain space characters. -When nil, it becomes possible to put several links into a line. -Note that in tables, a link never extends accross fields, so in a table -it is always possible to put several links into a line. -Changing this variable requires a restart of Emacs of 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) - -(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." - :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 + :group 'org-archive :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-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" @@ -1230,48 +573,30 @@ (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 - :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 - :type '(cons (number :tag "Before \"|\"") (number :tag " After \"|\""))) - (defcustom org-table-number-regexp "^[<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%]*$" "Regular expression for recognizing numbers in table columns. If a table column contains mostly numbers, it will be aligned to the @@ -1284,7 +609,7 @@ 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]+$") @@ -1305,29 +630,54 @@ 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 ;kw + "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 + :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]." @@ -1398,11 +748,793 @@ :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>"))) + +(defcustom org-activate-links '(bracket angle plain radio tag date) + "Types of links that should be activated in Org-mode files. +This is a list of symbols, each leading to the activation of a certain link +type. In principle, it does not hurt to turn on most link types - there may +be a small gain when turning off unused link types. The types are: + +bracket The recommended [[link][description]] or [[link]] links with hiding. +angular Links in angular brackes that may contain whitespace like + . +plain Plain links in normal text, no whitespace, like http://google.com. +radio Text that is matched by a radio target, see manual for details. +tag Tag settings in a headline (link to tag search). +date Time stamps (link to calendar). +camel CamelCase words defining text searches. + +Changing this variable requires a restart of Emacs to become effective." + :group 'org-link + :type '(set (const :tag "Double bracket links (new style)" bracket) + (const :tag "Angular bracket links (old style)" angular) + (const :tag "plain text links" plain) + (const :tag "Radio target matches" radio) + (const :tag "Tags" tag) + (const :tag "Timestamps" date) + (const :tag "CamelCase words" camel))) + +(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 'yes-or-no-p + "Non-nil means, ask for confirmation before executing shell links. +Shell links can be dangerous, just thing about a link + + [[shell:rm -rf ~/*][Google Search]] + +This link would show up in your Org-mode document as \"Google Search\" +but really it would remove your entire home directory. Dangerous indeed. +Therefore I *definitely* advise agains setting this varaiable to nil. +Just change it to `y-or-n-p' of you want to confirm with a single key press +rather than having to type \"yes\"." + :group 'org-link-follow + :type '(choice + (const :tag "with yes-or-no (safer)" yes-or-no-p) + (const :tag "with y-or-n (faster)" y-or-n-p) + (const :tag "no confirmation (dangerous)" nil))) + +(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. +This variable is only relevant if `org-todo-keywords' contains more than two +states. \\Possible values are `sequence' and `type'. + +When `sequence', \\[org-todo] will always switch to the next state in the +`org-todo-keywords' list. When `type', \\[org-todo] only cycles from state +to state when executed several times in direct succession. Otherwise, it +switches directly to DONE from any state. +See the manual for more information." + :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) + +(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) + +(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 of a match 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) + +(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) + +(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 and maintained 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'.") + +;; FIXME: There seem to be situations where this does no work. +(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, remove the tags from the headline copy in the 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") @@ -1416,7 +1548,7 @@ "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") @@ -1427,9 +1559,200 @@ (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-mark-todo-in-toc nil + "Non-nil means, mark TOC lines that contain any open TODO items." + :group 'org-export-general + :type 'boolean) + +(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) + +(defgroup org-export-translation nil + "Options for translating special ascii sequences for the export backends." + :tag "Org Export Translation" + :group 'org-export) + +(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-translation + :type 'boolean) + +(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, but HTML does. + +This option can also be set with the +OPTIONS line, e.g. \"^:nil\"." + :group 'org-export-translation + :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-translation + :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. See also the QUOTE keyword. +Not all export backends support this. + +This option can also be set with the +OPTIONS line, e.g. \"::nil\"." + :group 'org-export-translation + :type 'boolean) + +(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-translation + :type 'integer) + +(defgroup org-export-tables nil + "Options for exporting tables in Org-mode." + :tag "Org Export Tables" + :group 'org-export) + +(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-tables + :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-tables + :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-tables + :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-tables + :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 ;kw, if we have only one. + "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 "