Next: , Previous: Defining Commands, Up: Command Loop   [Contents][Index]


20.3 ÂÐÏÃŪ¸Æ¤Ó½Ð¤·

¥³¥Þ¥ó¥É¥ë¡¼¥×¤Ç¤Ï¡¢¥­¡¼Îó¤ò¥³¥Þ¥ó¥É¤ØÊÑ´¹¤·½ª¤¨¤ë¤È¡¢ ´Ø¿ôcommand-execute¤òÍѤ¤¤Æ¤½¤Î¥³¥Þ¥ó¥É¤òµ¯Æ°¤·¤Þ¤¹¡£ ¥³¥Þ¥ó¥É¤¬´Ø¿ô¤Ç¤¢¤ì¤Ð¡¢command-execute¤Ï°ú¿ô¤òÆÉ¤ß¼è¤ê¡¢ ¥³¥Þ¥ó¥É¤ò¸Æ¤Ó½Ð¤¹call-interactively¤ò¸Æ¤Ó¤Þ¤¹¡£ ÆÉ¼Ô¼«¿È¤¬¤³¤ì¤é¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£

Function: commandp object

object¤¬ÂÐÏÃŪ¸Æ¤Ó½Ð¤·¤ËŬ¤·¤Æ¤¤¤ì¤Ð¡¢ ¤Ä¤Þ¤ê¡¢object¤¬¥³¥Þ¥ó¥É¤Ç¤¢¤ì¤Ðt¤òÊÖ¤¹¡£ ¤µ¤â¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£

ÂÐÏÃŪ¸Æ¤Ó½Ð¤·¤¬²Äǽ¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ï¡¢ ¡Ê¥­¡¼¥Ü¡¼¥É¥Þ¥¯¥í¤È¤·¤Æ°·¤ï¤ì¤ë¡Ëʸ»úÎó¤ä¥Ù¥¯¥È¥ë¡¢ ¥È¥Ã¥×¥ì¥Ù¥ë¤Çinteractive¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë¥é¥à¥À¼°¡¢ ¤½¤Î¤è¤¦¤Ê¥é¥à¥À¼°¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥Ð¥¤¥È¥³¡¼¥É´Ø¿ô¥ª¥Ö¥¸¥§¥¯¥È¡¢ ÂÐÏÃŪ¡Êautoload¤Î4ÈÖÌܤΰú¿ô¤¬nil°Ê³°¡Ë ¤ÈÀë¸À¤µ¤ì¤¿¼«Æ°¥í¡¼¥É¥ª¥Ö¥¸¥§¥¯¥È¡¢ °ìÉô¤Î´ðËÜ´Ø¿ô¤¬´Þ¤Þ¤ì¤ë¡£

¥·¥ó¥Ü¥ë¤Î´Ø¿ôÄêµÁ¤¬commandp¤òËþ¤¿¤»¤Ð¡¢ ¥·¥ó¥Ü¥ë¤âcommandp¤òËþ¤¿¤¹¡£

¥­¡¼¤ä¥­¡¼¥Þ¥Ã¥×¤Ï¥³¥Þ¥ó¥É¤Ç¤Ï¤Ê¤¤¡£ ¤½¤ì¤é¤Ï¥³¥Þ¥ó¥É¤òõ¤¹¤¿¤á¤Ë»È¤ï¤ì¤ë¡Êsee Keymaps¡Ë¡£

commandp¤Î¼ÂÍÑŪ¤Ê»ÈÍÑÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Accessing Documentation¤Îdocumentation¤ò»²¾È¡£

Function: call-interactively command &optional record-flag keys

¤³¤Î´Ø¿ô¤Ï¡¢ÂÐÏÃŪ¸Æ¤Ó½Ð¤·²Äǽ¤Ê´Ø¿ôcommand¤ò ¤½¤ÎÂÐÏûØÄê¤Ë½¾¤Ã¤Æ°ú¿ô¤òÆÉ¤ß¼è¤ê¸Æ¤Ó½Ð¤¹¡£ command¤¬´Ø¿ô¤Ç¤Ê¤«¤Ã¤¿¤ê¡¢ ÂÐÏÃŪ¤Ë¸Æ¤Ó½Ð¤»¤Ê¤¤¡Ê¤Ä¤Þ¤ê¡¢¥³¥Þ¥ó¥É¤Ç¤Ê¤¤¡Ë¾ì¹ç¤Ë¤Ï¡¢ ¥¨¥é¡¼¤òÄÌÃΤ¹¤ë¡£ ¥­¡¼¥Ü¡¼¥É¥Þ¥¯¥í¡Êʸ»úÎó¤ä¥Ù¥¯¥È¥ë¡Ë¤Ï¥³¥Þ¥ó¥É¤È¤ß¤Ê¤¹¤¬¡¢ ¤½¤ì¤é¤Ï´Ø¿ô¤Ç¤Ê¤¤¤¿¤á¡¢¤³¤Î´Ø¿ô¤Ï¥­¡¼¥Ü¡¼¥É¥Þ¥¯¥í¤ò¼õ¤±ÉÕ¤±¤Ê¤¤¡£

record-flag¤¬nil°Ê³°¤Ç¤¢¤ë¤È¡¢ ¥³¥Þ¥ó¥É¤È¤½¤Î°ú¿ô¤ò̵¾ò·ï¤Ë¥ê¥¹¥Ècommand-history¤ËÄɲ乤롣 ¤µ¤â¤Ê¤±¤ì¤Ð¡¢°ú¿ô¤òÆÉ¤à¤¿¤á¤Ë ¥³¥Þ¥ó¥É¤¬¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤ò»È¤Ã¤¿¾ì¹ç¤Ë¤Î¤ßÄɲ乤롣 see Command History¡£

¤â¤·°ú¿ôkeys¤ò»ØÄꤹ¤ë¤È¡¢¥³¥Þ¥ó¥É¤¬¤½¤ì¤òµ¯Æ°¤·¤¿¥¤¥Ù¥ó¥È¤ò Ì䤤¹ç¤ï¤»¤¿¤È¤­¤ËÍ¿¤¨¤ë¥¤¥Ù¥ó¥ÈÎó¤ò»ØÄꤹ¤ë¡£

Function: command-execute command &optional record-flag keys

¤³¤Î´Ø¿ô¤Ïcommand¤ò¼Â¹Ô¤¹¤ë¡£ °ú¿ôcommand¤Ïcommandp¤òËþ¤¿¤¹¤³¤È¡£ ¤Ä¤Þ¤ê¡¢ÂÐÏÃŪ¸Æ¤Ó½Ð¤·²Äǽ¤Ê´Ø¿ô¤«¥­¡¼¥Ü¡¼¥É¥Þ¥¯¥í¤Ç¤¢¤ë¤³¤È¡£

command¤¬Ê¸»úÎó¤ä¥Ù¥¯¥È¥ë¤Ç¤¢¤ë¤È¡¢ execute-kbd-macro¤Ç¼Â¹Ô¤µ¤ì¤ë¡£ ´Ø¿ô¤Ç¤¢¤ë¤È¡¢¾Êά²Äǽ¤Êrecord-flag¤È¤È¤â¤Ë´Ø¿ô¤ò call-interactively¤ËÅϤ¹¡£

¥·¥ó¥Ü¥ë¤Ï¡¢¤½¤Î´Ø¿ôÄêµÁ¤ò»È¤Ã¤Æ½èÍý¤¹¤ë¡£ autoload¤ÇÄêµÁ¤µ¤ì¤¿¥·¥ó¥Ü¥ë¤Ï¡¢ ÂÐÏÃŪ¸Æ¤Ó½Ð¤·²Äǽ¤Ê´Ø¿ô¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤ì¤Ð¥³¥Þ¥ó¥É¤È¤ß¤Ê¤¹¡£ ¤½¤Î¤è¤¦¤ÊÄêµÁ¤Ç¤Ï¡¢»ØÄꤵ¤ì¤¿¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤·¤Æ¤«¤é ¥·¥ó¥Ü¥ë¤ÎÄêµÁ¤òºÆ¸¡ºº¤·¤Æ½èÍý¤¹¤ë¡£

¤â¤·°ú¿ôkeys¤ò»ØÄꤹ¤ë¤È¡¢¥³¥Þ¥ó¥É¤¬¤½¤ì¤òµ¯Æ°¤·¤¿¥¤¥Ù¥ó¥È¤ò Ì䤤¹ç¤ï¤»¤¿¤È¤­¤ËÍ¿¤¨¤ë¥¤¥Ù¥ó¥ÈÎó¤ò»ØÄꤹ¤ë¡£

¥³¥Þ¥ó¥É: execute-extended-command prefix-argument

¤³¤Î´Ø¿ô¤Ïcompleting-read¡Êsee Completion¡Ë¤ò»È¤Ã¤Æ ¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤Ç¥³¥Þ¥ó¥É̾¤òÆÉ¤à¡£ ¤½¤·¤Æcommand-execute¤ò»È¤Ã¤Æ»ØÄꤵ¤ì¤¿¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¡£ ¥³¥Þ¥ó¥É¤¬ÊÖ¤·¤¿Ãͤ¬execute-extended-command¤ÎÃͤˤʤ롣

¥³¥Þ¥ó¥É¤¬Á°ÃÖ°ú¿ô¤òɬÍפȤ¹¤ë¾ì¹ç¡¢prefix-argument¤ÎÃͤò¼õ¤±¼è¤ë¡£ execute-extended-command¤¬ÂÐÏÃŪ¤Ë¸Æ¤Ð¤ì¤¿¾ì¹ç¡¢ ¸½ºß¤ÎÀ¸¤ÎÁ°ÃÖ°ú¿ô¤¬prefix-argument¤È¤·¤Æ»È¤ï¤ì¡¢ ¤½¤ì¤¬¼Â¹Ô¤¹¤ë¥³¥Þ¥ó¥É¤ØÅϤµ¤ì¤ë¡£

execute-extended-command¤ÏÄ̾ïM-x¤ËÄêµÁÉÕ¤±¤é¤ì¡¢ ¤½¤Î¤¿¤á¡¢¥×¥í¥ó¥×¥È¤È¤·¤ÆÊ¸»úÎó‘M-x ¤ò»È¤¦¡£ ¡Êexecute-extended-command¤òµ¯Æ°¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤¿ ¥¤¥Ù¥ó¥È¤ò¥×¥í¥ó¥×¥È¤Ë¤¹¤ë¤Ù¤­¤Ç¤¢¤ë¤¬¡¢ ¤½¤ì¤ò¼ÂÁõ¤¹¤ë¤Î¤Ï¼ê´Ö¤¬¤«¤«¤ë¡£¡Ë ¤â¤·Á°ÃÖ°ú¿ô¤ò»ØÄꤹ¤ë¤È¡¢¤½¤ÎÆâÍÆ¤â¥×¥í¥ó¥×¥È¤Î°ìÉô¤Ë¤Ê¤ë¡£

(execute-extended-command 1)
---------- Buffer: Minibuffer ----------
1 M-x forward-word RET
---------- Buffer: Minibuffer ----------
     ⇒ t
Function: interactive-p

¤³¤Î´Ø¿ô¤Ï¡¢¤³¤ì¡Êinteractive-p¤Î¸Æ¤Ó½Ð¤·¡Ë¤ò´Þ¤ó¤À´Ø¿ô¤¬ call-interactively¤ÇÂÐÏÃŪ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¤Èt¤òÊÖ¤¹¡£ ¡ÊLisp¤«¤écall-interactively¤¬¸Æ¤Ó½Ð¤µ¤ì¤Æ¤â¡¢ ¥¨¥Ç¥£¥¿¥³¥Þ¥ó¥É¥ë¡¼¥×¤¬Ä¾ÀܸƤӽФ·¤Æ¤â°ã¤¤¤Ï¤Ê¤¤¡£¡Ë ¤³¤ì¤ò´Þ¤ó¤À´Ø¿ô¤¬Lisp¤Îɾ²Á¡Ê¤¢¤ë¤¤¤Ïapply¤äfuncall¡Ë¤Ç ¸Æ¤Ó½Ð¤µ¤ì¤¿¾ì¹ç¤Ï¡¢ÂÐÏÃŪ¸Æ¤Ó½Ð¤·¤Ç¤Ï¤Ê¤¤¡£

interactive-p¤Î¤â¤Ã¤È¤â°ìÈÌŪ¤ÊÍÑÅӤϡ¢ ¾ðÊó¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«·è¤á¤ë¤³¤È¤Ç¤¹¡£ ÆÃÊ̤ÊÎã³°¤È¤·¤Æ¡¢¥­¡¼¥Ü¡¼¥É¥Þ¥¯¥í¤ò¼Â¹ÔÃæ¤Ë¤Ï¤¤¤Ä¤Ç¤â¡¢ interactive-p¤Ïnil¤òÊÖ¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¾ðÊó¥á¥Ã¥»¡¼¥¸¤ò¾Ê¤¤¤Æ¥Þ¥¯¥í¤Î¼Â¹Ô¤ò®¤¯¤¹¤ë¤¿¤á¤Ç¤¹¡£

¤Ä¤®¤Î¤è¤¦¤Ë»È¤¤¤Þ¤¹¡£

(defun foo ()
  (interactive)
  (when (interactive-p)
    (message "foo")))
     ⇒ foo
(defun bar ()
  (interactive)
  (setq foobar (list (foo) (interactive-p))))
     ⇒ bar
;; M-x foo¤ÈÂǤÄ
     -| foo
;; M-x bar¤ÈÂǤÄ
;; ¤³¤ì¤Ï¤Ê¤Ë¤âɽ¼¨¤·¤Ê¤¤
foobar
     ⇒ (nil t)

¤³¤Î¼ï¤Î¤³¤È¤ò¹Ô¤¦Ê̤ÎÊýË¡¤Ï¡¢¥³¥Þ¥ó¥É¤ò ÂÐÏÃŪ¸Æ¤Ó½Ð¤·¤Ç¤Ïnil°Ê³°¤ÎÃͤˤʤë°ú¿ôprint-message¤ò ¼è¤ë¤è¤¦¤Ë¤·¡¢¤½¤Î°ú¿ô¤¬nil°Ê³°¤Ë¤Ê¤ë¤è¤¦¤Êinteractive»ØÄê¤ò »È¤¦¤³¤È¤Ç¤¹¡£ ¤Ä¤®¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£

(defun foo (&optional print-message)
  (interactive "p")
  (when print-message
    (message "foo")))

p’¤ÇÍ¿¤¨¤é¤ì¤ë¿ôÃÍÁ°ÃÖ°ú¿ô¤Ï¤±¤Ã¤·¤Ænil¤Ë¤Ê¤ê¤Þ¤»¤ó¡£