# HG changeset patch # User Miles Bader # Date 1145263272 0 # Node ID c156f6a9e7b5841062969eae5b6097bc2ef19b1a # Parent ab20fb198dda033c3102b2c57e9359f90ea4cb77# Parent 027c07dcdee5b8fb7727c4b4daa07fdea064b390 Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-56 Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 204-225) - Update from CVS - Sync from erc--emacs--0 - Merge from gnus--rel--5.10 - Improve tq.el. - Update from CVS: src/puresize.h (PURESIZE_RATIO): Reduce to 10/6. * gnus--rel--5.10 (patch 81-85) - Update from CVS - Merge from emacs--devo--0 diff -r ab20fb198dda -r c156f6a9e7b5 admin/FOR-RELEASE --- a/admin/FOR-RELEASE Sun Apr 09 01:43:22 2006 +0000 +++ b/admin/FOR-RELEASE Mon Apr 17 08:41:12 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) @@ -72,7 +76,7 @@ DIRECTORY STATUS IN CHARGE --------- ------ --------- etc (and subdirs) done Thien-Thi Nguyen (ttn(@gnu.org)) -leim working Kenichi Handa +leim done Kenichi Handa lib-src done ttn lisp done ttn lisp/calc done Jay Belanger @@ -81,8 +85,8 @@ lisp/emulation done ttn lisp/eshell done ttn lisp/gnus done Romain Francoise -lisp/international working Kenichi Handa -lisp/language working Kenichi Handa +lisp/international done Kenichi Handa +lisp/language done Kenichi Handa lisp/mail done ttn lisp/mh-e done Bill Wohler lisp/net done ttn diff -r ab20fb198dda -r c156f6a9e7b5 etc/ChangeLog --- a/etc/ChangeLog Sun Apr 09 01:43:22 2006 +0000 +++ b/etc/ChangeLog Mon Apr 17 08:41:12 2006 +0000 @@ -1,3 +1,21 @@ +2006-04-12 Kenichi Handa + + * PROBLEMS (C-SPC fails ...): Explicitly say fcitx in the header. + +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 ab20fb198dda -r c156f6a9e7b5 etc/NEWS --- a/etc/NEWS Sun Apr 09 01:43:22 2006 +0000 +++ b/etc/NEWS Mon Apr 17 08:41:12 2006 +0000 @@ -3767,6 +3767,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: @@ -4036,6 +4042,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 @@ -10859,9 +10871,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 ab20fb198dda -r c156f6a9e7b5 etc/PROBLEMS --- a/etc/PROBLEMS Sun Apr 09 01:43:22 2006 +0000 +++ b/etc/PROBLEMS Mon Apr 17 08:41:12 2006 +0000 @@ -995,7 +995,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 fcitx 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 @@ -1009,6 +1009,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 ab20fb198dda -r c156f6a9e7b5 etc/TODO --- a/etc/TODO Sun Apr 09 01:43:22 2006 +0000 +++ b/etc/TODO Mon Apr 17 08:41:12 2006 +0000 @@ -9,10 +9,13 @@ * Small but important fixes needed in existing features: +** Distribute a bar cursor of width > 1 evenly between the two glyphs + on each side of the bar (what to do at the edges?). + ** Make vc-checkin avoid reverting the buffer if has not changed after the checkin. Comparing (md5 BUFFER) to (md5 FILE) should be enough. -** Make vc-annotate show place the cursor in the annotate buffer at the +** Make vc-annotate show place the cursor in the annotate buffer at the same line as the current buffer. ** buffer-offer-save should be a permanent local. @@ -69,7 +72,7 @@ ** Redesign the load-history data structure so it can cope better with evaluating definitions of the same function from different files, recording which file the latest definition came from. - + * Important features: ** Provide user-friendly ways to list all available font families, @@ -158,7 +161,7 @@ ** Emacs Lisp mode could put an overlay on the defun for every function that has advice. The overlay could have `after-text' like " [Function has advice]". It might look like - (defun foo [Function has advice] (x y) + (defun foo [Function has advice] (x y) The overlay could also be a button that you could use to view the advice. ** ange-ftp @@ -261,7 +264,7 @@ ** Highlight rectangles (`mouse-track-rectangle-p' in XEmacs). Already in CUA, but it's a valuable feature worth making more general. -** Support simultaneous tty and X frames. [See the multi-tty branch of Emacs +** Support simultaneous tty and X frames. [See the multi-tty branch of Emacs at http://lorentey.hu/project/emacs.] ** Provide MIME support for Rmail using the Gnus MIME library. [Maybe diff -r ab20fb198dda -r c156f6a9e7b5 etc/orgcard.tex --- a/etc/orgcard.tex Sun Apr 09 01:43:22 2006 +0000 +++ b/etc/orgcard.tex Mon Apr 17 08:41:12 2006 +0000 @@ -1,4 +1,6 @@ -% Reference Card for Org Mode 4.10 +% Reference Card for Org Mode +\def\orgversionnumber{4.23} +\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 ab20fb198dda -r c156f6a9e7b5 leim/Makefile.in --- a/leim/Makefile.in Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/Makefile.in Mon Apr 17 08:41:12 2006 +0000 @@ -1,5 +1,5 @@ # Makefile for leim subdirectory in GNU Emacs. -# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 # National Institute of Advanced Industrial Science and Technology (AIST) diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/croatian.el --- a/leim/quail/croatian.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/croatian.el Mon Apr 17 08:41:12 2006 +0000 @@ -1,6 +1,6 @@ ;;; quail/croatian.el -- Quail package for inputing Croatian -*-coding: iso-8859-2;-*- -;; Copyright (C) 2002 Free Software Foundation, Inc. +;; Copyright (C) 2003 Free Software Foundation, Inc. ;; Author: Hrvoje Nikšić , ;; modeled after czech.el by Milan Zamazal. diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/cyril-jis.el --- a/leim/quail/cyril-jis.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/cyril-jis.el Mon Apr 17 08:41:12 2006 +0000 @@ -1,7 +1,7 @@ ;;; cyril-jis.el --- Quail package for inputting JISX0208 Cyrillic letters ;; Copyright (C) 2001 Free Software Foundation, Inc. -;; Copyright (C) 1997, 2005 +;; Copyright (C) 1997 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/cyrillic.el --- a/leim/quail/cyrillic.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/cyrillic.el Mon Apr 17 08:41:12 2006 +0000 @@ -2,7 +2,7 @@ ;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005 ;; Free Software Foundation, Inc. -;; Copyright (C) 1997, 2005 +;; Copyright (C) 1997, 2003 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/hangul3.el --- a/leim/quail/hangul3.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/hangul3.el Mon Apr 17 08:41:12 2006 +0000 @@ -1,6 +1,6 @@ ;;; hangul3.el --- Quail package for inputting Korean Hangul characters -*-coding: iso-2022-7bit;-*- -;; Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 2001, 2002 Free Software Foundation, Inc. ;; Copyright (C) 1997, 2002 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/hanja.el --- a/leim/quail/hanja.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/hanja.el Mon Apr 17 08:41:12 2006 +0000 @@ -1,5 +1,6 @@ ;;; hanja.el --- Quail-package for Korean Hanja (KSC5601) -*-coding: iso-2022-7bit;-*- +;; Copyright (C) 1997 Free Software Foundation, Inc. ;; Copyright (C) 1997 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/japanese.el --- a/leim/quail/japanese.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/japanese.el Mon Apr 17 08:41:12 2006 +0000 @@ -1,5 +1,6 @@ ;;; japanese.el --- Quail package for inputting Japanese -*-coding: iso-2022-7bit;-*- +;; Copyright (C) 2001 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2005 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/latin-alt.el --- a/leim/quail/latin-alt.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/latin-alt.el Mon Apr 17 08:41:12 2006 +0000 @@ -1,7 +1,7 @@ ;;; latin-alt.el --- Quail package for inputting various European characters -*-coding: utf-8;-*- ;; Copyright (C) 1997, 1998, 2001, 2002 Free Software Foundation, Inc. -;; Copyright (C) 1997, 1999 +;; Copyright (C) 1999 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/latin-ltx.el --- a/leim/quail/latin-ltx.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/latin-ltx.el Mon Apr 17 08:41:12 2006 +0000 @@ -1,7 +1,7 @@ ;;; latin-ltx.el --- Quail package for TeX-style input -*-coding: utf-8;-*- ;; Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc. -;; Copyright (C) 2001 +;; Copyright (C) 2001, 2005 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/latin-post.el --- a/leim/quail/latin-post.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/latin-post.el Mon Apr 17 08:41:12 2006 +0000 @@ -1,7 +1,7 @@ ;;; latin-post.el --- Quail packages for inputting various European characters -*-coding: utf-8;-*- ;; Copyright (C) 1997, 1998, 2001, 2002 Free Software Foundation, Inc. -;; Copyright (C) 1997 +;; Copyright (C) 1997, 1999 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 ;; Copyright (C) 2003 diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/latin-pre.el --- a/leim/quail/latin-pre.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/latin-pre.el Mon Apr 17 08:41:12 2006 +0000 @@ -1,8 +1,8 @@ ;;; latin-pre.el --- Quail packages for inputting various European characters -*-coding: utf-8;-*- -;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 ;; Free Software Foundation, Inc. -;; Copyright (C) 1997, 1999, 2005 +;; Copyright (C) 1997, 1998, 1999, 2000, 2005 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/pypunct-b5.el --- a/leim/quail/pypunct-b5.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/pypunct-b5.el Mon Apr 17 08:41:12 2006 +0000 @@ -1,6 +1,6 @@ ;;; pypunct-b5.el --- Quail packages for Chinese (pinyin + extra symbols) -*-coding: iso-2022-7bit;-*- -;; Copyright (C) 1997, 2000 +;; Copyright (C) 1997, 2000, 2003 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff -r ab20fb198dda -r c156f6a9e7b5 leim/quail/tibetan.el --- a/leim/quail/tibetan.el Sun Apr 09 01:43:22 2006 +0000 +++ b/leim/quail/tibetan.el Mon Apr 17 08:41:12 2006 +0000 @@ -1,7 +1,7 @@ ;;; tibetan.el --- Quail package for inputting Tibetan characters -*-coding: iso-2022-7bit;-*- -;; Copyright (C) 1995 Free Software Foundation, Inc. -;; Copyright (C) 1995, 1998, 1999, 2000 +;; Copyright (C) 1997 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff -r ab20fb198dda -r c156f6a9e7b5 lisp/ChangeLog --- a/lisp/ChangeLog Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/ChangeLog Mon Apr 17 08:41:12 2006 +0000 @@ -1,3 +1,282 @@ +2006-04-16 Stefan Monnier + + * newcomment.el (comment-add): New function. + (comment-region-default, comment-dwim): Use it. + +2006-04-15 Michael Olson + + * emacs-lisp/tq.el: Improve comments. + (tq-queue-head-question): New accessor function. + (tq-queue-head-regexp, tq-queue-head-closure, tq-queue-head-fn): + Update for modified queue structure. + (tq-queue-add): Accept `question' argument. + (tq-queue-pop): If a question is pending, send it. + (tq-enqueue): Accept new optional argument `delay-question'. + If this is non-nil, and at least one other question is pending a + response, queue the question rather than sending it immediately. + +2006-04-15 Roland Winkler + + * calendar/appt.el (appt-add): Check whether an appointment is + already present in appt-time-msg-list. Simplify code. + +2006-04-14 Stefan Monnier + + * progmodes/cc-langs.el (c-mode-menu): + Don't presume c-subword-mode is bound. + +2006-04-13 Bill Wohler + + * cus-edit.el (customize-package-emacs-version-alist): Update docstring. + (customize-package-emacs-version): Use cdr instead of cadr now + that alists use dotted pairs. + + * custom.el (defcustom): Fix docstring for :package-version. + +2006-04-13 Michael Albinus + + * net/tramp.el (tramp-display-shell-command-buffer): New defvar. + (tramp-handle-shell-command): Display output buffer only when + `tramp-display-shell-command-buffer' is true. + (tramp-handle-process-file): Set `tramp-display-shell-command-buffer'. + +2006-04-13 Carsten Dominik + + * textmodes/org.el (org-set-autofill-regexps): Set only the local + values of `adaptive-fill-regexp' and `adaptive-fill-function'. + +2006-04-13 Romain Francoise + + * pcvs-parse.el (cvs-parse-table): Use `with-temp-buffer' to avoid + leaving temporary .cvsignore buffers behind. + +2006-04-13 Carsten Dominik + + * textmodes/org.el: (org-set-regexps-and-options) + (org-get-current-options): Better names for the startup folding + options. + +2006-04-13 Thien-Thi Nguyen + + * vc.el (vc-annotate): Arrange for point to end up at the same + line number as in the original, but only when using a new buffer. + +2006-04-12 Davis Herring (tiny change) + + * files.el (hack-one-local-variable-eval-safep): + Recognize `edebug-form-spec' for `put', but only if it passes + `edebug-basic-spec'. Generalize `put' handling. + + * emacs-lisp/edebug.el (edebug-basic-spec): New function for + vetting file-local form specs. + + * allout.el (allout-layout): Autoload its `safe-local-variable' + property. + +2006-04-13 Carsten Dominik + + * textmodes/org.el: (org-ctrl-c-ctrl-c): Improve documentation string. + (org-agenda-mouse-1-follows-link) + (org-mouse-1-follows-link): New options. + (org-format-agenda-item): Fix bug if TAGS is nil. + (org-agenda-get-scheduled): Quote `priority' symbol in plist. + +2006-04-13 Nick Roberts + + * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers): + GDB 6.1+ gives full filename for "info sources" so use + file-name-nondirectory. + +2006-04-12 Romain Francoise + + * subr.el (read-passwd): Bind `message-log-max' to nil. + +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 + specs while looking for charset. + + * textmodes/picture.el (picture-mode-exit): Run picture-mode-exit-hook. + + * play/landmark.el (lm-font-lock-face-O, lm-font-lock-face-X): + Make them faces. + (lm-font-lock-keywords): Update appropriately. + +2006-04-10 Kim F. Storm + + * simple.el (filter-buffer-substring): Add NOPROPS arg, so + it can also replace buffer-substring-no-properties. + + * emulation/cua-base.el (cua-delete-region, cua-paste) + (cua-repeat-replace-region): Use filter-buffer-substring. + + * emulation/cua-gmrk.el (cua-copy-region-to-global-mark) + (cua-cut-region-to-global-mark): Likewise. + + * emulation/cua-rect.el (cua--extract-rectangle) + (cua-incr-rectangle, cua--rectangle-aux-replace): Likewise. + +2006-04-09 Roland Winkler + + * textmodes/bibtex.el (bibtex-entry-update): New optional arg + entry-type. Add field delimiters to numerical fields if they are + not present. + +2006-04-09 Roland Winkler + + * textmodes/bibtex.el (bibtex-find-text-internal): Add new element + string-const to return value. + (bibtex-remove-delimiters): Use it. + 2006-04-08 Stefan Monnier * emacs-lisp/bytecomp.el (byte-compile-form): Don't call @@ -57,12 +336,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. @@ -95,8 +373,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 @@ -109,21 +386,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. @@ -194,8 +470,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 @@ -208,8 +484,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 ab20fb198dda -r c156f6a9e7b5 lisp/allout.el --- a/lisp/allout.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/allout.el Mon Apr 17 08:41:12 2006 +0000 @@ -666,6 +666,7 @@ `allout-layout' can additionally have the value `t', in which case the value of `allout-default-layout' is used.") (make-variable-buffer-local 'allout-layout) +;;;###autoload (put 'allout-layout 'safe-local-variable t) ;;;_ : Topic header format diff -r ab20fb198dda -r c156f6a9e7b5 lisp/calendar/appt.el --- a/lisp/calendar/appt.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/calendar/appt.el Mon Apr 17 08:41:12 2006 +0000 @@ -498,11 +498,11 @@ (interactive "sTime (hh:mm[am/pm]): \nsMessage: ") (unless (string-match appt-time-regexp new-appt-time) (error "Unacceptable time-string")) - (let* ((appt-time-string (concat new-appt-time " " new-appt-msg)) - (appt-time (list (appt-convert-time new-appt-time))) - (time-msg (list appt-time appt-time-string t))) - (setq appt-time-msg-list (nconc appt-time-msg-list (list time-msg))) - (setq appt-time-msg-list (appt-sort-list appt-time-msg-list)))) + (let ((time-msg (list (list (appt-convert-time new-appt-time)) + (concat new-appt-time " " new-appt-msg) t))) + (unless (member time-msg appt-time-msg-list) + (setq appt-time-msg-list + (appt-sort-list (nconc appt-time-msg-list (list time-msg))))))) ;;;###autoload (defun appt-delete () diff -r ab20fb198dda -r c156f6a9e7b5 lisp/cus-edit.el --- a/lisp/cus-edit.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/cus-edit.el Mon Apr 17 08:41:12 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,33 @@ (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 mapping versions of Emacs to versions of a package. +These package versions are listed in the :package-version +keyword used in `defcustom', `defgroup', and `defface'. Its +elements look like this: + + (PACKAGE (PVERSION . EVERSION)...) + +For each PACKAGE, which is a symbol, there are one or more +elements that contain a package version PVERSION with an +associated Emacs version EVERSION. These versions are strings. +For example, the MH-E package updates this alist with the +following: + + (add-to-list 'customize-package-emacs-version-alist + '(MH-E (\"6.0\" . \"22.1\") (\"6.1\" . \"22.1\") + (\"7.0\" . \"22.1\") (\"7.1\" . \"22.1\") + (\"7.2\" . \"22.1\") (\"7.3\" . \"22.1\") + (\"7.4\" . \"22.1\") (\"8.0\" . \"22.1\"))) + +The value of PACKAGE needs to be unique and it needs to match the +PACKAGE value appearing in the :package-version keyword. Since +the user might see the value in a error message, a good choice is +the official name of the package, such as MH-E or Gnus.") + ;;;###autoload (defalias 'customize-changed 'customize-changed-options) @@ -1119,7 +1146,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 +1167,32 @@ (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 + (cdr (assoc (cdr package-version) package-versions))) + (unless emacs-version + (message "%s version %s not found in %s" symbol + (cdr package-version) + "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 ab20fb198dda -r c156f6a9e7b5 lisp/custom.el --- a/lisp/custom.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/custom.el Mon Apr 17 08:41:12 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,19 @@ 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'. + Since PACKAGE must be unique and the user might see it in an + error message, a good choice is the official name of the + package, such as MH-E or Gnus. :tag LABEL Use LABEL, a string, instead of the item's name, to label the item in customization menus and buffers. @@ -286,8 +298,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 +326,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 +378,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 +436,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 +494,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 +547,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 ab20fb198dda -r c156f6a9e7b5 lisp/emacs-lisp/bytecomp.el --- a/lisp/emacs-lisp/bytecomp.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/emacs-lisp/bytecomp.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/emacs-lisp/edebug.el --- a/lisp/emacs-lisp/edebug.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/emacs-lisp/edebug.el Mon Apr 17 08:41:12 2006 +0000 @@ -258,6 +258,20 @@ edebug-form-spec )) +;;;###autoload +(defun edebug-basic-spec (spec) + "Return t if SPEC uses only extant spec symbols. +An extant spec symbol is a symbol that is not a function and has a +`edebug-form-spec' property." + (cond ((listp spec) + (catch 'basic + (while spec + (unless (edebug-basic-spec (car spec)) (throw 'basic nil)) + (setq spec (cdr spec))) + t)) + ((symbolp spec) + (unless (functionp spec) (get spec 'edebug-form-spec))))) + ;;; Utilities ;; Define edebug-gensym - from old cl.el diff -r ab20fb198dda -r c156f6a9e7b5 lisp/emacs-lisp/find-func.el --- a/lisp/emacs-lisp/find-func.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/emacs-lisp/find-func.el Mon Apr 17 08:41:12 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-\\|$\\|\(\\|\)\\)") @@ -228,8 +228,16 @@ (with-syntax-table emacs-lisp-mode-syntax-table (goto-char (point-min)) (if (or (re-search-forward regexp nil t) + ;; `regexp' matches definitions using known forms like + ;; `defun', or `defvar'. But some functions/variables + ;; are defined using special macros (or functions), so + ;; if `regexp' can't find the definition, we look for + ;; something of the form "(SOMETHING ...)". + ;; This fails to distinguish function definitions from + ;; variable declarations (or even uses thereof), but is + ;; a good pragmatic fallback. (re-search-forward - (concat "^([^ ]+" find-function-space-re "['(]" + (concat "^([^ ]+" find-function-space-re "['(]?" (regexp-quote (symbol-name symbol)) "\\_>") nil t)) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/emacs-lisp/tq.el --- a/lisp/emacs-lisp/tq.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/emacs-lisp/tq.el Mon Apr 17 08:41:12 2006 +0000 @@ -27,18 +27,56 @@ ;;; Commentary: -;; manages receiving a stream asynchronously, -;; parsing it into transactions, and then calling -;; handler functions +;; This file manages receiving a stream asynchronously, parsing it +;; into transactions, and then calling the associated handler function +;; upon the completion of each transaction. ;; Our basic structure is the queue/process/buffer triple. Each entry -;; of the queue is a regexp/closure/function triple. We buffer -;; bytes from the process until we see the regexp at the head of the -;; queue. Then we call the function with the closure and the -;; collected bytes. +;; of the queue part is a list of question, regexp, closure, and +;; function that is consed to the last element. + +;; A transaction queue may be created by calling `tq-create'. + +;; A request may be added to the queue by calling `tq-enqueue'. If +;; the `delay-question' argument is non-nil, we will wait to send the +;; question to the process until it has finished sending other input. +;; Otherwise, once a request is enqueued, we send the given question +;; immediately to the process. + +;; We then buffer bytes from the process until we see the regexp that +;; was provided in the call to `tq-enqueue'. Then we call the +;; provided function with the closure and the collected bytes. If we +;; have indicated that the question from the next transaction was not +;; sent immediately, send it at this point, awaiting the response. ;;; Code: +;;; Accessors + +;; This part looks like (queue . (process . buffer)) +(defun tq-queue (tq) (car tq)) +(defun tq-process (tq) (car (cdr tq))) +(defun tq-buffer (tq) (cdr (cdr tq))) + +;; The structure of `queue' is as follows +;; ((question regexp closure . fn) +;; ) +;; question: string to send to the process +(defun tq-queue-head-question (tq) (car (car (tq-queue tq)))) +;; regexp: regular expression that matches the end of a response from +;; the process +(defun tq-queue-head-regexp (tq) (car (cdr (car (tq-queue tq))))) +;; closure: additional data to pass to function +(defun tq-queue-head-closure (tq) (car (cdr (cdr (car (tq-queue tq)))))) +;; fn: function to call upon receiving a complete response from the +;; process +(defun tq-queue-head-fn (tq) (cdr (cdr (cdr (car (tq-queue tq)))))) + +;; Determine whether queue is empty +(defun tq-queue-empty (tq) (not (tq-queue tq))) + +;;; Core functionality + ;;;###autoload (defun tq-create (process) "Create and return a transaction queue communicating with PROCESS. @@ -54,33 +92,37 @@ (tq-filter ',tq string))) tq)) -;;; accessors -(defun tq-queue (tq) (car tq)) -(defun tq-process (tq) (car (cdr tq))) -(defun tq-buffer (tq) (cdr (cdr tq))) - -(defun tq-queue-add (tq re closure fn) +(defun tq-queue-add (tq question re closure fn) (setcar tq (nconc (tq-queue tq) - (cons (cons re (cons closure fn)) nil))) + (cons (cons question (cons re (cons closure fn))) nil))) 'ok) -(defun tq-queue-head-regexp (tq) (car (car (tq-queue tq)))) -(defun tq-queue-head-fn (tq) (cdr (cdr (car (tq-queue tq))))) -(defun tq-queue-head-closure (tq) (car (cdr (car (tq-queue tq))))) -(defun tq-queue-empty (tq) (not (tq-queue tq))) -(defun tq-queue-pop (tq) (setcar tq (cdr (car tq))) (null (car tq))) +(defun tq-queue-pop (tq) + (setcar tq (cdr (car tq))) + (let ((question (tq-queue-head-question tq))) + (when question + (process-send-string (tq-process tq) question))) + (null (car tq))) - -;;; must add to queue before sending! -(defun tq-enqueue (tq question regexp closure fn) +(defun tq-enqueue (tq question regexp closure fn &optional delay-question) "Add a transaction to transaction queue TQ. This sends the string QUESTION to the process that TQ communicates with. -When the corresponding answer comes back, we call FN -with two arguments: CLOSURE, and the answer to the question. + +When the corresponding answer comes back, we call FN with two +arguments: CLOSURE, which may contain additional data that FN +needs, and the answer to the question. + REGEXP is a regular expression to match the entire answer; -that's how we tell where the answer ends." - (tq-queue-add tq regexp closure fn) - (process-send-string (tq-process tq) question)) +that's how we tell where the answer ends. + +If DELAY-QUESTION is non-nil, delay sending this question until +the process has finished replying to any previous questions. +This produces more reliable results with some processes." + (let ((sendp (or (not delay-question) + (not (tq-queue-head-question tq))))) + (tq-queue-add tq (unless sendp question) regexp closure fn) + (when sendp + (process-send-string (tq-process tq) question)))) (defun tq-close (tq) "Shut down transaction queue TQ, terminating the process." diff -r ab20fb198dda -r c156f6a9e7b5 lisp/emulation/cua-base.el --- a/lisp/emulation/cua-base.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/emulation/cua-base.el Mon Apr 17 08:41:12 2006 +0000 @@ -769,7 +769,7 @@ (let ((start (mark)) (end (point))) (or (<= start end) (setq start (prog1 end (setq end start)))) - (setq cua--last-deleted-region-text (buffer-substring start end)) + (setq cua--last-deleted-region-text (filter-buffer-substring start end)) (if cua-delete-copy-to-register-0 (set-register ?0 cua--last-deleted-region-text)) (delete-region start end) @@ -858,7 +858,7 @@ (if regtxt (cua--insert-at-global-mark regtxt) (when (not (eobp)) - (cua--insert-at-global-mark (buffer-substring (point) (+ (point) count))) + (cua--insert-at-global-mark (filter-buffer-substring (point) (+ (point) count))) (forward-char count)))) (buffer-read-only (message "Cannot paste into a read-only buffer")) @@ -875,7 +875,7 @@ (setq paste-lines (cua--delete-rectangle)) (if (= paste-lines 1) (setq paste-lines nil))) ;; paste all - (if (string= (buffer-substring (point) (mark)) + (if (string= (filter-buffer-substring (point) (mark)) (car kill-ring)) (current-kill 1)) (cua-delete-region))) @@ -950,7 +950,7 @@ (setq s (car u) e (cdr u))))))) (setq cua--repeat-replace-text (cond ((and s e (<= s e) (= s (mark t))) - (buffer-substring-no-properties s e)) + (filter-buffer-substring s e nil t)) ((and (null s) (eq u elt)) ;; nothing inserted "") (t diff -r ab20fb198dda -r c156f6a9e7b5 lisp/emulation/cua-gmrk.el --- a/lisp/emulation/cua-gmrk.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/emulation/cua-gmrk.el Mon Apr 17 08:41:12 2006 +0000 @@ -143,7 +143,7 @@ (let ((src-buf (current-buffer))) (save-excursion (if (equal (marker-buffer cua--global-mark-marker) src-buf) - (let ((text (buffer-substring-no-properties start end))) + (let ((text (filter-buffer-substring start end nil t))) (goto-char (marker-position cua--global-mark-marker)) (insert text)) (set-buffer (marker-buffer cua--global-mark-marker)) @@ -167,7 +167,7 @@ (if (and (< start (marker-position cua--global-mark-marker)) (< (marker-position cua--global-mark-marker) end)) (message "Can't move region into itself") - (let ((text (buffer-substring-no-properties start end)) + (let ((text (filter-buffer-substring start end nil t)) (p1 (copy-marker start)) (p2 (copy-marker end))) (goto-char (marker-position cua--global-mark-marker)) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/emulation/cua-rect.el --- a/lisp/emulation/cua-rect.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/emulation/cua-rect.el Mon Apr 17 08:41:12 2006 +0000 @@ -631,7 +631,7 @@ (if (not (cua--rectangle-virtual-edges)) (cua--rectangle-operation nil nil nil nil nil ; do not tabify '(lambda (s e l r) - (setq rect (cons (buffer-substring-no-properties s e) rect)))) + (setq rect (cons (filter-buffer-substring s e nil t) rect)))) (cua--rectangle-operation nil 1 nil nil nil ; do not tabify '(lambda (s e l r v) (let ((copy t) (bs 0) (as 0) row) @@ -649,7 +649,7 @@ (setq as (- r (max (current-column) l)) e (point))) (setq row (if (and copy (> e s)) - (buffer-substring-no-properties s e) + (filter-buffer-substring s e nil t) "")) (when (> bs 0) (setq row (concat (make-string bs ?\s) row))) @@ -1127,12 +1127,12 @@ '(lambda (s e l r) (cond ((re-search-forward "0x\\([0-9a-fA-F]+\\)" e t) - (let* ((txt (buffer-substring-no-properties (match-beginning 1) (match-end 1))) + (let* ((txt (filter-buffer-substring (match-beginning 1) (match-end 1) nil t)) (n (string-to-number txt 16)) (fmt (format "0x%%0%dx" (length txt)))) (replace-match (format fmt (+ n increment))))) ((re-search-forward "\\( *-?[0-9]+\\)" e t) - (let* ((txt (buffer-substring-no-properties (match-beginning 1) (match-end 1))) + (let* ((txt (filter-buffer-substring (match-beginning 1) (match-end 1) nil t)) (prefix (if (= (aref txt 0) ?0) "0" "")) (n (string-to-number txt 10)) (fmt (format "%%%s%dd" prefix (length txt)))) @@ -1213,7 +1213,7 @@ (when replace (goto-char (point-min)) (while (not (eobp)) - (setq z (cons (buffer-substring (point) (line-end-position)) z)) + (setq z (cons (filter-buffer-substring (point) (line-end-position)) z)) (forward-line 1)))) (if (not cua--debug) (kill-buffer auxbuf)) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/erc/ChangeLog --- a/lisp/erc/ChangeLog Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/erc/ChangeLog Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/erc/erc-backend.el --- a/lisp/erc/erc-backend.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/erc/erc-backend.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/erc/erc-ezbounce.el --- a/lisp/erc/erc-ezbounce.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/erc/erc-ezbounce.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/erc/erc-join.el --- a/lisp/erc/erc-join.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/erc/erc-join.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/erc/erc-netsplit.el --- a/lisp/erc/erc-netsplit.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/erc/erc-netsplit.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/erc/erc.el --- a/lisp/erc/erc.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/erc/erc.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/files.el --- a/lisp/files.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/files.el Mon Apr 17 08:41:12 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 -*-.) @@ -2413,8 +2418,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) @@ -2426,9 +2430,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) @@ -2616,13 +2618,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) @@ -2678,12 +2689,14 @@ (and (eq (car exp) 'put) (hack-one-local-variable-quotep (nth 1 exp)) (hack-one-local-variable-quotep (nth 2 exp)) - (memq (nth 1 (nth 2 exp)) - '(lisp-indent-hook)) - ;; Only allow safe values of lisp-indent-hook; - ;; not functions. - (or (numberp (nth 3 exp)) - (equal (nth 3 exp) ''defun))) + (let ((prop (nth 1 (nth 2 exp))) (val (nth 3 exp))) + (cond ((eq prop 'lisp-indent-hook) + ;; Only allow safe values of lisp-indent-hook; + ;; not functions. + (or (numberp val) (equal val ''defun))) + ((eq prop 'edebug-form-spec) + ;; Only allow indirect form specs. + (edebug-basic-spec val))))) ;; Allow expressions that the user requested. (member exp safe-local-eval-forms) ;; Certain functions can be allowed with safe arguments diff -r ab20fb198dda -r c156f6a9e7b5 lisp/finder.el --- a/lisp/finder.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/finder.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/gnus/ChangeLog Mon Apr 17 08:41:12 2006 +0000 @@ -1,3 +1,59 @@ +2006-04-12 Ralf Angeli + + * flow-fill.el (fill-flowed): Remove trailing space from blank + quoted lines. + +2006-04-12 Reiner Steib + + * gnus-art.el (gnus-article-mode): Set + cursor-in-non-selected-windows to nil. + +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-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 ab20fb198dda -r c156f6a9e7b5 lisp/gnus/flow-fill.el --- a/lisp/gnus/flow-fill.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/gnus/flow-fill.el Mon Apr 17 08:41:12 2006 +0000 @@ -114,7 +114,7 @@ (set-buffer (or (current-buffer) buffer)) (goto-char (point-min)) ;; Remove space stuffing. - (while (re-search-forward "^ " nil t) + (while (re-search-forward "^\\( \\|>+ $\\)" nil t) (delete-char -1) (forward-line 1)) (goto-char (point-min)) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/gnus/gnus-art.el --- a/lisp/gnus/gnus-art.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/gnus/gnus-art.el Mon Apr 17 08:41:12 2006 +0000 @@ -3809,6 +3809,7 @@ (make-local-variable 'gnus-article-ignored-charsets) ;; Prevent recent Emacsen from displaying non-break space as "\ ". (set (make-local-variable 'nobreak-char-display) nil) + (setq cursor-in-non-selected-windows nil) (gnus-set-default-directory) (buffer-disable-undo) (setq buffer-read-only t) @@ -4477,19 +4478,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 +5983,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 ab20fb198dda -r c156f6a9e7b5 lisp/gnus/gnus-sieve.el --- a/lisp/gnus/gnus-sieve.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/gnus/gnus-sieve.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/gnus/gnus-sum.el --- a/lisp/gnus/gnus-sum.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/gnus/gnus-sum.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/gnus/gnus-uu.el --- a/lisp/gnus/gnus-uu.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/gnus/gnus-uu.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/gnus/message.el --- a/lisp/gnus/message.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/gnus/message.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/gnus/mm-decode.el --- a/lisp/gnus/mm-decode.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/gnus/mm-decode.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/gnus/mm-extern.el --- a/lisp/gnus/mm-extern.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/gnus/mm-extern.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/gnus/nnslashdot.el --- a/lisp/gnus/nnslashdot.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/gnus/nnslashdot.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/gnus/rfc2047.el --- a/lisp/gnus/rfc2047.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/gnus/rfc2047.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/hexl.el --- a/lisp/hexl.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/hexl.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/international/mule-cmds.el --- a/lisp/international/mule-cmds.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/international/mule-cmds.el Mon Apr 17 08:41:12 2006 +0000 @@ -2476,7 +2476,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 ab20fb198dda -r c156f6a9e7b5 lisp/loadhist.el --- a/lisp/loadhist.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/loadhist.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/mail/rmail.el --- a/lisp/mail/rmail.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mail/rmail.el Mon Apr 17 08:41:12 2006 +0000 @@ -623,7 +623,9 @@ ;;;###autoload (defvar rmail-mime-charset-pattern - "^content-type:[ ]*text/plain;[ \t\n]*charset=\"?\\([^ \t\n\";]+\\)\"?" + (concat "^content-type:[ ]*text/plain;" + "\\(?:[ \t\n]*\\(format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*" + "[ \t\n]*charset=\"?\\([^ \t\n\";]+\\)\"?") "Regexp to match MIME-charset specification in a header of message. The first parenthesized expression should match the MIME-charset name.") diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/ChangeLog --- a/lisp/mh-e/ChangeLog Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/ChangeLog Mon Apr 17 08:41:12 2006 +0000 @@ -1,3 +1,129 @@ +2006-04-15 Bill Wohler + + * mh-compat.el (mh-font-lock-add-keywords): Fix typo in docstring. + +2006-04-14 Bill Wohler + + * mh-funcs.el (view-exit-action): No need to wrap defvar with + eval-when-compile when shushing compiler. + + * mh-mime.el (mh-identity-pgg-default-user-id): Ditto. + + * mh-seq.el (view-exit-action): Ditto. + + * mh-show.el (font-lock-auto-fontify): Ditto. + + * mh-utils.el (mh-speed-flists-cache): Ditto + + * mh-acros.el (struct, x, y): No need to wrap defvar with + eval-when-compile when shushing compiler, even when + mh-do-in-xemacs or another construct is used. + + * mh-comp.el (sendmail-coding-system): Ditto. + + * mh-e.el (mark-active): Ditto. + + * mh-folder.el (desktop-save-buffer, font-lock-auto-fontify) + (image-load-path, font-lock-defaults): Ditto. + + * mh-letter.el (image-load-path, font-lock-defaults): Ditto. + + * mh-mime.el (dots, type, ov) + (mm-verify-function-alist, mm-decrypt-function-alist) + (pressed-details): Ditto. + + * mh-search.el (pick-folder, mh-do-in-xemacs) + (mh-mairix-folder, mh-flists-search-folders) + (which-func-mode, mh-speed-flists-inhibit-flag): Ditto. + + * mh-seq.el (tool-bar-mode): Ditto. + + * mh-utils.el (completion-root-regexp) + (minibuffer-completing-file-name): Ditto. + + * mh-xface.el (default-enable-multibyte-characters): Ditto. + + * mh-compat.el (mh-font-lock-add-keywords): New alias for + font-lock-add-keywords. Returns nil on XEmacs. + + * mh-e.el: Add MH-E function and variable keywords such as + mh-defun-compat and mh-defcustom to font-lock-keywords. + +2006-04-13 Bill Wohler + + * mh-e.el (customize-package-emacs-version-alist) + (mh-e, mh-alias, mh-folder, mh-folder-selection) + (mh-identity, mh-inc, mh-junk, mh-letter, mh-ranges) + (mh-scan-line-formats, mh-search, mh-sending-mail, ) + (mh-sequences, mh-show, mh-speedbar, mh-thread, mh-tool-bar) + (mh-hooks, mh-faces, mh-alias-completion-ignore-case-flag) + (mh-alias-expand-aliases-flag, mh-alias-flash-on-comma) + (mh-alias-insert-file, mh-alias-insertion-location) + (mh-alias-local-users, mh-alias-local-users-prefix) + (mh-alias-passwd-gecos-comma-separator-flag) + (mh-new-messages-folders, mh-ticked-messages-folders) + (mh-large-folder, mh-recenter-summary-flag) + (mh-recursive-folders-flag, mh-sortm-args) + (mh-default-folder-for-message-function, ) + (mh-default-folder-list, mh-default-folder-must-exist-flag) + (mh-default-folder-prefix, mh-identity-list) + (mh-auto-fields-list, mh-auto-fields-prompt-flag) + (mh-identity-default, mh-identity-handlers, mh-inc-prog) + (mh-inc-spool-list, mh-junk-background, mh-junk-disposition) + (mh-junk-program, mh-compose-insertion) + (mh-compose-skipped-header-fields) + (mh-compose-space-does-completion-flag) + (mh-delete-yanked-msg-window-flag) + (mh-extract-from-attribution-verb, mh-ins-buf-prefix) + (mh-letter-complete-function, mh-letter-fill-column) + (mh-mml-method-default, mh-signature-file-name) + (mh-signature-separator-flag, mh-x-face-file, ) + (mh-yank-behavior, mh-interpret-number-as-range-flag) + (mh-adaptive-cmd-note-flag, mh-scan-format-file, mh-scan-prog) + (mh-search-program, mh-compose-forward-as-mime-flag) + (mh-compose-letter-function, mh-compose-prompt-flag) + (mh-forward-subject-format, mh-insert-x-mailer-flag) + (mh-redist-full-contents-flag, mh-reply-default-reply-to) + (mh-reply-show-message-flag, ) + (mh-refile-preserves-sequences-flag, mh-tick-seq) + (mh-update-sequences-after-mh-show-flag) + (mh-bury-show-buffer-flag, mh-clean-message-header-flag) + (mh-decode-mime-flag, ) + (mh-display-buttons-for-alternatives-flag) + (mh-display-buttons-for-inline-parts-flag) + (mh-do-not-confirm-flag, mh-fetch-x-image-url) + (mh-graphical-smileys-flag, mh-graphical-emphasis-flag) + (mh-highlight-citation-style, mh-invisible-header-fields) + (mh-invisible-header-fields-default, mh-lpr-command-format) + (mh-max-inline-image-height, mh-max-inline-image-width) + (mh-mhl-format-file, mh-mime-save-parts-default-directory) + (mh-print-background-flag, mh-show-maximum-size) + (mh-show-use-xface-flag, mh-store-default-directory) + (mh-summary-height, mh-speed-update-interval) + (mh-show-threads-flag, mh-tool-bar-search-function) + (mh-defcustom, mh-after-commands-processed-hook) + (mh-alias-reloaded-hook, mh-before-commands-processed-hook) + (mh-before-quit-hook, mh-before-send-letter-hook) + (mh-delete-msg-hook, mh-find-path-hook, mh-folder-mode-hook) + (mh-forward-hook, mh-inc-folder-hook, ) + (mh-insert-signature-hook, ) + (mh-kill-folder-suppress-prompt-hooks, mh-letter-mode-hook) + (mh-mh-to-mime-hook, mh-search-mode-hook, mh-quit-hook) + (mh-refile-msg-hook, mh-show-hook, mh-show-mode-hook) + (mh-unseen-updated-hook, mh-folder-address, mh-folder-body) + (mh-folder-cur-msg-number, mh-folder-date, mh-folder-deleted) + (mh-folder-followup, mh-folder-msg-number, mh-folder-refiled) + (mh-folder-sent-to-me-hint, mh-folder-sent-to-me-sender) + (mh-folder-subject, mh-folder-tick, mh-folder-to) + (mh-letter-header-field, mh-search-folder, mh-show-cc) + (mh-show-date, mh-show-from, mh-show-header, mh-show-pgg-bad) + (mh-show-pgg-good, mh-show-pgg-unknown, mh-show-signature) + (mh-show-subject, mh-show-to, mh-show-xface, ) + (mh-speedbar-folder, mh-speedbar-folder-with-unseen-messages) + (mh-speedbar-selected-folder) + (mh-speedbar-selected-folder-with-unseen-messages): Use dotted + notation in :package-version keyword. + 2006-04-07 Bill Wohler * mh-e.el (mh-path, mh-variant): Define with mh-defcustom and add diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-acros.el --- a/lisp/mh-e/mh-acros.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-acros.el Mon Apr 17 08:41:12 2006 +0000 @@ -130,7 +130,9 @@ (boundp 'mark-active) mark-active)))) ;; Shush compiler. -(eval-when-compile (mh-do-in-xemacs (defvar struct) (defvar x) (defvar y))) +(defvar struct) ; XEmacs +(defvar x) ; XEmacs +(defvar y) ; XEmacs ;;;###mh-autoload (defmacro mh-defstruct (name-spec &rest fields) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-comp.el --- a/lisp/mh-e/mh-comp.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-comp.el Mon Apr 17 08:41:12 2006 +0000 @@ -215,7 +215,7 @@ (setq other-headers (cdr other-headers))))) ;; Shush compiler. -(eval-when-compile (mh-do-in-xemacs (defvar sendmail-coding-system))) +(defvar sendmail-coding-system) ; XEmacs ;;;###autoload (defun mh-send-letter (&optional arg) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-compat.el --- a/lisp/mh-e/mh-compat.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-compat.el Mon Apr 17 08:41:12 2006 +0000 @@ -40,7 +40,7 @@ ;; versions of Gnus. ;; Items are listed alphabetically (except for mh-require which is -;; needed by a lesser character). +;; needed sooner it would normally appear). (require 'mh-acros) @@ -115,6 +115,11 @@ `(face-background ,face ,frame) `(face-background ,face ,frame ,inherit))) +(mh-defun-compat mh-font-lock-add-keywords font-lock-add-keywords + (mode keywords &optional how) + "XEmacs does not have `font-lock-add-keywords'. +This function returns nil on that system.") + (mh-defun-compat mh-image-load-path-for-library image-load-path-for-library (library image &optional path no-error) "Return a suitable search path for images used by LIBRARY. diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-e.el --- a/lisp/mh-e/mh-e.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-e.el Mon Apr 17 08:41:12 2006 +0000 @@ -109,6 +109,26 @@ (require 'mh-buffers) (require 'mh-compat) +(mh-font-lock-add-keywords + 'emacs-lisp-mode + (eval-when-compile + `((,(concat "(\\(" + ;; Function declarations (use font-lock-function-name-face). + "\\(mh-def\\(un\\|macro\\)-compat\\)\\|" + ;; Variable declarations (use font-lock-variable-name-face). + "\\(mh-def\\(custom\\|face\\)\\)\\|" + ;; Group declarations (use font-lock-type-face). + "\\(mh-defgroup\\)" + "\\)\\>" + ;; Any whitespace and defined object. + "[ \t'\(]*" + "\\(setf[ \t]+\\sw+)\\|\\sw+\\)?") + (1 font-lock-keyword-face) + (7 (cond ((match-beginning 2) font-lock-function-name-face) + ((match-beginning 4) font-lock-variable-name-face) + (t font-lock-type-face)) + nil t))))) + ;;; Global Variables @@ -603,7 +623,7 @@ (mh-exchange-point-and-mark-preserving-active-mark)) ;; Shush compiler. -(eval-when-compile (mh-do-in-xemacs (defvar mark-active))) +(defvar mark-active) ; XEmacs (defun mh-exchange-point-and-mark-preserving-active-mark () "Put the mark where point is now, and point where the mark is now. @@ -989,9 +1009,9 @@ (if (boundp 'customize-package-emacs-version-alist) (add-to-list 'customize-package-emacs-version-alist - '(MH-E ("6.0" "22.1") ("6.1" "22.1") ("7.0" "22.1") - ("7.1" "22.1") ("7.2" "22.1") ("7.3" "22.1") - ("7.4" "22.1") ("8.0" "22.1")))) + '(MH-E ("6.0" . "22.1") ("6.1" . "22.1") ("7.0" . "22.1") + ("7.1" . "22.1") ("7.2" . "22.1") ("7.3" . "22.1") + ("7.4" . "22.1") ("8.0" . "22.1")))) @@ -1003,126 +1023,126 @@ and GNU mailutils." :link '(custom-manual "(mh-e)Top") :group 'mail - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defgroup mh-alias nil "Aliases." :link '(custom-manual "(mh-e)Aliases") :prefix "mh-alias-" :group 'mh-e - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defgroup mh-folder nil "Organizing your mail with folders." :prefix "mh-" :link '(custom-manual "(mh-e)Folders") :group 'mh-e - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defgroup mh-folder-selection nil "Folder selection." :prefix "mh-" :link '(custom-manual "(mh-e)Folder Selection") :group 'mh-e - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defgroup mh-identity nil "Identities." :link '(custom-manual "(mh-e)Identities") :prefix "mh-identity-" :group 'mh-e - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defgroup mh-inc nil "Incorporating your mail." :prefix "mh-inc-" :link '(custom-manual "(mh-e)Incorporating Mail") :group 'mh-e - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defgroup mh-junk nil "Dealing with junk mail." :link '(custom-manual "(mh-e)Junk") :prefix "mh-junk-" :group 'mh-e - :package-version '(MH-E "7.3")) + :package-version '(MH-E . "7.3")) (mh-defgroup mh-letter nil "Editing a draft." :prefix "mh-" :link '(custom-manual "(mh-e)Editing Drafts") :group 'mh-e - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defgroup mh-ranges nil "Ranges." :prefix "mh-" :link '(custom-manual "(mh-e)Ranges") :group 'mh-e - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defgroup mh-scan-line-formats nil "Scan line formats." :link '(custom-manual "(mh-e)Scan Line Formats") :prefix "mh-" :group 'mh-e - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defgroup mh-search nil "Searching." :link '(custom-manual "(mh-e)Searching") :prefix "mh-search-" :group 'mh-e - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defgroup mh-sending-mail nil "Sending mail." :prefix "mh-" :link '(custom-manual "(mh-e)Sending Mail") :group 'mh-e - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defgroup mh-sequences nil "Sequences." :prefix "mh-" :link '(custom-manual "(mh-e)Sequences") :group 'mh-e - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defgroup mh-show nil "Reading your mail." :prefix "mh-" :link '(custom-manual "(mh-e)Reading Mail") :group 'mh-e - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defgroup mh-speedbar nil "The speedbar." :prefix "mh-speed-" :link '(custom-manual "(mh-e)Speedbar") :group 'mh-e - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defgroup mh-thread nil "Threading." :prefix "mh-thread-" :link '(custom-manual "(mh-e)Threading") :group 'mh-e - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defgroup mh-tool-bar nil "The tool bar" :link '(custom-manual "(mh-e)Tool Bar") :prefix "mh-" :group 'mh-e - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defgroup mh-hooks nil "MH-E hooks." :link '(custom-manual "(mh-e)Top") :prefix "mh-" :group 'mh-e - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defgroup mh-faces nil "Faces used in MH-E." @@ -1130,7 +1150,7 @@ :prefix "mh-" :group 'faces :group 'mh-e - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) @@ -1149,7 +1169,7 @@ lowercase for mailing lists and uppercase for people." :type 'boolean :group 'mh-alias - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defcustom mh-alias-expand-aliases-flag nil "*Non-nil means to expand aliases entered in the minibuffer. @@ -1159,7 +1179,7 @@ this expansion is not performed." :type 'boolean :group 'mh-alias - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defcustom mh-alias-flash-on-comma t "*Specify whether to flash address or warn on translation. @@ -1172,7 +1192,7 @@ (const :tag "Flash and Warn If No Alias" 1) (const :tag "Don't Flash Nor Warn If No Alias" nil)) :group 'mh-alias - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defcustom mh-alias-insert-file nil "*Filename used to store a new MH-E alias. @@ -1186,7 +1206,7 @@ (file :tag "Alias File") (repeat :tag "List of Alias Files" file)) :group 'mh-alias - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defcustom mh-alias-insertion-location 'sorted "Specifies where new aliases are entered in alias files. @@ -1198,7 +1218,7 @@ (const :tag "Top" top) (const :tag "Bottom" bottom)) :group 'mh-alias - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defcustom mh-alias-local-users t "*If on, local users are added to alias completion. @@ -1219,7 +1239,7 @@ NIS password file." :type '(choice (boolean) (string)) :group 'mh-alias - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defcustom mh-alias-local-users-prefix "local." "*String prefixed to the real names of users from the password file. @@ -1241,7 +1261,7 @@ :type '(choice (const :tag "Use Login" nil) (string)) :group 'mh-alias - :package-version '(MH-E "7.4")) + :package-version '(MH-E . "7.4")) (mh-defcustom mh-alias-passwd-gecos-comma-separator-flag t "*Non-nil means the gecos field in the password file uses a comma separator. @@ -1253,7 +1273,7 @@ whose contents may contain commas, you can turn this option off." :type 'boolean :group 'mh-alias - :package-version '(MH-E "7.4")) + :package-version '(MH-E . "7.4")) ;;; Organizing Your Mail with Folders (:group 'mh-folder) @@ -1270,7 +1290,7 @@ (const :tag "All" nil) (repeat :tag "Choose Folders" (string :tag "Folder"))) :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-ticked-messages-folders t "Folders searched for `mh-tick-seq'. @@ -1285,7 +1305,7 @@ (const :tag "All" nil) (repeat :tag "Choose Folders" (string :tag "Folder"))) :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-large-folder 200 "The number of messages that indicates a large folder. @@ -1297,7 +1317,7 @@ folders are treated as if they are small." :type '(choice (const :tag "No Limit") integer) :group 'mh-folder - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-recenter-summary-flag nil "*Non-nil means to recenter the summary window. @@ -1306,13 +1326,13 @@ show window is toggled off." :type 'boolean :group 'mh-folder - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-recursive-folders-flag nil "*Non-nil means that commands which operate on folders do so recursively." :type 'boolean :group 'mh-folder - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-sortm-args nil "*Additional arguments for \"sortm\"\\. @@ -1324,7 +1344,7 @@ \"subject\")\" is a useful setting." :type 'string :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) ;;; Folder Selection (:group 'mh-folder-selection) @@ -1338,7 +1358,7 @@ the default, or an empty string to suppress the default entirely." :type 'function :group 'mh-folder-selection - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-default-folder-list nil "*List of addresses and folders. @@ -1356,7 +1376,7 @@ (string :tag "Folder") (boolean :tag "Check Recipient"))) :group 'mh-folder-selection - :package-version '(MH-E "7.2")) + :package-version '(MH-E . "7.2")) (mh-defcustom mh-default-folder-must-exist-flag t "*Non-nil means guessed folder name must exist to be used. @@ -1370,7 +1390,7 @@ for more information." :type 'boolean :group 'mh-folder-selection - :package-version '(MH-E "7.2")) + :package-version '(MH-E . "7.2")) (mh-defcustom mh-default-folder-prefix "" "*Prefix used for folder names generated from aliases. @@ -1380,7 +1400,7 @@ for more information." :type 'string :group 'mh-folder-selection - :package-version '(MH-E "7.2")) + :package-version '(MH-E . "7.2")) ;;; Identities (:group 'mh-identity) @@ -1458,7 +1478,7 @@ (set-default symbol value) (mh-identity-make-menu-no-autoload)) :group 'mh-identity - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defcustom mh-auto-fields-list nil "List of recipients for which header lines are automatically inserted. @@ -1519,14 +1539,14 @@ (string :tag "Field") (string :tag "Value")))))) :group 'mh-identity - :package-version '(MH-E "7.3")) + :package-version '(MH-E . "7.3")) (mh-defcustom mh-auto-fields-prompt-flag t "*Non-nil means to prompt before sending if fields inserted. See `mh-auto-fields-list'." :type 'boolean :group 'mh-identity - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-identity-default nil "Default identity to use when `mh-letter-mode' is called. @@ -1537,7 +1557,7 @@ (mapcar (function (lambda (arg) `(const ,arg))) (mapcar 'car mh-identity-list)))) :group 'mh-identity - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defcustom mh-identity-handlers '(("From" . mh-identity-handler-top) @@ -1571,7 +1591,7 @@ containing the VALUE for the field is given." :type '(repeat (cons (string :tag "Field") function)) :group 'mh-identity - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) ;;; Incorporating Your Mail (:group 'mh-inc) @@ -1585,7 +1605,7 @@ several scan line format variables appropriately." :type 'string :group 'mh-inc - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (eval-and-compile (unless (fboundp 'mh-inc-spool-make-no-autoload) @@ -1635,7 +1655,7 @@ (set-default symbol value) (mh-inc-spool-make-no-autoload)) :group 'mh-inc - :package-version '(MH-E "7.3")) + :package-version '(MH-E . "7.3")) ;;; Dealing with Junk Mail (:group 'mh-junk) @@ -1677,14 +1697,14 @@ :type '(choice (const :tag "Off" nil) (const :tag "On" 0)) :group 'mh-junk - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-junk-disposition nil "Disposition of junk mail." :type '(choice (const :tag "Delete Spam" nil) (string :tag "Spam Folder")) :group 'mh-junk - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-junk-program nil "Spam program that MH-E should use. @@ -1700,7 +1720,7 @@ (const :tag "SpamProbe" spamprobe)) :set 'mh-junk-choose :group 'mh-junk - :package-version '(MH-E "7.3")) + :package-version '(MH-E . "7.3")) ;;; Editing a Draft (:group 'mh-letter) @@ -1716,7 +1736,7 @@ :type '(choice (const :tag "MML" mml) (const :tag "MH" mh)) :group 'mh-letter - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-compose-skipped-header-fields '("From" "Organization" "References" "In-Reply-To" @@ -1724,13 +1744,13 @@ "List of header fields to skip over when navigating in draft." :type '(repeat (string :tag "Field")) :group 'mh-letter - :package-version '(MH-E "7.4")) + :package-version '(MH-E . "7.4")) (mh-defcustom mh-compose-space-does-completion-flag nil "*Non-nil means \\\\[mh-letter-complete-or-space] does completion in message header." :type 'boolean :group 'mh-letter - :package-version '(MH-E "7.4")) + :package-version '(MH-E . "7.4")) (mh-defcustom mh-delete-yanked-msg-window-flag nil "*Non-nil means delete any window displaying the message. @@ -1740,7 +1760,7 @@ more room on your screen for your reply." :type 'boolean :group 'mh-letter - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-extract-from-attribution-verb "wrote:" "*Verb to use for attribution when a message is yanked by \\\\[mh-yank-cur-msg]. @@ -1754,7 +1774,7 @@ (const "schrieb:") (string :tag "Custom String")) :group 'mh-letter - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-ins-buf-prefix "> " "*String to put before each line of a yanked or inserted message. @@ -1770,7 +1790,7 @@ `mail-citation-hook'." :type 'string :group 'mh-letter - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-letter-complete-function 'ispell-complete-word "*Function to call when completing outside of address or folder fields. @@ -1780,7 +1800,7 @@ which is set to \"ispell-complete-word\" by default." :type '(choice function (const nil)) :group 'mh-letter - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defcustom mh-letter-fill-column 72 "*Fill column to use in MH Letter mode. @@ -1789,7 +1809,7 @@ message without line wrapping." :type 'integer :group 'mh-letter - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-mml-method-default (if mh-pgp-support-flag "pgpmime" "none") "Default method to use in security tags. @@ -1812,7 +1832,7 @@ (const :tag "S/MIME" "smime") (const :tag "None" "none")) :group 'mh-letter - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-signature-file-name "~/.signature" "*Source of user's signature. @@ -1835,7 +1855,7 @@ `mh-identity-list'." :type 'file :group 'mh-letter - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-signature-separator-flag t "*Non-nil means a signature separator should be inserted. @@ -1846,7 +1866,7 @@ replying or yanking a letter into a draft." :type 'boolean :group 'mh-letter - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-x-face-file "~/.face" "*File containing face header field to insert in outgoing mail. @@ -1875,7 +1895,7 @@ this option doesn't exist." :type 'file :group 'mh-letter - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-yank-behavior 'attribution "*Controls which part of a message is yanked by \\\\[mh-yank-cur-msg]. @@ -1920,7 +1940,7 @@ (const :tag "Body With Attribution, Automatically" autoattrib)) :group 'mh-letter - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) ;;; Ranges (:group 'mh-ranges) @@ -1933,7 +1953,7 @@ message 200, then use the range \"200:200\"." :type 'boolean :group 'mh-ranges - :package-version '(MH-E "7.4")) + :package-version '(MH-E . "7.4")) ;;; Scan Line Formats (:group 'mh-scan-line-formats) @@ -1960,7 +1980,7 @@ :type 'boolean :group 'mh-scan-line-formats :set 'mh-adaptive-cmd-note-flag-check - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (defun mh-scan-format-file-check (symbol value) "Check if desired setting is legal. @@ -1999,7 +2019,7 @@ (file :tag "Specify a scan Format File")) :group 'mh-scan-line-formats :set 'mh-scan-format-file-check - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (defun mh-adaptive-cmd-note-flag-check (symbol value) "Check if desired setting is legal. @@ -2022,7 +2042,7 @@ \"mh-profile(5)\") to produce a different type of listing." :type 'string :group 'mh-scan-line-formats - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (make-variable-buffer-local 'mh-scan-prog) ;;; Searching (:group 'mh-search) @@ -2046,7 +2066,7 @@ (const :tag "pick" pick) (const :tag "grep" grep)) :group 'mh-search - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) ;;; Sending Mail (:group 'mh-sending-mail) @@ -2064,7 +2084,7 @@ regardless of the settings of this option." :type 'boolean :group 'mh-sending-mail - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-compose-letter-function nil "Invoked when starting a new draft. @@ -2076,13 +2096,13 @@ fields." :type '(choice (const nil) function) :group 'mh-sending-mail - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-compose-prompt-flag nil "*Non-nil means prompt for header fields when composing a new draft." :type 'boolean :group 'mh-sending-mail - :package-version '(MH-E "7.4")) + :package-version '(MH-E . "7.4")) (mh-defcustom mh-forward-subject-format "%s: %s" "*Format string for forwarded message subject. @@ -2092,7 +2112,7 @@ and the second one is replaced with the original \"Subject:\"." :type 'string :group 'mh-sending-mail - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-insert-x-mailer-flag t "*Non-nil means append an \"X-Mailer:\" header field to the header. @@ -2102,7 +2122,7 @@ can turn this option off." :type 'boolean :group 'mh-sending-mail - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-redist-full-contents-flag nil "*Non-nil means the \"dist\" command needs entire letter for redistribution. @@ -2114,7 +2134,7 @@ has been redistributed before, turn off this option." :type 'boolean :group 'mh-sending-mail - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-reply-default-reply-to nil "*Sets the person or persons to whom a reply will be sent. @@ -2130,7 +2150,7 @@ (const "cc") (const "all")) :group 'mh-sending-mail - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-reply-show-message-flag t "*Non-nil means the MH-Show buffer is displayed when replying. @@ -2141,7 +2161,7 @@ See also `mh-reply'." :type 'boolean :group 'mh-sending-mail - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) ;;; Sequences (:group 'mh-sequences) @@ -2158,7 +2178,7 @@ desired, then turn off this option." :type 'boolean :group 'mh-sequences - :package-version '(MH-E "7.4")) + :package-version '(MH-E . "7.4")) (mh-defcustom mh-tick-seq 'tick "The name of the MH sequence for ticked messages. @@ -2170,7 +2190,7 @@ :type '(choice (const :tag "Disable Ticking" nil) symbol) :group 'mh-sequences - :package-version '(MH-E "7.3")) + :package-version '(MH-E . "7.3")) (mh-defcustom mh-update-sequences-after-mh-show-flag t "*Non-nil means flush MH sequences to disk after message is shown\\. @@ -2185,7 +2205,7 @@ commands." :type 'boolean :group 'mh-sequences - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) ;;; Reading Your Mail (:group 'mh-show) @@ -2198,7 +2218,7 @@ running \\[electric-buffer-list] to see what I mean." :type 'boolean :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-clean-message-header-flag t "*Non-nil means remove extraneous header fields. @@ -2207,7 +2227,7 @@ `mh-invisible-header-fields'." :type 'boolean :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-decode-mime-flag (not (not (locate-library "mm-decode"))) "*Non-nil means attachments are handled\\. @@ -2225,7 +2245,7 @@ `mh-graphical-smileys-flag' and `mh-graphical-emphasis-flag'." :type 'boolean :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-display-buttons-for-alternatives-flag nil "*Non-nil means display buttons for all alternative attachments. @@ -2237,7 +2257,7 @@ inline and buttons are shown for each of the other alternatives." :type 'boolean :group 'mh-show - :package-version '(MH-E "7.4")) + :package-version '(MH-E . "7.4")) (mh-defcustom mh-display-buttons-for-inline-parts-flag nil "*Non-nil means display buttons for all inline attachments\\. @@ -2260,7 +2280,7 @@ text (including HTML) and images." :type 'boolean :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-do-not-confirm-flag nil "*Non-nil means non-reversible commands do not prompt for confirmation. @@ -2272,7 +2292,7 @@ retracted--without question." :type 'boolean :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-fetch-x-image-url nil "*Control fetching of \"X-Image-URL:\" header field image. @@ -2308,7 +2328,7 @@ :type '(choice (const :tag "Ask Before Fetching" ask) (const :tag "Never Fetch" nil)) :group 'mh-show - :package-version '(MH-E "7.3")) + :package-version '(MH-E . "7.3")) (mh-defcustom mh-graphical-smileys-flag t "*Non-nil means graphical smileys are displayed. @@ -2323,7 +2343,7 @@ turned off." :type 'boolean :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-graphical-emphasis-flag t "*Non-nil means graphical emphasis is displayed. @@ -2340,7 +2360,7 @@ turned off." :type 'boolean :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-highlight-citation-style 'gnus "Style for highlighting citations. @@ -2356,7 +2376,7 @@ (const :tag "Monochrome" font-lock) (const :tag "None" nil)) :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) ;; Keep fields alphabetized. Mention source, if known. (defvar mh-invisible-header-fields-internal @@ -2588,7 +2608,7 @@ (set-default symbol value) (mh-invisible-headers)) :group 'mh-show - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) (mh-defcustom mh-invisible-header-fields-default nil "*List of hidden header fields. @@ -2606,7 +2626,7 @@ (set-default symbol value) (mh-invisible-headers)) :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (defvar mh-invisible-header-fields-compiled nil "*Regexp matching lines in a message header that are not to be shown. @@ -2658,7 +2678,7 @@ \\[mh-ps-print-msg-file]." :type 'string :group 'mh-show - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-max-inline-image-height nil "*Maximum inline image height if \"Content-Disposition:\" is not present. @@ -2674,7 +2694,7 @@ these numbers." :type '(choice (const nil) integer) :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-max-inline-image-width nil "*Maximum inline image width if \"Content-Disposition:\" is not present. @@ -2690,7 +2710,7 @@ these numbers." :type '(choice (const nil) integer) :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-mhl-format-file nil "*Specifies the format file to pass to the \"mhl\" program. @@ -2714,7 +2734,7 @@ (const :tag "Use Default mhl Format" t) (file :tag "Specify an mhl Format File")) :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-mime-save-parts-default-directory t "Default directory to use for \\\\[mh-mime-save-parts]. @@ -2730,7 +2750,7 @@ (const :tag "Prompt Always" t) directory) :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-print-background-flag nil "*Non-nil means messages should be printed in the background\\. @@ -2746,7 +2766,7 @@ \\[mh-ps-print-msg-file]." :type 'boolean :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-show-maximum-size 0 "*Maximum size of message (in bytes) to display automatically. @@ -2756,7 +2776,7 @@ message are shown regardless of size." :type 'integer :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-show-use-xface-flag (>= emacs-major-version 21) "*Non-nil means display face images in MH-show buffers. @@ -2796,7 +2816,7 @@ \"X-Image-URL:\" header field image." :type 'boolean :group 'mh-show - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-store-default-directory nil "*Default directory for \\\\[mh-store-msg]. @@ -2808,7 +2828,7 @@ :type '(choice (const :tag "Current" nil) directory) :group 'mh-show - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-summary-height nil "*Number of lines in MH-Folder buffer (including the mode line). @@ -2821,7 +2841,7 @@ :type '(choice (const :tag "Automatic" nil) (integer :tag "Fixed Size")) :group 'mh-show - :package-version '(MH-E "7.4")) + :package-version '(MH-E . "7.4")) ;;; The Speedbar (:group 'mh-speedbar) @@ -2830,7 +2850,7 @@ Set to 0 to disable automatic update." :type 'integer :group 'mh-speedbar - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) ;;; Threading (:group 'mh-thread) @@ -2843,7 +2863,7 @@ threaded is less than `mh-large-folder'." :type 'boolean :group 'mh-thread - :package-version '(MH-E "7.1")) + :package-version '(MH-E . "7.1")) ;;; The Tool Bar (:group 'mh-tool-bar) @@ -2859,7 +2879,7 @@ :type '(choice (const mh-search) (function :tag "Other Function")) :group 'mh-tool-bar - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) ;; XEmacs has a couple of extra customizations... (mh-do-in-xemacs @@ -2877,7 +2897,7 @@ (not mh-xemacs-has-tool-bar-flag)) (error "Tool bar not supported")) (set-default symbol value)) - :package-version '(MH-E "7.3")) + :package-version '(MH-E . "7.3")) (mh-defcustom mh-xemacs-tool-bar-position nil "*Tool bar location. @@ -2895,7 +2915,7 @@ (const :tag "Left" :value left) (const :tag "Right" :value right)) :group 'mh-tool-bar - :package-version '(MH-E "7.3"))) + :package-version '(MH-E . "7.3"))) @@ -2911,14 +2931,14 @@ :type 'hook :group 'mh-hooks :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-alias-reloaded-hook nil "Hook run by `mh-alias-reload' after loading aliases." :type 'hook :group 'mh-hooks :group 'mh-alias - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-before-commands-processed-hook nil "Hook run by \\\\[mh-execute-commands] before performing outstanding refile and delete requests. @@ -2929,7 +2949,7 @@ :type 'hook :group 'mh-hooks :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-before-quit-hook nil "Hook run by \\\\[mh-quit] before quitting MH-E. @@ -2942,7 +2962,7 @@ :type 'hook :group 'mh-hooks :group 'mh-folder - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-before-send-letter-hook nil "Hook run at the beginning of the \\\\[mh-send-letter] command. @@ -2953,7 +2973,7 @@ :options '(ispell-message) :group 'mh-hooks :group 'mh-letter - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-delete-msg-hook nil "Hook run by \\\\[mh-delete-msg] after marking each message for deletion. @@ -2963,7 +2983,7 @@ :type 'hook :group 'mh-hooks :group 'mh-show - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-find-path-hook nil "Hook run by `mh-find-path' after reading the user's MH profile. @@ -2974,28 +2994,28 @@ :type 'hook :group 'mh-hooks :group 'mh-e - :package-version '(MH-E "7.0")) + :package-version '(MH-E . "7.0")) (mh-defcustom mh-folder-mode-hook nil "Hook run by `mh-folder-mode' when visiting a new folder." :type 'hook :group 'mh-hooks :group 'mh-folder - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-forward-hook nil "Hook run by `mh-forward' on a forwarded letter." :type 'hook :group 'mh-hooks :group 'mh-sending-mail - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-inc-folder-hook nil "Hook run by \\\\[mh-inc-folder] after incorporating mail into a folder." :type 'hook :group 'mh-hooks :group 'mh-inc - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-insert-signature-hook nil "Hook run by \\\\[mh-insert-signature] after signature has been inserted. @@ -3006,7 +3026,7 @@ :type 'hook :group 'mh-hooks :group 'mh-letter - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-kill-folder-suppress-prompt-hooks '(mh-search-p) "Abnormal hook run at the beginning of \\\\[mh-kill-folder]. @@ -3024,7 +3044,7 @@ :type 'hook :group 'mh-hooks :group 'mh-folder - :package-version '(MH-E "7.4")) + :package-version '(MH-E . "7.4")) (mh-defcustom mh-letter-mode-hook nil "Hook run by `mh-letter-mode' on a new letter. @@ -3037,14 +3057,14 @@ :type 'hook :group 'mh-hooks :group 'mh-sending-mail - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-mh-to-mime-hook nil "Hook run on the formatted letter by \\\\[mh-mh-to-mime]." :type 'hook :group 'mh-hooks :group 'mh-letter - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-search-mode-hook nil "Hook run upon entry to `mh-search-mode'\\. @@ -3056,7 +3076,7 @@ :type 'hook :group 'mh-hooks :group 'mh-search - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defcustom mh-quit-hook nil "Hook run by \\\\[mh-quit] after quitting MH-E. @@ -3068,14 +3088,14 @@ :type 'hook :group 'mh-hooks :group 'mh-folder - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-refile-msg-hook nil "Hook run by \\\\[mh-refile-msg] after marking each message for refiling." :type 'hook :group 'mh-hooks :group 'mh-folder - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-show-hook nil "Hook run after \\\\[mh-show] shows a message. @@ -3086,7 +3106,7 @@ :type 'hook :group 'mh-hooks :group 'mh-show - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-show-mode-hook nil "Hook run upon entry to `mh-show-mode'. @@ -3097,7 +3117,7 @@ :type 'hook :group 'mh-hooks :group 'mh-show - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) (mh-defcustom mh-unseen-updated-hook nil "Hook run after the unseen sequence has been updated. @@ -3108,7 +3128,7 @@ :type 'hook :group 'mh-hooks :group 'mh-sequences - :package-version '(MH-E "6.0")) + :package-version '(MH-E . "6.0")) @@ -3326,7 +3346,7 @@ "Recipient face." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-body (mh-face-data 'mh-folder-msg-number @@ -3337,7 +3357,7 @@ "Body text face." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-cur-msg-number (mh-face-data 'mh-folder-msg-number @@ -3345,39 +3365,39 @@ "Current message number face." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-date (mh-face-data 'mh-folder-msg-number '((t (:inherit mh-folder-msg-number)))) "Date face." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-deleted (mh-face-data 'mh-folder-msg-number '((t (:inherit mh-folder-msg-number)))) "Deleted message face." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-followup (mh-face-data 'mh-folder-followup) "\"Re:\" face." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-msg-number (mh-face-data 'mh-folder-msg-number) "Message number face." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-refiled (mh-face-data 'mh-folder-refiled) "Refiled message face." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-sent-to-me-hint (mh-face-data 'mh-folder-msg-number '((t (:inherit mh-folder-date)))) @@ -3387,7 +3407,7 @@ `mh-scan-sent-to-me-sender-regexp'." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-sent-to-me-sender (mh-face-data 'mh-folder-followup '((t (:inherit mh-folder-followup)))) @@ -3397,98 +3417,98 @@ `mh-scan-sent-to-me-sender-regexp'." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-subject (mh-face-data 'mh-folder-subject) "Subject face." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-tick (mh-face-data 'mh-folder-tick) "Ticked message face." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-folder-to (mh-face-data 'mh-folder-to) "\"To:\" face." :group 'mh-faces :group 'mh-folder - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-letter-header-field (mh-face-data 'mh-letter-header-field) "Editable header field value face in draft buffers." :group 'mh-faces :group 'mh-letter - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-search-folder (mh-face-data 'mh-search-folder) "Folder heading face in MH-Folder buffers created by searches." :group 'mh-faces :group 'mh-search - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-show-cc (mh-face-data 'mh-show-cc) "Face used to highlight \"cc:\" header fields." :group 'mh-faces :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-show-date (mh-face-data 'mh-show-date) "Face used to highlight \"Date:\" header fields." :group 'mh-faces :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-show-from (mh-face-data 'mh-show-from) "Face used to highlight \"From:\" header fields." :group 'mh-faces :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-show-header (mh-face-data 'mh-show-header) "Face used to deemphasize less interesting header fields." :group 'mh-faces :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-show-pgg-bad (mh-face-data 'mh-show-pgg-bad) "Bad PGG signature face." :group 'mh-faces :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-show-pgg-good (mh-face-data 'mh-show-pgg-good) "Good PGG signature face." :group 'mh-faces :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-show-pgg-unknown (mh-face-data 'mh-show-pgg-unknown) "Unknown or untrusted PGG signature face." :group 'mh-faces :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-show-signature (mh-face-data 'mh-show-signature) "Signature face." :group 'mh-faces :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-show-subject (mh-face-data 'mh-folder-subject '((t (:inherit mh-folder-subject)))) "Face used to highlight \"Subject:\" header fields." :group 'mh-faces :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-show-to (mh-face-data 'mh-show-to) "Face used to highlight \"To:\" header fields." :group 'mh-faces :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-show-xface (mh-face-data 'mh-show-from '((t (:inherit (mh-show-from highlight))))) @@ -3496,13 +3516,13 @@ The background and foreground are used in the image." :group 'mh-faces :group 'mh-show - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-speedbar-folder (mh-face-data 'mh-speedbar-folder) "Basic folder face." :group 'mh-faces :group 'mh-speedbar - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-speedbar-folder-with-unseen-messages (mh-face-data 'mh-speedbar-folder @@ -3510,14 +3530,14 @@ "Folder face when folder contains unread messages." :group 'mh-faces :group 'mh-speedbar - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-speedbar-selected-folder (mh-face-data 'mh-speedbar-selected-folder) "Selected folder face." :group 'mh-faces :group 'mh-speedbar - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) (mh-defface mh-speedbar-selected-folder-with-unseen-messages (mh-face-data 'mh-speedbar-selected-folder @@ -3525,7 +3545,7 @@ "Selected folder face when folder contains unread messages." :group 'mh-faces :group 'mh-speedbar - :package-version '(MH-E "8.0")) + :package-version '(MH-E . "8.0")) ;; Get rid of temporary functions and data structures. (fmakunbound 'mh-defcustom) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-folder.el --- a/lisp/mh-e/mh-folder.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-folder.el Mon Apr 17 08:41:12 2006 +0000 @@ -522,11 +522,10 @@ (add-to-list 'which-func-modes 'mh-folder-mode)) ;; Shush compiler. -(eval-when-compile - (defvar desktop-save-buffer) - (defvar font-lock-auto-fontify) - (defvar image-load-path) - (mh-do-in-xemacs (defvar font-lock-defaults))) +(defvar desktop-save-buffer) +(defvar font-lock-auto-fontify) +(defvar image-load-path) +(defvar font-lock-defaults) ; XEmacs (defvar mh-folder-buttons-init-flag nil) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-funcs.el --- a/lisp/mh-e/mh-funcs.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-funcs.el Mon Apr 17 08:41:12 2006 +0000 @@ -138,7 +138,7 @@ (display-buffer mh-temp-buffer))) ;; Shush compiler. -(eval-when-compile (defvar view-exit-action)) +(defvar view-exit-action) ;;;###mh-autoload (defun mh-list-folders () diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-letter.el --- a/lisp/mh-e/mh-letter.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-letter.el Mon Apr 17 08:41:12 2006 +0000 @@ -278,9 +278,8 @@ (defvar mh-letter-buttons-init-flag nil) ;; Shush compiler. -(eval-when-compile - (defvar image-load-path) - (mh-do-in-xemacs (defvar font-lock-defaults))) +(defvar image-load-path) +(defvar font-lock-defaults) ; XEmacs ;; Ensure new buffers won't get this mode if default-major-mode is nil. (put 'mh-letter-mode 'mode-class 'special) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-mime.el --- a/lisp/mh-e/mh-mime.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-mime.el Mon Apr 17 08:41:12 2006 +0000 @@ -825,7 +825,9 @@ ;;; Button Display ;; Shush compiler. -(eval-when-compile (mh-do-in-xemacs (defvar dots) (defvar type) (defvar ov))) +(defvar dots) ; XEmacs +(defvar type) ; XEmacs +(defvar ov) ; XEmacs (defun mh-insert-mime-button (handle index displayed) "Insert MIME button for HANDLE. @@ -870,12 +872,9 @@ (mh-funcall-if-exists overlay-put ov 'evaporate t)))) ;; Shush compiler. -(eval-when-compile - (when (< emacs-major-version 22) - (defvar mm-verify-function-alist) - (defvar mm-decrypt-function-alist)) - (mh-do-in-xemacs - (defvar pressed-details))) +(defvar mm-verify-function-alist) ; < Emacs 22 +(defvar mm-decrypt-function-alist) ; < Emacs 22 +(defvar pressed-details) ; XEmacs (defun mh-insert-mime-security-button (handle) "Display buttons for PGP message, HANDLE." @@ -1537,7 +1536,7 @@ (after-find-file nil))) ;; Shush compiler. -(eval-when-compile (defvar mh-identity-pgg-default-user-id)) +(defvar mh-identity-pgg-default-user-id) ;;;###mh-autoload (defun mh-mml-secure-message-encrypt (method) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-search.el --- a/lisp/mh-e/mh-search.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-search.el Mon Apr 17 08:41:12 2006 +0000 @@ -324,7 +324,7 @@ count (> (hash-table-count msg-hash) 0))))))) ;; Shush compiler. -(eval-when-compile (mh-do-in-xemacs (defvar pick-folder))) +(defvar pick-folder) ; XEmacs (defun mh-search-folder (folder window-config) "Search FOLDER for messages matching a pattern. @@ -404,10 +404,8 @@ (mh-index-sequenced-messages folders mh-tick-seq)) ;; Shush compiler. -(eval-when-compile - (mh-do-in-xemacs - (defvar mh-mairix-folder) - (defvar mh-flists-search-folders))) +(defvar mh-mairix-folder) ; XEmacs +(defvar mh-flists-search-folders) ; XEmacs ;;;###mh-autoload (defun mh-index-sequenced-messages (folders sequence) @@ -1414,9 +1412,7 @@ (mh-require 'which-func nil t) ;; Shush compiler. -(eval-when-compile - (if (or mh-xemacs-flag (< emacs-major-version 22)) - (defvar which-func-mode))) +(defvar which-func-mode) ; < Emacs 22, XEmacs ;;;###mh-autoload (defun mh-index-create-imenu-index () @@ -1441,7 +1437,7 @@ mh-index-data) ;; Shush compiler -(eval-when-compile (if mh-xemacs-flag (defvar mh-speed-flists-inhibit-flag))) +(defvar mh-speed-flists-inhibit-flag) ; XEmacs ;;;###mh-autoload (defun mh-index-execute-commands () diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-seq.el --- a/lisp/mh-e/mh-seq.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-seq.el Mon Apr 17 08:41:12 2006 +0000 @@ -134,7 +134,7 @@ (apply #'mh-speed-flists t folders-changed)))) ;; Shush compiler. -(eval-when-compile (defvar view-exit-action)) +(defvar view-exit-action) ;;;###mh-autoload (defun mh-list-sequences () @@ -202,7 +202,7 @@ " ")))) ;; Shush compiler. -(eval-when-compile (mh-do-in-xemacs (defvar tool-bar-mode))) +(defvar tool-bar-mode) ; XEmacs ;;;###mh-autoload (defun mh-narrow-to-seq (sequence) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-show.el --- a/lisp/mh-e/mh-show.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-show.el Mon Apr 17 08:41:12 2006 +0000 @@ -815,7 +815,7 @@ (put 'mh-show-mode 'mode-class 'special) ;; Shush compiler. -(eval-when-compile (defvar font-lock-auto-fontify)) +(defvar font-lock-auto-fontify) ;;;###mh-autoload (define-derived-mode mh-show-mode text-mode "MH-Show" diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-utils.el --- a/lisp/mh-e/mh-utils.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-utils.el Mon Apr 17 08:41:12 2006 +0000 @@ -657,7 +657,7 @@ (defvar mh-folder-hist nil) ;; Shush compiler. -(eval-when-compile (defvar mh-speed-flists-cache)) +(defvar mh-speed-flists-cache) (defvar mh-allow-root-folder-flag nil "Non-nil means \"+\" is an acceptable folder name. @@ -718,10 +718,8 @@ (t (file-exists-p path)))))))) ;; Shush compiler. -(eval-when-compile - (mh-do-in-xemacs - (defvar completion-root-regexp) - (defvar minibuffer-completing-file-name))) +(defvar completion-root-regexp) ; XEmacs +(defvar minibuffer-completing-file-name) ; XEmacs (defun mh-folder-completing-read (prompt default allow-root-folder-flag) "Read folder name with PROMPT and default result DEFAULT. diff -r ab20fb198dda -r c156f6a9e7b5 lisp/mh-e/mh-xface.el --- a/lisp/mh-e/mh-xface.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/mh-e/mh-xface.el Mon Apr 17 08:41:12 2006 +0000 @@ -60,8 +60,7 @@ (funcall mh-show-xface-function))) ;; Shush compiler. -(eval-when-compile - (mh-do-in-xemacs (defvar default-enable-multibyte-characters))) +(defvar default-enable-multibyte-characters) ; XEmacs (defun mh-face-display-function () "Display a Face, X-Face, or X-Image-URL header field. diff -r ab20fb198dda -r c156f6a9e7b5 lisp/net/tramp.el --- a/lisp/net/tramp.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/net/tramp.el Mon Apr 17 08:41:12 2006 +0000 @@ -3584,6 +3584,10 @@ "Global variable keeping asynchronous process object. Used in `tramp-handle-shell-command'") +(defvar tramp-display-shell-command-buffer t + "Whether to display output buffer of `shell-command'. +This is necessary for handling DISPLAY of `process-file'.") + (defun tramp-handle-shell-command (command &optional output-buffer error-buffer) "Like `shell-command' for tramp files. This will break if COMMAND prints a newline, followed by the value of @@ -3692,7 +3696,8 @@ (skip-chars-forward "^ ") (setq status (read (current-buffer))))) (unless (zerop (buffer-size)) - (display-buffer output-buffer)) + (when tramp-display-shell-command-buffer + (display-buffer output-buffer))) status)) ;; The following is only executed if something strange was ;; happening. Emit a helpful message and do it anyway. @@ -3707,11 +3712,10 @@ (when (and (numberp buffer) (zerop buffer)) (error "Implementation does not handle immediate return")) (when (consp buffer) (error "Implementation does not handle error files")) - (shell-command - (mapconcat 'tramp-shell-quote-argument - (cons program args) - " ") - buffer)) + (let ((tramp-display-shell-command-buffer display)) + (shell-command + (mapconcat 'tramp-shell-quote-argument (cons program args) " ") + buffer))) ;; File Editing. diff -r ab20fb198dda -r c156f6a9e7b5 lisp/newcomment.el --- a/lisp/newcomment.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/newcomment.el Mon Apr 17 08:41:12 2006 +0000 @@ -895,6 +895,11 @@ (delete-char n) (setq ,bindent (- ,bindent n))))))))))) +(defun comment-add (arg) + (if (and (null arg) (= (string-match "[ \t]*\\'" comment-start) 1)) + comment-add + (1- (prefix-numeric-value arg)))) + (defun comment-region-internal (beg end cs ce &optional ccs cce block lines indent) "Comment region BEG .. END. @@ -999,7 +1004,6 @@ (defun comment-region-default (beg end &optional arg) (let* ((numarg (prefix-numeric-value arg)) - (add comment-add) (style (cdr (assoc comment-style comment-styles))) (lines (nth 2 style)) (block (nth 1 style)) @@ -1032,8 +1036,7 @@ ((consp arg) (uncomment-region beg end)) ((< numarg 0) (uncomment-region beg end (- numarg))) (t - (setq numarg (if (and (null arg) (= (length comment-start) 1)) - add (1- numarg))) + (setq numarg (comment-add arg)) (comment-region-internal beg end (let ((s (comment-padright comment-start numarg))) @@ -1091,9 +1094,8 @@ ;; FIXME: If there's no comment to kill on this line and ARG is ;; specified, calling comment-kill is not very clever. (if arg (comment-kill (and (integerp arg) arg)) (comment-indent)) - (let ((add (if arg (prefix-numeric-value arg) - (if (= (length comment-start) 1) comment-add 0)))) - ;; Some modes insist on keeping column 0 comment in column 0 + (let ((add (comment-add arg))) + ;; Some modes insist on keeping column 0 comment in column 0 ;; so we need to move away from it before inserting the comment. (indent-according-to-mode) (insert (comment-padright comment-start add)) diff -r ab20fb198dda -r c156f6a9e7b5 lisp/pcvs-parse.el --- a/lisp/pcvs-parse.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/pcvs-parse.el Mon Apr 17 08:41:12 2006 +0000 @@ -271,8 +271,8 @@ ;; on the current branch (either because it only exists in other ;; branches, or because it's been removed). (if (ignore-errors - (with-current-buffer - (find-file-noselect (expand-file-name + (with-temp-buffer + (insert-file-contents (expand-file-name ".cvsignore" (file-name-directory dir))) (goto-char (point-min)) (re-search-forward diff -r ab20fb198dda -r c156f6a9e7b5 lisp/play/landmark.el --- a/lisp/play/landmark.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/play/landmark.el Mon Apr 17 08:41:12 2006 +0000 @@ -211,22 +211,24 @@ (defvar lm-emacs-won () "*For making font-lock use the winner's face for the line.") -(defvar lm-font-lock-face-O - (if (display-color-p) - (list (facemenu-get-face 'fg:red) 'bold)) - "*Face to use for Emacs' O.") +(defface lm-font-lock-face-O '((((class color)) :foreground "red") + (t :weight bold)) + "*Face to use for Emacs' O." + :version "22.1" + :group 'lm) -(defvar lm-font-lock-face-X - (if (display-color-p) - (list (facemenu-get-face 'fg:green) 'bold)) - "*Face to use for your X.") +(defface lm-font-lock-face-X '((((class color)) :foreground "green") + (t :weight bold)) + "*Face to use for your X." + :version "22.1" + :group 'lm) (defvar lm-font-lock-keywords - '(("O" . lm-font-lock-face-O) - ("X" . lm-font-lock-face-X) + '(("O" . 'lm-font-lock-face-O) + ("X" . 'lm-font-lock-face-X) ("[-|/\\]" 0 (if lm-emacs-won - lm-font-lock-face-O - lm-font-lock-face-X))) + 'lm-font-lock-face-O + 'lm-font-lock-face-X))) "*Font lock rules for Lm.") (put 'lm-mode 'front-sticky diff -r ab20fb198dda -r c156f6a9e7b5 lisp/progmodes/cc-langs.el --- a/lisp/progmodes/cc-langs.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/progmodes/cc-langs.el Mon Apr 17 08:41:12 2006 +0000 @@ -267,7 +267,8 @@ ["Hungry delete" c-toggle-hungry-state :style toggle :selected c-hungry-delete-key] ["Subword mode" c-subword-mode - :style toggle :selected c-subword-mode]))) + :style toggle :selected (and (boundp 'c-subword-mode) + c-subword-mode)]))) ;;; Syntax tables. diff -r ab20fb198dda -r c156f6a9e7b5 lisp/progmodes/gdb-ui.el --- a/lisp/progmodes/gdb-ui.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/progmodes/gdb-ui.el Mon Apr 17 08:41:12 2006 +0000 @@ -417,7 +417,8 @@ (goto-char (point-min)) (when (search-forward "read in on demand:" nil t) (while (re-search-forward gdb-source-file-regexp nil t) - (push (or (match-string 1) (match-string 2)) gdb-source-file-list)) + (push (file-name-nondirectory (or (match-string 1) (match-string 2))) + gdb-source-file-list)) (dolist (buffer (buffer-list)) (with-current-buffer buffer (when (and buffer-file-name @@ -524,6 +525,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 +582,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 +2747,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 +3144,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 +3164,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 +3285,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 ab20fb198dda -r c156f6a9e7b5 lisp/progmodes/perl-mode.el --- a/lisp/progmodes/perl-mode.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/progmodes/perl-mode.el Mon Apr 17 08:41:12 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 ab20fb198dda -r c156f6a9e7b5 lisp/simple.el --- a/lisp/simple.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/simple.el Mon Apr 17 08:41:12 2006 +0000 @@ -2332,7 +2332,7 @@ If this variable is nil, no filtering is performed.") -(defun filter-buffer-substring (beg end &optional delete) +(defun filter-buffer-substring (beg end &optional delete noprops) "Return the buffer substring between BEG and END, after filtering. The buffer substring is passed through each of the filter functions in `buffer-substring-filters', and the value from the @@ -2342,21 +2342,36 @@ If DELETE is non-nil, the text between BEG and END is deleted from the buffer. +If NOPROPS is non-nil, final string returned does not include +text properties, while the string passed to the filters still +includes text properties from the buffer text. + Point is temporarily set to BEG before calling `buffer-substring-filters', in case the functions need to know where the text came from. -This function should be used instead of `buffer-substring' or -`delete-and-extract-region' when you want to allow filtering to -take place. For example, major or minor modes can use -`buffer-substring-filters' to extract characters that are special -to a buffer, and should not be copied into other buffers." - (save-excursion - (goto-char beg) - (let ((string (if delete (delete-and-extract-region beg end) - (buffer-substring beg end)))) - (dolist (filter buffer-substring-filters string) - (setq string (funcall filter string)))))) +This function should be used instead of `buffer-substring', +`buffer-substring-no-properties', or `delete-and-extract-region' +when you want to allow filtering to take place. For example, +major or minor modes can use `buffer-substring-filters' to +extract characters that are special to a buffer, and should not +be copied into other buffers." + (cond + ((or delete buffer-substring-filters) + (save-excursion + (goto-char beg) + (let ((string (if delete (delete-and-extract-region beg end) + (buffer-substring beg end)))) + (dolist (filter buffer-substring-filters) + (setq string (funcall filter string))) + (if noprops + (set-text-properties 0 (length string) nil string)) + string))) + (noprops + (buffer-substring-no-properties beg end)) + (t + (buffer-substring beg end)))) + ;;;; Window system cut and paste hooks. @@ -3742,7 +3757,7 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t." (interactive "p") (or arg (setq arg 1)) - + (let ((orig (point))) ;; Move by lines, if ARG is not 1 (the default). diff -r ab20fb198dda -r c156f6a9e7b5 lisp/startup.el --- a/lisp/startup.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/startup.el Mon Apr 17 08:41:12 2006 +0000 @@ -1538,17 +1538,15 @@ ;; Display the input that we set up in the buffer. (set-buffer-modified-p nil) (goto-char (point-min)) - (save-window-excursion - (condition-case nil - (switch-to-buffer (current-buffer)) - ;; In case we're in a dedicated or minibuffer-only window. - (error - ;; 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. - ;; (pop-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 ab20fb198dda -r c156f6a9e7b5 lisp/subr.el --- a/lisp/subr.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/subr.el Mon Apr 17 08:41:12 2006 +0000 @@ -1540,7 +1540,8 @@ (let ((pass nil) (c 0) (echo-keystrokes 0) - (cursor-in-echo-area t)) + (cursor-in-echo-area t) + (message-log-max nil)) (add-text-properties 0 (length prompt) minibuffer-prompt-properties prompt) (while (progn (message "%s%s" diff -r ab20fb198dda -r c156f6a9e7b5 lisp/textmodes/bibtex.el --- a/lisp/textmodes/bibtex.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/textmodes/bibtex.el Mon Apr 17 08:41:12 2006 +0000 @@ -2856,25 +2856,45 @@ (bibtex-autofill-entry)) (run-hooks 'bibtex-add-entry-hook))) -(defun bibtex-entry-update () +(defun bibtex-entry-update (&optional entry-type) "Update an existing BibTeX entry. In the BibTeX entry at point, make new fields for those items that may occur -according to `bibtex-field-list', but are not yet present." - (interactive) +according to `bibtex-field-list', but are not yet present. +Also, add field delimiters to numerical fields if they are not present. +If ENTRY-TYPE is non-nil, change first the entry type to ENTRY-TYPE. +When called interactively with a prefix arg, query for a value of ENTRY-TYPE." + (interactive + (list (if current-prefix-arg + (let ((completion-ignore-case t)) + (completing-read "New entry type: " bibtex-entry-field-alist + nil t nil 'bibtex-entry-type-history))))) (save-excursion (bibtex-beginning-of-entry) - ;; For inserting new fields, we use the fact that - ;; `bibtex-parse-entry' moves point to the end of the last field. - (let* ((fields-alist (bibtex-parse-entry)) - (field-list (bibtex-field-list - (cdr (assoc "=type=" fields-alist))))) - (skip-chars-backward " \t\n") - (dolist (field (car field-list)) - (unless (assoc-string (car field) fields-alist t) - (bibtex-make-field field))) - (dolist (field (cdr field-list)) - (unless (assoc-string (car field) fields-alist t) - (bibtex-make-optional-field field)))))) + (when (looking-at bibtex-entry-maybe-empty-head) + (goto-char (match-end 0)) + (if entry-type + (save-excursion + (replace-match (concat "@" entry-type) nil nil nil 1)) + (setq entry-type (bibtex-type-in-head))) + (let* ((field-list (bibtex-field-list entry-type)) + (required (copy-tree (car field-list))) + (optional (copy-tree (cdr field-list))) + bounds) + (while (setq bounds (bibtex-parse-field)) + (let ((fname (bibtex-name-in-field bounds t)) + (end (copy-marker (bibtex-end-of-field bounds) t))) + (setq required (delete (assoc-string fname required t) required) + optional (delete (assoc-string fname optional t) optional)) + (when (string-match "\\`[0-9]+\\'" + (bibtex-text-in-field-bounds bounds)) + (goto-char (bibtex-end-of-text-in-field bounds)) + (insert (bibtex-field-right-delimiter)) + (goto-char (bibtex-start-of-text-in-field bounds)) + (insert (bibtex-field-left-delimiter))) + (goto-char end))) + (skip-chars-backward " \t\n") + (dolist (field required) (bibtex-make-field field)) + (dolist (field optional) (bibtex-make-optional-field field)))))) (defun bibtex-parse-entry (&optional content) "Parse entry at point, return an alist. @@ -3613,17 +3633,20 @@ (defun bibtex-find-text-internal (&optional noerror subfield comma) "Find text part of current BibTeX field or entry head. -Return list (NAME START-TEXT END-TEXT END) with field or entry name, -start and end of text and end of field or entry head, or nil if not found. -If optional arg NOERROR is non-nil, an error message is suppressed if text -is not found. If optional arg SUBFIELD is non-nil START-TEXT and END-TEXT -correspond to the current subfield delimited by #. +Return list (NAME START-TEXT END-TEXT END STRING-CONST) with field +or entry name, start and end of text, and end of field or entry head. +STRING-CONST is a flag which is non-nil if current subfield delimited by # +is a BibTeX string constant. Return value is nil if field or entry head +are not found. +If optional arg NOERROR is non-nil, an error message is suppressed +if text is not found. If optional arg SUBFIELD is non-nil START-TEXT +and END-TEXT correspond to the current subfield delimited by #. Optional arg COMMA is as in `bibtex-enclosing-field'." (save-excursion (let ((pnt (point)) (bounds (bibtex-enclosing-field comma t)) (case-fold-search t) - name start-text end-text end failure done no-sub) + name start-text end-text end failure done no-sub string-const) (bibtex-beginning-of-entry) (cond (bounds (setq name (bibtex-name-in-field bounds t) @@ -3667,9 +3690,11 @@ (goto-char start-text) (while (not done) (if (or (prog1 (looking-at bibtex-field-const) - (setq end-text (match-end 0))) + (setq end-text (match-end 0) + string-const t)) (prog1 (setq bounds (bibtex-parse-field-string)) - (setq end-text (cdr bounds)))) + (setq end-text (cdr bounds) + string-const nil))) (progn (if (and (<= start-text pnt) (<= pnt end-text)) (setq done t) @@ -3678,7 +3703,7 @@ (setq start-text (goto-char (match-end 0))))) (setq done t failure t))))) (cond ((not failure) - (list name start-text end-text end)) + (list name start-text end-text end string-const)) ((and no-sub (not noerror)) (error "Not on text part of BibTeX field")) ((not noerror) (error "Not on BibTeX field")))))) @@ -3712,13 +3737,10 @@ Optional arg COMMA is as in `bibtex-enclosing-field'. It is t for interactive calls." (interactive (list t)) - (let* ((bounds (bibtex-find-text-internal nil t comma)) - (start (nth 1 bounds)) - (end (nth 2 bounds))) - (if (memq (char-before end) '(?\} ?\")) - (delete-region (1- end) end)) - (if (memq (char-after start) '(?\{ ?\")) - (delete-region start (1+ start))))) + (let ((bounds (bibtex-find-text-internal nil t comma))) + (unless (nth 4 bounds) + (delete-region (1- (nth 2 bounds)) (nth 2 bounds)) + (delete-region (nth 1 bounds) (1+ (nth 1 bounds)))))) (defun bibtex-kill-field (&optional copy-only comma) "Kill the entire enclosing BibTeX field. diff -r ab20fb198dda -r c156f6a9e7b5 lisp/textmodes/org.el --- a/lisp/textmodes/org.el Sun Apr 09 01:43:22 2006 +0000 +++ b/lisp/textmodes/org.el Mon Apr 17 08:41:12 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.23 ;; ;; This file is part of GNU Emacs. ;; @@ -81,6 +81,35 @@ ;; ;; Changes since version 4.00: ;; --------------------------- +;; Version 4.23 +;; - Bug fixes. +;; +;; Version 4.22 +;; - Bug fixes. +;; - In agenda buffer, mouse-1 no longer follows link. +;; See `org-agenda-mouse-1-follows-link' and `org-mouse-1-follows-link'. +;; +;; 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 +127,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 +166,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.23" "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 +208,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 +296,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 +354,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 +382,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 +443,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 +475,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 +485,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 +526,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 +539,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 +578,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 +614,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 +635,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 +753,807 @@ :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-mouse-1-follows-link t + "Non-nil means, mouse-1 on a link will follow the link. +A longer mouse click will still set point. Does not wortk on XEmacs. +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-agenda-mouse-1-follows-link nil + "Non-nil means, mouse-1 on a link will follow the link in the agenda. +A longer mouse click will still set point. Does not wortk on XEmacs. +Needs to be set before org.el is loaded." + :group 'org-agenda-setup + :type 'boolean) + +(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-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-setup + :type 'boolean) + +(defcustom org-fit-agenda-window t + "Non-nil means, change window size of agenda to fit content." + :group 'org-agenda-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 +1567,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 +1578,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 "