diff options
| author | Karoly Lorentey | 2004-12-08 22:21:07 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2004-12-08 22:21:07 +0000 |
| commit | b3be62d4c924fd8aa8b6fdfa96b03a015c586285 (patch) | |
| tree | 84d262494fc16e4a13f68dad39f2bbcd566a98d4 | |
| parent | fad2f6858075f49c4c8fd16f0535c287e3f14ac3 (diff) | |
| parent | 3073399bdafd5283661fae867983d0d30c7f2536 (diff) | |
| download | emacs-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
40 files changed, 1684 insertions, 293 deletions
| @@ -1,6 +1,11 @@ | |||
| 1 | 2004-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 | |||
| 1 | 2004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | 6 | 2004-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 | |||
| 3 | dnl autoconf | 3 | dnl autoconf |
| 4 | dnl in the directory containing this script. | 4 | dnl in the directory containing this script. |
| 5 | dnl | 5 | dnl |
| 6 | dnl Copyright (C) 1994, 95, 96, 1999, 2000, 01, 02, 03, 2004 | 6 | dnl Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003, 2004 |
| 7 | dnl Free Software Foundation, Inc. | 7 | dnl Free Software Foundation, Inc. |
| 8 | dnl | 8 | dnl |
| 9 | dnl This file is part of GNU Emacs. | 9 | dnl This file is part of GNU Emacs. |
| @@ -2767,7 +2767,8 @@ if test "${REL_ALLOC}" = "yes" ; then | |||
| 2767 | fi | 2767 | fi |
| 2768 | 2768 | ||
| 2769 | AH_TOP([/* GNU Emacs site configuration template file. | 2769 | AH_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 | ||
| 2772 | This file is part of GNU Emacs. | 2773 | This 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. */ |
| @@ -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 @@ | |||
| 1 | 2004-12-06 Stefan <monnier@iro.umontreal.ca> | 1 | 2004-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 | |||
| 13 | 2004-12-07 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 14 | |||
| 15 | * isearch.el (isearch-quote-char): Fix up typo in last change. | ||
| 16 | |||
| 17 | 2004-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 | |||
| 28 | 2004-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 | ||
| 7 | 2004-12-07 Jay Belanger <belanger@truman.edu> | 33 | 2004-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 | ||
| 516 | in 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 | ||
| 2925 | in 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. | |||
| 655 | This function assumes that the events can be stored in a string." | 656 | This 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 @@ | |||
| 1 | 2004-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 | |||
| 7 | 2004-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 | |||
| 12 | 2004-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 | |||
| 31 | 2004-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 | |||
| 61 | 2004-11-25 Reiner Steib <Reiner.Steib@gmx.de> | ||
| 62 | |||
| 63 | * message.el (message-forbidden-properties): Fixed typo in doc | ||
| 64 | string. | ||
| 65 | |||
| 66 | 2004-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 | |||
| 71 | 2004-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 | |||
| 78 | 2004-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 | |||
| 83 | 2004-11-22 Marek Martin <marek.martin@mum.pri.ee> (tiny change) | ||
| 84 | |||
| 85 | * nnfolder.el (nnfolder-request-create-group): Save current buffer. | ||
| 86 | |||
| 1 | 2004-11-22 Stefan Monnier <monnier@iro.umontreal.ca> | 87 | 2004-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. |
| 4640 | If nil, use subject instead." | 4640 | If 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. |
| 4646 | If nil, use subject instead." | 4646 | If 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. |
| 4652 | If nil, use subject instead." | 4652 | If 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. | ||
| 65 | If LITERAL is non-nil, insert NEWTEXT literally. Return a new | ||
| 66 | string containing the replacements. | ||
| 67 | |||
| 68 | This 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. | ||
| 73 | If LITERAL is non-nil, insert NEWTEXT literally. Return a new | ||
| 74 | string containing the replacements. | ||
| 75 | |||
| 76 | This 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 | |||
| 146 | the article has been posted to will be inserted there. | 146 | the article has been posted to will be inserted there. |
| 147 | If this variable is nil, no such courtesy message will be added." | 147 | If 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. |
| 374 | If nil, don't insert any text in the body." | 374 | If 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. |
| 2407 | The values of the properties are ignored, only the property names are used.") | 2405 | The 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'. | |||
| 2426 | See also `message-forbidden-properties'." | 2424 | See 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 | |||
| 43 | or the gnus-group-spam-exit-processor-report-gmane group/topic parameter | 43 | or the gnus-group-spam-exit-processor-report-gmane group/topic parameter |
| 44 | instead." | 44 | instead." |
| 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 @@ | |||
| 1 | 2004-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 | |||
| 6 | 2004-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 | |||
| 1 | 2004-12-06 Jay Belanger <belanger@truman.edu> | 12 | 2004-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 | ||
| 110 | 2004-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 | |||
| 117 | 2004-11-16 Reiner Steib <Reiner.Steib@gmx.de> | ||
| 118 | |||
| 119 | * gnus.texi (Filtering Spam Using The Spam ELisp Package): | ||
| 120 | |||
| 99 | 2004-11-02 Katsumi Yamaoka <yamaoka@jpl.org> | 121 | 2004-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 |
| 45 | DVI_TARGETS = emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \ | 45 | DVI_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 |
| 53 | INFOSOURCES = info.texi | 53 | INFOSOURCES = info.texi |
| @@ -291,6 +291,11 @@ woman.dvi: woman.texi | |||
| 291 | org.dvi: org.texi | 291 | org.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 | ||
| 296 | url.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 |
| 296 | speedbar.dvi: speedbar.texi | 301 | speedbar.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 | |||
| 761 | frames yet to be created. Customize the option @code{scroll-bar-mode} | 761 | frames yet to be created. Customize the option @code{scroll-bar-mode} |
| 762 | to control the use of scroll bars at startup. You can use it to specify | 762 | to control the use of scroll bars at startup. You can use it to specify |
| 763 | that they are placed at the right of windows if you prefer that. You | 763 | that they are placed at the right of windows if you prefer that. You |
| 764 | can use the X resource @samp{verticalScrollBars} to control the initial | 764 | have to set this variable through the @samp{Customize} interface |
| 765 | setting of Scroll Bar mode similarly. @xref{Resources}. | 765 | (@pxref{Easy Customization}). Otherwise, it will not work properly. |
| 766 | You can use the X resource @samp{verticalScrollBars} to control the | ||
| 767 | initial 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 | |||
| 13244 | argument. It should return a non-@code{nil} value if it thinks that the | 13244 | argument. It should return a non-@code{nil} value if it thinks that the |
| 13245 | mail belongs in that group. | 13245 | mail belongs in that group. |
| 13246 | 13246 | ||
| 13247 | @cindex @samp{bogus} group | ||
| 13247 | The last of these groups should always be a general one, and the regular | 13248 | The last of these groups should always be a general one, and the regular |
| 13248 | expression should @emph{always} be @samp{*} so that it matches any mails | 13249 | expression should @emph{always} be @samp{""} so that it matches any mails |
| 13249 | that haven't been matched by any of the other regexps. (These rules are | 13250 | that haven't been matched by any of the other regexps. (These rules are |
| 13250 | processed from the beginning of the alist toward the end. The first | 13251 | processed from the beginning of the alist toward the end. The first rule |
| 13251 | rule to make a match will ``win'', unless you have crossposting enabled. | 13252 | to make a match will ``win'', unless you have crossposting enabled. In |
| 13252 | In that case, all matching rules will ``win''.) When new groups are | 13253 | that case, all matching rules will ``win''.) If no rule matched, the mail |
| 13253 | created by splitting mail, you may want to run | 13254 | will 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. | 13255 | splitting mail, you may want to run @code{gnus-group-find-new-groups} to |
| 13256 | see the new groups. This also applies to the @samp{bogus} group. | ||
| 13255 | 13257 | ||
| 13256 | If you like to tinker with this yourself, you can set this variable to a | 13258 | If you like to tinker with this yourself, you can set this variable to a |
| 13257 | function of your choice. This function will be called without any | 13259 | function 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 | |||
| 13268 | The mail back ends all support cross-posting. If several regexps match, | 13270 | The mail back ends all support cross-posting. If several regexps match, |
| 13269 | the mail will be ``cross-posted'' to all those groups. | 13271 | the 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 |
| 13271 | that no articles are crossposted to the general (@samp{*}) group. | 13273 | that 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 |
| 1869 | Directory used by many mailey things. The default is @file{~/Mail/}. | 1869 | Directory used by many mailey things. The default is @file{~/Mail/}. |
| 1870 | All 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 | ||
| 22 | This file documents the URL loading package. | ||
| 23 | |||
| 24 | Copyright (C) 1996, 1997, 1998, 1999, 2002, 2004 Free Software Foundation | ||
| 25 | Copyright (C) 1993, 1994, 1995, 1996 William M. Perry | ||
| 26 | |||
| 27 | Permission is granted to copy, distribute and/or modify this document | ||
| 28 | under the terms of the GNU Free Documentation License, Version 1.1 or | ||
| 29 | any later version published by the Free Software Foundation; with the | ||
| 30 | Invariant Sections being | ||
| 31 | ``GNU GENERAL PUBLIC LICENSE''. A copy of the | ||
| 32 | license is included in the section entitled ``GNU Free Documentation | ||
| 33 | License.'' | ||
| 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 | ||
| 52 | Copyright @copyright{} 1993, 1994, 1995, 1996 William M. Perry@* | ||
| 53 | Copyright @copyright{} 1996, 1997, 1998, 1999, 2002 Free Software Foundation | ||
| 54 | |||
| 55 | Permission is granted to copy, distribute and/or modify this document | ||
| 56 | under the terms of the GNU Free Documentation License, Version 1.1 or | ||
| 57 | any later version published by the Free Software Foundation; with the | ||
| 58 | Invariant Sections being | ||
| 59 | ``GNU GENERAL PUBLIC LICENSE''. A copy of the | ||
| 60 | license is included in the section entitled ``GNU Free Documentation | ||
| 61 | License.'' | ||
| 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 | ||
| 89 | updates RFC 1738 and RFC 1808. RFC 2016 defines uniform resource | ||
| 90 | agents. | ||
| 91 | |||
| 92 | URIs 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 | |||
| 96 | FTP NFS, HTTP, HTTPS, @code{rlogin}, @code{telnet}, tn3270, | ||
| 97 | IRC 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 | ||
| 103 | where @samp{@r{[}} and @samp{@r{]}} delimit optional parts. | ||
| 104 | @var{userinfo} sometimes takes the form @var{username}:@var{password} | ||
| 105 | but you should beware of the security risks of sending cleartext | ||
| 106 | passwords. @var{hostname} may be a domain name or a dotted decimal | ||
| 107 | address. If the @samp{:@var{port}} is omitted then the library will | ||
| 108 | use the `well known' port for that service when accessing URLs. With | ||
| 109 | the possible exception of @code{telnet}, it is rare for ports to be | ||
| 110 | specified, and it is possible using a non-standard port may have | ||
| 111 | undesired consequences if a different service is listening on that | ||
| 112 | port (e.g.@: an HTTP URL specifying the SMTP port can cause mail to be | ||
| 113 | sent).@c , but @xref{Other Variables, url-bad-port-list}. | ||
| 114 | The meaning of | ||
| 115 | the @var{path} component depends on the service. | ||
| 116 | |||
| 117 | The library depends on MIME support provided by the @samp{mm-} | ||
| 118 | packages from Gnus 5.8 or later. @xref{(emacs-mime)Top, The MIME | ||
| 119 | library}. | ||
| 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 | ||
| 132 | The directory in which URL configuration files, the cache etc., | ||
| 133 | reside. Default @file{~/.url}. | ||
| 134 | @end defvar | ||
| 135 | |||
| 136 | @node Parsed URLs | ||
| 137 | @section Parsed URLs | ||
| 138 | @cindex parsed URLs | ||
| 139 | The library functions typically operate on @dfn{parsed} versions of | ||
| 140 | URLs. 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 | ||
| 149 | is the type of the URL scheme, e.g.@: @code{http} | ||
| 150 | @item user | ||
| 151 | is the username associated with it, or @code{nil}; | ||
| 152 | @item password | ||
| 153 | is the user password associated with it, or @code{nil}; | ||
| 154 | @item host | ||
| 155 | is the host name associated with it, or @code{nil}; | ||
| 156 | @item port | ||
| 157 | is the port number associated with it, or @code{nil}; | ||
| 158 | @item file | ||
| 159 | is the `file' part of it, or @code{nil}. This doesn't necessarily | ||
| 160 | actually refer to a file; | ||
| 161 | @item target | ||
| 162 | is the target part, or @code{nil}; | ||
| 163 | @item attributes | ||
| 164 | is the attributes associated with it, or @code{nil}; | ||
| 165 | @item full | ||
| 166 | is @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 | ||
| 188 | These 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 | |||
| 193 | There are functions for parsing and unparsing between the string and | ||
| 194 | vector forms. | ||
| 195 | |||
| 196 | @defun url-generic-parse-url url | ||
| 197 | Return a parsed version of the string @var{url}. | ||
| 198 | @end defun | ||
| 199 | |||
| 200 | @defun url-recreate-url url | ||
| 201 | @cindex unparsing URLs | ||
| 202 | Recreates 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 | ||
| 209 | Retrieve @var{url} synchronously and return a buffer containing the | ||
| 210 | data. @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, | ||
| 212 | info, or mailto URLs that need no further processing). | ||
| 213 | @end defun | ||
| 214 | |||
| 215 | @defun url-retrieve url callback &optional cbargs | ||
| 216 | Retrieve @var{url} asynchronously and call @var{callback} with args | ||
| 217 | @var{cbargs} when finished. The callback is called when the object | ||
| 218 | has been completely retrieved, with the current buffer containing the | ||
| 219 | object and any MIME headers associated with it. @var{url} is either a | ||
| 220 | string or a parsed URL structure. Returns the buffer @var{url} will | ||
| 221 | load 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 | |||
| 251 | The scheme @code{http} is Hypertext Transfer Protocol. The library | ||
| 252 | supports version 1.1, specified in RFC 2616. (This supersedes 1.0, | ||
| 253 | defined in RFC 1945) HTTP URLs have the following form, where most of | ||
| 254 | the parts are optional: | ||
| 255 | @example | ||
| 256 | http://@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 | |||
| 264 | The scheme @code{https} is a secure version of @code{http}, with | ||
| 265 | transmission via SSL. It is defined in RFC 2069. Its default port is | ||
| 266 | 443. 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 | ||
| 271 | This controls honouring of HTTP @samp{Refresh} headers by which | ||
| 272 | servers can direct clients to reload documents from the same URL or a | ||
| 273 | or different one. @code{nil} means they will not be honoured, | ||
| 274 | @code{t} (the default) means they will always be honoured, and | ||
| 275 | otherwise 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 | ||
| 290 | The file in which cookies are stored, defaulting to @file{cookies} in | ||
| 291 | the directory specified by @code{url-configuration-directory}. | ||
| 292 | @end defopt | ||
| 293 | |||
| 294 | @defopt url-cookie-confirmation | ||
| 295 | Specifies whether confirmation is require to accept cookies. | ||
| 296 | @end defopt | ||
| 297 | |||
| 298 | @defopt url-cookie-multiple-line | ||
| 299 | Specifies whether to put all cookies for the server on one line in the | ||
| 300 | HTTP request to satisfy broken servers like | ||
| 301 | @url{http://www.hotmail.com}. | ||
| 302 | @end defopt | ||
| 303 | |||
| 304 | @defopt url-cookie-trusted-urls | ||
| 305 | A list of regular expressions matching URLs from which to accept | ||
| 306 | cookies always. | ||
| 307 | @end defopt | ||
| 308 | |||
| 309 | @defopt url-cookie-untrusted-urls | ||
| 310 | A list of regular expressions matching URLs from which to reject | ||
| 311 | cookies always. | ||
| 312 | @end defopt | ||
| 313 | |||
| 314 | @defopt url-cookie-save-interval | ||
| 315 | The number of seconds between automatic saves of cookies to disk. | ||
| 316 | Default is one hour. | ||
| 317 | @end defopt | ||
| 318 | |||
| 319 | |||
| 320 | @node HTTP language/coding | ||
| 321 | @subsection Language and Encoding Preferences | ||
| 322 | |||
| 323 | HTTP allows clients to express preferences for the language and | ||
| 324 | encoding of documents which servers may honour. | ||
| 325 | |||
| 326 | @defopt url-mime-charset-string | ||
| 327 | @cindex character sets | ||
| 328 | @cindex coding systems | ||
| 329 | This variable specifies a preference for character sets when documents | ||
| 330 | can be served in more than one encoding. | ||
| 331 | |||
| 332 | HTTP allows specifying a list of MIME charsets which indicate your | ||
| 333 | preferred character set encodings, e.g.@: Latin-9 or Big5, and these | ||
| 334 | can be weighted. In Emacs 21 this list is generated automatically | ||
| 335 | from the list of defined coding systems which have associated MIME | ||
| 336 | types. 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 | ||
| 342 | A string specifying the preferred language when servers can serve | ||
| 343 | files in several languages. Use RFC 1766 abbreviations, e.g.@: | ||
| 344 | @samp{en} for English, @samp{de} for German. It can be a | ||
| 345 | comma-separated list in descending order of preference. The ordering | ||
| 346 | can 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 | ||
| 348 | first available language (as opposed to the default). | ||
| 349 | @end defopt | ||
| 350 | |||
| 351 | @node HTTP URL Options | ||
| 352 | @subsection HTTP URL Options | ||
| 353 | |||
| 354 | HTTP supports an @samp{OPTIONS} method describing things supported by | ||
| 355 | the URL@. | ||
| 356 | |||
| 357 | @defun url-http-options url | ||
| 358 | Returns a property list describing options available for URL. The | ||
| 359 | property list members are: | ||
| 360 | |||
| 361 | @table @code | ||
| 362 | @item methods | ||
| 363 | A list of symbols specifying what HTTP methods the resource | ||
| 364 | supports. | ||
| 365 | |||
| 366 | @item dav | ||
| 367 | @cindex DAV | ||
| 368 | A list of numbers specifying what DAV protocol/schema versions are | ||
| 369 | supported. | ||
| 370 | |||
| 371 | @item dasl | ||
| 372 | @cindex DASL | ||
| 373 | A list of supported DASL search types supported (string form). | ||
| 374 | |||
| 375 | @item ranges | ||
| 376 | A list of the units available for use in partial document fetches. | ||
| 377 | |||
| 378 | @item p3p | ||
| 379 | @cindex P3P | ||
| 380 | The @dfn{Platform For Privacy Protection} description for the resource. | ||
| 381 | Currently 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 | |||
| 389 | HTTP URLs are retrieved into a buffer containing the HTTP headers | ||
| 390 | followed by the body. Since the headers are quasi-MIME, they may be | ||
| 391 | processed using the MIME library. @xref{(emacs-mime)Top, The MIME | ||
| 392 | library}. The MIME library doesn't provide a clean function to do | ||
| 393 | that, so the URL library does. | ||
| 394 | |||
| 395 | @defun url-decode-text-part handle &optional coding | ||
| 396 | This function decodes charset-encoded text in the current buffer. In | ||
| 397 | Emacs, the buffer is expected to be unibyte initially and is set to | ||
| 398 | multibyte after decoding. | ||
| 399 | HANDLE is the MIME handle of the original part. CODING is an explicit | ||
| 400 | coding to use, overriding what the MIME headers specify. | ||
| 401 | The coding system used for the decoding is returned. | ||
| 402 | |||
| 403 | Note that this function doesn't deal with @samp{http-equiv} charset | ||
| 404 | specifications 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 | ||
| 416 | ftp://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file} | ||
| 417 | file://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file} | ||
| 418 | @end example | ||
| 419 | |||
| 420 | These schemes are defined in RFC 1808. | ||
| 421 | @samp{ftp:} and @samp{file:} are synonomous in this library. They | ||
| 422 | allow reading arbitary files from hosts. Either @samp{ange-ftp} | ||
| 423 | (Emacs) or @samp{efs} (XEmacs) is used to retrieve them from remote | ||
| 424 | hosts. Local files are accessed directly. | ||
| 425 | |||
| 426 | Compressed files are handled, but support is hard-coded so that | ||
| 427 | @code{jka-compr-compression-info-list} and so on have no affect. | ||
| 428 | Suffixes recognized are @samp{.z}, @samp{.gz}, @samp{.Z} and | ||
| 429 | @samp{.bz2}. | ||
| 430 | |||
| 431 | @defopt url-directory-index-file | ||
| 432 | The filename to look for when indexing a directory, default | ||
| 433 | @samp{"index.html"}. If this file exists, and is readable, then it | ||
| 434 | will 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 | ||
| 444 | info:@var{file}#@var{node} | ||
| 445 | @end example | ||
| 446 | |||
| 447 | Info 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 | ||
| 456 | A mailto URL will send an email message to the address in the | ||
| 457 | URL, for example @samp{mailto:foo@@bar.com} would compose a | ||
| 458 | message to @samp{foo@@bar.com}. | ||
| 459 | |||
| 460 | @defopt url-mail-command | ||
| 461 | @vindex mail-user-agent | ||
| 462 | The function called whenever url needs to send mail. This should | ||
| 463 | normally be left to default from @var{mail-user-agent}. @xref{Mail | ||
| 464 | Methods, , Mail-Composition Methods, emacs, GNU Emacs Manual}. | ||
| 465 | @end defopt | ||
| 466 | |||
| 467 | An @samp{X-Url-From} header field containing the URL of the document | ||
| 468 | that contained the mailto URL is added if that URL is known. | ||
| 469 | |||
| 470 | RFC 2368 extends the definition of mailto URLs in RFC 1738. | ||
| 471 | The 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 | ||
| 477 | otherwise a @var{header} header field is created with @var{contents} | ||
| 478 | as its contents. Note that the URL library does not consider any | ||
| 479 | headers `dangerous' so you should check them before sending the | ||
| 480 | message. | ||
| 481 | |||
| 482 | @c Fixme: update | ||
| 483 | Email 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 | ||
| 494 | The network news URL scheme take the following forms following RFC | ||
| 495 | 1738 except that for compatibility with other clients, host and port | ||
| 496 | fields may be included in news URLs though they are properly only | ||
| 497 | allowed for nntp an snews. | ||
| 498 | |||
| 499 | @table @samp | ||
| 500 | @item news:@var{newsgroup} | ||
| 501 | Retrieves a list of messages in @var{newsgroup}; | ||
| 502 | @item news:@var{message-id} | ||
| 503 | Retrieves the message with the given @var{message-id}; | ||
| 504 | @item news:* | ||
| 505 | Retrieves 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}/* | ||
| 509 | Similar 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 | ||
| 515 | is :563. | ||
| 516 | @cindex SSL | ||
| 517 | (It is tunnelled through SSL.) | ||
| 518 | |||
| 519 | An @samp{nntp} URL is the same as a news URL, except that the URL may | ||
| 520 | specify an article by its number. | ||
| 521 | |||
| 522 | @defopt url-news-server | ||
| 523 | This variable can be used to override the default news server. | ||
| 524 | Usually this will be set by the Gnus package, which is used to fetch | ||
| 525 | news. | ||
| 526 | @cindex environment variable | ||
| 527 | @vindex NNTPSERVER | ||
| 528 | It 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 | |||
| 540 | These URL schemes from RFC 1738 for logon via a terminal emulator have | ||
| 541 | the form | ||
| 542 | @example | ||
| 543 | telnet://@var{user}:@var{password}@@@var{host}:@var{port} | ||
| 544 | @end example | ||
| 545 | but the @code{:@var{password}} component is ignored. | ||
| 546 | |||
| 547 | To handle rlogin, telnet and tn3270 URLs, a @code{rlogin}, | ||
| 548 | @code{telnet} or @code{tn3270} (the program names and arguments are | ||
| 549 | hardcoded) session is run in a @code{terminal-emulator} buffer. | ||
| 550 | Well-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} | ||
| 559 | session to a function named in @code{url-irc-function}. | ||
| 560 | |||
| 561 | @defopt url-irc-function | ||
| 562 | A function to actually open an IRC connection. | ||
| 563 | This function | ||
| 564 | must take five arguments, @var{host}, @var{port}, @var{channel}, | ||
| 565 | @var{user} and @var{password}. The @var{channel} argument specifies the | ||
| 566 | channel 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 | ||
| 570 | Processes 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 | ||
| 578 | data:@r{[}@var{media-type}@r{]}@r{[};@var{base64}@r{]},@var{data} | ||
| 579 | @end example | ||
| 580 | |||
| 581 | Data URLs contain MIME data in the URL itself. They are defined in | ||
| 582 | RFC 2397. | ||
| 583 | |||
| 584 | @var{media-type} is a MIME @samp{Content-Type} string, possibly | ||
| 585 | including parameters. It defaults to | ||
| 586 | @samp{text/plain;charset=US-ASCII}. The @samp{text/plain} can be | ||
| 587 | omitted but the charset parameter supplied. If @samp{;base64} is | ||
| 588 | present, 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 | ||
| 597 | nfs://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file} | ||
| 598 | @end example | ||
| 599 | |||
| 600 | The @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 | ||
| 602 | handled by the automounter on the local host. | ||
| 603 | |||
| 604 | @defvar url-nfs-automounter-directory-spec | ||
| 605 | @end defvar | ||
| 606 | A string saying how to invoke the NFS automounter. Certain @samp{%} | ||
| 607 | sequences are recognized: | ||
| 608 | |||
| 609 | @table @samp | ||
| 610 | @item %h | ||
| 611 | The hostname of the NFS server; | ||
| 612 | @item %n | ||
| 613 | The port number of the NFS server; | ||
| 614 | @item %u | ||
| 615 | The username to use to authenticate; | ||
| 616 | @item %p | ||
| 617 | The password to use to authenticate; | ||
| 618 | @item %f | ||
| 619 | The filename on the remote server; | ||
| 620 | @item %% | ||
| 621 | A literal @samp{%}. | ||
| 622 | @end table | ||
| 623 | |||
| 624 | Each can be used any number of times. | ||
| 625 | |||
| 626 | @node cid | ||
| 627 | @section cid | ||
| 628 | @cindex Content-ID | ||
| 629 | |||
| 630 | RFC 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 | |||
| 640 | The LDAP scheme is defined in RFC 2255. | ||
| 641 | |||
| 642 | @node imap | ||
| 643 | @section imap | ||
| 644 | @cindex IMAP | ||
| 645 | |||
| 646 | RFC 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 | |||
| 658 | This is a non-standard scheme. @var{page-spec} is passed directly to | ||
| 659 | the 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 | |||
| 703 | The disk cache stores retrieved documents locally, whence they can be | ||
| 704 | retrieved more quickly. When requesting a URL that is in the cache, | ||
| 705 | the library checks to see if the page has changed since it was last | ||
| 706 | retrieved from the remote machine. If not, the local copy is used, | ||
| 707 | saving the transmission over the network. | ||
| 708 | @cindex Cleaning the cache | ||
| 709 | @cindex Clearing the cache | ||
| 710 | @cindex Cache cleaning | ||
| 711 | Currently 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 | ||
| 720 | Setting this variable non-@code{nil} causes documents to be cached | ||
| 721 | automatically. | ||
| 722 | @end defopt | ||
| 723 | |||
| 724 | @defopt url-cache-directory | ||
| 725 | This variable specifies the | ||
| 726 | directory 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 | ||
| 739 | The cache relies on a scheme for mapping URLs to files in the cache. | ||
| 740 | This variable names a function which sets the type of cache to use. | ||
| 741 | It takes a URL as argument and returns the absolute file name of the | ||
| 742 | corresponding 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 | ||
| 748 | Creates a cache file name from @var{url} using MD5 hashing. | ||
| 749 | @findex md5 | ||
| 750 | This is creates entries with very few cache collisions and is fast if | ||
| 751 | you 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 | ||
| 759 | Creates a cache file name from @var{url} more obviously connected to | ||
| 760 | @var{url} than for @code{url-cache-create-filename-using-md5}, but | ||
| 761 | more 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 | ||
| 795 | Proxy servers are commonly used to provide gateways through firewalls | ||
| 796 | or as caches serving some more-or-less local network. Each protocol | ||
| 797 | (HTTP, FTP, etc.)@: can have a different gateway server. Proxying is | ||
| 798 | conventionally configured commonly amongst different programs through | ||
| 799 | environment 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 | ||
| 802 | upper 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 | ||
| 810 | The @code{NO_PROXY} environment variable specifies URLs that should be | ||
| 811 | excluded from proxying (on servers that should be contacted directly). | ||
| 812 | This should be a comma-separated list of hostnames, domain names, or a | ||
| 813 | mixture of both. Asterisks can be used as wildcards, but other | ||
| 814 | clients may not support that. Domain names may be indicated by a | ||
| 815 | leading dot. For example: | ||
| 816 | @example | ||
| 817 | NO_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} | ||
| 822 | and @code{no_proxy} are also tried, in that order. | ||
| 823 | |||
| 824 | Proxies may also be specified directly in Lisp. | ||
| 825 | |||
| 826 | @defopt url-proxy-services | ||
| 827 | This variable is an alist of URL schemes and proxy servers that | ||
| 828 | gateway them. The items are of the form @w{@code{(@var{scheme} | ||
| 829 | . @var{host}:@var{portnumber})}}, says that the URL @var{scheme} is | ||
| 830 | gatewayed through @var{portnumber} on the specified @var{host}. An | ||
| 831 | exception is the pseudo scheme @code{"no_proxy"}, which is paired with | ||
| 832 | a regexp matching host names not to be proxied. This variable is | ||
| 833 | initialized 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 | |||
| 847 | The library provides a general gateway layer through which all | ||
| 848 | networking passes. It can both control access to the network and | ||
| 849 | provide access through gateways in firewalls. This may make direct | ||
| 850 | connexions in some cases and pass through some sort of gateway in | ||
| 851 | others.@footnote{Proxies (which only operate over HTTP) are | ||
| 852 | implemented using this.} The library's basic function responsible for | ||
| 853 | making 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 | ||
| 858 | Open a stream to @var{host}, possibly via a gateway. The other | ||
| 859 | arguments are as for @code{open-network-stream}. This will not make a | ||
| 860 | connexion if @code{url-gateway-unplugged} is non-@code{nil}. | ||
| 861 | @end defun | ||
| 862 | |||
| 863 | @defvar url-gateway-local-host-regexp | ||
| 864 | This is a regular expression that matches local hosts that do not | ||
| 865 | require the use of a gateway. If @code{nil}, all connexions are made | ||
| 866 | through the gateway. | ||
| 867 | @end defvar | ||
| 868 | |||
| 869 | @defvar url-gateway-method | ||
| 870 | This variable controls which gateway method is used. It may be useful | ||
| 871 | to bind it temporarily in some applications. It has values taken from | ||
| 872 | a list of symbols. Possible values are: | ||
| 873 | |||
| 874 | @table @code | ||
| 875 | @item telnet | ||
| 876 | @cindex @command{telnet} | ||
| 877 | Use this method if you must first telnet and log into a gateway host, | ||
| 878 | and then run telnet from that host to connect to outside machines. | ||
| 879 | |||
| 880 | @item rlogin | ||
| 881 | @cindex @command{rlogin} | ||
| 882 | This method is identical to @code{telnet}, but uses @command{rlogin} | ||
| 883 | to log into the remote machine without having to send the username and | ||
| 884 | password over the wire every time. | ||
| 885 | |||
| 886 | @item socks | ||
| 887 | @cindex @sc{socks} | ||
| 888 | Use 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 | ||
| 896 | This method uses Emacs's builtin networking directly. This is the | ||
| 897 | default. It can be used only if there is no firewall blocking access. | ||
| 898 | @end table | ||
| 899 | @end defvar | ||
| 900 | |||
| 901 | The following variables control the gateway methods. | ||
| 902 | |||
| 903 | @defopt url-gateway-telnet-host | ||
| 904 | The gateway host to telnet to. Once logged in there, you then telnet | ||
| 905 | out to the hosts you want to connect to. | ||
| 906 | @end defopt | ||
| 907 | @defopt url-gateway-telnet-parameters | ||
| 908 | This should be a list of parameters to pass to the @command{telnet} program. | ||
| 909 | @end defopt | ||
| 910 | @defopt url-gateway-telnet-password-prompt | ||
| 911 | This is a regular expression that matches the password prompt when | ||
| 912 | logging in. | ||
| 913 | @end defopt | ||
| 914 | @defopt url-gateway-telnet-login-prompt | ||
| 915 | This is a regular expression that matches the username prompt when | ||
| 916 | logging in. | ||
| 917 | @end defopt | ||
| 918 | @defopt url-gateway-telnet-user-name | ||
| 919 | The username to log in with. | ||
| 920 | @end defopt | ||
| 921 | @defopt url-gateway-telnet-password | ||
| 922 | The password to send when logging in. | ||
| 923 | @end defopt | ||
| 924 | @defopt url-gateway-prompt-pattern | ||
| 925 | This is a regular expression that matches the shell prompt. | ||
| 926 | @end defopt | ||
| 927 | |||
| 928 | @defopt url-gateway-rlogin-host | ||
| 929 | Host to @samp{rlogin} to before telnetting out. | ||
| 930 | @end defopt | ||
| 931 | @defopt url-gateway-rlogin-parameters | ||
| 932 | Parametres to pass to @samp{rsh}. | ||
| 933 | @end defopt | ||
| 934 | @defopt url-gateway-rlogin-user-name | ||
| 935 | User name to use when logging in to the gateway. | ||
| 936 | @end defopt | ||
| 937 | @defopt url-gateway-prompt-pattern | ||
| 938 | This is a regular expression that matches the shell prompt. | ||
| 939 | @end defopt | ||
| 940 | |||
| 941 | @defopt socks-server | ||
| 942 | This specifies the default server, it takes the form | ||
| 943 | @w{@code{("Default server" @var{server} @var{port} @var{version})}} | ||
| 944 | where @var{version} can be either 4 or 5. | ||
| 945 | @end defopt | ||
| 946 | @defvar socks-password | ||
| 947 | If this is @code{nil} then you will be asked for the passward, | ||
| 948 | otherwise it will be used as the password for authenticating you to | ||
| 949 | the @sc{socks} server. | ||
| 950 | @end defvar | ||
| 951 | @defvar socks-username | ||
| 952 | This 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 | ||
| 956 | This 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} | ||
| 983 | This 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' | ||
| 998 | In some circumstances it is desirable to suppress making network | ||
| 999 | connexions. A typical case is when rendering HTML in a mail user | ||
| 1000 | agent, when external URLs should not be activated, particularly to | ||
| 1001 | avoid `bugs' which `call home' by fetch single-pixel images and the | ||
| 1002 | like. To arrange this, bind the following variable for the duration | ||
| 1003 | of such processing. | ||
| 1004 | |||
| 1005 | @defvar url-gateway-unplugged | ||
| 1006 | If this variable is non-@code{nil} new network connexions are never | ||
| 1007 | opened 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 | |||
| 1047 | The library can maintain a global history list tracking URLs accessed. | ||
| 1048 | URL completion can be done from it. The history mechanism is set up | ||
| 1049 | @findex url-do-setup | ||
| 1050 | automatically via @code{url-do-setup} when it is configured to be on. | ||
| 1051 | Note that the size of the history list is currently not limited. | ||
| 1052 | |||
| 1053 | @vindex url-history-hash-table | ||
| 1054 | The history `list' is actually a hash table, | ||
| 1055 | @code{url-history-hash-table}. It contains access times keyed by URL | ||
| 1056 | strings. The times are in the format returned by @code{current-time}. | ||
| 1057 | |||
| 1058 | @defun url-history-update-url url time | ||
| 1059 | This function updates the hsitory table with an entry for @var{url} | ||
| 1060 | accessed at the gievn @var{time}. | ||
| 1061 | @end defun | ||
| 1062 | |||
| 1063 | @defopt url-history-track | ||
| 1064 | If non-@code{nil}, the library will keep track of all the URLs | ||
| 1065 | accessed. If is is @code{t}, the list is saved to disk at the end of | ||
| 1066 | each Emacs session. The default is @code{nil}. | ||
| 1067 | @end defopt | ||
| 1068 | |||
| 1069 | @defopt url-history-file | ||
| 1070 | The 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 | ||
| 1076 | The number of seconds between automatic saves of the history list. | ||
| 1077 | Default is one hour. Note that if you change this variable directly, | ||
| 1078 | rather than using Custom, after @code{url-do-setup} has been run, you | ||
| 1079 | need to run the function @code{url-history-setup-save-timer}. | ||
| 1080 | @end defopt | ||
| 1081 | |||
| 1082 | @defun url-history-parse-history &optional fname | ||
| 1083 | Parses the history file @var{fname} (default @code{url-history-file}) | ||
| 1084 | and sets up the history list. | ||
| 1085 | @end defun | ||
| 1086 | |||
| 1087 | @defun url-history-save-history &optional fname | ||
| 1088 | Saves 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 | ||
| 1093 | You 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 | ||
| 1102 | The following environment variables affect the library's operation at | ||
| 1103 | startup. | ||
| 1104 | |||
| 1105 | @table @code | ||
| 1106 | @item TMPDIR | ||
| 1107 | @vindex TMPDIR | ||
| 1108 | @vindex url-temporary-directory | ||
| 1109 | If this is defined, @var{url-temporary-directory} is initialized from | ||
| 1110 | it. | ||
| 1111 | @end table | ||
| 1112 | |||
| 1113 | @section General User Options | ||
| 1114 | |||
| 1115 | The following user options, settable with Customize, affect the | ||
| 1116 | general operation of the package. | ||
| 1117 | |||
| 1118 | @defopt url-debug | ||
| 1119 | @cindex debugging | ||
| 1120 | Specifies the types of debug messages the library which are logged to | ||
| 1121 | the @code{*URL-DEBUG*} buffer. | ||
| 1122 | @code{t} means log all messages. | ||
| 1123 | A number means log all messages and show them with @code{message}. | ||
| 1124 | If 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 | ||
| 1145 | The function to use for asking yes or no functions. This is normally | ||
| 1146 | either @code{y-or-n-p} or @code{yes-or-no-p}, but could be another | ||
| 1147 | function taking a single argument (the prompt) and returning @code{t} | ||
| 1148 | only if an affirmative answer is given. | ||
| 1149 | @end defopt | ||
| 1150 | @defopt url-gateway-method | ||
| 1151 | @c fixme: describe gatewaying | ||
| 1152 | A symbol specifying the type of gateway support to use fro connexions | ||
| 1153 | from the local machine. The supported methods are: | ||
| 1154 | |||
| 1155 | @table @code | ||
| 1156 | @item telnet | ||
| 1157 | Run telnet in a subprocess to connect; | ||
| 1158 | @item rlogin | ||
| 1159 | Rlogin to another machine to connect; | ||
| 1160 | @item socks | ||
| 1161 | Connect through a socks server; | ||
| 1162 | @item ssl | ||
| 1163 | Connect with SSL; | ||
| 1164 | @item native | ||
| 1165 | Connect 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 @@ | |||
| 1 | 2004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | 1 | 2004-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 | |||
| 11 | 2004-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 | |||
| 17 | 2004-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 | ||
| 101 | 2004-11-30 Kenichi Handa <handa@m17n.org> | 117 | 2004-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 | |||
| 94 | static pthread_mutex_t alloc_mutex; | 111 | static pthread_mutex_t alloc_mutex; |
| 95 | pthread_t main_thread; | 112 | pthread_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 | ||
| 6 | This file is part of GNU Emacs. | 7 | This 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 | { |