# HG changeset patch # User Karoly Lorentey # Date 1095935574 0 # Node ID c0621112594781639ebd9ca1656cbdd469255494 # Parent e318dfc2edc689adfccdb6c45463eeb8964a5cbb# Parent 95030a5c1bb12befccd4014350c25fab8e9abb89 Merged in changes from CVS trunk. Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-558 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-559 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-560 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-561 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-562 Update from CVS: lisp/subr.el (after-change-major-mode-hook): Doc fix. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-563 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-564 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-565 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-30 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-249 diff -r e318dfc2edc6 -r c06211125947 admin/ChangeLog --- a/admin/ChangeLog Mon Sep 20 13:59:19 2004 +0000 +++ b/admin/ChangeLog Thu Sep 23 10:32:54 2004 +0000 @@ -1,3 +1,8 @@ +2004-09-20 Luc Teirlinck + + * FOR-RELEASE (Indications): Rearrange checklists for Emacs and + Elisp manuals. + 2004-09-18 Luc Teirlinck * FOR-RELEASE (Indications): Clean up and update checklists for diff -r e318dfc2edc6 -r c06211125947 admin/FOR-RELEASE --- a/admin/FOR-RELEASE Mon Sep 20 13:59:19 2004 +0000 +++ b/admin/FOR-RELEASE Thu Sep 23 10:32:54 2004 +0000 @@ -44,109 +44,112 @@ ** Check the Emacs manual. -Write you name/initials in the DONE column when you have -proof-read the corresponding manual section. +Each manual section should be proof-read by at least two people. +After each file name, on the same line or the following line, come the +names of the people who have checked it. + -DONE SECTION ---------------------------------------------- - man/abbrevs.texi - man/anti.texi -LT man/basic.texi -LT man/buffers.texi - man/building.texi - man/calendar.texi - man/cmdargs.texi -LT man/commands.texi - man/custom.texi - man/dired.texi -LT man/display.texi -LT man/emacs.texi -LT man/entering.texi -LT man/files.texi -LT man/fixit.texi -LT man/frames.texi - man/glossary.texi -LT man/help.texi -LT man/indent.texi -LT man/killing.texi -LT man/kmacro.texi - man/macos.texi - man/maintaining.texi -LT man/major.texi -LT man/mark.texi -LT man/mini.texi - man/misc.texi - man/msdog.texi -LT man/mule.texi -LT man/m-x.texi - man/picture.texi - man/programs.texi -LT man/regs.texi - man/rmail.texi -LT man/screen.texi -LT man/search.texi - man/sending.texi -LT man/text.texi - man/trouble.texi -LT man/windows.texi - man/xresources.texi +SECTION READERS +----------------------------- +man/abbrevs.texi +man/anti.texi +man/basic.texi "Luc Teirlinck" +man/buffers.texi "Luc Teirlinck" +man/building.texi "Ted Zlatanov" +man/calendar.texi +man/cmdargs.texi +man/commands.texi "Luc Teirlinck" +man/custom.texi +man/dired.texi +man/display.texi "Luc Teirlinck" +man/emacs.texi "Luc Teirlinck" +man/entering.texi "Luc Teirlinck" +man/files.texi "Luc Teirlinck" +man/fixit.texi "Luc Teirlinck" +man/frames.texi "Luc Teirlinck" +man/glossary.texi +man/help.texi "Luc Teirlinck" +man/indent.texi "Luc Teirlinck" +man/killing.texi "Luc Teirlinck" +man/kmacro.texi "Luc Teirlinck" +man/macos.texi +man/maintaining.texi +man/major.texi "Luc Teirlinck" +man/mark.texi "Luc Teirlinck" +man/mini.texi "Luc Teirlinck" +man/misc.texi +man/msdog.texi +man/mule.texi "Luc Teirlinck" +man/m-x.texi "Luc Teirlinck" +man/picture.texi +man/programs.texi +man/regs.texi "Luc Teirlinck" +man/rmail.texi +man/screen.texi "Luc Teirlinck" +man/search.texi "Luc Teirlinck" +man/sending.texi +man/text.texi +man/trouble.texi +man/windows.texi "Luc Teirlinck" +man/xresources.texi ** Check the Emacs Lisp manual. -Write you name/initials in the DONE column when you have -proof-read the corresponding manual section. +Each manual section should be proof-read by at least two people. +After each file name, on the same line or the following line, come the +names of the people who have checked it. -DONE SECTION ---------------------------------------------- -LT lispref/abbrevs.texi - lispref/advice.texi - lispref/anti.texi -LT lispref/backups.texi -LT lispref/buffers.texi - lispref/calendar.texi -LT lispref/commands.texi -LT lispref/compile.texi -LT lispref/control.texi - lispref/customize.texi - lispref/debugging.texi - lispref/display.texi - lispref/edebug.texi -LT lispref/elisp.texi -LT lispref/errors.texi -LT lispref/eval.texi -LT lispref/files.texi -LT lispref/frames.texi -LT lispref/functions.texi -LT lispref/hash.texi -LT lispref/help.texi - lispref/hooks.texi -LT lispref/internals.texi -LT lispref/intro.texi -LT lispref/keymaps.texi -LT lispref/lists.texi -LT lispref/loading.texi - lispref/locals.texi -LT lispref/macros.texi - lispref/maps.texi -LT lispref/markers.texi -LT lispref/minibuf.texi - lispref/modes.texi -LT lispref/nonascii.texi -LT lispref/numbers.texi -LT lispref/objects.texi -LT lispref/os.texi -LT lispref/positions.texi - lispref/processes.texi -LT lispref/searching.texi -LT lispref/sequences.texi -LT lispref/streams.texi -LT lispref/strings.texi -LT lispref/symbols.texi -LT lispref/syntax.texi - lispref/text.texi -LT lispref/tips.texi -LT lispref/variables.texi -LT lispref/windows.texi +SECTION READERS +---------------------------------- +lispref/abbrevs.texi "Luc Teirlinck" +lispref/advice.texi +lispref/anti.texi +lispref/backups.texi "Luc Teirlinck" +lispref/buffers.texi "Luc Teirlinck" +lispref/calendar.texi +lispref/commands.texi "Luc Teirlinck" +lispref/compile.texi "Luc Teirlinck" +lispref/control.texi "Luc Teirlinck" +lispref/customize.texi +lispref/debugging.texi +lispref/display.texi +lispref/edebug.texi +lispref/elisp.texi "Luc Teirlinck" +lispref/errors.texi "Luc Teirlinck" +lispref/eval.texi "Luc Teirlinck" +lispref/files.texi "Luc Teirlinck" +lispref/frames.texi "Luc Teirlinck" +lispref/functions.texi "Luc Teirlinck" +lispref/hash.texi "Luc Teirlinck" +lispref/help.texi "Luc Teirlinck" +lispref/hooks.texi +lispref/internals.texi "Luc Teirlinck" +lispref/intro.texi "Luc Teirlinck" +lispref/keymaps.texi "Luc Teirlinck" +lispref/lists.texi "Luc Teirlinck" +lispref/loading.texi "Luc Teirlinck" +lispref/locals.texi +lispref/macros.texi "Luc Teirlinck" +lispref/maps.texi +lispref/markers.texi "Luc Teirlinck" +lispref/minibuf.texi "Luc Teirlinck" +lispref/modes.texi +lispref/nonascii.texi "Luc Teirlinck" +lispref/numbers.texi "Luc Teirlinck" +lispref/objects.texi "Luc Teirlinck" +lispref/os.texi "Luc Teirlinck" +lispref/positions.texi "Luc Teirlinck" +lispref/processes.texi +lispref/searching.texi "Luc Teirlinck" +lispref/sequences.texi "Luc Teirlinck" +lispref/streams.texi "Luc Teirlinck" +lispref/strings.texi "Luc Teirlinck" +lispref/symbols.texi "Luc Teirlinck" +lispref/syntax.texi "Luc Teirlinck" +lispref/text.texi +lispref/tips.texi "Luc Teirlinck" +lispref/variables.texi "Luc Teirlinck" +lispref/windows.texi "Luc Teirlinck" Local variables: diff -r e318dfc2edc6 -r c06211125947 etc/NEWS --- a/etc/NEWS Mon Sep 20 13:59:19 2004 +0000 +++ b/etc/NEWS Thu Sep 23 10:32:54 2004 +0000 @@ -99,6 +99,10 @@ * Changes in Emacs 21.4 +++ +** In processing a local variables list, Emacs strips the prefix and +suffix are from every line before processing all the lines. + ++++ ** `apply-macro-to-region-lines' now operates on all lines that begin in the region, rather than on all complete lines in the region. @@ -244,6 +248,7 @@ ** Compilation mode enhancements: ++++ *** New user option `compilation-environment'. This option allows you to specify environment variables for inferior compilation processes without affecting the environment that all @@ -356,6 +361,7 @@ % emacsclient -s foo file1 % emacsclient -s bar file2 ++++ ** On window systems, lines which are exactly as wide as the window (not counting the final newline character) are no longer broken into two lines on the display (with just the newline on the second line). @@ -365,6 +371,7 @@ The new user option 'overflow-newline-into-fringe' may be set to nil to revert to the old behaviour of continuing such lines. ++++ ** The buffer boundaries (i.e. first and last line in the buffer) may now be marked with angle bitmaps in the fringes. In addition, up and down arrow bitmaps may be shown at the top and bottom of the left or @@ -1402,6 +1409,11 @@ year and day number, and moves to that date. Negative day numbers count backward from the end of the year. +** The functions `holiday-easter-etc' and `holiday-advent' now take +arguments, and only report on the specified holiday rather than all. +This makes customization of the variable `christian-holidays' simpler, +but existing customizations may need to be updated. + ** The function `simple-diary-display' now by default sets a header line. This can be controlled through the variables `diary-header-line-flag' and `diary-header-line-format'. @@ -2243,8 +2255,7 @@ * Lisp Changes in Emacs 21.4 ** Major mode functions now run the new normal hook -`after-change-major-mode-hook', at the end, just before the mode -dependent hooks. +`after-change-major-mode-hook', at their very end, after the mode hooks. +++ ** `auto-save-file-format' has been renamed to @@ -2316,9 +2327,11 @@ if the file is indeed remote. (Before, the return value was t in this case.) ++++ ** The display space :width and :align-to text properties are now supported on text terminals. ++++ ** Support for displaying image slices *** New display property (slice X Y WIDTH HEIGHT) may be used with @@ -2330,6 +2343,7 @@ *** New function insert-sliced-image inserts a given image as a specified number of evenly sized slices (rows x columns). ++++ ** New line-height and line-spacing properties for newline characters A newline may now have line-height and line-spacing text or overlay @@ -2366,10 +2380,10 @@ total height of the line, i.e. a varying number of pixels are inserted after each line to make each line exactly that many pixels high. - ** The buffer local line-spacing variable may now have a float value, which is used as a height relative to the default frame line height. ++++ ** Enhancements to stretch display properties The display property stretch specification form `(space PROPS)', where @@ -2426,6 +2440,7 @@ The form `(+ EXPR ...)' adds up the value of the expressions. The form `(- EXPR ...)' negates or subtracts the value of the expressions. ++++ ** Normally, the cursor is displayed at the end of any overlay and text property string that may be present at the current window position. The cursor may now be placed on any character of such @@ -2443,7 +2458,10 @@ preferred method for defining default faces in a way that makes a good use of the capabilities of the display. -** New function 'define-fringe-bitmap' can now be used to change the ++++ +** Customizable fringe bitmaps + +*** New function 'define-fringe-bitmap' can now be used to change the built-in fringe bitmaps, as well as create new fringe bitmaps. The return value is a number identifying the new fringe bitmap. @@ -2451,15 +2469,15 @@ bitmap to change with the value of the corresponding symbol, like `left-truncation-fringe-bitmap' or `continued-line-fringe-bitmap'. -** New function 'destroy-fringe-bitmap' may be used to destroy a +*** New function 'destroy-fringe-bitmap' may be used to destroy a previously created bitmap, or restore a built-in bitmap. -** New function 'set-fringe-bitmap-face' can now be used to set a +*** New function 'set-fringe-bitmap-face' can now be used to set a specific face to be used for a specific fringe bitmap. Normally, this should be a face derived from the `fringe' face, specifying the foreground color as the desired color of the bitmap. -** There are new display properties, left-fringe and right-fringe, +*** There are new display properties, left-fringe and right-fringe, that can be used to show a specific bitmap in the left or right fringe bitmap of the display line. @@ -2468,7 +2486,7 @@ `define-fringe-bitmap', and FACE is an optional face name to be used for displaying the bitmap. -** New function `fringe-bitmaps-at-pos' returns a cons (LEFT . RIGHT) +*** New function `fringe-bitmaps-at-pos' returns a cons (LEFT . RIGHT) identifying the current fringe bitmaps in the display line at a given buffer position. A nil value means no bitmap. @@ -2535,18 +2553,23 @@ whose cdr is the overlay in which the property was found, or nil if it was found as a text property or not found at all. ++++ (lispref) +??? (man) ** The mouse pointer shape in void text areas (i.e. after the end of a line or below the last line in the buffer) of the text window is now controlled by the new variable `void-text-area-pointer'. The default is to use the `arrow' (non-text) pointer. Other choices are `text' (or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'. ++++ ** The mouse pointer shape over an image can now be controlled by the :pointer image property. ++++ ** The mouse pointer shape over ordinary text or images may now be controlled/overriden via the `pointer' text property. ++++ ** Images may now have an associated image map via the :map property. An image map is an alist where each element has the format (AREA ID PLIST). diff -r e318dfc2edc6 -r c06211125947 leim/ChangeLog --- a/leim/ChangeLog Mon Sep 20 13:59:19 2004 +0000 +++ b/leim/ChangeLog Thu Sep 23 10:32:54 2004 +0000 @@ -1,3 +1,15 @@ +2004-09-21 Kenichi Handa + + * quail/uni-input.el: Move the call of register-input-method to + leim-ext.el. + (ucs-input-insert-char): New function. + (ucs-input-method): Use ucs-input-insert-char. + (ucs-input-activate): Call quail-hide-guidance instead of + quail-hide-guidance-buf. + + * leim-ext.el: Add autoload for 'ucs-input-activate and + register-input-method for "ucs". + 2004-08-21 David Kastrup * quail/greek.el ("greek-babel"): Add accent/breathing/uppercase diff -r e318dfc2edc6 -r c06211125947 leim/leim-ext.el --- a/leim/leim-ext.el Mon Sep 20 13:59:19 2004 +0000 +++ b/leim/leim-ext.el Thu Sep 23 10:32:54 2004 +0000 @@ -34,4 +34,14 @@ (eval-after-load "quail/PY-b5" '(quail-defrule "ling2" ?$(0!r(B nil t)) +(autoload 'ucs-input-activate "quail/uni-input" + "Activate UCS input method. +With arg, activate UCS input method if and only if arg is positive. + +While this input method is active, the variable +`input-method-function' is bound to the function `ucs-input-method'.") + +(register-input-method "ucs" "UTF-8" 'ucs-input-activate "U+" + "Unicode input as hex in the form Uxxxx.") + ;; arch-tag: 75cfdfc7-de85-44f9-b408-ff67d1ec664e diff -r e318dfc2edc6 -r c06211125947 leim/quail/uni-input.el --- a/leim/quail/uni-input.el Mon Sep 20 13:59:19 2004 +0000 +++ b/leim/quail/uni-input.el Thu Sep 23 10:32:54 2004 +0000 @@ -66,14 +66,16 @@ (write (((r0 >> 6) & ?\x3F) | ?\x80)) (write ((r0 & ?\x3F) | ?\x80)))))))))) +(defun ucs-input-insert-char (char) + (insert char) + (move-overlay quail-overlay (overlay-start quail-overlay) (point))) + (defun ucs-input-method (key) (if (or buffer-read-only (and (/= key ?U) (/= key ?u))) (list key) (quail-setup-overlays nil) - (let ((current-prefix-arg) - (last-command-char key)) - (call-interactively 'self-insert-command)) + (ucs-input-insert-char key) (let ((modified-p (buffer-modified-p)) (buffer-undo-list t) (input-method-function nil) @@ -94,9 +96,7 @@ ?b ?c ?d ?e ?f ?A ?B ?C ?D ?E ?F))) (progn (push key events) - (let ((last-command-char key) - (current-prefix-arg)) - (call-interactively 'self-insert-command))) + (ucs-input-insert-char key)) (let ((last-command-char key) (current-prefix-arg)) (condition-case nil @@ -109,7 +109,7 @@ (cdr (nreverse events))) 16)) (c (decode-char 'ucs n)) - (status (make-vector 9 nil))) + (status (make-vector 9 nil))) (if c (list c) (aset status 0 n) @@ -129,7 +129,7 @@ (< (prefix-numeric-value arg) 0)) (unwind-protect (progn - (quail-hide-guidance-buf) + (quail-hide-guidance) (quail-delete-overlays) (setq describe-current-input-method-function nil)) (kill-local-variable 'input-method-function)) @@ -155,8 +155,9 @@ Input as Unicode: U or u, where is a four-digit hex number."))) -(register-input-method "ucs" "UTF-8" 'ucs-input-activate "U+" - "Unicode input as hex in the form Uxxxx.") +;; The file ../leim-ext.el contains the following call. +;; (register-input-method "ucs" "UTF-8" 'ucs-input-activate "U+" +;; "Unicode input as hex in the form Uxxxx.") (provide 'uni-input) diff -r e318dfc2edc6 -r c06211125947 lisp/ChangeLog --- a/lisp/ChangeLog Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/ChangeLog Thu Sep 23 10:32:54 2004 +0000 @@ -1,3 +1,101 @@ +2004-09-23 H,Ae(Bkon Malmedal + + * calendar/holidays.el (holiday-advent): Report on a specified day + offset from advent, not just advent. + (holiday-easter-etc): Report on one specified day offset from + easter, not all easter holidays. Various Easter holidays moved to + `christian-holidays' variable in calendar.el. + * calendar/calendar.el (christian-holidays): Adapt for new + behaviour of `holiday-advent' and `holiday-easter-etc' functions. + +2004-09-23 Kim F. Storm + + * image.el (insert-sliced-image): Add doc string. + + * ido.el (ido-choice-list): New dynamic var for `list' context. + (ido-context-switch-command): New dynamic var. + (ido-define-mode-map): Generalize switch between file/buffer contexts. + (ido-read-internal): Handle new `list' context. + Handle insert-buffer and insert-file ido-exit values. + (ido-buffer-internal): New arg switch-cmd. Use it to setup + ido-context-switch-command. Handle insert-file ido-exit value. + (ido-read-buffer): Set ido-context-switch-command to 'ignore + unless it is already bound by caller. + (ido-file-internal): New arg switch-cmd. Use it to setup + ido-context-switch-command. Handle insert-buffer ido-exit value. + (ido-enter-insert-buffer, ido-enter-insert-file): New commands + used for context switching. + (ido-all-completions): Handle new `list' context. + (ido-make-choice-list): Return choices for `list' context. + (ido-find-file-in-dir, ido-display-file, ido-write-file) + (ido-display-buffer, ido-kill-buffer): Disable context switching. + (ido-insert-buffer, ido-insert-file): Setup context switching. + (ido-exhibit): Handle `list' context. + (ido-read-file-name): Disable context switching. Handle fallback. + (ido-read-directory-name): Disable context switching. + (ido-completing-read): New defun like completing-read. Setup and + use new `list' context. + +2004-09-20 Jesper Harder + + * progmodes/tcl.el (inferior-tcl): Use pop-to-buffer. + +2004-09-21 Luc Teirlinck + + * subr.el (after-change-major-mode-hook): Doc fix. + +2004-09-21 Vinicius Jose Latorre + + * printing.el: Doc fix. Add a new tip about the use of gsprint instead + of ghostscript for monochrome PostScript file in Windows. + +2004-09-21 Kenichi Handa + + * descr-text.el (describe-char): Checking of quail activation + fixed. + +2004-09-20 Luc Teirlinck + + * subr.el (run-mode-hooks): Run `after-change-major-mode-hook' + after the mode hooks instead of before. Doc fix. + +2004-09-20 Jason Rumney + + * startup.el (command-line) [windows-nt]: Try .emacs first, then + _emacs, but revert to .emacs if neither exists in home directory. + +2004-09-20 John Paul Wallington + + * bindings.el (completion-ignored-extensions): Add .dfsl. + +2004-09-20 Richard M. Stallman + + * bindings.el (scroll-left): Make it disabled. + + * files.el (enable-local-eval): Doc fix. + + * indent.el (move-to-left-margin): Special case for minibuffer. + + * term.el (term-emulate-terminal): Turn off undo for output. + Use with-current-buffer and save-selected-window. + + * eshell/esh-ext.el (eshell-explicit-command-char): Doc fix. + + * progmodes/make-mode.el (makefile-fill-paragraph): + Don't insist on spaces when looking for comments. # is enough. + + * files.el (hack-local-variables): Copy the variables list + to another buffer, strip prefixes and suffixes there, then read. + (enable-local-eval): Doc fix. + (ignored-local-variables): Initialize to nil. + (risky-local-variable-p): Don't check ignored-local-variables here. + (hack-one-local-variable): Ignore var if in ignored-local-variables. + +2004-09-20 Dan Nicolaescu + + * progmodes/sh-script.el (sh-mode-default-syntax-table): Set syntax + of = to "." (punctuation). + 2004-09-19 Stefan * subr.el (event-basic-type): Fix mask (extend to 22bits). @@ -227,6 +325,11 @@ * desktop.el (desktop-clear-preserve-buffers): Remove make-obsolete-variable. +2004-09-08 Richard M. Stallman + + * buff-menu.el (list-buffers-noselect): Call format-mode-line + with the buffer as argument. + 2004-09-08 Stefan Monnier * vc-arch.el (vc-arch-state): Fix parsing for `names' method. diff -r e318dfc2edc6 -r c06211125947 lisp/bindings.el --- a/lisp/bindings.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/bindings.el Thu Sep 23 10:32:54 2004 +0000 @@ -517,7 +517,7 @@ ;; CMUCL ".x86f" ".sparcf" ;; Other CL implementations (Allegro, LispWorks, OpenMCL) - ".fasl" ".ufsl" ".fsl" ".dxl" ".pfsl" + ".fasl" ".ufsl" ".fsl" ".dxl" ".pfsl" ".dfsl" ;; Libtool ".lo" ".la" ;; Gettext @@ -726,6 +726,7 @@ (define-key global-map [C-up] 'backward-paragraph) (define-key global-map [C-down] 'forward-paragraph) (define-key global-map [C-prior] 'scroll-right) +(put 'scroll-left 'disabled t) (define-key global-map [C-next] 'scroll-left) (define-key global-map [M-next] 'scroll-other-window) (define-key global-map [M-prior] 'scroll-other-window-down) diff -r e318dfc2edc6 -r c06211125947 lisp/calc/calc-graph.el --- a/lisp/calc/calc-graph.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/calc/calc-graph.el Thu Sep 23 10:32:54 2004 +0000 @@ -210,13 +210,13 @@ "title \"" (symbol-name (nth 1 ydata)) "\" " "with dots") (setq pstyle (and (eq (car-safe pstyle) 'vec) (nth (1+ num) pstyle))) - (setq lstyle (and (eq (car-safe lstyle) 'vec) (nth (1+ num) lstyle))) - (calc-graph-set-styles - (or (and (Math-num-integerp lstyle) (math-trunc lstyle)) - 0) - (or (and (Math-num-integerp pstyle) (math-trunc pstyle)) - (if (eq (car-safe (calc-var-value (nth 2 ydata))) 'vec) - 0 -1)))))) + (setq lstyle (and (eq (car-safe lstyle) 'vec) (nth (1+ num) lstyle)))) + (calc-graph-set-styles + (or (and (Math-num-integerp lstyle) (math-trunc lstyle)) + 0) + (or (and (Math-num-integerp pstyle) (math-trunc pstyle)) + (if (eq (car-safe (calc-var-value (nth 2 ydata))) 'vec) + 0 -1))))) (defun calc-graph-lookup (thing) (if (and (eq (car-safe thing) 'var) diff -r e318dfc2edc6 -r c06211125947 lisp/calc/calc.el --- a/lisp/calc/calc.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/calc/calc.el Thu Sep 23 10:32:54 2004 +0000 @@ -427,7 +427,7 @@ (calc-display-strings nil "If non-nil, display vectors of byte-sized integers as strings.") - (calc-matrix-just 'center + (calc-matrix-just center "If nil, vector elements are left-justified. If `right', vector elements are right-justified. If `center', vector elements are centered.") @@ -542,10 +542,10 @@ (calc-assoc-selections t "If non-nil, selection hides deep structure of associative formulas.") - (calc-display-working-message 'lots + (calc-display-working-message lots "If non-nil, display \"Working...\" for potentially slow Calculator commands.") - (calc-auto-why 'maybe + (calc-auto-why maybe "If non-nil, automatically execute a \"why\" command to explain odd results.") (calc-timing nil @@ -554,16 +554,16 @@ (calc-mode-save-mode local) (calc-standard-date-formats - '("N" - "Www Mmm D, YYYY" - "D Mmm YYYY<, h:mm:SS>" - "Www Mmm BD< hh:mm:ss> YYYY" - "M/D/Y< H:mm:SSpp>" - "D.M.Y< h:mm:SS>" - "M-D-Y< H:mm:SSpp>" - "D-M-Y< h:mm:SS>" - "j<, h:mm:SS>" - "YYddd< hh:mm:ss>")) + ("N" + "Www Mmm D, YYYY" + "D Mmm YYYY<, h:mm:SS>" + "Www Mmm BD< hh:mm:ss> YYYY" + "M/D/Y< H:mm:SSpp>" + "D.M.Y< h:mm:SS>" + "M-D-Y< H:mm:SSpp>" + "D-M-Y< h:mm:SS>" + "j<, h:mm:SS>" + "YYddd< hh:mm:ss>")) (calc-autorange-units nil) diff -r e318dfc2edc6 -r c06211125947 lisp/calendar/calendar.el --- a/lisp/calendar/calendar.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/calendar/calendar.el Thu Sep 23 10:32:54 2004 +0000 @@ -4,6 +4,7 @@ ;; 2000, 2001, 2003, 2004 Free Software Foundation, Inc. ;; Author: Edward M. Reingold +;; Maintainer: Glenn Morris ;; Keywords: calendar ;; Human-Keywords: calendar, Gregorian calendar, diary, holidays @@ -1046,13 +1047,43 @@ (defcustom christian-holidays '((if all-christian-calendar-holidays (holiday-fixed 1 6 "Epiphany")) - (holiday-easter-etc) + (holiday-easter-etc 0 "Easter Sunday") + (holiday-easter-etc -2 "Good Friday") + (holiday-easter-etc -46 "Ash Wednesday") + (if all-christian-calendar-holidays + (holiday-easter-etc -63 "Septuagesima Sunday")) + (if all-christian-calendar-holidays + (holiday-easter-etc -56 "Sexagesima Sunday")) + (if all-christian-calendar-holidays + (holiday-easter-etc -49 "Shrove Sunday")) + (if all-christian-calendar-holidays + (holiday-easter-etc -48 "Shrove Monday")) + (if all-christian-calendar-holidays + (holiday-easter-etc -47 "Shrove Tuesday")) + (if all-christian-calendar-holidays + (holiday-easter-etc -14 "Passion Sunday")) + (if all-christian-calendar-holidays + (holiday-easter-etc -7 "Palm Sunday")) + (if all-christian-calendar-holidays + (holiday-easter-etc -3 "Maundy Thursday")) + (if all-christian-calendar-holidays + (holiday-easter-etc 35 "Rogation Sunday")) + (if all-christian-calendar-holidays + (holiday-easter-etc 39 "Ascension Day")) + (if all-christian-calendar-holidays + (holiday-easter-etc 49 "Pentecost (Whitsunday)")) + (if all-christian-calendar-holidays + (holiday-easter-etc 50 "Whitmonday")) + (if all-christian-calendar-holidays + (holiday-easter-etc 56 "Trinity Sunday")) + (if all-christian-calendar-holidays + (holiday-easter-etc 60 "Corpus Christi")) (if all-christian-calendar-holidays (holiday-greek-orthodox-easter)) (if all-christian-calendar-holidays (holiday-fixed 8 15 "Assumption")) (if all-christian-calendar-holidays - (holiday-advent)) + (holiday-advent 0 "Advent")) (holiday-fixed 12 25 "Christmas") (if all-christian-calendar-holidays (holiday-julian 12 25 "Eastern Orthodox Christmas"))) diff -r e318dfc2edc6 -r c06211125947 lisp/calendar/holidays.el --- a/lisp/calendar/holidays.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/calendar/holidays.el Thu Sep 23 10:32:54 2004 +0000 @@ -1,8 +1,10 @@ ;;; holidays.el --- holiday functions for the calendar package -;; Copyright (C) 1989, 90, 92, 93, 94, 1997 Free Software Foundation, Inc. +;; Copyright (C) 1989, 1990, 1992, 1993, 1994, 1997, 2004 Free +;; Software Foundation, Inc. ;; Author: Edward M. Reingold +;; Maintainer: Glenn Morris ;; Keywords: holidays, calendar ;; This file is part of GNU Emacs. @@ -398,86 +400,46 @@ (string (if date (eval string)))) (list (list date string))))))) -(defun holiday-advent () - "Date of Advent, if visible in calendar window." +(defun holiday-advent (n string) + "Date of Nth day after advent (named STRING), if visible in calendar window." (let ((year displayed-year) (month displayed-month)) (increment-calendar-month month year -1) (let ((advent (calendar-gregorian-from-absolute - (calendar-dayname-on-or-before 0 - (calendar-absolute-from-gregorian - (list 12 3 year)))))) + (+ n + (calendar-dayname-on-or-before + 0 + (calendar-absolute-from-gregorian + (list 12 3 year))))))) (if (calendar-date-is-visible-p advent) - (list (list advent "Advent")))))) + (list (list advent string)))))) -(defun holiday-easter-etc () - "List of dates related to Easter, as visible in calendar window." - (if (and (> displayed-month 5) (not all-christian-calendar-holidays)) - nil;; Ash Wednesday, Good Friday, and Easter are not visible. - (let* ((century (1+ (/ displayed-year 100))) - (shifted-epact ;; Age of moon for April 5... - (% (+ 14 (* 11 (% displayed-year 19));; ...by Nicaean rule - (- ;; ...corrected for the Gregorian century rule - (/ (* 3 century) 4)) - (/ ;; ...corrected for Metonic cycle inaccuracy. - (+ 5 (* 8 century)) 25) - (* 30 century));; Keeps value positive. - 30)) - (adjusted-epact ;; Adjust for 29.5 day month. - (if (or (= shifted-epact 0) - (and (= shifted-epact 1) (< 10 (% displayed-year 19)))) - (1+ shifted-epact) - shifted-epact)) - (paschal-moon ;; Day after the full moon on or after March 21. - (- (calendar-absolute-from-gregorian (list 4 19 displayed-year)) - adjusted-epact)) - (abs-easter (calendar-dayname-on-or-before 0 (+ paschal-moon 7))) - (mandatory +(defun holiday-easter-etc (n string) + "Date of Nth day after Easter (named STRING), if visible in calendar window." + (let* ((century (1+ (/ displayed-year 100))) + (shifted-epact ;; Age of moon for April 5... + (% (+ 14 (* 11 (% displayed-year 19));; ...by Nicaean rule + (- ;; ...corrected for the Gregorian century rule + (/ (* 3 century) 4)) + (/ ;; ...corrected for Metonic cycle inaccuracy. + (+ 5 (* 8 century)) 25) + (* 30 century));; Keeps value positive. + 30)) + (adjusted-epact ;; Adjust for 29.5 day month. + (if (or (= shifted-epact 0) + (and (= shifted-epact 1) (< 10 (% displayed-year 19)))) + (1+ shifted-epact) + shifted-epact)) + (paschal-moon ;; Day after the full moon on or after March 21. + (- (calendar-absolute-from-gregorian (list 4 19 displayed-year)) + adjusted-epact)) + (abs-easter (calendar-dayname-on-or-before 0 (+ paschal-moon 7))) + (mandatory (list - (list (calendar-gregorian-from-absolute abs-easter) - "Easter Sunday") - (list (calendar-gregorian-from-absolute (- abs-easter 2)) - "Good Friday") - (list (calendar-gregorian-from-absolute (- abs-easter 46)) - "Ash Wednesday"))) - (optional - (list - (list (calendar-gregorian-from-absolute (- abs-easter 63)) - "Septuagesima Sunday") - (list (calendar-gregorian-from-absolute (- abs-easter 56)) - "Sexagesima Sunday") - (list (calendar-gregorian-from-absolute (- abs-easter 49)) - "Shrove Sunday") - (list (calendar-gregorian-from-absolute (- abs-easter 48)) - "Shrove Monday") - (list (calendar-gregorian-from-absolute (- abs-easter 47)) - "Shrove Tuesday") - (list (calendar-gregorian-from-absolute (- abs-easter 14)) - "Passion Sunday") - (list (calendar-gregorian-from-absolute (- abs-easter 7)) - "Palm Sunday") - (list (calendar-gregorian-from-absolute (- abs-easter 3)) - "Maundy Thursday") - (list (calendar-gregorian-from-absolute (+ abs-easter 35)) - "Rogation Sunday") - (list (calendar-gregorian-from-absolute (+ abs-easter 39)) - "Ascension Day") - (list (calendar-gregorian-from-absolute (+ abs-easter 49)) - "Pentecost (Whitsunday)") - (list (calendar-gregorian-from-absolute (+ abs-easter 50)) - "Whitmonday") - (list (calendar-gregorian-from-absolute (+ abs-easter 56)) - "Trinity Sunday") - (list (calendar-gregorian-from-absolute (+ abs-easter 60)) - "Corpus Christi"))) - (output-list - (filter-visible-calendar-holidays mandatory))) - (if all-christian-calendar-holidays - (setq output-list - (append - (filter-visible-calendar-holidays optional) - output-list))) - output-list))) + (list (calendar-gregorian-from-absolute (+ abs-easter n)) + string))) + (output-list (filter-visible-calendar-holidays mandatory))) + output-list)) (defun holiday-greek-orthodox-easter () "Date of Easter according to the rule of the Council of Nicaea." diff -r e318dfc2edc6 -r c06211125947 lisp/descr-text.el --- a/lisp/descr-text.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/descr-text.el Thu Sep 23 10:32:54 2004 +0000 @@ -525,7 +525,8 @@ (push (format "%s;" (pop props)) ps)) (list (cons "Properties" (nreverse ps))))) ("to input" - ,@(let ((key-list (and current-input-method + ,@(let ((key-list (and (eq input-method-function + 'quail-input-method) (quail-find-key char)))) (if (consp key-list) (list "type" diff -r e318dfc2edc6 -r c06211125947 lisp/eshell/esh-ext.el --- a/lisp/eshell/esh-ext.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/eshell/esh-ext.el Thu Sep 23 10:32:54 2004 +0000 @@ -150,8 +150,8 @@ (defcustom eshell-explicit-command-char ?* "*If this char occurs before a command name, call it externally. -That is, although vi may be an alias, *vi will always call the -external version. UNIX users may prefer this variable to be \." +That is, although `vi' may be an alias, `\vi' will always call the +external version." :type 'character :group 'eshell-ext) diff -r e318dfc2edc6 -r c06211125947 lisp/files.el --- a/lisp/files.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/files.el Thu Sep 23 10:32:54 2004 +0000 @@ -439,10 +439,7 @@ "*Control processing of the \"variable\" `eval' in a file's local variables. The value can be t, nil or something else. A value of t means obey `eval' variables; -nil means ignore them; anything else means query. - -The command \\[normal-mode] always obeys local-variables lists -and ignores this variable." +nil means ignore them; anything else means query." :type '(choice (const :tag "Obey" t) (const :tag "Ignore" nil) (other :tag "Query" other)) @@ -2110,9 +2107,7 @@ buffer-file-name) (concat "buffer " (buffer-name)))))))))) - (let ((continue t) - prefix prefixlen suffix beg - mode-specified + (let (prefix prefixlen suffix beg (enable-local-eval enable-local-eval)) ;; The prefix is what comes before "local variables:" in its line. ;; The suffix is what comes after "local variables:" in its line. @@ -2129,46 +2124,66 @@ (if prefix (setq prefixlen (length prefix) prefix (regexp-quote prefix))) (if suffix (setq suffix (concat (regexp-quote suffix) "$"))) - (while continue - ;; Look at next local variable spec. - (if selective-display (re-search-forward "[\n\C-m]") - (forward-line 1)) - ;; Skip the prefix, if any. - (if prefix - (if (looking-at prefix) - (forward-char prefixlen) - (error "Local variables entry is missing the prefix"))) - ;; Find the variable name; strip whitespace. - (skip-chars-forward " \t") - (setq beg (point)) - (skip-chars-forward "^:\n") - (if (eolp) (error "Missing colon in local variables entry")) - (skip-chars-backward " \t") - (let* ((str (buffer-substring beg (point))) - (var (read str)) - val) - ;; Setting variable named "end" means end of list. - (if (string-equal (downcase str) "end") - (setq continue nil) - ;; Otherwise read the variable value. - (skip-chars-forward "^:") - (forward-char 1) - (setq val (read (current-buffer))) - (skip-chars-backward "\n") + (forward-line 1) + (let ((startpos (point)) + endpos + (thisbuf (current-buffer))) + (save-excursion + (if (not (re-search-forward + (concat (or prefix "") + "[ \t]*End:[ \t]*" + (or suffix "")) + nil t)) + (error "Local variables list is not properly terminated")) + (beginning-of-line) + (setq endpos (point))) + + (with-temp-buffer + (insert-buffer-substring thisbuf startpos endpos) + (goto-char (point-min)) + (subst-char-in-region (point) (point-max) + ?\^m ?\n) + (while (not (eobp)) + ;; Discard the prefix, if any. + (if prefix + (if (looking-at prefix) + (delete-region (point) (match-end 0)) + (error "Local variables entry is missing the prefix"))) + (end-of-line) + ;; Discard the suffix, if any. + (if suffix + (if (looking-back suffix) + (delete-region (match-beginning 0) (point)) + (error "Local variables entry is missing the suffix"))) + (forward-line 1)) + (goto-char (point-min)) + + (while (not (eobp)) + ;; Find the variable name; strip whitespace. (skip-chars-forward " \t") - (or (if suffix (looking-at suffix) (eolp)) - (error "Local variables entry is terminated incorrectly")) - (if mode-only - (if (eq var 'mode) - (setq mode-specified t)) - ;; Set the variable. "Variables" mode and eval are funny. - (hack-one-local-variable var val)))))))) + (setq beg (point)) + (skip-chars-forward "^:\n") + (if (eolp) (error "Missing colon in local variables entry")) + (skip-chars-backward " \t") + (let* ((str (buffer-substring beg (point))) + (var (read str)) + val) + ;; Read the variable value. + (skip-chars-forward "^:") + (forward-char 1) + (setq val (read (current-buffer))) + (if mode-only + (if (eq var 'mode) + (setq mode-specified t)) + ;; Set the variable. "Variables" mode and eval are funny. + (with-current-buffer thisbuf + (hack-one-local-variable var val)))) + (forward-line 1))))))) (unless mode-only (run-hooks 'hack-local-variables-hook)) mode-specified)) -(defvar ignored-local-variables - '(enable-local-eval) +(defvar ignored-local-variables () "Variables to be ignored in a file's local variable spec.") ;; Get confirmation before setting these variables as locals in a file. @@ -2234,8 +2249,7 @@ If VAL is nil or omitted, the question is whether any value might be dangerous." (let ((safep (get sym 'safe-local-variable))) - (or (memq sym ignored-local-variables) - (get sym 'risky-local-variable) + (or (get sym 'risky-local-variable) (and (string-match "-hooks?$\\|-functions?$\\|-forms?$\\|-program$\\|-command$\\|-predicate$\\|font-lock-keywords$\\|font-lock-keywords-[0-9]+$\\|font-lock-syntactic-keywords$\\|-frame-alist$\\|-mode-alist$\\|-map$\\|-map-alist$" (symbol-name sym)) (not safep)) @@ -2309,6 +2323,8 @@ ((eq var 'coding) ;; We have already handled coding: tag in set-auto-coding. nil) + ((memq var ignored-local-variables) + nil) ;; "Setting" eval means either eval it or do nothing. ;; Likewise for setting hook variables. ((risky-local-variable-p var val) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/ChangeLog Thu Sep 23 10:32:54 2004 +0000 @@ -1,6 +1,156 @@ +2004-09-20 Stefan Monnier + + * mm-decode.el (mm-copy-to-buffer): Preserve the data's unibyteness. + +2004-09-20 Reiner Steib + + * uudecode.el (uudecode-use-external): Add :version. + + * smime.el (smime-CA-file, smime-encrypt-cipher) + (smime-dns-server): Add :version. + + * smiley.el (gnus-smiley-file-types): Add :version. + + * sha1.el (sha1-use-external): Add :version. + + * pgg-def.el (pgg-query-keyserver): Add :version. + + * nnmail.el (nnmail-fancy-expiry-targets) + (nnmail-mail-splitting-charset, nnmail-mail-splitting-decodes): + + * nnimap.el (nnimap-split-download-body, nnimap-dont-close) + (nnimap-retrieve-groups-asynchronous): Add :version. + (nnimap-close-asynchronous): Add :version. Fixed typo in doc string. + + * mml.el (mml-content-disposition-parameters) + (mml-insert-mime-headers-always): Add :version. + + * mm-util.el (mm-coding-system-priorities): + + * mm-decode.el (mm-inline-text-html-with-images) + (mm-keep-viewer-alive-types, mm-external-terminal-program) + (mm-verify-option): Add :version. + (mm-text-html-renderer): Change :version. + + * message.el (message-fcc-externalize-attachments) + (message-required-headers, message-draft-headers) + (message-subject-trailing-was-query) + (message-subject-trailing-was-ask-regexp) + (message-subject-trailing-was-regexp, message-mark-insert-begin) + (message-mark-insert-end, message-archive-header) + (message-archive-note, message-cross-post-default) + (message-cross-post-note, message-followup-to-note) + (message-cross-post-note-function, message-use-mail-followup-to) + (message-subscribed-address-functions) + (message-subscribed-address-file, message-subscribed-addresses) + (message-subscribed-regexps, message-allow-no-recipients) + (message-yank-cited-prefix, message-signature-insert-empty-line) + (message-hidden-headers, message-hierarchical-addresses) + (message-mail-user-agent, message-use-idna) + (message-valid-fqdn-regexp) + (message-strip-special-text-properties, message-header-synonyms) + (message-beginning-of-line, message-tab-body-function): Add :version. + (message-insert-canlock, message-wide-reply-confirm-recipients): + Change :version. + + * mail-source.el (mail-source-ignore-errors): Add :group, :type + and :version. + (mail-source-delete-old-incoming-confirm) + (mail-source-movemail-program): Add :version. + + * gnus.el (gnus-parameters, gnus-user-agent): Add :version. + (gnus-agent-cache, gnus-agent): Change :version. + + * gnus-util.el (gnus-use-byte-compile): Change :version. + + * gnus-sum.el (gnus-summary-make-false-root-always) + (gnus-summary-default-high-score) + (gnus-summary-default-low-score, gnus-auto-goto-ignores) + (gnus-forwarded-mark, gnus-unseen-mark, gnus-no-mark) + (gnus-read-all-available-headers, gnus-article-emulate-mime) + (gnus-sum-thread-tree-root, gnus-sum-thread-tree-false-root) + (gnus-sum-thread-tree-single-indent) + (gnus-sum-thread-tree-vertical, gnus-sum-thread-tree-indent) + (gnus-sum-thread-tree-leaf-with-other) + (gnus-sum-thread-tree-single-leaf): Add :version. + (gnus-summary-display-arrow, gnus-summary-muttprint-program) + (gnus-article-loose-mime): Change :version. + + * gnus-start.el (gnus-backup-startup-file) + (gnus-save-startup-file-via-temp-buffer): Add :version. + + * gnus-srvr.el (gnus-server-browse-in-group-buffer) + (gnus-server-offline-face): Add :version. + + * gnus-score.el (gnus-adaptive-word-length-limit): + + * gnus-msg.el (gnus-gcc-externalize-attachments) + (gnus-debug-files, gnus-debug-exclude-variables) + (gnus-discouraged-post-methods): Change :version. + (gnus-confirm-mail-reply-to-news) + (gnus-confirm-treat-mail-like-news): Add :version. + + * gnus-int.el (gnus-server-unopen-status): Add :version. + + * gnus-group.el (gnus-group-jump-to-group-prompt) + (gnus-large-ephemeral-newsgroup) + (gnus-fetch-old-ephemeral-headers): Add :version. + + * gnus-fun.el (gnus-x-face-directory) + (gnus-convert-pbm-to-x-face-command) + (gnus-convert-image-to-x-face-command) + (gnus-convert-image-to-face-command): Add :version. + + * gnus-delay.el (gnus-delay-default-hour): Add :version. + + * gnus-cite.el (gnus-cite-blank-line-after-header) + (gnus-article-boring-faces): + + * gnus-art.el (gnus-buttonized-mime-types) + (gnus-inhibit-mime-unbuttonizing) + (gnus-treat-display-face) + (gnus-treat-body-boundary): Change :version. + (gnus-body-boundary-delimiter, gnus-picon-databases) + (gnus-treat-strip-cr, gnus-treat-leading-whitespace) + (gnus-treat-date-english, gnus-treat-fold-headers) + (gnus-article-skip-boring, gnus-treat-fold-newsgroups) + (gnus-treat-mail-picon, gnus-treat-wash-html) + (gnus-article-encrypt-protocol) + (gnus-use-idna, gnus-article-over-scroll) + (gnus-mime-display-multipart-alternative-as-mixed) + (gnus-mime-display-multipart-related-as-mixed) + (gnus-button-valid-fqdn-regexp, gnus-button-man-handler) + (gnus-ctan-url, gnus-button-ctan-handler) + (gnus-button-handle-ctan-bogus-regexp) + (gnus-button-ctan-directory-regexp) + (gnus-button-mid-or-mail-regexp, gnus-button-prefer-mid-or-mail) + (gnus-button-mid-or-mail-heuristic-alist, gnus-button-tex-level) + (gnus-button-man-level, gnus-button-emacs-level) + (gnus-button-message-level, gnus-button-browse-level): Add :version. + + * gnus-agent.el (gnus-agent-fetched-hook): Add :version. + (gnus-agent-go-online): Change :version. + (gnus-agent-expire-unagentized-dirs) + (gnus-agent-auto-agentize-methods): Add :version. + + * flow-fill.el (fill-flowed-display-column) + (fill-flowed-encode-column): Add :version. + + * deuglify.el (gnus-outlook-deuglify-unwrap-min) + (gnus-outlook-deuglify-unwrap-max) + (gnus-outlook-deuglify-cite-marks) + (gnus-outlook-deuglify-unwrap-stop-chars) + (gnus-outlook-deuglify-no-wrap-chars) + (gnus-outlook-deuglify-attrib-cut-regexp) + (gnus-outlook-deuglify-attrib-verb-regexp) + (gnus-outlook-deuglify-attrib-end-regexp) + (gnus-outlook-display-hook): Add :version. + + * binhex.el (binhex-use-external): Add :version. + 2004-09-16 Reiner Steib - * gnus-sum.el (gnus-fetch-old-headers): Added custom choices `t' + * gnus-sum.el (gnus-fetch-old-headers): Add custom choices `t' and `invisible'. 2004-09-13 Simon Josefsson @@ -9,7 +159,7 @@ 2004-09-13 Reiner Steib - * gnus-sum.el (gnus-summary-copy-article): Fixed doc string. + * gnus-sum.el (gnus-summary-copy-article): Fix doc string. 2004-09-10 Miles Bader @@ -17,10 +167,10 @@ 2004-09-10 Teodor Zlatanov - * nnimap.el (nnimap-open-connection): allow 'imaps' as a synonym + * nnimap.el (nnimap-open-connection): Allow 'imaps' as a synonym for the 'imap' port in netrc files - * gnus-registry.el (gnus-registry-trim): watch out for negatives + * gnus-registry.el (gnus-registry-trim): Watch out for negatives in gnus-registry-trim 2004-09-10 Simon Josefsson @@ -30,10 +180,9 @@ 2004-09-08 Reiner Steib * nntp.el (nntp): New customization group. - (nntp-authinfo-file): Added customization group. + (nntp-authinfo-file): Add customization group. - * mml2015.el (mml2015-unabbrev-trust-alist): Added customization - group. + * mml2015.el (mml2015-unabbrev-trust-alist): Add customization group. * mml-sec.el (mml-signencrypt-style-alist): Ditto. diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/binhex.el --- a/lisp/gnus/binhex.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/binhex.el Thu Sep 23 10:32:54 2004 +0000 @@ -50,6 +50,7 @@ (defcustom binhex-use-external (executable-find binhex-decoder-program) "*Use external binhex program." + :version "21.4" :group 'gnus-extract :type 'boolean) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/deuglify.el --- a/lisp/gnus/deuglify.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/deuglify.el Thu Sep 23 10:32:54 2004 +0000 @@ -235,46 +235,54 @@ ;;;###autoload (defcustom gnus-outlook-deuglify-unwrap-min 45 "Minimum length of the cited line above the (possibly) wrapped line." + :version "21.4" :type 'integer :group 'gnus-outlook-deuglify) ;;;###autoload (defcustom gnus-outlook-deuglify-unwrap-max 95 "Maximum length of the cited line after unwrapping." + :version "21.4" :type 'integer :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-cite-marks ">|#%" "Characters that indicate cited lines." + :version "21.4" :type 'string :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-unwrap-stop-chars nil ;; ".?!" or nil "Characters that inhibit unwrapping if they are the last one on the cited line above the possible wrapped line." + :version "21.4" :type '(radio (const :format "None " nil) (string :size 0 :value ".?!")) :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-no-wrap-chars "`" "Characters that inhibit unwrapping if they are the first one in the possibly wrapped line." + :version "21.4" :type 'string :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-attrib-cut-regexp "\\(On \\|Am \\)?\\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\),[^,]+, " "Regular expression matching the beginning of an attribution line that should be cut off." + :version "21.4" :type 'string :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-attrib-verb-regexp "wrote\\|writes\\|says\\|schrieb\\|schreibt\\|meinte\\|skrev\\|a écrit\\|schreef\\|escribió" "Regular expression matching the verb used in an attribution line." + :version "21.4" :type 'string :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-attrib-end-regexp ": *\\|\\.\\.\\." "Regular expression matching the end of an attribution line." + :version "21.4" :type 'string :group 'gnus-outlook-deuglify) @@ -282,6 +290,7 @@ (defcustom gnus-outlook-display-hook nil "A hook called after an deuglified article has been prepared. It is run after `gnus-article-prepare-hook'." + :version "21.4" :type 'hook :group 'gnus-outlook-deuglify) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/flow-fill.el --- a/lisp/gnus/flow-fill.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/flow-fill.el Thu Sep 23 10:32:54 2004 +0000 @@ -56,6 +56,7 @@ (defcustom fill-flowed-display-column 'fill-column "Column beyond which format=flowed lines are wrapped, when displayed. This can be a Lisp expression or an integer." + :version "21.4" :group 'mime-display :type '(choice (const :tag "Standard `fill-column'" fill-column) (const :tag "Fit Window" (- (window-width) 5)) @@ -66,6 +67,7 @@ "Column beyond which format=flowed lines are wrapped, in outgoing messages. This can be a Lisp expression or an integer. RFC 2646 suggests 66 characters for readability." + :version "21.4" :group 'mime-display :type '(choice (const :tag "Standard fill-column" fill-column) (const :tag "RFC 2646 default (66)" 66) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-agent.el --- a/lisp/gnus/gnus-agent.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-agent.el Thu Sep 23 10:32:54 2004 +0000 @@ -60,6 +60,7 @@ (defcustom gnus-agent-fetched-hook nil "Hook run when finished fetching articles." + :version "21.4" :group 'gnus-agent :type 'hook) @@ -125,7 +126,7 @@ (defcustom gnus-agent-go-online 'ask "Indicate if offline servers go online when you plug in. If this is `ask' the hook will query the user." - :version "21.1" + :version "21.3" :type '(choice (const :tag "Always" t) (const :tag "Never" nil) (const :tag "Ask" ask)) @@ -178,6 +179,7 @@ Have gnus-agent-expire scan the directories under \(gnus-agent-directory) for groups that are no longer agentized. When found, offer to remove them." + :version "21.4" :type 'boolean :group 'gnus-agent) @@ -185,6 +187,7 @@ "Initially, all servers from these methods are agentized. The user may remove or add servers using the Server buffer. See Info node `(gnus)Server Buffer'." + :version "21.4" :type '(repeat symbol) :group 'gnus-agent) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-art.el --- a/lisp/gnus/gnus-art.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-art.el Thu Sep 23 10:32:54 2004 +0000 @@ -213,6 +213,7 @@ signatures, but will never scroll down to show you a page consisting only of boring text. Boring text is controlled by `gnus-article-boring-faces'." + :version "21.4" :type 'boolean :group 'gnus-article-hiding) @@ -744,7 +745,7 @@ To see e.g. security buttons you could set this to `(\"multipart/signed\")'. This variable is only used when `gnus-inhibit-mime-unbuttonizing' is nil." - :version "21.1" + :version "21.4" :group 'gnus-article-mime :type '(repeat regexp)) @@ -753,13 +754,14 @@ When nil (the default value), then some MIME parts do not get buttons, as described by the variables `gnus-buttonized-mime-types' and `gnus-unbuttonized-mime-types'." - :version "21.3" + :version "21.4" :type 'boolean) (defcustom gnus-body-boundary-delimiter "_" "String used to delimit header and body. This variable is used by `gnus-article-treat-body-boundary' which can be controlled by `gnus-treat-body-boundary'." + :version "21.4" :group 'gnus-article-various :type '(choice (item :tag "None" :value nil) string)) @@ -768,6 +770,7 @@ "Defines the location of the faces database. For information on obtaining this database of pretty pictures, please see http://www.cs.indiana.edu/picons/ftp/index.html" + :version "21.4" :type '(repeat directory) :link '(url-link :tag "download" "http://www.cs.indiana.edu/picons/ftp/index.html") @@ -908,6 +911,7 @@ "Remove carriage returns. Valid values are nil, t, `head', `last', an integer or a predicate. See Info node `(gnus)Customizing Articles' for details." + :version "21.4" :group 'gnus-article-treat :link '(custom-manual "(gnus)Customizing Articles") :type gnus-article-treat-custom) @@ -924,6 +928,7 @@ "Remove leading whitespace in headers. Valid values are nil, t, `head', `last', an integer or a predicate. See Info node `(gnus)Customizing Articles' for details." + :version "21.4" :group 'gnus-article-treat :link '(custom-manual "(gnus)Customizing Articles") :type gnus-article-treat-custom) @@ -1043,6 +1048,7 @@ "Display the Date in a format that can be read aloud in English. Valid values are nil, t, `head', `last', an integer or a predicate. See Info node `(gnus)Customizing Articles' for details." + :version "21.4" :group 'gnus-article-treat :link '(custom-manual "(gnus)Customizing Articles") :type gnus-article-treat-head-custom) @@ -1126,6 +1132,7 @@ "Fold headers. Valid values are nil, t, `head', `last', an integer or a predicate. See Info node `(gnus)Customizing Articles' for details." + :version "21.4" :group 'gnus-article-treat :link '(custom-manual "(gnus)Customizing Articles") :type gnus-article-treat-custom) @@ -1134,6 +1141,7 @@ "Fold the Newsgroups and Followup-To headers. Valid values are nil, t, `head', `last', an integer or a predicate. See Info node `(gnus)Customizing Articles' for details." + :version "21.4" :group 'gnus-article-treat :link '(custom-manual "(gnus)Customizing Articles") :type gnus-article-treat-custom) @@ -1199,7 +1207,7 @@ See Info node `(gnus)Customizing Articles' and Info node `(gnus)X-Face' for details." :group 'gnus-article-treat - :version "21.1" + :version "21.4" :link '(custom-manual "(gnus)Customizing Articles") :link '(custom-manual "(gnus)X-Face") :type gnus-article-treat-head-custom) @@ -1260,6 +1268,7 @@ Valid values are nil, t, `head', `last', an integer or a predicate. See Info node `(gnus)Customizing Articles' and Info node `(gnus)Picons' for details." + :version "21.4" :group 'gnus-article-treat :group 'gnus-picon :link '(custom-manual "(gnus)Customizing Articles") @@ -1275,7 +1284,7 @@ "Draw a boundary at the end of the headers. Valid values are nil and `head'. See Info node `(gnus)Customizing Articles' for details." - :version "21.1" + :version "21.4" :group 'gnus-article-treat :link '(custom-manual "(gnus)Customizing Articles") :type gnus-article-treat-head-custom) @@ -1293,6 +1302,7 @@ "Format as HTML. Valid values are nil, t, `head', `last', an integer or a predicate. See Info node `(gnus)Customizing Articles' for details." + :version "21.4" :group 'gnus-article-treat :link '(custom-manual "(gnus)Customizing Articles") :type gnus-article-treat-custom) @@ -1341,6 +1351,7 @@ (defcustom gnus-article-encrypt-protocol "PGP" "The protocol used for encrypt articles. It is a string, such as \"PGP\". If nil, ask user." + :version "21.4" :type 'string :group 'mime-security) @@ -1352,11 +1363,13 @@ (executable-find idna-program)) "Whether IDNA decoding of headers is used when viewing messages. This requires GNU Libidn, and by default only enabled if it is found." + :version "21.4" :group 'gnus-article-headers :type 'boolean) (defcustom gnus-article-over-scroll nil "If non-nil, allow scrolling the article buffer even when there no more text." + :version "21.4" :group 'gnus-article :type 'boolean) @@ -4606,6 +4619,7 @@ (defcustom gnus-mime-display-multipart-alternative-as-mixed nil "Display \"multipart/alternative\" parts as \"multipart/mixed\"." + :version "21.4" :group 'gnus-article-mime :type 'boolean) @@ -4615,6 +4629,7 @@ If displaying \"text/html\" is discouraged \(see `mm-discouraged-alternatives'\) images or other material inside a \"multipart/related\" part might be overlooked when this variable is nil." + :version "21.4" :group 'gnus-article-mime :type 'boolean) @@ -5719,6 +5734,7 @@ (defcustom gnus-button-valid-fqdn-regexp message-valid-fqdn-regexp "Regular expression that matches a valid FQDN." + :version "21.4" :group 'gnus-article-buttons :type 'regexp) @@ -5726,6 +5742,7 @@ "Function to use for displaying man pages. The function must take at least one argument with a string naming the man page." + :version "21.4" :type '(choice (function-item :tag "Man" manual-entry) (function-item :tag "Woman" woman) (function :tag "Other")) @@ -5736,6 +5753,7 @@ If the default site is too slow, try to find a CTAN mirror, see . See also the variable `gnus-button-handle-ctan'." + :version "21.4" :group 'gnus-article-buttons :link '(custom-manual "(gnus)Group Parameters") :type '(choice (const "http://www.tex.ac.uk/tex-archive/") @@ -5746,12 +5764,14 @@ (defcustom gnus-button-ctan-handler 'browse-url "Function to use for displaying CTAN links. The function must take one argument, the string naming the URL." + :version "21.4" :type '(choice (function-item :tag "Browse Url" browse-url) (function :tag "Other")) :group 'gnus-article-buttons) (defcustom gnus-button-handle-ctan-bogus-regexp "^/?tex-archive/\\|^/" "Bogus strings removed from CTAN URLs." + :version "21.4" :group 'gnus-article-buttons :type '(choice (const "^/?tex-archive/\\|/") (regexp :tag "Other"))) @@ -5765,6 +5785,7 @@ "\\)") "Regular expression for ctan directories. It should match all directories in the top level of `gnus-ctan-url'." + :version "21.4" :group 'gnus-article-buttons :type 'regexp) @@ -5774,6 +5795,7 @@ gnus-button-valid-fqdn-regexp ">?\\)\\b") "Regular expression that matches a message ID or a mail address." + :version "21.4" :group 'gnus-article-buttons :type 'regexp) @@ -5785,6 +5807,7 @@ symbol `ask', always query the user what do do. If it is a function, this function will be called with the string as it's only argument. The function must return `mid', `mail', `invalid' or `ask'." + :version "21.4" :group 'gnus-article-buttons :type '(choice (function-item :tag "Heuristic function" gnus-button-mid-or-mail-heuristic) @@ -5848,6 +5871,7 @@ A negative RATE indicates a message IDs, whereas a positive indicates a mail address. The REGEXP is processed with `case-fold-search' set to nil." + :version "21.4" :group 'gnus-article-buttons :type '(repeat (cons (number :tag "Rate") (regexp :tag "Regexp")))) @@ -6032,6 +6056,7 @@ specific groups. Setting it higher in TeX groups is probably a good idea. See Info node `(gnus)Group Parameters' and the variable `gnus-parameters' on how to set variables in specific groups." + :version "21.4" :group 'gnus-article-buttons :link '(custom-manual "(gnus)Group Parameters") :type 'integer) @@ -6043,6 +6068,7 @@ specific groups. Setting it higher in Unix groups is probably a good idea. See Info node `(gnus)Group Parameters' and the variable `gnus-parameters' on how to set variables in specific groups." + :version "21.4" :group 'gnus-article-buttons :link '(custom-manual "(gnus)Group Parameters") :type 'integer) @@ -6054,6 +6080,7 @@ specific groups. Setting it higher in Emacs or Gnus related groups is probably a good idea. See Info node `(gnus)Group Parameters' and the variable `gnus-parameters' on how to set variables in specific groups." + :version "21.4" :group 'gnus-article-buttons :link '(custom-manual "(gnus)Group Parameters") :type 'integer) @@ -6063,6 +6090,7 @@ The higher the number, the more buttons will appear and the more false positives are possible." ;; mail addresses, MIDs, URLs for news, ... + :version "21.4" :group 'gnus-article-buttons :type 'integer) @@ -6071,6 +6099,7 @@ The higher the number, the more buttons will appear and the more false positives are possible." ;; stuff handled by `browse-url' or `gnus-button-embedded-url' + :version "21.4" :group 'gnus-article-buttons :type 'integer) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-cite.el --- a/lisp/gnus/gnus-cite.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-cite.el Thu Sep 23 10:32:54 2004 +0000 @@ -278,6 +278,7 @@ (defcustom gnus-cite-blank-line-after-header t "If non-nil, put a blank line between the citation header and the button." + :version "21.4" :group 'gnus-cite :type 'boolean) @@ -289,6 +290,7 @@ If an article has more pages below the one you are looking at, but nothing on those pages is a word of at least three letters that is not in a boring face, then the pages will be skipped." + :version "21.4" :type '(repeat face) :group 'gnus-article-hiding) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-delay.el --- a/lisp/gnus/gnus-delay.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-delay.el Thu Sep 23 10:32:54 2004 +0000 @@ -60,6 +60,7 @@ (defcustom gnus-delay-default-hour 8 "*If deadline is given as date, then assume this time of day." + :version "21.4" :type 'integer :group 'gnus-delay) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-fun.el --- a/lisp/gnus/gnus-fun.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-fun.el Thu Sep 23 10:32:54 2004 +0000 @@ -31,11 +31,13 @@ (defcustom gnus-x-face-directory (expand-file-name "x-faces" gnus-directory) "*Directory where X-Face PBM files are stored." + :version "21.4" :group 'gnus-fun :type 'directory) (defcustom gnus-convert-pbm-to-x-face-command "pbmtoxbm %s | compface" "Command for converting a PBM to an X-Face." + :version "21.4" :group 'gnus-fun :type 'string) @@ -43,6 +45,7 @@ "Command for converting an image to an X-Face. By default it takes a GIF filename and output the X-Face header data on stdout." + :version "21.4" :group 'gnus-fun :type 'string) @@ -50,6 +53,7 @@ "Command for converting an image to an Face. By default it takes a JPEG filename and output the Face header data on stdout." + :version "21.4" :group 'gnus-fun :type 'string) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-group.el --- a/lisp/gnus/gnus-group.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-group.el Thu Sep 23 10:32:54 2004 +0000 @@ -435,6 +435,7 @@ If non-nil, the value should be a string, e.g. \"nnml:\", in which case `gnus-group-jump-to-group' offers \"Group: nnml:\" in the minibuffer prompt." + :version "21.4" :group 'gnus-group-various :type '(choice (string :tag "Prompt string") (const :tag "Empty" nil))) @@ -1959,12 +1960,14 @@ If the number of articles in a newsgroup is greater than this value, confirmation is required for selecting the newsgroup. If it is nil, no confirmation is required." + :version "21.4" :group 'gnus-group-select :type '(choice (const :tag "No limit" nil) integer)) (defcustom gnus-fetch-old-ephemeral-headers nil "Same as `gnus-fetch-old-headers', but only used for ephemeral newsgroups." + :version "21.4" :group 'gnus-thread :type '(choice (const :tag "off" nil) (const some) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-int.el --- a/lisp/gnus/gnus-int.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-int.el Thu Sep 23 10:32:54 2004 +0000 @@ -46,6 +46,7 @@ `denied', set the server denied; `offline', set the server offline; nil, ask user. If the server is not covered by Gnus agent, set the server denied." + :version "21.4" :group 'gnus-start :type '(choice (const :tag "Ask" nil) (const :tag "Deny server" denied) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-msg.el --- a/lisp/gnus/gnus-msg.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-msg.el Thu Sep 23 10:32:54 2004 +0000 @@ -142,7 +142,7 @@ (defcustom gnus-gcc-mark-as-read nil "If non-nil, automatically mark Gcc articles as read." - :version "21.1" + :version "21.4" :group 'gnus-message :type 'boolean) @@ -154,7 +154,7 @@ If it is `all', attach files as external parts; if a regexp and matches the Gcc group name, attach files as external parts; if nil, attach files as normal parts." - :version "21.1" + :version "21.4" :group 'gnus-message :type '(choice (const nil :tag "None") (const all :tag "Any") @@ -212,7 +212,7 @@ "gnus-agent.el" "gnus-cache.el" "gnus-srvr.el" "mm-util.el" "mm-decode.el" "nnmail.el" "message.el") "Files whose variables will be reported in `gnus-bug'." - :version "21.1" + :version "21.4" :group 'gnus-message :type '(repeat (string :tag "File"))) @@ -220,7 +220,7 @@ '(mm-mime-mule-charset-alist nnmail-split-fancy message-minibuffer-local-map) "Variables that should not be reported in `gnus-bug'." - :version "21.1" + :version "21.4" :group 'gnus-message :type '(repeat (symbol :tag "Variable"))) @@ -228,7 +228,7 @@ '(nndraft nnml nnimap nnmaildir nnmh nnfolder nndir) "A list of back ends that are not used in \"real\" newsgroups. This variable is used only when `gnus-post-method' is `current'." - :version "21.3" + :version "21.4" :group 'gnus-group-foreign :type '(repeat (symbol :tag "Back end"))) @@ -260,6 +260,7 @@ parameter which should return non-nil iff a confirmation is needed, or a regexp, in which case a confirmation is asked for iff the group name matches the regexp." + :version "21.4" :group 'gnus-message :type '(choice (const :tag "No" nil) (const :tag "Yes" t) @@ -272,6 +273,7 @@ when replying by mail. See the `gnus-confirm-mail-reply-to-news' variable for fine-tuning this. If nil, Gnus will never ask for confirmation if replying to mail." + :version "21.4" :group 'gnus-message :type 'boolean) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-score.el --- a/lisp/gnus/gnus-score.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-score.el Thu Sep 23 10:32:54 2004 +0000 @@ -237,6 +237,7 @@ (defcustom gnus-adaptive-word-length-limit nil "*Words of a length lesser than this limit will be ignored when doing adaptive scoring." + :version "21.4" :group 'gnus-score-adapt :type '(radio (const :format "Unlimited " nil) (integer :format "Maximum length: %v\n" :size 0))) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-srvr.el --- a/lisp/gnus/gnus-srvr.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-srvr.el Thu Sep 23 10:32:54 2004 +0000 @@ -71,6 +71,7 @@ (defcustom gnus-server-browse-in-group-buffer nil "Whether server browsing should take place in the group buffer. If nil, a faster, but more primitive, buffer is used instead." + :version "21.4" :group 'gnus-server-visual :type 'boolean) @@ -224,6 +225,7 @@ (defcustom gnus-server-offline-face 'gnus-server-offline-face "Face name to use on OFFLINE servers." + :version "21.4" :group 'gnus-server-visual :type 'face) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-start.el --- a/lisp/gnus/gnus-start.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-start.el Thu Sep 23 10:32:54 2004 +0000 @@ -47,6 +47,7 @@ "Whether to create backup files. This variable takes the same values as the `version-control' variable." + :version "21.4" :group 'gnus-start :type '(choice (const :tag "Never" never) (const :tag "If existing" nil) @@ -57,6 +58,7 @@ the buffer or write directly to the file. The buffer is faster because all of the contents are written at once. The direct write uses considerably less memory." + :version "21.4" :group 'gnus-start :type '(choice (const :tag "Write via buffer" t) (const :tag "Write directly to file" nil))) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-sum.el --- a/lisp/gnus/gnus-sum.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-sum.el Thu Sep 23 10:32:54 2004 +0000 @@ -118,6 +118,7 @@ (defcustom gnus-summary-make-false-root-always nil "Always make a false dummy root." + :version "21.4" :group 'gnus-thread :type 'boolean) @@ -218,6 +219,7 @@ "*Default threshold for a high scored article. An article will be highlighted as high scored if its score is greater than this score." + :version "21.4" :group 'gnus-score-default :type 'integer) @@ -225,6 +227,7 @@ "*Default threshold for a low scored article. An article will be highlighted as low scored if its score is smaller than this score." + :version "21.4" :group 'gnus-score-default :type 'integer) @@ -320,6 +323,7 @@ line of the first unseen article or, if all article have been seen, on the subject line of the first unread article), or a function to be called to place point on some subject line." + :version "21.4" :group 'gnus-group-select :type '(choice (const best) (const unread) @@ -363,6 +367,7 @@ NOTE: The list of unfetched articles will always be nil when plugged and, when unplugged, a subset of the undownloaded article list." + :version "21.4" :group 'gnus-summary-maneuvering :type '(choice (const :tag "None" nil) (const :tag "Undownloaded when unplugged" undownloaded) @@ -490,6 +495,7 @@ (defcustom gnus-forwarded-mark ?F "*Mark used for articles that have been forwarded." + :version "21.4" :group 'gnus-summary-marks :type 'character) @@ -510,11 +516,13 @@ (defcustom gnus-unseen-mark ?. "*Mark used for articles that haven't been seen." + :version "21.4" :group 'gnus-summary-marks :type 'character) (defcustom gnus-no-mark ? ;Whitespace "*Mark used for articles that have no other secondary mark." + :version "21.4" :group 'gnus-summary-marks :type 'character) @@ -895,7 +903,7 @@ (and (fboundp 'display-graphic-p) (display-graphic-p)) "*If non-nil, display an arrow highlighting the current article." - :version "21.1" + :version "21.4" :group 'gnus-summary :type 'boolean) @@ -1073,22 +1081,23 @@ This is mostly relevant for slow back ends where the user may wish to widen the summary buffer to include all headers that were fetched. Say, for nnultimate groups." + :version "21.4" :group 'gnus-summary :type '(choice boolean regexp)) (defcustom gnus-summary-muttprint-program "muttprint" "Command (and optional arguments) used to run Muttprint." - :version "21.3" + :version "21.4" :group 'gnus-summary :type 'string) (defcustom gnus-article-loose-mime nil "If non-nil, don't require MIME-Version header. Some brain-damaged MUA/MTA, e.g. Lotus Domino 5.0.6 clients, does not -supply the MIME-Version header or deliberately strip it From the mail. +supply the MIME-Version header or deliberately strip it from the mail. Set it to non-nil, Gnus will treat some articles as MIME even if the MIME-Version header is missed." - :version "21.3" + :version "21.4" :type 'boolean :group 'gnus-article-mime) @@ -1097,6 +1106,7 @@ This means that Gnus will search message bodies for text that look like uuencoded bits, yEncoded bits, and so on, and present that using the normal Gnus MIME machinery." + :version "21.4" :type 'boolean :group 'gnus-article-mime) @@ -4591,32 +4601,39 @@ (defcustom gnus-sum-thread-tree-root "> " "With %B spec, used for the root of a thread. If nil, use subject instead." + :version "21.4" :type '(radio (const :format "%v " nil) (string :size 0)) :group 'gnus-thread) (defcustom gnus-sum-thread-tree-false-root "> " "With %B spec, used for a false root of a thread. If nil, use subject instead." + :version "21.4" :type '(radio (const :format "%v " nil) (string :size 0)) :group 'gnus-thread) (defcustom gnus-sum-thread-tree-single-indent "" "With %B spec, used for a thread with just one message. If nil, use subject instead." + :version "21.4" :type '(radio (const :format "%v " nil) (string :size 0)) :group 'gnus-thread) (defcustom gnus-sum-thread-tree-vertical "| " "With %B spec, used for drawing a vertical line." + :version "21.4" :type 'string :group 'gnus-thread) (defcustom gnus-sum-thread-tree-indent " " "With %B spec, used for indenting." + :version "21.4" :type 'string :group 'gnus-thread) (defcustom gnus-sum-thread-tree-leaf-with-other "+-> " "With %B spec, used for a leaf with brothers." + :version "21.4" :type 'string :group 'gnus-thread) (defcustom gnus-sum-thread-tree-single-leaf "\\-> " "With %B spec, used for a leaf without brothers." + :version "21.4" :type 'string :group 'gnus-thread) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus-util.el --- a/lisp/gnus/gnus-util.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus-util.el Thu Sep 23 10:32:54 2004 +0000 @@ -1163,7 +1163,7 @@ Setting it to nil has no effect after the first time `gnus-byte-compile' is run." :type 'boolean - :version "21.1" + :version "21.4" :group 'gnus-various) (defun gnus-byte-compile (form) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/gnus.el --- a/lisp/gnus/gnus.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/gnus.el Thu Sep 23 10:32:54 2004 +0000 @@ -963,6 +963,7 @@ (\"mail\\\\.me\" (gnus-use-scoring t)) (\"list\\\\..*\" (total-expire . t) (broken-reply-to . t)))" + :version "21.4" :group 'gnus-group-various :type '(repeat (cons regexp (repeat sexp)))) @@ -2292,7 +2293,7 @@ When set, Gnus will prefer using the locally stored content rather than re-fetching it from the server. You also need to enable `gnus-agent' for this to have any affect." - :version "21.3" + :version "21.4" :group 'gnus-agent :type 'boolean) @@ -2311,7 +2312,7 @@ You may customize gnus-agent to disable its use. However, some back ends have started to use the agent as a client-side cache. Disabling the agent may result in noticeable loss of performance." - :version "21.3" + :version "21.4" :group 'gnus-agent :type 'boolean) @@ -2343,6 +2344,7 @@ `emacs-gnus' plus system configuration\), `emacs-gnus-type' \(same as `emacs-gnus' plus system type\) or a custom string. If you set it to a string, be sure to use a valid format, see RFC 2616." + :version "21.4" :group 'gnus-message :type '(choice (item :tag "Show Gnus and Emacs versions and system type" diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/imap.el --- a/lisp/gnus/imap.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/imap.el Thu Sep 23 10:32:54 2004 +0000 @@ -227,7 +227,8 @@ pipe, or t or `pty' to use a pty. The value has no effect if the system has no ptys or if all ptys are busy: then a pipe is used in any case. The value takes effect when a IMAP server is -opened, changing it after that has no effect.." +opened, changing it after that has no effect." + :version "21.4" :group 'imap :type 'boolean) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/mail-source.el --- a/lisp/gnus/mail-source.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/mail-source.el Thu Sep 23 10:32:54 2004 +0000 @@ -235,7 +235,10 @@ (defcustom mail-source-ignore-errors nil "*Ignore errors when querying mail sources. If nil, the user will be prompted when an error occurs. If non-nil, -the error will be ignored.") +the error will be ignored." + :version "21.4" + :group 'mail-source + :type 'boolean) (defcustom mail-source-primary-source nil "*Primary source for incoming mail. @@ -281,6 +284,7 @@ "*If non-nil, ask for for confirmation before deleting old incoming files. This variable only applies when `mail-source-delete-incoming' is a positive number." + :version "21.4" :group 'mail-source :type 'boolean) @@ -301,6 +305,7 @@ (defcustom mail-source-movemail-program nil "If non-nil, name of program for fetching new mail." + :version "21.4" :group 'mail-source :type '(choice (const nil) string)) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/message.el --- a/lisp/gnus/message.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/message.el Thu Sep 23 10:32:54 2004 +0000 @@ -135,6 +135,7 @@ (defcustom message-fcc-externalize-attachments nil "If non-nil, attachments are included as external parts in Fcc copies." + :version "21.4" :type 'boolean :group 'message-sending) @@ -174,7 +175,7 @@ (defcustom message-insert-canlock t "Whether to insert a Cancel-Lock header in news postings." - :version "21.3" + :version "21.4" :group 'message-headers :type 'boolean) @@ -203,6 +204,7 @@ "*Headers to be generated or prompted for when sending a message. Also see `message-required-news-headers' and `message-required-mail-headers'." + :version "21.4" :group 'message-news :group 'message-headers :link '(custom-manual "(message)Message Headers") @@ -210,6 +212,7 @@ (defcustom message-draft-headers '(References From) "*Headers to be generated when saving a draft message." + :version "21.4" :group 'message-news :group 'message-headers :link '(custom-manual "(message)Message Headers") @@ -287,6 +290,7 @@ `message-subject-trailing-was-query' is t, always strip the trailing old subject. In this case, `message-subject-trailing-was-regexp' is used." + :version "21.4" :type '(choice (const :tag "never" nil) (const :tag "always strip" t) (const ask)) @@ -303,6 +307,7 @@ `message-subject-trailing-was-regexp' instead. It is okay to create some false positives here, as the user is asked." + :version "21.4" :group 'message-various :link '(custom-manual "(message)Message Headers") :type 'regexp) @@ -315,6 +320,7 @@ matched against `message-subject-trailing-was-regexp' in `message-strip-subject-trailing-was'. You should use a regexp creating very few false positives here." + :version "21.4" :group 'message-various :link '(custom-manual "(message)Message Headers") :type 'regexp) @@ -327,6 +333,7 @@ (defcustom message-mark-insert-begin "--8<---------------cut here---------------start------------->8---\n" "How to mark the beginning of some inserted text." + :version "21.4" :type 'string :link '(custom-manual "(message)Insertion Variables") :group 'message-various) @@ -335,6 +342,7 @@ (defcustom message-mark-insert-end "--8<---------------cut here---------------end--------------->8---\n" "How to mark the end of some inserted text." + :version "21.4" :type 'string :link '(custom-manual "(message)Insertion Variables") :group 'message-various) @@ -344,6 +352,7 @@ "X-No-Archive: Yes\n" "Header to insert when you don't want your article to be archived. Archives \(such as groups.google.com\) respect this header." + :version "21.4" :type 'string :link '(custom-manual "(message)Header Commands") :group 'message-various) @@ -353,6 +362,7 @@ "X-No-Archive: Yes - save http://groups.google.com/" "Note to insert why you wouldn't want this posting archived. If nil, don't insert any text in the body." + :version "21.4" :type '(radio (string :format "%t: %v\n" :size 0) (const nil)) :link '(custom-manual "(message)Header Commands") @@ -372,6 +382,7 @@ If nil, `message-cross-post-followup-to' will only do a followup. Note that you can explicitly override this setting by calling `message-cross-post-followup-to' with a prefix." + :version "21.4" :type 'boolean :group 'message-various) @@ -379,6 +390,7 @@ (defcustom message-cross-post-note "Crosspost & Followup-To: " "Note to insert before signature to notify of cross-post and follow-up." + :version "21.4" :type 'string :group 'message-various) @@ -386,6 +398,7 @@ (defcustom message-followup-to-note "Followup-To: " "Note to insert before signature to notify of follow-up only." + :version "21.4" :type 'string :group 'message-various) @@ -396,6 +409,7 @@ The function will be called with four arguments. The function should not only insert a note, but also ensure old notes are deleted. See the documentation for `message-cross-post-insert-note'." + :version "21.4" :type 'function :group 'message-various) @@ -638,6 +652,7 @@ If nil, always ignore the header. If it is the symbol `ask', always query the user whether to use the value. If it is the symbol `use', always use the value." + :version "21.4" :group 'message-interface :link '(custom-manual "(message)Mailing Lists") :type '(choice (const :tag "ignore" nil) @@ -651,6 +666,7 @@ regular expressions to match lists. These functions can be used in conjunction with `message-subscribed-regexps' and `message-subscribed-addresses'." + :version "21.4" :group 'message-interface :link '(custom-manual "(message)Mailing Lists") :type '(repeat sexp)) @@ -659,6 +675,7 @@ "*A file containing addresses the user is subscribed to. If nil, do not look at any files to determine list subscriptions. If non-nil, each line of this file should be a mailing list address." + :version "21.4" :group 'message-interface :link '(custom-manual "(message)Mailing Lists") :type '(radio (file :format "%t: %v\n" :size 0) @@ -669,6 +686,7 @@ If nil, do not use any predefined list subscriptions. This list of addresses can be used in conjunction with `message-subscribed-address-functions' and `message-subscribed-regexps'." + :version "21.4" :group 'message-interface :link '(custom-manual "(message)Mailing Lists") :type '(repeat string)) @@ -678,6 +696,7 @@ If nil, do not use any predefined list subscriptions. This list of regular expressions can be used in conjunction with `message-subscribed-address-functions' and `message-subscribed-addresses'." + :version "21.4" :group 'message-interface :link '(custom-manual "(message)Mailing Lists") :type '(repeat regexp)) @@ -687,6 +706,7 @@ If it is the symbol `always', the posting is allowed. If it is the symbol `never', the posting is not allowed. If it is the symbol `ask', you are prompted." + :version "21.4" :group 'message-interface :link '(custom-manual "(message)Message Headers") :type '(choice (const always) @@ -843,6 +863,7 @@ "*Prefix inserted on cited or empty lines of yanked messages. Fix `message-cite-prefix-regexp' if it is set to an abnormal value. See also `message-yank-prefix'." + :version "21.4" :type 'string :link '(custom-manual "(message)Insertion Variables") :group 'message-insertion) @@ -899,6 +920,7 @@ ;;;###autoload (defcustom message-signature-insert-empty-line t "*If non-nil, insert an empty line before the signature separator." + :version "21.4" :type 'boolean :link '(custom-manual "(message)Insertion Variables") :group 'message-insertion) @@ -1079,6 +1101,7 @@ "Regexp of headers to be hidden when composing new messages. This can also be a list of regexps to match headers. Or a list starting with `not' and followed by regexps." + :version "21.4" :group 'message :link '(custom-manual "(message)Message Headers") :type '(repeat regexp)) @@ -1354,6 +1377,7 @@ for a message, the subaddresses will be removed (if present) before the mail is sent. All addresses in this structure should be downcased." + :version "21.4" :group 'message-headers :type '(repeat (repeat string))) @@ -1361,6 +1385,7 @@ "Like `mail-user-agent'. Except if it is nil, use Gnus native MUA; if it is t, use `mail-user-agent'." + :version "21.4" :type '(radio (const :tag "Gnus native" :format "%t\n" nil) @@ -1384,7 +1409,7 @@ recipients?\" before a wide reply to multiple recipients. If the user answers yes, reply to all recipients as usual. If the user answers no, only reply back to the author." - :version "21.3" + :version "21.4" :group 'message-headers :link '(custom-manual "(message)Wide Reply") :type 'boolean) @@ -1402,6 +1427,7 @@ (executable-find idna-program) 'ask) "Whether to encode non-ASCII in domain names into ASCII according to IDNA." + :version "21.4" :group 'message-headers :link '(custom-manual "(message)IDNA") :type '(choice (const :tag "Ask" ask) @@ -1527,6 +1553,7 @@ "\\)") "Regular expression that matches a valid FQDN." ;; see also: gnus-button-valid-fqdn-regexp + :version "21.4" :group 'message-headers :type 'regexp) @@ -2336,6 +2363,7 @@ packages requires these properties to be present in order to work. If you use one of these packages, turn this option off, and hope the message composition doesn't break too bad." + :version "21.4" :group 'message-various :link '(custom-manual "(message)Various Message Variables") :type 'boolean) @@ -2680,6 +2708,7 @@ E.g., if this list contains a member list with elements `Cc' and `To', then `message-carefully-insert-headers' will not insert a `To' header when the message is already `Cc'ed to the recipient." + :version "21.4" :group 'message-headers :link '(custom-manual "(message)Message Headers") :type '(repeat sexp)) @@ -5226,6 +5255,7 @@ (defcustom message-beginning-of-line t "Whether \\\\[message-beginning-of-line]\ goes to beginning of header values." + :version "21.4" :group 'message-buffers :link '(custom-manual "(message)Movement") :type 'boolean) @@ -6544,6 +6574,7 @@ (defcustom message-tab-body-function nil "*Function to execute when `message-tab' (TAB) is executed in the body. If nil, the function bound in `text-mode-map' or `global-map' is executed." + :version "21.4" :group 'message :link '(custom-manual "(message)Various Commands") :type 'function) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/mm-decode.el --- a/lisp/gnus/mm-decode.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/mm-decode.el Thu Sep 23 10:32:54 2004 +0000 @@ -115,6 +115,7 @@ `lynx' : use lynx; `html2text' : use html2text; nil : use external viewer." + :version "21.4" :type '(choice (const w3) (const w3m) (const w3m-standalone) @@ -123,7 +124,6 @@ (const html2text) (const nil) (function)) - :version "21.3" :group 'mime-display) (defvar mm-inline-text-html-renderer nil @@ -134,6 +134,7 @@ "If non-nil, Gnus will allow retrieving images in HTML contents with the tags. It has no effect on Emacs/w3. See also the documentation for the `mm-w3m-safe-url-regexp' variable." + :version "21.4" :type 'boolean :group 'mime-display) @@ -280,6 +281,7 @@ "application/pdf" "application/x-dvi") "List of media types for which the external viewer will not be killed when selecting a different article." + :version "21.4" :type '(repeat string) :group 'mime-display) @@ -381,6 +383,7 @@ (defcustom mm-external-terminal-program "xterm" "The program to start an external terminal." + :version "21.4" :type 'string :group 'mime-display) @@ -413,6 +416,7 @@ "Option of verifying signed parts. `never', not verify; `always', always verify; `known', only verify known protocols. Otherwise, ask user." + :version "21.4" :type '(choice (item always) (item never) (item :tag "only known protocols" known) @@ -619,11 +623,14 @@ "Copy the contents of the current buffer to a fresh buffer." (save-excursion (let ((obuf (current-buffer)) + (multibyte enable-multibyte-characters) beg) (goto-char (point-min)) (search-forward-regexp "^\n" nil t) (setq beg (point)) (set-buffer (generate-new-buffer " *mm*")) + ;; Preserve the data's unibyteness (for url-insert-file-contents). + (set-buffer-multibyte multibyte) (insert-buffer-substring obuf beg) (current-buffer)))) @@ -1482,5 +1489,5 @@ (provide 'mm-decode) -;;; arch-tag: 4f35d360-56b8-4030-9388-3ed82d359b9b +;; arch-tag: 4f35d360-56b8-4030-9388-3ed82d359b9b ;;; mm-decode.el ends here diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/mm-util.el --- a/lisp/gnus/mm-util.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/mm-util.el Thu Sep 23 10:32:54 2004 +0000 @@ -317,6 +317,7 @@ By default, the coding system with the highest priority is used to encode outgoing messages (see `sort-coding-systems'). If this variable is set, it overrides the default priority." + :version "21.2" :type '(repeat (symbol :tag "Coding system")) :group 'mime) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/mml.el --- a/lisp/gnus/mml.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/mml.el Thu Sep 23 10:32:54 2004 +0000 @@ -44,6 +44,7 @@ '(name access-type expiration size permission format) "*A list of acceptable parameters in MML tag. These parameters are generated in Content-Type header if exists." + :version "21.4" :type '(repeat (symbol :tag "Parameter")) :group 'message) @@ -51,12 +52,14 @@ '(filename creation-date modification-date read-date) "*A list of acceptable parameters in MML tag. These parameters are generated in Content-Disposition header if exists." + :version "21.4" :type '(repeat (symbol :tag "Parameter")) :group 'message) (defcustom mml-insert-mime-headers-always nil "If non-nil, always put Content-Type: text/plain at top of empty parts. It is necessary to work against a bug in certain clients." + :version "21.4" :type 'boolean :group 'message) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/nnimap.el --- a/lisp/gnus/nnimap.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/nnimap.el Thu Sep 23 10:32:54 2004 +0000 @@ -211,6 +211,7 @@ used (which currently is nil, unless you use a statistical spam.el test); if this variable is another non-nil value bodies will be downloaded." + :version "21.4" :group 'nnimap :type '(choice (const :tag "Let system decide" deault) boolean)) @@ -219,9 +220,10 @@ (defcustom nnimap-close-asynchronous t "Close mailboxes asynchronously in `nnimap-close-group'. -This means that errors cought by nnimap when closing the mailbox will +This means that errors caught by nnimap when closing the mailbox will not prevent Gnus from updating the group status, which may be harmful. However, it increases speed." + :version "21.4" :type 'boolean :group 'nnimap) @@ -230,6 +232,7 @@ This increases the speed of closing mailboxes (quiting group) but may decrease the speed of selecting another mailbox later. Re-selecting the same mailbox will be faster though." + :version "21.4" :type 'boolean :group 'nnimap) @@ -242,6 +245,7 @@ In summary, the default is O((1-p)*k+p*n) and changing it to nil makes it O(n). If p is small, then the default is probably faster." + :version "21.4" :type 'boolean :group 'nnimap) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/nnmail.el --- a/lisp/gnus/nnmail.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/nnmail.el Thu Sep 23 10:32:54 2004 +0000 @@ -224,6 +224,7 @@ articles containing the sting \"IMPORTANT\" in the Subject header will be expired to the group \"nnfolder:IMPORTANT.YYYY.MMM\"; and everything else will be expired to \"nnfolder:Archive-YYYY\"." + :version "21.4" :group 'nnmail-expire :type '(repeat (list (choice :tag "Match against" (string :tag "Header") @@ -558,11 +559,13 @@ (defcustom nnmail-mail-splitting-charset nil "Default charset to be used when splitting incoming mail." + :version "21.4" :group 'nnmail :type 'symbol) (defcustom nnmail-mail-splitting-decodes nil "Whether the nnmail splitting functionality should MIME decode headers." + :version "21.4" :group 'nnmail :type 'boolean) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/pgg-def.el --- a/lisp/gnus/pgg-def.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/pgg-def.el Thu Sep 23 10:32:54 2004 +0000 @@ -50,6 +50,7 @@ (defcustom pgg-query-keyserver nil "Whether PGG queries keyservers for missing keys when verifying messages." + :version "21.4" :group 'pgg :type 'boolean) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/sha1.el --- a/lisp/gnus/sha1.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/sha1.el Thu Sep 23 10:32:54 2004 +0000 @@ -82,6 +82,7 @@ (error)) "*Use external SHA1 program. If this variable is set to nil, use internal function only." + :version "21.4" :type 'boolean :group 'sha1) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/smiley.el --- a/lisp/gnus/smiley.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/smiley.el Thu Sep 23 10:32:54 2004 +0000 @@ -78,6 +78,7 @@ (push "xpm" types)) types) "*List of suffixes on picon file names to try." + :version "21.4" :type '(repeat string) :group 'smiley) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/smime.el --- a/lisp/gnus/smime.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/smime.el Thu Sep 23 10:32:54 2004 +0000 @@ -150,6 +150,7 @@ (defcustom smime-CA-file nil "*Files containing certificates for CAs you trust. File should contain certificates in PEM format." + :version "21.4" :type '(choice (const :tag "none" nil) file) :group 'smime) @@ -177,6 +178,7 @@ (defcustom smime-encrypt-cipher "-des3" "*Cipher algorithm used for encryption." + :version "21.4" :type '(choice (const :tag "Triple DES" "-des3") (const :tag "DES" "-des") (const :tag "RC2 40 bits" "-rc2-40") @@ -208,6 +210,7 @@ (defcustom smime-dns-server nil "*DNS server to query certificates from. If nil, use system defaults." + :version "21.4" :type '(choice (const :tag "System defaults") string) :group 'smime) diff -r e318dfc2edc6 -r c06211125947 lisp/gnus/uudecode.el --- a/lisp/gnus/uudecode.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/gnus/uudecode.el Thu Sep 23 10:32:54 2004 +0000 @@ -51,6 +51,7 @@ (defcustom uudecode-use-external (executable-find uudecode-decoder-program) "*Use external uudecode program." + :version "21.4" :group 'gnus-extract :type 'boolean) diff -r e318dfc2edc6 -r c06211125947 lisp/ido.el --- a/lisp/ido.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/ido.el Thu Sep 23 10:32:54 2004 +0000 @@ -933,7 +933,7 @@ ;;; Variables with dynamic bindings. ;;; Declared here to keep the byte compiler quiet. -;; Stores the current ido item type ('file, 'dir or 'buffer). +;; Stores the current ido item type ('file, 'dir, 'buffer, or 'list). (defvar ido-cur-item) ;; Stores the current list of items that will be searched through. @@ -942,6 +942,9 @@ ;; at the end of the list. Created by `ido-make-item-list'. (defvar ido-cur-list) +;; Stores the choice list for ido-completing-read +(defvar ido-choice-list) + ;; Stores the list of items which are ignored when building ;; `ido-cur-list'. It is in no specific order. (defvar ido-ignored-list) @@ -992,6 +995,8 @@ ;; Stores temporary state of literal find file. (defvar ido-find-literal) +;; Set to 'ignore to inhibit switching between find-file/switch-buffer. +(defvar ido-context-switch-command) ;;; FUNCTIONS @@ -1346,8 +1351,8 @@ (define-key map "?" 'ido-completion-help) (when (memq ido-cur-item '(file dir)) - (define-key map "\C-b" 'ido-enter-switch-buffer) - (define-key map "\C-d" 'ido-enter-dired) + (define-key map "\C-b" (or ido-context-switch-command 'ido-enter-switch-buffer)) + (define-key map "\C-d" (or (and ido-context-switch-command 'ignore) 'ido-enter-dired)) (define-key map "\C-f" 'ido-fallback-command) (define-key map [down] 'ido-next-match-dir) (define-key map [up] 'ido-prev-match-dir) @@ -1378,8 +1383,8 @@ ) (when (eq ido-cur-item 'buffer) + (define-key map "\C-f" (or ido-context-switch-command 'ido-enter-find-file)) (define-key map "\C-b" 'ido-fallback-command) - (define-key map "\C-f" 'ido-enter-find-file) (define-key map "\C-k" 'ido-kill-buffer-at-head) ) @@ -1625,6 +1630,9 @@ ((eq ido-cur-item 'buffer) (setq ido-ignored-list nil ido-cur-list (ido-make-buffer-list ido-default-item))) + ((eq ido-cur-item 'list) + (setq ido-ignored-list nil + ido-cur-list (ido-make-choice-list ido-default-item))) (t nil)) (setq ido-rotate-temp nil) @@ -1709,7 +1717,7 @@ ((eq ido-exit 'keep) (setq ido-keep-item-list t)) - ((memq ido-exit '(dired fallback findfile findbuffer)) + ((memq ido-exit '(dired fallback find-file switch-to-buffer insert-buffer insert-file)) (setq done t)) ((eq ido-exit 'updir) @@ -1789,19 +1797,23 @@ (exit-minibuffer)) ;;; MAIN FUNCTIONS -(defun ido-buffer-internal (method &optional fallback prompt default initial) +(defun ido-buffer-internal (method &optional fallback prompt default initial switch-cmd) ;; Internal function for ido-switch-buffer and friends (if (not ido-mode) (call-interactively (or fallback 'switch-to-buffer)) - (let ((buf (ido-read-buffer (or prompt "Buffer: ") default nil initial))) + (let* ((ido-context-switch-command switch-cmd) + (buf (ido-read-buffer (or prompt "Buffer: ") default nil initial))) ;; Choose the buffer name: either the text typed in, or the head ;; of the list of matches (cond - ((eq ido-exit 'findfile) + ((eq ido-exit 'find-file) (ido-file-internal ido-default-file-method nil nil nil nil ido-text)) + ((eq ido-exit 'insert-file) + (ido-file-internal 'insert 'insert-file nil "Insert file: " nil ido-text 'ido-enter-insert-buffer)) + ((eq ido-exit 'fallback) (let ((read-buffer-function nil)) (call-interactively (or fallback 'switch-to-buffer)))) @@ -1842,7 +1854,8 @@ If REQUIRE-MATCH is non-nil, an existing-buffer must be selected. If INITIAL is non-nil, it specifies the initial input string." (let ((ido-current-directory nil) - (ido-directory-nonreadable nil)) + (ido-directory-nonreadable nil) + (ido-context-switch-command (if (boundp 'ido-context-switch-command) ido-context-switch-command 'ignore))) (ido-read-internal 'buffer prompt 'ido-buffer-history default require-match initial))) (defun ido-record-work-directory (&optional dir) @@ -1886,12 +1899,13 @@ ;; Add final slash to result in case it was missing from DEFAULT-DIRECTORY. (ido-final-slash (expand-file-name (or dir default-directory)) t)) -(defun ido-file-internal (method &optional fallback default prompt item initial) +(defun ido-file-internal (method &optional fallback default prompt item initial switch-cmd) ;; Internal function for ido-find-file and friends (unless item (setq item 'file)) (let* ((ido-current-directory (ido-expand-directory default)) (ido-directory-nonreadable (ido-nonreadable-directory-p ido-current-directory)) + (ido-context-switch-command switch-cmd) filename) (cond @@ -1943,9 +1957,12 @@ (read-file-name-function nil)) (call-interactively (or fallback 'find-file)))) - ((eq ido-exit 'findbuffer) + ((eq ido-exit 'switch-to-buffer) (ido-buffer-internal ido-default-buffer-method nil nil nil ido-text)) + ((eq ido-exit 'insert-buffer) + (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: " nil ido-text 'ido-enter-insert-file)) + ((eq ido-exit 'dired) (dired (concat ido-current-directory (or ido-text "")))) @@ -2227,13 +2244,13 @@ (defun ido-enter-find-file () "Drop into find-file from buffer switching." (interactive) - (setq ido-exit 'findfile) + (setq ido-exit 'find-file) (exit-minibuffer)) (defun ido-enter-switch-buffer () "Drop into ido-switch-buffer from file switching." (interactive) - (setq ido-exit 'findbuffer) + (setq ido-exit 'switch-to-buffer) (exit-minibuffer)) (defun ido-enter-dired () @@ -2242,6 +2259,18 @@ (setq ido-exit 'dired) (exit-minibuffer)) +(defun ido-enter-insert-buffer () + "Drop into insert buffer from insert file." + (interactive) + (setq ido-exit 'insert-buffer) + (exit-minibuffer)) + +(defun ido-enter-insert-file () + "Drop into insert file from insert buffer." + (interactive) + (setq ido-exit 'insert-file) + (exit-minibuffer)) + (defun ido-up-directory (&optional clear) "Go up one directory level." @@ -2560,6 +2589,8 @@ (ido-make-dir-list1 ido-current-directory)) ((eq ido-cur-item 'buffer) (ido-make-buffer-list1)) + ((eq ido-cur-item 'list) + ido-choice-list) (t nil)))) @@ -2722,6 +2753,20 @@ (run-hooks 'ido-make-buffer-list-hook) ido-temp-list)) +(defun ido-make-choice-list (default) + ;; Return the current list of choices. + ;; If DEFAULT is non-nil, and corresponds to an element of choices, + ;; it is put to the start of the list. + (let ((ido-temp-list ido-choice-list)) + (if default + (progn + (setq ido-temp-list + (delete default ido-temp-list)) + (setq ido-temp-list + (cons default ido-temp-list)))) + ; (run-hooks 'ido-make-choice-list-hook) + ido-temp-list)) + (defun ido-to-end (items) ;; Move the elements from ITEMS to the end of `ido-temp-list' (mapcar @@ -3277,7 +3322,7 @@ The buffer name is selected interactively by typing a substring. For details of keybindings, do `\\[describe-function] ido'." (interactive) - (ido-buffer-internal 'display 'display-buffer)) + (ido-buffer-internal 'display 'display-buffer nil nil nil 'ignore)) ;;;###autoload (defun ido-kill-buffer () @@ -3285,7 +3330,7 @@ The buffer name is selected interactively by typing a substring. For details of keybindings, do `\\[describe-function] ido'." (interactive) - (ido-buffer-internal 'kill 'kill-buffer "Kill buffer: " (buffer-name (current-buffer)))) + (ido-buffer-internal 'kill 'kill-buffer "Kill buffer: " (buffer-name (current-buffer)) nil 'ignore)) ;;;###autoload (defun ido-insert-buffer () @@ -3293,7 +3338,7 @@ The buffer name is selected interactively by typing a substring. For details of keybindings, do `\\[describe-function] ido'." (interactive) - (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: ")) + (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: " nil nil 'ido-enter-insert-file)) ;;;###autoload (defun ido-switch-buffer-other-frame () @@ -3311,7 +3356,7 @@ (interactive "DDir: ") (if (not (equal (substring dir -1) "/")) (setq dir (concat dir "/"))) - (ido-file-internal ido-default-file-method nil dir)) + (ido-file-internal ido-default-file-method nil dir nil nil nil 'ignore)) ;;;###autoload (defun ido-find-file () @@ -3404,7 +3449,7 @@ The file name is selected interactively by typing a substring. For details of keybindings, do `\\[describe-function] ido-find-file'." (interactive) - (ido-file-internal 'display)) + (ido-file-internal 'display nil nil nil nil nil 'ignore)) ;;;###autoload (defun ido-find-file-other-frame () @@ -3426,7 +3471,7 @@ (ido-report-no-match nil) (ido-confirm-unique-completion t) (ido-auto-merge-work-directories-length -1)) - (ido-file-internal 'write 'write-file nil "Write file: "))) + (ido-file-internal 'write 'write-file nil "Write file: " nil nil 'ignore))) ;;;###autoload (defun ido-insert-file () @@ -3434,7 +3479,7 @@ The file name is selected interactively by typing a substring. For details of keybindings, do `\\[describe-function] ido-find-file'." (interactive) - (ido-file-internal 'insert 'insert-file nil "Insert file: ")) + (ido-file-internal 'insert 'insert-file nil "Insert file: " nil nil 'ido-enter-insert-buffer)) ;;;###autoload (defun ido-dired () @@ -3515,7 +3560,7 @@ ;; Handle explicit directory changes (cond - ((eq ido-cur-item 'buffer) + ((memq ido-cur-item '(buffer list)) ) ((= (length contents) 0) @@ -3830,35 +3875,46 @@ (defun ido-read-file-name (prompt &optional dir default-filename mustmatch initial predicate) "Read file name, prompting with PROMPT and completing in directory DIR. See `read-file-name' for additional parameters." - (cond - ((or (eq predicate 'file-directory-p) - (eq (get this-command 'ido) 'dir) - (memq this-command ido-read-file-name-as-directory-commands)) - (ido-read-directory-name prompt dir default-filename mustmatch initial)) - ((and (not (eq (get this-command 'ido) 'ignore)) - (not (memq this-command ido-read-file-name-non-ido)) - (or (null predicate) (eq predicate 'file-exists-p))) - (let* (filename - ido-saved-vc-hb - (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends)) - (ido-current-directory (ido-expand-directory dir)) - (ido-directory-nonreadable (not (file-readable-p ido-current-directory))) - (ido-work-directory-index -1) - (ido-work-file-index -1) - (ido-find-literal nil)) - (setq filename - (ido-read-internal 'file prompt 'ido-file-history default-filename mustmatch initial)) - (if filename - (concat ido-current-directory filename)))) - (t - (let ((read-file-name-function nil)) - (read-file-name prompt dir default-filename mustmatch initial predicate))))) + (let (filename) + (cond + ((or (eq predicate 'file-directory-p) + (eq (get this-command 'ido) 'dir) + (memq this-command ido-read-file-name-as-directory-commands)) + (setq filename + (ido-read-directory-name prompt dir default-filename mustmatch initial))) + ((and (not (eq (get this-command 'ido) 'ignore)) + (not (memq this-command ido-read-file-name-non-ido)) + (or (null predicate) (eq predicate 'file-exists-p))) + (let* (ido-saved-vc-hb + (ido-context-switch-command 'ignore) + (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends)) + (ido-current-directory (ido-expand-directory dir)) + (ido-directory-nonreadable (not (file-readable-p ido-current-directory))) + (ido-work-directory-index -1) + (ido-work-file-index -1) + (ido-find-literal nil)) + (setq ido-exit nil) + (setq filename + (ido-read-internal 'file prompt 'ido-file-history default-filename mustmatch initial)) + (cond + ((eq ido-exit 'fallback) + (setq filename 'fallback)) + (filename + (setq filename + (concat ido-current-directory filename)))))) + (t + (setq filename 'fallback))) + (if (eq filename 'fallback) + (let ((read-file-name-function nil)) + (read-file-name prompt dir default-filename mustmatch initial predicate)) + filename))) ;;;###autoload (defun ido-read-directory-name (prompt &optional dir default-dirname mustmatch initial) "Read directory name, prompting with PROMPT and completing in directory DIR. See `read-file-name' for additional parameters." (let* (filename + (ido-context-switch-command 'ignore) ido-saved-vc-hb (ido-current-directory (ido-expand-directory dir)) (ido-directory-nonreadable (not (file-readable-p ido-current-directory))) @@ -3871,5 +3927,27 @@ ido-current-directory (concat ido-current-directory filename))))) +;;;###autoload +(defun ido-completing-read (prompt choices &optional predicate require-match initial-input hist def) + "Read a string in the minibuffer with ido-style completion. +PROMPT is a string to prompt with; normally it ends in a colon and a space. +CHOICES is a list of strings which are the possible completions. +PREDICATE is currently ignored; it is included to be compatible + with `completing-read'. +If REQUIRE-MATCH is non-nil, the user is not allowed to exit unless + the input is (or completes to) an element of CHOICES or is null. + If the input is null, `ido-completing-read' returns DEF, or an empty + string if DEF is nil, regardless of the value of REQUIRE-MATCH. +If INITIAL-INPUT is non-nil, insert it in the minibuffer initially, + with point positioned at the end. +HIST, if non-nil, specifies a history list. +DEF, if non-nil, is the default value." + (let ((ido-current-directory nil) + (ido-directory-nonreadable nil) + (ido-context-switch-command 'ignore) + (ido-choice-list choices)) + (ido-read-internal 'list prompt hist def require-match initial-input))) + + ;;; arch-tag: b63a3500-1735-41bd-8a01-05373f0864da ;;; ido.el ends here diff -r e318dfc2edc6 -r c06211125947 lisp/image.el --- a/lisp/image.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/image.el Thu Sep 23 10:32:54 2004 +0000 @@ -228,6 +228,15 @@ (defun insert-sliced-image (image &optional string area rows cols) + "Insert IMAGE into current buffer at point. +IMAGE is displayed by inserting STRING into the current buffer +with a `display' property whose value is the image. STRING is +defaulted if you omit it. +AREA is where to display the image. AREA nil or omitted means +display it in the text area, a value of `left-margin' means +display it in the left marginal area, a value of `right-margin' +means display it in the right marginal area. +The image is automatically split into ROW x COLS slices." (unless string (setq string " ")) (unless (eq (car-safe image) 'image) (error "Not an image: %s" image)) diff -r e318dfc2edc6 -r c06211125947 lisp/indent.el --- a/lisp/indent.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/indent.el Thu Sep 23 10:32:54 2004 +0000 @@ -164,14 +164,18 @@ (interactive (list (prefix-numeric-value current-prefix-arg) t)) (beginning-of-line n) (skip-chars-forward " \t") - (let ((lm (current-left-margin)) - (cc (current-column))) - (cond ((> cc lm) - (if (> (move-to-column lm force) lm) - ;; If lm is in a tab and we are not forcing, move before tab - (backward-char 1))) - ((and force (< cc lm)) - (indent-to-left-margin))))) + (if (minibufferp (current-buffer)) + (if (save-excursion (beginning-of-line) (bobp)) + (goto-char (minibuffer-prompt-end)) + (beginning-of-line)) + (let ((lm (current-left-margin)) + (cc (current-column))) + (cond ((> cc lm) + (if (> (move-to-column lm force) lm) + ;; If lm is in a tab and we are not forcing, move before tab + (backward-char 1))) + ((and force (< cc lm)) + (indent-to-left-margin)))))) ;; This used to be the default indent-line-function, ;; used in Fundamental Mode, Text Mode, etc. diff -r e318dfc2edc6 -r c06211125947 lisp/mail/supercite.el --- a/lisp/mail/supercite.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/mail/supercite.el Thu Sep 23 10:32:54 2004 +0000 @@ -2,7 +2,7 @@ ;; Copyright (C) 1993, 1997, 2003 Free Software Foundation, Inc. -;; Author: 1993 Barry A. Warsaw, Century Computing, Inc. +;; Author: 1993 Barry A. Warsaw ;; Maintainer: FSF ;; Created: February 1993 ;; Last Modified: 1993/09/22 18:58:46 diff -r e318dfc2edc6 -r c06211125947 lisp/net/net-utils.el --- a/lisp/net/net-utils.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/net/net-utils.el Thu Sep 23 10:32:54 2004 +0000 @@ -567,7 +567,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Full list is available at: -;; ftp://ftp.isi.edu/in-notes/iana/assignments/port-numbers +;; http://www.iana.org/assignments/port-numbers (defvar network-connection-service-alist (list (cons 'echo 7) diff -r e318dfc2edc6 -r c06211125947 lisp/printing.el --- a/lisp/printing.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/printing.el Thu Sep 23 10:32:54 2004 +0000 @@ -5,13 +5,13 @@ ;; Author: Vinicius Jose Latorre ;; Maintainer: Vinicius Jose Latorre -;; Time-stamp: <2004/07/20 21:44:43 vinicius> +;; Time-stamp: <2004/09/21 22:51:58 vinicius> ;; Keywords: wp, print, PostScript ;; Version: 6.8 ;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ (defconst pr-version "6.8" - "printing.el, v 6.8 <2004/07/12 vinicius> + "printing.el, v 6.8 <2004/09/21 vinicius> Please send all bug fixes and enhancements to Vinicius Jose Latorre @@ -259,6 +259,17 @@ ;; PostScript printer. So, please, don't include this printer in ;; `pr-txt-printer-alist' (which see). ;; +;; 5. Use gsprint instead of ghostscript to print monochrome PostScript files +;; in Windows. The gsprint utility is faster than ghostscript to print +;; monochrome PostScript. +;; +;; The efficiency is similar to print non-monochrome PostScript file. +;; +;; Also the gsprint utility comes together with gsview distribution. +;; +;; For more information about gsprint see +;; `http://www.cs.wisc.edu/~ghost/gsview/gsprint.htm'. +;; ;; ;; Using `printing' ;; ---------------- @@ -922,6 +933,7 @@ ;; ;; gswin32, gsview32 ;; `http://www.gnu.org/software/ghostscript/ghostscript.html' +;; gsprint `http://www.cs.wisc.edu/~ghost/gsview/gsprint.htm'. ;; enscript `http://people.ssh.fi/mtr/genscript/' ;; psnup `http://www.dcs.ed.ac.uk/home/ajcd/psutils/index.html' ;; redmon `http://www.cs.wisc.edu/~ghost/redmon/' @@ -930,6 +942,9 @@ ;; Acknowledgments ;; --------------- ;; +;; Thanks to Lennart Borgman for gsprint +;; suggestion (see tip 5 in section Tips). +;; ;; Thanks to Drew Adams for suggestions: ;; - directory processing. ;; - `pr-path-alist' variable. diff -r e318dfc2edc6 -r c06211125947 lisp/progmodes/make-mode.el --- a/lisp/progmodes/make-mode.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/progmodes/make-mode.el Thu Sep 23 10:32:54 2004 +0000 @@ -1028,7 +1028,7 @@ (save-excursion (beginning-of-line) (cond - ((looking-at "^#+ ") + ((looking-at "^#+") ;; Found a comment. Set the fill prefix, and find the paragraph ;; boundaries by searching for lines that look like comment-only ;; lines. diff -r e318dfc2edc6 -r c06211125947 lisp/progmodes/sh-script.el --- a/lisp/progmodes/sh-script.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/progmodes/sh-script.el Thu Sep 23 10:32:54 2004 +0000 @@ -421,6 +421,7 @@ ?^ "_" ?~ "_" ?, "_" + ?= "." ?< "." ?> ".") "Default syntax table for shell mode.") diff -r e318dfc2edc6 -r c06211125947 lisp/progmodes/tcl.el --- a/lisp/progmodes/tcl.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/progmodes/tcl.el Thu Sep 23 10:32:54 2004 +0000 @@ -1,6 +1,6 @@ ;;; tcl.el --- Tcl code editing commands for Emacs -;; Copyright (C) 1994,98,1999,2000,01,02,2003 Free Software Foundation, Inc. +;; Copyright (C) 1994,98,1999,2000,01,02,2003,2004 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Author: Tom Tromey @@ -1104,15 +1104,13 @@ (list (if current-prefix-arg (read-string "Run Tcl: " tcl-application) tcl-application))) - (if (not (comint-check-proc "*inferior-tcl*")) - (progn - (set-buffer (apply (function make-comint) "inferior-tcl" cmd nil - tcl-command-switches)) - (inferior-tcl-mode))) - (make-local-variable 'tcl-application) - (setq tcl-application cmd) + (unless (comint-check-proc "*inferior-tcl*") + (set-buffer (apply (function make-comint) "inferior-tcl" cmd nil + tcl-command-switches)) + (inferior-tcl-mode)) + (set (make-local-variable 'tcl-application) cmd) (setq inferior-tcl-buffer "*inferior-tcl*") - (switch-to-buffer "*inferior-tcl*")) + (pop-to-buffer "*inferior-tcl*")) (defalias 'run-tcl 'inferior-tcl) diff -r e318dfc2edc6 -r c06211125947 lisp/startup.el --- a/lisp/startup.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/startup.el Thu Sep 23 10:32:54 2004 +0000 @@ -816,9 +816,14 @@ ((eq system-type 'ms-dos) (concat "~" init-file-user "/_emacs")) ((eq system-type 'windows-nt) + ;; Prefer .emacs on Windows. (if (directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$") "~/.emacs" - "~/_emacs")) + ;; Also support _emacs for compatibility. + (if (directory-files "~" nil "^_emacs\\(\\.elc?\\)?$") + "~/_emacs" + ;; But default to .emacs if _emacs does not exist. + "~/.emacs"))) ((eq system-type 'vax-vms) "sys$login:.emacs") (t diff -r e318dfc2edc6 -r c06211125947 lisp/subr.el --- a/lisp/subr.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/subr.el Thu Sep 23 10:32:54 2004 +0000 @@ -1950,12 +1950,13 @@ (put 'delay-mode-hooks 'permanent-local t) (defvar after-change-major-mode-hook nil - "Mode independent hook run at the end of major mode functions. -This is run just before the mode dependent hooks.") + "Normal hook run at the very end of major mode functions.") (defun run-mode-hooks (&rest hooks) "Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS. Execution is delayed if `delay-mode-hooks' is non-nil. +If `delay-mode-hooks' is nil, run `after-change-major-mode-hook' +after running the mode hooks. Major mode functions should use this." (if delay-mode-hooks ;; Delaying case. @@ -1964,8 +1965,8 @@ ;; Normal case, just run the hook as before plus any delayed hooks. (setq hooks (nconc (nreverse delayed-mode-hooks) hooks)) (setq delayed-mode-hooks nil) - (run-hooks 'after-change-major-mode-hook) - (apply 'run-hooks hooks))) + (apply 'run-hooks hooks) + (run-hooks 'after-change-major-mode-hook))) (defmacro delay-mode-hooks (&rest body) "Execute BODY, but delay any `run-mode-hooks'. diff -r e318dfc2edc6 -r c06211125947 lisp/term.el --- a/lisp/term.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/term.el Thu Sep 23 10:32:54 2004 +0000 @@ -2635,314 +2635,310 @@ ;;; It emulates (most of the features of) a VT100/ANSI-style terminal. (defun term-emulate-terminal (proc str) - (let* ((previous-buffer (current-buffer)) - (i 0) char funny count save-point save-marker old-point temp win - (selected (selected-window)) - last-win - (str-length (length str))) - (unwind-protect - (progn - (set-buffer (process-buffer proc)) - -;;; Let's handle the messages. -mm - - (setq str (term-handle-ansi-terminal-messages str)) - (setq str-length (length str)) - - (if (marker-buffer term-pending-delete-marker) - (progn - ;; Delete text following term-pending-delete-marker. - (delete-region term-pending-delete-marker (process-mark proc)) - (set-marker term-pending-delete-marker nil))) - - (if (eq (window-buffer) (current-buffer)) - (progn - (setq term-vertical-motion (symbol-function 'vertical-motion)) - (term-check-size proc)) - (setq term-vertical-motion - (symbol-function 'buffer-vertical-motion))) - - (setq save-marker (copy-marker (process-mark proc))) - - (if (/= (point) (process-mark proc)) - (progn (setq save-point (point-marker)) - (goto-char (process-mark proc)))) - - (save-restriction - ;; If the buffer is in line mode, and there is a partial - ;; input line, save the line (by narrowing to leave it - ;; outside the restriction ) until we're done with output. - (if (and (> (point-max) (process-mark proc)) - (term-in-line-mode)) - (narrow-to-region (point-min) (process-mark proc))) - - (if term-log-buffer - (princ str term-log-buffer)) - (cond ((eq term-terminal-state 4) ;; Have saved pending output. - (setq str (concat term-terminal-parameter str)) - (setq term-terminal-parameter nil) - (setq str-length (length str)) - (setq term-terminal-state 0))) - - (while (< i str-length) - (setq char (aref str i)) - (cond ((< term-terminal-state 2) - ;; Look for prefix of regular chars - (setq funny - (string-match "[\r\n\000\007\033\t\b\032\016\017]" - str i)) - (if (not funny) (setq funny str-length)) - (cond ((> funny i) - (cond ((eq term-terminal-state 1) - (term-move-columns 1) - (setq term-terminal-state 0))) - (setq count (- funny i)) - (setq temp (- (+ (term-horizontal-column) count) - term-width)) - (cond ((<= temp 0)) ;; All count chars fit in line. - ((> count temp) ;; Some chars fit. - ;; This iteration, handle only what fits. - (setq count (- count temp)) - (setq funny (+ count i))) - ((or (not (or term-pager-count - term-scroll-with-delete)) - (> (term-handle-scroll 1) 0)) - (term-adjust-current-row-cache 1) - (setq count (min count term-width)) - (setq funny (+ count i)) - (setq term-start-line-column - term-current-column)) - (t ;; Doing PAGER processing. - (setq count 0 funny i) - (setq term-current-column nil) - (setq term-start-line-column nil))) - (setq old-point (point)) - - ;; Insert a string, check how many columns - ;; we moved, then delete that many columns - ;; following point if not eob nor insert-mode. - (let ((old-column (current-column)) - columns pos) - (insert (substring str i funny)) - (setq term-current-column (current-column) - columns (- term-current-column old-column)) - (when (not (or (eobp) term-insert-mode)) - (setq pos (point)) - (term-move-columns columns) - (delete-region pos (point)))) - (setq term-current-column nil) - - (put-text-property old-point (point) - 'face term-current-face) - ;; If the last char was written in last column, - ;; back up one column, but remember we did so. - ;; Thus we emulate xterm/vt100-style line-wrapping. - (cond ((eq temp 0) - (term-move-columns -1) - (setq term-terminal-state 1))) - (setq i (1- funny))) - ((and (setq term-terminal-state 0) - (eq char ?\^I)) ; TAB - ;; FIXME: Does not handle line wrap! - (setq count (term-current-column)) - (setq count (+ count 8 (- (mod count 8)))) - (if (< (move-to-column count nil) count) - (term-insert-char char 1)) - (setq term-current-column count)) - ((eq char ?\r) - ;; Optimize CRLF at end of buffer: - (cond ((and (< (setq temp (1+ i)) str-length) - (eq (aref str temp) ?\n) - (= (point) (point-max)) - (not (or term-pager-count - term-kill-echo-list - term-scroll-with-delete))) - (insert ?\n) - (term-adjust-current-row-cache 1) - (setq term-start-line-column 0) - (setq term-current-column 0) - (setq i temp)) - (t ;; Not followed by LF or can't optimize: - (term-vertical-motion 0) - (setq term-current-column term-start-line-column)))) - ((eq char ?\n) - (if (not (and term-kill-echo-list - (term-check-kill-echo-list))) - (term-down 1 t))) - ((eq char ?\b) - (term-move-columns -1)) - ((eq char ?\033) ; Escape - (setq term-terminal-state 2)) - ((eq char 0)) ; NUL: Do nothing - ((eq char ?\016)) ; Shift Out - ignored - ((eq char ?\017)) ; Shift In - ignored - ((eq char ?\^G) - (beep t)) ; Bell - ((eq char ?\032) - (let ((end (string-match "\r?$" str i))) - (if end - (funcall term-command-hook - (prog1 (substring str (1+ i) end) - (setq i (match-end 0)))) - (setq term-terminal-parameter - (substring str i)) - (setq term-terminal-state 4) - (setq i str-length)))) - (t ; insert char FIXME: Should never happen - (term-move-columns 1) - (backward-delete-char 1) - (insert char)))) - ((eq term-terminal-state 2) ; Seen Esc - (cond ((eq char ?\133) ;; ?\133 = ?[ + (with-current-buffer (process-buffer proc) + (let* ((i 0) char funny count save-point save-marker old-point temp win + (buffer-undo-list t) + (selected (selected-window)) + last-win + (str-length (length str))) + (save-selected-window + + ;; Let's handle the messages. -mm + + (setq str (term-handle-ansi-terminal-messages str)) + (setq str-length (length str)) + + (if (marker-buffer term-pending-delete-marker) + (progn + ;; Delete text following term-pending-delete-marker. + (delete-region term-pending-delete-marker (process-mark proc)) + (set-marker term-pending-delete-marker nil))) + + (if (eq (window-buffer) (current-buffer)) + (progn + (setq term-vertical-motion (symbol-function 'vertical-motion)) + (term-check-size proc)) + (setq term-vertical-motion + (symbol-function 'buffer-vertical-motion))) + + (setq save-marker (copy-marker (process-mark proc))) + + (if (/= (point) (process-mark proc)) + (progn (setq save-point (point-marker)) + (goto-char (process-mark proc)))) + + (save-restriction + ;; If the buffer is in line mode, and there is a partial + ;; input line, save the line (by narrowing to leave it + ;; outside the restriction ) until we're done with output. + (if (and (> (point-max) (process-mark proc)) + (term-in-line-mode)) + (narrow-to-region (point-min) (process-mark proc))) + + (if term-log-buffer + (princ str term-log-buffer)) + (cond ((eq term-terminal-state 4) ;; Have saved pending output. + (setq str (concat term-terminal-parameter str)) + (setq term-terminal-parameter nil) + (setq str-length (length str)) + (setq term-terminal-state 0))) + + (while (< i str-length) + (setq char (aref str i)) + (cond ((< term-terminal-state 2) + ;; Look for prefix of regular chars + (setq funny + (string-match "[\r\n\000\007\033\t\b\032\016\017]" + str i)) + (if (not funny) (setq funny str-length)) + (cond ((> funny i) + (cond ((eq term-terminal-state 1) + (term-move-columns 1) + (setq term-terminal-state 0))) + (setq count (- funny i)) + (setq temp (- (+ (term-horizontal-column) count) + term-width)) + (cond ((<= temp 0)) ;; All count chars fit in line. + ((> count temp) ;; Some chars fit. + ;; This iteration, handle only what fits. + (setq count (- count temp)) + (setq funny (+ count i))) + ((or (not (or term-pager-count + term-scroll-with-delete)) + (> (term-handle-scroll 1) 0)) + (term-adjust-current-row-cache 1) + (setq count (min count term-width)) + (setq funny (+ count i)) + (setq term-start-line-column + term-current-column)) + (t ;; Doing PAGER processing. + (setq count 0 funny i) + (setq term-current-column nil) + (setq term-start-line-column nil))) + (setq old-point (point)) + + ;; Insert a string, check how many columns + ;; we moved, then delete that many columns + ;; following point if not eob nor insert-mode. + (let ((old-column (current-column)) + columns pos) + (insert (substring str i funny)) + (setq term-current-column (current-column) + columns (- term-current-column old-column)) + (when (not (or (eobp) term-insert-mode)) + (setq pos (point)) + (term-move-columns columns) + (delete-region pos (point)))) + (setq term-current-column nil) + + (put-text-property old-point (point) + 'face term-current-face) + ;; If the last char was written in last column, + ;; back up one column, but remember we did so. + ;; Thus we emulate xterm/vt100-style line-wrapping. + (cond ((eq temp 0) + (term-move-columns -1) + (setq term-terminal-state 1))) + (setq i (1- funny))) + ((and (setq term-terminal-state 0) + (eq char ?\^I)) ; TAB + ;; FIXME: Does not handle line wrap! + (setq count (term-current-column)) + (setq count (+ count 8 (- (mod count 8)))) + (if (< (move-to-column count nil) count) + (term-insert-char char 1)) + (setq term-current-column count)) + ((eq char ?\r) + ;; Optimize CRLF at end of buffer: + (cond ((and (< (setq temp (1+ i)) str-length) + (eq (aref str temp) ?\n) + (= (point) (point-max)) + (not (or term-pager-count + term-kill-echo-list + term-scroll-with-delete))) + (insert ?\n) + (term-adjust-current-row-cache 1) + (setq term-start-line-column 0) + (setq term-current-column 0) + (setq i temp)) + (t ;; Not followed by LF or can't optimize: + (term-vertical-motion 0) + (setq term-current-column term-start-line-column)))) + ((eq char ?\n) + (if (not (and term-kill-echo-list + (term-check-kill-echo-list))) + (term-down 1 t))) + ((eq char ?\b) + (term-move-columns -1)) + ((eq char ?\033) ; Escape + (setq term-terminal-state 2)) + ((eq char 0)) ; NUL: Do nothing + ((eq char ?\016)) ; Shift Out - ignored + ((eq char ?\017)) ; Shift In - ignored + ((eq char ?\^G) + (beep t)) ; Bell + ((eq char ?\032) + (let ((end (string-match "\r?$" str i))) + (if end + (funcall term-command-hook + (prog1 (substring str (1+ i) end) + (setq i (match-end 0)))) + (setq term-terminal-parameter + (substring str i)) + (setq term-terminal-state 4) + (setq i str-length)))) + (t ; insert char FIXME: Should never happen + (term-move-columns 1) + (backward-delete-char 1) + (insert char)))) + ((eq term-terminal-state 2) ; Seen Esc + (cond ((eq char ?\133) ;; ?\133 = ?[ ;;; Some modifications to cope with multiple settings like ^[[01;32;43m -mm ;;; Note that now the init value of term-terminal-previous-parameter has ;;; been changed to -1 - (make-local-variable 'term-terminal-parameter) - (make-local-variable 'term-terminal-previous-parameter) - (make-local-variable 'term-terminal-previous-parameter-2) - (make-local-variable 'term-terminal-previous-parameter-3) - (make-local-variable 'term-terminal-previous-parameter-4) - (make-local-variable 'term-terminal-more-parameters) - (setq term-terminal-parameter 0) - (setq term-terminal-previous-parameter -1) - (setq term-terminal-previous-parameter-2 -1) - (setq term-terminal-previous-parameter-3 -1) - (setq term-terminal-previous-parameter-4 -1) - (setq term-terminal-more-parameters 0) - (setq term-terminal-state 3)) - ((eq char ?D) ;; scroll forward - (term-handle-deferred-scroll) - (term-down 1 t) - (setq term-terminal-state 0)) - ((eq char ?M) ;; scroll reversed - (term-insert-lines 1) - (setq term-terminal-state 0)) - ((eq char ?7) ;; Save cursor - (term-handle-deferred-scroll) - (setq term-saved-cursor - (cons (term-current-row) - (term-horizontal-column))) - (setq term-terminal-state 0)) - ((eq char ?8) ;; Restore cursor - (if term-saved-cursor - (term-goto (car term-saved-cursor) - (cdr term-saved-cursor))) - (setq term-terminal-state 0)) - ((setq term-terminal-state 0)))) - ((eq term-terminal-state 3) ; Seen Esc [ - (cond ((and (>= char ?0) (<= char ?9)) - (setq term-terminal-parameter - (+ (* 10 term-terminal-parameter) (- char ?0)))) - ((eq char ?\;) + (make-local-variable 'term-terminal-parameter) + (make-local-variable 'term-terminal-previous-parameter) + (make-local-variable 'term-terminal-previous-parameter-2) + (make-local-variable 'term-terminal-previous-parameter-3) + (make-local-variable 'term-terminal-previous-parameter-4) + (make-local-variable 'term-terminal-more-parameters) + (setq term-terminal-parameter 0) + (setq term-terminal-previous-parameter -1) + (setq term-terminal-previous-parameter-2 -1) + (setq term-terminal-previous-parameter-3 -1) + (setq term-terminal-previous-parameter-4 -1) + (setq term-terminal-more-parameters 0) + (setq term-terminal-state 3)) + ((eq char ?D) ;; scroll forward + (term-handle-deferred-scroll) + (term-down 1 t) + (setq term-terminal-state 0)) + ((eq char ?M) ;; scroll reversed + (term-insert-lines 1) + (setq term-terminal-state 0)) + ((eq char ?7) ;; Save cursor + (term-handle-deferred-scroll) + (setq term-saved-cursor + (cons (term-current-row) + (term-horizontal-column))) + (setq term-terminal-state 0)) + ((eq char ?8) ;; Restore cursor + (if term-saved-cursor + (term-goto (car term-saved-cursor) + (cdr term-saved-cursor))) + (setq term-terminal-state 0)) + ((setq term-terminal-state 0)))) + ((eq term-terminal-state 3) ; Seen Esc [ + (cond ((and (>= char ?0) (<= char ?9)) + (setq term-terminal-parameter + (+ (* 10 term-terminal-parameter) (- char ?0)))) + ((eq char ?\;) ;;; Some modifications to cope with multiple settings like ^[[01;32;43m -mm - (setq term-terminal-more-parameters 1) - (setq term-terminal-previous-parameter-4 - term-terminal-previous-parameter-3) - (setq term-terminal-previous-parameter-3 - term-terminal-previous-parameter-2) - (setq term-terminal-previous-parameter-2 - term-terminal-previous-parameter) - (setq term-terminal-previous-parameter - term-terminal-parameter) - (setq term-terminal-parameter 0)) - ((eq char ??)) ; Ignore ? - (t - (term-handle-ansi-escape proc char) - (setq term-terminal-more-parameters 0) - (setq term-terminal-previous-parameter-4 -1) - (setq term-terminal-previous-parameter-3 -1) - (setq term-terminal-previous-parameter-2 -1) - (setq term-terminal-previous-parameter -1) - (setq term-terminal-state 0))))) - (if (term-handling-pager) - ;; Finish stuff to get ready to handle PAGER. - (progn - (if (> (% (current-column) term-width) 0) + (setq term-terminal-more-parameters 1) + (setq term-terminal-previous-parameter-4 + term-terminal-previous-parameter-3) + (setq term-terminal-previous-parameter-3 + term-terminal-previous-parameter-2) + (setq term-terminal-previous-parameter-2 + term-terminal-previous-parameter) + (setq term-terminal-previous-parameter + term-terminal-parameter) + (setq term-terminal-parameter 0)) + ((eq char ??)) ; Ignore ? + (t + (term-handle-ansi-escape proc char) + (setq term-terminal-more-parameters 0) + (setq term-terminal-previous-parameter-4 -1) + (setq term-terminal-previous-parameter-3 -1) + (setq term-terminal-previous-parameter-2 -1) + (setq term-terminal-previous-parameter -1) + (setq term-terminal-state 0))))) + (if (term-handling-pager) + ;; Finish stuff to get ready to handle PAGER. + (progn + (if (> (% (current-column) term-width) 0) + (setq term-terminal-parameter + (substring str i)) + ;; We're at column 0. Goto end of buffer; to compensate, + ;; prepend a ?\r for later. This looks more consistent. + (if (zerop i) (setq term-terminal-parameter - (substring str i)) - ;; We're at column 0. Goto end of buffer; to compensate, - ;; prepend a ?\r for later. This looks more consistent. - (if (zerop i) - (setq term-terminal-parameter - (concat "\r" (substring str i))) - (setq term-terminal-parameter (substring str (1- i))) - (aset term-terminal-parameter 0 ?\r)) - (goto-char (point-max))) - (setq term-terminal-state 4) - (make-local-variable 'term-pager-old-filter) - (setq term-pager-old-filter (process-filter proc)) - (set-process-filter proc term-pager-filter) - (setq i str-length))) - (setq i (1+ i)))) - - (if (>= (term-current-row) term-height) - (term-handle-deferred-scroll)) - - (set-marker (process-mark proc) (point)) - (if save-point - (progn (goto-char save-point) - (set-marker save-point nil))) - - ;; Check for a pending filename-and-line number to display. - ;; We do this before scrolling, because we might create a new window. - (if (and term-pending-frame - (eq (window-buffer selected) (current-buffer))) - (progn (term-display-line (car term-pending-frame) - (cdr term-pending-frame)) - (setq term-pending-frame nil) - ;; We have created a new window, so check the window size. - (term-check-size proc))) - - ;; Scroll each window displaying the buffer but (by default) - ;; only if the point matches the process-mark we started with. - (setq win selected) - ;; Avoid infinite loop in strange case where minibuffer window - ;; is selected but not active. - (while (window-minibuffer-p win) - (setq win (next-window win nil t))) - (setq last-win win) - (while (progn - (setq win (next-window win nil t)) - (if (eq (window-buffer win) (process-buffer proc)) - (let ((scroll term-scroll-to-bottom-on-output)) - (select-window win) - (if (or (= (point) save-marker) - (eq scroll t) (eq scroll 'all) - ;; Maybe user wants point to jump to the end. - (and (eq selected win) - (or (eq scroll 'this) (not save-point))) - (and (eq scroll 'others) - (not (eq selected win)))) - (progn - (goto-char term-home-marker) - (recenter 0) - (goto-char (process-mark proc)) - (if (not (pos-visible-in-window-p (point) win)) - (recenter -1)))) - ;; Optionally scroll so that the text - ;; ends at the bottom of the window. - (if (and term-scroll-show-maximum-output - (>= (point) (process-mark proc))) - (save-excursion - (goto-char (point-max)) - (recenter -1))))) - (not (eq win last-win)))) + (concat "\r" (substring str i))) + (setq term-terminal-parameter (substring str (1- i))) + (aset term-terminal-parameter 0 ?\r)) + (goto-char (point-max))) + (setq term-terminal-state 4) + (make-local-variable 'term-pager-old-filter) + (setq term-pager-old-filter (process-filter proc)) + (set-process-filter proc term-pager-filter) + (setq i str-length))) + (setq i (1+ i)))) + + (if (>= (term-current-row) term-height) + (term-handle-deferred-scroll)) + + (set-marker (process-mark proc) (point)) + (if save-point + (progn (goto-char save-point) + (set-marker save-point nil))) + + ;; Check for a pending filename-and-line number to display. + ;; We do this before scrolling, because we might create a new window. + (if (and term-pending-frame + (eq (window-buffer selected) (current-buffer))) + (progn (term-display-line (car term-pending-frame) + (cdr term-pending-frame)) + (setq term-pending-frame nil) + ;; We have created a new window, so check the window size. + (term-check-size proc))) + + ;; Scroll each window displaying the buffer but (by default) + ;; only if the point matches the process-mark we started with. + (setq win selected) + ;; Avoid infinite loop in strange case where minibuffer window + ;; is selected but not active. + (while (window-minibuffer-p win) + (setq win (next-window win nil t))) + (setq last-win win) + (while (progn + (setq win (next-window win nil t)) + (if (eq (window-buffer win) (process-buffer proc)) + (let ((scroll term-scroll-to-bottom-on-output)) + (select-window win) + (if (or (= (point) save-marker) + (eq scroll t) (eq scroll 'all) + ;; Maybe user wants point to jump to the end. + (and (eq selected win) + (or (eq scroll 'this) (not save-point))) + (and (eq scroll 'others) + (not (eq selected win)))) + (progn + (goto-char term-home-marker) + (recenter 0) + (goto-char (process-mark proc)) + (if (not (pos-visible-in-window-p (point) win)) + (recenter -1)))) + ;; Optionally scroll so that the text + ;; ends at the bottom of the window. + (if (and term-scroll-show-maximum-output + (>= (point) (process-mark proc))) + (save-excursion + (goto-char (point-max)) + (recenter -1))))) + (not (eq win last-win)))) ;;; Stolen from comint.el and adapted -mm - (if (> term-buffer-maximum-size 0) - (save-excursion - (goto-char (process-mark (get-buffer-process (current-buffer)))) - (forward-line (- term-buffer-maximum-size)) - (beginning-of-line) - (delete-region (point-min) (point)))) + (if (> term-buffer-maximum-size 0) + (save-excursion + (goto-char (process-mark (get-buffer-process (current-buffer)))) + (forward-line (- term-buffer-maximum-size)) + (beginning-of-line) + (delete-region (point-min) (point)))) ;;; - (set-marker save-marker nil)) - ;; unwind-protect cleanup-forms follow: - (set-buffer previous-buffer) - (select-window selected)))) + (set-marker save-marker nil))))) (defun term-handle-deferred-scroll () (let ((count (- (term-current-row) term-height))) diff -r e318dfc2edc6 -r c06211125947 lisp/url/ChangeLog --- a/lisp/url/ChangeLog Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/url/ChangeLog Thu Sep 23 10:32:54 2004 +0000 @@ -1,3 +1,7 @@ +2004-09-20 Stefan Monnier + + * url-handlers.el (url-insert-file-contents): Decode contents. + 2004-04-16 Stefan Monnier * url-util.el (url-debug): Use with-current-buffer. diff -r e318dfc2edc6 -r c06211125947 lisp/url/url-handlers.el --- a/lisp/url/url-handlers.el Mon Sep 20 13:59:19 2004 +0000 +++ b/lisp/url/url-handlers.el Thu Sep 23 10:32:54 2004 +0000 @@ -1,6 +1,6 @@ ;;; url-handlers.el --- file-name-handler stuff for URL loading -;; Copyright (c) 1996,97,98,1999,2004 Free Software Foundation, Inc. +;; Copyright (c) 1996, 1997, 1998, 1999, 2004 Free Software Foundation, Inc. ;; Copyright (c) 1993 - 1996 by William M. Perry ;; Keywords: comm, data, processes, hypermedia @@ -170,8 +170,7 @@ (handle nil)) (if (not buffer) (error "Opening input file: No such file or directory, %s" url)) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer (setq handle (mm-dissect-buffer t))) (mm-save-part-to-file handle newname) (kill-buffer buffer) @@ -194,18 +193,22 @@ (if (not buffer) (error "Opening input file: No such file or directory, %s" url)) (if visit (setq buffer-file-name url)) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer (setq handle (mm-dissect-buffer t)) (set-buffer (mm-handle-buffer handle)) - (if beg - (setq data (buffer-substring beg end)) - (setq data (buffer-string)))) + (setq data (if beg (buffer-substring beg end) + (buffer-string)))) (kill-buffer buffer) (mm-destroy-parts handle) (if replace (delete-region (point-min) (point-max))) (save-excursion - (insert data)) + (let ((start (point))) + (insert data) + ;; FIXME: for text/plain data, we sometimes receive a `charset' + ;; annotation which we could use as a hint of the locale in use + ;; at the remote site. Not sure how/if that should be done. --Stef + (decode-coding-inserted-region + start (point) buffer-file-name visit beg end replace))) (list url (length data)))) (defun url-file-name-completion (url directory) diff -r e318dfc2edc6 -r c06211125947 lispref/ChangeLog --- a/lispref/ChangeLog Mon Sep 20 13:59:19 2004 +0000 +++ b/lispref/ChangeLog Thu Sep 23 10:32:54 2004 +0000 @@ -1,3 +1,30 @@ +2004-09-23 Kim F. Storm + + * text.texi (Special Properties): Add `cursor', `pointer', + `line-height', and `line-spacing' properties. + + * display.texi (Display): Add 'Fringe Bitmaps' and 'Pointer + Shapes' to menu. + (Standard Faces): Doc fix for fringe face. + (Fringes): Add `overflow-newline-into-fringe' and + 'indicate-buffer-boundaries'. + (Fringe Bitmaps, Pointer Shapes): New nodes. + (Display Property): Add 'Pixel Specification' and 'Display Fringe + Bitmaps' to menu. + (Specified Space): Describe pixel width and height. + (Pixel Specification): New node. + (Other Display Specs): Add `slice' property. + (Display Fringe Bitmaps): New node. + (Images): Add 'Image Slices' to menu. + (Image Descriptors): Add `:pointer' and `:map' properties. + (Showing Images): Add slice arg to `insert-image'. Add + 'insert-sliced-image'. + +2004-09-20 Richard M. Stallman + + * commands.texi (Key Sequence Input): + Clarify downcasing in read-key-sequence. + 2004-09-08 Juri Linkov * minibuf.texi (Minibuffer History): Add `history-delete-duplicates'. diff -r e318dfc2edc6 -r c06211125947 lispref/commands.texi --- a/lispref/commands.texi Mon Sep 20 13:59:19 2004 +0000 +++ b/lispref/commands.texi Thu Sep 23 10:32:54 2004 +0000 @@ -2063,10 +2063,10 @@ @cindex upper case key sequence @cindex downcasing in @code{lookup-key} -If an input character is an upper-case letter and has no key binding, -but its lower-case equivalent has one, then @code{read-key-sequence} -converts the character to lower case. Note that @code{lookup-key} does -not perform case conversion in this way. +If an input character is upper-case (or has the shift modifier) and +has no key binding, but its lower-case equivalent has one, then +@code{read-key-sequence} converts the character to lower case. Note +that @code{lookup-key} does not perform case conversion in this way. The function @code{read-key-sequence} also transforms some mouse events. It converts unbound drag events into click events, and discards unbound diff -r e318dfc2edc6 -r c06211125947 lispref/display.texi --- a/lispref/display.texi Mon Sep 20 13:59:19 2004 +0000 +++ b/lispref/display.texi Thu Sep 23 10:32:54 2004 +0000 @@ -25,7 +25,9 @@ * Faces:: A face defines a graphics style for text characters: font, colors, etc. * Fringes:: Controlling window fringes. +* Fringe Bitmaps:: Customizing fringe bitmaps. * Scroll Bars:: Controlling vertical scroll bars. +* Pointer Shapes:: Controlling the mouse pointer shape. * Display Property:: Enabling special display features. * Images:: Displaying images in Emacs buffers. * Buttons:: Adding clickable buttons to Emacs buffers. @@ -1486,7 +1488,7 @@ @item fringe @kindex fringe @r{(face name)} -This face controls the colors of window fringes, the thin areas on +This face controls the default colors of window fringes, the thin areas on either side that are used to display continuation and truncation glyphs. @item minibuffer-prompt @@ -2560,7 +2562,7 @@ @defvar fringes-outside-margins If the value is non-@code{nil}, the frames appear outside -the display margins. +the display margins. @end defvar @defvar left-fringe-width @@ -2596,6 +2598,146 @@ @var{right-width} @var{frames-outside-margins})}. @end defun +@defvar overflow-newline-into-fringe +This variable, if non-@code{nil}, specifies that lines which are +exactly as wide as the window (not counting the final newline +character) shall not be broken into two lines on the display (with +just the newline on the second line). Instead, the newline now +overflows into the right fringe, and the cursor will be displayed in +the fringe when positioned on that newline. +@end defvar + +@defvar indicate-buffer-boundaries +This buffer-local variable controls how the buffer boundaries and +window scrolling is indicated in the fringes. + + The buffer boundaries, i.e. first and last line in the buffer, can be +marked with angle bitmaps in the left or right fringe. This can be +combined with up and down arrow bitmaps shown at the top and bottom of +the left or right fringe if the window can be scrolled in either +direction. + + If the value is @code{left} or @code{right}, both angle and arrow +bitmaps are displayed in the left or right fringe, respectively. +Any other non-@code{nil} value causes the bitmap on the top line to be +displayed in the left fringe, and the bitmap on the bottom line in the +right fringe. + + If value is a cons @code{(angles . arrows)}, the car specifies the +position of the angle bitmaps, and the cdr specifies the position of +the arrow bitmaps. For example, @code{(t . right)} places the top +angle bitmap in left fringe, the bottom angle bitmap in right fringe, +and both arrow bitmaps in right fringe. To show just the angle +bitmaps in the left fringe, but no arrow bitmaps, use @code{(left . nil)}. +@end defvar + +@defvar default-indicate-buffer-boundaries +The value of this variable is the default value for +@code{indicate-buffer-boundaries} in buffers that do not override it. +@end defvar + +@node Fringe Bitmaps +@section Fringe Bitmaps +@cindex Fringe Bitmaps + + The @dfn{fringe bitmaps} are tiny icons Emacs displays in the fringe +on a window system to indicate truncated or continued lines, buffer +boundaries, overlay arrow, etc. The fringe bitmaps are shared by all +frames and windows. + + You can redefine the built-in fringe bitmaps, and you can define new +fringe bitmaps. Emacs can handle a maximum of 255 different fringe +bitmaps. + +A fringe bitmap is identified by an opaque integer, but Lisp code +should use the following names defined by @code{(require 'fringe)}: + +Truncation and continuation line bitmaps: +@code{left-truncation-fringe-bitmap}, +@code{right-truncation-fringe-bitmap}, +@code{continued-line-fringe-bitmap}, +@code{continuation-line-fringe-bitmap}. + +Buffer indication bitmaps: +@code{up-arrow-fringe-bitmap}, +@code{down-arrow-fringe-bitmap}, +@code{top-left-angle-fringe-bitmap}, +@code{top-right-angle-fringe-bitmap}, +@code{bottom-left-angle-fringe-bitmap}, +@code{bottom-right-angle-fringe-bitmap}, +@code{left-bracket-fringe-bitmap}, +@code{right-bracket-fringe-bitmap}. + +Empty line indication bitmap: +@code{empty-line-fringe-bitmap}. + +Overlay arrow bitmap: +@code{overlay-arrow-fringe-bitmap}. + +Bitmaps for displaying the cursor in right fringe: +@code{filled-box-cursor-fringe-bitmap}, +@code{hollow-box-cursor-fringe-bitmap}, +@code{hollow-square-fringe-bitmap}, @code{bar-cursor-fringe-bitmap}, +@code{hbar-cursor-fringe-bitmap}. + +Fringe bitmap opaque value indicating that no fringe bitmap is present: +@code{no-fringe-bitmap}. + +Fringe bitmap opaque value indicating a reference to an undefined bitmap: +@code{undef-fringe-bitmap}. + + To display an specific fringe bitmap on a line in an Emacs window, +use it as a @code{left-fringe} or @code{right-fringe} specifier in the +@code{display} property of some text that is displayed on that line +(@pxref{Display Property}). + +@defun define-fringe-bitmap bits &optional height width align bitmap +Define a new fringe bitmap, or change an existing bitmap. + +The argument @code{bits} is either a string or a vector of integers, +where each element (typically) corresponds to one row of the bitmap, +and each bit of an integer corresponds to one pixel of the bitmap. + +The optional argument @code{height} specifies the height of the bitmap. +If @code{height} is @code{nil}, the length of @code{bits} is used. + +The optional argument @code{width} specifies the width of the bitmap; +it must be an integer between 1 and 16, or @code{nil} which defaults +to a width of 8 pixels. + +The optional argument @code{align} may be one of @code{top}, +@code{center}, or @code{bottom}, indicating the positioning of the +bitmap relative to the rows where it is used; the default is to center +the bitmap. + +The @code{align} argument may also be a list @code{(ALIGN PERIODIC)} +where @code{ALIGN} is intepreted as described above, and if +@code{PERIODIC} is non-@code{nil} it specifies that the @code{bits} should +be repeated until a bitmap of the specified @code{height} is created. + +The optional argument @code{bitmap} specifies the opaque integer that +identifies an existing bitmap to redefine. + +The return value is a new opaque integer identifying the new bitmap number, +or @code{nil} of there are no more free bitmap slots. +@end defun + +@defun destroy-fringe-bitmap bitmap +Destroy the fringe bitmap identified by the opaque integer +@code{bitmap}. If @code{bitmap} identifies a standard fringe bitmap, +the original built-in bitmap is restored. +@end defun + +@defun set-fringe-bitmap-face bitmap &optional face +Set face for a specific fringe bitmap @code{bitmap} to the face +specified by the argument @code{face}. +If @code{face} is @code{nil}, reset face to default @code{fringe} face. + +Normally, the specified face should be a face derived from the +@code{fringe} face, only specifying the foreground color as the +desired color of the fringe bitmap. +@end defun + @node Scroll Bars @section Scroll Bars @@ -2609,7 +2751,7 @@ @code{set-window-scroll-bars} to specify what to do for a specific window: @defun set-window-scroll-bars window width &optional vertical-type horizontal-type -Set width and type of scroll bars of window @var{window}. +Set width and type of scroll bars of window @var{window}. If @var{window} is @code{nil}, the selected window is used. @var{width} specifies the scroll bar width in pixels (@code{nil} means use whatever is specified for width for the frame). @@ -2644,6 +2786,28 @@ window take note of the new values by calling @code{set-window-buffer} specifying the same buffer that is already displayed. +@node Pointer Shapes +@section Pointer Shapes + +Normally, the mouse pointer has the @code{text} shape over text and +the @code{arrow} shape over window areas which do not correspond to +any buffer text. + +The available pointer shapes are: @code{text} (or @code{nil}), +@code{arrow}, @code{hand}, @code{vdrag}, @code{hdrag}, +@code{modeline}, and @code{hourglass}. + +The mouse pointer shape over text or images can be changed via the +@code{pointer} text property, and for image with the @code{:pointer} +and @code{:map} image properties. + +@defvar void-text-area-pointer +@tindex void-text-area-pointer +This variable specifies the mouse pointer shape in void text areas, +i.e. the areas after the end of a line or below the last line in the +buffer. The default is to use the @code{arrow} (non-text) pointer. +@end defvar + @node Display Property @section The @code{display} Property @cindex display specification @@ -2659,10 +2823,12 @@ @menu * Specified Space:: Displaying one space with a specified width. +* Pixel Specification:: Specifying space width or height in pixels. * Other Display Specs:: Displaying an image; magnifying text; moving it up or down on the page; adjusting the width of spaces within text. * Display Margins:: Displaying text or images to the side of the main text. +* Display Fringe Bitmaps:: Displaying a fringe bitmap in a specific line. * Conditional Display:: Making any of the above features conditional depending on some Lisp expression. @end menu @@ -2683,9 +2849,10 @@ @table @code @item :width @var{width} -Specifies that the space width should be @var{width} times the normal -character width. @var{width} can be an integer or floating point -number. +If @var{width} is an integer or floating point number, it specifies +that the space width should be @var{width} times the normal character +width. The @var{width} may also be a @dfn{pixel width} specification +(@pxref{Pixel Specification}). @item :relative-width @var{factor} Specifies that the width of the stretch should be computed from the @@ -2694,32 +2861,111 @@ character, multiplied by @var{factor}. @item :align-to @var{hpos} -Specifies that the space should be wide enough to reach @var{hpos}. The -value @var{hpos} is measured in units of the normal character width. It -may be an integer or a floating point number. +Specifies that the space should be wide enough to reach @var{hpos}. +If the value @var{hpos} is an integer or a floating point number, it +is measured in units of the normal character width. The @var{hpos} +may also be a @dfn{pixel width} specification (@pxref{Pixel Specification}). @end table + The @code{:height} and @code{:align-to} properties are also supported +on non-window systems. + You should use one and only one of the above properties. You can also specify the height of the space, with other properties: @table @code @item :height @var{height} -Specifies the height of the space, as @var{height}, -measured in terms of the normal line height. +Specifies the height of the space. +If @var{height} is an integer or floating point number, it specifies +that the space height should be @var{height} times the normal character +height. The @var{height} may also be a @dfn{pixel height} specification +(@pxref{Pixel Specification}). @item :relative-height @var{factor} Specifies the height of the space, multiplying the ordinary height of the text having this display specification by @var{factor}. @item :ascent @var{ascent} -Specifies that @var{ascent} percent of the height of the space should be -considered as the ascent of the space---that is, the part above the -baseline. The value of @var{ascent} must be a non-negative number no -greater than 100. +If the value of @var{ascent} is a non-negative number no greater than +100, it specifies that @var{ascent} percent of the height of the space +should be considered as the ascent of the space---that is, the part +above the baseline. The ascent may also be specified in pixel units +with a @dfn{pixel ascent} specification (@pxref{Pixel Specification}). + @end table Don't use both @code{:height} and @code{:relative-height} together. +@node Pixel Specification +@subsection Pixel Specification for Spaces +@cindex spaces, pixel specification + + The value of the @code{:width}, @code{:align-to}, @code{:height}, +and @code{:ascent} properties can be a (trivial) expression +which is evaluated during redisplay. The result of the evaluation is +used as an absolute number of pixels. + + The following expressions are supported: + +@example +@group + EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM + NUM ::= INTEGER | FLOAT | SYMBOL + UNIT ::= in | mm | cm | width | height + ELEM ::= left-fringe | right-fringe | left-margin | right-margin + | scroll-bar | text + POS ::= left | center | right + FORM ::= (NUM . EXPR) | (OP EXPR ...) + OP ::= + | - +@end group +@end example + + The form @var{NUM} specifies a fractional width or height of the +default frame font size. The form @code(@var{NUM})} specifies an +absolute number of pixels. If a symbol @var{SYMBOL} is specified, its +buffer-local variable binding is used. + + The @code{in}, @code{mm}, and @code{cm} units specifies the number +of pixels per inch, milli-meter, and centi-meter, resp. The +@code{width} and @code{height} units correspond to the width and +height of the current face font. An image specification @var{IMAGE} +corresponds to the width or height of the image. + + The @code{left-fringe}, @code{right-fringe}, @code{left-margin}, +@code{right-margin}, @code{scroll-bar}, and @code{text} elements +specify to the width of the corresponding area of the window. + + The @code{left}, @code{center}, and @code{right} positions can be +used with @code{:align-to} to specify a position relative to the left +edge, center, or right edge of the text area. + + One of the above window elements (except @code{text}) can also be +used with @code{:align-to} to specify that the position is relative to +the left edge of the given area. Once the base offset for a relative +position has been set (by the first occurrence of one of these +symbols), further occurences of these symbols are interpreted as the +width of the specified area. For example, to align to the center of +the left-margin, use + +@example +:align-to (+ left-margin (0.5 . left-margin)) +@end example + + If no specific base offset is set for alignment, it is always relative +to the left edge of the text area. For example, @samp{:align-to 0} in a +header-line aligns with the first text column in the text area. + + The value of the form @code(@var{NUM} . @var{EXPR})} is the value of +@var{NUM} multiplied by the value of the expression @var{EXPR}. For +example, @samp{(2 . in)} specifies a width of 2 inches, while +@samp{(0.5 . IMAGE)} specifies half the width (or height) of the +specified image. + + The form @code{(+ @var{EXPR} ...)} adds up the value of the +expressions. The form @code{(- @var{EXPR} ...)} negates or subtracts +the value of the expressions. + + @node Other Display Specs @subsection Other Display Specifications @@ -2729,6 +2975,15 @@ display specification, it means to display the image instead of the text that has the display specification. +@item (slice @var{x} @var{y} @var{width} @var{height}) +This property is used with an @code{image} property to specify a +@dfn{slice} (a partial area) of the image to display. The top left +corner of the slice is specified by @var{y} and @var{x} and the width +and height of the slice is specified by @var{width} and @var{height}. +Integer values are taken as pixel values. A floating point number in +the range 0.0 - 1.0 is relative to the width or height of the whole +image. + @item ((margin nil) @var{string}) @itemx @var{string} A display specification of this form means to display @var{string} @@ -2851,6 +3106,35 @@ If @var{window} is @code{nil}, the selected window is used. @end defun +@node Display Fringe Bitmaps +@subsection Displaying Bitmaps in the Fringes +@cindex display fringes +@cindex margins, fringes + + You can display a bitmap in the left or right fringes for a given +line in a window using the @code{display} property. + + To put text in the left or right fringe of the window, use a +display specification of the form @code{(left-fringe @var{bitmap} [@var{face}])} +or @code{(right-fringe @var{bitmap} [@var{face}])} on one of the +characters on the corresponding text line. + + The @var{bitmap} is an opaque integer identifying the bitmap, and the +optional @var{face} is the name of the face whose foreground and +background color is to be used for displaying the bitmap. + +@defun fringe-bitmaps-at-pos &optional pos window +This function returns the fringe bitmaps of the display row containing +position @var{pos} in window @var{window}. The return value is a cons +@code{(@var{left} . @var{right})} where @var{left} and @var{right} +are the fringe bitmap numbers for the bitmaps in the left and right +fringe, resp. + + Returns @code{nil} if @var{pos} is not visible in window +@var{window}. If @var{window} is @code{nil}, use the selected window. +If @var{pos} is @code{nil}, use value of point in that window. +@end defun + @node Conditional Display @subsection Conditional Display Specifications @cindex conditional display specifications @@ -2943,6 +3227,7 @@ * Other Image Types:: Various other formats are supported. * Defining Images:: Convenient ways to define an image for later use. * Showing Images:: Convenient ways to display an image once it is defined. +* Image Slices:: Displaying image slices. * Image Cache:: Internal mechanisms of image display. @end menu @@ -3105,6 +3390,44 @@ If @var{mask} is @code{nil}, remove a mask from the image, if it has one. Images in some formats include a mask which can be removed by specifying @code{:mask nil}. + +@item :pointer @var{shape} +This specifies the pointer shape when the mouse pointer is over this +image. @xref{Pointer Shapes}, for available pointer shapes. + +@item :map @var{map} +This associates an image map of @dfn{hot spots} with this image. + +An image map is an alist where each element has the format +@code{(@var{area} @var{id} @var{plist})}. An @var{area} is specified +as either a rectangle, a circle, or a polygon. + +A rectangle is a cons +@code{(rect . ((@var{x0} . @var{y0}) . (@var{x1} . @var{y1})))} +which specifies the pixel coordinates of the upper left and bottom right +corners of the rectangle area. + +A circle is a cons +@code{(circle . ((@var{x0} . @var{y0}) . @var{r}))} +which specifies the center and the radius of the circle; @var{r} may +be a float or integer. + +A polygon is a cons +@code(poly . [@var{x0} @var{y0} @var{x1} @var{y1} ...])} +where each pair in the vector describes one corner in the polygon. + +When the mouse pointer is above a hot-spot area of an image, the +@var{plist} of that hot-spot is consulted; if it contains a @code{help-echo} +property it defines a tool-tip for the hot-spot, and if it contains +a @code{pointer} property, it defines the shape of the mouse cursor when +it is over the hot-spot. +@xref{Pointer Shapes}, for available pointer shapes. + +When you click the mouse when the mouse pointer is over a hot-spot, an +event is composed by combining the @var{id} of the hot-spot with the +mouse event, e.g. @samp{[area4 mouse-1]} if the hot-spot's @var{id} is +@samp{area4}. + @end table @defun image-mask-p spec &optional frame @@ -3372,7 +3695,7 @@ property yourself, but it is easier to use the functions in this section. -@defun insert-image image &optional string area +@defun insert-image image &optional string area slice This function inserts @var{image} in the current buffer at point. The value @var{image} should be an image descriptor; it could be a value returned by @code{create-image}, or the value of a symbol defined with @@ -3385,11 +3708,26 @@ @code{nil} or omitted, the image is displayed at point within the buffer's text. +The argument @var{slice} specifies a slice of the image to insert. If +@var{slice} is @code{nil} or omitted the whole image is inserted. +Otherwise, @var{slice} is a list +@code{(@var{x} @var{y} @var{width} @var{height})} +which specifies the @var{x} and @var{y} positions and +@var{width} and @var{height} of the image area to insert. Integer +values are taken as pixel values. A floating point number in the +range 0.0 - 1.0 is relative to the width or height of the image. + Internally, this function inserts @var{string} in the buffer, and gives it a @code{display} property which specifies @var{image}. @xref{Display Property}. @end defun +@defun insert-sliced-image image &optional string area rows cols +This function inserts @var{image} in the current buffer at point like +@code{insert-image}, but the image is automatically split into +@var{rows} x @var{cols} equally sized slices. +@end defun + @defun put-image image pos &optional string area This function puts image @var{image} in front of @var{pos} in the current buffer. The argument @var{pos} should be an integer or a @@ -3498,7 +3836,7 @@ * Making Buttons:: Adding buttons to Emacs buffers. * Manipulating Buttons:: Getting and setting properties of buttons. * Button Buffer Commands:: Buffer-wide commands and bindings for buttons. -* Manipulating Button Types:: +* Manipulating Button Types:: @end menu @node Button Properties diff -r e318dfc2edc6 -r c06211125947 lispref/text.texi --- a/lispref/text.texi Mon Sep 20 13:59:19 2004 +0000 +++ b/lispref/text.texi Thu Sep 23 10:32:54 2004 +0000 @@ -2974,6 +2974,69 @@ @code{beginning-of-line} stop moving at a field boundary. @xref{Fields}. +@item cursor +@kindex cursor @r{(text property)} +Normally, the cursor is displayed at the end of any overlay and text +property string that may be present at the current window position. +The cursor may be placed on any character of such strings by giving +that character a non-@code{nil} @var{cursor} text property. + +@item pointer +@kindex pointer @r{(text property)} +This specifies a specific pointer shape when the mouse pointer is over +this text or image. See the variable @var{void-area-text-pointer} +for possible pointer shapes. + +@item line-height +@kindex line-height @r{(text property)} +A newline may have @code{line-height} text or overlay properties that +controls the height of the corresponding display row. + +If the @code{line-height} property value is @samp{0}, the newline does +not contribute to the height of the display row; instead the height of +the newline glyph is reduced. Also, a @code{line-spacing} property on +this newline is ignored. This can be used to tile small images or +image slices without adding blank areas between the images. + +If the @code{line-height} property value is a positive integer, the +value specifies the minimum line height in pixels. If necessary, the +line height it increased by increasing the line's ascent. + +If the @code{line-height} property value is a floating point number, +the minimum line height is calculated by multiplying the default frame +line height by the given value. + +If the @code{line-height} property value is a cons @code{(@var{ratio} +. @var{face})}, the minimum line height is calculated as @var{ratio} * +height of named face @var{face}. The @var{ ratio} is an integer or a +floating point number. If @var{face} is @code{t}, it specifies the +current face. + +@item line-spacing +@kindex line-spacing @r{(text property)} +A newline may also have a @code{line-spacing} text or overlay +properties that controls the height of the corresponding display row. + +If the @code{line-spacing} property value is an positive integer, the +value is used as additional pixels to insert after the display line; +this overrides the default frame line-spacing and any buffer local +value of the @var{line-spacing} variable. + +If the @code{line-spacing} property is a floating point number or +cons, the line spacing is calculated as specified above for the +@code{line-height} property. + +If the @code{line-spacing} value is a cons @code{(total . @var{spacing})} +where @var{spacing} is any of the forms described above, the value of +@var{spacing} is used as the total height of the line, i.e. a varying +number of pixels are inserted after each line to make each line +exactly that many pixels high. + +Using the @code{line-spacing} property overrides the buffer local +@var{line-spacing} variable. That value of that variable may be an +integer that specifies a number of pixels, or a floating point +number which gives the spacing relative to the default frame line height. + @item modification-hooks @cindex change hooks for a character @cindex hooks for changing a character diff -r e318dfc2edc6 -r c06211125947 man/ChangeLog --- a/man/ChangeLog Mon Sep 20 13:59:19 2004 +0000 +++ b/man/ChangeLog Thu Sep 23 10:32:54 2004 +0000 @@ -1,3 +1,18 @@ +2004-09-23 Kim F. Storm + + * display.texi (Display Custom): Add `overflow-newline-into-fringe', + `indicate-buffer-boundaries' and `default-indicate-buffer-boundaries'. + +2004-09-20 Richard M. Stallman + + * custom.texi (Hooks): Explain using setq to clear out a hook. + (File Variables): Explain multiline string constants. + (Non-ASCII Rebinding): Explain when you need to update + non-ASCII char codes in .emacs. + + * building.texi (Compilation): Explain how to make a silent + subprocess that won't be terminated. Explain compilation-environment. + 2004-09-13 Kim F. Storm * mini.texi (Repetition): Rename isearch-resume-enabled to diff -r e318dfc2edc6 -r c06211125947 man/building.texi --- a/man/building.texi Mon Sep 20 13:59:19 2004 +0000 +++ b/man/building.texi Thu Sep 23 10:32:54 2004 +0000 @@ -128,6 +128,21 @@ wait $pid # @r{Wait for subprocess} @end example + If the background process does not output to the compilation buffer, +so you only need to prevent it from being killed when the main +compilation process terminates, this is sufficient: + +@example +nohup @var{command}; sleep 1 +@end example + +@vindex compilation-environment + You can control the environment passed to the compilation command +with the variable @code{compilation-environment}. Its value is a list +of environment variable settings; each element should be a string of +the form @code{"@var{envvarname}=@var{value}"}. These environment +variable settings override the usual ones. + @node Grep Searching @section Searching with Grep under Emacs diff -r e318dfc2edc6 -r c06211125947 man/calc.texi --- a/man/calc.texi Mon Sep 20 13:59:19 2004 +0000 +++ b/man/calc.texi Thu Sep 23 10:32:54 2004 +0000 @@ -544,6 +544,9 @@ are shown as @kbd{M-x}. Other notations are @key{RET} for the Return key, @key{SPC} for the space bar, @key{TAB} for the Tab key, @key{DEL} for the Delete key, and @key{LFD} for the Line-Feed key. +The @key{DEL} key is called Backspace on some keyboards, it is +whatever key you would use to correct a simple typing error when +regularly using Emacs. (If you don't have the @key{LFD} or @key{TAB} keys on your keyboard, the @kbd{C-j} and @kbd{C-i} keys are equivalent to them, respectively. @@ -4105,7 +4108,13 @@ display the graph in Emacs itself using rough character graphics. Press @kbd{q} when you are done viewing the character graphics. -Next, let's add the line we got from our least-squares fit: +Next, let's add the line we got from our least-squares fit. +@ifinfo +(If you are reading this tutorial on-line while running Calc, typing +@kbd{g a} may cause the tutorial to disappear from its window and be +replaced by a buffer named @samp{*Gnuplot Commands*}. The tutorial +will reappear when you terminate GNUPLOT by typing @kbd{g q}.) +@end ifinfo @smallexample @group diff -r e318dfc2edc6 -r c06211125947 man/custom.texi --- a/man/custom.texi Mon Sep 20 13:59:19 2004 +0000 +++ b/man/custom.texi Thu Sep 23 10:32:54 2004 +0000 @@ -785,11 +785,13 @@ are not called at all. The documentation of each abnormal hook variable explains in detail what is peculiar about it. - The recommended way to add a hook function to a hook (either normal or -abnormal) is by calling @code{add-hook}. You can use any valid Lisp -function as the hook function, provided it can handle the proper number -of arguments (zero arguments, in the case of a normal hook). Of course, -not every Lisp function is @emph{useful} in any particular hook. + You can set a hook variable with @code{setq} like any other Lisp +variable, but the recommended way to add a hook function to a hook +(either normal or abnormal) is by calling @code{add-hook}. You can +specify any valid Lisp function as the hook function, provided it can +handle the proper number of arguments (zero arguments, in the case of +a normal hook). Of course, not every Lisp function is @emph{useful} +in any particular hook. For example, here's how to set up a hook to turn on Auto Fill mode when entering Text mode and other modes based on Text mode: @@ -830,6 +832,11 @@ ``asking for trouble.'' However, the order is predictable: the most recently added hook functions are executed first. + If you play with adding various different versions of a hook +function by calling @code{add-hook} over and over, remember that all +the versions you added will remain in the hook variable together. +To clear them out, you can do @code{(setq @var{hook-variable} nil)}. + @node Locals @subsection Local Variables @@ -998,8 +1005,22 @@ that the file is intended as input for. The example above is for a language where comment lines start with @samp{;;; } and end with @samp{***}; the local values for @code{comment-start} and -@code{comment-end} customize the rest of Emacs for this unusual syntax. -Don't use a prefix (or a suffix) if you don't need one. +@code{comment-end} customize the rest of Emacs for this unusual +syntax. Don't use a prefix (or a suffix) if you don't need one. + + If you write a multi-line string value, you should put the prefix +and suffix on each line, even lines that start or end within the +string. They will be stripped off for processing the list. If you +want to split a long string across multiple lines of the file, you can +use backslash-newline, which is ignored in Lisp string constants. +Here's an example of doing this: + +@example +# Local Variables: +# compile-command: "cc foo.c -Dfoo=bar -Dhack=whatever \ +# -Dmumble=blaah" +# End: +@end example Two ``variable names'' have special meanings in a local variables list: a value for the variable @code{mode} really sets the major mode, @@ -1635,15 +1656,14 @@ Type @kbd{C-q} followed by the key you want to bind, to insert @var{char}. Since this puts a non-@acronym{ASCII} character in the @file{.emacs}, -you should specify for that file a coding system that supports -that character. @xref{Init Syntax}. +you should specify a coding system for that file that supports the +character in question. @xref{Init Syntax}. -@strong{Warning:} if you change the keyboard encoding, such that the code that -@kbd{C-q} inserts becomes different, you'll need to edit the -Lisp expression accordingly. - -@strong{Warning:} @kbd{C-q} will insert the wrong code if you visit -the file @file{.emacs} in a unibyte buffer, so don't do that. +@strong{Warning:} if you change the keyboard encoding, or change +between multibyte and unibyte mode, or anything that would alter which +code @kbd{C-q} would insert for that character, you'll need to edit +the Lisp expression accordingly, to use the character code generated +by @kbd{C-q} in the new mode. @node Mouse Buttons @subsection Rebinding Mouse Buttons diff -r e318dfc2edc6 -r c06211125947 man/display.texi --- a/man/display.texi Mon Sep 20 13:59:19 2004 +0000 +++ b/man/display.texi Thu Sep 23 10:32:54 2004 +0000 @@ -990,6 +990,46 @@ windows, see @ref{Split Window}. See also @ref{Display,, Display, elisp, The Emacs Lisp Reference Manual}. +@vindex overflow-newline-into-fringe + If the variable @code{overflow-newline-into-fringe} is +non-@code{nil} on a window system, it specifies that lines which are +exactly as wide as the window (not counting the final newline +character) shall not be broken into two lines on the display (with +just the newline on the second line). Instead, the newline +overflows into the right fringe, and the cursor will be displayed in +the fringe when positioned on that newline. +@end defvar + +@vindex indicate-buffer-boundaries + On a window system, Emacs may indicate the buffer boundaries in the +fringes. The buffer boundaries, i.e. first and last line in the +buffer, can be marked with angle bitmaps in the left or right fringe. +This can be combined with up and down arrow bitmaps shown at the top +and bottom of the left or right fringe if the window can be scrolled +in either direction. + +The buffer-local variable @code{indicate-buffer-boundaries} controls +how the buffer boundaries and window scrolling is indicated in the +fringes. + +If the value is @code{left} or @code{right}, both angle and arrow +bitmaps are displayed in the left or right fringe, respectively. +Any other non-@code{nil} value causes the bitmap on the top line to be +displayed in the left fringe, and the bitmap on the bottom line in the +right fringe. + +If value is a cons @code{(angles . arrows)}, the car specifies the +position of the angle bitmaps, and the cdr specifies the position of +the arrow bitmaps. For example, @code{(t . right)} places the top +angle bitmap in left fringe, the bottom angle bitmap in right fringe, +and both arrow bitmaps in right fringe. To show just the angle +bitmaps in the left fringe, but no arrow bitmaps, use @code{(left . nil)}. + +@vindex default-indicate-buffer-boundaries + The value of the variable @code{default-indicate-buffer-boundaries} +is the default value for @code{indicate-buffer-boundaries} in buffers +that do not override it. + @vindex baud-rate The variable @code{baud-rate} holds the output speed of the terminal, as far as Emacs knows. Setting this variable does not