Mercurial > emacs
changeset 83232:5e454dd0d649
Merged in changes from CVS trunk.
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-715
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-716
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-717
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-718
RCS keyword removal
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-719
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-74
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-272
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Wed, 08 Dec 2004 22:21:07 +0000 |
parents | 549734260e34 (current diff) c05f062fa72f (diff) |
children | a2e7b2d1eb70 |
files | ChangeLog etc/TODO lisp/ChangeLog man/ChangeLog src/alloc.c src/config.in src/emacs.c src/keyboard.c |
diffstat | 40 files changed, 1677 insertions(+), 286 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Wed Dec 08 22:20:27 2004 +0000 +++ b/ChangeLog Wed Dec 08 22:21:07 2004 +0000 @@ -1,6 +1,11 @@ +2004-12-07 Stefan <monnier@iro.umontreal.ca> + + * configure.in (INLINE, RE_TRANSLATE_P): Move patches mistakenly + committed to src/config.in. + 2004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> - * configure.in: If $HAVE_GTK_FILE_CHOOSER = yes, check for + * configure.in: If $HAVE_GTK_FILE_CHOOSER = yes, check for pthreads and define HAVE_GTK_AND_PTHREAD. * configure: Regenerate.
--- a/configure.in Wed Dec 08 22:20:27 2004 +0000 +++ b/configure.in Wed Dec 08 22:21:07 2004 +0000 @@ -3,7 +3,7 @@ dnl autoconf dnl in the directory containing this script. dnl -dnl Copyright (C) 1994, 95, 96, 1999, 2000, 01, 02, 03, 2004 +dnl Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003, 2004 dnl Free Software Foundation, Inc. dnl dnl This file is part of GNU Emacs. @@ -2767,7 +2767,8 @@ fi AH_TOP([/* GNU Emacs site configuration template file. - Copyright (C) 1988, 93, 94, 99, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1988, 1993, 1994, 1999, 2000, 2002, 2004 + Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -2848,7 +2849,7 @@ /* Don't try to switch on inline handling as detected by AC_C_INLINE generally, because even if non-gcc compilers accept `inline', they may reject `extern inline'. */ -#ifdef __GNUC__ +#if defined (__GNUC__) && defined (OPTIMIZE) #define INLINE __inline__ #else #define INLINE @@ -2896,7 +2897,13 @@ /* Tell regex.c to use a type compatible with Emacs. */ #define RE_TRANSLATE_TYPE Lisp_Object #define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C) -#define RE_TRANSLATE_P(TBL) (XFASTINT (TBL) != 0) +#ifdef make_number +/* If make_number is a macro, use it. */ +#define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0))) +#else +/* If make_number is a function, avoid it. */ +#define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0)) +#endif #endif /* Avoid link-time collision with system mktime if we will use our own. */
--- a/etc/TODO Wed Dec 08 22:20:27 2004 +0000 +++ b/etc/TODO Wed Dec 08 22:21:07 2004 +0000 @@ -318,8 +318,6 @@ * Internal changes -** Replace Emacs's regex.c with the new DFA-based glibc regex code. - ** Replace gmalloc.c with the modified Doug Lea code from the current GNU libc so that the special mmapping of buffers can be removed -- that apparently loses under Solaris, at least. [fx has mostly done
--- a/lisp/ChangeLog Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/ChangeLog Wed Dec 08 22:21:07 2004 +0000 @@ -1,8 +1,34 @@ -2004-12-06 Stefan <monnier@iro.umontreal.ca> +2004-12-08 Jay Belanger <belanger@truman.edu> + + * calc/calc.el: Add math-read-preprocess-string to autoloads. + + * calc/calc-ext.el (math-read-replacement-list) + (math-read-superscripts, math-read-preprocess-string): Move to + calc-aent.el. + + * calc/calc-aent.el (math-read-replacement-list) + (math-read-superscripts, math-read-preprocess-string): Move from + calc-ext.el. + +2004-12-07 Stefan Monnier <monnier@iro.umontreal.ca> + + * isearch.el (isearch-quote-char): Fix up typo in last change. + +2004-12-07 Luc Teirlinck <teirllm@auburn.edu> + + * mouse.el (mouse-set-font): Handle the case where the command was + not invoked using the mouse. + + * edmacro.el: `edit-kbd-macro' is now bound to `C-x C-k e'. + (edmacro-finish-edit): Further update for keyboard macros that are + lambda forms. + (edmacro-sanitize-for-string): Correctly remove Meta modifier + (as suggested by Kim Storm). + +2004-12-06 Stefan Monnier <monnier@iro.umontreal.ca> * font-lock.el (font-lock-unfontify-region): Save buffer state. - (font-lock-default-unfontify-region): Don't save buffer state any - more. + (font-lock-default-unfontify-region): Don't save buffer state any more. 2004-12-07 Jay Belanger <belanger@truman.edu>
--- a/lisp/calc/calc-aent.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/calc/calc-aent.el Wed Dec 08 22:21:07 2004 +0000 @@ -465,6 +465,73 @@ ;;; Algebraic expression parsing. [Public] +(defvar math-read-replacement-list + '(;; Misc symbols + ("±" "+/-") ; plus or minus + ("×" "*") ; multiplication sign + ("÷" ":") ; division sign + ("−" "-") ; subtraction sign + ("∕" "/") ; division sign + ("∗" "*") ; asterisk multiplication + ("∞" "inf") ; infinity symbol + ("≤" "<=") + ("≥" ">=") + ("≦" "<=") + ("≧" ">=") + ;; fractions + ("¼" "(1:4)") ; 1/4 + ("½" "(1:2)") ; 1/2 + ("¾" "(3:4)") ; 3/4 + ("⅓" "(1:3)") ; 1/3 + ("⅔" "(2:3)") ; 2/3 + ("⅕" "(1:5)") ; 1/5 + ("⅖" "(2:5)") ; 2/5 + ("⅗" "(3:5)") ; 3/5 + ("⅘" "(4:5)") ; 4/5 + ("⅙" "(1:6)") ; 1/6 + ("⅚" "(5:6)") ; 5/6 + ("⅛" "(1:8)") ; 1/8 + ("⅜" "(3:8)") ; 3/8 + ("⅝" "(5:8)") ; 5/8 + ("⅞" "(7:8)") ; 7/8 + ("⅟" "1:") ; 1/... + ;; superscripts + ("⁰" "0") ; 0 + ("¹" "1") ; 1 + ("²" "2") ; 2 + ("³" "3") ; 3 + ("⁴" "4") ; 4 + ("⁵" "5") ; 5 + ("⁶" "6") ; 6 + ("⁷" "7") ; 7 + ("⁸" "8") ; 8 + ("⁹" "9") ; 9 + ("⁺" "+") ; + + ("⁻" "-") ; - + ("⁽" "(") ; ( + ("⁾" ")") ; ) + ("ⁿ" "n") ; n + ("ⁱ" "i")) ; i + "A list whose elements (old new) indicate replacements to make +in Calc algebraic input.") + +(defvar math-read-superscripts + "⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁽⁾ⁿⁱ" ; 0123456789+-()ni + "A string consisting of the superscripts allowed by Calc.") + +(defun math-read-preprocess-string (str) + "Replace some substrings of STR by Calc equivalents." + (setq str + (replace-regexp-in-string (concat "[" math-read-superscripts "]+") + "^(\\&)" str)) + (let ((rep-list math-read-replacement-list)) + (while rep-list + (setq str + (replace-regexp-in-string (nth 0 (car rep-list)) + (nth 1 (car rep-list)) str)) + (setq rep-list (cdr rep-list)))) + str) + ;; The next few variables are local to math-read-exprs (and math-read-expr ;; in calc-ext.el), but are set in functions they call.
--- a/lisp/calc/calc-ext.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/calc/calc-ext.el Wed Dec 08 22:21:07 2004 +0000 @@ -2874,73 +2874,6 @@ (defvar math-expr-data) -(defvar math-read-replacement-list - '(;; Misc symbols - ("±" "+/-") ; plus or minus - ("×" "*") ; multiplication sign - ("÷" ":") ; division sign - ("−" "-") ; subtraction sign - ("∕" "/") ; division sign - ("∗" "*") ; asterisk multiplication - ("∞" "inf") ; infinity symbol - ("≤" "<=") - ("≥" ">=") - ("≦" "<=") - ("≧" ">=") - ;; fractions - ("¼" "(1:4)") ; 1/4 - ("½" "(1:2)") ; 1/2 - ("¾" "(3:4)") ; 3/4 - ("⅓" "(1:3)") ; 1/3 - ("⅔" "(2:3)") ; 2/3 - ("⅕" "(1:5)") ; 1/5 - ("⅖" "(2:5)") ; 2/5 - ("⅗" "(3:5)") ; 3/5 - ("⅘" "(4:5)") ; 4/5 - ("⅙" "(1:6)") ; 1/6 - ("⅚" "(5:6)") ; 5/6 - ("⅛" "(1:8)") ; 1/8 - ("⅜" "(3:8)") ; 3/8 - ("⅝" "(5:8)") ; 5/8 - ("⅞" "(7:8)") ; 7/8 - ("⅟" "1:") ; 1/... - ;; superscripts - ("⁰" "0") ; 0 - ("¹" "1") ; 1 - ("²" "2") ; 2 - ("³" "3") ; 3 - ("⁴" "4") ; 4 - ("⁵" "5") ; 5 - ("⁶" "6") ; 6 - ("⁷" "7") ; 7 - ("⁸" "8") ; 8 - ("⁹" "9") ; 9 - ("⁺" "+") ; + - ("⁻" "-") ; - - ("⁽" "(") ; ( - ("⁾" ")") ; ) - ("ⁿ" "n") ; n - ("ⁱ" "i")) ; i - "A list whose elements (old new) indicate replacements to make -in Calc algebraic input.") - -(defvar math-read-superscripts - "⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁽⁾ⁿⁱ" ; 0123456789+-()ni - "A string consisting of the superscripts allowed by Calc.") - -(defun math-read-preprocess-string (str) - "Replace some substrings of STR by Calc equivalents." - (setq str - (replace-regexp-in-string (concat "[" math-read-superscripts "]+") - "^(\\&)" str)) - (let ((rep-list math-read-replacement-list)) - (while rep-list - (setq str - (replace-regexp-in-string (nth 0 (car rep-list)) - (nth 1 (car rep-list)) str)) - (setq rep-list (cdr rep-list)))) - str) - (defun math-read-expr (math-exp-str) (let ((math-exp-pos 0) (math-exp-old-pos 0)
--- a/lisp/calc/calc.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/calc/calc.el Wed Dec 08 22:21:07 2004 +0000 @@ -890,7 +890,7 @@ calc-check-user-syntax calc-do-alg-entry calc-do-calc-eval calc-do-quick-calc calc-match-user-syntax math-build-parse-table math-find-user-tokens math-read-expr-list math-read-exprs math-read-if - math-read-token math-remove-dashes) + math-read-token math-remove-dashes math-read-preprocess-string) ("calc-embed" calc-do-embedded-activate)
--- a/lisp/edmacro.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/edmacro.el Wed Dec 08 22:21:07 2004 +0000 @@ -1,6 +1,6 @@ ;;; edmacro.el --- keyboard macro editor -;; Copyright (C) 1993, 1994 Free Software Foundation, Inc. +;; Copyright (C) 1993, 1994, 2004 Free Software Foundation, Inc. ;; Author: Dave Gillespie <daveg@synaptics.com> ;; Maintainer: Dave Gillespie <daveg@synaptics.com> @@ -28,7 +28,7 @@ ;;; Usage: ;; -;; The `C-x C-k' (`edit-kbd-macro') command edits a keyboard macro +;; The `C-x C-k e' (`edit-kbd-macro') command edits a keyboard macro ;; in a special buffer. It prompts you to type a key sequence, ;; which should be one of: ;; @@ -266,7 +266,8 @@ (and b (commandp b) (not (arrayp b)) (not (kmacro-extract-lambda b)) (or (not (fboundp b)) - (not (arrayp (symbol-function b)))) + (not (or (arrayp (symbol-function b)) + (get b 'kmacro)))) (not (y-or-n-p (format "Key %s is already defined; %s" (edmacro-format-keys key 1) @@ -655,7 +656,7 @@ This function assumes that the events can be stored in a string." (setq seq (copy-sequence seq)) (loop for i below (length seq) do - (when (< (aref seq i) 0) + (when (logand (aref seq i) 128) (setf (aref seq i) (logand (aref seq i) 127)))) seq)
--- a/lisp/gnus/ChangeLog Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/ChangeLog Wed Dec 08 22:21:07 2004 +0000 @@ -1,3 +1,89 @@ +2004-12-02 Katsumi Yamaoka <yamaoka@jpl.org> + + * message.el (message-forward-make-body-mml): Remove headers + according to message-forward-ignored-headers if a message is + decoded. + +2004-12-02 Romain Francoise <romain@orebokech.com> + + * message.el (message-forward-make-body-plain): Always remove + headers according to message-forward-ignored-headers. + +2004-11-26 Katsumi Yamaoka <yamaoka@jpl.org> + + * lpath.el: Remove bbdb-create-internal, bbdb-records, + spam-BBDB-register-routine and spam-enter-ham-BBDB. + + * nnrss.el (nnrss-string-as-multibyte): Redefine it as a macro in + order to silence the byte compiler. + + * pop3.el (pop3-md5): Define it before being used. + + * spam.el: Fix the way to silence the byte compiler, which + complained about bbdb-buffer, bbdb-create-internal, + bbdb-search-simple, mail-check-payment, spam-BBDB-register-routine, + spam-enter-ham-BBDB, spam-stat-buffer-change-to-non-spam, + spam-stat-buffer-change-to-spam, spam-stat-buffer-is-non-spam, + spam-stat-buffer-is-spam, spam-stat-load, + spam-stat-register-ham-routine, spam-stat-register-spam-routine, + spam-stat-save and spam-stat-split-fancy. + +2004-11-26 Katsumi Yamaoka <yamaoka@jpl.org> + + * canlock.el (canlock-password): Remove `:size 0' or `:size 1' + which may confuse users. + (canlock-password-for-verify): Ditto. + + * deuglify.el (gnus-outlook-deuglify-unwrap-stop-chars): Ditto. + + * gnus-art.el (gnus-emphasis-alist): Ditto. + + * gnus-registry.el (gnus-registry-max-entries): Ditto. + + * gnus-score.el (gnus-adaptive-word-length-limit): Ditto. + + * gnus-start.el (gnus-save-killed-list): Ditto. + + * gnus-sum.el (gnus-thread-hide-subtree): Ditto. + (gnus-sum-thread-tree-root): Ditto. + (gnus-sum-thread-tree-false-root): Ditto. + (gnus-sum-thread-tree-single-indent): Ditto. + + * message.el (message-courtesy-message): Ditto. + (message-archive-note): Ditto. + (message-subscribed-address-file): Ditto. + (message-user-fqdn): Ditto. + + * spam-report.el (spam-report-gmane-regex): Ditto. + + * spam.el (spam-blackhole-good-server-regex): Ditto. + +2004-11-25 Reiner Steib <Reiner.Steib@gmx.de> + + * message.el (message-forbidden-properties): Fixed typo in doc + string. + +2004-11-25 Lars Magne Ingebrigtsen <larsi@gnus.org> + + * message.el (message-strip-forbidden-properties): Bind + buffer-read-only (etc) to nil. + +2004-11-25 Reiner Steib <Reiner.Steib@gmx.de> + + * gnus-util.el (gnus-replace-in-string): Added doc string. + + * nnmail.el (nnmail-split-header-length-limit): Increase to 2048 + to avoid problems when splitting mails with many recipients. + +2004-11-23 Katsumi Yamaoka <yamaoka@jpl.org> + + * rfc2047.el (rfc2047-header-encoding-alist): Add In-Reply-To to + address-mime. Suggested by ARISAWA Akihiro <ari@mbf.ocn.ne.jp>. + +2004-11-22 Marek Martin <marek.martin@mum.pri.ee> (tiny change) + + * nnfolder.el (nnfolder-request-create-group): Save current buffer. + 2004-11-22 Stefan Monnier <monnier@iro.umontreal.ca> * gnus-sum.el (gnus-summary-exit): Remove redundant and harmful
--- a/lisp/gnus/canlock.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/canlock.el Wed Dec 08 22:21:07 2004 +0000 @@ -55,13 +55,13 @@ (defcustom canlock-password nil "Password to use when signing a Cancel-Lock or a Cancel-Key header." :type '(radio (const :format "Not specified " nil) - (string :tag "Password" :size 0)) + (string :tag "Password")) :group 'canlock) (defcustom canlock-password-for-verify canlock-password "Password to use when verifying a Cancel-Lock or a Cancel-Key header." :type '(radio (const :format "Not specified " nil) - (string :tag "Password" :size 0)) + (string :tag "Password")) :group 'canlock) (defcustom canlock-force-insert-header nil
--- a/lisp/gnus/deuglify.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/deuglify.el Wed Dec 08 22:21:07 2004 +0000 @@ -1,6 +1,6 @@ ;;; deuglify.el --- deuglify broken Outlook (Express) articles -;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. ;; Copyright (C) 2001, 2002 Raymond Scholz ;; Author: Raymond Scholz <rscholz@zonix.de> @@ -257,7 +257,7 @@ "Characters that inhibit unwrapping if they are the last one on the cited line above the possible wrapped line." :version "21.4" :type '(radio (const :format "None " nil) - (string :size 0 :value ".?!")) + (string :value ".?!")) :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-no-wrap-chars "`"
--- a/lisp/gnus/gnus-art.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/gnus-art.el Wed Dec 08 22:21:07 2004 +0000 @@ -399,15 +399,15 @@ :value (gnus-emphasis-custom-value-to-external value)))) (widget-group-value-create widget)) - (regexp :format "%t: %v\n" :size 1) - (integer :format "Match group: %v\n" :size 0) - (integer :format "Emphasize group: %v\n" :size 0) + regexp + (integer :format "Match group: %v") + (integer :format "Emphasize group: %v") face) (group :tag "Simple" :value (("_" . "_") nil default) (cons :format "%v" - (regexp :format "Start regexp: %v\n" :size 0) - (regexp :format "End regexp: %v\n" :size 0)) + (regexp :format "Start regexp: %v") + (regexp :format "End regexp: %v")) (boolean :format "Show start and end patterns: %[%v%]\n" :on " On " :off " Off ") face)))
--- a/lisp/gnus/gnus-registry.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/gnus-registry.el Wed Dec 08 22:21:07 2004 +0000 @@ -1,5 +1,5 @@ ;;; gnus-registry.el --- article registry for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 ;; Free Software Foundation, Inc. ;; Author: Ted Zlatanov <tzz@lifelogs.com> @@ -128,7 +128,7 @@ "Maximum number of entries in the registry, nil for unlimited." :group 'gnus-registry :type '(radio (const :format "Unlimited " nil) - (integer :format "Maximum number: %v\n" :size 0))) + (integer :format "Maximum number: %v"))) ;; Function(s) missing in Emacs 20 (when (memq nil (mapcar 'fboundp '(puthash)))
--- a/lisp/gnus/gnus-score.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/gnus-score.el Wed Dec 08 22:21:07 2004 +0000 @@ -240,7 +240,7 @@ :version "21.4" :group 'gnus-score-adapt :type '(radio (const :format "Unlimited " nil) - (integer :format "Maximum length: %v\n" :size 0))) + (integer :format "Maximum length: %v"))) (defcustom gnus-ignored-adaptive-words nil "List of words to be ignored when doing adaptive word scoring."
--- a/lisp/gnus/gnus-start.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/gnus-start.el Wed Dec 08 22:21:07 2004 +0000 @@ -258,7 +258,7 @@ (and value (not (stringp value)))) :value t) (const nil) - (regexp :format "%t: %v\n" :size 0))) + regexp)) (defcustom gnus-ignored-newsgroups (mapconcat 'identity
--- a/lisp/gnus/gnus-sum.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/gnus-sum.el Wed Dec 08 22:21:07 2004 +0000 @@ -264,7 +264,7 @@ (not (or (consp value) (functionp value)))) :value t) (const nil) - (sexp :tag "Predicate specifier" :size 0))) + (sexp :tag "Predicate specifier"))) (defcustom gnus-thread-hide-killed t "*If non-nil, hide killed threads automatically." @@ -4639,19 +4639,19 @@ "With %B spec, used for the root of a thread. If nil, use subject instead." :version "21.4" - :type '(radio (const :format "%v " nil) (string :size 0)) + :type '(radio (const :format "%v " nil) string) :group 'gnus-thread) (defcustom gnus-sum-thread-tree-false-root "> " "With %B spec, used for a false root of a thread. If nil, use subject instead." :version "21.4" - :type '(radio (const :format "%v " nil) (string :size 0)) + :type '(radio (const :format "%v " nil) string) :group 'gnus-thread) (defcustom gnus-sum-thread-tree-single-indent "" "With %B spec, used for a thread with just one message. If nil, use subject instead." :version "21.4" - :type '(radio (const :format "%v " nil) (string :size 0)) + :type '(radio (const :format "%v " nil) string) :group 'gnus-thread) (defcustom gnus-sum-thread-tree-vertical "| " "With %B spec, used for drawing a vertical line."
--- a/lisp/gnus/gnus-util.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/gnus-util.el Wed Dec 08 22:21:07 2004 +0000 @@ -60,10 +60,20 @@ ((fboundp 'replace-in-string) (defalias 'gnus-replace-in-string 'replace-in-string)) ((fboundp 'replace-regexp-in-string) - (defun gnus-replace-in-string (string regexp newtext &optional literal) + (defun gnus-replace-in-string (string regexp newtext &optional literal) + "Replace all matches for REGEXP with NEWTEXT in STRING. +If LITERAL is non-nil, insert NEWTEXT literally. Return a new +string containing the replacements. + +This is a compatibility function for different Emacsen." (replace-regexp-in-string regexp newtext string nil literal))) (t (defun gnus-replace-in-string (string regexp newtext &optional literal) + "Replace all matches for REGEXP with NEWTEXT in STRING. +If LITERAL is non-nil, insert NEWTEXT literally. Return a new +string containing the replacements. + +This is a compatibility function for different Emacsen." (let ((start 0) tail) (while (string-match regexp string start) (setq tail (- (length string) (match-end 0)))
--- a/lisp/gnus/message.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/message.el Wed Dec 08 22:21:07 2004 +0000 @@ -146,7 +146,7 @@ the article has been posted to will be inserted there. If this variable is nil, no such courtesy message will be added." :group 'message-sending - :type '(radio (string :format "%t: %v\n" :size 0) (const nil))) + :type '(radio string (const nil))) (defcustom message-ignored-bounced-headers "^\\(Received\\|Return-Path\\|Delivered-To\\):" @@ -373,8 +373,7 @@ "Note to insert why you wouldn't want this posting archived. If nil, don't insert any text in the body." :version "21.4" - :type '(radio (string :format "%t: %v\n" :size 0) - (const nil)) + :type '(radio string (const nil)) :link '(custom-manual "(message)Header Commands") :group 'message-various) @@ -698,8 +697,7 @@ :version "21.4" :group 'message-interface :link '(custom-manual "(message)Mailing Lists") - :type '(radio (file :format "%t: %v\n" :size 0) - (const nil))) + :type '(radio file (const nil))) (defcustom message-subscribed-addresses nil "*Specifies a list of addresses the user is subscribed to. @@ -1442,7 +1440,7 @@ :group 'message-headers :link '(custom-manual "(message)News Headers") :type '(radio (const :format "%v " nil) - (string :format "FQDN: %v\n" :size 0))) + (string :format "FQDN: %v"))) (defcustom message-use-idna (and (condition-case nil (require 'idna) (file-error)) @@ -2403,7 +2401,7 @@ ;; fontified: is used by font-lock. ;; syntax-table, local-map: I dunno. ;; We need to add XEmacs names to the list. - "Property list of with properties.forbidden in message buffers. + "Property list of with properties forbidden in message buffers. The values of the properties are ignored, only the property names are used.") (defun message-tamago-not-in-use-p (pos) @@ -2426,11 +2424,13 @@ See also `message-forbidden-properties'." (when (and message-strip-special-text-properties (message-tamago-not-in-use-p begin)) - (while (not (= begin end)) - (when (not (get-text-property begin 'message-hidden)) - (remove-text-properties begin (1+ begin) - message-forbidden-properties)) - (incf begin)))) + (let ((buffer-read-only nil) + (inhibit-read-only t)) + (while (not (= begin end)) + (when (not (get-text-property begin 'message-hidden)) + (remove-text-properties begin (1+ begin) + message-forbidden-properties)) + (incf begin))))) ;;;###autoload (define-derived-mode message-mode text-mode "Message" @@ -6193,8 +6193,7 @@ (setq e (point)) (insert "\n-------------------- End of forwarded message --------------------\n") - (when (and (not current-prefix-arg) - message-forward-ignored-headers) + (when message-forward-ignored-headers (save-restriction (narrow-to-region b e) (goto-char b) @@ -6240,7 +6239,7 @@ (goto-char (point-max)))) (setq e (point)) (insert "<#/mml>\n") - (when (and (not current-prefix-arg) + (when (and (not message-forward-decoded-p) message-forward-ignored-headers) (save-restriction (narrow-to-region b e)
--- a/lisp/gnus/nnfolder.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/nnfolder.el Wed Dec 08 22:21:07 2004 +0000 @@ -1,5 +1,5 @@ ;;; nnfolder.el --- mail folder access for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 ;; Free Software Foundation, Inc. ;; Author: Simon Josefsson <simon@josefsson.org> (adding MARKS) @@ -370,10 +370,11 @@ (deffoo nnfolder-request-create-group (group &optional server args) (nnfolder-possibly-change-group nil server) (nnmail-activate 'nnfolder) - (when group - (unless (assoc group nnfolder-group-alist) - (push (list group (cons 1 0)) nnfolder-group-alist) - (nnfolder-save-active nnfolder-group-alist nnfolder-active-file) + (when (and group + (not (assoc group nnfolder-group-alist))) + (push (list group (cons 1 0)) nnfolder-group-alist) + (nnfolder-save-active nnfolder-group-alist nnfolder-active-file) + (save-current-buffer (nnfolder-read-folder group))) t)
--- a/lisp/gnus/nnmail.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/nnmail.el Wed Dec 08 22:21:07 2004 +0000 @@ -554,7 +554,7 @@ :group 'nnmail :type '(repeat symbol)) -(defcustom nnmail-split-header-length-limit 512 +(defcustom nnmail-split-header-length-limit 2048 "Header lines longer than this limit are excluded from the split function." :version "21.1" :group 'nnmail
--- a/lisp/gnus/nnrss.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/nnrss.el Wed Dec 08 22:21:07 2004 +0000 @@ -82,6 +82,12 @@ ;;; Interface functions +(eval-when-compile + (defmacro nnrss-string-as-multibyte (string) + (if (featurep 'xemacs) + string + `(string-as-multibyte ,string)))) + (deffoo nnrss-retrieve-headers (articles &optional group server fetch-old) (nnrss-possibly-change-group group server) (let (e) @@ -410,10 +416,6 @@ (defalias 'nnrss-insert 'nnrss-insert-w3) -(if (featurep 'xemacs) - (defalias 'nnrss-string-as-multibyte 'identity) - (defalias 'nnrss-string-as-multibyte 'string-as-multibyte)) - ;;; Snarf functions (defun nnrss-check-group (group server)
--- a/lisp/gnus/pop3.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/pop3.el Wed Dec 08 22:21:07 2004 +0000 @@ -348,6 +348,22 @@ ;; AUTHORIZATION STATE +(eval-and-compile + (if (fboundp 'md5) + (defalias 'pop3-md5 'md5) + (defvar pop3-md5-program "md5" + "*Program to encode its input in MD5.") + + (defun pop3-md5 (string) + (with-temp-buffer + (insert string) + (call-process-region (point-min) (point-max) + pop3-md5-program + t (current-buffer) nil) + ;; The meaningful output is the first 32 characters. + ;; Don't return the newline that follows them! + (buffer-substring (point-min) (+ 32 (point-min))))))) + (defun pop3-user (process user) "Send USER information to POP3 server." (pop3-send-command process (format "USER %s" user)) @@ -378,22 +394,6 @@ ;; TRANSACTION STATE -(eval-and-compile - (if (fboundp 'md5) - (defalias 'pop3-md5 'md5) - (defvar pop3-md5-program "md5" - "*Program to encode its input in MD5.") - - (defun pop3-md5 (string) - (with-temp-buffer - (insert string) - (call-process-region (point-min) (point-max) - pop3-md5-program - t (current-buffer) nil) - ;; The meaningful output is the first 32 characters. - ;; Don't return the newline that follows them! - (buffer-substring (point-min) (+ 32 (point-min))))))) - (defun pop3-stat (process) "Return the number of messages in the maildrop and the maildrop's size." (pop3-send-command process "STAT")
--- a/lisp/gnus/rfc2047.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/rfc2047.el Wed Dec 08 22:21:07 2004 +0000 @@ -71,7 +71,7 @@ '(("Newsgroups" . nil) ("Followup-To" . nil) ("Message-ID" . nil) - ("\\(Resent-\\)?\\(From\\|Cc\\|To\\|Bcc\\|Reply-To\\|Sender\ + ("\\(Resent-\\)?\\(From\\|Cc\\|To\\|Bcc\\|\\(In-\\)?Reply-To\\|Sender\ \\|Mail-Followup-To\\|Mail-Copies-To\\|Approved\\)" . address-mime) (t . mime)) "*Header/encoding method alist.
--- a/lisp/gnus/spam-report.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/spam-report.el Wed Dec 08 22:21:07 2004 +0000 @@ -43,7 +43,7 @@ or the gnus-group-spam-exit-processor-report-gmane group/topic parameter instead." :type '(radio (const nil) - (regexp :format "%t: %v\n" :size 0 :value "^nntp\+.*:gmane\.")) + (regexp :value "^nntp\+.*:gmane\.")) :group 'spam-report) (defcustom spam-report-gmane-spam-header
--- a/lisp/gnus/spam.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/gnus/spam.el Wed Dec 08 22:21:07 2004 +0000 @@ -295,8 +295,7 @@ (defcustom spam-blackhole-good-server-regex nil "String matching IP addresses that should not be checked in the blackholes." - :type '(radio (const nil) - (regexp :format "%t: %v\n" :size 0)) + :type '(radio (const nil) regexp) :group 'spam) (defcustom spam-face 'gnus-splash-face @@ -1257,6 +1256,9 @@ ;;;; Hashcash. +(eval-when-compile + (autoload 'mail-check-payment "hashcash")) + (condition-case nil (progn (require 'hashcash) @@ -1265,9 +1267,7 @@ "Check the headers for hashcash payments." (mail-check-payment))) ;mail-check-payment returns a boolean - (file-error (progn - (defalias 'mail-check-payment 'ignore) - (defalias 'spam-check-hashcash 'ignore)))) + (file-error)) ;;;; BBDB @@ -1276,66 +1276,67 @@ ;; all this is done inside a condition-case to trap errors -(condition-case nil - (progn - (require 'bbdb) - (require 'bbdb-com) +(eval-when-compile + (autoload 'bbdb-buffer "bbdb") + (autoload 'bbdb-create-internal "bbdb") + (autoload 'bbdb-search-simple "bbdb")) - (defun spam-enter-ham-BBDB (addresses &optional remove) - "Enter an address into the BBDB; implies ham (non-spam) sender" - (dolist (from addresses) - (when (stringp from) - (let* ((parsed-address (gnus-extract-address-components from)) - (name (or (nth 0 parsed-address) "Ham Sender")) - (remove-function (if remove - 'bbdb-delete-record-internal - 'ignore)) - (net-address (nth 1 parsed-address)) - (record (and net-address - (bbdb-search-simple nil net-address)))) - (when net-address - (gnus-message 5 "%s address %s %s BBDB" - (if remove "Deleting" "Adding") - from - (if remove "from" "to")) - (if record - (funcall remove-function record) - (bbdb-create-internal name nil net-address nil nil - "ham sender added by spam.el"))))))) +(eval-and-compile + (when (condition-case nil + (progn + (require 'bbdb) + (require 'bbdb-com)) + (file-error + (defalias 'spam-BBDB-register-routine 'ignore) + (defalias 'spam-enter-ham-BBDB 'ignore) + nil)) - (defun spam-BBDB-register-routine (articles &optional unregister) - (let (addresses) - (dolist (article articles) - (when (stringp (spam-fetch-field-from-fast article)) - (push (spam-fetch-field-from-fast article) addresses))) - ;; now do the register/unregister action - (spam-enter-ham-BBDB addresses unregister))) - - (defun spam-BBDB-unregister-routine (articles) - (spam-BBDB-register-routine articles t)) + (defun spam-enter-ham-BBDB (addresses &optional remove) + "Enter an address into the BBDB; implies ham (non-spam) sender" + (dolist (from addresses) + (when (stringp from) + (let* ((parsed-address (gnus-extract-address-components from)) + (name (or (nth 0 parsed-address) "Ham Sender")) + (remove-function (if remove + 'bbdb-delete-record-internal + 'ignore)) + (net-address (nth 1 parsed-address)) + (record (and net-address + (bbdb-search-simple nil net-address)))) + (when net-address + (gnus-message 5 "%s address %s %s BBDB" + (if remove "Deleting" "Adding") + from + (if remove "from" "to")) + (if record + (funcall remove-function record) + (bbdb-create-internal name nil net-address nil nil + "ham sender added by spam.el"))))))) - (defun spam-check-BBDB () - "Mail from people in the BBDB is classified as ham or non-spam" - (let ((who (nnmail-fetch-field "from")) - (spam-split-group (if spam-split-symbolic-return - 'spam - spam-split-group))) - (when who - (setq who (nth 1 (gnus-extract-address-components who))) - (if (bbdb-search-simple nil who) - t - (if spam-use-BBDB-exclusive - spam-split-group - nil)))))) + (defun spam-BBDB-register-routine (articles &optional unregister) + (let (addresses) + (dolist (article articles) + (when (stringp (spam-fetch-field-from-fast article)) + (push (spam-fetch-field-from-fast article) addresses))) + ;; now do the register/unregister action + (spam-enter-ham-BBDB addresses unregister))) + + (defun spam-BBDB-unregister-routine (articles) + (spam-BBDB-register-routine articles t)) - (file-error (progn - (defalias 'bbdb-search-simple 'ignore) - (defalias 'spam-check-BBDB 'ignore) - (defalias 'spam-BBDB-register-routine 'ignore) - (defalias 'spam-enter-ham-BBDB 'ignore) - (defalias 'bbdb-create-internal 'ignore) - (defalias 'bbdb-delete-record-internal 'ignore) - (defalias 'bbdb-records 'ignore)))) + (defun spam-check-BBDB () + "Mail from people in the BBDB is classified as ham or non-spam" + (let ((who (nnmail-fetch-field "from")) + (spam-split-group (if spam-split-symbolic-return + 'spam + spam-split-group))) + (when who + (setq who (nth 1 (gnus-extract-address-components who))) + (if (bbdb-search-simple nil who) + t + (if spam-use-BBDB-exclusive + spam-split-group + nil))))))) ;;;; ifile @@ -1411,66 +1412,63 @@ ;;;; spam-stat -(condition-case nil - (progn - (let ((spam-stat-install-hooks nil)) - (require 'spam-stat)) +(eval-when-compile + (autoload 'spam-stat-buffer-change-to-non-spam "spam-stat") + (autoload 'spam-stat-buffer-change-to-spam "spam-stat") + (autoload 'spam-stat-buffer-is-non-spam "spam-stat") + (autoload 'spam-stat-buffer-is-spam "spam-stat") + (autoload 'spam-stat-load "spam-stat") + (autoload 'spam-stat-save "spam-stat") + (autoload 'spam-stat-split-fancy "spam-stat")) + +(eval-and-compile + (when (condition-case nil + (let ((spam-stat-install-hooks nil)) + (require 'spam-stat)) + (file-error + (defalias 'spam-stat-register-ham-routine 'ignore) + (defalias 'spam-stat-register-spam-routine 'ignore) + nil)) - (defun spam-check-stat () - "Check the spam-stat backend for the classification of this message" - (let ((spam-split-group (if spam-split-symbolic-return - 'spam - spam-split-group)) - (spam-stat-split-fancy-spam-group spam-split-group) ; override - (spam-stat-buffer (buffer-name)) ; stat the current buffer - category return) - (spam-stat-split-fancy))) + (defun spam-check-stat () + "Check the spam-stat backend for the classification of this message" + (let ((spam-split-group (if spam-split-symbolic-return + 'spam + spam-split-group)) + (spam-stat-split-fancy-spam-group spam-split-group) ; override + (spam-stat-buffer (buffer-name)) ; stat the current buffer + category return) + (spam-stat-split-fancy))) - (defun spam-stat-register-spam-routine (articles &optional unregister) - (dolist (article articles) - (let ((article-string (spam-get-article-as-string article))) - (with-temp-buffer - (insert article-string) - (if unregister - (spam-stat-buffer-change-to-non-spam) + (defun spam-stat-register-spam-routine (articles &optional unregister) + (dolist (article articles) + (let ((article-string (spam-get-article-as-string article))) + (with-temp-buffer + (insert article-string) + (if unregister + (spam-stat-buffer-change-to-non-spam) (spam-stat-buffer-is-spam)))))) - (defun spam-stat-unregister-spam-routine (articles) - (spam-stat-register-spam-routine articles t)) + (defun spam-stat-unregister-spam-routine (articles) + (spam-stat-register-spam-routine articles t)) - (defun spam-stat-register-ham-routine (articles &optional unregister) - (dolist (article articles) - (let ((article-string (spam-get-article-as-string article))) - (with-temp-buffer - (insert article-string) - (if unregister - (spam-stat-buffer-change-to-spam) + (defun spam-stat-register-ham-routine (articles &optional unregister) + (dolist (article articles) + (let ((article-string (spam-get-article-as-string article))) + (with-temp-buffer + (insert article-string) + (if unregister + (spam-stat-buffer-change-to-spam) (spam-stat-buffer-is-non-spam)))))) - (defun spam-stat-unregister-ham-routine (articles) - (spam-stat-register-ham-routine articles t)) - - (defun spam-maybe-spam-stat-load () - (when spam-use-stat (spam-stat-load))) - - (defun spam-maybe-spam-stat-save () - (when spam-use-stat (spam-stat-save)))) + (defun spam-stat-unregister-ham-routine (articles) + (spam-stat-register-ham-routine articles t)) - (file-error (progn - (defalias 'spam-stat-load 'ignore) - (defalias 'spam-stat-save 'ignore) - (defalias 'spam-maybe-spam-stat-load 'ignore) - (defalias 'spam-maybe-spam-stat-save 'ignore) - (defalias 'spam-stat-register-ham-routine 'ignore) - (defalias 'spam-stat-unregister-ham-routine 'ignore) - (defalias 'spam-stat-register-spam-routine 'ignore) - (defalias 'spam-stat-unregister-spam-routine 'ignore) - (defalias 'spam-stat-buffer-is-spam 'ignore) - (defalias 'spam-stat-buffer-change-to-spam 'ignore) - (defalias 'spam-stat-buffer-is-non-spam 'ignore) - (defalias 'spam-stat-buffer-change-to-non-spam 'ignore) - (defalias 'spam-stat-split-fancy 'ignore) - (defalias 'spam-check-stat 'ignore)))) + (defun spam-maybe-spam-stat-load () + (when spam-use-stat (spam-stat-load))) + + (defun spam-maybe-spam-stat-save () + (when spam-use-stat (spam-stat-save)))))
--- a/lisp/isearch.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/isearch.el Wed Dec 08 22:21:07 2004 +0000 @@ -1682,7 +1682,7 @@ ;; single-byte character set, and convert them to Emacs ;; characters. (if (and isearch-regexp (= char ?\ )) - (if (subregexp-context-p isearch-string pos) + (if (subregexp-context-p isearch-string (length isearch-string)) (isearch-process-search-string "[ ]" " ") (isearch-process-search-char char)) (and enable-multibyte-characters
--- a/lisp/mouse.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/mouse.el Wed Dec 08 22:21:07 2004 +0000 @@ -2201,7 +2201,9 @@ (progn (unless (display-multi-font-p) (error "Cannot change fonts on this display")) (x-popup-menu - last-nonmenu-event + (if (listp last-nonmenu-event) + last-nonmenu-event + (list '(0 0) (selected-window))) ;; Append list of fontsets currently defined. (append x-fixed-font-alist (list (generate-fontset-menu)))))) (if fonts
--- a/lisp/textmodes/org.el Wed Dec 08 22:20:27 2004 +0000 +++ b/lisp/textmodes/org.el Wed Dec 08 22:21:07 2004 +0000 @@ -5,7 +5,7 @@ ;; Author: Carsten Dominik <dominik at science dot uva dot nl> ;; Keywords: outlines, hypermedia, calendar ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ -;; Version: 3.03 (internal CVS version is $Revision: 1.2 $) +;; Version: 3.03 ;; This file is part of GNU Emacs.
--- a/man/ChangeLog Wed Dec 08 22:20:27 2004 +0000 +++ b/man/ChangeLog Wed Dec 08 22:21:07 2004 +0000 @@ -1,3 +1,14 @@ +2004-12-07 Luc Teirlinck <teirllm@auburn.edu> + + * frames.texi (Scroll Bars): The option `scroll-bar-mode' has to + be set through Custom. Otherwise, it has no effect. + +2004-12-07 Stefan <monnier@iro.umontreal.ca> + + * url.texi: New file. + + * Makefile.in (INFO_TARGETS, DVI_TARGETS, ../info/url, url.dvi): Add it. + 2004-12-06 Jay Belanger <belanger@truman.edu> * calc.texi (Using Calc): Remove paragraph about installation. @@ -96,6 +107,17 @@ to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for suggestions. +2004-11-22 Reiner Steib <Reiner.Steib@gmx.de> + + * message.texi (Various Message Variables): Mention that all mail + file variables are derived from `message-directory'. + + * gnus.texi (Splitting Mail): Clarify bogus group. + +2004-11-16 Reiner Steib <Reiner.Steib@gmx.de> + + * gnus.texi (Filtering Spam Using The Spam ELisp Package): + 2004-11-02 Katsumi Yamaoka <yamaoka@jpl.org> * emacs-mime.texi (Encoding Customization): Fix
--- a/man/Makefile.in Wed Dec 08 22:20:27 2004 +0000 +++ b/man/Makefile.in Wed Dec 08 22:21:07 2004 +0000 @@ -39,7 +39,7 @@ ../info/sc ../info/vip ../info/viper ../info/widget \ ../info/efaq ../info/ada-mode ../info/autotype ../info/calc \ ../info/idlwave ../info/eudc ../info/ebrowse ../info/pcl-cvs \ - ../info/woman ../info/eshell ../info/org \ + ../info/woman ../info/eshell ../info/org ../info/url \ ../info/speedbar ../info/tramp ../info/ses ../info/smtpmail \ ../info/flymake DVI_TARGETS = emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \ @@ -47,7 +47,7 @@ gnus.dvi message.dvi sieve.dvi pgg.dvi mh-e.dvi \ reftex.dvi sc.dvi vip.dvi viper.dvi widget.dvi faq.dvi \ ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \ - pcl-cvs.dvi woman.dvi eshell.dvi org.el \ + pcl-cvs.dvi woman.dvi eshell.dvi org.dvi url.dvi \ speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \ emacs-xtra.dvi INFOSOURCES = info.texi @@ -291,6 +291,11 @@ org.dvi: org.texi $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi +../info/url: url.texi + cd $(srcdir); $(MAKEINFO) url.texi +url.dvi: url.texi + $(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi + ../info/speedbar: speedbar.texi cd $(srcdir); $(MAKEINFO) speedbar.texi speedbar.dvi: speedbar.texi
--- a/man/frames.texi Wed Dec 08 22:20:27 2004 +0000 +++ b/man/frames.texi Wed Dec 08 22:21:07 2004 +0000 @@ -761,8 +761,10 @@ frames yet to be created. Customize the option @code{scroll-bar-mode} to control the use of scroll bars at startup. You can use it to specify that they are placed at the right of windows if you prefer that. You -can use the X resource @samp{verticalScrollBars} to control the initial -setting of Scroll Bar mode similarly. @xref{Resources}. +have to set this variable through the @samp{Customize} interface +(@pxref{Easy Customization}). Otherwise, it will not work properly. +You can use the X resource @samp{verticalScrollBars} to control the +initial setting of Scroll Bar mode similarly. @xref{Resources}. @findex toggle-scroll-bar To enable or disable scroll bars for just the selected frame, use the
--- a/man/gnus.texi Wed Dec 08 22:20:27 2004 +0000 +++ b/man/gnus.texi Wed Dec 08 22:21:07 2004 +0000 @@ -13244,14 +13244,16 @@ argument. It should return a non-@code{nil} value if it thinks that the mail belongs in that group. +@cindex @samp{bogus} group The last of these groups should always be a general one, and the regular -expression should @emph{always} be @samp{*} so that it matches any mails +expression should @emph{always} be @samp{""} so that it matches any mails that haven't been matched by any of the other regexps. (These rules are -processed from the beginning of the alist toward the end. The first -rule to make a match will ``win'', unless you have crossposting enabled. -In that case, all matching rules will ``win''.) When new groups are -created by splitting mail, you may want to run -@code{gnus-group-find-new-groups} to see the new groups. +processed from the beginning of the alist toward the end. The first rule +to make a match will ``win'', unless you have crossposting enabled. In +that case, all matching rules will ``win''.) If no rule matched, the mail +will end up in the @samp{bogus} group. When new groups are created by +splitting mail, you may want to run @code{gnus-group-find-new-groups} to +see the new groups. This also applies to the @samp{bogus} group. If you like to tinker with this yourself, you can set this variable to a function of your choice. This function will be called without any @@ -13268,7 +13270,7 @@ The mail back ends all support cross-posting. If several regexps match, the mail will be ``cross-posted'' to all those groups. @code{nnmail-crosspost} says whether to use this mechanism or not. Note -that no articles are crossposted to the general (@samp{*}) group. +that no articles are crossposted to the general (@samp{""}) group. @vindex nnmail-crosspost-link-function @cindex crosspost
--- a/man/message.texi Wed Dec 08 22:20:27 2004 +0000 +++ b/man/message.texi Wed Dec 08 22:21:07 2004 +0000 @@ -1867,6 +1867,7 @@ @item message-directory @vindex message-directory Directory used by many mailey things. The default is @file{~/Mail/}. +All other mail file variables are derived from @code{message-directory}. @item message-auto-save-directory @vindex message-auto-save-directory
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/man/url.texi Wed Dec 08 22:21:07 2004 +0000 @@ -0,0 +1,1187 @@ +\input texinfo +@setfilename url.info +@settitle URL Programmer's Manual + +@iftex +@c @finalout +@end iftex +@c @setchapternewpage odd +@c @smallbook + +@tex +\overfullrule=0pt +%\global\baselineskip 30pt % for printing in double space +@end tex +@dircategory World Wide Web +@dircategory GNU Emacs Lisp +@direntry +* URL: (url). URL loading package. +@end direntry + +@ifnottex +This file documents the URL loading package. + +Copyright (C) 1996, 1997, 1998, 1999, 2002, 2004 Free Software Foundation +Copyright (C) 1993, 1994, 1995, 1996 William M. Perry + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with the +Invariant Sections being +``GNU GENERAL PUBLIC LICENSE''. A copy of the +license is included in the section entitled ``GNU Free Documentation +License.'' +@end ifnottex + +@c +@titlepage +@sp 6 +@center @titlefont{URL} +@center @titlefont{Programmer's Manual} +@sp 4 +@center First Edition, URL Version 2.0 +@sp 1 +@c @center December 1999 +@sp 5 +@center William M. Perry +@center @email{wmperry@@gnu.org} +@center David Love +@center @email{fx@@gnu.org} +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 1993, 1994, 1995, 1996 William M. Perry@* +Copyright @copyright{} 1996, 1997, 1998, 1999, 2002 Free Software Foundation + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with the +Invariant Sections being +``GNU GENERAL PUBLIC LICENSE''. A copy of the +license is included in the section entitled ``GNU Free Documentation +License.'' +@end titlepage +@page +@node Top +@top URL + + + +@menu +* Getting Started:: Preparing your program to use URLs. +* Retrieving URLs:: How to use this package to retrieve a URL. +* Supported URL Types:: Descriptions of URL types currently supported. +* Defining New URLs:: How to define a URL loader for a new protocol. +* General Facilities:: URLs can be cached, accessed via a gateway + and tracked in a history list. +* Customization:: Variables you can alter. +* Function Index:: +* Variable Index:: +* Concept Index:: +@end menu + +@node Getting Started +@chapter Getting Started +@cindex URLs, definition +@cindex URIs + +@dfn{Uniform Resource Locators} (URLs) are a specific form of +@dfn{Uniform Resource Identifiers} (URI) described in RFC 2396 which +updates RFC 1738 and RFC 1808. RFC 2016 defines uniform resource +agents. + +URIs have the form @var{scheme}:@var{scheme-specific-part}, where the +@var{scheme}s supported by this library are described below. +@xref{Supported URL Types}. + +FTP NFS, HTTP, HTTPS, @code{rlogin}, @code{telnet}, tn3270, +IRC and gopher URLs all have the form + +@example +@var{scheme}://@r{[}@var{userinfo}@@@r{]}@var{hostname}@r{[}:@var{port}@r{]}@r{[}/@var{path}@r{]} +@end example +@noindent +where @samp{@r{[}} and @samp{@r{]}} delimit optional parts. +@var{userinfo} sometimes takes the form @var{username}:@var{password} +but you should beware of the security risks of sending cleartext +passwords. @var{hostname} may be a domain name or a dotted decimal +address. If the @samp{:@var{port}} is omitted then the library will +use the `well known' port for that service when accessing URLs. With +the possible exception of @code{telnet}, it is rare for ports to be +specified, and it is possible using a non-standard port may have +undesired consequences if a different service is listening on that +port (e.g.@: an HTTP URL specifying the SMTP port can cause mail to be +sent).@c , but @xref{Other Variables, url-bad-port-list}. +The meaning of +the @var{path} component depends on the service. + +The library depends on MIME support provided by the @samp{mm-} +packages from Gnus 5.8 or later. @xref{(emacs-mime)Top, The MIME +library}. + +@menu +* Configuration:: +* Parsed URLs:: URLs are parsed into vector structures. +@end menu + +@node Configuration +@section Configuration + +@defvar url-configuration-directory +@cindex @file{~/.url} +@cindex configuration files +The directory in which URL configuration files, the cache etc., +reside. Default @file{~/.url}. +@end defvar + +@node Parsed URLs +@section Parsed URLs +@cindex parsed URLs +The library functions typically operate on @dfn{parsed} versions of +URLs. These are actually vectors of the form: + +@example +[@var{type} @var{user} @var{password} @var{host} @var{port} @var{file} @var{target} @var{attributes} @var{full}] +@end example + +@noindent where +@table @var +@item type +is the type of the URL scheme, e.g.@: @code{http} +@item user +is the username associated with it, or @code{nil}; +@item password +is the user password associated with it, or @code{nil}; +@item host +is the host name associated with it, or @code{nil}; +@item port +is the port number associated with it, or @code{nil}; +@item file +is the `file' part of it, or @code{nil}. This doesn't necessarily +actually refer to a file; +@item target +is the target part, or @code{nil}; +@item attributes +is the attributes associated with it, or @code{nil}; +@item full +is @code{t} for a fully-specified URL, with a host part indicated by +@samp{//} after the scheme part. +@end table + +@findex url-type +@findex url-user +@findex url-password +@findex url-host +@findex url-port +@findex url-file +@findex url-target +@findex url-attributes +@findex url-full +@findex url-set-type +@findex url-set-user +@findex url-set-password +@findex url-set-host +@findex url-set-port +@findex url-set-file +@findex url-set-target +@findex url-set-attributes +@findex url-set-full +These attributes have accessors named @code{url-@var{part}}, where +@var{part} is the name of one of the elements above, e.g.@: +@code{url-host}. Similarly, there are setters of the form +@code{url-set-@var{part}}. + +There are functions for parsing and unparsing between the string and +vector forms. + +@defun url-generic-parse-url url +Return a parsed version of the string @var{url}. +@end defun + +@defun url-recreate-url url +@cindex unparsing URLs +Recreates a URL string from the parsed @var{url}. +@end defun + +@node Retrieving URLs +@chapter Retrieving URLs + +@defun url-retrieve-synchronously url +Retrieve @var{url} synchronously and return a buffer containing the +data. @var{url} is either a string or a parsed URL structure. Return +@var{nil} if there are no data associated with it (the case for dired, +info, or mailto URLs that need no further processing). +@end defun + +@defun url-retrieve url callback &optional cbargs +Retrieve @var{url} asynchronously and call @var{callback} with args +@var{cbargs} when finished. The callback is called when the object +has been completely retrieved, with the current buffer containing the +object and any MIME headers associated with it. @var{url} is either a +string or a parsed URL structure. Returns the buffer @var{url} will +load into, or @var{nil} if the process has already completed. +@end defun + +@node Supported URL Types +@chapter Supported URL Types + +@menu +* http/https:: Hypertext Transfer Protocol. +* file/ftp:: Local files and FTP archives. +* info:: Emacs `Info' pages. +* mailto:: Sending email. +* news/nntp/snews:: Usenet news. +* rlogin/telnet/tn3270:: Remote host connectivity. +* irc:: Internet Relay Chat. +* data:: Embedded data URLs. +* nfs:: Networked File System +@c * finger:: +@c * gopher:: +@c * netrek:: +@c * prospero:: +* cid:: Content-ID. +* about:: +* ldap:: Lightweight Directory Access Protocol +* imap:: IMAP mailboxes. +* man:: Unix man pages. +@end menu + +@node http/https +@section @code{http} and @code{https} + +The scheme @code{http} is Hypertext Transfer Protocol. The library +supports version 1.1, specified in RFC 2616. (This supersedes 1.0, +defined in RFC 1945) HTTP URLs have the following form, where most of +the parts are optional: +@example +http://@var{user}:@var{password}@var{host}:@var{port}/@var{path}?@var{searchpart}#@var{fragment} +@end example +@c The @code{:@var{port}} part is optional, and @var{port} defaults to +@c 80. The @code{/@var{path}} part, if present, is a slash-separated +@c series elements. The @code{?@var{searchpart}}, if present, is the +@c query for a search or the content of a form submission. The +@c @code{#fragment} part, if present, is a location in the document. + +The scheme @code{https} is a secure version of @code{http}, with +transmission via SSL. It is defined in RFC 2069. Its default port is +443. This scheme depends on SSL support in Emacs via the +@file{ssl.el} library and is actually implemented by forcing the +@code{ssl} gateway method to be used. @xref{Gateways in general}. + +@defopt url-honor-refresh-requests +This controls honouring of HTTP @samp{Refresh} headers by which +servers can direct clients to reload documents from the same URL or a +or different one. @code{nil} means they will not be honoured, +@code{t} (the default) means they will always be honoured, and +otherwise the user will be asked on each request. +@end defopt + + +@menu +* Cookies:: +* HTTP language/coding:: +* HTTP URL Options:: +* Dealing with HTTP documents:: +@end menu + +@node Cookies +@subsection Cookies + +@defopt url-cookie-file +The file in which cookies are stored, defaulting to @file{cookies} in +the directory specified by @code{url-configuration-directory}. +@end defopt + +@defopt url-cookie-confirmation +Specifies whether confirmation is require to accept cookies. +@end defopt + +@defopt url-cookie-multiple-line +Specifies whether to put all cookies for the server on one line in the +HTTP request to satisfy broken servers like +@url{http://www.hotmail.com}. +@end defopt + +@defopt url-cookie-trusted-urls +A list of regular expressions matching URLs from which to accept +cookies always. +@end defopt + +@defopt url-cookie-untrusted-urls +A list of regular expressions matching URLs from which to reject +cookies always. +@end defopt + +@defopt url-cookie-save-interval +The number of seconds between automatic saves of cookies to disk. +Default is one hour. +@end defopt + + +@node HTTP language/coding +@subsection Language and Encoding Preferences + +HTTP allows clients to express preferences for the language and +encoding of documents which servers may honour. + +@defopt url-mime-charset-string +@cindex character sets +@cindex coding systems +This variable specifies a preference for character sets when documents +can be served in more than one encoding. + +HTTP allows specifying a list of MIME charsets which indicate your +preferred character set encodings, e.g.@: Latin-9 or Big5, and these +can be weighted. In Emacs 21 this list is generated automatically +from the list of defined coding systems which have associated MIME +types. These are sorted by coding priority. @xref{Recognize Coding, +, Recognizing Coding Systems, emacs, GNU Emacs Manual}. +@end defopt + +@defopt url-mime-language-string +@cindex language preferences +A string specifying the preferred language when servers can serve +files in several languages. Use RFC 1766 abbreviations, e.g.@: +@samp{en} for English, @samp{de} for German. It can be a +comma-separated list in descending order of preference. The ordering +can be made explicit using `q' factors defined by HTTP, e.g.@: +@w{@samp{de, en-gb;q=0.8, en;q=0.7}}. It can be @samp{*} to get the +first available language (as opposed to the default). +@end defopt + +@node HTTP URL Options +@subsection HTTP URL Options + +HTTP supports an @samp{OPTIONS} method describing things supported by +the URL@. + +@defun url-http-options url +Returns a property list describing options available for URL. The +property list members are: + +@table @code +@item methods +A list of symbols specifying what HTTP methods the resource +supports. + +@item dav +@cindex DAV +A list of numbers specifying what DAV protocol/schema versions are +supported. + +@item dasl +@cindex DASL +A list of supported DASL search types supported (string form). + +@item ranges +A list of the units available for use in partial document fetches. + +@item p3p +@cindex P3P +The @dfn{Platform For Privacy Protection} description for the resource. +Currently this is just the raw header contents. +@end table + +@end defun + +@node Dealing with HTTP documents +@subsection Dealing with HTTP documents + +HTTP URLs are retrieved into a buffer containing the HTTP headers +followed by the body. Since the headers are quasi-MIME, they may be +processed using the MIME library. @xref{(emacs-mime)Top, The MIME +library}. The MIME library doesn't provide a clean function to do +that, so the URL library does. + +@defun url-decode-text-part handle &optional coding +This function decodes charset-encoded text in the current buffer. In +Emacs, the buffer is expected to be unibyte initially and is set to +multibyte after decoding. +HANDLE is the MIME handle of the original part. CODING is an explicit +coding to use, overriding what the MIME headers specify. +The coding system used for the decoding is returned. + +Note that this function doesn't deal with @samp{http-equiv} charset +specifications in HTML @samp{<meta>} elements. +@end defun + +@node file/ftp +@section file and ftp +@cindex files +@cindex FTP +@cindex File Transfer Protocol +@cindex compressed files +@findex dired + +@example +ftp://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file} +file://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file} +@end example + +These schemes are defined in RFC 1808. +@samp{ftp:} and @samp{file:} are synonomous in this library. They +allow reading arbitary files from hosts. Either @samp{ange-ftp} +(Emacs) or @samp{efs} (XEmacs) is used to retrieve them from remote +hosts. Local files are accessed directly. + +Compressed files are handled, but support is hard-coded so that +@code{jka-compr-compression-info-list} and so on have no affect. +Suffixes recognized are @samp{.z}, @samp{.gz}, @samp{.Z} and +@samp{.bz2}. + +@defopt url-directory-index-file +The filename to look for when indexing a directory, default +@samp{"index.html"}. If this file exists, and is readable, then it +will be viewed instead of using @code{dired} to view the directory. +@end defopt + +@node info +@section info +@cindex Info +@cindex Texinfo +@findex Info-goto-node + +@example +info:@var{file}#@var{node} +@end example + +Info URLs are not officially defined. They invoke +@code{Info-goto-node} with argument @samp{(@var{file})@var{node}}. +@samp{#@var{node}} is optional, defaulting to @samp{Top}. + +@node mailto +@section mailto + +@cindex mailto +@cindex email +A mailto URL will send an email message to the address in the +URL, for example @samp{mailto:foo@@bar.com} would compose a +message to @samp{foo@@bar.com}. + +@defopt url-mail-command +@vindex mail-user-agent +The function called whenever url needs to send mail. This should +normally be left to default from @var{mail-user-agent}. @xref{Mail +Methods, , Mail-Composition Methods, emacs, GNU Emacs Manual}. +@end defopt + +An @samp{X-Url-From} header field containing the URL of the document +that contained the mailto URL is added if that URL is known. + +RFC 2368 extends the definition of mailto URLs in RFC 1738. +The form of a mailto URL is +@example +@samp{mailto:@var{mailbox}[?@var{header}=@var{contents}[&@var{header}=@var{contents}]]} +@end example +@noindent where an arbitary number of @var{header}s can be added. If the +@var{header} is @samp{body}, then @var{contents} is put in the body +otherwise a @var{header} header field is created with @var{contents} +as its contents. Note that the URL library does not consider any +headers `dangerous' so you should check them before sending the +message. + +@c Fixme: update +Email messages are defined in @sc{rfc}822. + +@node news/nntp/snews +@section @code{news}, @code{nntp} and @code{snews} +@cindex news +@cindex network news +@cindex usenet +@cindex NNTP +@cindex snews + +@c draft-gilman-news-url-01 +The network news URL scheme take the following forms following RFC +1738 except that for compatibility with other clients, host and port +fields may be included in news URLs though they are properly only +allowed for nntp an snews. + +@table @samp +@item news:@var{newsgroup} +Retrieves a list of messages in @var{newsgroup}; +@item news:@var{message-id} +Retrieves the message with the given @var{message-id}; +@item news:* +Retrieves a list of all available newsgroups; +@item nntp://@var{host}:@var{port}/@var{newsgroup} +@itemx nntp://@var{host}:@var{port}/@var{message-id} +@itemx nntp://@var{host}:@var{port}/* +Similar to the @samp{news} versions. +@end table + +@samp{:@var{port}} is optional and defaults to :119. + +@samp{snews} is the same as @samp{nntp} except that the default port +is :563. +@cindex SSL +(It is tunnelled through SSL.) + +An @samp{nntp} URL is the same as a news URL, except that the URL may +specify an article by its number. + +@defopt url-news-server +This variable can be used to override the default news server. +Usually this will be set by the Gnus package, which is used to fetch +news. +@cindex environment variable +@vindex NNTPSERVER +It may be set from the conventional environment variable +@code{NNTPSERVER}. +@end defopt + +@node rlogin/telnet/tn3270 +@section rlogin, telnet and tn3270 +@cindex rlogin +@cindex telnet +@cindex tn3270 +@cindex terminal emulation +@findex terminal-emulator + +These URL schemes from RFC 1738 for logon via a terminal emulator have +the form +@example +telnet://@var{user}:@var{password}@@@var{host}:@var{port} +@end example +but the @code{:@var{password}} component is ignored. + +To handle rlogin, telnet and tn3270 URLs, a @code{rlogin}, +@code{telnet} or @code{tn3270} (the program names and arguments are +hardcoded) session is run in a @code{terminal-emulator} buffer. +Well-known ports are used if the URL does not specify a port. + +@node irc +@section irc +@cindex IRC +@cindex Internet Relay Chat +@cindex ZEN IRC +@c Fixme: reference (was http://www.w3.org/Addressing/draft-mirashi-url-irc-01.txt) +@dfn{Internet Relay Chat} (IRC) is handled by handing off the @sc{irc} +session to a function named in @code{url-irc-function}. + +@defopt url-irc-function +A function to actually open an IRC connection. +This function +must take five arguments, @var{host}, @var{port}, @var{channel}, +@var{user} and @var{password}. The @var{channel} argument specifies the +channel to join immediately, this can be @code{nil}. By default this is +@code{url-irc-zenirc}. +@end defopt +@defun url-irc-zenirc host port channel user password +Processes the arguments and lets @code{zenirc} handle the session. +@end defun + +@node data +@section data +@cindex data URLs + +@example +data:@r{[}@var{media-type}@r{]}@r{[};@var{base64}@r{]},@var{data} +@end example + +Data URLs contain MIME data in the URL itself. They are defined in +RFC 2397. + +@var{media-type} is a MIME @samp{Content-Type} string, possibly +including parameters. It defaults to +@samp{text/plain;charset=US-ASCII}. The @samp{text/plain} can be +omitted but the charset parameter supplied. If @samp{;base64} is +present, the @var{data} are base64-encoded. + +@node nfs +@section nfs +@cindex NFS +@cindex Network File System +@cindex automounter + +@example +nfs://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file} +@end example + +The @samp{nfs:} scheme is defined in RFC 2224. It is similar to +@samp{ftp:} except that it points to a file on a remote host that is +handled by the automounter on the local host. + +@defvar url-nfs-automounter-directory-spec +@end defvar +A string saying how to invoke the NFS automounter. Certain @samp{%} +sequences are recognized: + +@table @samp +@item %h +The hostname of the NFS server; +@item %n +The port number of the NFS server; +@item %u +The username to use to authenticate; +@item %p +The password to use to authenticate; +@item %f +The filename on the remote server; +@item %% +A literal @samp{%}. +@end table + +Each can be used any number of times. + +@node cid +@section cid +@cindex Content-ID + +RFC 2111 + +@node about +@section about + +@node ldap +@section ldap +@cindex LDAP +@cindex Lightweight Directory Access Protocol + +The LDAP scheme is defined in RFC 2255. + +@node imap +@section imap +@cindex IMAP + +RFC 2192 + +@node man +@section man +@cindex @command{man} +@cindex Unix man pages +@findex man + +@example +@samp{man:@var{page-spec}} +@end example + +This is a non-standard scheme. @var{page-spec} is passed directly to +the Lisp @code{man} function. + +@node Defining New URLs +@chapter Defining New URLs + +@menu +* Naming conventions:: +* Required functions:: +* Optional functions:: +* Asynchronous fetching:: +* Supporting file-name-handlers:: +@end menu + +@node Naming conventions +@section Naming conventions + +@node Required functions +@section Required functions + +@node Optional functions +@section Optional functions + +@node Asynchronous fetching +@section Asynchronous fetching + +@node Supporting file-name-handlers +@section Supporting file-name-handlers + +@node General Facilities +@chapter General Facilities + +@menu +* Disk Caching:: +* Proxies:: +* Gateways in general:: +* History:: +@end menu + +@node Disk Caching +@section Disk Caching +@cindex Caching +@cindex Persistent Cache +@cindex Disk Cache + +The disk cache stores retrieved documents locally, whence they can be +retrieved more quickly. When requesting a URL that is in the cache, +the library checks to see if the page has changed since it was last +retrieved from the remote machine. If not, the local copy is used, +saving the transmission over the network. +@cindex Cleaning the cache +@cindex Clearing the cache +@cindex Cache cleaning +Currently the cache isn't cleared automatically. +@c Running the @code{clean-cache} shell script +@c fist is recommended, to allow for future cleaning of the cache. This +@c shell script will remove all files that have not been accessed since it +@c was last run. To keep the cache pared down, it is recommended that this +@c script be run from @i{at} or @i{cron} (see the manual pages for +@c crontab(5) or at(1) for more information) + +@defopt url-automatic-caching +Setting this variable non-@code{nil} causes documents to be cached +automatically. +@end defopt + +@defopt url-cache-directory +This variable specifies the +directory to store the cache files. It defaults to sub-directory +@file{cache} of @code{url-configuration-directory}. +@end defopt + +@c Fixme: function v. option, but neither used. +@c @findex url-cache-expired +@c @defopt url-cache-expired +@c This is a function to decide whether or not a cache entry has expired. +@c It takes two times as it parameters and returns non-@code{nil} if the +@c second time is ``too old'' when compared with the first time. +@c @end defopt + +@defopt url-cache-creation-function +The cache relies on a scheme for mapping URLs to files in the cache. +This variable names a function which sets the type of cache to use. +It takes a URL as argument and returns the absolute file name of the +corresponding cache file. The two supplied possibilities are +@code{url-cache-create-filename-using-md5} and +@code{url-cache-create-filename-human-readable}. +@end defopt + +@defun url-cache-create-filename-using-md5 url +Creates a cache file name from @var{url} using MD5 hashing. +@findex md5 +This is creates entries with very few cache collisions and is fast if +you have the @code{md5} function as a primitive (Emacs 21 and XEmacs). +@smallexample +(url-cache-create-filename-using-md5 "http://www.example.com/foo/bar") + @result{} "/home/fx/.url/cache/fx/http/com/example/www/b8a35774ad20db71c7c3409a5410e74f" +@end smallexample +@end defun + +@defun url-cache-create-filename-human-readable url +Creates a cache file name from @var{url} more obviously connected to +@var{url} than for @code{url-cache-create-filename-using-md5}, but +more likely to conflict with other files. +@smallexample +(url-cache-create-filename-human-readable "http://www.example.com/foo/bar") + @result{} "/home/fx/.url/cache/fx/http/com/example/www/foo/bar" +@end smallexample +@end defun + +@c Fixme: never actually used currently? +@c @defopt url-standalone-mode +@c @cindex Relying on cache +@c @cindex Cache only mode +@c @cindex Standalone mode +@c If this variable is non-@code{nil}, the library relies solely on the +@c cache for fetching documents and avoids checking if they have changed +@c on remote servers. +@c @end defopt + +@c With a large cache of documents on the local disk, it can be very handy +@c when traveling, or any other time the network connection is not active +@c (a laptop with a dial-on-demand PPP connection, etc). Emacs/W3 can rely +@c solely on its cache, and avoid checking to see if the page has changed +@c on the remote server. In the case of a dial-on-demand PPP connection, +@c this will keep the phone line free as long as possible, only bringing up +@c the PPP connection when asking for a page that is not located in the +@c cache. This is very useful for demonstrations as well. + +@node Proxies +@section Proxies and Gatewaying + +@c fixme: check/document url-ns stuff +@cindex proxy servers +@cindex proxies +@cindex environment variables +@vindex HTTP_PROXY +Proxy servers are commonly used to provide gateways through firewalls +or as caches serving some more-or-less local network. Each protocol +(HTTP, FTP, etc.)@: can have a different gateway server. Proxying is +conventionally configured commonly amongst different programs through +environment variables of the form @code{@var{protocol}_proxy}, where +@var{protocol} is one of the supported network protocols (@code{http}, +@code{ftp} etc.). The library recognizes such variables in either +upper or lower case. Their values are of one of the forms: +@itemize @bullet +@item @code{@var{host}:@var{port}} +@item A full URL; +@item Simply a host name. +@end itemize + +@vindex NO_PROXY +The @code{NO_PROXY} environment variable specifies URLs that should be +excluded from proxying (on servers that should be contacted directly). +This should be a comma-separated list of hostnames, domain names, or a +mixture of both. Asterisks can be used as wildcards, but other +clients may not support that. Domain names may be indicated by a +leading dot. For example: +@example +NO_PROXY="*.aventail.com,home.com,.seanet.com" +@end example +@noindent says to contact all machines in the @samp{aventail.com} and +@samp{seanet.com} domains directly, as well as the machine named +@samp{home.com}. If @code{NO_PROXY} isn't defined, @code{no_PROXY} +and @code{no_proxy} are also tried, in that order. + +Proxies may also be specified directly in Lisp. + +@defopt url-proxy-services +This variable is an alist of URL schemes and proxy servers that +gateway them. The items are of the form @w{@code{(@var{scheme} +. @var{host}:@var{portnumber})}}, says that the URL @var{scheme} is +gatewayed through @var{portnumber} on the specified @var{host}. An +exception is the pseudo scheme @code{"no_proxy"}, which is paired with +a regexp matching host names not to be proxied. This variable is +initialized from the environment as above. + +@example +(setq url-proxy-services + '(("http" . "proxy.aventail.com:80") + ("no_proxy" . "^.*\\(aventail\\|seanet\\)\\.com"))) +@end example +@end defopt + +@node Gateways in general +@section Gateways in General +@cindex gateways +@cindex firewalls + +The library provides a general gateway layer through which all +networking passes. It can both control access to the network and +provide access through gateways in firewalls. This may make direct +connexions in some cases and pass through some sort of gateway in +others.@footnote{Proxies (which only operate over HTTP) are +implemented using this.} The library's basic function responsible for +making connexions is @code{url-open-stream}. + +@defun url-open-stream name buffer host service +@cindex opening a stream +@cindex stream, opening +Open a stream to @var{host}, possibly via a gateway. The other +arguments are as for @code{open-network-stream}. This will not make a +connexion if @code{url-gateway-unplugged} is non-@code{nil}. +@end defun + +@defvar url-gateway-local-host-regexp +This is a regular expression that matches local hosts that do not +require the use of a gateway. If @code{nil}, all connexions are made +through the gateway. +@end defvar + +@defvar url-gateway-method +This variable controls which gateway method is used. It may be useful +to bind it temporarily in some applications. It has values taken from +a list of symbols. Possible values are: + +@table @code +@item telnet +@cindex @command{telnet} +Use this method if you must first telnet and log into a gateway host, +and then run telnet from that host to connect to outside machines. + +@item rlogin +@cindex @command{rlogin} +This method is identical to @code{telnet}, but uses @command{rlogin} +to log into the remote machine without having to send the username and +password over the wire every time. + +@item socks +@cindex @sc{socks} +Use if the firewall has a @sc{socks} gateway running on it. The +@sc{socks} v5 protocol is defined in RFC 1928. + +@c @item ssl +@c This probably shouldn't be documented +@c Fixme: why not? -- fx + +@item native +This method uses Emacs's builtin networking directly. This is the +default. It can be used only if there is no firewall blocking access. +@end table +@end defvar + +The following variables control the gateway methods. + +@defopt url-gateway-telnet-host +The gateway host to telnet to. Once logged in there, you then telnet +out to the hosts you want to connect to. +@end defopt +@defopt url-gateway-telnet-parameters +This should be a list of parameters to pass to the @command{telnet} program. +@end defopt +@defopt url-gateway-telnet-password-prompt +This is a regular expression that matches the password prompt when +logging in. +@end defopt +@defopt url-gateway-telnet-login-prompt +This is a regular expression that matches the username prompt when +logging in. +@end defopt +@defopt url-gateway-telnet-user-name +The username to log in with. +@end defopt +@defopt url-gateway-telnet-password +The password to send when logging in. +@end defopt +@defopt url-gateway-prompt-pattern +This is a regular expression that matches the shell prompt. +@end defopt + +@defopt url-gateway-rlogin-host +Host to @samp{rlogin} to before telnetting out. +@end defopt +@defopt url-gateway-rlogin-parameters +Parametres to pass to @samp{rsh}. +@end defopt +@defopt url-gateway-rlogin-user-name +User name to use when logging in to the gateway. +@end defopt +@defopt url-gateway-prompt-pattern +This is a regular expression that matches the shell prompt. +@end defopt + +@defopt socks-server +This specifies the default server, it takes the form +@w{@code{("Default server" @var{server} @var{port} @var{version})}} +where @var{version} can be either 4 or 5. +@end defopt +@defvar socks-password +If this is @code{nil} then you will be asked for the passward, +otherwise it will be used as the password for authenticating you to +the @sc{socks} server. +@end defvar +@defvar socks-username +This is the username to use when authenticating yourself to the +@sc{socks} server. By default this is your login name. +@end defvar +@defvar socks-timeout +This controls how long, in seconds, to wait for responses from the +@sc{socks} server; it is 5 by default. +@end defvar +@c fixme: these have been effectively commented-out in the code +@c @defopt socks-server-aliases +@c This a list of server aliases. It is a list of aliases of the form +@c @var{(alias hostname port version)}. +@c @end defopt +@c @defopt socks-network-aliases +@c This a list of network aliases. Each entry in the list takes the form +@c @var{(alias (network))} where @var{alias} is a string that names the +@c @var{network}. The networks can contain a pair (not a dotted pair) of +@c @sc{ip} addresses which specify a range of @sc{ip} addresses, an @sc{ip} +@c address and a netmask, a domain name or a unique hostname or @sc{ip} +@c address. +@c @end defopt +@c @defopt socks-redirection-rules +@c This a list of redirection rules. Each rule take the form +@c @var{(Destination network Connection type)} where @var{Destination +@c network} is a network alias from @code{socks-network-aliases} and +@c @var{Connection type} can be @code{nil} in which case a direct +@c connection is used, or it can be an alias from +@c @code{socks-server-aliases} in which case that server is used as a +@c proxy. +@c @end defopt +@defopt socks-nslookup-program +@cindex @command{nslookup} +This the @samp{nslookup} program. It is @code{"nslookup"} by default. +@end defopt + +@menu +* Suppressing network connexions:: +@end menu +@c * Broken hostname resolution:: + +@node Suppressing network connexions +@subsection Suppressing Network Connexions + +@cindex network connexions, suppressing +@cindex suppressing network connexions +@cindex bugs, HTML +@cindex HTML `bugs' +In some circumstances it is desirable to suppress making network +connexions. A typical case is when rendering HTML in a mail user +agent, when external URLs should not be activated, particularly to +avoid `bugs' which `call home' by fetch single-pixel images and the +like. To arrange this, bind the following variable for the duration +of such processing. + +@defvar url-gateway-unplugged +If this variable is non-@code{nil} new network connexions are never +opened by the URL library. +@end defvar + +@c @node Broken hostname resolution +@c @subsection Broken Hostname Resolution + +@c @cindex hostname resolver +@c @cindex resolver, hostname +@c Some C libraries do not include the hostname resolver routines in +@c their static libraries. If Emacs was linked statically, and was not +@c linked with the resolver libraries, it wil not be able to get to any +@c machines off the local network. This is characterized by being able +@c to reach someplace with a raw ip number, but not its hostname +@c (@url{http://129.79.254.191/} works, but +@c @url{http://www.cs.indiana.edu/} doesn't). This used to happen on +@c SunOS4 and Ultrix, but is now probably now rare. If Emacs can't be +@c rebuilt linked against the resolver library, it can use the external +@c @command{nslookup} program instead. + +@c @defopt url-gateway-broken-resolution +@c @cindex @code{nslookup} program +@c @cindex program, @code{nslookup} +@c If non-@code{nil}, this variable says to use the program specified by +@c @code{url-gateway-nslookup-program} program to do hostname resolution. +@c @end defopt + +@c @defopt url-gateway-nslookup-program +@c The name of the program to do hostname lookup if Emacs can't do it +@c directly. This program should expect a single argument on the command +@c line---the hostname to resolve---and should produce output similar to +@c the standard Unix @command{nslookup} program: +@c @example +@c Name: www.cs.indiana.edu +@c Address: 129.79.254.191 +@c @end example +@c @end defopt + +@node History +@section History + +The library can maintain a global history list tracking URLs accessed. +URL completion can be done from it. The history mechanism is set up +@findex url-do-setup +automatically via @code{url-do-setup} when it is configured to be on. +Note that the size of the history list is currently not limited. + +@vindex url-history-hash-table +The history `list' is actually a hash table, +@code{url-history-hash-table}. It contains access times keyed by URL +strings. The times are in the format returned by @code{current-time}. + +@defun url-history-update-url url time +This function updates the hsitory table with an entry for @var{url} +accessed at the gievn @var{time}. +@end defun + +@defopt url-history-track +If non-@code{nil}, the library will keep track of all the URLs +accessed. If is is @code{t}, the list is saved to disk at the end of +each Emacs session. The default is @code{nil}. +@end defopt + +@defopt url-history-file +The file storing the history list between sessions. It defaults to +@file{history} in @code{url-configuration-directory}. +@end defopt + +@defopt url-history-save-interval +@findex url-history-setup-save-timer +The number of seconds between automatic saves of the history list. +Default is one hour. Note that if you change this variable directly, +rather than using Custom, after @code{url-do-setup} has been run, you +need to run the function @code{url-history-setup-save-timer}. +@end defopt + +@defun url-history-parse-history &optional fname +Parses the history file @var{fname} (default @code{url-history-file}) +and sets up the history list. +@end defun + +@defun url-history-save-history &optional fname +Saves the current history to file @var{fname} (default +@code{url-history-file}). +@end defun + +@defun url-completion-function string predicate function +You can use this function to do completion of URLs from the history. +@end defun + +@node Customization +@chapter Customization + +@section Environment Variables + +@cindex environment variables +The following environment variables affect the library's operation at +startup. + +@table @code +@item TMPDIR +@vindex TMPDIR +@vindex url-temporary-directory +If this is defined, @var{url-temporary-directory} is initialized from +it. +@end table + +@section General User Options + +The following user options, settable with Customize, affect the +general operation of the package. + +@defopt url-debug +@cindex debugging +Specifies the types of debug messages the library which are logged to +the @code{*URL-DEBUG*} buffer. +@code{t} means log all messages. +A number means log all messages and show them with @code{message}. +If may also be a list of the types of messages to be logged. +@end defopt +@defopt url-personal-mail-address +@end defopt +@defopt url-privacy-level +@end defopt +@defopt url-uncompressor-alist +@end defopt +@defopt url-passwd-entry-func +@end defopt +@defopt url-standalone-mode +@end defopt +@defopt url-bad-port-list +@end defopt +@defopt url-max-password-attempts +@end defopt +@defopt url-temporary-directory +@end defopt +@defopt url-show-status +@end defopt +@defopt url-confirmation-func +The function to use for asking yes or no functions. This is normally +either @code{y-or-n-p} or @code{yes-or-no-p}, but could be another +function taking a single argument (the prompt) and returning @code{t} +only if an affirmative answer is given. +@end defopt +@defopt url-gateway-method +@c fixme: describe gatewaying +A symbol specifying the type of gateway support to use fro connexions +from the local machine. The supported methods are: + +@table @code +@item telnet +Run telnet in a subprocess to connect; +@item rlogin +Rlogin to another machine to connect; +@item socks +Connect through a socks server; +@item ssl +Connect with SSL; +@item native +Connect directly. +@end table +@end defopt + +@node Function Index +@unnumbered Command and Function Index +@printindex fn + +@node Variable Index +@unnumbered Variable Index +@printindex vr + +@node Concept Index +@unnumbered Concept Index +@printindex cp + +@setchapternewpage odd +@contents +@bye + +@ignore + arch-tag: c96be356-7e2d-4196-bcda-b13246c5c3f0 +@end ignore
--- a/src/ChangeLog Wed Dec 08 22:20:27 2004 +0000 +++ b/src/ChangeLog Wed Dec 08 22:21:07 2004 +0000 @@ -1,3 +1,19 @@ +2004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> + + * emacs.c (Fdump_emacs): Add ! defined (SYSTEM_MALLOC) around + reset_malloc_hooks. + + * keyboard.c (handle_async_input, input_available_signal): Add + ! defined (SYSTEM_MALLOC) around thread code. + + * alloc.c: Add comment about the reason for (UN)BLOCK_INPUT_ALLOC. + +2004-12-07 Stefan <monnier@iro.umontreal.ca> + + * eval.c (init_eval_once): Increase max_specpdl_size to 1000. + + * config.in: Regenerate. + 2004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> * xmenu.c (Fx_popup_menu): Correct documentation about position. @@ -100,13 +116,10 @@ 2004-11-30 Kenichi Handa <handa@m17n.org> - * term.c (encode_terminal_buf, encode_terminal_bufsize): New - variables. + * term.c (encode_terminal_buf, encode_terminal_bufsize): New variables. (encode_terminal_code): Argument changed. Encode all - characters at once, and return a pointer to the result of - encoding. - (write_glyphs): Decide coding here. Adjusted for the above - change. + characters at once, and return a pointer to the result of encoding. + (write_glyphs): Decide coding here. Adjusted for the above change. (insert_glyphs): Likewise. (term_init): Initialize encode_terminal_bufsize to 0.
--- a/src/alloc.c Wed Dec 08 22:20:27 2004 +0000 +++ b/src/alloc.c Wed Dec 08 22:21:07 2004 +0000 @@ -91,6 +91,23 @@ #if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD) +/* When GTK uses the file chooser dialog, different backends can be loaded + dynamically. One such a backend is the Gnome VFS backend that gets loaded + if you run Gnome. That backend creates several threads and also allocates + memory with malloc. + + If Emacs sets malloc hooks (! SYSTEM_MALLOC) and the emacs_blocked_* + functions below are called from malloc, there is a chance that one + of these threads preempts the Emacs main thread and the hook variables + end up in a inconsistent state. So we have a mutex to prevent that (note + that the backend handles concurrent access to malloc within its own threads + but Emacs code running in the main thread is not included in that control). + + When UNBLOCK_INPUT is called, revoke_input_signal may be called. If this + happens in one of the backend threads we will have two threads that tries + to run Emacs code at once, and the code is not prepared for that. + To prevent that, we only call BLOCK/UNBLOCK from the main thread. */ + static pthread_mutex_t alloc_mutex; pthread_t main_thread;
--- a/src/config.in Wed Dec 08 22:20:27 2004 +0000 +++ b/src/config.in Wed Dec 08 22:21:07 2004 +0000 @@ -1,7 +1,8 @@ /* src/config.in. Generated from configure.in by autoheader. */ /* GNU Emacs site configuration template file. - Copyright (C) 1988, 93, 94, 99, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1988, 1993, 1994, 1999, 2000, 2002, 2004 + Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -775,9 +776,9 @@ /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if you have the ANSI C header files. */ @@ -932,7 +933,7 @@ /* Don't try to switch on inline handling as detected by AC_C_INLINE generally, because even if non-gcc compilers accept `inline', they may reject `extern inline'. */ -#ifdef __GNUC__ +#if defined (__GNUC__) && defined (OPTIMIZE) #define INLINE __inline__ #else #define INLINE @@ -980,7 +981,13 @@ /* Tell regex.c to use a type compatible with Emacs. */ #define RE_TRANSLATE_TYPE Lisp_Object #define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C) -#define RE_TRANSLATE_P(TBL) (XFASTINT (TBL) != 0) +#ifdef make_number +/* If make_number is a macro, use it. */ +#define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0))) +#else +/* If make_number is a function, avoid it. */ +#define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0)) +#endif #endif /* Avoid link-time collision with system mktime if we will use our own. */
--- a/src/emacs.c Wed Dec 08 22:20:27 2004 +0000 +++ b/src/emacs.c Wed Dec 08 22:21:07 2004 +0000 @@ -2237,7 +2237,7 @@ memory_warnings (my_edata, malloc_warning); #endif /* not WINDOWSNT */ #endif -#ifdef HAVE_GTK_AND_PTHREAD +#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD) /* Pthread may call malloc before main, and then we will get an endless loop, because pthread_self (see alloc.c) calls malloc the first time it is called on some systems. */
--- a/src/eval.c Wed Dec 08 22:20:27 2004 +0000 +++ b/src/eval.c Wed Dec 08 22:21:07 2004 +0000 @@ -204,7 +204,7 @@ specpdl_size = 50; specpdl = (struct specbinding *) xmalloc (specpdl_size * sizeof (struct specbinding)); specpdl_ptr = specpdl; - max_specpdl_size = 650; + max_specpdl_size = 1000; max_lisp_eval_depth = 300; Vrun_hooks = Qnil;
--- a/src/keyboard.c Wed Dec 08 22:20:27 2004 +0000 +++ b/src/keyboard.c Wed Dec 08 22:21:07 2004 +0000 @@ -6849,7 +6849,7 @@ #ifdef BSD4_1 extern int select_alarmed; #endif -#ifdef HAVE_GTK_AND_PTHREAD +#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD) extern pthread_t main_thread; if (pthread_self () != main_thread) { @@ -6895,7 +6895,7 @@ { /* Must preserve main program's value of errno. */ int old_errno = errno; -#ifdef HAVE_GTK_AND_PTHREAD +#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD) extern pthread_t main_thread; if (pthread_self () != main_thread) {