Mercurial > hg > xemacs-beta
comparison lisp/help.el @ 398:74fd4e045ea6 r21-2-29
Import from CVS: tag r21-2-29
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:13:30 +0200 |
parents | 8626e4521993 |
children | b8cc9ab3f761 |
comparison
equal
deleted
inserted
replaced
397:f4aeb21a5bad | 398:74fd4e045ea6 |
---|---|
303 | 303 |
304 (defun key-or-menu-binding (key &optional menu-flag) | 304 (defun key-or-menu-binding (key &optional menu-flag) |
305 "Return the command invoked by KEY. | 305 "Return the command invoked by KEY. |
306 Like `key-binding', but handles menu events and toolbar presses correctly. | 306 Like `key-binding', but handles menu events and toolbar presses correctly. |
307 KEY is any value returned by `next-command-event'. | 307 KEY is any value returned by `next-command-event'. |
308 MENU-FLAG is a symbol that should be set to T if KEY is a menu event, | 308 MENU-FLAG is a symbol that should be set to t if KEY is a menu event, |
309 or NIL otherwise" | 309 or nil otherwise" |
310 (let (defn) | 310 (let (defn) |
311 (and menu-flag (set menu-flag nil)) | 311 (and menu-flag (set menu-flag nil)) |
312 ;; If the key typed was really a menu selection, grab the form out | 312 ;; If the key typed was really a menu selection, grab the form out |
313 ;; of the event object and intuit the function that would be called, | 313 ;; of the event object and intuit the function that would be called, |
314 ;; and describe that instead. | 314 ;; and describe that instead. |
459 (defun help-buffer-name (name) | 459 (defun help-buffer-name (name) |
460 "Return a name for a Help buffer using string NAME for context." | 460 "Return a name for a Help buffer using string NAME for context." |
461 (if (and (integerp help-max-help-buffers) | 461 (if (and (integerp help-max-help-buffers) |
462 (> help-max-help-buffers 0) | 462 (> help-max-help-buffers 0) |
463 (stringp name)) | 463 (stringp name)) |
464 (format "*%s: %s*" help-buffer-prefix-string name) | 464 (if help-buffer-prefix-string |
465 (format "*%s: %s*" help-buffer-prefix-string name) | |
466 (format "*%s*" name)) | |
465 (format "*%s*" help-buffer-prefix-string))) | 467 (format "*%s*" help-buffer-prefix-string))) |
466 | 468 |
467 ;; Use this function for displaying help when C-h something is pressed | 469 ;; Use this function for displaying help when C-h something is pressed |
468 ;; or in similar situations. Do *not* use it when you are displaying | 470 ;; or in similar situations. Do *not* use it when you are displaying |
469 ;; a help message and then prompting for input in the minibuffer -- | 471 ;; a help message and then prompting for input in the minibuffer -- |
653 (let ((heading (if mouse-only-p | 655 (let ((heading (if mouse-only-p |
654 (gettext "button binding\n------ -------\n") | 656 (gettext "button binding\n------ -------\n") |
655 (gettext "key binding\n--- -------\n"))) | 657 (gettext "key binding\n--- -------\n"))) |
656 (buffer (current-buffer)) | 658 (buffer (current-buffer)) |
657 (minor minor-mode-map-alist) | 659 (minor minor-mode-map-alist) |
660 (extent-maps (mapcar-extents | |
661 'extent-keymap | |
662 nil (current-buffer) (point) (point) nil 'keymap)) | |
658 (local (current-local-map)) | 663 (local (current-local-map)) |
659 (shadow '())) | 664 (shadow '())) |
660 (set-buffer standard-output) | 665 (set-buffer standard-output) |
666 (while extent-maps | |
667 (insert "Bindings for Text Region:\n" | |
668 heading) | |
669 (describe-bindings-internal | |
670 (car extent-maps) nil shadow prefix mouse-only-p) | |
671 (insert "\n") | |
672 (setq shadow (cons (car extent-maps) shadow) | |
673 extent-maps (cdr extent-maps))) | |
661 (while minor | 674 (while minor |
662 (let ((sym (car (car minor))) | 675 (let ((sym (car (car minor))) |
663 (map (cdr (car minor)))) | 676 (map (cdr (car minor)))) |
664 (if (symbol-value-in-buffer sym buffer nil) | 677 (if (symbol-value-in-buffer sym buffer nil) |
665 (progn | 678 (progn |
933 (completing-read | 946 (completing-read |
934 (if fn | 947 (if fn |
935 (format (gettext "Describe function (default %s): ") | 948 (format (gettext "Describe function (default %s): ") |
936 fn) | 949 fn) |
937 (gettext "Describe function: ")) | 950 (gettext "Describe function: ")) |
938 obarray 'fboundp t nil 'function-history)))) | 951 obarray 'fboundp t nil 'function-history |
939 (list (if (equal val "") fn (intern val))))) | 952 (symbol-name fn))))) |
953 (list (intern val)))) | |
940 (with-displaying-help-buffer | 954 (with-displaying-help-buffer |
941 (lambda () | 955 (lambda () |
942 (describe-function-1 function) | 956 (describe-function-1 function) |
943 ;; Return the text we displayed. | 957 ;; Return the text we displayed. |
944 (buffer-string nil nil standard-output)) | 958 (buffer-string nil nil standard-output)) |
1002 (function-arglist 'function-arglist) | 1016 (function-arglist 'function-arglist) |
1003 => (function-arglist FUNCTION) | 1017 => (function-arglist FUNCTION) |
1004 | 1018 |
1005 This function is used by `describe-function-1' to list function | 1019 This function is used by `describe-function-1' to list function |
1006 arguments in the standard Lisp style." | 1020 arguments in the standard Lisp style." |
1007 (let* ((fndef (indirect-function function)) | 1021 (let* ((fnc (indirect-function function)) |
1022 (fndef (if (eq (car-safe fnc) 'macro) | |
1023 (cdr fnc) | |
1024 fnc)) | |
1008 (arglist | 1025 (arglist |
1009 (cond ((compiled-function-p fndef) | 1026 (cond ((compiled-function-p fndef) |
1010 (compiled-function-arglist fndef)) | 1027 (compiled-function-arglist fndef)) |
1011 ((eq (car-safe fndef) 'lambda) | 1028 ((eq (car-safe fndef) 'lambda) |
1012 (nth 1 fndef)) | 1029 (nth 1 fndef)) |
1013 ((subrp fndef) | 1030 ((subrp fndef) |
1014 (let* ((doc (documentation function)) | 1031 (let* ((doc (documentation function)) |
1015 (args (and (string-match | 1032 (args (and (string-match |
1016 "[\n\t ]*\narguments: ?(\\(.*\\))\n?\\'" | 1033 "[\n\t ]*\narguments: ?(\\(.*\\))\n?\\'" |
1017 doc) | 1034 doc) |
1018 (match-string 1 doc)))) | 1035 (match-string 1 doc)))) |
1019 ;; If there are no arguments documented for the | 1036 ;; If there are no arguments documented for the |
1020 ;; subr, rather don't print anything. | 1037 ;; subr, rather don't print anything. |
1021 (cond ((null args) t) | 1038 (cond ((null args) t) |
1022 ((equal args "") nil) | 1039 ((equal args "") nil) |
1023 (args)))) | 1040 (args)))) |
1024 (t t)))) | 1041 (t t)))) |
1025 (cond ((listp arglist) | 1042 (cond ((listp arglist) |
1026 (prin1-to-string | 1043 (prin1-to-string |
1027 (cons function (mapcar (lambda (arg) | 1044 (cons function (mapcar (lambda (arg) |
1028 (if (memq arg '(&optional &rest)) | 1045 (if (memq arg '(&optional &rest)) |
1029 arg | 1046 arg |
1222 (val (let ((enable-recursive-minibuffers t)) | 1239 (val (let ((enable-recursive-minibuffers t)) |
1223 (completing-read | 1240 (completing-read |
1224 (if v | 1241 (if v |
1225 (format "Describe variable (default %s): " v) | 1242 (format "Describe variable (default %s): " v) |
1226 (gettext "Describe variable: ")) | 1243 (gettext "Describe variable: ")) |
1227 obarray 'boundp t nil 'variable-history)))) | 1244 obarray 'boundp t nil 'variable-history |
1228 (list (if (equal val "") v (intern val))))) | 1245 (symbol-name v))))) |
1246 (list (intern val)))) | |
1229 (with-displaying-help-buffer | 1247 (with-displaying-help-buffer |
1230 (lambda () | 1248 (lambda () |
1231 (let ((origvar variable) | 1249 (let ((origvar variable) |
1232 aliases) | 1250 aliases) |
1233 (let ((print-escape-newlines t)) | 1251 (let ((print-escape-newlines t)) |
1406 (princ (car cmd)) | 1424 (princ (car cmd)) |
1407 (setq cmd (cdr cmd)) | 1425 (setq cmd (cdr cmd)) |
1408 (if cmd (princ " "))))) | 1426 (if cmd (princ " "))))) |
1409 (terpri)))))) | 1427 (terpri)))))) |
1410 | 1428 |
1411 ;; Stop gap for 21.0 untill we do help-char etc properly. | 1429 ;; Stop gap for 21.0 until we do help-char etc properly. |
1412 (defun help-keymap-with-help-key (keymap form) | 1430 (defun help-keymap-with-help-key (keymap form) |
1413 "Return a copy of KEYMAP with an help-key binding according to help-char | 1431 "Return a copy of KEYMAP with an help-key binding according to help-char |
1414 invoking FORM like help-form. An existing binding is not overridden. | 1432 invoking FORM like help-form. An existing binding is not overridden. |
1415 If FORM is nil then no binding is made." | 1433 If FORM is nil then no binding is made." |
1416 (let ((map (copy-keymap keymap)) | 1434 (let ((map (copy-keymap keymap)) |