Mercurial > emacs
annotate lisp/novice.el @ 40819:668787248f9b
* dired.el (dired-move-to-filename-regexp):
Do not distinguish between ASCII letters and non-ASCII characters.
Don't allow comma except in the form "month day, year".
Don't allow space between month name and comma.
Clean up the code that checks for trailing period, comma, and space.
Remove now-obsolete comments, and add more commentary about
Japanese dates.
Always gobble up trailing spaces, instead of doing it only sometimes.
author | Paul Eggert <eggert@twinsun.com> |
---|---|
date | Wed, 07 Nov 2001 21:59:39 +0000 |
parents | 253f761ad37b |
children | 0a91a443d091 |
rev | line source |
---|---|
38412
253f761ad37b
Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents:
37899
diff
changeset
|
1 ;;; novice.el --- handling of disabled commands ("novice mode") for Emacs |
659
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) | |
37899
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
110 (let ((init-file user-init-file)) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
111 (when (or (not (stringp init-file)) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
112 (not (file-exists-p init-file))) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
113 (setq init-file (if (eq system-type 'ms-dos) "~/_emacs" "~/.emacs")) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
114 (if (and (not (file-exists-p init-file)) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
115 (eq system-type 'windows-nt) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
116 (file-exists-p "~/_emacs")) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
117 (setq init-file "~/_emacs"))) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
118 (save-excursion |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
119 (set-buffer (find-file-noselect |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
120 (substitute-in-file-name init-file))) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
121 (goto-char (point-min)) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
122 (if (search-forward (concat "(put '" (symbol-name command) " ") nil t) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
123 (delete-region |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
124 (progn (beginning-of-line) (point)) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
125 (progn (forward-line 1) (point)))) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
126 ;; Explicitly enable, in case this command is disabled by default |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
127 ;; or in case the code we deleted was actually a comment. |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
128 (goto-char (point-max)) |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
129 (insert "\n(put '" (symbol-name command) " 'disabled nil)\n") |
3c9f67eea2f9
(enable-command): If user-init-file is nil or does not
Eli Zaretskii <eliz@gnu.org>
parents:
18383
diff
changeset
|
130 (save-buffer)))) |
36 | 131 |
256 | 132 ;;;###autoload |
36 | 133 (defun disable-command (command) |
134 "Require special confirmation to execute COMMAND from now on. | |
135 The user's .emacs file is altered so that this will apply | |
136 to future sessions." | |
137 (interactive "CDisable command: ") | |
5742
84cdd74ddbb0
(disable-command): Reject invalid commands.
Richard M. Stallman <rms@gnu.org>
parents:
5451
diff
changeset
|
138 (if (not (commandp command)) |
84cdd74ddbb0
(disable-command): Reject invalid commands.
Richard M. Stallman <rms@gnu.org>
parents:
5451
diff
changeset
|
139 (error "Invalid command name `%s'" command)) |
36 | 140 (put command 'disabled t) |
141 (save-excursion | |
7173
b6a358a4bdfb
(disabled-command-hook): Try to enable command in user
Richard M. Stallman <rms@gnu.org>
parents:
5927
diff
changeset
|
142 (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
|
143 (substitute-in-file-name user-init-file))) |
36 | 144 (goto-char (point-min)) |
145 (if (search-forward (concat "(put '" (symbol-name command) " ") nil t) | |
146 (delete-region | |
147 (progn (beginning-of-line) (point)) | |
148 (progn (forward-line 1) (point)))) | |
149 (goto-char (point-max)) | |
10216
c1ad03de412e
(enable-command): Always insert code to enable.
Richard M. Stallman <rms@gnu.org>
parents:
9849
diff
changeset
|
150 (insert "\n(put '" (symbol-name command) " 'disabled t)\n") |
36 | 151 (save-buffer))) |
152 | |
18383 | 153 (provide 'novice) |
154 | |
659
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
282
diff
changeset
|
155 ;;; novice.el ends here |