aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKaroly Lorentey2004-10-19 17:00:02 +0000
committerKaroly Lorentey2004-10-19 17:00:02 +0000
commit90b404757b24ea0c88d6ec3ed9c1ccce07bbd19f (patch)
treeb5cb05f7c5d0c27537362072badf76355d363319 /lisp
parentec16044407f468aacda9eb031fb7267d5ee0f899 (diff)
parentd4c2c0eff81e7540cbb0a32ef10017285f68e1aa (diff)
downloademacs-90b404757b24ea0c88d6ec3ed9c1ccce07bbd19f.tar.gz
emacs-90b404757b24ea0c88d6ec3ed9c1ccce07bbd19f.zip
Merged in changes from CVS trunk.
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-616 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-617 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-618 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-619 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-620 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-621 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-622 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-623 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-624 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-625 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-51 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-52 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-53 Merge from emacs--cvs-trunk--0 git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-261
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog173
-rw-r--r--lisp/buff-menu.el61
-rw-r--r--lisp/calc/calc-help.el49
-rw-r--r--lisp/comint.el64
-rw-r--r--lisp/delsel.el2
-rw-r--r--lisp/emacs-lisp/bytecomp.el58
-rw-r--r--lisp/emacs-lisp/cl.el3
-rw-r--r--lisp/emacs-lisp/elp.el1
-rw-r--r--lisp/frame.el4
-rw-r--r--lisp/fringe.el23
-rw-r--r--lisp/gnus/ChangeLog34
-rw-r--r--lisp/gnus/gnus-registry.el2
-rw-r--r--lisp/gnus/message.el27
-rw-r--r--lisp/gnus/nnspool.el2
-rw-r--r--lisp/gnus/pop3.el40
-rw-r--r--lisp/gnus/spam-stat.el2
-rw-r--r--lisp/gnus/spam.el6
-rw-r--r--lisp/help-at-pt.el3
-rw-r--r--lisp/ibuffer.el28
-rw-r--r--lisp/info.el78
-rw-r--r--lisp/language/indian.el26
-rw-r--r--lisp/mouse.el19
-rw-r--r--lisp/msb.el1
-rw-r--r--lisp/net/password.el128
-rw-r--r--lisp/net/tramp.el77
-rw-r--r--lisp/newcomment.el1
-rw-r--r--lisp/outline.el2
-rw-r--r--lisp/paths.el21
-rw-r--r--lisp/pcvs-defs.el2
-rw-r--r--lisp/pcvs-util.el11
-rw-r--r--lisp/pcvs.el20
-rw-r--r--lisp/progmodes/compile.el182
-rw-r--r--lisp/server.el2
-rw-r--r--lisp/shadowfile.el2
-rw-r--r--lisp/startup.el6
-rw-r--r--lisp/strokes.el5
-rw-r--r--lisp/subr.el109
-rw-r--r--lisp/term.el3
-rw-r--r--lisp/textmodes/ispell.el25
-rw-r--r--lisp/url/ChangeLog22
-rw-r--r--lisp/url/url-auth.el8
-rw-r--r--lisp/url/url-gw.el2
-rw-r--r--lisp/url/url-mailto.el3
-rw-r--r--lisp/url/url-misc.el1
-rw-r--r--lisp/url/url-util.el6
-rw-r--r--lisp/url/url-vars.el37
-rw-r--r--lisp/url/url.el20
-rw-r--r--lisp/vc-arch.el4
-rw-r--r--lisp/vc-hooks.el4
-rw-r--r--lisp/view.el15
-rw-r--r--lisp/whitespace.el2
51 files changed, 935 insertions, 491 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 41606eb7e93..eaa71c4abad 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,10 +1,164 @@
12004-10-18 David Ponce <david@dponce.com>
2
3 * mouse.el (mouse-drag-move-window-top): New function.
4 (mouse-drag-mode-line-1): Use it.
5
62004-10-18 Thien-Thi Nguyen <ttn@gnu.org>
7
8 * info.el (Info-fontify-node): For multiline refs,
9 arrange to unfontify newline and surrounding whitespace.
10
112004-10-17 Stefan Monnier <monnier@iro.umontreal.ca>
12
13 * vc-arch.el (vc-arch-workfile-version): Don't burp if the patch-log
14 directory is missing.
15
162004-10-17 John Paul Wallington <jpw@gnu.org>
17
18 * ibuffer.el (ibuffer-default-display-maybe-show-predicates):
19 New customizable variable; whether to display buffers that match
20 `ibuffer-maybe-show-predicates' by default.
21 (ibuffer-maybe-show-predicates): Mention it in docstring.
22 (ibuffer-display-maybe-show-predicates): New variable.
23 (ibuffer-update): Prefix arg now toggles whether buffers that
24 match `ibuffer-maybe-show-predicates' should be displayed.
25 (ibuffer-mode): Set `ibuffer-display-maybe-show-predicates'
26 locally to heed `ibuffer-default-display-maybe-show-predicates'.
27 (ibuffer-redisplay-engine): Rename optional second arg to `ignore'.
28
292004-10-17 Michael Albinus <michael.albinus@gmx.de>
30
31 * net/tramp.el: Redo sync with Tramp 2.0.45. Last commit did not
32 work correctly.
33
342004-10-17 Daniel Pfeiffer <occitan@esperanto.org>
35
36 * buff-menu.el (Buffer-menu-revert-function): Emulate save-excursion.
37 (Buffer-menu-beginning): New helper function.
38 (Buffer-menu-execute): Use it.
39 (Buffer-menu-select): Use it.
40 (Buffer-menu-sort): Use it and also keep markers.
41
422004-10-17 Richard M. Stallman <rms@gnu.org>
43
44 * paths.el (news-directory): Rename from news-path. Old name alias.
45 (rmail-spool-directory): Use defvar.
46 (sendmail-program): Use defcustom.
47 (remote-shell-program): Use defcustom.
48 (term-file-prefix): Use defvar.
49 (abbrev-file-name): Use defvar.
50
51 * term.el: Add maintainer.
52
53 * subr.el (with-local-quit): Return nil if there's a quit.
54 (read-passwd): Use with-local-quit. Doc fix.
55
56 * strokes.el (strokes-list-strokes): Don't try to delete char at eob.
57 (strokes-unload-hook): Set as a variable with add-hook.
58
59 * startup.el (fancy-splash-tail, normal-splash-screen):
60 Update copyright year.
61
62 * shadowfile.el (shadowfile-unload-hook): Set as variable w/ add-hook.
63
64 * server.el (server-unload-hook): Set as a variable with add-hook.
65
66 * help-at-pt.el (help-at-pt-unload-hook): Use add-hook; no defvar.
67
68 * frame.el (special-display-popup-frame):
69 Make the buffer current as its frame is created.
70
71 * delsel.el (delsel-unload-hook): Set as a variable.
72
73 * comint.el (comint-output-filter-functions):
74 Add comint-watch-for-password-prompt.
75 (comint-read-noecho): Function deleted.
76 (send-invisible): Use read-passwd.
77
78 * fringe.el (fringe-mode-initialize): New function.
79 (fringe-mode): Use fringe-mode-initialize as :initialize.
80
812004-10-17 Kim F. Storm <storm@cua.dk>
82
83 * language/indian.el (indian-script-language-alist): Swap value and doc.
84 (indian-font-char-index-table): Doc fix.
85
862004-10-16 Stefan Monnier <monnier@iro.umontreal.ca>
87
88 * vc-hooks.el (vc-find-file-hook): Call vc-backend with absolute name.
89
902004-10-16 Juri Linkov <juri@jurta.org>
91
92 * progmodes/compile.el (compilation-start): Move let-binding of
93 `process-environment' into `with-current-buffer' body.
94 Reported by Matt Hodges <MPHodges@member.fsf.org>.
95
962004-10-16 Richard M. Stallman <rms@gnu.org>
97
98 * pcvs-util.el (cvs-bury-buffer):
99 Don't call get-buffer-window for effect.
100
101 * outline.el (hide-other): Call outline-up-heading with INVISIBLE-OK=t.
102
103 * newcomment.el (comment-auto-fill-only-comments): Add autoload.
104
105 * msb.el (msb-unload-hook): Set the variable.
106
107 * mouse.el (mouse-yank-at-click, mouse-yank-secondary):
108 Use * to err if buffer is readonly.
109
110 * subr.el (looking-back): Return only t or nil.
111
112 * whitespace.el (whitespace-unload-hook): Set the variable.
113
114 * view.el (view-mode-enable): Set view-page-size and
115 view-half-page-size to nil.
116 (view-set-half-page-size-default): view-half-page-size = nil
117 means the default.
118 (View-scroll-page-forward): Use view-page-size-default.
119 (View-scroll-page-backward): Likewise.
120 (view-page-size, view-half-page-size): Doc fixes.
121
122 * emacs-lisp/elp.el (elp-unload-hook): Set the variable.
123
124 * emacs-lisp/cl.el (cl-unload-hook): Don't defvar it, just set it.
125
126 * emacs-lisp/bytecomp.el (byte-compile-eval): Don't process
127 "cl" like other files. Instead, call byte-compile-find-cl-functions.
128 (byte-compile-log-1): Bind inhibit-read-only.
129 (byte-compile-warning-prefix, byte-compile-log-file): Likewise.
130 (byte-compile-log-warning): Likewise.
131 (byte-compile-file-form-require): Detect "cl" from the arg value.
132
133 * progmodes/compile.el (compilation-start): Assume compilation-mode
134 will make the buffer read-only.
135 (compilation-mode): Take arg name-of-mode.
136 (compilation-setup): Make buffer read-only.
137 (compilation-handle-exit): Bind inhibit-read-only.
138
139 * textmodes/ispell.el (ispell-command-loop): Use with-no-warnings.
140 (ispell-message): Likewise.
141 (ispell-show-choices): Don't call get-buffer-window uselessly.
142 (ispell-init-process): Use set-process-query-on-exit-flag.
143
1442004-10-16 Kim F. Storm <storm@cua.dk>
145
146 * fringe.el (fringe-bitmaps): Only initialize when defined.
147
148 * pcvs.el (cvs-mode-view-file, cvs-mode-view-file-other-window): Add.
149 (cvs-mode-find-file): Add optional `view' arg to enter view mode.
150
151 * pcvs-defs.el (cvs-mode-map): Bind v to cvs-mode-view-file.
152
1532004-10-15 Simon Josefsson <jas@extundo.com>
154
155 * net/password.el: Add.
156
12004-10-13 Daniel Pfeiffer <occitan@esperanto.org> 1572004-10-13 Daniel Pfeiffer <occitan@esperanto.org>
2 158
3 * button.el (button-activate): Allow a marker to display as an 159 * button.el (button-activate): Allow a marker to display as an action.
4 action.
5 160
6 * help-fns.el (describe-variable): Use it to make "below" a 161 * help-fns.el (describe-variable): Use it to make "below" a hyperlink.
7 hyperlink.
8 162
9 * help.el (describe-mode): Use it to make minor mode list into 163 * help.el (describe-mode): Use it to make minor mode list into
10 hyperlinks. 164 hyperlinks.
@@ -25,6 +179,15 @@
25 (event-modifiers): Use push. 179 (event-modifiers): Use push.
26 (mouse-movement-p, with-temp-buffer): Simplify. 180 (mouse-movement-p, with-temp-buffer): Simplify.
27 181
1822004-10-12 Richard M. Stallman <rms@gnu.org>
183
184 * info-look.el (info-lookup-file): Add info-file property.
185 (info-lookup-symbol): Likewise.
186
187 * info.el (info-xref): Add underlining.
188 (info): Add info-file property.
189 (Info-find-emacs-command-nodes): Specify case-sensitive search.
190
282004-10-12 Michael Albinus <michael.albinus@gmx.de> 1912004-10-12 Michael Albinus <michael.albinus@gmx.de>
29 192
30 Sync with Tramp 2.0.45. 193 Sync with Tramp 2.0.45.
@@ -201,7 +364,7 @@
2012004-10-05 Juri Linkov <juri@jurta.org> 3642004-10-05 Juri Linkov <juri@jurta.org>
202 365
203 * isearch.el (isearch-done): Set mark after running hook. 366 * isearch.el (isearch-done): Set mark after running hook.
204 Suggested by Drew Adams <drew.adams@oracle.com>. 367 Reported by Drew Adams <drew.adams@oracle.com>.
205 368
206 * info.el (Info-history, Info-toc): Fix Info headers. 369 * info.el (Info-history, Info-toc): Fix Info headers.
207 (Info-toc): Narrow buffer before Info-fontify-node. 370 (Info-toc): Narrow buffer before Info-fontify-node.
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 33a8c3ec3f5..da21f5336d8 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -197,9 +197,15 @@ Letters do not insert themselves; instead, they are commands.
197 197
198(defun Buffer-menu-revert-function (ignore1 ignore2) 198(defun Buffer-menu-revert-function (ignore1 ignore2)
199 ;; We can not use save-excursion here. The buffer gets erased. 199 ;; We can not use save-excursion here. The buffer gets erased.
200 (let ((old-point (point))) 200 (let ((ocol (current-column))
201 (oline (progn (move-to-column 4)
202 (get-text-property (point) 'buffer)))
203 (prop (point-min)))
201 (list-buffers-noselect Buffer-menu-files-only) 204 (list-buffers-noselect Buffer-menu-files-only)
202 (goto-char old-point))) 205 (while (setq prop (next-single-property-change prop 'buffer))
206 (when (eq (get-text-property prop 'buffer) oline)
207 (goto-char prop)
208 (move-to-column ocol)))))
203 209
204(defun Buffer-menu-toggle-files-only (arg) 210(defun Buffer-menu-toggle-files-only (arg)
205 "Toggle whether the current buffer-menu displays only file buffers. 211 "Toggle whether the current buffer-menu displays only file buffers.
@@ -354,13 +360,16 @@ and then move up one line. Prefix arg means move that many lines."
354 (delete-char 1) 360 (delete-char 1)
355 (insert (if arg ?* ? )))))) 361 (insert (if arg ?* ? ))))))
356 362
363(defun Buffer-menu-beginning ()
364 (goto-char (point-min))
365 (unless Buffer-menu-use-header-line
366 (forward-line)))
367
357(defun Buffer-menu-execute () 368(defun Buffer-menu-execute ()
358 "Save and/or delete buffers marked with \\<Buffer-menu-mode-map>\\[Buffer-menu-save] or \\<Buffer-menu-mode-map>\\[Buffer-menu-delete] commands." 369 "Save and/or delete buffers marked with \\<Buffer-menu-mode-map>\\[Buffer-menu-save] or \\<Buffer-menu-mode-map>\\[Buffer-menu-delete] commands."
359 (interactive) 370 (interactive)
360 (save-excursion 371 (save-excursion
361 (goto-char (point-min)) 372 (Buffer-menu-beginning)
362 (unless Buffer-menu-use-header-line
363 (forward-line 1))
364 (while (re-search-forward "^..S" nil t) 373 (while (re-search-forward "^..S" nil t)
365 (let ((modp nil)) 374 (let ((modp nil))
366 (save-excursion 375 (save-excursion
@@ -371,9 +380,7 @@ and then move up one line. Prefix arg means move that many lines."
371 (delete-char -1) 380 (delete-char -1)
372 (insert (if modp ?* ? )))))) 381 (insert (if modp ?* ? ))))))
373 (save-excursion 382 (save-excursion
374 (goto-char (point-min)) 383 (Buffer-menu-beginning)
375 (unless Buffer-menu-use-header-line
376 (forward-line 1))
377 (let ((buff-menu-buffer (current-buffer)) 384 (let ((buff-menu-buffer (current-buffer))
378 (buffer-read-only nil)) 385 (buffer-read-only nil))
379 (while (re-search-forward "^D" nil t) 386 (while (re-search-forward "^D" nil t)
@@ -399,9 +406,7 @@ in the selected frame."
399 (menu (current-buffer)) 406 (menu (current-buffer))
400 (others ()) 407 (others ())
401 tem) 408 tem)
402 (goto-char (point-min)) 409 (Buffer-menu-beginning)
403 (unless Buffer-menu-use-header-line
404 (forward-line 1))
405 (while (re-search-forward "^>" nil t) 410 (while (re-search-forward "^>" nil t)
406 (setq tem (Buffer-menu-buffer t)) 411 (setq tem (Buffer-menu-buffer t))
407 (let ((buffer-read-only nil)) 412 (let ((buffer-read-only nil))
@@ -581,7 +586,35 @@ For more information, see the function `buffer-menu'."
581 (if (< column 2) (setq column 2)) 586 (if (< column 2) (setq column 2))
582 (if (> column 5) (setq column 5))) 587 (if (> column 5) (setq column 5)))
583 (setq Buffer-menu-sort-column column) 588 (setq Buffer-menu-sort-column column)
584 (Buffer-menu-revert)) 589 (let (buffer-read-only l buf m1 m2)
590 (save-excursion
591 (Buffer-menu-beginning)
592 (while (not (eobp))
593 (when (buffer-live-p (setq buf (get-text-property (+ (point) 4) 'buffer)))
594 (setq m1 (char-after)
595 m1 (if (memq m1 '(?> ?D)) m1)
596 m2 (char-after (+ (point) 2))
597 m2 (if (eq m2 ?S) m2))
598 (if (or m1 m2)
599 (push (list buf m1 m2) l)))
600 (forward-line)))
601 (Buffer-menu-revert)
602 (setq buffer-read-only)
603 (save-excursion
604 (Buffer-menu-beginning)
605 (while (not (eobp))
606 (when (setq buf (assq (get-text-property (+ (point) 4) 'buffer) l))
607 (setq m1 (cadr buf)
608 m2 (cadr (cdr buf)))
609 (when m1
610 (delete-char 1)
611 (insert m1)
612 (backward-char 1))
613 (when m2
614 (forward-char 2)
615 (delete-char 1)
616 (insert m2)))
617 (forward-line)))))
585 618
586(defun Buffer-menu-make-sort-button (name column) 619(defun Buffer-menu-make-sort-button (name column)
587 (if (equal column Buffer-menu-sort-column) (setq column nil)) 620 (if (equal column Buffer-menu-sort-column) (setq column nil))
@@ -592,7 +625,9 @@ For more information, see the function `buffer-menu'."
592 'mouse-face 'highlight 625 'mouse-face 'highlight
593 'keymap (let ((map (make-sparse-keymap))) 626 'keymap (let ((map (make-sparse-keymap)))
594 (define-key map [header-line mouse-2] 627 (define-key map [header-line mouse-2]
595 `(lambda () (interactive) 628 `(lambda (e)
629 (interactive "e")
630 (if e (set-buffer (window-buffer (posn-window (event-end e)))))
596 (Buffer-menu-sort ,column))) 631 (Buffer-menu-sort ,column)))
597 map))) 632 map)))
598 633
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el
index c24a13b91d7..c48ac23e8e5 100644
--- a/lisp/calc/calc-help.el
+++ b/lisp/calc/calc-help.el
@@ -112,34 +112,27 @@ C-w Describe how there is no warranty for Calc."
112 (describe-bindings) 112 (describe-bindings)
113 (save-excursion 113 (save-excursion
114 (set-buffer "*Help*") 114 (set-buffer "*Help*")
115 (goto-char (point-min)) 115 (let ((buffer-read-only nil))
116 (if (search-forward "Global bindings:" nil t) 116 (goto-char (point-min))
117 (delete-region (match-beginning 0) (point-max))) 117 (when (search-forward "Major Mode Bindings:" nil t)
118 (goto-char (point-min)) 118 (delete-region (point-min) (point))
119 (while (re-search-forward "\n[a-z] ESC" nil t) 119 (insert "Calc Mode Bindings:"))
120 (end-of-line) 120 (when (search-forward "Global bindings:" nil t)
121 (delete-region (match-beginning 0) (point))) 121 (forward-line -1)
122 (goto-char (point-min)) 122 (delete-region (point) (point-max)))
123 (while (re-search-forward "\nESC m" nil t) 123 (goto-char (point-min))
124 (end-of-line) 124 (while
125 (delete-region (match-beginning 0) (point))) 125 (re-search-forward
126 (goto-char (point-min)) 126 "\n[a-z] [0-9]\\( .*\n\\)\\([a-z] [0-9]\\1\\)*[a-z] \\([0-9]\\)\\1"
127 (while (search-forward "\n\n\n" nil t) 127 nil t)
128 (backward-delete-char 1) 128 (let ((dig1 (char-after (1- (match-beginning 1))))
129 (backward-char 2)) 129 (dig2 (char-after (match-beginning 3))))
130 (goto-char (point-min)) 130 (delete-region (match-end 1) (match-end 0))
131 (while 131 (goto-char (match-beginning 1))
132 (re-search-forward 132 (delete-backward-char 1)
133 "\n[a-z] [0-9]\\(\t\t.*\n\\)\\([a-z] [0-9]\\1\\)*[a-z] \\([0-9]\\)\\1" 133 (delete-char 5)
134 nil t) 134 (insert (format "%c .. %c" (min dig1 dig2) (max dig1 dig2)))))
135 (let ((dig1 (char-after (1- (match-beginning 1)))) 135 (goto-char (point-min)))))
136 (dig2 (char-after (match-beginning 3))))
137 (delete-region (match-end 1) (match-end 0))
138 (goto-char (match-beginning 1))
139 (delete-backward-char 1)
140 (delete-char 1)
141 (insert (format "%c .. %c" (min dig1 dig2) (max dig1 dig2)))))
142 (goto-char (point-min))))
143 136
144(defun calc-describe-key-briefly (key) 137(defun calc-describe-key-briefly (key)
145 (interactive "kDescribe key briefly: ") 138 (interactive "kDescribe key briefly: ")
diff --git a/lisp/comint.el b/lisp/comint.el
index 8b2c779ecd3..cfbd618c896 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -372,7 +372,7 @@ history list. Default is to save anything that isn't all whitespace.")
372 "Special hook run before input is sent to the process. 372 "Special hook run before input is sent to the process.
373These functions get one argument, a string containing the text to send.") 373These functions get one argument, a string containing the text to send.")
374 374
375(defvar comint-output-filter-functions '(comint-postoutput-scroll-to-bottom) 375(defvar comint-output-filter-functions '(comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)
376 "Functions to call after output is inserted into the buffer. 376 "Functions to call after output is inserted into the buffer.
377One possible function is `comint-postoutput-scroll-to-bottom'. 377One possible function is `comint-postoutput-scroll-to-bottom'.
378These functions get one argument, a string containing the text as originally 378These functions get one argument, a string containing the text as originally
@@ -1901,65 +1901,7 @@ prompt skip is done by skipping text matching the regular expression
1901 1901
1902;; These three functions are for entering text you don't want echoed or 1902;; These three functions are for entering text you don't want echoed or
1903;; saved -- typically passwords to ftp, telnet, or somesuch. 1903;; saved -- typically passwords to ftp, telnet, or somesuch.
1904;; Just enter m-x send-invisible and type in your line, or add 1904;; Just enter m-x send-invisible and type in your line.
1905;; `comint-watch-for-password-prompt' to `comint-output-filter-functions'.
1906
1907(defun comint-read-noecho (prompt &optional stars)
1908 "Read a single line of text from user without echoing, and return it.
1909Prompt with argument PROMPT, a string. Optional argument STARS causes
1910input to be echoed with '*' characters on the prompt line. Input ends with
1911RET, LFD, or ESC. DEL or C-h rubs out. C-u kills line. C-g aborts (if
1912`inhibit-quit' is set because e.g. this function was called from a process
1913filter and C-g is pressed, this function returns nil rather than a string).
1914
1915Note that the keystrokes comprising the text can still be recovered
1916\(temporarily) with \\[view-lossage]. Some people find this worrisome (see,
1917however, `clear-this-command-keys').
1918Once the caller uses the password, it can erase the password
1919by doing (clear-string STRING)."
1920 (let ((ans "")
1921 (newans nil)
1922 (c 0)
1923 (echo-keystrokes 0)
1924 (cursor-in-echo-area t)
1925 (message-log-max nil)
1926 (done nil))
1927 (while (not done)
1928 (if stars
1929 (message "%s%s" prompt (make-string (length ans) ?*))
1930 (message "%s" prompt))
1931 ;; Use this instead of `read-char' to avoid "Non-character input-event".
1932 (setq c (read-char-exclusive))
1933 (cond ((= c ?\C-g)
1934 ;; This function may get called from a process filter, where
1935 ;; inhibit-quit is set. In later versions of emacs read-char
1936 ;; may clear quit-flag itself and return C-g. That would make
1937 ;; it impossible to quit this loop in a simple way, so
1938 ;; re-enable it here (for backward-compatibility the check for
1939 ;; quit-flag below would still be necessary, so this seems
1940 ;; like the simplest way to do things).
1941 (setq quit-flag t
1942 done t))
1943 ((or (= c ?\r) (= c ?\n) (= c ?\e))
1944 (setq done t))
1945 ((= c ?\C-u)
1946 (clear-string ans)
1947 (setq ans ""))
1948 ((and (/= c ?\b) (/= c ?\177))
1949 (setq newans (concat ans (char-to-string c)))
1950 (clear-string ans)
1951 (setq ans newans))
1952 ((> (length ans) 0)
1953 (aset ans (1- (length ans)) 0)
1954 (setq ans (substring ans 0 -1)))))
1955 (if quit-flag
1956 ;; Emulate a true quit, except that we have to return a value.
1957 (prog1
1958 (setq quit-flag nil)
1959 (message "Quit")
1960 (beep t))
1961 (message "")
1962 ans)))
1963 1905
1964(defun send-invisible (&optional prompt) 1906(defun send-invisible (&optional prompt)
1965 "Read a string without echoing. 1907 "Read a string without echoing.
@@ -1970,7 +1912,7 @@ Security bug: your string can still be temporarily recovered with
1970 (interactive "P") ; Defeat snooping via C-x ESC ESC 1912 (interactive "P") ; Defeat snooping via C-x ESC ESC
1971 (let ((proc (get-buffer-process (current-buffer)))) 1913 (let ((proc (get-buffer-process (current-buffer))))
1972 (if proc 1914 (if proc
1973 (let ((str (comint-read-noecho (or prompt "Non-echoed text: ") t))) 1915 (let ((str (read-passwd (or prompt "Non-echoed text: "))))
1974 (if (stringp str) 1916 (if (stringp str)
1975 (progn 1917 (progn
1976 (comint-snapshot-last-prompt) 1918 (comint-snapshot-last-prompt)
diff --git a/lisp/delsel.el b/lisp/delsel.el
index d8e034a5f9f..962fa156a07 100644
--- a/lisp/delsel.el
+++ b/lisp/delsel.el
@@ -147,6 +147,8 @@ then it takes a second \\[keyboard-quit] to abort the minibuffer."
147 (define-key minibuffer-local-must-match-map "\C-g" 'abort-recursive-edit) 147 (define-key minibuffer-local-must-match-map "\C-g" 'abort-recursive-edit)
148 (define-key minibuffer-local-isearch-map "\C-g" 'abort-recursive-edit)) 148 (define-key minibuffer-local-isearch-map "\C-g" 'abort-recursive-edit))
149 149
150(add-hook 'delsel-unload-hook 'delsel-unload-hook)
151
150(provide 'delsel) 152(provide 'delsel)
151 153
152;;; arch-tag: 1e388890-1b50-4ed0-9347-763b1343b6ed 154;;; arch-tag: 1e388890-1b50-4ed0-9347-763b1343b6ed
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 2b0a8e698a6..118352937bd 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -792,7 +792,8 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
792 (let ((xs (pop hist-new)) 792 (let ((xs (pop hist-new))
793 old-autoloads) 793 old-autoloads)
794 ;; Make sure the file was not already loaded before. 794 ;; Make sure the file was not already loaded before.
795 (unless (assoc (car xs) hist-orig) 795 (unless (or (assoc (car xs) hist-orig)
796 (equal (car xs) "cl"))
796 (dolist (s xs) 797 (dolist (s xs)
797 (cond 798 (cond
798 ((symbolp s) 799 ((symbolp s)
@@ -809,7 +810,18 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
809 (when (and (symbolp s) (not (memq s old-autoloads))) 810 (when (and (symbolp s) (not (memq s old-autoloads)))
810 (push s byte-compile-noruntime-functions)) 811 (push s byte-compile-noruntime-functions))
811 (when (and (consp s) (eq t (car s))) 812 (when (and (consp s) (eq t (car s)))
812 (push (cdr s) old-autoloads)))))))))) 813 (push (cdr s) old-autoloads)))))))
814 (when (memq 'cl-functions byte-compile-warnings)
815 (let ((hist-new load-history)
816 (hist-nil-new current-load-list))
817 ;; Go through load-history, look for newly loaded files
818 ;; and mark all the functions defined therein.
819 (while (and hist-new (not (eq hist-new hist-orig)))
820 (let ((xs (pop hist-new))
821 old-autoloads)
822 ;; Make sure the file was not already loaded before.
823 (when (and (equal (car xs) "cl") (not (assoc (car xs) hist-orig)))
824 (byte-compile-find-cl-functions)))))))))
813 825
814(defun byte-compile-eval-before-compile (form) 826(defun byte-compile-eval-before-compile (form)
815 "Evaluate FORM for `eval-and-compile'." 827 "Evaluate FORM for `eval-and-compile'."
@@ -848,12 +860,13 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
848;; Log something that isn't a warning. 860;; Log something that isn't a warning.
849(defun byte-compile-log-1 (string) 861(defun byte-compile-log-1 (string)
850 (with-current-buffer "*Compile-Log*" 862 (with-current-buffer "*Compile-Log*"
851 (goto-char (point-max)) 863 (let ((inhibit-read-only t))
852 (byte-compile-warning-prefix nil nil) 864 (goto-char (point-max))
853 (cond (noninteractive 865 (byte-compile-warning-prefix nil nil)
854 (message " %s" string)) 866 (cond (noninteractive
855 (t 867 (message " %s" string))
856 (insert (format "%s\n" string)))))) 868 (t
869 (insert (format "%s\n" string)))))))
857 870
858(defvar byte-compile-read-position nil 871(defvar byte-compile-read-position nil
859 "Character position we began the last `read' from.") 872 "Character position we began the last `read' from.")
@@ -904,7 +917,8 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
904;; This is used as warning-prefix for the compiler. 917;; This is used as warning-prefix for the compiler.
905;; It is always called with the warnings buffer current. 918;; It is always called with the warnings buffer current.
906(defun byte-compile-warning-prefix (level entry) 919(defun byte-compile-warning-prefix (level entry)
907 (let* ((dir default-directory) 920 (let* ((inhibit-read-only t)
921 (dir default-directory)
908 (file (cond ((stringp byte-compile-current-file) 922 (file (cond ((stringp byte-compile-current-file)
909 (format "%s:" (file-relative-name byte-compile-current-file dir))) 923 (format "%s:" (file-relative-name byte-compile-current-file dir)))
910 ((bufferp byte-compile-current-file) 924 ((bufferp byte-compile-current-file)
@@ -950,7 +964,8 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
950 (save-excursion 964 (save-excursion
951 (set-buffer (get-buffer-create "*Compile-Log*")) 965 (set-buffer (get-buffer-create "*Compile-Log*"))
952 (goto-char (point-max)) 966 (goto-char (point-max))
953 (let* ((dir (and byte-compile-current-file 967 (let* ((inhibit-read-only t)
968 (dir (and byte-compile-current-file
954 (file-name-directory byte-compile-current-file))) 969 (file-name-directory byte-compile-current-file)))
955 (was-same (equal default-directory dir)) 970 (was-same (equal default-directory dir))
956 pt) 971 pt)
@@ -984,7 +999,8 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
984(defun byte-compile-log-warning (string &optional fill level) 999(defun byte-compile-log-warning (string &optional fill level)
985 (let ((warning-prefix-function 'byte-compile-warning-prefix) 1000 (let ((warning-prefix-function 'byte-compile-warning-prefix)
986 (warning-type-format "") 1001 (warning-type-format "")
987 (warning-fill-prefix (if fill " "))) 1002 (warning-fill-prefix (if fill " "))
1003 (inhibit-read-only t))
988 (display-warning 'bytecomp string level "*Compile-Log*"))) 1004 (display-warning 'bytecomp string level "*Compile-Log*")))
989 1005
990(defun byte-compile-warn (format &rest args) 1006(defun byte-compile-warn (format &rest args)
@@ -2140,17 +2156,15 @@ list that represents a doc string reference.
2140 (setq tail (cdr tail)))) 2156 (setq tail (cdr tail))))
2141 form) 2157 form)
2142 2158
2143(put 'require 'byte-hunk-handler 'byte-compile-file-form-eval-boundary) 2159(put 'require 'byte-hunk-handler 'byte-compile-file-form-require)
2144(defun byte-compile-file-form-eval-boundary (form) 2160(defun byte-compile-file-form-require (form)
2145 (let ((old-load-list current-load-list)) 2161 (let ((old-load-list current-load-list)
2146 (eval form) 2162 (args (mapcar 'eval (cdr form))))
2147 ;; (require 'cl) turns off warnings for cl functions. 2163 (apply 'require args)
2148 (let ((tem current-load-list)) 2164 ;; Detech (require 'cl) in a way that works even if cl is already loaded.
2149 (while (not (eq tem old-load-list)) 2165 (if (member (car args) '("cl" cl))
2150 (when (equal (car tem) '(require . cl)) 2166 (setq byte-compile-warnings
2151 (setq byte-compile-warnings 2167 (remq 'cl-functions byte-compile-warnings))))
2152 (remq 'cl-functions byte-compile-warnings)))
2153 (setq tem (cdr tem)))))
2154 (byte-compile-keep-pending form 'byte-compile-normal-call)) 2168 (byte-compile-keep-pending form 'byte-compile-normal-call))
2155 2169
2156(put 'progn 'byte-hunk-handler 'byte-compile-file-form-progn) 2170(put 'progn 'byte-hunk-handler 'byte-compile-file-form-progn)
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index b098a467f9f..2f6c799f528 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -108,8 +108,7 @@ printer proceeds to the next function on the list.
108This variable is not used at present, but it is defined in hopes that 108This variable is not used at present, but it is defined in hopes that
109a future Emacs interpreter will be able to use it.") 109a future Emacs interpreter will be able to use it.")
110 110
111(defvar cl-unload-hook '(cl-cannot-unload) 111(add-hook 'cl-unload-hook 'cl-cannot-unload)
112 "Prevent unloading the feature `cl', since it does not work.")
113(defun cl-cannot-unload () 112(defun cl-cannot-unload ()
114 (error "Cannot unload the feature `cl'")) 113 (error "Cannot unload the feature `cl'"))
115 114
diff --git a/lisp/emacs-lisp/elp.el b/lisp/emacs-lisp/elp.el
index f8d41f200d2..17991067fab 100644
--- a/lisp/emacs-lisp/elp.el
+++ b/lisp/emacs-lisp/elp.el
@@ -626,6 +626,7 @@ displayed."
626 626
627(defun elp-unload-hook () 627(defun elp-unload-hook ()
628 (elp-restore-all)) 628 (elp-restore-all))
629(add-hook 'elp-unload-hook 'elp-unload-hook)
629 630
630(provide 'elp) 631(provide 'elp)
631 632
diff --git a/lisp/frame.el b/lisp/frame.el
index 12cc904d47d..3658cfc1879 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -153,7 +153,9 @@ Pass it BUFFER as first arg, and (cdr ARGS) gives the rest of the args."
153 ;; (set-window-dedicated-p window t) 153 ;; (set-window-dedicated-p window t)
154 window)) 154 window))
155 ;; If no window yet, make one in a new frame. 155 ;; If no window yet, make one in a new frame.
156 (let ((frame (make-frame (append args special-display-frame-alist)))) 156 (let ((frame
157 (with-current-buffer buffer
158 (make-frame (append args special-display-frame-alist)))))
157 (set-window-buffer (frame-selected-window frame) buffer) 159 (set-window-buffer (frame-selected-window frame) buffer)
158 (set-window-dedicated-p (frame-selected-window frame) t) 160 (set-window-dedicated-p (frame-selected-window frame) t)
159 (frame-selected-window frame)))))) 161 (frame-selected-window frame))))))
diff --git a/lisp/fringe.el b/lisp/fringe.el
index 07c93d39f40..f9ddd87931f 100644
--- a/lisp/fringe.el
+++ b/lisp/fringe.el
@@ -43,7 +43,8 @@
43 43
44(defvar fringe-bitmaps) 44(defvar fringe-bitmaps)
45 45
46(unless (get 'left-truncation 'fringe) 46(unless (or (not (boundp 'fringe-bitmaps))
47 (get 'left-truncation 'fringe))
47 (let ((bitmaps '(left-truncation right-truncation 48 (let ((bitmaps '(left-truncation right-truncation
48 up-arrow down-arrow 49 up-arrow down-arrow
49 continued-line continuation-line 50 continued-line continuation-line
@@ -112,6 +113,25 @@ See `fringe-mode' for possible values and their effect."
112 fringe-mode)))) 113 fringe-mode))))
113 (setq frames (cdr frames))))) 114 (setq frames (cdr frames)))))
114 115
116;; For initialization of fringe-mode, take account of changes
117;; made explicitly to default-frame-alist.
118(defun fringe-mode-initialize (symbol value)
119 (let* ((left-pair (assq 'left-fringe default-frame-alist))
120 (right-pair (assq 'right-fringe default-frame-alist))
121 (left (cdr left-pair))
122 (right (cdr right-pair)))
123 (if (or left-pair right-pair)
124 ;; If there's something in default-frame-alist for fringes,
125 ;; don't change it, but reflect that into the value of fringe-mode.
126 (progn
127 (setq fringe-mode (cons left right))
128 (if (equal fringe-mode '(nil . nil))
129 (setq fringe-mode nil))
130 (if (equal fringe-mode '(0 . 0))
131 (setq fringe-mode 0)))
132 ;; Otherwise impose the user-specified value of fringe-mode.
133 (custom-initialize-reset symbol value))))
134
115;;;###autoload 135;;;###autoload
116(defcustom fringe-mode nil 136(defcustom fringe-mode nil
117 "*Specify appearance of fringes on all frames. 137 "*Specify appearance of fringes on all frames.
@@ -138,6 +158,7 @@ you can use the interactive function `toggle-fringe'"
138 (integer :tag "Right width"))) 158 (integer :tag "Right width")))
139 :group 'frames 159 :group 'frames
140 :require 'fringe 160 :require 'fringe
161 :initialize 'fringe-mode-initialize
141 :set 'set-fringe-mode-1) 162 :set 'set-fringe-mode-1)
142 163
143(defun fringe-query-style (&optional all-frames) 164(defun fringe-query-style (&optional all-frames)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 292d36ce9e1..70f43183e28 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,33 @@
12004-10-17 Richard M. Stallman <rms@gnu.org>
2
3 * gnus-registry.el (gnus-registry-unload-hook):
4 Set as a variable with add-hook.
5
6 * nnspool.el (nnspool-spool-directory): Use news-directory instead
7 of news-path.
8
9 * spam-stat.el (spam-stat-unload-hook): Set as a variable w/ add-hook.
10
11 * spam.el: Delete duplicate `provide'.
12 (spam-unload-hook): Set as a variable with add-hook.
13
142004-10-15 Reiner Steib <Reiner.Steib@gmx.de>
15
16 * pop3.el (pop3-leave-mail-on-server): Describe possible problems
17 in the doc string.
18
19 * message.el (message-ignored-news-headers)
20 (message-ignored-supersedes-headers)
21 (message-ignored-resent-headers)
22 (message-forward-ignored-headers): Improve custom type.
23
242004-10-15 Simon Josefsson <jas@extundo.com>
25
26 * pop3.el (top-level): Don't require nnheader.
27 (pop3-read-timeout): Add.
28 (pop3-accept-process-output): Add.
29 (pop3-read-response, pop3-retr): Use it.
30
12004-10-13 Katsumi Yamaoka <yamaoka@jpl.org> 312004-10-13 Katsumi Yamaoka <yamaoka@jpl.org>
2 32
3 * message.el (message-tokenize-header): Fix 2004-09-06 change 33 * message.el (message-tokenize-header): Fix 2004-09-06 change
@@ -9,6 +39,10 @@
9 (tls-certificate-information): New function, based on 39 (tls-certificate-information): New function, based on
10 ssl-certificate-information. 40 ssl-certificate-information.
11 41
422004-10-11 Reiner Steib <Reiner.Steib@gmx.de>
43
44 * message.el (message-bury): Use `window-dedicated-p'.
45
122004-10-10 Reiner Steib <Reiner.Steib@gmx.de> 462004-10-10 Reiner Steib <Reiner.Steib@gmx.de>
13 47
14 * gnus-sum.el: Mention that multibyte characters don't work as marks. 48 * gnus-sum.el: Mention that multibyte characters don't work as marks.
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 33238ef4552..841f0057566 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -693,6 +693,8 @@ Returns the first place where the trail finds a group name."
693 693
694 (remove-hook 'gnus-summary-prepare-hook 'gnus-registry-register-message-ids)) 694 (remove-hook 'gnus-summary-prepare-hook 'gnus-registry-register-message-ids))
695 695
696(add-hook 'gnus-registry-unload-hook 'gnus-registry-unload-hook)
697
696(when gnus-registry-install 698(when gnus-registry-install
697 (gnus-registry-install-hooks) 699 (gnus-registry-install-hooks)
698 (gnus-registry-read)) 700 (gnus-registry-read))
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index c9d05d1a0fe..9e61e007a3e 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -255,7 +255,12 @@ included. Organization and User-Agent are optional."
255 :group 'message-news 255 :group 'message-news
256 :group 'message-headers 256 :group 'message-headers
257 :link '(custom-manual "(message)Message Headers") 257 :link '(custom-manual "(message)Message Headers")
258 :type 'regexp) 258 :type '(repeat :value-to-internal (lambda (widget value)
259 (custom-split-regexp-maybe value))
260 :match (lambda (widget value)
261 (or (stringp value)
262 (widget-editable-list-match widget value)))
263 regexp))
259 264
260(defcustom message-ignored-mail-headers 265(defcustom message-ignored-mail-headers
261 "^[GF]cc:\\|^Resent-Fcc:\\|^Xref:\\|^X-Draft-From:\\|^X-Gnus-Agent-Meta-Information:" 266 "^[GF]cc:\\|^Resent-Fcc:\\|^Xref:\\|^X-Draft-From:\\|^X-Gnus-Agent-Meta-Information:"
@@ -271,7 +276,12 @@ It's best to delete old Path and Date headers before posting to avoid
271any confusion." 276any confusion."
272 :group 'message-interface 277 :group 'message-interface
273 :link '(custom-manual "(message)Superseding") 278 :link '(custom-manual "(message)Superseding")
274 :type 'regexp) 279 :type '(repeat :value-to-internal (lambda (widget value)
280 (custom-split-regexp-maybe value))
281 :match (lambda (widget value)
282 (or (stringp value)
283 (widget-editable-list-match widget value)))
284 regexp))
275 285
276(defcustom message-subject-re-regexp 286(defcustom message-subject-re-regexp
277 "^[ \t]*\\([Rr][Ee]\\(\\[[0-9]*\\]\\)*:[ \t]*\\)*[ \t]*" 287 "^[ \t]*\\([Rr][Ee]\\(\\[[0-9]*\\]\\)*:[ \t]*\\)*[ \t]*"
@@ -534,13 +544,22 @@ Done before generating the new subject of a forward."
534 "*All headers that match this regexp will be deleted when resending a message." 544 "*All headers that match this regexp will be deleted when resending a message."
535 :group 'message-interface 545 :group 'message-interface
536 :link '(custom-manual "(message)Resending") 546 :link '(custom-manual "(message)Resending")
537 :type 'regexp) 547 :type '(repeat :value-to-internal (lambda (widget value)
548 (custom-split-regexp-maybe value))
549 :match (lambda (widget value)
550 (or (stringp value)
551 (widget-editable-list-match widget value)))
552 regexp))
538 553
539(defcustom message-forward-ignored-headers "^Content-Transfer-Encoding:\\|^X-Gnus" 554(defcustom message-forward-ignored-headers "^Content-Transfer-Encoding:\\|^X-Gnus"
540 "*All headers that match this regexp will be deleted when forwarding a message." 555 "*All headers that match this regexp will be deleted when forwarding a message."
541 :version "21.1" 556 :version "21.1"
542 :group 'message-forwarding 557 :group 'message-forwarding
543 :type '(choice (const :tag "None" nil) 558 :type '(repeat :value-to-internal (lambda (widget value)
559 (custom-split-regexp-maybe value))
560 :match (lambda (widget value)
561 (or (stringp value)
562 (widget-editable-list-match widget value)))
544 regexp)) 563 regexp))
545 564
546(defcustom message-ignored-cited-headers "." 565(defcustom message-ignored-cited-headers "."
diff --git a/lisp/gnus/nnspool.el b/lisp/gnus/nnspool.el
index eaf5159be8f..9a08cdfe71c 100644
--- a/lisp/gnus/nnspool.el
+++ b/lisp/gnus/nnspool.el
@@ -44,7 +44,7 @@ This is most commonly `inews' or `injnews'.")
44 "Switches for nnspool-request-post to pass to `inews' for posting news. 44 "Switches for nnspool-request-post to pass to `inews' for posting news.
45If you are using Cnews, you probably should set this variable to nil.") 45If you are using Cnews, you probably should set this variable to nil.")
46 46
47(defvoo nnspool-spool-directory (file-name-as-directory news-path) 47(defvoo nnspool-spool-directory (file-name-as-directory news-directory)
48 "Local news spool directory.") 48 "Local news spool directory.")
49 49
50(defvoo nnspool-nov-directory (concat nnspool-spool-directory "over.view/") 50(defvoo nnspool-nov-directory (concat nnspool-spool-directory "over.view/")
diff --git a/lisp/gnus/pop3.el b/lisp/gnus/pop3.el
index e288f6cace2..db8753057d6 100644
--- a/lisp/gnus/pop3.el
+++ b/lisp/gnus/pop3.el
@@ -83,7 +83,14 @@ values are 'apop."
83 :group 'pop3) 83 :group 'pop3)
84 84
85(defcustom pop3-leave-mail-on-server nil 85(defcustom pop3-leave-mail-on-server nil
86 "*Non-nil if the mail is to be left on the POP server after fetching." 86 "*Non-nil if the mail is to be left on the POP server after fetching.
87
88If the `pop3-leave-mail-on-server' is non-`nil' the mail is to be
89left on the POP server after fetching. Note that POP servers
90maintain no state information between sessions, so what the
91client believes is there and what is actually there may not match
92up. If they do not, then the whole thing can fall apart and
93leave you with a corrupt mailbox."
87 :version "21.4" ;; Oort Gnus 94 :version "21.4" ;; Oort Gnus
88 :type 'boolean 95 :type 'boolean
89 :group 'pop3) 96 :group 'pop3)
@@ -95,6 +102,32 @@ Used for APOP authentication.")
95(defvar pop3-read-point nil) 102(defvar pop3-read-point nil)
96(defvar pop3-debug nil) 103(defvar pop3-debug nil)
97 104
105;; Borrowed from nnheader-accept-process-output in nnheader.el.
106(defvar pop3-read-timeout
107 (if (string-match "windows-nt\\|os/2\\|emx\\|cygwin"
108 (symbol-name system-type))
109 ;; http://thread.gmane.org/v9655t3pjo.fsf@marauder.physik.uni-ulm.de
110 ;;
111 ;; IIRC, values lower than 1.0 didn't/don't work on Windows/DOS.
112 ;;
113 ;; There should probably be a runtime test to determine the timing
114 ;; resolution, or a primitive to report it. I don't know off-hand
115 ;; what's possible. Perhaps better, maybe the Windows/DOS primitive
116 ;; could round up non-zero timeouts to a minimum of 1.0?
117 1.0
118 0.1)
119 "How long pop3 should wait between checking for the end of output.
120Shorter values mean quicker response, but are more CPU intensive.")
121
122;; Borrowed from nnheader-accept-process-output in nnheader.el.
123(defun pop3-accept-process-output (process)
124 (accept-process-output
125 process
126 (truncate pop3-read-timeout)
127 (truncate (* (- pop3-read-timeout
128 (truncate pop3-read-timeout))
129 1000))))
130
98(defun pop3-movemail (&optional crashbox) 131(defun pop3-movemail (&optional crashbox)
99 "Transfer contents of a maildrop to the specified CRASHBOX." 132 "Transfer contents of a maildrop to the specified CRASHBOX."
100 (or crashbox (setq crashbox (expand-file-name "~/.crashbox"))) 133 (or crashbox (setq crashbox (expand-file-name "~/.crashbox")))
@@ -207,7 +240,7 @@ Return the response string if optional second argument is non-nil."
207 (goto-char pop3-read-point) 240 (goto-char pop3-read-point)
208 (while (and (memq (process-status process) '(open run)) 241 (while (and (memq (process-status process) '(open run))
209 (not (search-forward "\r\n" nil t))) 242 (not (search-forward "\r\n" nil t)))
210 (nnheader-accept-process-output process) 243 (pop3-accept-process-output process)
211 (goto-char pop3-read-point)) 244 (goto-char pop3-read-point))
212 (setq match-end (point)) 245 (setq match-end (point))
213 (goto-char pop3-read-point) 246 (goto-char pop3-read-point)
@@ -381,8 +414,7 @@ This function currently does nothing.")
381 (save-excursion 414 (save-excursion
382 (set-buffer (process-buffer process)) 415 (set-buffer (process-buffer process))
383 (while (not (re-search-forward "^\\.\r\n" nil t)) 416 (while (not (re-search-forward "^\\.\r\n" nil t))
384 ;; Fixme: Shouldn't depend on nnheader. 417 (pop3-accept-process-output process)
385 (nnheader-accept-process-output process)
386 (goto-char start)) 418 (goto-char start))
387 (setq pop3-read-point (point-marker)) 419 (setq pop3-read-point (point-marker))
388 ;; this code does not seem to work for some POP servers... 420 ;; this code does not seem to work for some POP servers...
diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el
index 9e20a51b127..f197d165cdd 100644
--- a/lisp/gnus/spam-stat.el
+++ b/lisp/gnus/spam-stat.el
@@ -594,6 +594,8 @@ COUNT defaults to 5"
594 (remove-hook 'gnus-select-article-hook 594 (remove-hook 'gnus-select-article-hook
595 'spam-stat-store-gnus-article-buffer)) 595 'spam-stat-store-gnus-article-buffer))
596 596
597(add-hook 'spam-stat-unload-hook 'spam-stat-unload-hook)
598
597(provide 'spam-stat) 599(provide 'spam-stat)
598 600
599;;; arch-tag: ff1d2200-8ddb-42fb-bb7b-1b5e20448554 601;;; arch-tag: ff1d2200-8ddb-42fb-bb7b-1b5e20448554
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index 85534f3828c..2b5f7be936b 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -1814,14 +1814,12 @@ REMOVE not nil, remove the ADDRESSES."
1814 (remove-hook 'gnus-get-new-news-hook 'spam-setup-widening) 1814 (remove-hook 'gnus-get-new-news-hook 'spam-setup-widening)
1815 (remove-hook 'gnus-summary-prepare-hook 'spam-find-spam)) 1815 (remove-hook 'gnus-summary-prepare-hook 'spam-find-spam))
1816 1816
1817(add-hook 'spam-unload-hook 'spam-unload-hook)
1818
1817(when spam-install-hooks 1819(when spam-install-hooks
1818 (spam-initialize)) 1820 (spam-initialize))
1819 1821
1820(provide 'spam) 1822(provide 'spam)
1821 1823
1822;;; spam.el ends here.
1823
1824(provide 'spam)
1825
1826;;; arch-tag: 07e6e0ca-ab0a-4412-b445-1f6c72a4f27f 1824;;; arch-tag: 07e6e0ca-ab0a-4412-b445-1f6c72a4f27f
1827;;; spam.el ends here 1825;;; spam.el ends here
diff --git a/lisp/help-at-pt.el b/lisp/help-at-pt.el
index ad1f2b3a96a..d6ac6ec3fdc 100644
--- a/lisp/help-at-pt.el
+++ b/lisp/help-at-pt.el
@@ -348,8 +348,7 @@ different regions. With numeric argument ARG, behaves like
348 (interactive "p") 348 (interactive "p")
349 (scan-buf-move-to-region 'help-echo (- arg) 'scan-buf-move-hook)) 349 (scan-buf-move-to-region 'help-echo (- arg) 'scan-buf-move-hook))
350 350
351(defvar help-at-pt-unload-hook '(help-at-pt-cancel-timer) 351(add-hook 'help-at-pt-unload-hook 'help-at-pt-cancel-timer)
352 "Normal hook run when `help-at-pt' is unloaded.")
353 352
354(provide 'help-at-pt) 353(provide 'help-at-pt)
355 354
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index f013f8e3c72..12f29bdac63 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -213,12 +213,20 @@ If a regexp, then it will be matched against the buffer's name.
213If a function, it will be called with the buffer as an argument, and 213If a function, it will be called with the buffer as an argument, and
214should return non-nil if this buffer should be shown. 214should return non-nil if this buffer should be shown.
215 215
216Viewing of buffers hidden because of these predicates is enabled by 216Viewing of buffers hidden because of these predicates may be customized
217giving a non-nil prefix argument to `ibuffer-update'. Note that this 217via `ibuffer-default-display-maybe-show-predicates' and is toggled by
218specialized filtering occurs before real filtering." 218giving a non-nil prefix argument to `ibuffer-update'.
219Note that this specialized filtering occurs before real filtering."
219 :type '(repeat (choice regexp function)) 220 :type '(repeat (choice regexp function))
220 :group 'ibuffer) 221 :group 'ibuffer)
221 222
223(defcustom ibuffer-default-display-maybe-show-predicates nil
224 "Non-nil means show buffers that match `ibuffer-maybe-show-predicates'."
225 :type 'boolean
226 :group 'ibuffer)
227
228(defvar ibuffer-display-maybe-show-predicates nil)
229
222(defvar ibuffer-current-format nil) 230(defvar ibuffer-current-format nil)
223 231
224(defcustom ibuffer-movement-cycle t 232(defcustom ibuffer-movement-cycle t
@@ -2069,11 +2077,15 @@ If optional arg SILENT is non-nil, do not display progress messages."
2069 2077
2070(defun ibuffer-update (arg &optional silent) 2078(defun ibuffer-update (arg &optional silent)
2071 "Regenerate the list of all buffers. 2079 "Regenerate the list of all buffers.
2072Display buffers whose name matches one of `ibuffer-maybe-show-predicates' 2080
2073iff arg ARG is non-nil. 2081Prefix arg non-nil means to toggle whether buffers that match
2082`ibuffer-maybe-show-predicates' should be displayed.
2074 2083
2075If optional arg SILENT is non-nil, do not display progress messages." 2084If optional arg SILENT is non-nil, do not display progress messages."
2076 (interactive "P") 2085 (interactive "P")
2086 (if arg
2087 (setq ibuffer-display-maybe-show-predicates
2088 (not ibuffer-display-maybe-show-predicates)))
2077 (ibuffer-forward-line 0) 2089 (ibuffer-forward-line 0)
2078 (let* ((bufs (buffer-list)) 2090 (let* ((bufs (buffer-list))
2079 (blist (ibuffer-filter-buffers 2091 (blist (ibuffer-filter-buffers
@@ -2086,7 +2098,7 @@ If optional arg SILENT is non-nil, do not display progress messages."
2086 (caddr bufs) 2098 (caddr bufs)
2087 (cadr bufs)) 2099 (cadr bufs))
2088 (ibuffer-current-buffers-with-marks bufs) 2100 (ibuffer-current-buffers-with-marks bufs)
2089 arg))) 2101 ibuffer-display-maybe-show-predicates)))
2090 (when (null blist) 2102 (when (null blist)
2091 (if (and (featurep 'ibuf-ext) 2103 (if (and (featurep 'ibuf-ext)
2092 ibuffer-filtering-qualifiers) 2104 ibuffer-filtering-qualifiers)
@@ -2148,7 +2160,7 @@ If optional arg SILENT is non-nil, do not display progress messages."
2148 'ibuffer-filter-group 2160 'ibuffer-filter-group
2149 name))) 2161 name)))
2150 2162
2151(defun ibuffer-redisplay-engine (bmarklist &optional all) 2163(defun ibuffer-redisplay-engine (bmarklist &optional ignore)
2152 (assert (eq major-mode 'ibuffer-mode)) 2164 (assert (eq major-mode 'ibuffer-mode))
2153 (let* ((--ibuffer-insert-buffers-and-marks-format 2165 (let* ((--ibuffer-insert-buffers-and-marks-format
2154 (ibuffer-current-format)) 2166 (ibuffer-current-format))
@@ -2475,6 +2487,8 @@ will be inserted before the group at point."
2475 ibuffer-default-sorting-reversep) 2487 ibuffer-default-sorting-reversep)
2476 (set (make-local-variable 'ibuffer-shrink-to-minimum-size) 2488 (set (make-local-variable 'ibuffer-shrink-to-minimum-size)
2477 ibuffer-default-shrink-to-minimum-size) 2489 ibuffer-default-shrink-to-minimum-size)
2490 (set (make-local-variable 'ibuffer-display-maybe-show-predicates)
2491 ibuffer-default-display-maybe-show-predicates)
2478 (set (make-local-variable 'ibuffer-filtering-qualifiers) nil) 2492 (set (make-local-variable 'ibuffer-filtering-qualifiers) nil)
2479 (set (make-local-variable 'ibuffer-filter-groups) nil) 2493 (set (make-local-variable 'ibuffer-filter-groups) nil)
2480 (set (make-local-variable 'ibuffer-filter-group-kill-ring) nil) 2494 (set (make-local-variable 'ibuffer-filter-group-kill-ring) nil)
diff --git a/lisp/info.el b/lisp/info.el
index 386f5b612ec..17905c6d738 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -3445,7 +3445,8 @@ Preserve text properties."
3445 (fontify-visited-p ; visited nodes need to be re-fontified 3445 (fontify-visited-p ; visited nodes need to be re-fontified
3446 (and Info-fontify-visited-nodes 3446 (and Info-fontify-visited-nodes
3447 ;; Don't take time to refontify visited nodes in huge nodes 3447 ;; Don't take time to refontify visited nodes in huge nodes
3448 (< (- (point-max) (point-min)) Info-fontify-maximum-menu-size)))) 3448 (< (- (point-max) (point-min)) Info-fontify-maximum-menu-size)))
3449 rbeg rend)
3449 3450
3450 ;; Fontify header line 3451 ;; Fontify header line
3451 (goto-char (point-min)) 3452 (goto-char (point-min))
@@ -3570,39 +3571,48 @@ Preserve text properties."
3570 "mouse-2: go to this node") 3571 "mouse-2: go to this node")
3571 'mouse-face 'highlight))) 3572 'mouse-face 'highlight)))
3572 (when (or not-fontified-p fontify-visited-p) 3573 (when (or not-fontified-p fontify-visited-p)
3573 (add-text-properties 3574 (setq rbeg (match-beginning 2)
3574 (match-beginning 2) (match-end 2) 3575 rend (match-end 2))
3575 (list 3576 (put-text-property
3576 'font-lock-face 3577 rbeg rend
3577 ;; Display visited nodes in a different face 3578 'font-lock-face
3578 (if (and Info-fontify-visited-nodes 3579 ;; Display visited nodes in a different face
3579 (save-match-data 3580 (if (and Info-fontify-visited-nodes
3580 (let* ((node (replace-regexp-in-string 3581 (save-match-data
3581 "^[ \t]+" "" 3582 (let* ((node (replace-regexp-in-string
3582 (replace-regexp-in-string 3583 "^[ \t]+" ""
3583 "[ \t\n]+" " " 3584 (replace-regexp-in-string
3584 (or (match-string 5) 3585 "[ \t\n]+" " "
3585 (and (not (equal (match-string 4) "")) 3586 (or (match-string 5)
3586 (match-string 4)) 3587 (and (not (equal (match-string 4) ""))
3587 (match-string 2))))) 3588 (match-string 4))
3588 (file (file-name-nondirectory 3589 (match-string 2)))))
3589 Info-current-file)) 3590 (file (file-name-nondirectory
3590 (hl Info-history-list) 3591 Info-current-file))
3591 res) 3592 (hl Info-history-list)
3592 (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node) 3593 res)
3593 (setq file (file-name-nondirectory 3594 (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node)
3594 (match-string 1 node)) 3595 (setq file (file-name-nondirectory
3595 node (if (equal (match-string 2 node) "") 3596 (match-string 1 node))
3596 "Top" 3597 node (if (equal (match-string 2 node) "")
3597 (match-string 2 node)))) 3598 "Top"
3598 (while hl 3599 (match-string 2 node))))
3599 (if (and (string-equal node (nth 1 (car hl))) 3600 (while hl
3600 (string-equal file 3601 (if (and (string-equal node (nth 1 (car hl)))
3601 (file-name-nondirectory 3602 (string-equal file
3602 (nth 0 (car hl))))) 3603 (file-name-nondirectory
3603 (setq res (car hl) hl nil) 3604 (nth 0 (car hl)))))
3604 (setq hl (cdr hl)))) 3605 (setq res (car hl) hl nil)
3605 res))) 'info-xref-visited 'info-xref)))) 3606 (setq hl (cdr hl))))
3607 res))) 'info-xref-visited 'info-xref))
3608 ;; For multiline ref, unfontify newline and surrounding whitespace
3609 (save-excursion
3610 (goto-char rbeg)
3611 (save-match-data
3612 (while (re-search-forward "\\s-*\n\\s-*" rend t nil)
3613 (remove-text-properties (match-beginning 0)
3614 (match-end 0)
3615 '(font-lock-face t))))))
3606 (when not-fontified-p 3616 (when not-fontified-p
3607 (when (memq Info-hide-note-references '(t hide)) 3617 (when (memq Info-hide-note-references '(t hide))
3608 (add-text-properties (match-beginning 3) (match-end 3) 3618 (add-text-properties (match-beginning 3) (match-end 3)
diff --git a/lisp/language/indian.el b/lisp/language/indian.el
index 9c6184364bd..4b9e08045db 100644
--- a/lisp/language/indian.el
+++ b/lisp/language/indian.el
@@ -50,6 +50,15 @@
50Currently supported foundries are `cdac' and `akruti'.") 50Currently supported foundries are `cdac' and `akruti'.")
51 51
52(defvar indian-script-language-alist 52(defvar indian-script-language-alist
53 '((devanagari (hindi sanskrit) nil)
54 (bengali (bengali assamese) nil)
55 (gurmukhi (punjabi) nil)
56 (gujarati (gujarati) nil)
57 (oriya (oriya) nil)
58 (tamil (tamil) nil)
59 (telugu (telugu) nil)
60 (kannada (kannada) nil)
61 (malayalam (malayalam) nil))
53 "Alist of Indian scripts vs the corresponding language list and font foundry. 62 "Alist of Indian scripts vs the corresponding language list and font foundry.
54Each element has this form: 63Each element has this form:
55 64
@@ -62,16 +71,7 @@ The list is in the priority order.
62 71
63FONT-FOUNDRY is a font foundry representing a group of Indian 72FONT-FOUNDRY is a font foundry representing a group of Indian
64fonts. If the value is nil, the value of `indian-font-foundry' 73fonts. If the value is nil, the value of `indian-font-foundry'
65is used." 74is used.")
66 '((devanagari (hindi sanskrit) nil)
67 (bengali (bengali assamese) nil)
68 (gurmukhi (punjabi) nil)
69 (gujarati (gujarati) nil)
70 (oriya (oriya) nil)
71 (tamil (tamil) nil)
72 (telugu (telugu) nil)
73 (kannada (kannada) nil)
74 (malayalam (malayalam) nil)))
75 75
76(defconst indian-font-char-index-table 76(defconst indian-font-char-index-table
77 '( ; for which language(s) 77 '( ; for which language(s)
@@ -99,14 +99,14 @@ is used."
99 (#x1200 . akruti:knd) ; kannada 99 (#x1200 . akruti:knd) ; kannada
100 (#x1300 . akruti:mal) ; malayalam 100 (#x1300 . akruti:mal) ; malayalam
101 ) 101 )
102 "Aliat of indices of `indian-glyph' character vs Indian font identifiers. 102 "Alist of indices of `indian-glyph' character vs Indian font identifiers.
103Each element has this form: (INDEX . FONT-IDENTIFIER) 103Each element has this form: (INDEX . FONT-IDENTIFIER)
104 104
105INDEX is an index number of the first character in the charset 105INDEX is an index number of the first character in the charset
106`indian-glyph' assigned for glyphs in the font specified by 106`indian-glyph' assigned for glyphs in the font specified by
107FONT-IDENTIFIER. Currently FONT-IDENTIFIERs are defined for CDAC 107FONT-IDENTIFIER. Currently FONT-IDENTIFIERs are defined for CDAC
108and AKRUTI font groups.") 108and AKRUTI font groups.")
109 109
110(defun indian-font-char (index font-identifier) 110(defun indian-font-char (index font-identifier)
111 "Return character of charset `indian-glyph' made from glyph index INDEX. 111 "Return character of charset `indian-glyph' made from glyph index INDEX.
112FONT-IDENTIFIER is an identifier of an Indian font listed in the 112FONT-IDENTIFIER is an identifier of an Indian font listed in the
@@ -127,7 +127,7 @@ font INDEX is for."
127(defun indian-font-char-range (font-identifier) 127(defun indian-font-char-range (font-identifier)
128 (cons (indian-font-char 0 font-identifier) 128 (cons (indian-font-char 0 font-identifier)
129 (indian-font-char 255 font-identifier))) 129 (indian-font-char 255 font-identifier)))
130 130
131(defvar indian-script-table 131(defvar indian-script-table
132 '[ 132 '[
133 devanagari 133 devanagari
diff --git a/lisp/mouse.el b/lisp/mouse.el
index b73967b99dc..abf62a97836 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -338,6 +338,17 @@ shrink the window or windows above it to make room."
338 (select-window window) 338 (select-window window)
339 (enlarge-window growth nil (> growth 0)))) 339 (enlarge-window growth nil (> growth 0))))
340 340
341(defsubst mouse-drag-move-window-top (window growth)
342 "Move the top of WINDOW up or down by GROWTH lines.
343Move it down if GROWTH is positive, or up if GROWTH is negative.
344If this would make WINDOW too short, shrink the window or windows
345above it to make room."
346 ;; Moving the top of WINDOW is actually moving the bottom of the
347 ;; window above.
348 (let ((window-above (mouse-drag-window-above window)))
349 (and window-above
350 (mouse-drag-move-window-bottom window-above (- growth)))))
351
341(defun mouse-drag-mode-line-1 (start-event mode-line-p) 352(defun mouse-drag-mode-line-1 (start-event mode-line-p)
342 "Change the height of a window by dragging on the mode or header line. 353 "Change the height of a window by dragging on the mode or header line.
343START-EVENT is the starting mouse-event of the drag action. 354START-EVENT is the starting mouse-event of the drag action.
@@ -444,7 +455,9 @@ MODE-LINE-P non-nil means dragging a mode line; nil means a header line."
444 (select-window start-event-window)) 455 (select-window start-event-window))
445 ;; no. grow/shrink the selected window 456 ;; no. grow/shrink the selected window
446 ;(message "growth = %d" growth) 457 ;(message "growth = %d" growth)
447 (mouse-drag-move-window-bottom start-event-window growth)) 458 (if mode-line-p
459 (mouse-drag-move-window-bottom start-event-window growth)
460 (mouse-drag-move-window-top start-event-window growth)))
448 461
449 ;; if this window's growth caused another 462 ;; if this window's growth caused another
450 ;; window to be deleted because it was too 463 ;; window to be deleted because it was too
@@ -1097,7 +1110,7 @@ and set mark at the beginning.
1097Prefix arguments are interpreted as with \\[yank]. 1110Prefix arguments are interpreted as with \\[yank].
1098If `mouse-yank-at-point' is non-nil, insert at point 1111If `mouse-yank-at-point' is non-nil, insert at point
1099regardless of where you click." 1112regardless of where you click."
1100 (interactive "e\nP") 1113 (interactive "*e\nP")
1101 ;; Give temporary modes such as isearch a chance to turn off. 1114 ;; Give temporary modes such as isearch a chance to turn off.
1102 (run-hooks 'mouse-leave-buffer-hook) 1115 (run-hooks 'mouse-leave-buffer-hook)
1103 (or mouse-yank-at-point (mouse-set-point click)) 1116 (or mouse-yank-at-point (mouse-set-point click))
@@ -1399,7 +1412,7 @@ The function returns a non-nil value if it creates a secondary selection."
1399Move point to the end of the inserted text. 1412Move point to the end of the inserted text.
1400If `mouse-yank-at-point' is non-nil, insert at point 1413If `mouse-yank-at-point' is non-nil, insert at point
1401regardless of where you click." 1414regardless of where you click."
1402 (interactive "e") 1415 (interactive "*e")
1403 ;; Give temporary modes such as isearch a chance to turn off. 1416 ;; Give temporary modes such as isearch a chance to turn off.
1404 (run-hooks 'mouse-leave-buffer-hook) 1417 (run-hooks 'mouse-leave-buffer-hook)
1405 (or mouse-yank-at-point (mouse-set-point click)) 1418 (or mouse-yank-at-point (mouse-set-point click))
diff --git a/lisp/msb.el b/lisp/msb.el
index e352150a57d..2ab7fe5491d 100644
--- a/lisp/msb.el
+++ b/lisp/msb.el
@@ -1153,6 +1153,7 @@ different buffer menu using the function `msb'."
1153 1153
1154(defun msb-unload-hook () 1154(defun msb-unload-hook ()
1155 (msb-mode 0)) 1155 (msb-mode 0))
1156(add-hook 'msb-unload-hook 'msb-unload-hook)
1156 1157
1157(provide 'msb) 1158(provide 'msb)
1158(eval-after-load "msb" '(run-hooks 'msb-after-load-hook 'msb-after-load-hooks)) 1159(eval-after-load "msb" '(run-hooks 'msb-after-load-hook 'msb-after-load-hooks))
diff --git a/lisp/net/password.el b/lisp/net/password.el
new file mode 100644
index 00000000000..e8be612ecca
--- /dev/null
+++ b/lisp/net/password.el
@@ -0,0 +1,128 @@
1;;; password.el --- Read passwords from user, possibly using a password cache.
2
3;; Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
4
5;; Author: Simon Josefsson <simon@josefsson.org>
6;; Created: 2003-12-21
7;; Keywords: password cache passphrase key
8
9;; This file is part of GNU Emacs.
10
11;; GNU Emacs is free software; you can redistribute it and/or modify
12;; it under the terms of the GNU General Public License as published by
13;; the Free Software Foundation; either version 2, or (at your option)
14;; any later version.
15
16;; GNU Emacs is distributed in the hope that it will be useful,
17;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;; GNU General Public License for more details.
20
21;; You should have received a copy of the GNU General Public License
22;; along with GNU Emacs; see the file COPYING. If not, write to the
23;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
24;; Boston, MA 02111-1307, USA.
25
26;;; Commentary:
27
28;; Greatly influenced by pgg.el written by Daiki Ueno, with timer
29;; fixes for XEmacs by Katsumi Yamaoka. In fact, this is mostly just
30;; a rip-off.
31;;
32;; (password-read "Password? " "test")
33;; ;; Minibuffer prompt for password.
34;; => "foo"
35;;
36;; (password-cache-add "test" "foo")
37;; => nil
38
39;; Note the previous two can be replaced with:
40;; (password-read-and-add "Password? " "test")
41;; ;; Minibuffer prompt for password.
42;; => "foo"
43;; ;; "foo" is now cached with key "test"
44
45
46;; (password-read "Password? " "test")
47;; ;; No minibuffer prompt
48;; => "foo"
49;;
50;; (password-read "Password? " "test")
51;; ;; No minibuffer prompt
52;; => "foo"
53;;
54;; ;; Wait `password-cache-expiry' seconds.
55;;
56;; (password-read "Password? " "test")
57;; ;; Minibuffer prompt for password is back.
58;; => "foo"
59
60;;; Code:
61
62(when (featurep 'xemacs)
63 (require 'run-at-time))
64
65(eval-when-compile
66 (require 'cl))
67
68(defcustom password-cache t
69 "Whether to cache passwords."
70 :group 'password
71 :type 'boolean)
72
73(defcustom password-cache-expiry 16
74 "How many seconds passwords are cached, or nil to disable expiring.
75Whether passwords are cached at all is controlled by `password-cache'."
76 :group 'password
77 :type '(choice (const :tag "Never" nil)
78 (integer :tag "Seconds")))
79
80(defvar password-data (make-vector 7 0))
81
82(defun password-read (prompt &optional key)
83 "Read password, for use with KEY, from user, or from cache if wanted.
84KEY indicate the purpose of the password, so the cache can
85separate passwords. The cache is not used if KEY is nil. It is
86typically a string.
87The variable `password-cache' control whether the cache is used."
88 (or (and password-cache
89 key
90 (symbol-value (intern-soft key password-data)))
91 (read-passwd prompt)))
92
93(defun password-read-and-add (prompt &optional key)
94 "Read password, for use with KEY, from user, or from cache if wanted.
95Then store the password in the cache. Uses `password-read' and
96`password-cache-add'."
97 (let ((password (password-read prompt key)))
98 (when (and password key)
99 (password-cache-add key password))
100 password))
101
102(defun password-cache-remove (key)
103 "Remove password indexed by KEY from password cache.
104This is typically run be a timer setup from `password-cache-add',
105but can be invoked at any time to forcefully remove passwords
106from the cache. This may be useful when it has been detected
107that a password is invalid, so that `password-read' query the
108user again."
109 (let ((password (symbol-value (intern-soft key password-data))))
110 (when password
111 (fillarray password ?_)
112 (unintern key password-data))))
113
114(defun password-cache-add (key password)
115 "Add password to cache.
116The password is removed by a timer after `password-cache-expiry'
117seconds."
118 (set (intern key password-data) password)
119 (when password-cache-expiry
120 (run-at-time password-cache-expiry nil
121 #'password-cache-remove
122 key))
123 nil)
124
125(provide 'password)
126
127;;; arch-tag: ab160494-16c8-4c68-a4a1-73eebf6686e5
128;;; password.el ends here
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index a30280dbd4f..582ae8ee207 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -2337,45 +2337,46 @@ If it doesn't exist, generate a new one."
2337;; This function makes the same assumption as 2337;; This function makes the same assumption as
2338;; `tramp-handle-set-visited-file-modtime'. 2338;; `tramp-handle-set-visited-file-modtime'.
2339(defun tramp-handle-verify-visited-file-modtime (buf) 2339(defun tramp-handle-verify-visited-file-modtime (buf)
2340 "Like `verify-visited-file-modtime' for tramp files. 2340 "Like `verify-visited-file-modtime' for tramp files."
2341At the time `verify-visited-file-modtime' calls this function, we
2342already know that the buffer is visiting a file and that
2343`visited-file-modtime' does not return 0. Do not call this
2344function directly, unless those two cases are already taken care
2345of."
2346 (with-current-buffer buf 2341 (with-current-buffer buf
2347 (let ((f (buffer-file-name))) 2342 ;; There is no file visiting the buffer, or the buffer has no
2348 (with-parsed-tramp-file-name f nil 2343 ;; recorded last modification time.
2349 (let* ((attr (file-attributes f)) 2344 (if (or (not (buffer-file-name))
2350 (modtime (nth 5 attr))) 2345 (eq (visited-file-modtime) 0))
2351 (cond ((and attr (not (equal modtime '(0 0)))) 2346 t
2352 ;; Why does `file-attributes' return a list (HIGH 2347 (let ((f (buffer-file-name)))
2353 ;; LOW), but `visited-file-modtime' returns a cons 2348 (with-parsed-tramp-file-name f nil
2354 ;; (HIGH . LOW)? 2349 (let* ((attr (file-attributes f))
2355 (let ((mt (visited-file-modtime))) 2350 (modtime (nth 5 attr))
2356 (< (abs (tramp-time-diff 2351 (mt (visited-file-modtime)))
2357 modtime 2352
2358 ;; For compatibility, deal with both the old 2353 (cond
2359 ;; (HIGH . LOW) and the new (HIGH LOW) 2354 ;; file exists, and has a known modtime.
2360 ;; return values of `visited-file-modtime'. 2355 ((and attr (not (equal modtime '(0 0))))
2361 (if (atom (cdr mt)) 2356 (< (abs (tramp-time-diff
2362 (list (car mt) (cdr mt)) 2357 modtime
2363 mt))) 2358 ;; For compatibility, deal with both the old
2364 2))) 2359 ;; (HIGH . LOW) and the new (HIGH LOW)
2365 (attr 2360 ;; return values of `visited-file-modtime'.
2366 (save-excursion 2361 (if (atom (cdr mt))
2367 (tramp-send-command 2362 (list (car mt) (cdr mt))
2368 multi-method method user host 2363 mt)))
2369 (format "%s -ild %s" 2364 2))
2370 (tramp-get-ls-command multi-method method 2365 ;; modtime has the don't know value.
2371 user host) 2366 (attr
2372 (tramp-shell-quote-argument localname))) 2367 (save-excursion
2373 (tramp-wait-for-output) 2368 (tramp-send-command
2374 (setq attr (buffer-substring 2369 multi-method method user host
2375 (point) (progn (end-of-line) (point))))) 2370 (format "%s -ild %s"
2376 (equal tramp-buffer-file-attributes attr)) 2371 (tramp-get-ls-command multi-method method user host)
2377 ;; If file does not exist, say it is not modified. 2372 (tramp-shell-quote-argument localname)))
2378 (t nil))))))) 2373 (tramp-wait-for-output)
2374 (setq attr (buffer-substring
2375 (point) (progn (end-of-line) (point)))))
2376 (equal tramp-buffer-file-attributes attr))
2377 ;; If file does not exist, say it is not modified
2378 ;; if and only if that agrees with the buffer's record.
2379 (t (equal mt '(-1 65535))))))))))
2379 2380
2380(defadvice clear-visited-file-modtime (after tramp activate) 2381(defadvice clear-visited-file-modtime (after tramp activate)
2381 "Set `tramp-buffer-file-attributes' back to nil. 2382 "Set `tramp-buffer-file-attributes' back to nil.
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 5711e7903ad..5a7b7666e89 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -1087,6 +1087,7 @@ Else, call `comment-indent'."
1087 (insert (comment-padleft comment-end add))) 1087 (insert (comment-padleft comment-end add)))
1088 (indent-according-to-mode)))))) 1088 (indent-according-to-mode))))))
1089 1089
1090;;;###autoload
1090(defcustom comment-auto-fill-only-comments nil 1091(defcustom comment-auto-fill-only-comments nil
1091 "Non-nil means to only auto-fill inside comments. 1092 "Non-nil means to only auto-fill inside comments.
1092This has no effect in modes that do not define a comment syntax." 1093This has no effect in modes that do not define a comment syntax."
diff --git a/lisp/outline.el b/lisp/outline.el
index 0f7d3b627b0..2d2663b12f2 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -808,7 +808,7 @@ Show the heading too, if it is currently invisible."
808 (save-excursion 808 (save-excursion
809 (outline-back-to-heading t) 809 (outline-back-to-heading t)
810 (show-entry) 810 (show-entry)
811 (while (condition-case nil (progn (outline-up-heading 1) (not (bobp))) 811 (while (condition-case nil (progn (outline-up-heading 1 t) (not (bobp)))
812 (error nil)) 812 (error nil))
813 (outline-flag-region (1- (point)) 813 (outline-flag-region (1- (point))
814 (save-excursion (forward-line 1) (point)) 814 (save-excursion (forward-line 1) (point))
diff --git a/lisp/paths.el b/lisp/paths.el
index 925dbb06e97..5611246ac8b 100644
--- a/lisp/paths.el
+++ b/lisp/paths.el
@@ -101,11 +101,12 @@ This variable `Info-default-directory-list' is used as the default
101for initializing `Info-directory-list' when Info is started, unless 101for initializing `Info-directory-list' when Info is started, unless
102the environment variable INFOPATH is set.") 102the environment variable INFOPATH is set.")
103 103
104(defvar news-path 104(defvar news-directory
105 (if (file-exists-p "/usr/spool/news/") 105 (if (file-exists-p "/usr/spool/news/")
106 "/usr/spool/news/" 106 "/usr/spool/news/"
107 "/var/spool/news/") 107 "/var/spool/news/")
108 "The root directory below which all news files are stored.") 108 "The root directory below which all news files are stored.")
109(defalias 'news-path 'news-directory)
109 110
110(defvar news-inews-program 111(defvar news-inews-program
111 (cond ((file-exists-p "/usr/bin/inews") "/usr/bin/inews") 112 (cond ((file-exists-p "/usr/bin/inews") "/usr/bin/inews")
@@ -136,7 +137,7 @@ The `ORGANIZATION' environment variable is used instead if defined.")
136 :group 'rmail 137 :group 'rmail
137 :version "21.1") 138 :version "21.1")
138 139
139(defconst rmail-spool-directory 140(defvar rmail-spool-directory
140 (cond ((string-match "^[^-]+-[^-]+-sco3.2v4" system-configuration) 141 (cond ((string-match "^[^-]+-[^-]+-sco3.2v4" system-configuration)
141 "/usr/spool/mail/") 142 "/usr/spool/mail/")
142 ;; On The Bull DPX/2 /usr/spool/mail is used although 143 ;; On The Bull DPX/2 /usr/spool/mail is used although
@@ -157,15 +158,17 @@ The `ORGANIZATION' environment variable is used instead if defined.")
157 "Name of directory used by system mailer for delivering new mail. 158 "Name of directory used by system mailer for delivering new mail.
158Its name should end with a slash.") 159Its name should end with a slash.")
159 160
160(defconst sendmail-program 161(defcustom sendmail-program
161 (cond 162 (cond
162 ((file-exists-p "/usr/sbin/sendmail") "/usr/sbin/sendmail") 163 ((file-exists-p "/usr/sbin/sendmail") "/usr/sbin/sendmail")
163 ((file-exists-p "/usr/lib/sendmail") "/usr/lib/sendmail") 164 ((file-exists-p "/usr/lib/sendmail") "/usr/lib/sendmail")
164 ((file-exists-p "/usr/ucblib/sendmail") "/usr/ucblib/sendmail") 165 ((file-exists-p "/usr/ucblib/sendmail") "/usr/ucblib/sendmail")
165 (t "fakemail")) ;In ../etc, to interface to /bin/mail. 166 (t "fakemail")) ;In ../etc, to interface to /bin/mail.
166 "Program used to send messages.") 167 "Program used to send messages."
168 :group 'mail
169 :type 'file)
167 170
168(defconst remote-shell-program 171(defcustom remote-shell-program
169 (cond 172 (cond
170 ;; Some systems use rsh for the remote shell; others use that name for the 173 ;; Some systems use rsh for the remote shell; others use that name for the
171 ;; restricted shell and use remsh for the remote shell. Let's try to guess 174 ;; restricted shell and use remsh for the remote shell. Let's try to guess
@@ -186,14 +189,16 @@ Its name should end with a slash.")
186 ((file-exists-p "/bin/rsh") "/bin/rsh") 189 ((file-exists-p "/bin/rsh") "/bin/rsh")
187 ((file-exists-p "/usr/bin/rsh") "/usr/bin/rsh") 190 ((file-exists-p "/usr/bin/rsh") "/usr/bin/rsh")
188 (t "rsh")) 191 (t "rsh"))
189 "File name for remote-shell program (often rsh or remsh).") 192 "File name for remote-shell program (often rsh or remsh)."
193 :group 'environment
194 :type 'file)
190 195
191(defconst term-file-prefix (if (eq system-type 'vax-vms) "[.term]" "term/") "\ 196(defvar term-file-prefix (if (eq system-type 'vax-vms) "[.term]" "term/") "\
192If non-nil, Emacs startup does (load (concat term-file-prefix (getenv \"TERM\"))) 197If non-nil, Emacs startup does (load (concat term-file-prefix (getenv \"TERM\")))
193You may set this variable to nil in your `.emacs' file if you do not wish 198You may set this variable to nil in your `.emacs' file if you do not wish
194the terminal-initialization file to be loaded.") 199the terminal-initialization file to be loaded.")
195 200
196(defconst abbrev-file-name 201(defvar abbrev-file-name
197 (if (eq system-type 'vax-vms) 202 (if (eq system-type 'vax-vms)
198 "~/abbrev.def" 203 "~/abbrev.def"
199 (convert-standard-filename "~/.abbrev_defs")) 204 (convert-standard-filename "~/.abbrev_defs"))
diff --git a/lisp/pcvs-defs.el b/lisp/pcvs-defs.el
index cd379afab77..6bdd6bb6dd8 100644
--- a/lisp/pcvs-defs.el
+++ b/lisp/pcvs-defs.el
@@ -374,7 +374,7 @@ This variable is buffer local and only used in the *cvs* buffer.")
374 ("r" . cvs-mode-remove) 374 ("r" . cvs-mode-remove)
375 ("s" . cvs-mode-status) 375 ("s" . cvs-mode-status)
376 ("t" . cvs-mode-tag) 376 ("t" . cvs-mode-tag)
377 ;;("v" . cvs-mode-diff-vendor) 377 ("v" . cvs-mode-view-file)
378 ("x" . cvs-mode-remove-handled) 378 ("x" . cvs-mode-remove-handled)
379 ;; cvstree bindings 379 ;; cvstree bindings
380 ("+" . cvs-mode-tree) 380 ("+" . cvs-mode-tree)
diff --git a/lisp/pcvs-util.el b/lisp/pcvs-util.el
index 5d9d0d215af..a4eda95e23e 100644
--- a/lisp/pcvs-util.el
+++ b/lisp/pcvs-util.el
@@ -104,11 +104,12 @@ BUF is assumed to be a temporary buffer used from the buffer MAINBUF."
104 (condition-case () 104 (condition-case ()
105 (delete-window win) 105 (delete-window win)
106 (error (iconify-frame (window-frame win)))) 106 (error (iconify-frame (window-frame win))))
107 (if (and mainbuf (get-buffer-window mainbuf)) 107;;; (if (and mainbuf (get-buffer-window mainbuf))
108 ;; FIXME: if the buffer popped into a pre-existing window, 108;;; ;; FIXME: if the buffer popped into a pre-existing window,
109 ;; we don't want to delete that window. 109;;; ;; we don't want to delete that window.
110 t ;;(delete-window win) 110;;; t ;;(delete-window win)
111 )))) 111;;; )
112 )))
112 (with-current-buffer buf 113 (with-current-buffer buf
113 (bury-buffer (unless (and (eq buf (window-buffer (selected-window))) 114 (bury-buffer (unless (and (eq buf (window-buffer (selected-window)))
114 (not (window-dedicated-p (selected-window)))) 115 (not (window-dedicated-p (selected-window))))
diff --git a/lisp/pcvs.el b/lisp/pcvs.el
index 120acbbc2bc..0a666927c52 100644
--- a/lisp/pcvs.el
+++ b/lisp/pcvs.el
@@ -1925,6 +1925,18 @@ to hear about anymore."
1925 (cvs-mode-find-file e 'dont-select)) 1925 (cvs-mode-find-file e 'dont-select))
1926 1926
1927 1927
1928(defun cvs-mode-view-file (e)
1929 "View the file."
1930 (interactive (list last-input-event))
1931 (cvs-mode-find-file e nil t))
1932
1933
1934(defun cvs-mode-view-file-other-window (e)
1935 "View the file."
1936 (interactive (list last-input-event))
1937 (cvs-mode-find-file e t t))
1938
1939
1928(defun cvs-find-modif (fi) 1940(defun cvs-find-modif (fi)
1929 (with-temp-buffer 1941 (with-temp-buffer
1930 (call-process cvs-program nil (current-buffer) nil 1942 (call-process cvs-program nil (current-buffer) nil
@@ -1935,7 +1947,7 @@ to hear about anymore."
1935 1))) 1947 1)))
1936 1948
1937 1949
1938(defun cvs-mode-find-file (e &optional other) 1950(defun cvs-mode-find-file (e &optional other view)
1939 "Select a buffer containing the file. 1951 "Select a buffer containing the file.
1940With a prefix, opens the buffer in an OTHER window." 1952With a prefix, opens the buffer in an OTHER window."
1941 (interactive (list last-input-event current-prefix-arg)) 1953 (interactive (list last-input-event current-prefix-arg))
@@ -1963,8 +1975,10 @@ With a prefix, opens the buffer in an OTHER window."
1963 (let ((buf (if rev (cvs-retrieve-revision fi rev) 1975 (let ((buf (if rev (cvs-retrieve-revision fi rev)
1964 (find-file-noselect (cvs-fileinfo->full-path fi))))) 1976 (find-file-noselect (cvs-fileinfo->full-path fi)))))
1965 (funcall (cond ((eq other 'dont-select) 'display-buffer) 1977 (funcall (cond ((eq other 'dont-select) 'display-buffer)
1966 (other 'switch-to-buffer-other-window) 1978 (other
1967 (t 'switch-to-buffer)) 1979 (if view 'view-buffer-other-window
1980 'switch-to-buffer-other-window))
1981 (t (if view 'view-buffer 'switch-to-buffer)))
1968 buf) 1982 buf)
1969 (when (and cvs-find-file-and-jump (cvs-applicable-p fi 'diff-base)) 1983 (when (and cvs-find-file-and-jump (cvs-applicable-p fi 'diff-base))
1970 (goto-line (cvs-find-modif fi))) 1984 (goto-line (cvs-find-modif fi)))
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 2f910608d5c..d90fe77fe28 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -866,20 +866,6 @@ Returns the compilation buffer created."
866 (if (eq mode t) 866 (if (eq mode t)
867 (prog1 "compilation" (require 'comint)) 867 (prog1 "compilation" (require 'comint))
868 (replace-regexp-in-string "-mode$" "" (symbol-name mode)))) 868 (replace-regexp-in-string "-mode$" "" (symbol-name mode))))
869 (process-environment
870 (append
871 compilation-environment
872 (if (if (boundp 'system-uses-terminfo) ; `if' for compiler warning
873 system-uses-terminfo)
874 (list "TERM=dumb" "TERMCAP="
875 (format "COLUMNS=%d" (window-width)))
876 (list "TERM=emacs"
877 (format "TERMCAP=emacs:co#%d:tc=unknown:"
878 (window-width))))
879 ;; Set the EMACS variable, but
880 ;; don't override users' setting of $EMACS.
881 (unless (getenv "EMACS") '("EMACS=t"))
882 (copy-sequence process-environment)))
883 cd-path ; in case process-environment contains CDPATH 869 cd-path ; in case process-environment contains CDPATH
884 (thisdir (if (string-match "^\\s *cd\\s +\\(.+?\\)\\s *[;&\n]" command) 870 (thisdir (if (string-match "^\\s *cd\\s +\\(.+?\\)\\s *[;&\n]" command)
885 (substitute-in-file-name (match-string 1 command)) 871 (substitute-in-file-name (match-string 1 command))
@@ -903,18 +889,18 @@ Returns the compilation buffer created."
903 (error nil)) 889 (error nil))
904 (error "Cannot have two processes in `%s' at once" 890 (error "Cannot have two processes in `%s' at once"
905 (buffer-name))))) 891 (buffer-name)))))
906 ;; Clear out the compilation buffer and make it writable.
907 ;; Change its default-directory to the directory where the compilation
908 ;; will happen, and insert a `default-directory' to indicate this.
909 (setq buffer-read-only nil)
910 (buffer-disable-undo (current-buffer)) 892 (buffer-disable-undo (current-buffer))
911 (erase-buffer) 893 ;; Make compilation buffer read-only. The filter can still write it.
912 (buffer-enable-undo (current-buffer)) 894 ;; Clear out the compilation buffer.
913 (cd thisdir) 895 (let ((inhibit-read-only t))
914 ;; output a mode setter, for saving and later reloading this buffer 896 (erase-buffer)
915 (insert "-*- mode: " name-of-mode 897 ;; Change its default-directory to the directory where the compilation
916 "; default-directory: " (prin1-to-string default-directory) 898 ;; will happen, and insert a `cd' command to indicate this.
917 " -*-\n" command "\n") 899 (setq default-directory thisdir)
900 ;; output a mode setter, for saving and later reloading this buffer
901 (insert "-*- mode: " name-of-mode
902 "; default-directory: " (prin1-to-string default-directory)
903 " -*-\n" command "\n"))
918 (set-buffer-modified-p nil)) 904 (set-buffer-modified-p nil))
919 ;; If we're already in the compilation buffer, go to the end 905 ;; If we're already in the compilation buffer, go to the end
920 ;; of the buffer, so point will track the compilation output. 906 ;; of the buffer, so point will track the compilation output.
@@ -923,70 +909,83 @@ Returns the compilation buffer created."
923 ;; Pop up the compilation buffer. 909 ;; Pop up the compilation buffer.
924 (setq outwin (display-buffer outbuf nil t)) 910 (setq outwin (display-buffer outbuf nil t))
925 (with-current-buffer outbuf 911 (with-current-buffer outbuf
926 (if (not (eq mode t)) 912 (let ((process-environment
927 (funcall mode) 913 (append
928 (with-no-warnings (comint-mode)) 914 compilation-environment
929 (compilation-shell-minor-mode)) 915 (if (if (boundp 'system-uses-terminfo) ; `if' for compiler warning
930 ;; In what way is it non-ergonomic ? -stef 916 system-uses-terminfo)
931 ;; (toggle-read-only 1) ;;; Non-ergonomic. 917 (list "TERM=dumb" "TERMCAP="
932 (if highlight-regexp 918 (format "COLUMNS=%d" (window-width)))
933 (set (make-local-variable 'compilation-highlight-regexp) 919 (list "TERM=emacs"
934 highlight-regexp)) 920 (format "TERMCAP=emacs:co#%d:tc=unknown:"
935 (set (make-local-variable 'compilation-arguments) 921 (window-width))))
936 (list command mode name-function highlight-regexp)) 922 ;; Set the EMACS variable, but
937 (set (make-local-variable 'revert-buffer-function) 923 ;; don't override users' setting of $EMACS.
938 'compilation-revert-buffer) 924 (unless (getenv "EMACS") '("EMACS=t"))
939 (set-window-start outwin (point-min)) 925 (copy-sequence process-environment))))
940 (or (eq outwin (selected-window)) 926 (if (not (eq mode t))
941 (set-window-point outwin (if compilation-scroll-output 927 (funcall mode)
942 (point) 928 (setq buffer-read-only nil)
943 (point-min)))) 929 (with-no-warnings (comint-mode))
944 ;; The setup function is called before compilation-set-window-height 930 (compilation-shell-minor-mode))
945 ;; so it can set the compilation-window-height buffer locally. 931 (if highlight-regexp
946 (if compilation-process-setup-function 932 (set (make-local-variable 'compilation-highlight-regexp)
947 (funcall compilation-process-setup-function)) 933 highlight-regexp))
948 (compilation-set-window-height outwin) 934 (set (make-local-variable 'compilation-arguments)
949 ;; Start the compilation. 935 (list command mode name-function highlight-regexp))
950 (if (fboundp 'start-process) 936 (set (make-local-variable 'revert-buffer-function)
951 (let ((proc (if (eq mode t) 937 'compilation-revert-buffer)
952 (get-buffer-process 938 (set-window-start outwin (point-min))
953 (with-no-warnings 939 (or (eq outwin (selected-window))
954 (comint-exec outbuf (downcase mode-name) 940 (set-window-point outwin (if compilation-scroll-output
955 shell-file-name nil `("-c" ,command)))) 941 (point)
956 (start-process-shell-command (downcase mode-name) 942 (point-min))))
957 outbuf command)))) 943 ;; The setup function is called before compilation-set-window-height
958 ;; Make the buffer's mode line show process state. 944 ;; so it can set the compilation-window-height buffer locally.
959 (setq mode-line-process '(":%s")) 945 (if compilation-process-setup-function
960 (set-process-sentinel proc 'compilation-sentinel) 946 (funcall compilation-process-setup-function))
961 (set-process-filter proc 'compilation-filter) 947 (compilation-set-window-height outwin)
962 (set-marker (process-mark proc) (point) outbuf) 948 ;; Start the compilation.
963 (setq compilation-in-progress 949 (if (fboundp 'start-process)
964 (cons proc compilation-in-progress))) 950 (let ((proc (if (eq mode t)
965 ;; No asynchronous processes available. 951 (get-buffer-process
966 (message "Executing `%s'..." command) 952 (with-no-warnings
967 ;; Fake modeline display as if `start-process' were run. 953 (comint-exec outbuf (downcase mode-name)
968 (setq mode-line-process ":run") 954 shell-file-name nil `("-c" ,command))))
969 (force-mode-line-update) 955 (start-process-shell-command (downcase mode-name)
970 (sit-for 0) ; Force redisplay 956 outbuf command))))
971 (let ((status (call-process shell-file-name nil outbuf nil "-c" 957 ;; Make the buffer's mode line show process state.
972 command))) 958 (setq mode-line-process '(":%s"))
973 (cond ((numberp status) 959 (set-process-sentinel proc 'compilation-sentinel)
974 (compilation-handle-exit 'exit status 960 (set-process-filter proc 'compilation-filter)
975 (if (zerop status) 961 (set-marker (process-mark proc) (point) outbuf)
976 "finished\n" 962 (setq compilation-in-progress
977 (format "\ 963 (cons proc compilation-in-progress)))
964 ;; No asynchronous processes available.
965 (message "Executing `%s'..." command)
966 ;; Fake modeline display as if `start-process' were run.
967 (setq mode-line-process ":run")
968 (force-mode-line-update)
969 (sit-for 0) ; Force redisplay
970 (let ((status (call-process shell-file-name nil outbuf nil "-c"
971 command)))
972 (cond ((numberp status)
973 (compilation-handle-exit 'exit status
974 (if (zerop status)
975 "finished\n"
976 (format "\
978exited abnormally with code %d\n" 977exited abnormally with code %d\n"
979 status)))) 978 status))))
980 ((stringp status) 979 ((stringp status)
981 (compilation-handle-exit 'signal status 980 (compilation-handle-exit 'signal status
982 (concat status "\n"))) 981 (concat status "\n")))
983 (t 982 (t
984 (compilation-handle-exit 'bizarre status status)))) 983 (compilation-handle-exit 'bizarre status status))))
985 ;; Without async subprocesses, the buffer is not yet 984 ;; Without async subprocesses, the buffer is not yet
986 ;; fontified, so fontify it now. 985 ;; fontified, so fontify it now.
987 (let ((font-lock-verbose nil)) ; shut up font-lock messages 986 (let ((font-lock-verbose nil)) ; shut up font-lock messages
988 (font-lock-fontify-buffer)) 987 (font-lock-fontify-buffer))
989 (message "Executing `%s'...done" command))) 988 (message "Executing `%s'...done" command))))
990 (if (buffer-local-value 'compilation-scroll-output outbuf) 989 (if (buffer-local-value 'compilation-scroll-output outbuf)
991 (save-selected-window 990 (save-selected-window
992 (select-window outwin) 991 (select-window outwin)
@@ -1108,7 +1107,7 @@ from a different message."
1108 :version "21.4") 1107 :version "21.4")
1109 1108
1110;;;###autoload 1109;;;###autoload
1111(defun compilation-mode () 1110(defun compilation-mode (&optional name-of-mode)
1112 "Major mode for compilation log buffers. 1111 "Major mode for compilation log buffers.
1113\\<compilation-mode-map>To visit the source for a line-numbered error, 1112\\<compilation-mode-map>To visit the source for a line-numbered error,
1114move point to the error message line and type \\[compile-goto-error]. 1113move point to the error message line and type \\[compile-goto-error].
@@ -1121,7 +1120,7 @@ Runs `compilation-mode-hook' with `run-hooks' (which see).
1121 (kill-all-local-variables) 1120 (kill-all-local-variables)
1122 (use-local-map compilation-mode-map) 1121 (use-local-map compilation-mode-map)
1123 (setq major-mode 'compilation-mode 1122 (setq major-mode 'compilation-mode
1124 mode-name "Compilation") 1123 mode-name (or name-of-mode "Compilation"))
1125 (set (make-local-variable 'page-delimiter) 1124 (set (make-local-variable 'page-delimiter)
1126 compilation-page-delimiter) 1125 compilation-page-delimiter)
1127 (compilation-setup) 1126 (compilation-setup)
@@ -1187,6 +1186,7 @@ If nil, use the beginning of buffer.")
1187 "Prepare the buffer for the compilation parsing commands to work. 1186 "Prepare the buffer for the compilation parsing commands to work.
1188Optional argument MINOR indicates this is called from 1187Optional argument MINOR indicates this is called from
1189`compilation-minor-mode'." 1188`compilation-minor-mode'."
1189 (setq buffer-read-only t)
1190 (make-local-variable 'compilation-current-error) 1190 (make-local-variable 'compilation-current-error)
1191 (make-local-variable 'compilation-messages-start) 1191 (make-local-variable 'compilation-messages-start)
1192 (make-local-variable 'compilation-error-screen-columns) 1192 (make-local-variable 'compilation-error-screen-columns)
@@ -1248,7 +1248,7 @@ Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
1248 1248
1249(defun compilation-handle-exit (process-status exit-status msg) 1249(defun compilation-handle-exit (process-status exit-status msg)
1250 "Write MSG in the current buffer and hack its mode-line-process." 1250 "Write MSG in the current buffer and hack its mode-line-process."
1251 (let ((buffer-read-only nil) 1251 (let ((inhibit-read-only t)
1252 (status (if compilation-exit-message-function 1252 (status (if compilation-exit-message-function
1253 (funcall compilation-exit-message-function 1253 (funcall compilation-exit-message-function
1254 process-status exit-status msg) 1254 process-status exit-status msg)
diff --git a/lisp/server.el b/lisp/server.el
index 161c1f2b5d9..baf07a87186 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -946,6 +946,8 @@ With prefix arg, silently save all file-visiting buffers, then kill."
946 (remove-hook 'kill-buffer-query-functions 'server-kill-buffer-query-function) 946 (remove-hook 'kill-buffer-query-functions 'server-kill-buffer-query-function)
947 (remove-hook 'kill-emacs-query-functions 'server-kill-emacs-query-function) 947 (remove-hook 'kill-emacs-query-functions 'server-kill-emacs-query-function)
948 (remove-hook 'kill-buffer-hook 'server-kill-buffer)) 948 (remove-hook 'kill-buffer-hook 'server-kill-buffer))
949
950(add-hook 'server-unload-hook 'server-unload-hook)
949 951
950(provide 'server) 952(provide 'server)
951 953
diff --git a/lisp/shadowfile.el b/lisp/shadowfile.el
index b3427ac59e5..f047223cbae 100644
--- a/lisp/shadowfile.el
+++ b/lisp/shadowfile.el
@@ -837,6 +837,8 @@ look for files that have been changed and need to be copied to other systems."
837 (symbol-function 'shadow-orig-save-buffers-kill-emacs))) 837 (symbol-function 'shadow-orig-save-buffers-kill-emacs)))
838 (remove-hook 'write-file-hooks 'shadow-add-to-todo)) 838 (remove-hook 'write-file-hooks 'shadow-add-to-todo))
839 839
840(add-hook 'shadowfile-unload-hook 'shadowfile-unload-hook)
841
840(provide 'shadowfile) 842(provide 'shadowfile)
841 843
842;;; arch-tag: e2f4cdd7-2bab-4def-9130-9e69b412b79e 844;;; arch-tag: e2f4cdd7-2bab-4def-9130-9e69b412b79e
diff --git a/lisp/startup.el b/lisp/startup.el
index 1cee4e9d013..3fab203cf59 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1159,7 +1159,7 @@ where FACE is a valid face specification, as it can be used with
1159 (emacs-version) 1159 (emacs-version)
1160 "\n" 1160 "\n"
1161 :face '(variable-pitch :height 0.5) 1161 :face '(variable-pitch :height 0.5)
1162 "Copyright (C) 2002 Free Software Foundation, Inc.") 1162 "Copyright (C) 2004 Free Software Foundation, Inc.")
1163 (and auto-save-list-file-prefix 1163 (and auto-save-list-file-prefix
1164 ;; Don't signal an error if the 1164 ;; Don't signal an error if the
1165 ;; directory for auto-save-list files 1165 ;; directory for auto-save-list files
@@ -1325,7 +1325,7 @@ More Manuals / Ordering Manuals How to order printed manuals from the FSF.
1325") 1325")
1326 (insert "\n\n" (emacs-version) 1326 (insert "\n\n" (emacs-version)
1327 " 1327 "
1328Copyright (C) 2002 Free Software Foundation, Inc.")) 1328Copyright (C) 2004 Free Software Foundation, Inc."))
1329 1329
1330 ;; No mouse menus, so give help using kbd commands. 1330 ;; No mouse menus, so give help using kbd commands.
1331 1331
@@ -1373,7 +1373,7 @@ If you have no Meta key, you may instead type ESC followed by the character.)")
1373 1373
1374 (insert "\n\n" (emacs-version) 1374 (insert "\n\n" (emacs-version)
1375 " 1375 "
1376Copyright (C) 2002 Free Software Foundation, Inc.") 1376Copyright (C) 2004 Free Software Foundation, Inc.")
1377 1377
1378 (if (and (eq (key-binding "\C-h\C-c") 'describe-copying) 1378 (if (and (eq (key-binding "\C-h\C-c") 'describe-copying)
1379 (eq (key-binding "\C-h\C-d") 'describe-distribution) 1379 (eq (key-binding "\C-h\C-d") 'describe-distribution)
diff --git a/lisp/strokes.el b/lisp/strokes.el
index cd3e82c4d3c..57f1e3355b2 100644
--- a/lisp/strokes.el
+++ b/lisp/strokes.el
@@ -1354,7 +1354,8 @@ If STROKES-MAP is not given, `strokes-global-map' will be used instead."
1354 :color-symbols 1354 :color-symbols
1355 `(("foreground" 1355 `(("foreground"
1356 . ,(frame-parameter nil 'foreground-color)))))) 1356 . ,(frame-parameter nil 'foreground-color))))))
1357 finally do (kill-region (1+ (point)) (point-max))) 1357 finally do (unless (eobp)
1358 (kill-region (1+ (point)) (point-max))))
1358 (view-buffer "*Strokes List*" nil) 1359 (view-buffer "*Strokes List*" nil)
1359 (set (make-local-variable 'view-mode-map) 1360 (set (make-local-variable 'view-mode-map)
1360 (let ((map (copy-keymap view-mode-map))) 1361 (let ((map (copy-keymap view-mode-map)))
@@ -1745,6 +1746,8 @@ Store XPM in buffer BUFNAME if supplied \(default is ` *strokes-xpm*'\)"
1745 (strokes-mode -1) 1746 (strokes-mode -1)
1746 (remove-hook 'kill-emacs-query-functions 'strokes-prompt-user-save-strokes)) 1747 (remove-hook 'kill-emacs-query-functions 'strokes-prompt-user-save-strokes))
1747 1748
1749(add-hooks 'strokes-unload-hook 'strokes-unload-hook)
1750
1748(run-hooks 'strokes-load-hook) 1751(run-hooks 'strokes-load-hook)
1749(provide 'strokes) 1752(provide 'strokes)
1750 1753
diff --git a/lisp/subr.el b/lisp/subr.el
index 6860dd57984..a06b136b642 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1212,51 +1212,59 @@ any other non-digit terminates the character code and is then used as input."))
1212 code)) 1212 code))
1213 1213
1214(defun read-passwd (prompt &optional confirm default) 1214(defun read-passwd (prompt &optional confirm default)
1215 "Read a password, prompting with PROMPT. Echo `.' for each character typed. 1215 "Read a password, prompting with PROMPT, and return it.
1216End with RET, LFD, or ESC. DEL or C-h rubs out. C-u kills line. 1216If optional CONFIRM is non-nil, read the password twice to make sure.
1217If optional CONFIRM is non-nil, read password twice to make sure. 1217Optional DEFAULT is a default password to use instead of empty input.
1218Optional DEFAULT is a default password to use instead of empty input." 1218
1219 (if confirm 1219This function echoes `.' for each character that the user types.
1220 (let (success) 1220The user ends with RET, LFD, or ESC. DEL or C-h rubs out. C-u kills line.
1221 (while (not success) 1221C-g quits; if `inhibit-quit' was non-nil around this function,
1222 (let ((first (read-passwd prompt nil default)) 1222then it returns nil if the user types C-g.
1223 (second (read-passwd "Confirm password: " nil default))) 1223
1224 (if (equal first second) 1224Once the caller uses the password, it can erase the password
1225 (progn 1225by doing (clear-string STRING)."
1226 (and (arrayp second) (clear-string second)) 1226 (with-local-quit
1227 (setq success first)) 1227 (if confirm
1228 (and (arrayp first) (clear-string first)) 1228 (let (success)
1229 (and (arrayp second) (clear-string second)) 1229 (while (not success)
1230 (message "Password not repeated accurately; please start over") 1230 (let ((first (read-passwd prompt nil default))
1231 (sit-for 1)))) 1231 (second (read-passwd "Confirm password: " nil default)))
1232 success) 1232 (if (equal first second)
1233 (let ((pass nil) 1233 (progn
1234 (c 0) 1234 (and (arrayp second) (clear-string second))
1235 (echo-keystrokes 0) 1235 (setq success first))
1236 (cursor-in-echo-area t)) 1236 (and (arrayp first) (clear-string first))
1237 (while (progn (message "%s%s" 1237 (and (arrayp second) (clear-string second))
1238 prompt 1238 (message "Password not repeated accurately; please start over")
1239 (make-string (length pass) ?.)) 1239 (sit-for 1))))
1240 (setq c (read-char-exclusive nil t)) 1240 success)
1241 (and (/= c ?\r) (/= c ?\n) (/= c ?\e))) 1241 (let ((pass nil)
1242 (clear-this-command-keys) 1242 (c 0)
1243 (if (= c ?\C-u) 1243 (echo-keystrokes 0)
1244 (progn 1244 (cursor-in-echo-area t))
1245 (and (arrayp pass) (clear-string pass)) 1245 (while (progn (message "%s%s"
1246 (setq pass "")) 1246 prompt
1247 (if (and (/= c ?\b) (/= c ?\177)) 1247 (make-string (length pass) ?.))
1248 (let* ((new-char (char-to-string c)) 1248 (setq c (read-char-exclusive nil t))
1249 (new-pass (concat pass new-char))) 1249 (and (/= c ?\r) (/= c ?\n) (/= c ?\e)))
1250 (clear-this-command-keys)
1251 (if (= c ?\C-u)
1252 (progn
1250 (and (arrayp pass) (clear-string pass)) 1253 (and (arrayp pass) (clear-string pass))
1251 (clear-string new-char) 1254 (setq pass ""))
1252 (setq c ?\0) 1255 (if (and (/= c ?\b) (/= c ?\177))
1253 (setq pass new-pass)) 1256 (let* ((new-char (char-to-string c))
1254 (if (> (length pass) 0) 1257 (new-pass (concat pass new-char)))
1255 (let ((new-pass (substring pass 0 -1)))
1256 (and (arrayp pass) (clear-string pass)) 1258 (and (arrayp pass) (clear-string pass))
1257 (setq pass new-pass)))))) 1259 (clear-string new-char)
1258 (message nil) 1260 (setq c ?\0)
1259 (or pass default "")))) 1261 (setq pass new-pass))
1262 (if (> (length pass) 0)
1263 (let ((new-pass (substring pass 0 -1)))
1264 (and (arrayp pass) (clear-string pass))
1265 (setq pass new-pass))))))
1266 (message nil)
1267 (or pass default "")))))
1260 1268
1261;; This should be used by `call-interactively' for `n' specs. 1269;; This should be used by `call-interactively' for `n' specs.
1262(defun read-number (prompt &optional default) 1270(defun read-number (prompt &optional default)
@@ -1834,14 +1842,14 @@ See also `with-temp-file' and `with-output-to-string'."
1834 1842
1835(defmacro with-local-quit (&rest body) 1843(defmacro with-local-quit (&rest body)
1836 "Execute BODY, allowing quits to terminate BODY but not escape further. 1844 "Execute BODY, allowing quits to terminate BODY but not escape further.
1837When a quit terminates BODY, `with-local-quit' requests another quit when 1845When a quit terminates BODY, `with-local-quit' returns nil but
1838it finishes. That quit will be processed in turn, the next time quitting 1846requests another quit. That quit will be processed, the next time quitting
1839is again allowed." 1847is allowed once again."
1840 (declare (debug t) (indent 0)) 1848 (declare (debug t) (indent 0))
1841 `(condition-case nil 1849 `(condition-case nil
1842 (let ((inhibit-quit nil)) 1850 (let ((inhibit-quit nil))
1843 ,@body) 1851 ,@body)
1844 (quit (setq quit-flag t)))) 1852 (quit (setq quit-flag t) nil)))
1845 1853
1846(defmacro combine-after-change-calls (&rest body) 1854(defmacro combine-after-change-calls (&rest body)
1847 "Execute BODY, but don't call the after-change functions till the end. 1855 "Execute BODY, but don't call the after-change functions till the end.
@@ -2035,11 +2043,12 @@ STRING should be given if the last search was by `string-match' on STRING."
2035 2043
2036(defun looking-back (regexp &optional limit) 2044(defun looking-back (regexp &optional limit)
2037 "Return non-nil if text before point matches regular expression REGEXP. 2045 "Return non-nil if text before point matches regular expression REGEXP.
2038Like `looking-at' except backwards and slower. 2046Like `looking-at' except matches before point, and is slower.
2039LIMIT if non-nil speeds up the search by specifying how far back the 2047LIMIT if non-nil speeds up the search by specifying how far back the
2040match can start." 2048match can start."
2041 (save-excursion 2049 (not (null
2042 (re-search-backward (concat "\\(?:" regexp "\\)\\=") limit t))) 2050 (save-excursion
2051 (re-search-backward (concat "\\(?:" regexp "\\)\\=") limit t)))))
2043 2052
2044(defconst split-string-default-separators "[ \f\t\n\r\v]+" 2053(defconst split-string-default-separators "[ \f\t\n\r\v]+"
2045 "The default value of separators for `split-string'. 2054 "The default value of separators for `split-string'.
diff --git a/lisp/term.el b/lisp/term.el
index 7b0fd1aaf73..bc816e476e1 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -2,7 +2,8 @@
2 2
3;;; Copyright (C) 1988, 1990, 1992, 1994, 1995, 2004 Free Software Foundation, Inc. 3;;; Copyright (C) 1988, 1990, 1992, 1994, 1995, 2004 Free Software Foundation, Inc.
4 4
5;; Author: Per Bothner <bothner@cygnus.com> 5;; Author: Per Bothner <per@bothner.com>
6;; Maintainer: Dan Nicolaescu <dann@ics.uci.edu>, Per Bothner <per@bothner.com>
6;; Based on comint mode written by: Olin Shivers <shivers@cs.cmu.edu> 7;; Based on comint mode written by: Olin Shivers <shivers@cs.cmu.edu>
7;; Keywords: processes 8;; Keywords: processes
8 9
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index b98c9fc183d..f0547d6d596 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -1618,10 +1618,11 @@ Global `ispell-quit' set to start location to continue spell session."
1618 (set-buffer (get-buffer-create ispell-choices-buffer)) 1618 (set-buffer (get-buffer-create ispell-choices-buffer))
1619 (setq mode-line-format (concat "-- %b -- word: " word)) 1619 (setq mode-line-format (concat "-- %b -- word: " word))
1620 ;; XEmacs: no need for horizontal scrollbar in choices window 1620 ;; XEmacs: no need for horizontal scrollbar in choices window
1621 (and (fboundp 'set-specifier) 1621 (with-no-warnings
1622 (boundp 'horizontal-scrollbar-visible-p) 1622 (and (fboundp 'set-specifier)
1623 (set-specifier horizontal-scrollbar-visible-p nil 1623 (boundp 'horizontal-scrollbar-visible-p)
1624 (cons (current-buffer) nil))) 1624 (set-specifier horizontal-scrollbar-visible-p nil
1625 (cons (current-buffer) nil))))
1625 (erase-buffer) 1626 (erase-buffer)
1626 (if guess 1627 (if guess
1627 (progn 1628 (progn
@@ -1871,7 +1872,7 @@ Global `ispell-quit' set to start location to continue spell session."
1871 (if (and ispell-use-framepop-p (fboundp 'framepop-display-buffer)) 1872 (if (and ispell-use-framepop-p (fboundp 'framepop-display-buffer))
1872 (progn 1873 (progn
1873 (framepop-display-buffer (get-buffer ispell-choices-buffer)) 1874 (framepop-display-buffer (get-buffer ispell-choices-buffer))
1874 (get-buffer-window ispell-choices-buffer t) 1875;;; (get-buffer-window ispell-choices-buffer t)
1875 (select-window (previous-window))) ; *Choices* window 1876 (select-window (previous-window))) ; *Choices* window
1876 ;; standard selection by splitting a small buffer out of this window. 1877 ;; standard selection by splitting a small buffer out of this window.
1877 (let ((choices-window (get-buffer-window ispell-choices-buffer))) 1878 (let ((choices-window (get-buffer-window ispell-choices-buffer)))
@@ -2355,7 +2356,7 @@ Keeps argument list for future ispell invocations for no async support."
2355 (if extended-char-mode ; ~ extended character mode 2356 (if extended-char-mode ; ~ extended character mode
2356 (ispell-send-string (concat extended-char-mode "\n")))) 2357 (ispell-send-string (concat extended-char-mode "\n"))))
2357 (if ispell-async-processp 2358 (if ispell-async-processp
2358 (process-kill-without-query ispell-process)))) 2359 (set-process-query-on-exit-flag ispell-process nil))))
2359 2360
2360;;;###autoload 2361;;;###autoload
2361(defun ispell-kill-ispell (&optional no-error) 2362(defun ispell-kill-ispell (&optional no-error)
@@ -3286,19 +3287,23 @@ You can bind this to the key C-c i in GNUS or mail by adding to
3286 (cond 3287 (cond
3287 ((functionp 'sc-cite-regexp) ; sc 3.0 3288 ((functionp 'sc-cite-regexp) ; sc 3.0
3288 (concat "\\(" (sc-cite-regexp) "\\)" "\\|" 3289 (concat "\\(" (sc-cite-regexp) "\\)" "\\|"
3289 (ispell-non-empty-string sc-reference-tag-string))) 3290 (with-no-warnings
3291 (ispell-non-empty-string sc-reference-tag-string))))
3290 ((boundp 'sc-cite-regexp) ; sc 2.3 3292 ((boundp 'sc-cite-regexp) ; sc 2.3
3291 (concat "\\(" sc-cite-regexp "\\)" "\\|" 3293 (concat "\\(" sc-cite-regexp "\\)" "\\|"
3292 (ispell-non-empty-string sc-reference-tag-string))) 3294 (with-no-warnings
3295 (ispell-non-empty-string sc-reference-tag-string))))
3293 ((or (equal major-mode 'news-reply-mode) ;GNUS 4 & below 3296 ((or (equal major-mode 'news-reply-mode) ;GNUS 4 & below
3294 (equal major-mode 'message-mode)) ;GNUS 5 3297 (equal major-mode 'message-mode)) ;GNUS 5
3295 (concat "In article <" "\\|" 3298 (concat "In article <" "\\|"
3296 "[^,;&+=\n]+ <[^,;&+=]+> writes:" "\\|" 3299 "[^,;&+=\n]+ <[^,;&+=]+> writes:" "\\|"
3297 message-cite-prefix-regexp "\\|" 3300 (with-no-warnings message-cite-prefix-regexp)
3301 "\\|"
3298 default-prefix)) 3302 default-prefix))
3299 ((equal major-mode 'mh-letter-mode) ; mh mail message 3303 ((equal major-mode 'mh-letter-mode) ; mh mail message
3300 (concat "[^,;&+=\n]+ writes:" "\\|" 3304 (concat "[^,;&+=\n]+ writes:" "\\|"
3301 (ispell-non-empty-string mh-ins-buf-prefix))) 3305 (with-no-warnings
3306 (ispell-non-empty-string mh-ins-buf-prefix))))
3302 ((not internal-messagep) ; Assume nn sent us this message. 3307 ((not internal-messagep) ; Assume nn sent us this message.
3303 (concat "In [a-zA-Z.]+ you write:" "\\|" 3308 (concat "In [a-zA-Z.]+ you write:" "\\|"
3304 "In <[^,;&+=]+> [^,;&+=]+ writes:" "\\|" 3309 "In <[^,;&+=]+> [^,;&+=]+ writes:" "\\|"
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 91a6c869a21..87f818cd70d 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,25 @@
12004-10-16 Richard M. Stallman <rms@gnu.org>
2
3 * url.el (url-do-setup): Don't set url-passwd-entry-func.
4
5 * url-vars.el (url-passwd-entry-func): Var deleted.
6 (mm-mime-mule-charset-alist): Remove compatibility code for old Gnus.
7 (url-weekday-alist): Renamed from weekday-alist.
8 (url-monthabbrev-alist): Renamed from monthabbrev-alist.
9 (url-vars-unload-hook): Initialize hook var to hold the function.
10
11 * url-util.el (url-get-normalized-date): Use
12 url-weekday-alist and url-monthabbrev-alist.
13
14 * url-misc.el: Load cl at compile time.
15
16 * url-mailto.el: Don't load cl.
17 (url-mailto): Fix call to `push'.
18
19 * url-gw.el (url-open-telnet): Use read-passwd.
20
21 * url-auth.el (url-basic-auth, url-digest-auth): Use read-passwd.
22
12004-10-12 Simon Josefsson <jas@extundo.com> 232004-10-12 Simon Josefsson <jas@extundo.com>
2 24
3 * url-vars.el (url-gateway-method): Add new method `tls'. 25 * url-vars.el (url-gateway-method): Add new method `tls'.
diff --git a/lisp/url/url-auth.el b/lisp/url/url-auth.el
index 39bb730bebc..e92fdd1542c 100644
--- a/lisp/url/url-auth.el
+++ b/lisp/url/url-auth.el
@@ -78,7 +78,7 @@ instead of the pathname inheritance method."
78 ((and prompt (not byserv)) 78 ((and prompt (not byserv))
79 (setq user (read-string (url-auth-user-prompt url realm) 79 (setq user (read-string (url-auth-user-prompt url realm)
80 (user-real-login-name)) 80 (user-real-login-name))
81 pass (funcall url-passwd-entry-func "Password: ")) 81 pass (read-passwd "Password: "))
82 (set url-basic-auth-storage 82 (set url-basic-auth-storage
83 (cons (list server 83 (cons (list server
84 (cons path 84 (cons path
@@ -102,7 +102,7 @@ instead of the pathname inheritance method."
102 (progn 102 (progn
103 (setq user (read-string (url-auth-user-prompt url realm) 103 (setq user (read-string (url-auth-user-prompt url realm)
104 (user-real-login-name)) 104 (user-real-login-name))
105 pass (funcall url-passwd-entry-func "Password: ") 105 pass (read-passwd "Password: ")
106 retval (base64-encode-string (format "%s:%s" user pass)) 106 retval (base64-encode-string (format "%s:%s" user pass))
107 byserv (assoc server (symbol-value url-basic-auth-storage))) 107 byserv (assoc server (symbol-value url-basic-auth-storage)))
108 (setcdr byserv 108 (setcdr byserv
@@ -160,7 +160,7 @@ instead of hostname:portnum."
160 ((and prompt (not byserv)) 160 ((and prompt (not byserv))
161 (setq user (read-string (url-auth-user-prompt url realm) 161 (setq user (read-string (url-auth-user-prompt url realm)
162 (user-real-login-name)) 162 (user-real-login-name))
163 pass (funcall url-passwd-entry-func "Password: ") 163 pass (read-passwd "Password: ")
164 url-digest-auth-storage 164 url-digest-auth-storage
165 (cons (list server 165 (cons (list server
166 (cons path 166 (cons path
@@ -187,7 +187,7 @@ instead of hostname:portnum."
187 (progn 187 (progn
188 (setq user (read-string (url-auth-user-prompt url realm) 188 (setq user (read-string (url-auth-user-prompt url realm)
189 (user-real-login-name)) 189 (user-real-login-name))
190 pass (funcall url-passwd-entry-func "Password: ") 190 pass (read-passwd "Password: ")
191 retval (setq retval 191 retval (setq retval
192 (cons user 192 (cons user
193 (url-digest-auth-create-key 193 (url-digest-auth-create-key
diff --git a/lisp/url/url-gw.el b/lisp/url/url-gw.el
index 608827d7cee..933dd161004 100644
--- a/lisp/url/url-gw.el
+++ b/lisp/url/url-gw.el
@@ -186,7 +186,7 @@ linked Emacs under SunOS 4.x"
186 proc (concat 186 proc (concat
187 (or url-gateway-telnet-password 187 (or url-gateway-telnet-password
188 (setq url-gateway-telnet-password 188 (setq url-gateway-telnet-password
189 (funcall url-passwd-entry-func "Password: "))) 189 (read-passwd "Password: ")))
190 "\n")) 190 "\n"))
191 (erase-buffer) 191 (erase-buffer)
192 (url-wait-for-string url-gateway-prompt-pattern proc) 192 (url-wait-for-string url-gateway-prompt-pattern proc)
diff --git a/lisp/url/url-mailto.el b/lisp/url/url-mailto.el
index bcb6bad4179..f5192bcb03f 100644
--- a/lisp/url/url-mailto.el
+++ b/lisp/url/url-mailto.el
@@ -25,7 +25,6 @@
25 25
26;;; Code: 26;;; Code:
27 27
28(eval-when-compile (require 'cl))
29(require 'url-vars) 28(require 'url-vars)
30(require 'url-parse) 29(require 'url-parse)
31(require 'url-util) 30(require 'url-util)
@@ -85,7 +84,7 @@
85 (setq args (cons (list "x-url-from" source-url) args))) 84 (setq args (cons (list "x-url-from" source-url) args)))
86 85
87 (if (assoc "to" args) 86 (if (assoc "to" args)
88 (push to (cdr (assoc "to" args))) 87 (push (cdr (assoc "to" args)) to)
89 (setq args (cons (list "to" to) args))) 88 (setq args (cons (list "to" to) args)))
90 (setq subject (cdr-safe (assoc "subject" args))) 89 (setq subject (cdr-safe (assoc "subject" args)))
91 (if (fboundp url-mail-command) (funcall url-mail-command) (mail)) 90 (if (fboundp url-mail-command) (funcall url-mail-command) (mail))
diff --git a/lisp/url/url-misc.el b/lisp/url/url-misc.el
index ff2f1282137..ff18ef9b863 100644
--- a/lisp/url/url-misc.el
+++ b/lisp/url/url-misc.el
@@ -22,6 +22,7 @@
22;;; Boston, MA 02111-1307, USA. 22;;; Boston, MA 02111-1307, USA.
23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
24 24
25(eval-when-compile (require 'cl))
25(require 'url-vars) 26(require 'url-vars)
26(require 'url-parse) 27(require 'url-parse)
27(autoload 'Info-goto-node "info" "" t) 28(autoload 'Info-goto-node "info" "" t)
diff --git a/lisp/url/url-util.el b/lisp/url/url-util.el
index 5d1f73e0d5d..1d0bfcf0c48 100644
--- a/lisp/url/url-util.el
+++ b/lisp/url/url-util.el
@@ -192,13 +192,13 @@ Will not do anything if `url-show-status' is nil."
192 (nth 1 (current-time-zone)) 192 (nth 1 (current-time-zone))
193 "GMT")) 193 "GMT"))
194 (parsed (timezone-parse-date gmt)) 194 (parsed (timezone-parse-date gmt))
195 (day (cdr-safe (assoc (substring raw 0 3) weekday-alist))) 195 (day (cdr-safe (assoc (substring raw 0 3) url-weekday-alist)))
196 (year nil) 196 (year nil)
197 (month (car 197 (month (car
198 (rassoc 198 (rassoc
199 (string-to-int (aref parsed 1)) monthabbrev-alist))) 199 (string-to-int (aref parsed 1)) url-monthabbrev-alist)))
200 ) 200 )
201 (setq day (or (car-safe (rassoc day weekday-alist)) 201 (setq day (or (car-safe (rassoc day url-weekday-alist))
202 (substring raw 0 3)) 202 (substring raw 0 3))
203 year (aref parsed 0)) 203 year (aref parsed 0))
204 ;; This is needed for plexus servers, or the server will hang trying to 204 ;; This is needed for plexus servers, or the server will hang trying to
diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el
index a33d8ba43e3..97a9b8dc252 100644
--- a/lisp/url/url-vars.el
+++ b/lisp/url/url-vars.el
@@ -191,19 +191,6 @@ from the ACCESS_proxy environment variables."
191 (string :tag "Proxy"))) 191 (string :tag "Proxy")))
192 :group 'url) 192 :group 'url)
193 193
194(defcustom url-passwd-entry-func nil
195 "*Symbol indicating which function to call to read in a password.
196It will be set up depending on whether you are running EFS or ange-ftp
197at startup if it is nil. This function should accept the prompt
198string as its first argument, and the default value as its second
199argument."
200 :type '(choice (const :tag "Guess" :value nil)
201 (const :tag "Use Ange-FTP" :value ange-ftp-read-passwd)
202 (const :tag "Use EFS" :value efs-read-passwd)
203 (const :tag "Use Password Package" :value read-passwd)
204 (function :tag "Other"))
205 :group 'url-hairy)
206
207(defcustom url-standalone-mode nil 194(defcustom url-standalone-mode nil
208 "*Rely solely on the cache?" 195 "*Rely solely on the cache?"
209 :type 'boolean 196 :type 'boolean
@@ -240,24 +227,6 @@ Should be an assoc list of headers/contents.")
240(defvar url-mime-encoding-string nil 227(defvar url-mime-encoding-string nil
241 "*String to send in the Accept-encoding: field in HTTP requests.") 228 "*String to send in the Accept-encoding: field in HTTP requests.")
242 229
243;; `mm-mime-mule-charset-alist' in Gnus 5.8/9 contains elements whose
244;; cars aren't valid MIME charsets/coding systems, at least in Emacs.
245;; This gets it correct by construction in Emacs. Fixme: DTRT for
246;; XEmacs -- its `coding-system-list' doesn't have the BASE-ONLY arg.
247(when (and (not (featurep 'xemacs))
248 (fboundp 'coding-system-list))
249 (setq mm-mime-mule-charset-alist
250 (apply
251 'nconc
252 (mapcar
253 (lambda (cs)
254 (when (and (coding-system-get cs 'mime-charset)
255 (not (eq t (coding-system-get cs 'safe-charsets))))
256 (list (cons (coding-system-get cs 'mime-charset)
257 (delq 'ascii
258 (coding-system-get cs 'safe-charsets))))))
259 (coding-system-list 'base-only)))))
260
261;; Perhaps the first few should actually be given decreasing `q's and 230;; Perhaps the first few should actually be given decreasing `q's and
262;; the list should be trimmed significantly. 231;; the list should be trimmed significantly.
263;; Fixme: do something sane if we don't have `sort-coding-systems' 232;; Fixme: do something sane if we don't have `sort-coding-systems'
@@ -381,14 +350,14 @@ Currently supported methods:
381 350
382(defvar url-setup-done nil "Has setup configuration been done?") 351(defvar url-setup-done nil "Has setup configuration been done?")
383 352
384(defconst weekday-alist 353(defconst url-weekday-alist
385 '(("Sunday" . 0) ("Monday" . 1) ("Tuesday" . 2) ("Wednesday" . 3) 354 '(("Sunday" . 0) ("Monday" . 1) ("Tuesday" . 2) ("Wednesday" . 3)
386 ("Thursday" . 4) ("Friday" . 5) ("Saturday" . 6) 355 ("Thursday" . 4) ("Friday" . 5) ("Saturday" . 6)
387 ("Tues" . 2) ("Thurs" . 4) 356 ("Tues" . 2) ("Thurs" . 4)
388 ("Sun" . 0) ("Mon" . 1) ("Tue" . 2) ("Wed" . 3) 357 ("Sun" . 0) ("Mon" . 1) ("Tue" . 2) ("Wed" . 3)
389 ("Thu" . 4) ("Fri" . 5) ("Sat" . 6))) 358 ("Thu" . 4) ("Fri" . 5) ("Sat" . 6)))
390 359
391(defconst monthabbrev-alist 360(defconst url-monthabbrev-alist
392 '(("Jan" . 1) ("Feb" . 2) ("Mar" . 3) ("Apr" . 4) ("May" . 5) ("Jun" . 6) 361 '(("Jan" . 1) ("Feb" . 2) ("Mar" . 3) ("Apr" . 4) ("May" . 5) ("Jun" . 6)
393 ("Jul" . 7) ("Aug" . 8) ("Sep" . 9) ("Oct" . 10) ("Nov" . 11) 362 ("Jul" . 7) ("Aug" . 8) ("Sep" . 9) ("Oct" . 10) ("Nov" . 11)
394 ("Dec" . 12))) 363 ("Dec" . 12)))
@@ -425,6 +394,8 @@ This should be set, e.g. by mail user agents rendering HTML to avoid
425(defun url-vars-unload-hook () 394(defun url-vars-unload-hook ()
426 (remove-hook 'set-language-environment-hook 'url-set-mime-charset-string)) 395 (remove-hook 'set-language-environment-hook 'url-set-mime-charset-string))
427 396
397(add-hook 'url-vars-unload-hook 'url-vars-unload-hook)
398
428(provide 'url-vars) 399(provide 'url-vars)
429 400
430;;; arch-tag: 29205e5f-c5ce-433c-8d5d-38cbaed64b49 401;;; arch-tag: 29205e5f-c5ce-433c-8d5d-38cbaed64b49
diff --git a/lisp/url/url.el b/lisp/url/url.el
index f7b1b717681..75ddfdc3a2f 100644
--- a/lisp/url/url.el
+++ b/lisp/url/url.el
@@ -113,26 +113,6 @@ Emacs."
113 noproxy "") "\\)")) 113 noproxy "") "\\)"))
114 url-proxy-services)))) 114 url-proxy-services))))
115 115
116 ;; Set the password entry funtion based on user defaults or guess
117 ;; based on which remote-file-access package they are using.
118 (cond
119 (url-passwd-entry-func nil) ; Already been set
120 ((fboundp 'read-passwd) ; Use secure password if available
121 (setq url-passwd-entry-func 'read-passwd))
122 ((or (featurep 'efs) ; Using EFS
123 (featurep 'efs-auto)) ; or autoloading efs
124 (if (not (fboundp 'read-passwd))
125 (autoload 'read-passwd "passwd" "Read in a password" nil))
126 (setq url-passwd-entry-func 'read-passwd))
127 ((or (featurep 'ange-ftp) ; Using ange-ftp
128 (and (boundp 'file-name-handler-alist)
129 (not (featurep 'xemacs)))) ; ??
130 (setq url-passwd-entry-func 'ange-ftp-read-passwd))
131 (t
132 (url-warn
133 'security
134 "(url-setup): Can't determine how to read passwords, winging it.")))
135
136 (url-setup-privacy-info) 116 (url-setup-privacy-info)
137 (run-hooks 'url-load-hook) 117 (run-hooks 'url-load-hook)
138 (setq url-setup-done t))) 118 (setq url-setup-done t)))
diff --git a/lisp/vc-arch.el b/lisp/vc-arch.el
index e32fc474d94..70dbdcc85f2 100644
--- a/lisp/vc-arch.el
+++ b/lisp/vc-arch.el
@@ -283,8 +283,8 @@ Return non-nil if FILE is unchanged."
283 (setq logdir (expand-file-name version logdir)) 283 (setq logdir (expand-file-name version logdir))
284 (setq logdir (expand-file-name archive logdir)) 284 (setq logdir (expand-file-name archive logdir))
285 (setq logdir (expand-file-name "patch-log" logdir)) 285 (setq logdir (expand-file-name "patch-log" logdir))
286 ;; Revision names go: base-0, patch-N, version-0, versionfix-N. 286 (dolist (file (if (file-directory-p logdir) (directory-files logdir)))
287 (dolist (file (directory-files logdir)) 287 ;; Revision names go: base-0, patch-N, version-0, versionfix-M.
288 (when (and (eq (aref file 0) ?v) (not sealed)) 288 (when (and (eq (aref file 0) ?v) (not sealed))
289 (setq sealed t rev-nb 0)) 289 (setq sealed t rev-nb 0))
290 (if (and (string-match "-\\([0-9]+\\)\\'" file) 290 (if (and (string-match "-\\([0-9]+\\)\\'" file)
diff --git a/lisp/vc-hooks.el b/lisp/vc-hooks.el
index fef1431fe7d..22ff9edd428 100644
--- a/lisp/vc-hooks.el
+++ b/lisp/vc-hooks.el
@@ -754,8 +754,8 @@ current, and kill the buffer that visits the link."
754 (set (make-local-variable 'backup-inhibited) t)) 754 (set (make-local-variable 'backup-inhibited) t))
755 ;; Let the backend setup any buffer-local things he needs. 755 ;; Let the backend setup any buffer-local things he needs.
756 (vc-call-backend (vc-backend buffer-file-name) 'find-file-hook)) 756 (vc-call-backend (vc-backend buffer-file-name) 'find-file-hook))
757 ((let* ((link (file-symlink-p buffer-file-name)) 757 ((let ((link-type (and (file-symlink-p buffer-file-name)
758 (link-type (and link (vc-backend (file-chase-links link))))) 758 (vc-backend (file-chase-links buffer-file-name)))))
759 (cond ((not link-type) nil) ;Nothing to do. 759 (cond ((not link-type) nil) ;Nothing to do.
760 ((eq vc-follow-symlinks nil) 760 ((eq vc-follow-symlinks nil)
761 (message 761 (message
diff --git a/lisp/view.el b/lisp/view.el
index b17cd52ae35..e184d68b117 100644
--- a/lisp/view.el
+++ b/lisp/view.el
@@ -117,12 +117,12 @@ functions that enable or disable view mode.")
117 117
118(defvar view-page-size nil 118(defvar view-page-size nil
119 "Default number of lines to scroll by View page commands. 119 "Default number of lines to scroll by View page commands.
120If nil then the local value of this is initially set to window size.") 120If nil that means use the window size.")
121(make-variable-buffer-local 'view-page-size) 121(make-variable-buffer-local 'view-page-size)
122 122
123(defvar view-half-page-size nil 123(defvar view-half-page-size nil
124 "Default number of lines to scroll by View half page commands. 124 "Default number of lines to scroll by View half page commands.
125If nil then the local value of this is initially set to half window size.") 125If nil that means use half the window size.")
126(make-variable-buffer-local 'view-half-page-size) 126(make-variable-buffer-local 'view-half-page-size)
127 127
128(defvar view-last-regexp nil) 128(defvar view-last-regexp nil)
@@ -453,8 +453,8 @@ Entry to view-mode runs the normal hook `view-mode-hook'."
453 ;; This is to guarantee that the buffer-read-only variable is restored. 453 ;; This is to guarantee that the buffer-read-only variable is restored.
454 (add-hook 'change-major-mode-hook 'view-mode-disable nil t) 454 (add-hook 'change-major-mode-hook 'view-mode-disable nil t)
455 (setq view-mode t 455 (setq view-mode t
456 view-page-size (view-page-size-default view-page-size) 456 view-page-size nil
457 view-half-page-size (or view-half-page-size (/ (view-window-size) 2)) 457 view-half-page-size nil
458 view-old-buffer-read-only buffer-read-only 458 view-old-buffer-read-only buffer-read-only
459 buffer-read-only t 459 buffer-read-only t
460 view-old-Helper-return-blurb (and (boundp 'Helper-return-blurb) 460 view-old-Helper-return-blurb (and (boundp 'Helper-return-blurb)
@@ -675,7 +675,8 @@ previous state and go to previous buffer or window."
675 675
676(defun view-set-half-page-size-default (lines) 676(defun view-set-half-page-size-default (lines)
677 ;; Get and maybe set half page size. 677 ;; Get and maybe set half page size.
678 (if (not lines) view-half-page-size 678 (if (not lines) (or view-half-page-size
679 (/ (view-window-size) 2))
679 (setq view-half-page-size 680 (setq view-half-page-size
680 (if (zerop (setq lines (prefix-numeric-value lines))) 681 (if (zerop (setq lines (prefix-numeric-value lines)))
681 (/ (view-window-size) 2) 682 (/ (view-window-size) 2)
@@ -803,13 +804,13 @@ Exit if end of text is visible and `view-scroll-auto-exit' is non-nil.
803\\[View-scroll-page-backward-set-page-size]. 804\\[View-scroll-page-backward-set-page-size].
804If LINES is more than a window-full, only the last window-full is shown." 805If LINES is more than a window-full, only the last window-full is shown."
805 (interactive "P") 806 (interactive "P")
806 (view-scroll-lines lines nil view-page-size nil)) 807 (view-scroll-lines lines nil (view-page-size-default view-page-size) nil))
807 808
808(defun View-scroll-page-backward (&optional lines) 809(defun View-scroll-page-backward (&optional lines)
809 "Scroll \"page size\" or prefix LINES lines backward in View mode. 810 "Scroll \"page size\" or prefix LINES lines backward in View mode.
810See also `View-scroll-page-forward'." 811See also `View-scroll-page-forward'."
811 (interactive "P") 812 (interactive "P")
812 (view-scroll-lines lines t view-page-size nil)) 813 (view-scroll-lines lines t (view-page-size-default view-page-size) nil))
813 814
814(defun View-scroll-page-forward-set-page-size (&optional lines) 815(defun View-scroll-page-forward-set-page-size (&optional lines)
815 "Scroll forward LINES lines in View mode, setting the \"page size\". 816 "Scroll forward LINES lines in View mode, setting the \"page size\".
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index 40a234f02d6..323c75ed6de 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -859,6 +859,8 @@ This is meant to be added buffer-locally to `write-file-functions'."
859 (remove-hook 'write-file-functions 'whitespace-write-file-hook t) 859 (remove-hook 'write-file-functions 'whitespace-write-file-hook t)
860 (remove-hook 'kill-buffer-hook 'whitespace-buffer)) 860 (remove-hook 'kill-buffer-hook 'whitespace-buffer))
861 861
862(add-hook 'whitespace-unload-hook 'whitespace-unload-hook)
863
862(provide 'whitespace) 864(provide 'whitespace)
863 865
864;;; arch-tag: 4ff44e87-b63c-402d-95a6-15e51e58bd0c 866;;; arch-tag: 4ff44e87-b63c-402d-95a6-15e51e58bd0c