summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorMiles Bader <miles@gnu.org>2004-09-21 09:34:12 +0000
committerMiles Bader <miles@gnu.org>2004-09-21 09:34:12 +0000
commit70db5adc8cbff02a4d142bd077c336f22f859dd4 (patch)
tree558869c585116bfa9fd7456ef0d11aec592f4a7e /lisp
parent736b5ed5851ae6824fbd3bee3cbc4af13464f897 (diff)
parent3234a6e6aad9371426bce9ae97b4cacbda16e22d (diff)
downloademacs-70db5adc8cbff02a4d142bd077c336f22f859dd4.tar.gz
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-43
Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-553 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-557 Update from CVS * 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 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-561 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-30 Update from CVS
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog126
-rw-r--r--lisp/battery.el165
-rw-r--r--lisp/bindings.el3
-rw-r--r--lisp/calc/calc-units.el6
-rw-r--r--lisp/calc/calc.el28
-rw-r--r--lisp/cmuscheme.el8
-rw-r--r--lisp/descr-text.el3
-rw-r--r--lisp/ediff-init.el235
-rw-r--r--lisp/eshell/esh-ext.el4
-rw-r--r--lisp/files.el104
-rw-r--r--lisp/gnus/ChangeLog163
-rw-r--r--lisp/gnus/binhex.el1
-rw-r--r--lisp/gnus/deuglify.el9
-rw-r--r--lisp/gnus/flow-fill.el2
-rw-r--r--lisp/gnus/gnus-agent.el5
-rw-r--r--lisp/gnus/gnus-art.el37
-rw-r--r--lisp/gnus/gnus-cite.el2
-rw-r--r--lisp/gnus/gnus-delay.el1
-rw-r--r--lisp/gnus/gnus-fun.el4
-rw-r--r--lisp/gnus/gnus-group.el3
-rw-r--r--lisp/gnus/gnus-int.el1
-rw-r--r--lisp/gnus/gnus-msg.el12
-rw-r--r--lisp/gnus/gnus-score.el1
-rw-r--r--lisp/gnus/gnus-srvr.el2
-rw-r--r--lisp/gnus/gnus-start.el2
-rw-r--r--lisp/gnus/gnus-sum.el25
-rw-r--r--lisp/gnus/gnus-util.el2
-rw-r--r--lisp/gnus/gnus.el6
-rw-r--r--lisp/gnus/imap.el3
-rw-r--r--lisp/gnus/mail-source.el7
-rw-r--r--lisp/gnus/message.el35
-rw-r--r--lisp/gnus/mm-decode.el11
-rw-r--r--lisp/gnus/mm-util.el1
-rw-r--r--lisp/gnus/mml.el3
-rw-r--r--lisp/gnus/nnimap.el6
-rw-r--r--lisp/gnus/nnmail.el3
-rw-r--r--lisp/gnus/pgg-def.el1
-rw-r--r--lisp/gnus/sha1.el1
-rw-r--r--lisp/gnus/smiley.el1
-rw-r--r--lisp/gnus/smime.el3
-rw-r--r--lisp/gnus/uudecode.el1
-rw-r--r--lisp/ibuf-ext.el3
-rw-r--r--lisp/indent.el20
-rw-r--r--lisp/mail/supercite.el2
-rw-r--r--lisp/net/net-utils.el2
-rw-r--r--lisp/progmodes/make-mode.el2
-rw-r--r--lisp/progmodes/sh-script.el1
-rw-r--r--lisp/simple.el3
-rw-r--r--lisp/startup.el7
-rw-r--r--lisp/subr.el17
-rw-r--r--lisp/term.el638
-rw-r--r--lisp/textmodes/enriched.el34
-rw-r--r--lisp/url/ChangeLog4
-rw-r--r--lisp/url/url-handlers.el21
54 files changed, 1171 insertions, 619 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d5dab8bb0cb..8263604548b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,124 @@
+2004-09-21 Kenichi Handa <handa@m17n.org>
+
+ * descr-text.el (describe-char): Checking of quail activation
+ fixed.
+
+2004-09-20 Luc Teirlinck <teirllm@auburn.edu>
+
+ * 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 <jasonr@gnu.org>
+
+ * 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 <jpw@gnu.org>
+
+ * bindings.el (completion-ignored-extensions): Add .dfsl.
+
+2004-09-20 Richard M. Stallman <rms@gnu.org>
+
+ * 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 <dann@ics.uci.edu>
+
+ * progmodes/sh-script.el (sh-mode-default-syntax-table): Set syntax
+ of = to "." (punctuation).
+
+2004-09-19 Stefan <monnier@iro.umontreal.ca>
+
+ * subr.el (event-basic-type): Fix mask (extend to 22bits).
+
+2004-09-18 Luc Teirlinck <teirllm@auburn.edu>
+
+ * textmodes/enriched.el (enriched-rerun-flag): New variable.
+ (enriched-before-change-major-mode): New function.
+ Add it to `change-major-mode-hook'.
+ (enriched-after-change-major-mode): New function.
+ Add it to `after-change-major-mode-hook'.
+ (enriched-mode): Make it work correctly if called from
+ `after-change-major-mode-hook'.
+ No longer set `indent-line-function'.
+
+ * simple.el (fundamental-mode): Run `after-change-major-mode-hook'.
+
+ * subr.el (after-change-major-mode-hook): New variable.
+ (run-mode-hooks): Implement it.
+
+2004-09-18 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * battery.el (battery-linux-proc-apm): Use string-to-number.
+ (battery-linux-proc-acpi): Ignore all hidden files in the battery dir.
+ Use dolist (and less indentation). Use erase-buffer.
+ Pre-initialize `design-capacity', `warn', and `low'.
+ (battery-format): Use replace-regexp-in-string.
+
+2004-09-18 Ralph Schleicher <rs@nunatak.allgaeu.org>
+
+ * battery.el: Delete superfluous empty lines.
+ (battery-linux-proc-acpi): Attempt to gather information from all
+ battery subdirectories regardless of their file name.
+ (battery-linux-proc-apm): Replace all occurrences of
+ battery-hex-to-int-2 with string-to-int (base 16).
+ (battery-hex-to-int-2, battery-hex-to-int): Delete functions.
+ (battery-hex-map): Delete variable.
+
+2004-09-18 John Paul Wallington <jpw@gnu.org>
+
+ * calc/calc-units.el (calc-quick-units): Fix overzealous
+ s/or/unless/.
+
+2004-09-17 Romain Francoise <romain@orebokech.com>
+
+ * ibuf-ext.el (define-ibuffer-filter filename):
+ Expand dired-directory since buffer-file-name is absolute.
+
+2004-09-17 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * ediff-init.el (ediff-current-diff-face-A)
+ (ediff-current-diff-face-B, ediff-current-diff-face-C)
+ (ediff-current-diff-face-Ancestor)
+ (ediff-fine-diff-face-A, ediff-fine-diff-face-B)
+ (ediff-fine-diff-face-C, ediff-fine-diff-face-Ancestor)
+ (ediff-even-diff-face-A, ediff-even-diff-face-B)
+ (ediff-even-diff-face-C, ediff-even-diff-face-Ancestor)
+ (ediff-odd-diff-face-A, ediff-odd-diff-face-B)
+ (ediff-odd-diff-face-C, ediff-odd-diff-face-Ancestor):
+ Use min-colors.
+
+ * term.el (term-down): Perform vertical motion if DOWN is negative.
+ (term-exec-1): Set both TERMCAP and TERMINFO unconditionally.
+ (term-termcap-format): Synchronyze with the eterm terminfo entry
+ in etc/e/eterm.ti.
+ (term-handle-colors-array): If the current foreground or
+ background are zero (i.e. unspecified), use the foreground and
+ background of the default face for reverse video.
+ (term-ansi-at-eval-string, term-ansi-default-fg)
+ (term-ansi-default-bg, term-ansi-current-temp): Delete unused variable.
+ (term-mem): Delete ununsed function.
+ (term-protocol-version): Increment.
+ (term-current-face): Set to default.
+
2004-09-15 Thien-Thi Nguyen <ttn@gnu.org>
* vc.el (annotate-time): Document point handling.
@@ -153,6 +274,11 @@
* desktop.el (desktop-clear-preserve-buffers):
Remove make-obsolete-variable.
+2004-09-08 Richard M. Stallman <rms@gnu.org>
+
+ * buff-menu.el (list-buffers-noselect): Call format-mode-line
+ with the buffer as argument.
+
2004-09-08 Stefan Monnier <monnier@iro.umontreal.ca>
* vc-arch.el (vc-arch-state): Fix parsing for `names' method.
diff --git a/lisp/battery.el b/lisp/battery.el
index 3b44ff891f9..7b172321602 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -1,6 +1,7 @@
;;; battery.el --- display battery status information
-;; Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1998, 2000, 2001, 2003, 2004
+;; Free Software Foundation, Inc.
;; Author: Ralph Schleicher <rs@nunatak.allgaeu.org>
;; Keywords: hardware
@@ -31,9 +32,9 @@
;;; Code:
(require 'timer)
+(eval-when-compile (require 'cl))
-
(defgroup battery nil
"Display battery status information."
:prefix "battery-"
@@ -182,20 +183,20 @@ The following %-sequences are provided:
(re-search-forward battery-linux-proc-apm-regexp)
(setq driver-version (match-string 1))
(setq bios-version (match-string 2))
- (setq tem (battery-hex-to-int-2 (match-string 3)))
+ (setq tem (string-to-number (match-string 3) 16))
(if (not (logand tem 2))
(setq bios-interface "not supported")
(setq bios-interface "enabled")
(cond ((logand tem 16) (setq bios-interface "disabled"))
((logand tem 32) (setq bios-interface "disengaged")))
- (setq tem (battery-hex-to-int-2 (match-string 4)))
+ (setq tem (string-to-number (match-string 4) 16))
(cond ((= tem 0) (setq line-status "off-line"))
((= tem 1) (setq line-status "on-line"))
((= tem 2) (setq line-status "on backup")))
- (setq tem (battery-hex-to-int-2 (match-string 6)))
+ (setq tem (string-to-number (match-string 6) 16))
(if (= tem 255)
(setq battery-status "N/A")
- (setq tem (battery-hex-to-int-2 (match-string 5)))
+ (setq tem (string-to-number (match-string 5) 16))
(cond ((= tem 0) (setq battery-status "high"
battery-status-symbol ""))
((= tem 1) (setq battery-status "low"
@@ -243,54 +244,52 @@ The following %-sequences are provided:
%m Remaining time in minutes
%h Remaining time in hours
%t Remaining time in the form `h:min'"
- (let (capacity design-capacity rate rate-type charging-state warn low
- minutes hours)
- (when (file-directory-p "/proc/acpi/battery/")
- ;; ACPI provides information about each battery present in the system in
- ;; a separate subdirectory. We are going to merge the available
- ;; information together since displaying for a variable amount of
- ;; batteries seems overkill for format-strings.
- (mapc
- (lambda (dir)
- (with-temp-buffer
- (insert-file-contents (expand-file-name "state" dir))
- (when (re-search-forward "present: +yes$" nil t)
- (and (re-search-forward "charging state: +\\(.*\\)$" nil t)
- (or (null charging-state) (string= charging-state
- "unknown"))
- ;; On most multi-battery systems, most of the time only one
- ;; battery is "charging"/"discharging", the others are
- ;; "unknown".
- (setq charging-state (match-string 1)))
- (when (re-search-forward "present rate: +\\([0-9]+\\) \\(m[AW]\\)$"
- nil t)
- (setq rate (+ (or rate 0) (string-to-int (match-string 1)))
- rate-type (or (and rate-type
- (if (string= rate-type (match-string 2))
- rate-type
- (error
- "Inconsistent rate types (%s vs. %s)"
- rate-type (match-string 2))))
- (match-string 2))))
- (when (re-search-forward "remaining capacity: +\\([0-9]+\\) m[AW]h$"
- nil t)
- (setq capacity
- (+ (or capacity 0) (string-to-int (match-string 1))))))
- (goto-char (point-max))
- (insert-file-contents (expand-file-name "info" dir))
- (when (re-search-forward "present: +yes$" nil t)
- (when (re-search-forward "design capacity: +\\([0-9]+\\) m[AW]h$"
- nil t)
- (setq design-capacity (+ (or design-capacity 0)
- (string-to-int (match-string 1)))))
- (when (re-search-forward "design capacity warning: +\\([0-9]+\\) m[AW]h$"
- nil t)
- (setq warn (+ (or warn 0) (string-to-int (match-string 1)))))
- (when (re-search-forward "design capacity low: +\\([0-9]+\\) m[AW]h$"
- nil t)
- (setq low (+ (or low 0)
- (string-to-int (match-string 1))))))))
- (directory-files "/proc/acpi/battery/" t "\\(BAT\\|CMB\\)")))
+ (let ((design-capacity 0)
+ (warn 0)
+ (low 0)
+ capacity rate rate-type charging-state minutes hours)
+ ;; ACPI provides information about each battery present in the system in
+ ;; a separate subdirectory. We are going to merge the available
+ ;; information together since displaying for a variable amount of
+ ;; batteries seems overkill for format-strings.
+ (with-temp-buffer
+ (dolist (dir (ignore-errors (directory-files "/proc/acpi/battery/"
+ t "\\`[^.]")))
+ (erase-buffer)
+ (ignore-errors (insert-file-contents (expand-file-name "state" dir)))
+ (when (re-search-forward "present: +yes$" nil t)
+ (and (re-search-forward "charging state: +\\(.*\\)$" nil t)
+ (member charging-state '("unknown" nil))
+ ;; On most multi-battery systems, most of the time only one
+ ;; battery is "charging"/"discharging", the others are
+ ;; "unknown".
+ (setq charging-state (match-string 1)))
+ (when (re-search-forward "present rate: +\\([0-9]+\\) \\(m[AW]\\)$"
+ nil t)
+ (setq rate (+ (or rate 0) (string-to-number (match-string 1)))
+ rate-type (or (and rate-type
+ (if (string= rate-type (match-string 2))
+ rate-type
+ (error
+ "Inconsistent rate types (%s vs. %s)"
+ rate-type (match-string 2))))
+ (match-string 2))))
+ (when (re-search-forward "remaining capacity: +\\([0-9]+\\) m[AW]h$"
+ nil t)
+ (setq capacity
+ (+ (or capacity 0) (string-to-number (match-string 1))))))
+ (goto-char (point-max))
+ (ignore-errors (insert-file-contents (expand-file-name "info" dir)))
+ (when (re-search-forward "present: +yes$" nil t)
+ (when (re-search-forward "design capacity: +\\([0-9]+\\) m[AW]h$"
+ nil t)
+ (incf design-capacity (string-to-number (match-string 1))))
+ (when (re-search-forward
+ "design capacity warning: +\\([0-9]+\\) m[AW]h$" nil t)
+ (incf warn (string-to-number (match-string 1))))
+ (when (re-search-forward "design capacity low: +\\([0-9]+\\) m[AW]h$"
+ nil t)
+ (incf low (string-to-number (match-string 1)))))))
(and capacity rate
(setq minutes (if (zerop rate) 0
(floor (* (/ (float (if (string= charging-state
@@ -327,8 +326,8 @@ The following %-sequences are provided:
rate-type)) "N/A"))
(cons ?B (or charging-state "N/A"))
(cons ?b (or (and (string= charging-state "charging") "+")
- (and low (< capacity low) "!")
- (and warn (< capacity warn) "-")
+ (and (< capacity low) "!")
+ (and (< capacity warn) "-")
""))
(cons ?h (or (and hours (number-to-string hours)) "N/A"))
(cons ?m (or (and minutes (number-to-string minutes)) "N/A"))
@@ -346,54 +345,16 @@ The following %-sequences are provided:
(defun battery-format (format alist)
"Substitute %-sequences in FORMAT."
- (let ((index 0)
- (length (length format))
- (result "")
- char flag elem)
- (while (< index length)
- (setq char (aref format index))
- (if (not flag)
- (if (char-equal char ?%)
- (setq flag t)
- (setq result (concat result (char-to-string char))))
- (cond ((char-equal char ?%)
- (setq result (concat result "%")))
- ((setq elem (assoc char alist))
- (setq result (concat result (cdr elem)))))
- (setq flag nil))
- (setq index (1+ index)))
- (or (null flag)
- (setq result (concat result "%")))
- result))
-
-(defconst battery-hex-map '((?0 . 0) (?1 . 1) (?2 . 2) (?3 . 3)
- (?4 . 4) (?5 . 5) (?6 . 6) (?7 . 7)
- (?8 . 8) (?9 . 9) (?a . 10) (?b . 11)
- (?c . 12) (?d . 13) (?e . 14) (?f . 15)))
-
-(defun battery-hex-to-int (string)
- "Convert a hexadecimal number (a string) into a number."
- (save-match-data
- (and (string-match "^[ \t]+" string)
- (setq string (substring string (match-end 0))))
- (and (string-match "^0[xX]" string)
- (setq string (substring string (match-end 0)))))
- (battery-hex-to-int-2 string))
-
-(defun battery-hex-to-int-2 (string)
- (let ((index 0)
- (length (length string))
- (value 0)
- (elem nil))
- (while (and (< index length)
- (setq elem (assoc (downcase (aref string index))
- battery-hex-map)))
- (setq value (+ (* 16 value) (cdr elem))
- index (1+ index)))
- value))
+ (replace-regexp-in-string
+ "%."
+ (lambda (str)
+ (let ((char (aref str 1)))
+ (if (eq char ?%) "%"
+ (or (cdr (assoc char alist)) ""))))
+ format t t))
(provide 'battery)
-;;; arch-tag: 65916f50-4754-4b6b-ac21-0b510f545a37
+;; arch-tag: 65916f50-4754-4b6b-ac21-0b510f545a37
;;; battery.el ends here
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 84db9bbe1eb..ea311c191f6 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -517,7 +517,7 @@ is okay. See `mode-line-format'.")
;; CMUCL
".x86f" ".sparcf"
;; Other CL implementations (Allegro, LispWorks, OpenMCL)
- ".fasl" ".ufsl" ".fsl" ".dxl" ".pfsl"
+ ".fasl" ".ufsl" ".fsl" ".dxl" ".pfsl" ".dfsl"
;; Libtool
".lo" ".la"
;; Gettext
@@ -720,6 +720,7 @@ language you are using."
(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 --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index b8735a9dc38..025b208120b 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -297,11 +297,11 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
(units (calc-var-value 'var-Units))
(expr (calc-top-n 1)))
(unless (and (>= num 0) (<= num 9))
- (errunless "Bad unit number"))
+ (error "Bad unit number"))
(unless (math-vectorp units)
- (errunless "No \"quick units\" are defined"))
+ (error "No \"quick units\" are defined"))
(unless (< pos (length units))
- (errunless "Unit number %d not defined" pos))
+ (error "Unit number %d not defined" pos))
(if (math-units-in-expr-p expr nil)
(calc-enter-result 1 (format "cun%d" num)
(math-convert-units expr (nth pos units)))
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index d3e00a7a5a1..5c7e24ed646 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -427,7 +427,7 @@ Otherwise, 1 / 0 is changed to uinf (undirected infinity).")
(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.")
@@ -447,7 +447,7 @@ If `center', vector elements are centered.")
(calc-vector-brackets "[]"
"If non-nil, surround displayed vectors with these characters.")
- (calc-matrix-brackets '(R O)
+ (calc-matrix-brackets (R O)
"A list of code-letter symbols that control \"big\" matrix display.
If `R' is present, display inner brackets for matrices.
If `O' is present, display outer brackets for matrices (above/below).
@@ -542,10 +542,10 @@ If nil, selections displayed but ignored.")
(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 @@ If nil, selections displayed but ignored.")
(calc-mode-save-mode local)
(calc-standard-date-formats
- '("N"
- "<H:mm:SSpp >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"
+ "<H:mm:SSpp >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 --git a/lisp/cmuscheme.el b/lisp/cmuscheme.el
index a9190d32100..03cd8ee4d9c 100644
--- a/lisp/cmuscheme.el
+++ b/lisp/cmuscheme.el
@@ -1,6 +1,6 @@
;;; cmuscheme.el --- Scheme process in a buffer. Adapted from tea.el
-;; Copyright (C) 1988, 1994, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1994, 1997, 2004 Free Software Foundation, Inc.
;; Author: Olin Shivers <olin.shivers@cs.cmu.edu>
;; Maintainer: FSF
@@ -140,9 +140,9 @@
(define-key map [switch]
'("Switch to Scheme" . switch-to-scheme))
(define-key map [com-def-go]
- '("Compile Definitiion & Go" . scheme-compile-definition-and-go))
+ '("Compile Definition & Go" . scheme-compile-definition-and-go))
(define-key map [com-def]
- '("Compile Definitiion" . scheme-compile-definition))
+ '("Compile Definition" . scheme-compile-definition))
(define-key map [send-def-go]
'("Evaluate Last Definition & Go" . scheme-send-definition-and-go))
(define-key map [send-def]
@@ -437,5 +437,5 @@ This is a good place to put keybindings."
(provide 'cmuscheme)
-;;; arch-tag: e8795f4a-c496-45a2-97b4-8e0f2a2c57d2
+;; arch-tag: e8795f4a-c496-45a2-97b4-8e0f2a2c57d2
;;; cmuscheme.el ends here
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 108d7d87a1e..8f915d52d3a 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -517,7 +517,8 @@ as well as widgets, buttons, overlays, and text properties."
(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 --git a/lisp/ediff-init.el b/lisp/ediff-init.el
index 81299b9c63a..80beb4a872d 100644
--- a/lisp/ediff-init.el
+++ b/lisp/ediff-init.el
@@ -902,9 +902,15 @@ to temp files when Ediff needs to find fine differences."
(defface ediff-current-diff-face-A
- '((((type tty)) (:foreground "blue3" :background "yellow3"))
- (((class color)) (:foreground "firebrick" :background "pale green"))
- (t (:inverse-video t)))
+ (if ediff-emacs-p
+ '((((class color) (min-colors 16))
+ (:foreground "firebrick" :background "pale green"))
+ (((class color))
+ (:foreground "blue3" :background "yellow3"))
+ (t (:inverse-video t)))
+ '((((type tty)) (:foreground "blue3" :background "yellow3"))
+ (((class color)) (:foreground "firebrick" :background "pale green"))
+ (t (:inverse-video t))))
"Face for highlighting the selected difference in buffer A."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -925,10 +931,17 @@ this variable represents.")
(defface ediff-current-diff-face-B
- '((((type tty)) (:foreground "magenta3" :background "yellow3"
- :weight bold))
- (((class color)) (:foreground "DarkOrchid" :background "Yellow"))
- (t (:inverse-video t)))
+ (if ediff-emacs-p
+ '((((class color) (min-colors 16))
+ (:foreground "DarkOrchid" :background "Yellow"))
+ (((class color))
+ (:foreground "magenta3" :background "yellow3"
+ :weight bold))
+ (t (:inverse-video t)))
+ '((((type tty)) (:foreground "magenta3" :background "yellow3"
+ :weight bold))
+ (((class color)) (:foreground "DarkOrchid" :background "Yellow"))
+ (t (:inverse-video t))))
"Face for highlighting the selected difference in buffer B."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -948,9 +961,15 @@ this variable represents.")
(defface ediff-current-diff-face-C
- '((((type tty)) (:foreground "cyan3" :background "yellow3" :weight bold))
- (((class color)) (:foreground "Navy" :background "Pink"))
- (t (:inverse-video t)))
+ (if ediff-emacs-p
+ '((((class color) (min-colors 16))
+ (:foreground "Navy" :background "Pink"))
+ (((class color))
+ (:foreground "cyan3" :background "yellow3" :weight bold))
+ (t (:inverse-video t)))
+ '((((type tty)) (:foreground "cyan3" :background "yellow3" :weight bold))
+ (((class color)) (:foreground "Navy" :background "Pink"))
+ (t (:inverse-video t))))
"Face for highlighting the selected difference in buffer C."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -970,9 +989,15 @@ this variable represents.")
(defface ediff-current-diff-face-Ancestor
- '((((type tty)) (:foreground "black" :background "magenta3"))
- (((class color)) (:foreground "Black" :background "VioletRed"))
- (t (:inverse-video t)))
+ (if ediff-emacs-p
+ '((((class color) (min-colors 16))
+ (:foreground "Black" :background "VioletRed"))
+ (((class color))
+ (:foreground "black" :background "magenta3"))
+ (t (:inverse-video t)))
+ '((((type tty)) (:foreground "black" :background "magenta3"))
+ (((class color)) (:foreground "Black" :background "VioletRed"))
+ (t (:inverse-video t))))
"Face for highlighting the selected difference in buffer Ancestor."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -992,9 +1017,15 @@ this variable represents.")
(defface ediff-fine-diff-face-A
- '((((type tty)) (:foreground "white" :background "sky blue" :weight bold))
- (((class color)) (:foreground "Navy" :background "sky blue"))
- (t (:underline t :stipple "gray3")))
+ (if ediff-emacs-p
+ '((((class color) (min-colors 16))
+ (:foreground "Navy" :background "sky blue"))
+ (((class color))
+ (:foreground "white" :background "sky blue" :weight bold))
+ (t (:underline t :stipple "gray3")))
+ '((((type tty)) (:foreground "white" :background "sky blue" :weight bold))
+ (((class color)) (:foreground "Navy" :background "sky blue"))
+ (t (:underline t :stipple "gray3"))))
"Face for highlighting the refinement of the selected diff in buffer A."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1007,9 +1038,15 @@ this variable represents.")
(ediff-hide-face 'ediff-fine-diff-face-A)
(defface ediff-fine-diff-face-B
- '((((type tty)) (:foreground "magenta3" :background "cyan3"))
- (((class color)) (:foreground "Black" :background "cyan"))
- (t (:underline t :stipple "gray3")))
+ (if ediff-emacs-p
+ '((((class color) (min-colors 16))
+ (:foreground "Black" :background "cyan"))
+ (((class color))
+ (:foreground "magenta3" :background "cyan3"))
+ (t (:underline t :stipple "gray3")))
+ '((((type tty)) (:foreground "magenta3" :background "cyan3"))
+ (((class color)) (:foreground "Black" :background "cyan"))
+ (t (:underline t :stipple "gray3"))))
"Face for highlighting the refinement of the selected diff in buffer B."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1022,11 +1059,20 @@ this variable represents.")
(ediff-hide-face 'ediff-fine-diff-face-B)
(defface ediff-fine-diff-face-C
- '((((type tty)) (:foreground "yellow3" :background "Turquoise"
- :weight bold))
- (((type pc)) (:foreground "white" :background "Turquoise"))
- (((class color)) (:foreground "Black" :background "Turquoise"))
- (t (:underline t :stipple "gray3")))
+ (if ediff-emacs-p
+ '((((type pc))
+ (:foreground "white" :background "Turquoise"))
+ (((class color) (min-colors 16))
+ (:foreground "Black" :background "Turquoise"))
+ (((class color))
+ (:foreground "yellow3" :background "Turquoise"
+ :weight bold))
+ (t (:underline t :stipple "gray3")))
+ '((((type tty)) (:foreground "yellow3" :background "Turquoise"
+ :weight bold))
+ (((type pc)) (:foreground "white" :background "Turquoise"))
+ (((class color)) (:foreground "Black" :background "Turquoise"))
+ (t (:underline t :stipple "gray3"))))
"Face for highlighting the refinement of the selected diff in buffer C."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1039,9 +1085,15 @@ this variable represents.")
(ediff-hide-face 'ediff-fine-diff-face-C)
(defface ediff-fine-diff-face-Ancestor
- '((((type tty)) (:foreground "red3" :background "green"))
- (((class color)) (:foreground "Black" :background "Green"))
- (t (:underline t :stipple "gray3")))
+ (if ediff-emacs-p
+ '((((class color) (min-colors 16))
+ (:foreground "Black" :background "Green"))
+ (((class color))
+ (:foreground "red3" :background "green"))
+ (t (:underline t :stipple "gray3")))
+ '((((type tty)) (:foreground "red3" :background "green"))
+ (((class color)) (:foreground "Black" :background "Green"))
+ (t (:underline t :stipple "gray3"))))
"Face for highlighting the refinement of the selected diff in the ancestor buffer.
At present, this face is not used and no fine differences are computed for the
ancestor buffer."
@@ -1065,11 +1117,20 @@ this variable represents.")
(t "Stipple")))
(defface ediff-even-diff-face-A
- `((((type tty)) (:foreground "red3" :background "light grey"
- :weight bold))
- (((type pc)) (:foreground "green3" :background "light grey"))
- (((class color)) (:foreground "Black" :background "light grey"))
- (t (:italic t :stipple ,stipple-pixmap)))
+ (if ediff-emacs-p
+ `((((type pc))
+ (:foreground "green3" :background "light grey"))
+ (((class color) (min-colors 16))
+ (:foreground "Black" :background "light grey"))
+ (((class color))
+ (:foreground "red3" :background "light grey"
+ :weight bold))
+ (t (:italic t :stipple ,stipple-pixmap)))
+ `((((type tty)) (:foreground "red3" :background "light grey"
+ :weight bold))
+ (((type pc)) (:foreground "green3" :background "light grey"))
+ (((class color)) (:foreground "Black" :background "light grey"))
+ (t (:italic t :stipple ,stipple-pixmap))))
"Face for highlighting even-numbered non-current differences in buffer A."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1082,9 +1143,15 @@ this variable represents.")
(ediff-hide-face 'ediff-even-diff-face-A)
(defface ediff-even-diff-face-B
- `((((type tty)) (:foreground "blue3" :background "Grey" :weight bold))
- (((class color)) (:foreground "White" :background "Grey"))
- (t (:italic t :stipple ,stipple-pixmap)))
+ (if ediff-emacs-p
+ `((((class color) (min-colors 16))
+ (:foreground "White" :background "Grey"))
+ (((class color))
+ (:foreground "blue3" :background "Grey" :weight bold))
+ (t (:italic t :stipple ,stipple-pixmap)))
+ `((((type tty)) (:foreground "blue3" :background "Grey" :weight bold))
+ (((class color)) (:foreground "White" :background "Grey"))
+ (t (:italic t :stipple ,stipple-pixmap))))
"Face for highlighting even-numbered non-current differences in buffer B."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1097,11 +1164,20 @@ this variable represents.")
(ediff-hide-face 'ediff-even-diff-face-B)
(defface ediff-even-diff-face-C
- `((((type tty)) (:foreground "yellow3" :background "light grey"
- :weight bold))
- (((type pc)) (:foreground "yellow3" :background "light grey"))
- (((class color)) (:foreground "Black" :background "light grey"))
- (t (:italic t :stipple ,stipple-pixmap)))
+ (if ediff-emacs-p
+ `((((type pc))
+ (:foreground "yellow3" :background "light grey"))
+ (((class color) (min-colors 16))
+ (:foreground "Black" :background "light grey"))
+ (((class color))
+ (:foreground "yellow3" :background "light grey"
+ :weight bold))
+ (t (:italic t :stipple ,stipple-pixmap)))
+ `((((type tty)) (:foreground "yellow3" :background "light grey"
+ :weight bold))
+ (((type pc)) (:foreground "yellow3" :background "light grey"))
+ (((class color)) (:foreground "Black" :background "light grey"))
+ (t (:italic t :stipple ,stipple-pixmap))))
"Face for highlighting even-numbered non-current differences in buffer C."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1114,11 +1190,20 @@ this variable represents.")
(ediff-hide-face 'ediff-even-diff-face-C)
(defface ediff-even-diff-face-Ancestor
- `((((type tty)) (:foreground "cyan3" :background "light grey"
- :weight bold))
- (((type pc)) (:foreground "cyan3" :background "light grey"))
- (((class color)) (:foreground "White" :background "Grey"))
- (t (:italic t :stipple ,stipple-pixmap)))
+ (if ediff-emacs-p
+ `((((type pc))
+ (:foreground "cyan3" :background "light grey"))
+ (((class color) (min-colors 16))
+ (:foreground "White" :background "Grey"))
+ (((class color))
+ (:foreground "cyan3" :background "light grey"
+ :weight bold))
+ (t (:italic t :stipple ,stipple-pixmap)))
+ `((((type tty)) (:foreground "cyan3" :background "light grey"
+ :weight bold))
+ (((type pc)) (:foreground "cyan3" :background "light grey"))
+ (((class color)) (:foreground "White" :background "Grey"))
+ (t (:italic t :stipple ,stipple-pixmap))))
"Face for highlighting even-numbered non-current differences in the ancestor buffer."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1138,10 +1223,18 @@ this variable represents.")
(Ancestor . ediff-even-diff-face-Ancestor)))
(defface ediff-odd-diff-face-A
- '((((type tty)) (:foreground "red3" :background "black" :weight bold))
- (((type pc)) (:foreground "green3" :background "gray40"))
- (((class color)) (:foreground "White" :background "Grey"))
- (t (:italic t :stipple "gray1")))
+ (if ediff-emacs-p
+ '((((type pc))
+ (:foreground "green3" :background "gray40"))
+ (((class color) (min-colors 16))
+ (:foreground "White" :background "Grey"))
+ (((class color))
+ (:foreground "red3" :background "black" :weight bold))
+ (t (:italic t :stipple "gray1")))
+ '((((type tty)) (:foreground "red3" :background "black" :weight bold))
+ (((type pc)) (:foreground "green3" :background "gray40"))
+ (((class color)) (:foreground "White" :background "Grey"))
+ (t (:italic t :stipple "gray1"))))
"Face for highlighting odd-numbered non-current differences in buffer A."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1155,10 +1248,18 @@ this variable represents.")
(defface ediff-odd-diff-face-B
- '((((type tty)) (:foreground "cyan3" :background "black" :weight bold))
- (((type pc)) (:foreground "White" :background "gray40"))
- (((class color)) (:foreground "Black" :background "light grey"))
- (t (:italic t :stipple "gray1")))
+ (if ediff-emacs-p
+ '((((type pc))
+ (:foreground "White" :background "gray40"))
+ (((class color) (min-colors 16))
+ (:foreground "Black" :background "light grey"))
+ (((class color))
+ (:foreground "cyan3" :background "black" :weight bold))
+ (t (:italic t :stipple "gray1")))
+ '((((type tty)) (:foreground "cyan3" :background "black" :weight bold))
+ (((type pc)) (:foreground "White" :background "gray40"))
+ (((class color)) (:foreground "Black" :background "light grey"))
+ (t (:italic t :stipple "gray1"))))
"Face for highlighting odd-numbered non-current differences in buffer B."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1171,10 +1272,18 @@ this variable represents.")
(ediff-hide-face 'ediff-odd-diff-face-B)
(defface ediff-odd-diff-face-C
- '((((type tty)) (:foreground "yellow3" :background "black" :weight bold))
- (((type pc)) (:foreground "yellow3" :background "gray40"))
- (((class color)) (:foreground "White" :background "Grey"))
- (t (:italic t :stipple "gray1")))
+ (if ediff-emacs-p
+ '((((type pc))
+ (:foreground "yellow3" :background "gray40"))
+ (((class color) (min-colors 16))
+ (:foreground "White" :background "Grey"))
+ (((class color))
+ (:foreground "yellow3" :background "black" :weight bold))
+ (t (:italic t :stipple "gray1")))
+ '((((type tty)) (:foreground "yellow3" :background "black" :weight bold))
+ (((type pc)) (:foreground "yellow3" :background "gray40"))
+ (((class color)) (:foreground "White" :background "Grey"))
+ (t (:italic t :stipple "gray1"))))
"Face for highlighting odd-numbered non-current differences in buffer C."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1187,9 +1296,15 @@ this variable represents.")
(ediff-hide-face 'ediff-odd-diff-face-C)
(defface ediff-odd-diff-face-Ancestor
- '((((type tty)) (:foreground "green3" :background "black" :weight bold))
- (((class color)) (:foreground "cyan3" :background "gray40"))
- (t (:italic t :stipple "gray1")))
+ (if ediff-emacs-p
+ '((((class color) (min-colors 16))
+ (:foreground "cyan3" :background "gray40"))
+ (((class color))
+ (:foreground "green3" :background "black" :weight bold))
+ (t (:italic t :stipple "gray1")))
+ '((((type tty)) (:foreground "green3" :background "black" :weight bold))
+ (((class color)) (:foreground "cyan3" :background "gray40"))
+ (t (:italic t :stipple "gray1"))))
"Face for highlighting odd-numbered non-current differences in the ancestor buffer."
:group 'ediff-highlighting)
;; An internal variable. Ediff takes the face from here. When unhighlighting,
diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el
index 9730536ac37..c16b6113516 100644
--- a/lisp/eshell/esh-ext.el
+++ b/lisp/eshell/esh-ext.el
@@ -150,8 +150,8 @@ by the user on the command line."
(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 --git a/lisp/files.el b/lisp/files.el
index 5571ede9d3e..962fd483c2c 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -439,10 +439,7 @@ specified in a -*- line.")
"*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 @@ is specified, returning t if it is specified."
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 @@ is specified, returning t if it is specified."
(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 @@ is specified, returning t if it is specified."
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 @@ is considered risky."
((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 --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 46b673ce540..60ad776347c 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,6 +1,156 @@
+2004-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * mm-decode.el (mm-copy-to-buffer): Preserve the data's unibyteness.
+
+2004-09-20 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * 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 <Reiner.Steib@gmx.de>
- * 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 <jas@extundo.com>
@@ -9,7 +159,7 @@
2004-09-13 Reiner Steib <Reiner.Steib@gmx.de>
- * 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 <miles@gnu.ai.mit.edu>
@@ -17,10 +167,10 @@
2004-09-10 Teodor Zlatanov <tzz@lifelogs.com>
- * 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 <jas@extundo.com>
@@ -30,10 +180,9 @@
2004-09-08 Reiner Steib <Reiner.Steib@gmx.de>
* 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 --git a/lisp/gnus/binhex.el b/lisp/gnus/binhex.el
index 248e1c8d8e5..17103c1b4f3 100644
--- a/lisp/gnus/binhex.el
+++ b/lisp/gnus/binhex.el
@@ -50,6 +50,7 @@ input and write the converted data to its standard output."
(defcustom binhex-use-external
(executable-find binhex-decoder-program)
"*Use external binhex program."
+ :version "21.4"
:group 'gnus-extract
:type 'boolean)
diff --git a/lisp/gnus/deuglify.el b/lisp/gnus/deuglify.el
index 85d45cd3513..07e630d793b 100644
--- a/lisp/gnus/deuglify.el
+++ b/lisp/gnus/deuglify.el
@@ -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 --git a/lisp/gnus/flow-fill.el b/lisp/gnus/flow-fill.el
index 9f2ae5c98bd..a22f2a5af07 100644
--- a/lisp/gnus/flow-fill.el
+++ b/lisp/gnus/flow-fill.el
@@ -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 @@ This can be a Lisp expression or an integer."
"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 --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 2ab1fb0421d..4596c783d32 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -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 @@ If this is `ask' the hook will query the user."
(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 @@ enable expiration per categories, topics, and groups."
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 @@ When found, offer to remove them."
"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 --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 33833a8657b..5544c28f967 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -213,6 +213,7 @@ By default, if you set this t, then Gnus will display citations and
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 @@ If set, this variable overrides `gnus-unbuttonized-mime-types'.
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 @@ This variable is only used when `gnus-inhibit-mime-unbuttonizing' is nil."
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 @@ be controlled by `gnus-treat-body-boundary'."
"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 @@ See Info node `(gnus)Customizing Articles' for details."
"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 @@ See Info node `(gnus)Customizing Articles' for details."
"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 @@ See Info node `(gnus)Customizing Articles' for details."
"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 @@ See Info node `(gnus)Customizing Articles' for details."
"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 @@ See Info node `(gnus)Customizing Articles' for details."
"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 @@ Valid values are nil, t, `head', `last', an integer or a predicate.
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 @@ See Info node `(gnus)Customizing Articles' and Info node
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 @@ See Info node `(gnus)Customizing Articles' and Info node
"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 @@ See Info node `(gnus)Customizing Articles' for details."
"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 @@ See Info node `(gnus)Customizing Articles' for details."
(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 @@ It is a string, such as \"PGP\". If nil, ask user."
(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 @@ If t, it overrides nil values of
(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 t, it overrides nil values of
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 @@ groups."
(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 @@ groups."
"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 @@ man page."
If the default site is too slow, try to find a CTAN mirror, see
<URL:http://tug.ctan.org/tex-archive/CTAN.sites?action=/index.html>. 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 @@ the variable `gnus-button-handle-ctan'."
(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 @@ The function must take one argument, the string naming the URL."
"\\)")
"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 @@ It should match all directories in the top level of `gnus-ctan-url'."
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 @@ message ID or a mail address, respectively. If this variable is set to the
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 @@ must return `mid', `mail', `invalid' or `ask'."
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 @@ positives are possible. Note that you can set this variable local to
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 @@ positives are possible. Note that you can set this variable local to
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 @@ positives are possible. Note that you can set this variable local to
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 @@ probably a good idea. See Info node `(gnus)Group Parameters' and the variable
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 @@ positives are possible."
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 --git a/lisp/gnus/gnus-cite.el b/lisp/gnus/gnus-cite.el
index 51617918a4c..bf9f5863428 100644
--- a/lisp/gnus/gnus-cite.el
+++ b/lisp/gnus/gnus-cite.el
@@ -278,6 +278,7 @@ This should make it easier to see who wrote what."
(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 @@ This should make it easier to see who wrote what."
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 --git a/lisp/gnus/gnus-delay.el b/lisp/gnus/gnus-delay.el
index b6392772773..ee431076fad 100644
--- a/lisp/gnus/gnus-delay.el
+++ b/lisp/gnus/gnus-delay.el
@@ -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 --git a/lisp/gnus/gnus-fun.el b/lisp/gnus/gnus-fun.el
index 21a5b1c55b4..087c30da5df 100644
--- a/lisp/gnus/gnus-fun.el
+++ b/lisp/gnus/gnus-fun.el
@@ -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 @@ on stdout."
"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 --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 96d1a864f13..9f7b259e066 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -435,6 +435,7 @@ For example:
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 @@ Same as `gnus-large-newsgroup', but only used for ephemeral newsgroups.
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 --git a/lisp/gnus/gnus-int.el b/lisp/gnus/gnus-int.el
index fc0d7f192ee..2363c2705cb 100644
--- a/lisp/gnus/gnus-int.el
+++ b/lisp/gnus/gnus-int.el
@@ -46,6 +46,7 @@ If the server is covered by Gnus agent, the possible values are
`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 --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index 0b66c508767..f986e451c02 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -142,7 +142,7 @@ See Info node `(gnus)Posting Styles'."
(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 @@ See Info node `(gnus)Posting Styles'."
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 @@ List of charsets that are permitted to be unencoded.")
"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 @@ List of charsets that are permitted to be unencoded.")
'(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 @@ List of charsets that are permitted to be unencoded.")
'(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 @@ This can also be a function receiving the group name as the only
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 @@ matches the regexp."
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 --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el
index de59e862ebc..370ef00eb49 100644
--- a/lisp/gnus/gnus-score.el
+++ b/lisp/gnus/gnus-score.el
@@ -237,6 +237,7 @@ This variable allows the same syntax as `gnus-home-score-file'."
(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 --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el
index 775bdc485af..7fef378722a 100644
--- a/lisp/gnus/gnus-srvr.el
+++ b/lisp/gnus/gnus-srvr.el
@@ -71,6 +71,7 @@ See Info node `(gnus)Formatting Variables'."
(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 @@ If nil, a faster, but more primitive, buffer is used instead."
(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 --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index 217295b307b..18641b3a37f 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -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 @@ variable."
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 --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 0546d6cdff6..7ecc7eb19b9 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -118,6 +118,7 @@ given by the `gnus-summary-same-subject' variable.)"
(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 @@ If this variable is nil, scoring will be disabled."
"*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 @@ than this score."
"*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 @@ the first unseen article), 'unseen-or-unread' (place point on the subject
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 @@ ignores articles whose headers have not been fetched).
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 @@ this variable specifies group names."
(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 @@ this variable specifies group names."
(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 @@ automatically when it is selected."
(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 @@ type of files to save."
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 @@ the MIME-Version header is missed."
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 @@ Unscored articles will be counted as having a score of zero."
(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 --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 472f02afa55..22db7ecd6d1 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1163,7 +1163,7 @@ Return the modified alist."
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 --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index eaa77f02e90..3b7c8c916d8 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -963,6 +963,7 @@ For example:
(\"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 @@ face."
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 @@ covered by that variable."
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 @@ It can be one of the symbols `gnus' \(show only Gnus version\), `emacs-gnus'
`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 --git a/lisp/gnus/imap.el b/lisp/gnus/imap.el
index f53aeb32ca1..754473fa8ec 100644
--- a/lisp/gnus/imap.el
+++ b/lisp/gnus/imap.el
@@ -227,7 +227,8 @@ used to communicate with subprocesses. Values are nil to use a
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 --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index 3c055c82000..b35cd1d0448 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -235,7 +235,10 @@ See Info node `(gnus)Mail Source Specifiers'."
(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 @@ files older than number of days."
"*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 @@ number."
(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 --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 0e74da73b7d..21c386b86ce 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -135,6 +135,7 @@ mailbox format."
(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 @@ Otherwise, most addresses look like `angles', but they look like
(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 @@ Checks include `subject-cmsg', `multiple-headers', `sendsys',
"*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 @@ Also see `message-required-news-headers' and
(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 @@ the user what do do. In this case, the subject is matched against
`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 @@ the variable is t instead of `ask', use
`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 @@ If `message-subject-trailing-was-query' is set to t, the subject is
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 @@ few false positives here."
(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 @@ few false positives here."
(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 @@ few false positives here."
"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 @@ Archives \(such as groups.google.com\) respect this header."
"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, don't insert any text in the body."
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 @@ you can explicitly override this setting by calling
(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 @@ you can explicitly override this setting by calling
(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 @@ you can explicitly override this setting by calling
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 @@ always query the user whether to use the value. If it is the symbol
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 @@ If non-nil, this variable contains a list of functions which return
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 @@ conjunction with `message-subscribed-regexps' and
"*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 @@ non-nil, each line of this file should be a mailing list address."
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 @@ addresses can be used in conjunction with
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 @@ regular expressions can be used in conjunction with
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 @@ See also `message-yank-cited-prefix'."
"*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 @@ If nil, don't insert a signature."
;;;###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 @@ candidates:
"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 @@ subaddresses. So if the first address appears in the recipient list
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 @@ downcased."
"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 @@ If this variable is non-nil, pose the question \"Reply to all
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 @@ no, only reply back to the author."
(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 @@ no, only reply back to the author."
"\\)")
"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 @@ these properties from the message composition buffer. However, some
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 @@ prefix FORCE is given."
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 @@ than 988 characters long, and if they are not, trim them until they are."
(defcustom message-beginning-of-line t
"Whether \\<message-mode-map>\\[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 @@ which specify the range to operate on."
(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 --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index c396789957c..ff05393415d 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -115,6 +115,7 @@ The defined renderer types are:
`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 @@ nil : use external viewer."
(const html2text)
(const nil)
(function))
- :version "21.3"
:group 'mime-display)
(defvar mm-inline-text-html-renderer nil
@@ -134,6 +134,7 @@ It is suggested to customize `mm-text-html-renderer' instead.")
"If non-nil, Gnus will allow retrieving images in HTML contents with
the <img> 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 @@ type inline."
"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 @@ If not set, `default-directory' will be used."
(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 @@ If not set, `default-directory' will be used."
"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 @@ Postpone undisplaying of viewers for types in
"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 @@ If RECURSIVE, search recursively."
(provide 'mm-decode)
-;;; arch-tag: 4f35d360-56b8-4030-9388-3ed82d359b9b
+;; arch-tag: 4f35d360-56b8-4030-9388-3ed82d359b9b
;;; mm-decode.el ends here
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index 4e6c7069b38..55c3fd33bc2 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -287,6 +287,7 @@ More than one suitable coding system may be found for some text.
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 --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index 4b083ee461b..21633fb4152 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -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 @@ These parameters are generated in Content-Type header if exists."
'(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 --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 19abb629a1d..56272a1472b 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -211,6 +211,7 @@ variable is the symbol `default' the default behaviour is
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 @@ will be downloaded."
(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 @@ However, it increases speed."
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 @@ more carefully for new mail.
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 --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index bebf7ceaf07..c1a23d8ca9b 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -224,6 +224,7 @@ From header will be expired to the group \"nnfolder:Work\";
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 @@ parameter. It should return nil, `warn' or `delete'."
(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 --git a/lisp/gnus/pgg-def.el b/lisp/gnus/pgg-def.el
index b5228676475..b8d9cbec807 100644
--- a/lisp/gnus/pgg-def.el
+++ b/lisp/gnus/pgg-def.el
@@ -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 --git a/lisp/gnus/sha1.el b/lisp/gnus/sha1.el
index c71a135c551..a9b68805d3f 100644
--- a/lisp/gnus/sha1.el
+++ b/lisp/gnus/sha1.el
@@ -82,6 +82,7 @@ It must be a string \(program name\) or list of strings \(name and its args\)."
(error))
"*Use external SHA1 program.
If this variable is set to nil, use internal function only."
+ :version "21.4"
:type 'boolean
:group 'sha1)
diff --git a/lisp/gnus/smiley.el b/lisp/gnus/smiley.el
index d41aea1d4ce..4564db294f1 100644
--- a/lisp/gnus/smiley.el
+++ b/lisp/gnus/smiley.el
@@ -78,6 +78,7 @@ regexp to replace with IMAGE. IMAGE is the name of a PBM file in
(push "xpm" types))
types)
"*List of suffixes on picon file names to try."
+ :version "21.4"
:type '(repeat string)
:group 'smiley)
diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el
index a1f9e902577..954447702bd 100644
--- a/lisp/gnus/smime.el
+++ b/lisp/gnus/smime.el
@@ -150,6 +150,7 @@ certificate."
(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 @@ and the files themself should be in PEM format."
(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 @@ At least OpenSSL version 0.9.7 is required for this to work."
(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 --git a/lisp/gnus/uudecode.el b/lisp/gnus/uudecode.el
index 086ece1cfd4..c969dfa17a1 100644
--- a/lisp/gnus/uudecode.el
+++ b/lisp/gnus/uudecode.el
@@ -51,6 +51,7 @@ input and write the converted data to its standard output."
(defcustom uudecode-use-external
(executable-find uudecode-decoder-program)
"*Use external uudecode program."
+ :version "21.4"
:group 'gnus-extract
:type 'boolean)
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index b7e6741e9d4..5d24964362a 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -1018,7 +1018,8 @@ currently used by buffers."
(ibuffer-awhen (with-current-buffer buf
(or buffer-file-name
(and (boundp 'dired-directory)
- dired-directory)))
+ dired-directory
+ (expand-file-name dired-directory))))
(string-match qualifier it)))
;;;###autoload (autoload 'ibuffer-filter-by-size-gt "ibuf-ext.el")
diff --git a/lisp/indent.el b/lisp/indent.el
index 2d223b05ad6..3f423adbace 100644
--- a/lisp/indent.el
+++ b/lisp/indent.el
@@ -164,14 +164,18 @@ interactively or with optional argument FORCE, it will be fixed."
(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 --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el
index 40c43af5823..af7f8b62e03 100644
--- a/lisp/mail/supercite.el
+++ b/lisp/mail/supercite.el
@@ -2,7 +2,7 @@
;; Copyright (C) 1993, 1997, 2003 Free Software Foundation, Inc.
-;; Author: 1993 Barry A. Warsaw, Century Computing, Inc. <bwarsaw@cen.com>
+;; Author: 1993 Barry A. Warsaw <bwarsaw@python.org>
;; Maintainer: FSF
;; Created: February 1993
;; Last Modified: 1993/09/22 18:58:46
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index 202dac361e7..581a070134d 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -567,7 +567,7 @@ If your system's ping continues until interrupted, you can try setting
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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 --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index c887b144965..99138444f7c 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -1028,7 +1028,7 @@ definition and conveniently use this command."
(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 --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index fea1f35a004..7e6a1806fd7 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -421,6 +421,7 @@ This is buffer-local in every such buffer.")
?^ "_"
?~ "_"
?, "_"
+ ?= "."
?< "."
?> ".")
"Default syntax table for shell mode.")
diff --git a/lisp/simple.el b/lisp/simple.el
index 899534a899a..1e6e49012e1 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -282,7 +282,8 @@ location."
"Major mode not specialized for anything in particular.
Other major modes are defined by comparison with this one."
(interactive)
- (kill-all-local-variables))
+ (kill-all-local-variables)
+ (run-hooks 'after-change-major-mode-hook))
;; Making and deleting lines.
diff --git a/lisp/startup.el b/lisp/startup.el
index 85e707bcc3f..5e9247d483b 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -810,9 +810,14 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
((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 --git a/lisp/subr.el b/lisp/subr.el
index 28e502d1a70..bed5489a1dd 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1,7 +1,7 @@
;;; subr.el --- basic lisp subroutines for Emacs
-;; Copyright (C) 1985, 86, 92, 94, 95, 99, 2000, 2001, 2002, 03, 2004
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1992, 1994, 1995, 1999, 2000, 2001, 2002, 2003,
+;; 2004 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -683,7 +683,7 @@ in the current Emacs session, then this function may return nil."
(setq event (car event)))
(if (symbolp event)
(car (get event 'event-symbol-elements))
- (let ((base (logand event (1- (lsh 1 18)))))
+ (let ((base (logand event (1- ?\A-\^@))))
(downcase (if (< base 32) (logior base 64) base)))))
(defsubst mouse-movement-p (object)
@@ -1937,9 +1937,15 @@ in BODY."
(make-variable-buffer-local 'delayed-mode-hooks)
(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.")
+
(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.
@@ -1948,7 +1954,8 @@ Major mode functions should use this."
;; 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)
- (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'.
@@ -2644,5 +2651,5 @@ The properties used on SYMBOL are `composefunc', `sendfunc',
(put symbol 'abortfunc (or abortfunc 'kill-buffer))
(put symbol 'hookvar (or hookvar 'mail-send-hook)))
-;;; arch-tag: f7e0e6e5-70aa-4897-ae72-7a3511ec40bc
+;; arch-tag: f7e0e6e5-70aa-4897-ae72-7a3511ec40bc
;;; subr.el ends here
diff --git a/lisp/term.el b/lisp/term.el
index f8b21fbce88..7991e74c5e9 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -396,7 +396,7 @@
;; This is passed to the inferior in the EMACS environment variable,
;; so it is important to increase it if there are protocol-relevant changes.
-(defconst term-protocol-version "0.95")
+(defconst term-protocol-version "0.96")
(eval-when-compile
(require 'ange-ftp))
@@ -457,7 +457,7 @@
;; we want suppressed.
(defvar term-terminal-parameter)
(defvar term-terminal-previous-parameter)
-(defvar term-current-face 'term-default)
+(defvar term-current-face 'default)
(defvar term-scroll-start 0) ;; Top-most line (inclusive) of scrolling region.
(defvar term-scroll-end) ;; Number of line (zero-based) after scrolling region.
(defvar term-pager-count nil) ;; If nil, paging is disabled.
@@ -1363,11 +1363,14 @@ The main purpose is to get rid of the local keymap."
(defvar term-termcap-format
"%s%s:li#%d:co#%d:cl=\\E[H\\E[J:cd=\\E[J:bs:am:xn:cm=\\E[%%i%%d;%%dH\
:nd=\\E[C:up=\\E[A:ce=\\E[K:ho=\\E[H:pt\
-:al=\\E[L:dl=\\E[M:DL=\\E[%%dM:AL=\\E[%%dL:cs=\\E[%%i%%d;%%dr:sf=\\n\
+:al=\\E[L:dl=\\E[M:DL=\\E[%%dM:AL=\\E[%%dL:cs=\\E[%%i%%d;%%dr:sf=^J\
:te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
:dc=\\E[P:DC=\\E[%%dP:IC=\\E[%%d@:im=\\E[4h:ei=\\E[4l:mi:\
:so=\\E[7m:se=\\E[m:us=\\E[4m:ue=\\E[m:md=\\E[1m:mr=\\E[7m:me=\\E[m\
-:UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC"
+:UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC\
+:kl=\\EOD:kd=\\EOB:kr=\\EOC:ku=\\EOA:kN=\\E[6~:kP=\\E[5~:@7=\\E[4~:kh=\\E[1~\
+:mk=\\E[8m:cb=\\E[1K:op=\\E[39;49m:Co#8:pa#64:AB=\\E[4%%dm:AF=\\E[3%%dm:cr=^M\
+:bl=^G:do=^J:le=^H:ta=^I:se=\E[27m:ue=\E24m:"
;;; : -undefine ic
"termcap capabilities supported")
@@ -1384,10 +1387,9 @@ The main purpose is to get rid of the local keymap."
(nconc
(list
(format "TERM=%s" term-term-name)
- (if (and (boundp 'system-uses-terminfo) system-uses-terminfo)
- (format "TERMINFO=%s" data-directory)
- (format term-termcap-format "TERMCAP="
- term-term-name term-height term-width))
+ (format "TERMINFO=%s" data-directory)
+ (format term-termcap-format "TERMCAP="
+ term-term-name term-height term-width)
;; Breaks `./configure' of w3 and url which try to run $EMACS.
(format "EMACS=%s (term:%s)" emacs-version term-protocol-version)
(format "LINES=%d" term-height)
@@ -1407,18 +1409,6 @@ if [ $1 = .. ]; then shift; fi; exec \"$@\""
".."
command switches)))
-;;; This should be in Emacs, but it isn't.
-(defun term-mem (item list &optional elt=)
- "Test to see if ITEM is equal to an item in LIST.
-Option comparison function ELT= defaults to equal."
- (let ((elt= (or elt= (function equal)))
- (done nil))
- (while (and list (not done))
- (if (funcall elt= item (car list))
- (setq done list)
- (setq list (cdr list))))
- done))
-
;;; Input history processing in a buffer
;;; ===========================================================================
@@ -2643,314 +2633,310 @@ See `term-prompt-regexp'."
;;; 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)))
@@ -2988,6 +2974,14 @@ See `term-prompt-regexp'."
((eq parameter 8)
(setq term-ansi-current-invisible 1))
+;;; Reset reverse (i.e. terminfo rmso)
+ ((eq parameter 24)
+ (setq term-ansi-current-reverse 0))
+
+;;; Reset underline (i.e. terminfo rmul)
+ ((eq parameter 27)
+ (setq term-ansi-current-underline 0))
+
;;; Foreground
((and (>= parameter 30) (<= parameter 37))
(setq term-ansi-current-color (- parameter 29)))
@@ -3042,9 +3036,13 @@ See `term-prompt-regexp'."
)
(setq term-current-face
(list :background
- (elt ansi-term-color-vector term-ansi-current-color)
+ (if (= term-ansi-current-color 0)
+ (face-foreground 'default)
+ (elt ansi-term-color-vector term-ansi-current-color))
:foreground
- (elt ansi-term-color-vector term-ansi-current-bg-color)))
+ (if (= term-ansi-current-bg-color 0)
+ (face-background 'default)
+ (elt ansi-term-color-vector term-ansi-current-bg-color))))
(if (= term-ansi-current-bold 1)
(setq term-current-face
(append '(:weight bold) term-current-face)))
@@ -3501,7 +3499,7 @@ all pending output has been dealt with."))
(if (and check-for-scroll (or term-scroll-with-delete term-pager-count))
(setq down (term-handle-scroll down)))
(term-adjust-current-row-cache down)
- (if (/= (point) (point-max))
+ (if (or (/= (point) (point-max)) (< down 0))
(setq down (- down (term-vertical-motion down))))
;; Extend buffer with extra blank lines if needed.
(cond ((> down 0)
diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el
index 531fe7d95df..f25bec2d841 100644
--- a/lisp/textmodes/enriched.el
+++ b/lisp/textmodes/enriched.el
@@ -1,6 +1,6 @@
;;; enriched.el --- read and save files in text/enriched format
-;; Copyright (c) 1994, 1995, 1996, 2002 Free Software Foundation, Inc.
+;; Copyright (c) 1994, 1995, 1996, 2002, 2004 Free Software Foundation, Inc.
;; Author: Boris Goldowsky <boris@gnu.org>
;; Keywords: wp, faces
@@ -141,7 +141,6 @@ Any property that is neither on this list nor dealt with by
;;; Internal variables
-
(defcustom enriched-mode-hook nil
"Hook run after entering/leaving Enriched mode.
If you set variables in this hook, you should arrange for them to be restored
@@ -155,6 +154,11 @@ them and their old values to `enriched-old-bindings'."
The value is a list of \(VAR VALUE VAR VALUE...).")
(make-variable-buffer-local 'enriched-old-bindings)
+;; Technical internal variable. Bound to t if `enriched-mode' is
+;; being rerun by a major mode to allow it to restore buffer-local
+;; variables and to correctly update `enriched-old-bindings'.
+(defvar enriched-rerun-flag nil)
+
;;;
;;; Define the mode
;;;
@@ -181,23 +185,21 @@ Commands:
(while enriched-old-bindings
(set (pop enriched-old-bindings) (pop enriched-old-bindings))))
- ((memq 'text/enriched buffer-file-format)
+ ((and (memq 'text/enriched buffer-file-format)
+ (not enriched-rerun-flag))
;; Mode already on; do nothing.
nil)
(t ; Turn mode on
- (push 'text/enriched buffer-file-format)
+ (add-to-list 'buffer-file-format 'text/enriched)
;; Save old variable values before we change them.
;; These will be restored if we exit Enriched mode.
(setq enriched-old-bindings
(list 'buffer-display-table buffer-display-table
- 'indent-line-function indent-line-function
'default-text-properties default-text-properties))
- (make-local-variable 'indent-line-function)
(make-local-variable 'default-text-properties)
- (setq indent-line-function 'indent-to-left-margin ;WHY?? -sm
- buffer-display-table enriched-display-table)
- (use-hard-newlines 1 nil)
+ (setq buffer-display-table enriched-display-table)
+ (use-hard-newlines 1 (if enriched-rerun-flag 'never nil))
(let ((sticky (plist-get default-text-properties 'front-sticky))
(p enriched-par-props))
(dolist (x p)
@@ -207,6 +209,20 @@ Commands:
(plist-put default-text-properties
'front-sticky sticky)))))))
+(defun enriched-before-change-major-mode ()
+ (when enriched-mode
+ (while enriched-old-bindings
+ (set (pop enriched-old-bindings) (pop enriched-old-bindings)))))
+
+(add-hook 'change-major-mode-hook 'enriched-before-change-major-mode)
+
+(defun enriched-after-change-major-mode ()
+ (when enriched-mode
+ (let ((enriched-rerun-flag t))
+ (enriched-mode 1))))
+
+(add-hook 'after-change-major-mode-hook 'enriched-after-change-major-mode)
+
;;;
;;; Keybindings
;;;
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index e19df5d2ef6..69851ac5046 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,7 @@
+2004-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * url-handlers.el (url-insert-file-contents): Decode contents.
+
2004-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
* url-util.el (url-debug): Use with-current-buffer.
diff --git a/lisp/url/url-handlers.el b/lisp/url/url-handlers.el
index 6c540e8d61b..56497b00119 100644
--- a/lisp/url/url-handlers.el
+++ b/lisp/url/url-handlers.el
@@ -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 <wmperry@cs.indiana.edu>
;; Keywords: comm, data, processes, hypermedia
@@ -170,8 +170,7 @@ A prefix arg makes KEEP-TIME non-nil."
(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 @@ accessible."
(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)