(defvar help-map (make-sparse-keymap) "\ Keymap for characters following the Help key.") (define-key global-map "" (quote help-command)) (fset (quote help-command) help-map) (define-key help-map "" (quote help-for-help)) (define-key help-map "?" (quote help-for-help)) (define-key help-map "" (quote describe-copying)) (define-key help-map "" (quote describe-distribution)) (define-key help-map "" (quote describe-no-warranty)) (define-key help-map "a" (quote command-apropos)) (define-key help-map "b" (quote describe-bindings)) (define-key help-map "c" (quote describe-key-briefly)) (define-key help-map "k" (quote describe-key)) (define-key help-map "d" (quote describe-function)) (define-key help-map "f" (quote describe-function)) (define-key help-map "i" (quote info)) (define-key help-map "l" (quote view-lossage)) (define-key help-map "m" (quote describe-mode)) (define-key help-map "" (quote view-emacs-news)) (define-key help-map "n" (quote view-emacs-news)) (define-key help-map "s" (quote describe-syntax)) (define-key help-map "t" (quote help-with-tutorial)) (define-key help-map "w" (quote where-is)) (define-key help-map "v" (quote describe-variable)) (defun help-with-tutorial nil "\ Select the Emacs learn-by-doing tutorial." (interactive) (byte-code "Ĉ! ! !!X !!!ĉ \"!eb! ` `\" !e`\"#!eb!)" [file buffer-file-name default-directory auto-save-file-name nil exec-directory expand-file-name "~/TUTORIAL" delete-other-windows get-file-buffer switch-to-buffer create-file-buffer "~/" insert-file-contents "TUTORIAL" search-forward " <<" beginning-of-line delete-region end-of-line newline - window-height selected-window count-lines 6 set-buffer-modified-p] 22)) (defun describe-key-briefly (key) "\ Print the name of the function KEY invokes. KEY is a string." (interactive "kDescribe key briefly: ") (byte-code " !? ! !\", !9( + !#)" [defn key nil key-binding integerp message "%s is undefined" key-description "%s runs the command %s" prin1-to-string] 10)) (defun print-help-return-message (&optional function) "\ Display or return message saying how to restore windows after help command. Computes a message and applies the argument FUNCTION to it. If FUNCTION is nil, applies `message' to it, thus printing it." (byte-code "!?# ! ɂ ʂ! !\"" [standard-output function t pop-up-windows get-buffer-window funcall message substitute-command-keys one-window-p "Type \\[delete-other-windows] to remove help window." "Type \\[switch-to-buffer] RET to remove help window." "Type \\[switch-to-buffer-other-window] RET to restore old contents of help window."] 6)) (defun describe-key (key) "\ Display documentation of the function KEY invokes. KEY is a string." (interactive "kDescribe key: ") (byte-code " !? ! !\"9 Ȑ!!!2 !!5 ! )" [defn key nil key-binding integerp message "%s is undefined" key-description "*Help*" prin1 princ ": " documentation "not documented" print-help-return-message] 13)) (defun describe-mode nil "\ Display documentation of current major mode." (interactive) (byte-code "Ð!! !! " [mode-name major-mode nil "*Help*" princ " Mode: " documentation print-help-return-message] 7)) (defun describe-distribution nil "\ Display info on how to obtain the latest version of GNU Emacs." (interactive) (byte-code "\"!" [exec-directory nil find-file-read-only expand-file-name "DISTRIB"] 4)) (defun describe-copying nil "\ Display info on how you may redistribute copies of GNU Emacs." (interactive) (byte-code "\"!eb" [exec-directory nil find-file-read-only expand-file-name "COPYING"] 4)) (defun describe-no-warranty nil "\ Display info on all the kinds of warranty Emacs does NOT have." (interactive) (byte-code " !!)" [case-fold-search nil describe-copying search-forward "NO WARRANTY" recenter 0] 4)) (defun view-emacs-news nil "\ Display info on recent changes to Emacs." (interactive) (byte-code "\"!" [exec-directory nil find-file-read-only expand-file-name "NEWS"] 4)) (defun view-lossage nil "\ Display last 100 input keystrokes." (interactive) (byte-code "Ð !!qeb!m?'