# HG changeset patch # User Eli Zaretskii # Date 986393167 0 # Node ID 299f754a4b1799db2059ad8b2333b9d9a8b0bc0a # Parent a6aec910476ea0bbc2ac719e1fa6e83727fc5c85 (normal-erase-is-backspace): Rename from delete-key-deletes-forward. Doc fix. (normal-erase-is-backspace-mode): Rename from delete-key-deletes-forward-mode. Doc fix. Run normal-erase-is-backspace-hook. diff -r a6aec910476e -r 299f754a4b17 lisp/simple.el --- a/lisp/simple.el Wed Apr 04 14:06:06 2001 +0000 +++ b/lisp/simple.el Wed Apr 04 14:06:07 2001 +0000 @@ -4044,16 +4044,16 @@ ;;; Handling of Backspace and Delete keys. -(defcustom delete-key-deletes-forward nil - "Whether the Delete key should delete forward or not. +(defcustom normal-erase-is-backspace nil + "If non-nil, Delete key deletes forward and Backspace key deletes backward. On window systems, the default value of this option is chosen according to the keyboard used. If the keyboard has both a Backspace key and a Delete key, and both are mapped to their usual meanings, the option's default value is set to t, so that Backspace can be used to -delete backward, and Delete can be used used to delete forward - -If not running under a window system, setting this option accomplishes +delete backward, and Delete can be used to delete forward. + +If not running under a window system, customizing this option accomplishes a similar effect by mapping C-h, which is usually generated by the Backspace key, to DEL, and by mapping DEL to C-d via `keyboard-translate'. The former functionality of C-h is available on @@ -4061,31 +4061,57 @@ have both Backspace, Delete and F1 keys. Setting this variable with setq doesn't take effect. Programmatically, -call `delete-key-deleted-forward-mode' instead." +call `normal-erase-is-backspace-mode' (which see) instead." :type 'boolean :group 'editing-basics :version "21.1" :set (lambda (symbol value) ;; The fboundp is because of a problem with :set when ;; dumping Emacs. It doesn't really matter. - (if (fboundp 'delete-key-deletes-forward-mode) - (delete-key-deletes-forward-mode (or value 0)) + (if (fboundp 'normal-erase-is-backspace-mode) + (normal-erase-is-backspace-mode (or value 0)) (set-default symbol value)))) -(defun delete-key-deletes-forward-mode (&optional arg) - "Toggle Delete key deleting forward or backward. -With numeric arg, turn the mode on if and only iff ARG is positive. -For more details, see `delete-key-deletes-forward'." +(defun normal-erase-is-backspace-mode (&optional arg) + "Toggle the Erase and Delete mode of the Backspace and Delete keys. + +With numeric arg, turn the mode on if and only ARG is positive. + +On window systems, when this mode is on, Delete is mapped to C-d and +Backspace is mapped to DEL; when this mode is off, both Delete and +Backspace are mapped to DEL. (The remapping goes via +`function-key-map', so binding Delete or Backspace in the global or +local keymap will override that.) + +In addition, on window systems, the bindings of C-Delete, M-Delete, +C-M-Delete, C-Backspace, M-Backspace, and C-M-Backspace are changed in +the global keymap in accordance with the functionality of Delete and +Backspace. For example, if Delete is remapped to C-d, which deletes +forward, C-Delete is bound to `kill-word', but if Delete is remapped +to DEL, which deletes backward, C-Delete is bound to +`backward-kill-word'. + +If not running on a window system, a similar effect is accomplished by +remapping C-h (normally produced by the Backspace key) and DEL via +`keyboard-translate': if this mode is on, C-h is mapped to DEL and DEL +to C-d; if it's off, the keys are not remapped. + +When not running on a window system, and this mode is turned on, the +former functionality of C-h is available on the F1 key. You should +probably not turn on this mode on a text-only terminal if you don't +have both Backspace, Delete and F1 keys. + +See also `normal-erase-is-backspace'." (interactive "P") - (setq delete-key-deletes-forward + (setq normal-erase-is-backspace (if arg (> (prefix-numeric-value arg) 0) - (not delete-key-deletes-forward))) + (not normal-erase-is-backspace))) (cond ((or (memq window-system '(x w32 mac pc)) (memq system-type '(ms-dos windows-nt))) - (let ((bindings + (let ((bindings `(([C-delete] [C-backspace]) ([M-delete] [M-backspace]) ([C-M-delete] [C-M-backspace]) @@ -4093,7 +4119,7 @@ [C-delete] [C-backspace]))) (old-state (lookup-key function-key-map [delete]))) - (if delete-key-deletes-forward + (if normal-erase-is-backspace (progn (define-key function-key-map [delete] [?\C-d]) (define-key function-key-map [kp-delete] [?\C-d]) @@ -4115,19 +4141,19 @@ (define-key map key1 binding2) (define-key map key2 binding1))))))) (t - (if delete-key-deletes-forward + (if normal-erase-is-backspace (progn (keyboard-translate ?\C-h ?\C-?) (keyboard-translate ?\C-? ?\C-d)) (keyboard-translate ?\C-h ?\C-h) (keyboard-translate ?\C-? ?\C-?)))) - (run-hooks 'delete-key-deletes-forward-hook) + (run-hooks 'normal-erase-is-backspace-hook) (if (interactive-p) - (message "Delete key deletes %s" - (if delete-key-deletes-forward "forward" "backward")))) - - + (message "Delete key deletes %s" + (if normal-erase-is-backspace "forward" "backward")))) + + ;;; Misc (defun byte-compiling-files-p ()