;;; novice.el --- handling of disabled commands ("novice mode") for Emacs.
+;; Copyright (C) 1985, 1986, 1987 Free Software Foundation, Inc.
+
;; Maintainer: FSF
-;; Last-Modified: 22 May 1991
;; Keywords: internal, help
-;; Copyright (C) 1985, 1986, 1987 Free Software Foundation, Inc.
-
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; along with GNU Emacs; see the file COPYING. If not, write to
;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-;; Code:
+;;; Commentary:
+
+;; This mode provides a hook which is, by default, attached to various
+;; putatively dangerous commands in a (probably futile) attempt to
+;; prevent lusers from shooting themselves in the feet.
+
+;;; Code:
;; This function is called (by autoloading)
;; to handle any disabled command.
(let (char)
(save-window-excursion
(with-output-to-temp-buffer "*Help*"
- (if (= (aref (this-command-keys) 0) ?\M-x)
+ (if (eq (aref (this-command-keys) 0)
+ (if (stringp (this-command-keys))
+ (aref "\M-x" 0)
+ ?\M-x))
(princ "You have invoked the disabled command ")
(princ "You have typed ")
(princ (key-description (this-command-keys)))
(interactive "CEnable command: ")
(put command 'disabled nil)
(save-excursion
- (set-buffer (find-file-noselect (substitute-in-file-name "~/.emacs")))
+ (set-buffer (find-file-noselect
+ (substitute-in-file-name user-init-file)))
(goto-char (point-min))
(if (search-forward (concat "(put '" (symbol-name command) " ") nil t)
(delete-region
;; Must have been disabled by default.
(goto-char (point-max))
(insert "\n(put '" (symbol-name command) " 'disabled nil)\n"))
- (setq foo (buffer-modified-p))
(save-buffer)))
;;;###autoload
The user's .emacs file is altered so that this will apply
to future sessions."
(interactive "CDisable command: ")
+ (if (not (commandp command))
+ (error "Invalid command name `%s'" command))
(put command 'disabled t)
(save-excursion
- (set-buffer (find-file-noselect (substitute-in-file-name "~/.emacs")))
+ (set-buffer (find-file-noselect
+ (substitute-in-file-name user-init-file)))
(goto-char (point-min))
(if (search-forward (concat "(put '" (symbol-name command) " ") nil t)
(delete-region