aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2004-12-08 22:21:07 +0000
committerKaroly Lorentey2004-12-08 22:21:07 +0000
commitb3be62d4c924fd8aa8b6fdfa96b03a015c586285 (patch)
tree84d262494fc16e4a13f68dad39f2bbcd566a98d4
parentfad2f6858075f49c4c8fd16f0535c287e3f14ac3 (diff)
parent3073399bdafd5283661fae867983d0d30c7f2536 (diff)
downloademacs-b3be62d4c924fd8aa8b6fdfa96b03a015c586285.tar.gz
emacs-b3be62d4c924fd8aa8b6fdfa96b03a015c586285.zip
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
-rw-r--r--ChangeLog7
-rw-r--r--configure.in15
-rw-r--r--etc/TODO2
-rw-r--r--lisp/ChangeLog32
-rw-r--r--lisp/calc/calc-aent.el67
-rw-r--r--lisp/calc/calc-ext.el67
-rw-r--r--lisp/calc/calc.el2
-rw-r--r--lisp/edmacro.el9
-rw-r--r--lisp/gnus/ChangeLog86
-rw-r--r--lisp/gnus/canlock.el4
-rw-r--r--lisp/gnus/deuglify.el4
-rw-r--r--lisp/gnus/gnus-art.el10
-rw-r--r--lisp/gnus/gnus-registry.el4
-rw-r--r--lisp/gnus/gnus-score.el2
-rw-r--r--lisp/gnus/gnus-start.el2
-rw-r--r--lisp/gnus/gnus-sum.el8
-rw-r--r--lisp/gnus/gnus-util.el12
-rw-r--r--lisp/gnus/message.el29
-rw-r--r--lisp/gnus/nnfolder.el11
-rw-r--r--lisp/gnus/nnmail.el2
-rw-r--r--lisp/gnus/nnrss.el10
-rw-r--r--lisp/gnus/pop3.el32
-rw-r--r--lisp/gnus/rfc2047.el2
-rw-r--r--lisp/gnus/spam-report.el2
-rw-r--r--lisp/gnus/spam.el238
-rw-r--r--lisp/isearch.el2
-rw-r--r--lisp/mouse.el4
-rw-r--r--lisp/textmodes/org.el2
-rw-r--r--man/ChangeLog22
-rw-r--r--man/Makefile.in9
-rw-r--r--man/frames.texi6
-rw-r--r--man/gnus.texi16
-rw-r--r--man/message.texi1
-rw-r--r--man/url.texi1187
-rw-r--r--src/ChangeLog25
-rw-r--r--src/alloc.c17
-rw-r--r--src/config.in19
-rw-r--r--src/emacs.c2
-rw-r--r--src/eval.c2
-rw-r--r--src/keyboard.c4
40 files changed, 1684 insertions, 293 deletions
diff --git a/ChangeLog b/ChangeLog
index 192f56b1de0..5edfc069552 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,11 @@
12004-12-07 Stefan <monnier@iro.umontreal.ca>
2
3 * configure.in (INLINE, RE_TRANSLATE_P): Move patches mistakenly
4 committed to src/config.in.
5
12004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 62004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2 7
3 * configure.in: If $HAVE_GTK_FILE_CHOOSER = yes, check for 8 * configure.in: If $HAVE_GTK_FILE_CHOOSER = yes, check for
4 pthreads and define HAVE_GTK_AND_PTHREAD. 9 pthreads and define HAVE_GTK_AND_PTHREAD.
5 * configure: Regenerate. 10 * configure: Regenerate.
6 11
diff --git a/configure.in b/configure.in
index 34f268c7160..9c1c08a7fbb 100644
--- a/configure.in
+++ b/configure.in
@@ -3,7 +3,7 @@ dnl To rebuild the `configure' script from this, execute the command
3dnl autoconf 3dnl autoconf
4dnl in the directory containing this script. 4dnl in the directory containing this script.
5dnl 5dnl
6dnl Copyright (C) 1994, 95, 96, 1999, 2000, 01, 02, 03, 2004 6dnl Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003, 2004
7dnl Free Software Foundation, Inc. 7dnl Free Software Foundation, Inc.
8dnl 8dnl
9dnl This file is part of GNU Emacs. 9dnl This file is part of GNU Emacs.
@@ -2767,7 +2767,8 @@ if test "${REL_ALLOC}" = "yes" ; then
2767fi 2767fi
2768 2768
2769AH_TOP([/* GNU Emacs site configuration template file. 2769AH_TOP([/* GNU Emacs site configuration template file.
2770 Copyright (C) 1988, 93, 94, 99, 2000, 2002 Free Software Foundation, Inc. 2770 Copyright (C) 1988, 1993, 1994, 1999, 2000, 2002, 2004
2771 Free Software Foundation, Inc.
2771 2772
2772This file is part of GNU Emacs. 2773This file is part of GNU Emacs.
2773 2774
@@ -2848,7 +2849,7 @@ AH_BOTTOM([
2848/* Don't try to switch on inline handling as detected by AC_C_INLINE 2849/* Don't try to switch on inline handling as detected by AC_C_INLINE
2849 generally, because even if non-gcc compilers accept `inline', they 2850 generally, because even if non-gcc compilers accept `inline', they
2850 may reject `extern inline'. */ 2851 may reject `extern inline'. */
2851#ifdef __GNUC__ 2852#if defined (__GNUC__) && defined (OPTIMIZE)
2852#define INLINE __inline__ 2853#define INLINE __inline__
2853#else 2854#else
2854#define INLINE 2855#define INLINE
@@ -2896,7 +2897,13 @@ AH_BOTTOM([
2896/* Tell regex.c to use a type compatible with Emacs. */ 2897/* Tell regex.c to use a type compatible with Emacs. */
2897#define RE_TRANSLATE_TYPE Lisp_Object 2898#define RE_TRANSLATE_TYPE Lisp_Object
2898#define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C) 2899#define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
2899#define RE_TRANSLATE_P(TBL) (XFASTINT (TBL) != 0) 2900#ifdef make_number
2901/* If make_number is a macro, use it. */
2902#define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
2903#else
2904/* If make_number is a function, avoid it. */
2905#define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
2906#endif
2900#endif 2907#endif
2901 2908
2902/* Avoid link-time collision with system mktime if we will use our own. */ 2909/* Avoid link-time collision with system mktime if we will use our own. */
diff --git a/etc/TODO b/etc/TODO
index 9e467856d6d..f1c091af77e 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -318,8 +318,6 @@ to the FSF.
318 318
319* Internal changes 319* Internal changes
320 320
321** Replace Emacs's regex.c with the new DFA-based glibc regex code.
322
323** Replace gmalloc.c with the modified Doug Lea code from the current 321** Replace gmalloc.c with the modified Doug Lea code from the current
324 GNU libc so that the special mmapping of buffers can be removed -- 322 GNU libc so that the special mmapping of buffers can be removed --
325 that apparently loses under Solaris, at least. [fx has mostly done 323 that apparently loses under Solaris, at least. [fx has mostly done
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c0dcb40fc4a..47cf7a9ba85 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,8 +1,34 @@
12004-12-06 Stefan <monnier@iro.umontreal.ca> 12004-12-08 Jay Belanger <belanger@truman.edu>
2
3 * calc/calc.el: Add math-read-preprocess-string to autoloads.
4
5 * calc/calc-ext.el (math-read-replacement-list)
6 (math-read-superscripts, math-read-preprocess-string): Move to
7 calc-aent.el.
8
9 * calc/calc-aent.el (math-read-replacement-list)
10 (math-read-superscripts, math-read-preprocess-string): Move from
11 calc-ext.el.
12
132004-12-07 Stefan Monnier <monnier@iro.umontreal.ca>
14
15 * isearch.el (isearch-quote-char): Fix up typo in last change.
16
172004-12-07 Luc Teirlinck <teirllm@auburn.edu>
18
19 * mouse.el (mouse-set-font): Handle the case where the command was
20 not invoked using the mouse.
21
22 * edmacro.el: `edit-kbd-macro' is now bound to `C-x C-k e'.
23 (edmacro-finish-edit): Further update for keyboard macros that are
24 lambda forms.
25 (edmacro-sanitize-for-string): Correctly remove Meta modifier
26 (as suggested by Kim Storm).
27
282004-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
2 29
3 * font-lock.el (font-lock-unfontify-region): Save buffer state. 30 * font-lock.el (font-lock-unfontify-region): Save buffer state.
4 (font-lock-default-unfontify-region): Don't save buffer state any 31 (font-lock-default-unfontify-region): Don't save buffer state any more.
5 more.
6 32
72004-12-07 Jay Belanger <belanger@truman.edu> 332004-12-07 Jay Belanger <belanger@truman.edu>
8 34
diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el
index 4c62e570349..c062a822e89 100644
--- a/lisp/calc/calc-aent.el
+++ b/lisp/calc/calc-aent.el
@@ -465,6 +465,73 @@ T means abort and give an error message.")
465 465
466;;; Algebraic expression parsing. [Public] 466;;; Algebraic expression parsing. [Public]
467 467
468(defvar math-read-replacement-list
469 '(;; Misc symbols
470 ("±" "+/-") ; plus or minus
471 ("×" "*") ; multiplication sign
472 ("÷" ":") ; division sign
473 ("−" "-") ; subtraction sign
474 ("∕" "/") ; division sign
475 ("∗" "*") ; asterisk multiplication
476 ("∞" "inf") ; infinity symbol
477 ("≤" "<=")
478 ("≥" ">=")
479 ("≦" "<=")
480 ("≧" ">=")
481 ;; fractions
482 ("¼" "(1:4)") ; 1/4
483 ("½" "(1:2)") ; 1/2
484 ("¾" "(3:4)") ; 3/4
485 ("⅓" "(1:3)") ; 1/3
486 ("⅔" "(2:3)") ; 2/3
487 ("⅕" "(1:5)") ; 1/5
488 ("⅖" "(2:5)") ; 2/5
489 ("⅗" "(3:5)") ; 3/5
490 ("⅘" "(4:5)") ; 4/5
491 ("⅙" "(1:6)") ; 1/6
492 ("⅚" "(5:6)") ; 5/6
493 ("⅛" "(1:8)") ; 1/8
494 ("⅜" "(3:8)") ; 3/8
495 ("⅝" "(5:8)") ; 5/8
496 ("⅞" "(7:8)") ; 7/8
497 ("⅟" "1:") ; 1/...
498 ;; superscripts
499 ("⁰" "0") ; 0
500 ("¹" "1") ; 1
501 ("²" "2") ; 2
502 ("³" "3") ; 3
503 ("⁴" "4") ; 4
504 ("⁵" "5") ; 5
505 ("⁶" "6") ; 6
506 ("⁷" "7") ; 7
507 ("⁸" "8") ; 8
508 ("⁹" "9") ; 9
509 ("⁺" "+") ; +
510 ("⁻" "-") ; -
511 ("⁽" "(") ; (
512 ("⁾" ")") ; )
513 ("ⁿ" "n") ; n
514 ("ⁱ" "i")) ; i
515 "A list whose elements (old new) indicate replacements to make
516in Calc algebraic input.")
517
518(defvar math-read-superscripts
519 "⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁽⁾ⁿⁱ" ; 0123456789+-()ni
520 "A string consisting of the superscripts allowed by Calc.")
521
522(defun math-read-preprocess-string (str)
523 "Replace some substrings of STR by Calc equivalents."
524 (setq str
525 (replace-regexp-in-string (concat "[" math-read-superscripts "]+")
526 "^(\\&)" str))
527 (let ((rep-list math-read-replacement-list))
528 (while rep-list
529 (setq str
530 (replace-regexp-in-string (nth 0 (car rep-list))
531 (nth 1 (car rep-list)) str))
532 (setq rep-list (cdr rep-list))))
533 str)
534
468;; The next few variables are local to math-read-exprs (and math-read-expr 535;; The next few variables are local to math-read-exprs (and math-read-expr
469;; in calc-ext.el), but are set in functions they call. 536;; in calc-ext.el), but are set in functions they call.
470 537
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index d308a391a05..89588b4ea74 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -2874,73 +2874,6 @@ calc-kill calc-kill-region calc-yank))))
2874 2874
2875(defvar math-expr-data) 2875(defvar math-expr-data)
2876 2876
2877(defvar math-read-replacement-list
2878 '(;; Misc symbols
2879 ("±" "+/-") ; plus or minus
2880 ("×" "*") ; multiplication sign
2881 ("÷" ":") ; division sign
2882 ("−" "-") ; subtraction sign
2883 ("∕" "/") ; division sign
2884 ("∗" "*") ; asterisk multiplication
2885 ("∞" "inf") ; infinity symbol
2886 ("≤" "<=")
2887 ("≥" ">=")
2888 ("≦" "<=")
2889 ("≧" ">=")
2890 ;; fractions
2891 ("¼" "(1:4)") ; 1/4
2892 ("½" "(1:2)") ; 1/2
2893 ("¾" "(3:4)") ; 3/4
2894 ("⅓" "(1:3)") ; 1/3
2895 ("⅔" "(2:3)") ; 2/3
2896 ("⅕" "(1:5)") ; 1/5
2897 ("⅖" "(2:5)") ; 2/5
2898 ("⅗" "(3:5)") ; 3/5
2899 ("⅘" "(4:5)") ; 4/5
2900 ("⅙" "(1:6)") ; 1/6
2901 ("⅚" "(5:6)") ; 5/6
2902 ("⅛" "(1:8)") ; 1/8
2903 ("⅜" "(3:8)") ; 3/8
2904 ("⅝" "(5:8)") ; 5/8
2905 ("⅞" "(7:8)") ; 7/8
2906 ("⅟" "1:") ; 1/...
2907 ;; superscripts
2908 ("⁰" "0") ; 0
2909 ("¹" "1") ; 1
2910 ("²" "2") ; 2
2911 ("³" "3") ; 3
2912 ("⁴" "4") ; 4
2913 ("⁵" "5") ; 5
2914 ("⁶" "6") ; 6
2915 ("⁷" "7") ; 7
2916 ("⁸" "8") ; 8
2917 ("⁹" "9") ; 9
2918 ("⁺" "+") ; +
2919 ("⁻" "-") ; -
2920 ("⁽" "(") ; (
2921 ("⁾" ")") ; )
2922 ("ⁿ" "n") ; n
2923 ("ⁱ" "i")) ; i
2924 "A list whose elements (old new) indicate replacements to make
2925in Calc algebraic input.")
2926
2927(defvar math-read-superscripts
2928 "⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁽⁾ⁿⁱ" ; 0123456789+-()ni
2929 "A string consisting of the superscripts allowed by Calc.")
2930
2931(defun math-read-preprocess-string (str)
2932 "Replace some substrings of STR by Calc equivalents."
2933 (setq str
2934 (replace-regexp-in-string (concat "[" math-read-superscripts "]+")
2935 "^(\\&)" str))
2936 (let ((rep-list math-read-replacement-list))
2937 (while rep-list
2938 (setq str
2939 (replace-regexp-in-string (nth 0 (car rep-list))
2940 (nth 1 (car rep-list)) str))
2941 (setq rep-list (cdr rep-list))))
2942 str)
2943
2944(defun math-read-expr (math-exp-str) 2877(defun math-read-expr (math-exp-str)
2945 (let ((math-exp-pos 0) 2878 (let ((math-exp-pos 0)
2946 (math-exp-old-pos 0) 2879 (math-exp-old-pos 0)
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index a7e840594ec..d8e6eb3017c 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -890,7 +890,7 @@ If nil, selections displayed but ignored.")
890 calc-check-user-syntax calc-do-alg-entry calc-do-calc-eval 890 calc-check-user-syntax calc-do-alg-entry calc-do-calc-eval
891 calc-do-quick-calc calc-match-user-syntax math-build-parse-table 891 calc-do-quick-calc calc-match-user-syntax math-build-parse-table
892 math-find-user-tokens math-read-expr-list math-read-exprs math-read-if 892 math-find-user-tokens math-read-expr-list math-read-exprs math-read-if
893 math-read-token math-remove-dashes) 893 math-read-token math-remove-dashes math-read-preprocess-string)
894 894
895 ("calc-embed" calc-do-embedded-activate) 895 ("calc-embed" calc-do-embedded-activate)
896 896
diff --git a/lisp/edmacro.el b/lisp/edmacro.el
index 0db09d7eebe..67be9f34a15 100644
--- a/lisp/edmacro.el
+++ b/lisp/edmacro.el
@@ -1,6 +1,6 @@
1;;; edmacro.el --- keyboard macro editor 1;;; edmacro.el --- keyboard macro editor
2 2
3;; Copyright (C) 1993, 1994 Free Software Foundation, Inc. 3;; Copyright (C) 1993, 1994, 2004 Free Software Foundation, Inc.
4 4
5;; Author: Dave Gillespie <daveg@synaptics.com> 5;; Author: Dave Gillespie <daveg@synaptics.com>
6;; Maintainer: Dave Gillespie <daveg@synaptics.com> 6;; Maintainer: Dave Gillespie <daveg@synaptics.com>
@@ -28,7 +28,7 @@
28 28
29;;; Usage: 29;;; Usage:
30;; 30;;
31;; The `C-x C-k' (`edit-kbd-macro') command edits a keyboard macro 31;; The `C-x C-k e' (`edit-kbd-macro') command edits a keyboard macro
32;; in a special buffer. It prompts you to type a key sequence, 32;; in a special buffer. It prompts you to type a key sequence,
33;; which should be one of: 33;; which should be one of:
34;; 34;;
@@ -266,7 +266,8 @@ or nil, use a compact 80-column format."
266 (and b (commandp b) (not (arrayp b)) 266 (and b (commandp b) (not (arrayp b))
267 (not (kmacro-extract-lambda b)) 267 (not (kmacro-extract-lambda b))
268 (or (not (fboundp b)) 268 (or (not (fboundp b))
269 (not (arrayp (symbol-function b)))) 269 (not (or (arrayp (symbol-function b))
270 (get b 'kmacro))))
270 (not (y-or-n-p 271 (not (y-or-n-p
271 (format "Key %s is already defined; %s" 272 (format "Key %s is already defined; %s"
272 (edmacro-format-keys key 1) 273 (edmacro-format-keys key 1)
@@ -655,7 +656,7 @@ The string represents the same events; Meta is indicated by bit 7.
655This function assumes that the events can be stored in a string." 656This function assumes that the events can be stored in a string."
656 (setq seq (copy-sequence seq)) 657 (setq seq (copy-sequence seq))
657 (loop for i below (length seq) do 658 (loop for i below (length seq) do
658 (when (< (aref seq i) 0) 659 (when (logand (aref seq i) 128)
659 (setf (aref seq i) (logand (aref seq i) 127)))) 660 (setf (aref seq i) (logand (aref seq i) 127))))
660 seq) 661 seq)
661 662
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 11719d7d709..2b83229010d 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,89 @@
12004-12-02 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * message.el (message-forward-make-body-mml): Remove headers
4 according to message-forward-ignored-headers if a message is
5 decoded.
6
72004-12-02 Romain Francoise <romain@orebokech.com>
8
9 * message.el (message-forward-make-body-plain): Always remove
10 headers according to message-forward-ignored-headers.
11
122004-11-26 Katsumi Yamaoka <yamaoka@jpl.org>
13
14 * lpath.el: Remove bbdb-create-internal, bbdb-records,
15 spam-BBDB-register-routine and spam-enter-ham-BBDB.
16
17 * nnrss.el (nnrss-string-as-multibyte): Redefine it as a macro in
18 order to silence the byte compiler.
19
20 * pop3.el (pop3-md5): Define it before being used.
21
22 * spam.el: Fix the way to silence the byte compiler, which
23 complained about bbdb-buffer, bbdb-create-internal,
24 bbdb-search-simple, mail-check-payment, spam-BBDB-register-routine,
25 spam-enter-ham-BBDB, spam-stat-buffer-change-to-non-spam,
26 spam-stat-buffer-change-to-spam, spam-stat-buffer-is-non-spam,
27 spam-stat-buffer-is-spam, spam-stat-load,
28 spam-stat-register-ham-routine, spam-stat-register-spam-routine,
29 spam-stat-save and spam-stat-split-fancy.
30
312004-11-26 Katsumi Yamaoka <yamaoka@jpl.org>
32
33 * canlock.el (canlock-password): Remove `:size 0' or `:size 1'
34 which may confuse users.
35 (canlock-password-for-verify): Ditto.
36
37 * deuglify.el (gnus-outlook-deuglify-unwrap-stop-chars): Ditto.
38
39 * gnus-art.el (gnus-emphasis-alist): Ditto.
40
41 * gnus-registry.el (gnus-registry-max-entries): Ditto.
42
43 * gnus-score.el (gnus-adaptive-word-length-limit): Ditto.
44
45 * gnus-start.el (gnus-save-killed-list): Ditto.
46
47 * gnus-sum.el (gnus-thread-hide-subtree): Ditto.
48 (gnus-sum-thread-tree-root): Ditto.
49 (gnus-sum-thread-tree-false-root): Ditto.
50 (gnus-sum-thread-tree-single-indent): Ditto.
51
52 * message.el (message-courtesy-message): Ditto.
53 (message-archive-note): Ditto.
54 (message-subscribed-address-file): Ditto.
55 (message-user-fqdn): Ditto.
56
57 * spam-report.el (spam-report-gmane-regex): Ditto.
58
59 * spam.el (spam-blackhole-good-server-regex): Ditto.
60
612004-11-25 Reiner Steib <Reiner.Steib@gmx.de>
62
63 * message.el (message-forbidden-properties): Fixed typo in doc
64 string.
65
662004-11-25 Lars Magne Ingebrigtsen <larsi@gnus.org>
67
68 * message.el (message-strip-forbidden-properties): Bind
69 buffer-read-only (etc) to nil.
70
712004-11-25 Reiner Steib <Reiner.Steib@gmx.de>
72
73 * gnus-util.el (gnus-replace-in-string): Added doc string.
74
75 * nnmail.el (nnmail-split-header-length-limit): Increase to 2048
76 to avoid problems when splitting mails with many recipients.
77
782004-11-23 Katsumi Yamaoka <yamaoka@jpl.org>
79
80 * rfc2047.el (rfc2047-header-encoding-alist): Add In-Reply-To to
81 address-mime. Suggested by ARISAWA Akihiro <ari@mbf.ocn.ne.jp>.
82
832004-11-22 Marek Martin <marek.martin@mum.pri.ee> (tiny change)
84
85 * nnfolder.el (nnfolder-request-create-group): Save current buffer.
86
12004-11-22 Stefan Monnier <monnier@iro.umontreal.ca> 872004-11-22 Stefan Monnier <monnier@iro.umontreal.ca>
2 88
3 * gnus-sum.el (gnus-summary-exit): Remove redundant and harmful 89 * gnus-sum.el (gnus-summary-exit): Remove redundant and harmful
diff --git a/lisp/gnus/canlock.el b/lisp/gnus/canlock.el
index 99d6500001a..71c7dbe03d8 100644
--- a/lisp/gnus/canlock.el
+++ b/lisp/gnus/canlock.el
@@ -55,13 +55,13 @@
55(defcustom canlock-password nil 55(defcustom canlock-password nil
56 "Password to use when signing a Cancel-Lock or a Cancel-Key header." 56 "Password to use when signing a Cancel-Lock or a Cancel-Key header."
57 :type '(radio (const :format "Not specified " nil) 57 :type '(radio (const :format "Not specified " nil)
58 (string :tag "Password" :size 0)) 58 (string :tag "Password"))
59 :group 'canlock) 59 :group 'canlock)
60 60
61(defcustom canlock-password-for-verify canlock-password 61(defcustom canlock-password-for-verify canlock-password
62 "Password to use when verifying a Cancel-Lock or a Cancel-Key header." 62 "Password to use when verifying a Cancel-Lock or a Cancel-Key header."
63 :type '(radio (const :format "Not specified " nil) 63 :type '(radio (const :format "Not specified " nil)
64 (string :tag "Password" :size 0)) 64 (string :tag "Password"))
65 :group 'canlock) 65 :group 'canlock)
66 66
67(defcustom canlock-force-insert-header nil 67(defcustom canlock-force-insert-header nil
diff --git a/lisp/gnus/deuglify.el b/lisp/gnus/deuglify.el
index 4fe1001a050..a00151063de 100644
--- a/lisp/gnus/deuglify.el
+++ b/lisp/gnus/deuglify.el
@@ -1,6 +1,6 @@
1;;; deuglify.el --- deuglify broken Outlook (Express) articles 1;;; deuglify.el --- deuglify broken Outlook (Express) articles
2 2
3;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
4;; Copyright (C) 2001, 2002 Raymond Scholz 4;; Copyright (C) 2001, 2002 Raymond Scholz
5 5
6;; Author: Raymond Scholz <rscholz@zonix.de> 6;; Author: Raymond Scholz <rscholz@zonix.de>
@@ -257,7 +257,7 @@
257 "Characters that inhibit unwrapping if they are the last one on the cited line above the possible wrapped line." 257 "Characters that inhibit unwrapping if they are the last one on the cited line above the possible wrapped line."
258 :version "21.4" 258 :version "21.4"
259 :type '(radio (const :format "None " nil) 259 :type '(radio (const :format "None " nil)
260 (string :size 0 :value ".?!")) 260 (string :value ".?!"))
261 :group 'gnus-outlook-deuglify) 261 :group 'gnus-outlook-deuglify)
262 262
263(defcustom gnus-outlook-deuglify-no-wrap-chars "`" 263(defcustom gnus-outlook-deuglify-no-wrap-chars "`"
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index a87348188f9..f6286c7de87 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -399,15 +399,15 @@ is the face used for highlighting."
399 :value 399 :value
400 (gnus-emphasis-custom-value-to-external value)))) 400 (gnus-emphasis-custom-value-to-external value))))
401 (widget-group-value-create widget)) 401 (widget-group-value-create widget))
402 (regexp :format "%t: %v\n" :size 1) 402 regexp
403 (integer :format "Match group: %v\n" :size 0) 403 (integer :format "Match group: %v")
404 (integer :format "Emphasize group: %v\n" :size 0) 404 (integer :format "Emphasize group: %v")
405 face) 405 face)
406 (group :tag "Simple" 406 (group :tag "Simple"
407 :value (("_" . "_") nil default) 407 :value (("_" . "_") nil default)
408 (cons :format "%v" 408 (cons :format "%v"
409 (regexp :format "Start regexp: %v\n" :size 0) 409 (regexp :format "Start regexp: %v")
410 (regexp :format "End regexp: %v\n" :size 0)) 410 (regexp :format "End regexp: %v"))
411 (boolean :format "Show start and end patterns: %[%v%]\n" 411 (boolean :format "Show start and end patterns: %[%v%]\n"
412 :on " On " :off " Off ") 412 :on " On " :off " Off ")
413 face))) 413 face)))
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 046114cbe24..71e98a236bd 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -1,5 +1,5 @@
1;;; gnus-registry.el --- article registry for Gnus 1;;; gnus-registry.el --- article registry for Gnus
2;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 2;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
3;; Free Software Foundation, Inc. 3;; Free Software Foundation, Inc.
4 4
5;; Author: Ted Zlatanov <tzz@lifelogs.com> 5;; Author: Ted Zlatanov <tzz@lifelogs.com>
@@ -128,7 +128,7 @@ way."
128 "Maximum number of entries in the registry, nil for unlimited." 128 "Maximum number of entries in the registry, nil for unlimited."
129 :group 'gnus-registry 129 :group 'gnus-registry
130 :type '(radio (const :format "Unlimited " nil) 130 :type '(radio (const :format "Unlimited " nil)
131 (integer :format "Maximum number: %v\n" :size 0))) 131 (integer :format "Maximum number: %v")))
132 132
133;; Function(s) missing in Emacs 20 133;; Function(s) missing in Emacs 20
134(when (memq nil (mapcar 'fboundp '(puthash))) 134(when (memq nil (mapcar 'fboundp '(puthash)))
diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el
index 370ef00eb49..21e59e4dbf3 100644
--- a/lisp/gnus/gnus-score.el
+++ b/lisp/gnus/gnus-score.el
@@ -240,7 +240,7 @@ This variable allows the same syntax as `gnus-home-score-file'."
240 :version "21.4" 240 :version "21.4"
241 :group 'gnus-score-adapt 241 :group 'gnus-score-adapt
242 :type '(radio (const :format "Unlimited " nil) 242 :type '(radio (const :format "Unlimited " nil)
243 (integer :format "Maximum length: %v\n" :size 0))) 243 (integer :format "Maximum length: %v")))
244 244
245(defcustom gnus-ignored-adaptive-words nil 245(defcustom gnus-ignored-adaptive-words nil
246 "List of words to be ignored when doing adaptive word scoring." 246 "List of words to be ignored when doing adaptive word scoring."
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index 53ac8f0dbdd..17b0f1d687d 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -258,7 +258,7 @@ not match this regexp will be removed before saving the list."
258 (and value (not (stringp value)))) 258 (and value (not (stringp value))))
259 :value t) 259 :value t)
260 (const nil) 260 (const nil)
261 (regexp :format "%t: %v\n" :size 0))) 261 regexp))
262 262
263(defcustom gnus-ignored-newsgroups 263(defcustom gnus-ignored-newsgroups
264 (mapconcat 'identity 264 (mapconcat 'identity
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 4c5b8dcf9d5..03e1624237e 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -264,7 +264,7 @@ to expose hidden threads."
264 (not (or (consp value) (functionp value)))) 264 (not (or (consp value) (functionp value))))
265 :value t) 265 :value t)
266 (const nil) 266 (const nil)
267 (sexp :tag "Predicate specifier" :size 0))) 267 (sexp :tag "Predicate specifier")))
268 268
269(defcustom gnus-thread-hide-killed t 269(defcustom gnus-thread-hide-killed t
270 "*If non-nil, hide killed threads automatically." 270 "*If non-nil, hide killed threads automatically."
@@ -4639,19 +4639,19 @@ Unscored articles will be counted as having a score of zero."
4639 "With %B spec, used for the root of a thread. 4639 "With %B spec, used for the root of a thread.
4640If nil, use subject instead." 4640If nil, use subject instead."
4641 :version "21.4" 4641 :version "21.4"
4642 :type '(radio (const :format "%v " nil) (string :size 0)) 4642 :type '(radio (const :format "%v " nil) string)
4643 :group 'gnus-thread) 4643 :group 'gnus-thread)
4644(defcustom gnus-sum-thread-tree-false-root "> " 4644(defcustom gnus-sum-thread-tree-false-root "> "
4645 "With %B spec, used for a false root of a thread. 4645 "With %B spec, used for a false root of a thread.
4646If nil, use subject instead." 4646If nil, use subject instead."
4647 :version "21.4" 4647 :version "21.4"
4648 :type '(radio (const :format "%v " nil) (string :size 0)) 4648 :type '(radio (const :format "%v " nil) string)
4649 :group 'gnus-thread) 4649 :group 'gnus-thread)
4650(defcustom gnus-sum-thread-tree-single-indent "" 4650(defcustom gnus-sum-thread-tree-single-indent ""
4651 "With %B spec, used for a thread with just one message. 4651 "With %B spec, used for a thread with just one message.
4652If nil, use subject instead." 4652If nil, use subject instead."
4653 :version "21.4" 4653 :version "21.4"
4654 :type '(radio (const :format "%v " nil) (string :size 0)) 4654 :type '(radio (const :format "%v " nil) string)
4655 :group 'gnus-thread) 4655 :group 'gnus-thread)
4656(defcustom gnus-sum-thread-tree-vertical "| " 4656(defcustom gnus-sum-thread-tree-vertical "| "
4657 "With %B spec, used for drawing a vertical line." 4657 "With %B spec, used for drawing a vertical line."
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 4b71e252f6e..d9952fd8cdc 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -60,10 +60,20 @@
60 ((fboundp 'replace-in-string) 60 ((fboundp 'replace-in-string)
61 (defalias 'gnus-replace-in-string 'replace-in-string)) 61 (defalias 'gnus-replace-in-string 'replace-in-string))
62 ((fboundp 'replace-regexp-in-string) 62 ((fboundp 'replace-regexp-in-string)
63 (defun gnus-replace-in-string (string regexp newtext &optional literal) 63 (defun gnus-replace-in-string (string regexp newtext &optional literal)
64 "Replace all matches for REGEXP with NEWTEXT in STRING.
65If LITERAL is non-nil, insert NEWTEXT literally. Return a new
66string containing the replacements.
67
68This is a compatibility function for different Emacsen."
64 (replace-regexp-in-string regexp newtext string nil literal))) 69 (replace-regexp-in-string regexp newtext string nil literal)))
65 (t 70 (t
66 (defun gnus-replace-in-string (string regexp newtext &optional literal) 71 (defun gnus-replace-in-string (string regexp newtext &optional literal)
72 "Replace all matches for REGEXP with NEWTEXT in STRING.
73If LITERAL is non-nil, insert NEWTEXT literally. Return a new
74string containing the replacements.
75
76This is a compatibility function for different Emacsen."
67 (let ((start 0) tail) 77 (let ((start 0) tail)
68 (while (string-match regexp string start) 78 (while (string-match regexp string start)
69 (setq tail (- (length string) (match-end 0))) 79 (setq tail (- (length string) (match-end 0)))
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index fb63d6724be..113547741c0 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -146,7 +146,7 @@ If the string contains the format spec \"%s\", the Newsgroups
146the article has been posted to will be inserted there. 146the article has been posted to will be inserted there.
147If this variable is nil, no such courtesy message will be added." 147If this variable is nil, no such courtesy message will be added."
148 :group 'message-sending 148 :group 'message-sending
149 :type '(radio (string :format "%t: %v\n" :size 0) (const nil))) 149 :type '(radio string (const nil)))
150 150
151(defcustom message-ignored-bounced-headers 151(defcustom message-ignored-bounced-headers
152 "^\\(Received\\|Return-Path\\|Delivered-To\\):" 152 "^\\(Received\\|Return-Path\\|Delivered-To\\):"
@@ -373,8 +373,7 @@ Archives \(such as groups.google.com\) respect this header."
373 "Note to insert why you wouldn't want this posting archived. 373 "Note to insert why you wouldn't want this posting archived.
374If nil, don't insert any text in the body." 374If nil, don't insert any text in the body."
375 :version "21.4" 375 :version "21.4"
376 :type '(radio (string :format "%t: %v\n" :size 0) 376 :type '(radio string (const nil))
377 (const nil))
378 :link '(custom-manual "(message)Header Commands") 377 :link '(custom-manual "(message)Header Commands")
379 :group 'message-various) 378 :group 'message-various)
380 379
@@ -698,8 +697,7 @@ non-nil, each line of this file should be a mailing list address."
698 :version "21.4" 697 :version "21.4"
699 :group 'message-interface 698 :group 'message-interface
700 :link '(custom-manual "(message)Mailing Lists") 699 :link '(custom-manual "(message)Mailing Lists")
701 :type '(radio (file :format "%t: %v\n" :size 0) 700 :type '(radio file (const nil)))
702 (const nil)))
703 701
704(defcustom message-subscribed-addresses nil 702(defcustom message-subscribed-addresses nil
705 "*Specifies a list of addresses the user is subscribed to. 703 "*Specifies a list of addresses the user is subscribed to.
@@ -1442,7 +1440,7 @@ no, only reply back to the author."
1442 :group 'message-headers 1440 :group 'message-headers
1443 :link '(custom-manual "(message)News Headers") 1441 :link '(custom-manual "(message)News Headers")
1444 :type '(radio (const :format "%v " nil) 1442 :type '(radio (const :format "%v " nil)
1445 (string :format "FQDN: %v\n" :size 0))) 1443 (string :format "FQDN: %v")))
1446 1444
1447(defcustom message-use-idna (and (condition-case nil (require 'idna) 1445(defcustom message-use-idna (and (condition-case nil (require 'idna)
1448 (file-error)) 1446 (file-error))
@@ -2403,7 +2401,7 @@ message composition doesn't break too bad."
2403 ;; fontified: is used by font-lock. 2401 ;; fontified: is used by font-lock.
2404 ;; syntax-table, local-map: I dunno. 2402 ;; syntax-table, local-map: I dunno.
2405 ;; We need to add XEmacs names to the list. 2403 ;; We need to add XEmacs names to the list.
2406 "Property list of with properties.forbidden in message buffers. 2404 "Property list of with properties forbidden in message buffers.
2407The values of the properties are ignored, only the property names are used.") 2405The values of the properties are ignored, only the property names are used.")
2408 2406
2409(defun message-tamago-not-in-use-p (pos) 2407(defun message-tamago-not-in-use-p (pos)
@@ -2426,11 +2424,13 @@ This function is intended to be called from `after-change-functions'.
2426See also `message-forbidden-properties'." 2424See also `message-forbidden-properties'."
2427 (when (and message-strip-special-text-properties 2425 (when (and message-strip-special-text-properties
2428 (message-tamago-not-in-use-p begin)) 2426 (message-tamago-not-in-use-p begin))
2429 (while (not (= begin end)) 2427 (let ((buffer-read-only nil)
2430 (when (not (get-text-property begin 'message-hidden)) 2428 (inhibit-read-only t))
2431 (remove-text-properties begin (1+ begin) 2429 (while (not (= begin end))
2432 message-forbidden-properties)) 2430 (when (not (get-text-property begin 'message-hidden))
2433 (incf begin)))) 2431 (remove-text-properties begin (1+ begin)
2432 message-forbidden-properties))
2433 (incf begin)))))
2434 2434
2435;;;###autoload 2435;;;###autoload
2436(define-derived-mode message-mode text-mode "Message" 2436(define-derived-mode message-mode text-mode "Message"
@@ -6193,8 +6193,7 @@ Optional DIGEST will use digest to forward."
6193 (setq e (point)) 6193 (setq e (point))
6194 (insert 6194 (insert
6195 "\n-------------------- End of forwarded message --------------------\n") 6195 "\n-------------------- End of forwarded message --------------------\n")
6196 (when (and (not current-prefix-arg) 6196 (when message-forward-ignored-headers
6197 message-forward-ignored-headers)
6198 (save-restriction 6197 (save-restriction
6199 (narrow-to-region b e) 6198 (narrow-to-region b e)
6200 (goto-char b) 6199 (goto-char b)
@@ -6240,7 +6239,7 @@ Optional DIGEST will use digest to forward."
6240 (goto-char (point-max)))) 6239 (goto-char (point-max))))
6241 (setq e (point)) 6240 (setq e (point))
6242 (insert "<#/mml>\n") 6241 (insert "<#/mml>\n")
6243 (when (and (not current-prefix-arg) 6242 (when (and (not message-forward-decoded-p)
6244 message-forward-ignored-headers) 6243 message-forward-ignored-headers)
6245 (save-restriction 6244 (save-restriction
6246 (narrow-to-region b e) 6245 (narrow-to-region b e)
diff --git a/lisp/gnus/nnfolder.el b/lisp/gnus/nnfolder.el
index f3e2ea8f533..bf8fc9bac9a 100644
--- a/lisp/gnus/nnfolder.el
+++ b/lisp/gnus/nnfolder.el
@@ -1,5 +1,5 @@
1;;; nnfolder.el --- mail folder access for Gnus 1;;; nnfolder.el --- mail folder access for Gnus
2;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 2;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
3;; Free Software Foundation, Inc. 3;; Free Software Foundation, Inc.
4 4
5;; Author: Simon Josefsson <simon@josefsson.org> (adding MARKS) 5;; Author: Simon Josefsson <simon@josefsson.org> (adding MARKS)
@@ -370,10 +370,11 @@ the group. Then the marks file will be regenerated properly by Gnus.")
370(deffoo nnfolder-request-create-group (group &optional server args) 370(deffoo nnfolder-request-create-group (group &optional server args)
371 (nnfolder-possibly-change-group nil server) 371 (nnfolder-possibly-change-group nil server)
372 (nnmail-activate 'nnfolder) 372 (nnmail-activate 'nnfolder)
373 (when group 373 (when (and group
374 (unless (assoc group nnfolder-group-alist) 374 (not (assoc group nnfolder-group-alist)))
375 (push (list group (cons 1 0)) nnfolder-group-alist) 375 (push (list group (cons 1 0)) nnfolder-group-alist)
376 (nnfolder-save-active nnfolder-group-alist nnfolder-active-file) 376 (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
377 (save-current-buffer
377 (nnfolder-read-folder group))) 378 (nnfolder-read-folder group)))
378 t) 379 t)
379 380
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index 040be1e60e1..471a0f3aa21 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -554,7 +554,7 @@ parameter. It should return nil, `warn' or `delete'."
554 :group 'nnmail 554 :group 'nnmail
555 :type '(repeat symbol)) 555 :type '(repeat symbol))
556 556
557(defcustom nnmail-split-header-length-limit 512 557(defcustom nnmail-split-header-length-limit 2048
558 "Header lines longer than this limit are excluded from the split function." 558 "Header lines longer than this limit are excluded from the split function."
559 :version "21.1" 559 :version "21.1"
560 :group 'nnmail 560 :group 'nnmail
diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el
index 9b4825c53f9..6ff2b46722e 100644
--- a/lisp/gnus/nnrss.el
+++ b/lisp/gnus/nnrss.el
@@ -82,6 +82,12 @@ ARTICLE is the article number of the current headline.")
82 82
83;;; Interface functions 83;;; Interface functions
84 84
85(eval-when-compile
86 (defmacro nnrss-string-as-multibyte (string)
87 (if (featurep 'xemacs)
88 string
89 `(string-as-multibyte ,string))))
90
85(deffoo nnrss-retrieve-headers (articles &optional group server fetch-old) 91(deffoo nnrss-retrieve-headers (articles &optional group server fetch-old)
86 (nnrss-possibly-change-group group server) 92 (nnrss-possibly-change-group group server)
87 (let (e) 93 (let (e)
@@ -410,10 +416,6 @@ ARTICLE is the article number of the current headline.")
410 416
411(defalias 'nnrss-insert 'nnrss-insert-w3) 417(defalias 'nnrss-insert 'nnrss-insert-w3)
412 418
413(if (featurep 'xemacs)
414 (defalias 'nnrss-string-as-multibyte 'identity)
415 (defalias 'nnrss-string-as-multibyte 'string-as-multibyte))
416
417;;; Snarf functions 419;;; Snarf functions
418 420
419(defun nnrss-check-group (group server) 421(defun nnrss-check-group (group server)
diff --git a/lisp/gnus/pop3.el b/lisp/gnus/pop3.el
index db8753057d6..4aa387f375f 100644
--- a/lisp/gnus/pop3.el
+++ b/lisp/gnus/pop3.el
@@ -348,6 +348,22 @@ If NOW, use that time instead."
348 348
349;; AUTHORIZATION STATE 349;; AUTHORIZATION STATE
350 350
351(eval-and-compile
352 (if (fboundp 'md5)
353 (defalias 'pop3-md5 'md5)
354 (defvar pop3-md5-program "md5"
355 "*Program to encode its input in MD5.")
356
357 (defun pop3-md5 (string)
358 (with-temp-buffer
359 (insert string)
360 (call-process-region (point-min) (point-max)
361 pop3-md5-program
362 t (current-buffer) nil)
363 ;; The meaningful output is the first 32 characters.
364 ;; Don't return the newline that follows them!
365 (buffer-substring (point-min) (+ 32 (point-min)))))))
366
351(defun pop3-user (process user) 367(defun pop3-user (process user)
352 "Send USER information to POP3 server." 368 "Send USER information to POP3 server."
353 (pop3-send-command process (format "USER %s" user)) 369 (pop3-send-command process (format "USER %s" user))
@@ -378,22 +394,6 @@ If NOW, use that time instead."
378 394
379;; TRANSACTION STATE 395;; TRANSACTION STATE
380 396
381(eval-and-compile
382 (if (fboundp 'md5)
383 (defalias 'pop3-md5 'md5)
384 (defvar pop3-md5-program "md5"
385 "*Program to encode its input in MD5.")
386
387 (defun pop3-md5 (string)
388 (with-temp-buffer
389 (insert string)
390 (call-process-region (point-min) (point-max)
391 pop3-md5-program
392 t (current-buffer) nil)
393 ;; The meaningful output is the first 32 characters.
394 ;; Don't return the newline that follows them!
395 (buffer-substring (point-min) (+ 32 (point-min)))))))
396
397(defun pop3-stat (process) 397(defun pop3-stat (process)
398 "Return the number of messages in the maildrop and the maildrop's size." 398 "Return the number of messages in the maildrop and the maildrop's size."
399 (pop3-send-command process "STAT") 399 (pop3-send-command process "STAT")
diff --git a/lisp/gnus/rfc2047.el b/lisp/gnus/rfc2047.el
index cbb5a1fc5b0..e6461bf2627 100644
--- a/lisp/gnus/rfc2047.el
+++ b/lisp/gnus/rfc2047.el
@@ -71,7 +71,7 @@ Value is what BODY returns."
71 '(("Newsgroups" . nil) 71 '(("Newsgroups" . nil)
72 ("Followup-To" . nil) 72 ("Followup-To" . nil)
73 ("Message-ID" . nil) 73 ("Message-ID" . nil)
74 ("\\(Resent-\\)?\\(From\\|Cc\\|To\\|Bcc\\|Reply-To\\|Sender\ 74 ("\\(Resent-\\)?\\(From\\|Cc\\|To\\|Bcc\\|\\(In-\\)?Reply-To\\|Sender\
75\\|Mail-Followup-To\\|Mail-Copies-To\\|Approved\\)" . address-mime) 75\\|Mail-Followup-To\\|Mail-Copies-To\\|Approved\\)" . address-mime)
76 (t . mime)) 76 (t . mime))
77 "*Header/encoding method alist. 77 "*Header/encoding method alist.
diff --git a/lisp/gnus/spam-report.el b/lisp/gnus/spam-report.el
index edfd2e0ae73..80d422b06ab 100644
--- a/lisp/gnus/spam-report.el
+++ b/lisp/gnus/spam-report.el
@@ -43,7 +43,7 @@ If you are using spam.el, consider setting gnus-spam-process-newsgroups
43or the gnus-group-spam-exit-processor-report-gmane group/topic parameter 43or the gnus-group-spam-exit-processor-report-gmane group/topic parameter
44instead." 44instead."
45 :type '(radio (const nil) 45 :type '(radio (const nil)
46 (regexp :format "%t: %v\n" :size 0 :value "^nntp\+.*:gmane\.")) 46 (regexp :value "^nntp\+.*:gmane\."))
47 :group 'spam-report) 47 :group 'spam-report)
48 48
49(defcustom spam-report-gmane-spam-header 49(defcustom spam-report-gmane-spam-header
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index 075408b8fc7..a0b28340717 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -295,8 +295,7 @@ All unmarked article in such group receive the spam mark on group entry."
295 295
296(defcustom spam-blackhole-good-server-regex nil 296(defcustom spam-blackhole-good-server-regex nil
297 "String matching IP addresses that should not be checked in the blackholes." 297 "String matching IP addresses that should not be checked in the blackholes."
298 :type '(radio (const nil) 298 :type '(radio (const nil) regexp)
299 (regexp :format "%t: %v\n" :size 0))
300 :group 'spam) 299 :group 'spam)
301 300
302(defcustom spam-face 'gnus-splash-face 301(defcustom spam-face 'gnus-splash-face
@@ -1257,6 +1256,9 @@ functions")
1257 1256
1258;;;; Hashcash. 1257;;;; Hashcash.
1259 1258
1259(eval-when-compile
1260 (autoload 'mail-check-payment "hashcash"))
1261
1260(condition-case nil 1262(condition-case nil
1261 (progn 1263 (progn
1262 (require 'hashcash) 1264 (require 'hashcash)
@@ -1265,9 +1267,7 @@ functions")
1265 "Check the headers for hashcash payments." 1267 "Check the headers for hashcash payments."
1266 (mail-check-payment))) ;mail-check-payment returns a boolean 1268 (mail-check-payment))) ;mail-check-payment returns a boolean
1267 1269
1268 (file-error (progn 1270 (file-error))
1269 (defalias 'mail-check-payment 'ignore)
1270 (defalias 'spam-check-hashcash 'ignore))))
1271 1271
1272;;;; BBDB 1272;;;; BBDB
1273 1273
@@ -1276,66 +1276,67 @@ functions")
1276 1276
1277;; all this is done inside a condition-case to trap errors 1277;; all this is done inside a condition-case to trap errors
1278 1278
1279(condition-case nil 1279(eval-when-compile
1280 (progn 1280 (autoload 'bbdb-buffer "bbdb")
1281 (require 'bbdb) 1281 (autoload 'bbdb-create-internal "bbdb")
1282 (require 'bbdb-com) 1282 (autoload 'bbdb-search-simple "bbdb"))
1283 1283
1284 (defun spam-enter-ham-BBDB (addresses &optional remove) 1284(eval-and-compile
1285 "Enter an address into the BBDB; implies ham (non-spam) sender" 1285 (when (condition-case nil
1286 (dolist (from addresses) 1286 (progn
1287 (when (stringp from) 1287 (require 'bbdb)
1288 (let* ((parsed-address (gnus-extract-address-components from)) 1288 (require 'bbdb-com))
1289 (name (or (nth 0 parsed-address) "Ham Sender")) 1289 (file-error
1290 (remove-function (if remove 1290 (defalias 'spam-BBDB-register-routine 'ignore)
1291 'bbdb-delete-record-internal 1291 (defalias 'spam-enter-ham-BBDB 'ignore)
1292 'ignore)) 1292 nil))
1293 (net-address (nth 1 parsed-address)) 1293
1294 (record (and net-address 1294 (defun spam-enter-ham-BBDB (addresses &optional remove)
1295 (bbdb-search-simple nil net-address)))) 1295 "Enter an address into the BBDB; implies ham (non-spam) sender"
1296 (when net-address 1296 (dolist (from addresses)
1297 (gnus-message 5 "%s address %s %s BBDB" 1297 (when (stringp from)
1298 (if remove "Deleting" "Adding") 1298 (let* ((parsed-address (gnus-extract-address-components from))
1299 from 1299 (name (or (nth 0 parsed-address) "Ham Sender"))
1300 (if remove "from" "to")) 1300 (remove-function (if remove
1301 (if record 1301 'bbdb-delete-record-internal
1302 (funcall remove-function record) 1302 'ignore))
1303 (bbdb-create-internal name nil net-address nil nil 1303 (net-address (nth 1 parsed-address))
1304 "ham sender added by spam.el"))))))) 1304 (record (and net-address
1305 1305 (bbdb-search-simple nil net-address))))
1306 (defun spam-BBDB-register-routine (articles &optional unregister) 1306 (when net-address
1307 (let (addresses) 1307 (gnus-message 5 "%s address %s %s BBDB"
1308 (dolist (article articles) 1308 (if remove "Deleting" "Adding")
1309 (when (stringp (spam-fetch-field-from-fast article)) 1309 from
1310 (push (spam-fetch-field-from-fast article) addresses))) 1310 (if remove "from" "to"))
1311 ;; now do the register/unregister action 1311 (if record
1312 (spam-enter-ham-BBDB addresses unregister))) 1312 (funcall remove-function record)
1313 1313 (bbdb-create-internal name nil net-address nil nil
1314 (defun spam-BBDB-unregister-routine (articles) 1314 "ham sender added by spam.el")))))))
1315 (spam-BBDB-register-routine articles t)) 1315
1316 1316 (defun spam-BBDB-register-routine (articles &optional unregister)
1317 (defun spam-check-BBDB () 1317 (let (addresses)
1318 "Mail from people in the BBDB is classified as ham or non-spam" 1318 (dolist (article articles)
1319 (let ((who (nnmail-fetch-field "from")) 1319 (when (stringp (spam-fetch-field-from-fast article))
1320 (spam-split-group (if spam-split-symbolic-return 1320 (push (spam-fetch-field-from-fast article) addresses)))
1321 'spam 1321 ;; now do the register/unregister action
1322 spam-split-group))) 1322 (spam-enter-ham-BBDB addresses unregister)))
1323 (when who 1323
1324 (setq who (nth 1 (gnus-extract-address-components who))) 1324 (defun spam-BBDB-unregister-routine (articles)
1325 (if (bbdb-search-simple nil who) 1325 (spam-BBDB-register-routine articles t))
1326 t 1326
1327 (if spam-use-BBDB-exclusive 1327 (defun spam-check-BBDB ()
1328 spam-split-group 1328 "Mail from people in the BBDB is classified as ham or non-spam"
1329 nil)))))) 1329 (let ((who (nnmail-fetch-field "from"))
1330 1330 (spam-split-group (if spam-split-symbolic-return
1331 (file-error (progn 1331 'spam
1332 (defalias 'bbdb-search-simple 'ignore) 1332 spam-split-group)))
1333 (defalias 'spam-check-BBDB 'ignore) 1333 (when who
1334 (defalias 'spam-BBDB-register-routine 'ignore) 1334 (setq who (nth 1 (gnus-extract-address-components who)))
1335 (defalias 'spam-enter-ham-BBDB 'ignore) 1335 (if (bbdb-search-simple nil who)
1336 (defalias 'bbdb-create-internal 'ignore) 1336 t
1337 (defalias 'bbdb-delete-record-internal 'ignore) 1337 (if spam-use-BBDB-exclusive
1338 (defalias 'bbdb-records 'ignore)))) 1338 spam-split-group
1339 nil)))))))
1339 1340
1340 1341
1341;;;; ifile 1342;;;; ifile
@@ -1411,66 +1412,63 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)."
1411 1412
1412;;;; spam-stat 1413;;;; spam-stat
1413 1414
1414(condition-case nil 1415(eval-when-compile
1415 (progn 1416 (autoload 'spam-stat-buffer-change-to-non-spam "spam-stat")
1416 (let ((spam-stat-install-hooks nil)) 1417 (autoload 'spam-stat-buffer-change-to-spam "spam-stat")
1417 (require 'spam-stat)) 1418 (autoload 'spam-stat-buffer-is-non-spam "spam-stat")
1418 1419 (autoload 'spam-stat-buffer-is-spam "spam-stat")
1419 (defun spam-check-stat () 1420 (autoload 'spam-stat-load "spam-stat")
1420 "Check the spam-stat backend for the classification of this message" 1421 (autoload 'spam-stat-save "spam-stat")
1421 (let ((spam-split-group (if spam-split-symbolic-return 1422 (autoload 'spam-stat-split-fancy "spam-stat"))
1422 'spam 1423
1423 spam-split-group)) 1424(eval-and-compile
1424 (spam-stat-split-fancy-spam-group spam-split-group) ; override 1425 (when (condition-case nil
1425 (spam-stat-buffer (buffer-name)) ; stat the current buffer 1426 (let ((spam-stat-install-hooks nil))
1426 category return) 1427 (require 'spam-stat))
1427 (spam-stat-split-fancy))) 1428 (file-error
1428 1429 (defalias 'spam-stat-register-ham-routine 'ignore)
1429 (defun spam-stat-register-spam-routine (articles &optional unregister) 1430 (defalias 'spam-stat-register-spam-routine 'ignore)
1430 (dolist (article articles) 1431 nil))
1431 (let ((article-string (spam-get-article-as-string article))) 1432
1432 (with-temp-buffer 1433 (defun spam-check-stat ()
1433 (insert article-string) 1434 "Check the spam-stat backend for the classification of this message"
1434 (if unregister 1435 (let ((spam-split-group (if spam-split-symbolic-return
1435 (spam-stat-buffer-change-to-non-spam) 1436 'spam
1437 spam-split-group))
1438 (spam-stat-split-fancy-spam-group spam-split-group) ; override
1439 (spam-stat-buffer (buffer-name)) ; stat the current buffer
1440 category return)
1441 (spam-stat-split-fancy)))
1442
1443 (defun spam-stat-register-spam-routine (articles &optional unregister)
1444 (dolist (article articles)
1445 (let ((article-string (spam-get-article-as-string article)))
1446 (with-temp-buffer
1447 (insert article-string)
1448 (if unregister
1449 (spam-stat-buffer-change-to-non-spam)
1436 (spam-stat-buffer-is-spam)))))) 1450 (spam-stat-buffer-is-spam))))))
1437 1451
1438 (defun spam-stat-unregister-spam-routine (articles) 1452 (defun spam-stat-unregister-spam-routine (articles)
1439 (spam-stat-register-spam-routine articles t)) 1453 (spam-stat-register-spam-routine articles t))
1440 1454
1441 (defun spam-stat-register-ham-routine (articles &optional unregister) 1455 (defun spam-stat-register-ham-routine (articles &optional unregister)
1442 (dolist (article articles) 1456 (dolist (article articles)
1443 (let ((article-string (spam-get-article-as-string article))) 1457 (let ((article-string (spam-get-article-as-string article)))
1444 (with-temp-buffer 1458 (with-temp-buffer
1445 (insert article-string) 1459 (insert article-string)
1446 (if unregister 1460 (if unregister
1447 (spam-stat-buffer-change-to-spam) 1461 (spam-stat-buffer-change-to-spam)
1448 (spam-stat-buffer-is-non-spam)))))) 1462 (spam-stat-buffer-is-non-spam))))))
1449 1463
1450 (defun spam-stat-unregister-ham-routine (articles) 1464 (defun spam-stat-unregister-ham-routine (articles)
1451 (spam-stat-register-ham-routine articles t)) 1465 (spam-stat-register-ham-routine articles t))
1452 1466
1453 (defun spam-maybe-spam-stat-load () 1467 (defun spam-maybe-spam-stat-load ()
1454 (when spam-use-stat (spam-stat-load))) 1468 (when spam-use-stat (spam-stat-load)))
1455 1469
1456 (defun spam-maybe-spam-stat-save () 1470 (defun spam-maybe-spam-stat-save ()
1457 (when spam-use-stat (spam-stat-save)))) 1471 (when spam-use-stat (spam-stat-save)))))
1458
1459 (file-error (progn
1460 (defalias 'spam-stat-load 'ignore)
1461 (defalias 'spam-stat-save 'ignore)
1462 (defalias 'spam-maybe-spam-stat-load 'ignore)
1463 (defalias 'spam-maybe-spam-stat-save 'ignore)
1464 (defalias 'spam-stat-register-ham-routine 'ignore)
1465 (defalias 'spam-stat-unregister-ham-routine 'ignore)
1466 (defalias 'spam-stat-register-spam-routine 'ignore)
1467 (defalias 'spam-stat-unregister-spam-routine 'ignore)
1468 (defalias 'spam-stat-buffer-is-spam 'ignore)
1469 (defalias 'spam-stat-buffer-change-to-spam 'ignore)
1470 (defalias 'spam-stat-buffer-is-non-spam 'ignore)
1471 (defalias 'spam-stat-buffer-change-to-non-spam 'ignore)
1472 (defalias 'spam-stat-split-fancy 'ignore)
1473 (defalias 'spam-check-stat 'ignore))))
1474 1472
1475 1473
1476 1474
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 118d23ce38f..53d2ab1c4fb 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -1682,7 +1682,7 @@ Isearch mode."
1682 ;; single-byte character set, and convert them to Emacs 1682 ;; single-byte character set, and convert them to Emacs
1683 ;; characters. 1683 ;; characters.
1684 (if (and isearch-regexp (= char ?\ )) 1684 (if (and isearch-regexp (= char ?\ ))
1685 (if (subregexp-context-p isearch-string pos) 1685 (if (subregexp-context-p isearch-string (length isearch-string))
1686 (isearch-process-search-string "[ ]" " ") 1686 (isearch-process-search-string "[ ]" " ")
1687 (isearch-process-search-char char)) 1687 (isearch-process-search-char char))
1688 (and enable-multibyte-characters 1688 (and enable-multibyte-characters
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 912048cd1de..b2fa71dde24 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -2201,7 +2201,9 @@ and selects that window."
2201 (progn (unless (display-multi-font-p) 2201 (progn (unless (display-multi-font-p)
2202 (error "Cannot change fonts on this display")) 2202 (error "Cannot change fonts on this display"))
2203 (x-popup-menu 2203 (x-popup-menu
2204 last-nonmenu-event 2204 (if (listp last-nonmenu-event)
2205 last-nonmenu-event
2206 (list '(0 0) (selected-window)))
2205 ;; Append list of fontsets currently defined. 2207 ;; Append list of fontsets currently defined.
2206 (append x-fixed-font-alist (list (generate-fontset-menu)))))) 2208 (append x-fixed-font-alist (list (generate-fontset-menu))))))
2207 (if fonts 2209 (if fonts
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index b864c714a7f..fc1ffb329d9 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -5,7 +5,7 @@
5;; Author: Carsten Dominik <dominik at science dot uva dot nl> 5;; Author: Carsten Dominik <dominik at science dot uva dot nl>
6;; Keywords: outlines, hypermedia, calendar 6;; Keywords: outlines, hypermedia, calendar
7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ 7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
8;; Version: 3.03 (internal CVS version is $Revision: 1.2 $) 8;; Version: 3.03
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/man/ChangeLog b/man/ChangeLog
index a8284cd5c87..b601faef550 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,14 @@
12004-12-07 Luc Teirlinck <teirllm@auburn.edu>
2
3 * frames.texi (Scroll Bars): The option `scroll-bar-mode' has to
4 be set through Custom. Otherwise, it has no effect.
5
62004-12-07 Stefan <monnier@iro.umontreal.ca>
7
8 * url.texi: New file.
9
10 * Makefile.in (INFO_TARGETS, DVI_TARGETS, ../info/url, url.dvi): Add it.
11
12004-12-06 Jay Belanger <belanger@truman.edu> 122004-12-06 Jay Belanger <belanger@truman.edu>
2 13
3 * calc.texi (Using Calc): Remove paragraph about installation. 14 * calc.texi (Using Calc): Remove paragraph about installation.
@@ -96,6 +107,17 @@
96 to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for 107 to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for
97 suggestions. 108 suggestions.
98 109
1102004-11-22 Reiner Steib <Reiner.Steib@gmx.de>
111
112 * message.texi (Various Message Variables): Mention that all mail
113 file variables are derived from `message-directory'.
114
115 * gnus.texi (Splitting Mail): Clarify bogus group.
116
1172004-11-16 Reiner Steib <Reiner.Steib@gmx.de>
118
119 * gnus.texi (Filtering Spam Using The Spam ELisp Package):
120
992004-11-02 Katsumi Yamaoka <yamaoka@jpl.org> 1212004-11-02 Katsumi Yamaoka <yamaoka@jpl.org>
100 122
101 * emacs-mime.texi (Encoding Customization): Fix 123 * emacs-mime.texi (Encoding Customization): Fix
diff --git a/man/Makefile.in b/man/Makefile.in
index 94e3a341c35..b9b309855c9 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -39,7 +39,7 @@ INFO_TARGETS = ../info/emacs ../info/emacs-xtra ../info/ccmode ../info/cl \
39 ../info/sc ../info/vip ../info/viper ../info/widget \ 39 ../info/sc ../info/vip ../info/viper ../info/widget \
40 ../info/efaq ../info/ada-mode ../info/autotype ../info/calc \ 40 ../info/efaq ../info/ada-mode ../info/autotype ../info/calc \
41 ../info/idlwave ../info/eudc ../info/ebrowse ../info/pcl-cvs \ 41 ../info/idlwave ../info/eudc ../info/ebrowse ../info/pcl-cvs \
42 ../info/woman ../info/eshell ../info/org \ 42 ../info/woman ../info/eshell ../info/org ../info/url \
43 ../info/speedbar ../info/tramp ../info/ses ../info/smtpmail \ 43 ../info/speedbar ../info/tramp ../info/ses ../info/smtpmail \
44 ../info/flymake 44 ../info/flymake
45DVI_TARGETS = emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \ 45DVI_TARGETS = emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
@@ -47,7 +47,7 @@ DVI_TARGETS = emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
47 gnus.dvi message.dvi sieve.dvi pgg.dvi mh-e.dvi \ 47 gnus.dvi message.dvi sieve.dvi pgg.dvi mh-e.dvi \
48 reftex.dvi sc.dvi vip.dvi viper.dvi widget.dvi faq.dvi \ 48 reftex.dvi sc.dvi vip.dvi viper.dvi widget.dvi faq.dvi \
49 ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \ 49 ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \
50 pcl-cvs.dvi woman.dvi eshell.dvi org.el \ 50 pcl-cvs.dvi woman.dvi eshell.dvi org.dvi url.dvi \
51 speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \ 51 speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \
52 emacs-xtra.dvi 52 emacs-xtra.dvi
53INFOSOURCES = info.texi 53INFOSOURCES = info.texi
@@ -291,6 +291,11 @@ woman.dvi: woman.texi
291org.dvi: org.texi 291org.dvi: org.texi
292 $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi 292 $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi
293 293
294../info/url: url.texi
295 cd $(srcdir); $(MAKEINFO) url.texi
296url.dvi: url.texi
297 $(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi
298
294../info/speedbar: speedbar.texi 299../info/speedbar: speedbar.texi
295 cd $(srcdir); $(MAKEINFO) speedbar.texi 300 cd $(srcdir); $(MAKEINFO) speedbar.texi
296speedbar.dvi: speedbar.texi 301speedbar.dvi: speedbar.texi
diff --git a/man/frames.texi b/man/frames.texi
index 5fb4181408e..e9716c76a1f 100644
--- a/man/frames.texi
+++ b/man/frames.texi
@@ -761,8 +761,10 @@ argument is positive. This command applies to all frames, including
761frames yet to be created. Customize the option @code{scroll-bar-mode} 761frames yet to be created. Customize the option @code{scroll-bar-mode}
762to control the use of scroll bars at startup. You can use it to specify 762to control the use of scroll bars at startup. You can use it to specify
763that they are placed at the right of windows if you prefer that. You 763that they are placed at the right of windows if you prefer that. You
764can use the X resource @samp{verticalScrollBars} to control the initial 764have to set this variable through the @samp{Customize} interface
765setting of Scroll Bar mode similarly. @xref{Resources}. 765(@pxref{Easy Customization}). Otherwise, it will not work properly.
766You can use the X resource @samp{verticalScrollBars} to control the
767initial setting of Scroll Bar mode similarly. @xref{Resources}.
766 768
767@findex toggle-scroll-bar 769@findex toggle-scroll-bar
768 To enable or disable scroll bars for just the selected frame, use the 770 To enable or disable scroll bars for just the selected frame, use the
diff --git a/man/gnus.texi b/man/gnus.texi
index ca9045bf5b9..50d7bd16de8 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -13244,14 +13244,16 @@ called narrowed to the headers with the first element of the rule as the
13244argument. It should return a non-@code{nil} value if it thinks that the 13244argument. It should return a non-@code{nil} value if it thinks that the
13245mail belongs in that group. 13245mail belongs in that group.
13246 13246
13247@cindex @samp{bogus} group
13247The last of these groups should always be a general one, and the regular 13248The last of these groups should always be a general one, and the regular
13248expression should @emph{always} be @samp{*} so that it matches any mails 13249expression should @emph{always} be @samp{""} so that it matches any mails
13249that haven't been matched by any of the other regexps. (These rules are 13250that haven't been matched by any of the other regexps. (These rules are
13250processed from the beginning of the alist toward the end. The first 13251processed from the beginning of the alist toward the end. The first rule
13251rule to make a match will ``win'', unless you have crossposting enabled. 13252to make a match will ``win'', unless you have crossposting enabled. In
13252In that case, all matching rules will ``win''.) When new groups are 13253that case, all matching rules will ``win''.) If no rule matched, the mail
13253created by splitting mail, you may want to run 13254will end up in the @samp{bogus} group. When new groups are created by
13254@code{gnus-group-find-new-groups} to see the new groups. 13255splitting mail, you may want to run @code{gnus-group-find-new-groups} to
13256see the new groups. This also applies to the @samp{bogus} group.
13255 13257
13256If you like to tinker with this yourself, you can set this variable to a 13258If you like to tinker with this yourself, you can set this variable to a
13257function of your choice. This function will be called without any 13259function of your choice. This function will be called without any
@@ -13268,7 +13270,7 @@ some add @code{X-Gnus-Group} headers; most rename the Unix mbox
13268The mail back ends all support cross-posting. If several regexps match, 13270The mail back ends all support cross-posting. If several regexps match,
13269the mail will be ``cross-posted'' to all those groups. 13271the mail will be ``cross-posted'' to all those groups.
13270@code{nnmail-crosspost} says whether to use this mechanism or not. Note 13272@code{nnmail-crosspost} says whether to use this mechanism or not. Note
13271that no articles are crossposted to the general (@samp{*}) group. 13273that no articles are crossposted to the general (@samp{""}) group.
13272 13274
13273@vindex nnmail-crosspost-link-function 13275@vindex nnmail-crosspost-link-function
13274@cindex crosspost 13276@cindex crosspost
diff --git a/man/message.texi b/man/message.texi
index b4e20f84d80..4d4f7af2a07 100644
--- a/man/message.texi
+++ b/man/message.texi
@@ -1867,6 +1867,7 @@ follows this line--} by default.
1867@item message-directory 1867@item message-directory
1868@vindex message-directory 1868@vindex message-directory
1869Directory used by many mailey things. The default is @file{~/Mail/}. 1869Directory used by many mailey things. The default is @file{~/Mail/}.
1870All other mail file variables are derived from @code{message-directory}.
1870 1871
1871@item message-auto-save-directory 1872@item message-auto-save-directory
1872@vindex message-auto-save-directory 1873@vindex message-auto-save-directory
diff --git a/man/url.texi b/man/url.texi
new file mode 100644
index 00000000000..ec9c973b33d
--- /dev/null
+++ b/man/url.texi
@@ -0,0 +1,1187 @@
1\input texinfo
2@setfilename url.info
3@settitle URL Programmer's Manual
4
5@iftex
6@c @finalout
7@end iftex
8@c @setchapternewpage odd
9@c @smallbook
10
11@tex
12\overfullrule=0pt
13%\global\baselineskip 30pt % for printing in double space
14@end tex
15@dircategory World Wide Web
16@dircategory GNU Emacs Lisp
17@direntry
18* URL: (url). URL loading package.
19@end direntry
20
21@ifnottex
22This file documents the URL loading package.
23
24Copyright (C) 1996, 1997, 1998, 1999, 2002, 2004 Free Software Foundation
25Copyright (C) 1993, 1994, 1995, 1996 William M. Perry
26
27Permission is granted to copy, distribute and/or modify this document
28under the terms of the GNU Free Documentation License, Version 1.1 or
29any later version published by the Free Software Foundation; with the
30Invariant Sections being
31``GNU GENERAL PUBLIC LICENSE''. A copy of the
32license is included in the section entitled ``GNU Free Documentation
33License.''
34@end ifnottex
35
36@c
37@titlepage
38@sp 6
39@center @titlefont{URL}
40@center @titlefont{Programmer's Manual}
41@sp 4
42@center First Edition, URL Version 2.0
43@sp 1
44@c @center December 1999
45@sp 5
46@center William M. Perry
47@center @email{wmperry@@gnu.org}
48@center David Love
49@center @email{fx@@gnu.org}
50@page
51@vskip 0pt plus 1filll
52Copyright @copyright{} 1993, 1994, 1995, 1996 William M. Perry@*
53Copyright @copyright{} 1996, 1997, 1998, 1999, 2002 Free Software Foundation
54
55Permission is granted to copy, distribute and/or modify this document
56under the terms of the GNU Free Documentation License, Version 1.1 or
57any later version published by the Free Software Foundation; with the
58Invariant Sections being
59``GNU GENERAL PUBLIC LICENSE''. A copy of the
60license is included in the section entitled ``GNU Free Documentation
61License.''
62@end titlepage
63@page
64@node Top
65@top URL
66
67
68
69@menu
70* Getting Started:: Preparing your program to use URLs.
71* Retrieving URLs:: How to use this package to retrieve a URL.
72* Supported URL Types:: Descriptions of URL types currently supported.
73* Defining New URLs:: How to define a URL loader for a new protocol.
74* General Facilities:: URLs can be cached, accessed via a gateway
75 and tracked in a history list.
76* Customization:: Variables you can alter.
77* Function Index::
78* Variable Index::
79* Concept Index::
80@end menu
81
82@node Getting Started
83@chapter Getting Started
84@cindex URLs, definition
85@cindex URIs
86
87@dfn{Uniform Resource Locators} (URLs) are a specific form of
88@dfn{Uniform Resource Identifiers} (URI) described in RFC 2396 which
89updates RFC 1738 and RFC 1808. RFC 2016 defines uniform resource
90agents.
91
92URIs have the form @var{scheme}:@var{scheme-specific-part}, where the
93@var{scheme}s supported by this library are described below.
94@xref{Supported URL Types}.
95
96FTP NFS, HTTP, HTTPS, @code{rlogin}, @code{telnet}, tn3270,
97IRC and gopher URLs all have the form
98
99@example
100@var{scheme}://@r{[}@var{userinfo}@@@r{]}@var{hostname}@r{[}:@var{port}@r{]}@r{[}/@var{path}@r{]}
101@end example
102@noindent
103where @samp{@r{[}} and @samp{@r{]}} delimit optional parts.
104@var{userinfo} sometimes takes the form @var{username}:@var{password}
105but you should beware of the security risks of sending cleartext
106passwords. @var{hostname} may be a domain name or a dotted decimal
107address. If the @samp{:@var{port}} is omitted then the library will
108use the `well known' port for that service when accessing URLs. With
109the possible exception of @code{telnet}, it is rare for ports to be
110specified, and it is possible using a non-standard port may have
111undesired consequences if a different service is listening on that
112port (e.g.@: an HTTP URL specifying the SMTP port can cause mail to be
113sent).@c , but @xref{Other Variables, url-bad-port-list}.
114The meaning of
115the @var{path} component depends on the service.
116
117The library depends on MIME support provided by the @samp{mm-}
118packages from Gnus 5.8 or later. @xref{(emacs-mime)Top, The MIME
119library}.
120
121@menu
122* Configuration::
123* Parsed URLs:: URLs are parsed into vector structures.
124@end menu
125
126@node Configuration
127@section Configuration
128
129@defvar url-configuration-directory
130@cindex @file{~/.url}
131@cindex configuration files
132The directory in which URL configuration files, the cache etc.,
133reside. Default @file{~/.url}.
134@end defvar
135
136@node Parsed URLs
137@section Parsed URLs
138@cindex parsed URLs
139The library functions typically operate on @dfn{parsed} versions of
140URLs. These are actually vectors of the form:
141
142@example
143[@var{type} @var{user} @var{password} @var{host} @var{port} @var{file} @var{target} @var{attributes} @var{full}]
144@end example
145
146@noindent where
147@table @var
148@item type
149is the type of the URL scheme, e.g.@: @code{http}
150@item user
151is the username associated with it, or @code{nil};
152@item password
153is the user password associated with it, or @code{nil};
154@item host
155is the host name associated with it, or @code{nil};
156@item port
157is the port number associated with it, or @code{nil};
158@item file
159is the `file' part of it, or @code{nil}. This doesn't necessarily
160actually refer to a file;
161@item target
162is the target part, or @code{nil};
163@item attributes
164is the attributes associated with it, or @code{nil};
165@item full
166is @code{t} for a fully-specified URL, with a host part indicated by
167@samp{//} after the scheme part.
168@end table
169
170@findex url-type
171@findex url-user
172@findex url-password
173@findex url-host
174@findex url-port
175@findex url-file
176@findex url-target
177@findex url-attributes
178@findex url-full
179@findex url-set-type
180@findex url-set-user
181@findex url-set-password
182@findex url-set-host
183@findex url-set-port
184@findex url-set-file
185@findex url-set-target
186@findex url-set-attributes
187@findex url-set-full
188These attributes have accessors named @code{url-@var{part}}, where
189@var{part} is the name of one of the elements above, e.g.@:
190@code{url-host}. Similarly, there are setters of the form
191@code{url-set-@var{part}}.
192
193There are functions for parsing and unparsing between the string and
194vector forms.
195
196@defun url-generic-parse-url url
197Return a parsed version of the string @var{url}.
198@end defun
199
200@defun url-recreate-url url
201@cindex unparsing URLs
202Recreates a URL string from the parsed @var{url}.
203@end defun
204
205@node Retrieving URLs
206@chapter Retrieving URLs
207
208@defun url-retrieve-synchronously url
209Retrieve @var{url} synchronously and return a buffer containing the
210data. @var{url} is either a string or a parsed URL structure. Return
211@var{nil} if there are no data associated with it (the case for dired,
212info, or mailto URLs that need no further processing).
213@end defun
214
215@defun url-retrieve url callback &optional cbargs
216Retrieve @var{url} asynchronously and call @var{callback} with args
217@var{cbargs} when finished. The callback is called when the object
218has been completely retrieved, with the current buffer containing the
219object and any MIME headers associated with it. @var{url} is either a
220string or a parsed URL structure. Returns the buffer @var{url} will
221load into, or @var{nil} if the process has already completed.
222@end defun
223
224@node Supported URL Types
225@chapter Supported URL Types
226
227@menu
228* http/https:: Hypertext Transfer Protocol.
229* file/ftp:: Local files and FTP archives.
230* info:: Emacs `Info' pages.
231* mailto:: Sending email.
232* news/nntp/snews:: Usenet news.
233* rlogin/telnet/tn3270:: Remote host connectivity.
234* irc:: Internet Relay Chat.
235* data:: Embedded data URLs.
236* nfs:: Networked File System
237@c * finger::
238@c * gopher::
239@c * netrek::
240@c * prospero::
241* cid:: Content-ID.
242* about::
243* ldap:: Lightweight Directory Access Protocol
244* imap:: IMAP mailboxes.
245* man:: Unix man pages.
246@end menu
247
248@node http/https
249@section @code{http} and @code{https}
250
251The scheme @code{http} is Hypertext Transfer Protocol. The library
252supports version 1.1, specified in RFC 2616. (This supersedes 1.0,
253defined in RFC 1945) HTTP URLs have the following form, where most of
254the parts are optional:
255@example
256http://@var{user}:@var{password}@var{host}:@var{port}/@var{path}?@var{searchpart}#@var{fragment}
257@end example
258@c The @code{:@var{port}} part is optional, and @var{port} defaults to
259@c 80. The @code{/@var{path}} part, if present, is a slash-separated
260@c series elements. The @code{?@var{searchpart}}, if present, is the
261@c query for a search or the content of a form submission. The
262@c @code{#fragment} part, if present, is a location in the document.
263
264The scheme @code{https} is a secure version of @code{http}, with
265transmission via SSL. It is defined in RFC 2069. Its default port is
266443. This scheme depends on SSL support in Emacs via the
267@file{ssl.el} library and is actually implemented by forcing the
268@code{ssl} gateway method to be used. @xref{Gateways in general}.
269
270@defopt url-honor-refresh-requests
271This controls honouring of HTTP @samp{Refresh} headers by which
272servers can direct clients to reload documents from the same URL or a
273or different one. @code{nil} means they will not be honoured,
274@code{t} (the default) means they will always be honoured, and
275otherwise the user will be asked on each request.
276@end defopt
277
278
279@menu
280* Cookies::
281* HTTP language/coding::
282* HTTP URL Options::
283* Dealing with HTTP documents::
284@end menu
285
286@node Cookies
287@subsection Cookies
288
289@defopt url-cookie-file
290The file in which cookies are stored, defaulting to @file{cookies} in
291the directory specified by @code{url-configuration-directory}.
292@end defopt
293
294@defopt url-cookie-confirmation
295Specifies whether confirmation is require to accept cookies.
296@end defopt
297
298@defopt url-cookie-multiple-line
299Specifies whether to put all cookies for the server on one line in the
300HTTP request to satisfy broken servers like
301@url{http://www.hotmail.com}.
302@end defopt
303
304@defopt url-cookie-trusted-urls
305A list of regular expressions matching URLs from which to accept
306cookies always.
307@end defopt
308
309@defopt url-cookie-untrusted-urls
310A list of regular expressions matching URLs from which to reject
311cookies always.
312@end defopt
313
314@defopt url-cookie-save-interval
315The number of seconds between automatic saves of cookies to disk.
316Default is one hour.
317@end defopt
318
319
320@node HTTP language/coding
321@subsection Language and Encoding Preferences
322
323HTTP allows clients to express preferences for the language and
324encoding of documents which servers may honour.
325
326@defopt url-mime-charset-string
327@cindex character sets
328@cindex coding systems
329This variable specifies a preference for character sets when documents
330can be served in more than one encoding.
331
332HTTP allows specifying a list of MIME charsets which indicate your
333preferred character set encodings, e.g.@: Latin-9 or Big5, and these
334can be weighted. In Emacs 21 this list is generated automatically
335from the list of defined coding systems which have associated MIME
336types. These are sorted by coding priority. @xref{Recognize Coding,
337, Recognizing Coding Systems, emacs, GNU Emacs Manual}.
338@end defopt
339
340@defopt url-mime-language-string
341@cindex language preferences
342A string specifying the preferred language when servers can serve
343files in several languages. Use RFC 1766 abbreviations, e.g.@:
344@samp{en} for English, @samp{de} for German. It can be a
345comma-separated list in descending order of preference. The ordering
346can be made explicit using `q' factors defined by HTTP, e.g.@:
347@w{@samp{de, en-gb;q=0.8, en;q=0.7}}. It can be @samp{*} to get the
348first available language (as opposed to the default).
349@end defopt
350
351@node HTTP URL Options
352@subsection HTTP URL Options
353
354HTTP supports an @samp{OPTIONS} method describing things supported by
355the URL@.
356
357@defun url-http-options url
358Returns a property list describing options available for URL. The
359property list members are:
360
361@table @code
362@item methods
363A list of symbols specifying what HTTP methods the resource
364supports.
365
366@item dav
367@cindex DAV
368A list of numbers specifying what DAV protocol/schema versions are
369supported.
370
371@item dasl
372@cindex DASL
373A list of supported DASL search types supported (string form).
374
375@item ranges
376A list of the units available for use in partial document fetches.
377
378@item p3p
379@cindex P3P
380The @dfn{Platform For Privacy Protection} description for the resource.
381Currently this is just the raw header contents.
382@end table
383
384@end defun
385
386@node Dealing with HTTP documents
387@subsection Dealing with HTTP documents
388
389HTTP URLs are retrieved into a buffer containing the HTTP headers
390followed by the body. Since the headers are quasi-MIME, they may be
391processed using the MIME library. @xref{(emacs-mime)Top, The MIME
392library}. The MIME library doesn't provide a clean function to do
393that, so the URL library does.
394
395@defun url-decode-text-part handle &optional coding
396This function decodes charset-encoded text in the current buffer. In
397Emacs, the buffer is expected to be unibyte initially and is set to
398multibyte after decoding.
399HANDLE is the MIME handle of the original part. CODING is an explicit
400coding to use, overriding what the MIME headers specify.
401The coding system used for the decoding is returned.
402
403Note that this function doesn't deal with @samp{http-equiv} charset
404specifications in HTML @samp{<meta>} elements.
405@end defun
406
407@node file/ftp
408@section file and ftp
409@cindex files
410@cindex FTP
411@cindex File Transfer Protocol
412@cindex compressed files
413@findex dired
414
415@example
416ftp://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file}
417file://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file}
418@end example
419
420These schemes are defined in RFC 1808.
421@samp{ftp:} and @samp{file:} are synonomous in this library. They
422allow reading arbitary files from hosts. Either @samp{ange-ftp}
423(Emacs) or @samp{efs} (XEmacs) is used to retrieve them from remote
424hosts. Local files are accessed directly.
425
426Compressed files are handled, but support is hard-coded so that
427@code{jka-compr-compression-info-list} and so on have no affect.
428Suffixes recognized are @samp{.z}, @samp{.gz}, @samp{.Z} and
429@samp{.bz2}.
430
431@defopt url-directory-index-file
432The filename to look for when indexing a directory, default
433@samp{"index.html"}. If this file exists, and is readable, then it
434will be viewed instead of using @code{dired} to view the directory.
435@end defopt
436
437@node info
438@section info
439@cindex Info
440@cindex Texinfo
441@findex Info-goto-node
442
443@example
444info:@var{file}#@var{node}
445@end example
446
447Info URLs are not officially defined. They invoke
448@code{Info-goto-node} with argument @samp{(@var{file})@var{node}}.
449@samp{#@var{node}} is optional, defaulting to @samp{Top}.
450
451@node mailto
452@section mailto
453
454@cindex mailto
455@cindex email
456A mailto URL will send an email message to the address in the
457URL, for example @samp{mailto:foo@@bar.com} would compose a
458message to @samp{foo@@bar.com}.
459
460@defopt url-mail-command
461@vindex mail-user-agent
462The function called whenever url needs to send mail. This should
463normally be left to default from @var{mail-user-agent}. @xref{Mail
464Methods, , Mail-Composition Methods, emacs, GNU Emacs Manual}.
465@end defopt
466
467An @samp{X-Url-From} header field containing the URL of the document
468that contained the mailto URL is added if that URL is known.
469
470RFC 2368 extends the definition of mailto URLs in RFC 1738.
471The form of a mailto URL is
472@example
473@samp{mailto:@var{mailbox}[?@var{header}=@var{contents}[&@var{header}=@var{contents}]]}
474@end example
475@noindent where an arbitary number of @var{header}s can be added. If the
476@var{header} is @samp{body}, then @var{contents} is put in the body
477otherwise a @var{header} header field is created with @var{contents}
478as its contents. Note that the URL library does not consider any
479headers `dangerous' so you should check them before sending the
480message.
481
482@c Fixme: update
483Email messages are defined in @sc{rfc}822.
484
485@node news/nntp/snews
486@section @code{news}, @code{nntp} and @code{snews}
487@cindex news
488@cindex network news
489@cindex usenet
490@cindex NNTP
491@cindex snews
492
493@c draft-gilman-news-url-01
494The network news URL scheme take the following forms following RFC
4951738 except that for compatibility with other clients, host and port
496fields may be included in news URLs though they are properly only
497allowed for nntp an snews.
498
499@table @samp
500@item news:@var{newsgroup}
501Retrieves a list of messages in @var{newsgroup};
502@item news:@var{message-id}
503Retrieves the message with the given @var{message-id};
504@item news:*
505Retrieves a list of all available newsgroups;
506@item nntp://@var{host}:@var{port}/@var{newsgroup}
507@itemx nntp://@var{host}:@var{port}/@var{message-id}
508@itemx nntp://@var{host}:@var{port}/*
509Similar to the @samp{news} versions.
510@end table
511
512@samp{:@var{port}} is optional and defaults to :119.
513
514@samp{snews} is the same as @samp{nntp} except that the default port
515is :563.
516@cindex SSL
517(It is tunnelled through SSL.)
518
519An @samp{nntp} URL is the same as a news URL, except that the URL may
520specify an article by its number.
521
522@defopt url-news-server
523This variable can be used to override the default news server.
524Usually this will be set by the Gnus package, which is used to fetch
525news.
526@cindex environment variable
527@vindex NNTPSERVER
528It may be set from the conventional environment variable
529@code{NNTPSERVER}.
530@end defopt
531
532@node rlogin/telnet/tn3270
533@section rlogin, telnet and tn3270
534@cindex rlogin
535@cindex telnet
536@cindex tn3270
537@cindex terminal emulation
538@findex terminal-emulator
539
540These URL schemes from RFC 1738 for logon via a terminal emulator have
541the form
542@example
543telnet://@var{user}:@var{password}@@@var{host}:@var{port}
544@end example
545but the @code{:@var{password}} component is ignored.
546
547To handle rlogin, telnet and tn3270 URLs, a @code{rlogin},
548@code{telnet} or @code{tn3270} (the program names and arguments are
549hardcoded) session is run in a @code{terminal-emulator} buffer.
550Well-known ports are used if the URL does not specify a port.
551
552@node irc
553@section irc
554@cindex IRC
555@cindex Internet Relay Chat
556@cindex ZEN IRC
557@c Fixme: reference (was http://www.w3.org/Addressing/draft-mirashi-url-irc-01.txt)
558@dfn{Internet Relay Chat} (IRC) is handled by handing off the @sc{irc}
559session to a function named in @code{url-irc-function}.
560
561@defopt url-irc-function
562A function to actually open an IRC connection.
563This function
564must take five arguments, @var{host}, @var{port}, @var{channel},
565@var{user} and @var{password}. The @var{channel} argument specifies the
566channel to join immediately, this can be @code{nil}. By default this is
567@code{url-irc-zenirc}.
568@end defopt
569@defun url-irc-zenirc host port channel user password
570Processes the arguments and lets @code{zenirc} handle the session.
571@end defun
572
573@node data
574@section data
575@cindex data URLs
576
577@example
578data:@r{[}@var{media-type}@r{]}@r{[};@var{base64}@r{]},@var{data}
579@end example
580
581Data URLs contain MIME data in the URL itself. They are defined in
582RFC 2397.
583
584@var{media-type} is a MIME @samp{Content-Type} string, possibly
585including parameters. It defaults to
586@samp{text/plain;charset=US-ASCII}. The @samp{text/plain} can be
587omitted but the charset parameter supplied. If @samp{;base64} is
588present, the @var{data} are base64-encoded.
589
590@node nfs
591@section nfs
592@cindex NFS
593@cindex Network File System
594@cindex automounter
595
596@example
597nfs://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file}
598@end example
599
600The @samp{nfs:} scheme is defined in RFC 2224. It is similar to
601@samp{ftp:} except that it points to a file on a remote host that is
602handled by the automounter on the local host.
603
604@defvar url-nfs-automounter-directory-spec
605@end defvar
606A string saying how to invoke the NFS automounter. Certain @samp{%}
607sequences are recognized:
608
609@table @samp
610@item %h
611The hostname of the NFS server;
612@item %n
613The port number of the NFS server;
614@item %u
615The username to use to authenticate;
616@item %p
617The password to use to authenticate;
618@item %f
619The filename on the remote server;
620@item %%
621A literal @samp{%}.
622@end table
623
624Each can be used any number of times.
625
626@node cid
627@section cid
628@cindex Content-ID
629
630RFC 2111
631
632@node about
633@section about
634
635@node ldap
636@section ldap
637@cindex LDAP
638@cindex Lightweight Directory Access Protocol
639
640The LDAP scheme is defined in RFC 2255.
641
642@node imap
643@section imap
644@cindex IMAP
645
646RFC 2192
647
648@node man
649@section man
650@cindex @command{man}
651@cindex Unix man pages
652@findex man
653
654@example
655@samp{man:@var{page-spec}}
656@end example
657
658This is a non-standard scheme. @var{page-spec} is passed directly to
659the Lisp @code{man} function.
660
661@node Defining New URLs
662@chapter Defining New URLs
663
664@menu
665* Naming conventions::
666* Required functions::
667* Optional functions::
668* Asynchronous fetching::
669* Supporting file-name-handlers::
670@end menu
671
672@node Naming conventions
673@section Naming conventions
674
675@node Required functions
676@section Required functions
677
678@node Optional functions
679@section Optional functions
680
681@node Asynchronous fetching
682@section Asynchronous fetching
683
684@node Supporting file-name-handlers
685@section Supporting file-name-handlers
686
687@node General Facilities
688@chapter General Facilities
689
690@menu
691* Disk Caching::
692* Proxies::
693* Gateways in general::
694* History::
695@end menu
696
697@node Disk Caching
698@section Disk Caching
699@cindex Caching
700@cindex Persistent Cache
701@cindex Disk Cache
702
703The disk cache stores retrieved documents locally, whence they can be
704retrieved more quickly. When requesting a URL that is in the cache,
705the library checks to see if the page has changed since it was last
706retrieved from the remote machine. If not, the local copy is used,
707saving the transmission over the network.
708@cindex Cleaning the cache
709@cindex Clearing the cache
710@cindex Cache cleaning
711Currently the cache isn't cleared automatically.
712@c Running the @code{clean-cache} shell script
713@c fist is recommended, to allow for future cleaning of the cache. This
714@c shell script will remove all files that have not been accessed since it
715@c was last run. To keep the cache pared down, it is recommended that this
716@c script be run from @i{at} or @i{cron} (see the manual pages for
717@c crontab(5) or at(1) for more information)
718
719@defopt url-automatic-caching
720Setting this variable non-@code{nil} causes documents to be cached
721automatically.
722@end defopt
723
724@defopt url-cache-directory
725This variable specifies the
726directory to store the cache files. It defaults to sub-directory
727@file{cache} of @code{url-configuration-directory}.
728@end defopt
729
730@c Fixme: function v. option, but neither used.
731@c @findex url-cache-expired
732@c @defopt url-cache-expired
733@c This is a function to decide whether or not a cache entry has expired.
734@c It takes two times as it parameters and returns non-@code{nil} if the
735@c second time is ``too old'' when compared with the first time.
736@c @end defopt
737
738@defopt url-cache-creation-function
739The cache relies on a scheme for mapping URLs to files in the cache.
740This variable names a function which sets the type of cache to use.
741It takes a URL as argument and returns the absolute file name of the
742corresponding cache file. The two supplied possibilities are
743@code{url-cache-create-filename-using-md5} and
744@code{url-cache-create-filename-human-readable}.
745@end defopt
746
747@defun url-cache-create-filename-using-md5 url
748Creates a cache file name from @var{url} using MD5 hashing.
749@findex md5
750This is creates entries with very few cache collisions and is fast if
751you have the @code{md5} function as a primitive (Emacs 21 and XEmacs).
752@smallexample
753(url-cache-create-filename-using-md5 "http://www.example.com/foo/bar")
754 @result{} "/home/fx/.url/cache/fx/http/com/example/www/b8a35774ad20db71c7c3409a5410e74f"
755@end smallexample
756@end defun
757
758@defun url-cache-create-filename-human-readable url
759Creates a cache file name from @var{url} more obviously connected to
760@var{url} than for @code{url-cache-create-filename-using-md5}, but
761more likely to conflict with other files.
762@smallexample
763(url-cache-create-filename-human-readable "http://www.example.com/foo/bar")
764 @result{} "/home/fx/.url/cache/fx/http/com/example/www/foo/bar"
765@end smallexample
766@end defun
767
768@c Fixme: never actually used currently?
769@c @defopt url-standalone-mode
770@c @cindex Relying on cache
771@c @cindex Cache only mode
772@c @cindex Standalone mode
773@c If this variable is non-@code{nil}, the library relies solely on the
774@c cache for fetching documents and avoids checking if they have changed
775@c on remote servers.
776@c @end defopt
777
778@c With a large cache of documents on the local disk, it can be very handy
779@c when traveling, or any other time the network connection is not active
780@c (a laptop with a dial-on-demand PPP connection, etc). Emacs/W3 can rely
781@c solely on its cache, and avoid checking to see if the page has changed
782@c on the remote server. In the case of a dial-on-demand PPP connection,
783@c this will keep the phone line free as long as possible, only bringing up
784@c the PPP connection when asking for a page that is not located in the
785@c cache. This is very useful for demonstrations as well.
786
787@node Proxies
788@section Proxies and Gatewaying
789
790@c fixme: check/document url-ns stuff
791@cindex proxy servers
792@cindex proxies
793@cindex environment variables
794@vindex HTTP_PROXY
795Proxy servers are commonly used to provide gateways through firewalls
796or as caches serving some more-or-less local network. Each protocol
797(HTTP, FTP, etc.)@: can have a different gateway server. Proxying is
798conventionally configured commonly amongst different programs through
799environment variables of the form @code{@var{protocol}_proxy}, where
800@var{protocol} is one of the supported network protocols (@code{http},
801@code{ftp} etc.). The library recognizes such variables in either
802upper or lower case. Their values are of one of the forms:
803@itemize @bullet
804@item @code{@var{host}:@var{port}}
805@item A full URL;
806@item Simply a host name.
807@end itemize
808
809@vindex NO_PROXY
810The @code{NO_PROXY} environment variable specifies URLs that should be
811excluded from proxying (on servers that should be contacted directly).
812This should be a comma-separated list of hostnames, domain names, or a
813mixture of both. Asterisks can be used as wildcards, but other
814clients may not support that. Domain names may be indicated by a
815leading dot. For example:
816@example
817NO_PROXY="*.aventail.com,home.com,.seanet.com"
818@end example
819@noindent says to contact all machines in the @samp{aventail.com} and
820@samp{seanet.com} domains directly, as well as the machine named
821@samp{home.com}. If @code{NO_PROXY} isn't defined, @code{no_PROXY}
822and @code{no_proxy} are also tried, in that order.
823
824Proxies may also be specified directly in Lisp.
825
826@defopt url-proxy-services
827This variable is an alist of URL schemes and proxy servers that
828gateway them. The items are of the form @w{@code{(@var{scheme}
829. @var{host}:@var{portnumber})}}, says that the URL @var{scheme} is
830gatewayed through @var{portnumber} on the specified @var{host}. An
831exception is the pseudo scheme @code{"no_proxy"}, which is paired with
832a regexp matching host names not to be proxied. This variable is
833initialized from the environment as above.
834
835@example
836(setq url-proxy-services
837 '(("http" . "proxy.aventail.com:80")
838 ("no_proxy" . "^.*\\(aventail\\|seanet\\)\\.com")))
839@end example
840@end defopt
841
842@node Gateways in general
843@section Gateways in General
844@cindex gateways
845@cindex firewalls
846
847The library provides a general gateway layer through which all
848networking passes. It can both control access to the network and
849provide access through gateways in firewalls. This may make direct
850connexions in some cases and pass through some sort of gateway in
851others.@footnote{Proxies (which only operate over HTTP) are
852implemented using this.} The library's basic function responsible for
853making connexions is @code{url-open-stream}.
854
855@defun url-open-stream name buffer host service
856@cindex opening a stream
857@cindex stream, opening
858Open a stream to @var{host}, possibly via a gateway. The other
859arguments are as for @code{open-network-stream}. This will not make a
860connexion if @code{url-gateway-unplugged} is non-@code{nil}.
861@end defun
862
863@defvar url-gateway-local-host-regexp
864This is a regular expression that matches local hosts that do not
865require the use of a gateway. If @code{nil}, all connexions are made
866through the gateway.
867@end defvar
868
869@defvar url-gateway-method
870This variable controls which gateway method is used. It may be useful
871to bind it temporarily in some applications. It has values taken from
872a list of symbols. Possible values are:
873
874@table @code
875@item telnet
876@cindex @command{telnet}
877Use this method if you must first telnet and log into a gateway host,
878and then run telnet from that host to connect to outside machines.
879
880@item rlogin
881@cindex @command{rlogin}
882This method is identical to @code{telnet}, but uses @command{rlogin}
883to log into the remote machine without having to send the username and
884password over the wire every time.
885
886@item socks
887@cindex @sc{socks}
888Use if the firewall has a @sc{socks} gateway running on it. The
889@sc{socks} v5 protocol is defined in RFC 1928.
890
891@c @item ssl
892@c This probably shouldn't be documented
893@c Fixme: why not? -- fx
894
895@item native
896This method uses Emacs's builtin networking directly. This is the
897default. It can be used only if there is no firewall blocking access.
898@end table
899@end defvar
900
901The following variables control the gateway methods.
902
903@defopt url-gateway-telnet-host
904The gateway host to telnet to. Once logged in there, you then telnet
905out to the hosts you want to connect to.
906@end defopt
907@defopt url-gateway-telnet-parameters
908This should be a list of parameters to pass to the @command{telnet} program.
909@end defopt
910@defopt url-gateway-telnet-password-prompt
911This is a regular expression that matches the password prompt when
912logging in.
913@end defopt
914@defopt url-gateway-telnet-login-prompt
915This is a regular expression that matches the username prompt when
916logging in.
917@end defopt
918@defopt url-gateway-telnet-user-name
919The username to log in with.
920@end defopt
921@defopt url-gateway-telnet-password
922The password to send when logging in.
923@end defopt
924@defopt url-gateway-prompt-pattern
925This is a regular expression that matches the shell prompt.
926@end defopt
927
928@defopt url-gateway-rlogin-host
929Host to @samp{rlogin} to before telnetting out.
930@end defopt
931@defopt url-gateway-rlogin-parameters
932Parametres to pass to @samp{rsh}.
933@end defopt
934@defopt url-gateway-rlogin-user-name
935User name to use when logging in to the gateway.
936@end defopt
937@defopt url-gateway-prompt-pattern
938This is a regular expression that matches the shell prompt.
939@end defopt
940
941@defopt socks-server
942This specifies the default server, it takes the form
943@w{@code{("Default server" @var{server} @var{port} @var{version})}}
944where @var{version} can be either 4 or 5.
945@end defopt
946@defvar socks-password
947If this is @code{nil} then you will be asked for the passward,
948otherwise it will be used as the password for authenticating you to
949the @sc{socks} server.
950@end defvar
951@defvar socks-username
952This is the username to use when authenticating yourself to the
953@sc{socks} server. By default this is your login name.
954@end defvar
955@defvar socks-timeout
956This controls how long, in seconds, to wait for responses from the
957@sc{socks} server; it is 5 by default.
958@end defvar
959@c fixme: these have been effectively commented-out in the code
960@c @defopt socks-server-aliases
961@c This a list of server aliases. It is a list of aliases of the form
962@c @var{(alias hostname port version)}.
963@c @end defopt
964@c @defopt socks-network-aliases
965@c This a list of network aliases. Each entry in the list takes the form
966@c @var{(alias (network))} where @var{alias} is a string that names the
967@c @var{network}. The networks can contain a pair (not a dotted pair) of
968@c @sc{ip} addresses which specify a range of @sc{ip} addresses, an @sc{ip}
969@c address and a netmask, a domain name or a unique hostname or @sc{ip}
970@c address.
971@c @end defopt
972@c @defopt socks-redirection-rules
973@c This a list of redirection rules. Each rule take the form
974@c @var{(Destination network Connection type)} where @var{Destination
975@c network} is a network alias from @code{socks-network-aliases} and
976@c @var{Connection type} can be @code{nil} in which case a direct
977@c connection is used, or it can be an alias from
978@c @code{socks-server-aliases} in which case that server is used as a
979@c proxy.
980@c @end defopt
981@defopt socks-nslookup-program
982@cindex @command{nslookup}
983This the @samp{nslookup} program. It is @code{"nslookup"} by default.
984@end defopt
985
986@menu
987* Suppressing network connexions::
988@end menu
989@c * Broken hostname resolution::
990
991@node Suppressing network connexions
992@subsection Suppressing Network Connexions
993
994@cindex network connexions, suppressing
995@cindex suppressing network connexions
996@cindex bugs, HTML
997@cindex HTML `bugs'
998In some circumstances it is desirable to suppress making network
999connexions. A typical case is when rendering HTML in a mail user
1000agent, when external URLs should not be activated, particularly to
1001avoid `bugs' which `call home' by fetch single-pixel images and the
1002like. To arrange this, bind the following variable for the duration
1003of such processing.
1004
1005@defvar url-gateway-unplugged
1006If this variable is non-@code{nil} new network connexions are never
1007opened by the URL library.
1008@end defvar
1009
1010@c @node Broken hostname resolution
1011@c @subsection Broken Hostname Resolution
1012
1013@c @cindex hostname resolver
1014@c @cindex resolver, hostname
1015@c Some C libraries do not include the hostname resolver routines in
1016@c their static libraries. If Emacs was linked statically, and was not
1017@c linked with the resolver libraries, it wil not be able to get to any
1018@c machines off the local network. This is characterized by being able
1019@c to reach someplace with a raw ip number, but not its hostname
1020@c (@url{http://129.79.254.191/} works, but
1021@c @url{http://www.cs.indiana.edu/} doesn't). This used to happen on
1022@c SunOS4 and Ultrix, but is now probably now rare. If Emacs can't be
1023@c rebuilt linked against the resolver library, it can use the external
1024@c @command{nslookup} program instead.
1025
1026@c @defopt url-gateway-broken-resolution
1027@c @cindex @code{nslookup} program
1028@c @cindex program, @code{nslookup}
1029@c If non-@code{nil}, this variable says to use the program specified by
1030@c @code{url-gateway-nslookup-program} program to do hostname resolution.
1031@c @end defopt
1032
1033@c @defopt url-gateway-nslookup-program
1034@c The name of the program to do hostname lookup if Emacs can't do it
1035@c directly. This program should expect a single argument on the command
1036@c line---the hostname to resolve---and should produce output similar to
1037@c the standard Unix @command{nslookup} program:
1038@c @example
1039@c Name: www.cs.indiana.edu
1040@c Address: 129.79.254.191
1041@c @end example
1042@c @end defopt
1043
1044@node History
1045@section History
1046
1047The library can maintain a global history list tracking URLs accessed.
1048URL completion can be done from it. The history mechanism is set up
1049@findex url-do-setup
1050automatically via @code{url-do-setup} when it is configured to be on.
1051Note that the size of the history list is currently not limited.
1052
1053@vindex url-history-hash-table
1054The history `list' is actually a hash table,
1055@code{url-history-hash-table}. It contains access times keyed by URL
1056strings. The times are in the format returned by @code{current-time}.
1057
1058@defun url-history-update-url url time
1059This function updates the hsitory table with an entry for @var{url}
1060accessed at the gievn @var{time}.
1061@end defun
1062
1063@defopt url-history-track
1064If non-@code{nil}, the library will keep track of all the URLs
1065accessed. If is is @code{t}, the list is saved to disk at the end of
1066each Emacs session. The default is @code{nil}.
1067@end defopt
1068
1069@defopt url-history-file
1070The file storing the history list between sessions. It defaults to
1071@file{history} in @code{url-configuration-directory}.
1072@end defopt
1073
1074@defopt url-history-save-interval
1075@findex url-history-setup-save-timer
1076The number of seconds between automatic saves of the history list.
1077Default is one hour. Note that if you change this variable directly,
1078rather than using Custom, after @code{url-do-setup} has been run, you
1079need to run the function @code{url-history-setup-save-timer}.
1080@end defopt
1081
1082@defun url-history-parse-history &optional fname
1083Parses the history file @var{fname} (default @code{url-history-file})
1084and sets up the history list.
1085@end defun
1086
1087@defun url-history-save-history &optional fname
1088Saves the current history to file @var{fname} (default
1089@code{url-history-file}).
1090@end defun
1091
1092@defun url-completion-function string predicate function
1093You can use this function to do completion of URLs from the history.
1094@end defun
1095
1096@node Customization
1097@chapter Customization
1098
1099@section Environment Variables
1100
1101@cindex environment variables
1102The following environment variables affect the library's operation at
1103startup.
1104
1105@table @code
1106@item TMPDIR
1107@vindex TMPDIR
1108@vindex url-temporary-directory
1109If this is defined, @var{url-temporary-directory} is initialized from
1110it.
1111@end table
1112
1113@section General User Options
1114
1115The following user options, settable with Customize, affect the
1116general operation of the package.
1117
1118@defopt url-debug
1119@cindex debugging
1120Specifies the types of debug messages the library which are logged to
1121the @code{*URL-DEBUG*} buffer.
1122@code{t} means log all messages.
1123A number means log all messages and show them with @code{message}.
1124If may also be a list of the types of messages to be logged.
1125@end defopt
1126@defopt url-personal-mail-address
1127@end defopt
1128@defopt url-privacy-level
1129@end defopt
1130@defopt url-uncompressor-alist
1131@end defopt
1132@defopt url-passwd-entry-func
1133@end defopt
1134@defopt url-standalone-mode
1135@end defopt
1136@defopt url-bad-port-list
1137@end defopt
1138@defopt url-max-password-attempts
1139@end defopt
1140@defopt url-temporary-directory
1141@end defopt
1142@defopt url-show-status
1143@end defopt
1144@defopt url-confirmation-func
1145The function to use for asking yes or no functions. This is normally
1146either @code{y-or-n-p} or @code{yes-or-no-p}, but could be another
1147function taking a single argument (the prompt) and returning @code{t}
1148only if an affirmative answer is given.
1149@end defopt
1150@defopt url-gateway-method
1151@c fixme: describe gatewaying
1152A symbol specifying the type of gateway support to use fro connexions
1153from the local machine. The supported methods are:
1154
1155@table @code
1156@item telnet
1157Run telnet in a subprocess to connect;
1158@item rlogin
1159Rlogin to another machine to connect;
1160@item socks
1161Connect through a socks server;
1162@item ssl
1163Connect with SSL;
1164@item native
1165Connect directly.
1166@end table
1167@end defopt
1168
1169@node Function Index
1170@unnumbered Command and Function Index
1171@printindex fn
1172
1173@node Variable Index
1174@unnumbered Variable Index
1175@printindex vr
1176
1177@node Concept Index
1178@unnumbered Concept Index
1179@printindex cp
1180
1181@setchapternewpage odd
1182@contents
1183@bye
1184
1185@ignore
1186 arch-tag: c96be356-7e2d-4196-bcda-b13246c5c3f0
1187@end ignore
diff --git a/src/ChangeLog b/src/ChangeLog
index 3064999717f..28030aef0e3 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,21 @@
12004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 12004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2 2
3 * emacs.c (Fdump_emacs): Add ! defined (SYSTEM_MALLOC) around
4 reset_malloc_hooks.
5
6 * keyboard.c (handle_async_input, input_available_signal): Add
7 ! defined (SYSTEM_MALLOC) around thread code.
8
9 * alloc.c: Add comment about the reason for (UN)BLOCK_INPUT_ALLOC.
10
112004-12-07 Stefan <monnier@iro.umontreal.ca>
12
13 * eval.c (init_eval_once): Increase max_specpdl_size to 1000.
14
15 * config.in: Regenerate.
16
172004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
18
3 * xmenu.c (Fx_popup_menu): Correct documentation about position. 19 * xmenu.c (Fx_popup_menu): Correct documentation about position.
4 (xmenu_show): Do not call XTranslateCoordinates. Adjust position 20 (xmenu_show): Do not call XTranslateCoordinates. Adjust position
5 if not given by a mouse click to correspond with x-popup-menu 21 if not given by a mouse click to correspond with x-popup-menu
@@ -100,13 +116,10 @@
100 116
1012004-11-30 Kenichi Handa <handa@m17n.org> 1172004-11-30 Kenichi Handa <handa@m17n.org>
102 118
103 * term.c (encode_terminal_buf, encode_terminal_bufsize): New 119 * term.c (encode_terminal_buf, encode_terminal_bufsize): New variables.
104 variables.
105 (encode_terminal_code): Argument changed. Encode all 120 (encode_terminal_code): Argument changed. Encode all
106 characters at once, and return a pointer to the result of 121 characters at once, and return a pointer to the result of encoding.
107 encoding. 122 (write_glyphs): Decide coding here. Adjusted for the above change.
108 (write_glyphs): Decide coding here. Adjusted for the above
109 change.
110 (insert_glyphs): Likewise. 123 (insert_glyphs): Likewise.
111 (term_init): Initialize encode_terminal_bufsize to 0. 124 (term_init): Initialize encode_terminal_bufsize to 0.
112 125
diff --git a/src/alloc.c b/src/alloc.c
index 56f8be25f61..4cf5de46d21 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -91,6 +91,23 @@ extern __malloc_size_t __malloc_extra_blocks;
91 91
92#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD) 92#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
93 93
94/* When GTK uses the file chooser dialog, different backends can be loaded
95 dynamically. One such a backend is the Gnome VFS backend that gets loaded
96 if you run Gnome. That backend creates several threads and also allocates
97 memory with malloc.
98
99 If Emacs sets malloc hooks (! SYSTEM_MALLOC) and the emacs_blocked_*
100 functions below are called from malloc, there is a chance that one
101 of these threads preempts the Emacs main thread and the hook variables
102 end up in a inconsistent state. So we have a mutex to prevent that (note
103 that the backend handles concurrent access to malloc within its own threads
104 but Emacs code running in the main thread is not included in that control).
105
106 When UNBLOCK_INPUT is called, revoke_input_signal may be called. If this
107 happens in one of the backend threads we will have two threads that tries
108 to run Emacs code at once, and the code is not prepared for that.
109 To prevent that, we only call BLOCK/UNBLOCK from the main thread. */
110
94static pthread_mutex_t alloc_mutex; 111static pthread_mutex_t alloc_mutex;
95pthread_t main_thread; 112pthread_t main_thread;
96 113
diff --git a/src/config.in b/src/config.in
index 65a320bca42..a7b29aac1c9 100644
--- a/src/config.in
+++ b/src/config.in
@@ -1,7 +1,8 @@
1/* src/config.in. Generated from configure.in by autoheader. */ 1/* src/config.in. Generated from configure.in by autoheader. */
2 2
3/* GNU Emacs site configuration template file. 3/* GNU Emacs site configuration template file.
4 Copyright (C) 1988, 93, 94, 99, 2000, 2002 Free Software Foundation, Inc. 4 Copyright (C) 1988, 1993, 1994, 1999, 2000, 2002, 2004
5 Free Software Foundation, Inc.
5 6
6This file is part of GNU Emacs. 7This file is part of GNU Emacs.
7 8
@@ -775,9 +776,9 @@ Boston, MA 02111-1307, USA. */
775/* If using the C implementation of alloca, define if you know the 776/* If using the C implementation of alloca, define if you know the
776 direction of stack growth for your system; otherwise it will be 777 direction of stack growth for your system; otherwise it will be
777 automatically deduced at run-time. 778 automatically deduced at run-time.
778 STACK_DIRECTION > 0 => grows toward higher addresses 779 STACK_DIRECTION > 0 => grows toward higher addresses
779 STACK_DIRECTION < 0 => grows toward lower addresses 780 STACK_DIRECTION < 0 => grows toward lower addresses
780 STACK_DIRECTION = 0 => direction of growth unknown */ 781 STACK_DIRECTION = 0 => direction of growth unknown */
781#undef STACK_DIRECTION 782#undef STACK_DIRECTION
782 783
783/* Define to 1 if you have the ANSI C header files. */ 784/* Define to 1 if you have the ANSI C header files. */
@@ -932,7 +933,7 @@ Boston, MA 02111-1307, USA. */
932/* Don't try to switch on inline handling as detected by AC_C_INLINE 933/* Don't try to switch on inline handling as detected by AC_C_INLINE
933 generally, because even if non-gcc compilers accept `inline', they 934 generally, because even if non-gcc compilers accept `inline', they
934 may reject `extern inline'. */ 935 may reject `extern inline'. */
935#ifdef __GNUC__ 936#if defined (__GNUC__) && defined (OPTIMIZE)
936#define INLINE __inline__ 937#define INLINE __inline__
937#else 938#else
938#define INLINE 939#define INLINE
@@ -980,7 +981,13 @@ Boston, MA 02111-1307, USA. */
980/* Tell regex.c to use a type compatible with Emacs. */ 981/* Tell regex.c to use a type compatible with Emacs. */
981#define RE_TRANSLATE_TYPE Lisp_Object 982#define RE_TRANSLATE_TYPE Lisp_Object
982#define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C) 983#define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
983#define RE_TRANSLATE_P(TBL) (XFASTINT (TBL) != 0) 984#ifdef make_number
985/* If make_number is a macro, use it. */
986#define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
987#else
988/* If make_number is a function, avoid it. */
989#define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
990#endif
984#endif 991#endif
985 992
986/* Avoid link-time collision with system mktime if we will use our own. */ 993/* Avoid link-time collision with system mktime if we will use our own. */
diff --git a/src/emacs.c b/src/emacs.c
index cbd592f9103..fb7c573836a 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -2237,7 +2237,7 @@ You must run Emacs in batch mode in order to dump it. */)
2237 memory_warnings (my_edata, malloc_warning); 2237 memory_warnings (my_edata, malloc_warning);
2238#endif /* not WINDOWSNT */ 2238#endif /* not WINDOWSNT */
2239#endif 2239#endif
2240#ifdef HAVE_GTK_AND_PTHREAD 2240#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
2241 /* Pthread may call malloc before main, and then we will get an endless 2241 /* Pthread may call malloc before main, and then we will get an endless
2242 loop, because pthread_self (see alloc.c) calls malloc the first time 2242 loop, because pthread_self (see alloc.c) calls malloc the first time
2243 it is called on some systems. */ 2243 it is called on some systems. */
diff --git a/src/eval.c b/src/eval.c
index 4a63b022fd6..0eb519fbfca 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -204,7 +204,7 @@ init_eval_once ()
204 specpdl_size = 50; 204 specpdl_size = 50;
205 specpdl = (struct specbinding *) xmalloc (specpdl_size * sizeof (struct specbinding)); 205 specpdl = (struct specbinding *) xmalloc (specpdl_size * sizeof (struct specbinding));
206 specpdl_ptr = specpdl; 206 specpdl_ptr = specpdl;
207 max_specpdl_size = 650; 207 max_specpdl_size = 1000;
208 max_lisp_eval_depth = 300; 208 max_lisp_eval_depth = 300;
209 209
210 Vrun_hooks = Qnil; 210 Vrun_hooks = Qnil;
diff --git a/src/keyboard.c b/src/keyboard.c
index 9b42bd06b50..052ef2d38b7 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -6849,7 +6849,7 @@ handle_async_input ()
6849#ifdef BSD4_1 6849#ifdef BSD4_1
6850 extern int select_alarmed; 6850 extern int select_alarmed;
6851#endif 6851#endif
6852#ifdef HAVE_GTK_AND_PTHREAD 6852#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
6853 extern pthread_t main_thread; 6853 extern pthread_t main_thread;
6854 if (pthread_self () != main_thread) 6854 if (pthread_self () != main_thread)
6855 { 6855 {
@@ -6895,7 +6895,7 @@ input_available_signal (signo)
6895{ 6895{
6896 /* Must preserve main program's value of errno. */ 6896 /* Must preserve main program's value of errno. */
6897 int old_errno = errno; 6897 int old_errno = errno;
6898#ifdef HAVE_GTK_AND_PTHREAD 6898#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
6899 extern pthread_t main_thread; 6899 extern pthread_t main_thread;
6900 if (pthread_self () != main_thread) 6900 if (pthread_self () != main_thread)
6901 { 6901 {