Mercurial > emacs
annotate lisp/novice.el @ 18092:8428d56cd207
(smtpmail-via-smtp): Recognize XVRB as a synonym for
VERB and XONE as a synonym for ONEX.
(smtpmail-read-response): Add "%s" to `message' calls to avoid
problems with percent signs in strings.
(smtpmail-read-response): Return all lines of the
response text as a list of strings. Formerly only the first line
was returned. This is insufficient when one wants to parse
e.g. an EHLO response.
Ignore responses starting with "0". This is necessary to support
the VERB SMTP extension.
(smtpmail-via-smtp): Try EHLO and find out which SMTP service
extensions the receiving mailer supports.
Issue the ONEX and XUSR commands if the corresponding extensions
are supported.
Issue VERB if supported and `smtpmail-debug-info' is non-nil.
Add SIZE attribute to MAIL FROM: command if SIZE extension is
supported.
Add code that could set the BODY= attribute to MAIL FROM: if the
receiving mailer supports 8BITMIME. This is currently disabled,
since doing it right might involve adding MIME headers to, and in
some cases reencoding, the message.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 01 Jun 1997 22:24:22 +0000 |
parents | 6f45dc8d9d56 |
children | 11218164bc54 |
rev | line source |
---|---|
659
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
282
diff
changeset
|
1 ;;; novice.el --- handling of disabled commands ("novice mode") for Emacs. |
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
282
diff
changeset
|
2 |
7300 | 3 ;; Copyright (C) 1985, 1986, 1987, 1994 Free Software Foundation, Inc. |
845 | 4 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
5 ;; Maintainer: FSF |
814
38b2499cb3e9
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
807
diff
changeset
|
6 ;; Keywords: internal, help |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
7 |
36 | 8 ;; This file is part of GNU Emacs. |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
12 ;; the Free Software Foundation; either version 2, or (at your option) |
36 | 13 ;; any later version. |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
14169 | 21 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 ;; Boston, MA 02111-1307, USA. | |
36 | 24 |
2308
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2232
diff
changeset
|
25 ;;; Commentary: |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2232
diff
changeset
|
26 |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2232
diff
changeset
|
27 ;; This mode provides a hook which is, by default, attached to various |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2232
diff
changeset
|
28 ;; putatively dangerous commands in a (probably futile) attempt to |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2232
diff
changeset
|
29 ;; prevent lusers from shooting themselves in the feet. |
f287613dfc28
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2232
diff
changeset
|
30 |
2232
4f9d60f7de9d
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
845
diff
changeset
|
31 ;;; Code: |
36 | 32 |
33 ;; This function is called (by autoloading) | |
34 ;; to handle any disabled command. | |
35 ;; The command is found in this-command | |
36 ;; and the keys are returned by (this-command-keys). | |
37 | |
256 | 38 ;;;###autoload |
16649
8a01398a26e6
(disabled-command-hook): Use `defvar' and add documentation string.
Erik Naggum <erik@naggum.no>
parents:
14169
diff
changeset
|
39 (defvar disabled-command-hook 'disabled-command-hook |
8a01398a26e6
(disabled-command-hook): Use `defvar' and add documentation string.
Erik Naggum <erik@naggum.no>
parents:
14169
diff
changeset
|
40 "Function to call to handle disabled commands. |
8a01398a26e6
(disabled-command-hook): Use `defvar' and add documentation string.
Erik Naggum <erik@naggum.no>
parents:
14169
diff
changeset
|
41 If nil, the feature is disabled, i.e., all commands work normally.") |
268 | 42 |
282 | 43 ;;;###autoload |
36 | 44 (defun disabled-command-hook (&rest ignore) |
45 (let (char) | |
46 (save-window-excursion | |
47 (with-output-to-temp-buffer "*Help*" | |
10695
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
48 (let ((keys (this-command-keys))) |
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
49 (if (or (eq (aref keys 0) |
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
50 (if (stringp keys) |
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
51 (aref "\M-x" 0) |
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
52 ?\M-x)) |
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
53 (and (>= (length keys) 2) |
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
54 (eq (aref keys 0) meta-prefix-char) |
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
55 (eq (aref keys 1) ?x))) |
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
56 (princ "You have invoked the disabled command ") |
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
57 (princ "You have typed ") |
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
58 (princ (key-description keys)) |
1a97dea087d1
(disabled-command-hook): Recognize ESC x as well as M-x.
Karl Heuer <kwzh@gnu.org>
parents:
10216
diff
changeset
|
59 (princ ", invoking disabled command "))) |
36 | 60 (princ this-command) |
61 (princ ":\n") | |
62 ;; Print any special message saying why the command is disabled. | |
63 (if (stringp (get this-command 'disabled)) | |
64 (princ (get this-command 'disabled))) | |
65 ;; Keep only the first paragraph of the documentation. | |
66 (save-excursion | |
67 (set-buffer "*Help*") | |
16675
6f45dc8d9d56
(disabled-command-hook): Correctly keep the first
Richard M. Stallman <rms@gnu.org>
parents:
16649
diff
changeset
|
68 (goto-char (point-max)) |
6f45dc8d9d56
(disabled-command-hook): Correctly keep the first
Richard M. Stallman <rms@gnu.org>
parents:
16649
diff
changeset
|
69 (save-excursion |
6f45dc8d9d56
(disabled-command-hook): Correctly keep the first
Richard M. Stallman <rms@gnu.org>
parents:
16649
diff
changeset
|
70 (princ (or (condition-case () |
6f45dc8d9d56
(disabled-command-hook): Correctly keep the first
Richard M. Stallman <rms@gnu.org>
parents:
16649
diff
changeset
|
71 (documentation this-command) |
6f45dc8d9d56
(disabled-command-hook): Correctly keep the first
Richard M. Stallman <rms@gnu.org>
parents:
16649
diff
changeset
|
72 (error nil)) |
6f45dc8d9d56
(disabled-command-hook): Correctly keep the first
Richard M. Stallman <rms@gnu.org>
parents:
16649
diff
changeset
|
73 "<< not documented >>"))) |
36 | 74 (if (search-forward "\n\n" nil t) |
75 (delete-region (1- (point)) (point-max)) | |
76 (goto-char (point-max)))) | |
77 (princ "\n\n") | |
78 (princ "You can now type | |
16649
8a01398a26e6
(disabled-command-hook): Use `defvar' and add documentation string.
Erik Naggum <erik@naggum.no>
parents:
14169
diff
changeset
|
79 Space to try the command just this once, but leave it disabled, |
36 | 80 Y to try it and enable it (no questions if you use it again), |
16649
8a01398a26e6
(disabled-command-hook): Use `defvar' and add documentation string.
Erik Naggum <erik@naggum.no>
parents:
14169
diff
changeset
|
81 ! to try it and enable all commands in this session, or |
9849
430b8cf09515
(disabled-command-hook): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents:
7300
diff
changeset
|
82 N to do nothing (command remains disabled).") |
430b8cf09515
(disabled-command-hook): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents:
7300
diff
changeset
|
83 (save-excursion |
430b8cf09515
(disabled-command-hook): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents:
7300
diff
changeset
|
84 (set-buffer standard-output) |
430b8cf09515
(disabled-command-hook): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents:
7300
diff
changeset
|
85 (help-mode))) |
16649
8a01398a26e6
(disabled-command-hook): Use `defvar' and add documentation string.
Erik Naggum <erik@naggum.no>
parents:
14169
diff
changeset
|
86 (message "Type y, n, ! or Space: ") |
36 | 87 (let ((cursor-in-echo-area t)) |
88 (while (not (memq (setq char (downcase (read-char))) | |
16649
8a01398a26e6
(disabled-command-hook): Use `defvar' and add documentation string.
Erik Naggum <erik@naggum.no>
parents:
14169
diff
changeset
|
89 '(?! ? ?y ?n))) |
36 | 90 (ding) |
16649
8a01398a26e6
(disabled-command-hook): Use `defvar' and add documentation string.
Erik Naggum <erik@naggum.no>
parents:
14169
diff
changeset
|
91 (message "Please type y, n, ! or Space: ")))) |
8a01398a26e6
(disabled-command-hook): Use `defvar' and add documentation string.
Erik Naggum <erik@naggum.no>
parents:
14169
diff
changeset
|
92 (if (= char ?!) |
8a01398a26e6
(disabled-command-hook): Use `defvar' and add documentation string.
Erik Naggum <erik@naggum.no>
parents:
14169
diff
changeset
|
93 (setq disabled-command-hook nil)) |
36 | 94 (if (= char ?y) |
7173
b6a358a4bdfb
(disabled-command-hook): Try to enable command in user
Richard M. Stallman <rms@gnu.org>
parents:
5927
diff
changeset
|
95 (if (and user-init-file |
b6a358a4bdfb
(disabled-command-hook): Try to enable command in user
Richard M. Stallman <rms@gnu.org>
parents:
5927
diff
changeset
|
96 (not (string= "" user-init-file)) |
b6a358a4bdfb
(disabled-command-hook): Try to enable command in user
Richard M. Stallman <rms@gnu.org>
parents:
5927
diff
changeset
|
97 (y-or-n-p "Enable command for future editing sessions also? ")) |
36 | 98 (enable-command this-command) |
99 (put this-command 'disabled nil))) | |
100 (if (/= char ?n) | |
101 (call-interactively this-command)))) | |
102 | |
256 | 103 ;;;###autoload |
36 | 104 (defun enable-command (command) |
105 "Allow COMMAND to be executed without special confirmation from now on. | |
106 The user's .emacs file is altered so that this will apply | |
107 to future sessions." | |
108 (interactive "CEnable command: ") | |
109 (put command 'disabled nil) | |
110 (save-excursion | |
7173
b6a358a4bdfb
(disabled-command-hook): Try to enable command in user
Richard M. Stallman <rms@gnu.org>
parents:
5927
diff
changeset
|
111 (set-buffer (find-file-noselect |
5451
165b0bf0e879
(enable-command, disable-command): Use user-init-file.
Richard M. Stallman <rms@gnu.org>
parents:
2441
diff
changeset
|
112 (substitute-in-file-name user-init-file))) |
36 | 113 (goto-char (point-min)) |
114 (if (search-forward (concat "(put '" (symbol-name command) " ") nil t) | |
115 (delete-region | |
116 (progn (beginning-of-line) (point)) | |
10216
c1ad03de412e
(enable-command): Always insert code to enable.
Richard M. Stallman <rms@gnu.org>
parents:
9849
diff
changeset
|
117 (progn (forward-line 1) (point)))) |
c1ad03de412e
(enable-command): Always insert code to enable.
Richard M. Stallman <rms@gnu.org>
parents:
9849
diff
changeset
|
118 ;; Explicitly enable, in case this command is disabled by default |
c1ad03de412e
(enable-command): Always insert code to enable.
Richard M. Stallman <rms@gnu.org>
parents:
9849
diff
changeset
|
119 ;; or in case the code we deleted was actually a comment. |
c1ad03de412e
(enable-command): Always insert code to enable.
Richard M. Stallman <rms@gnu.org>
parents:
9849
diff
changeset
|
120 (goto-char (point-max)) |
c1ad03de412e
(enable-command): Always insert code to enable.
Richard M. Stallman <rms@gnu.org>
parents:
9849
diff
changeset
|
121 (insert "\n(put '" (symbol-name command) " 'disabled nil)\n") |
36 | 122 (save-buffer))) |
123 | |
256 | 124 ;;;###autoload |
36 | 125 (defun disable-command (command) |
126 "Require special confirmation to execute COMMAND from now on. | |
127 The user's .emacs file is altered so that this will apply | |
128 to future sessions." | |
129 (interactive "CDisable command: ") | |
5742
84cdd74ddbb0
(disable-command): Reject invalid commands.
Richard M. Stallman <rms@gnu.org>
parents:
5451
diff
changeset
|
130 (if (not (commandp command)) |
84cdd74ddbb0
(disable-command): Reject invalid commands.
Richard M. Stallman <rms@gnu.org>
parents:
5451
diff
changeset
|
131 (error "Invalid command name `%s'" command)) |
36 | 132 (put command 'disabled t) |
133 (save-excursion | |
7173
b6a358a4bdfb
(disabled-command-hook): Try to enable command in user
Richard M. Stallman <rms@gnu.org>
parents:
5927
diff
changeset
|
134 (set-buffer (find-file-noselect |
5451
165b0bf0e879
(enable-command, disable-command): Use user-init-file.
Richard M. Stallman <rms@gnu.org>
parents:
2441
diff
changeset
|
135 (substitute-in-file-name user-init-file))) |
36 | 136 (goto-char (point-min)) |
137 (if (search-forward (concat "(put '" (symbol-name command) " ") nil t) | |
138 (delete-region | |
139 (progn (beginning-of-line) (point)) | |
140 (progn (forward-line 1) (point)))) | |
141 (goto-char (point-max)) | |
10216
c1ad03de412e
(enable-command): Always insert code to enable.
Richard M. Stallman <rms@gnu.org>
parents:
9849
diff
changeset
|
142 (insert "\n(put '" (symbol-name command) " 'disabled t)\n") |
36 | 143 (save-buffer))) |
144 | |
659
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
282
diff
changeset
|
145 ;;; novice.el ends here |