Next: , Previous: Interactive Call, Up: Command Loop   [Contents][Index]


20.4 ¥³¥Þ¥ó¥É¥ë¡¼¥×¤«¤é¤Î¾ðÊó

¥¨¥Ç¥£¥¿¥³¥Þ¥ó¥É¥ë¡¼¥×¤Ï¡¢¼«¿È¤ä¼Â¹ÔÃæ¤Î¥³¥Þ¥ó¥É¤Î¤¿¤á¤Ë ¾õÂÖµ­Ï¿¤ò¿ô¸Ä¤ÎLispÊÑ¿ô¤ËÀßÄꤷ¤Þ¤¹¡£

Variable: last-command

¤³¤ÎÊÑ¿ô¤Ï¡¢¥³¥Þ¥ó¥É¥ë¡¼¥×¤¬¡Ê¸½ºß¤Î¥³¥Þ¥ó¥É¤Î¡Ë¤Þ¤¨¤Ë¼Â¹Ô¤·¤¿¥³¥Þ¥ó¥É¤Î ̾Á°¤òµ­Ï¿¤¹¤ë¡£ Ä̾¤³¤ÎÃͤϴؿôÄêµÁ¤ò»ý¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤¬¡¢ÊݾڤϤ·¤Ê¤¤¡£

¥³¥Þ¥ó¥É¤¬¸å³¤Î¥³¥Þ¥ó¥É¤ËÂФ¹¤ëÁ°ÃÖ°ú¿ô¤ò»ØÄꤹ¤ë¾ì¹ç¤ò½ü¤¤¤Æ¡¢ ¥³¥Þ¥ó¥É¤«¤é¥³¥Þ¥ó¥É¥ë¡¼¥×¤ØÌá¤ë¤Èthis-command¤«¤éÃͤò¥³¥Ô¡¼¤¹¤ë¡£

¤³¤ÎÊÑ¿ô¤Ï¸½ºß¤ÎüËö¤ËÂФ·¤Æ¤Ä¤Í¤Ë¥í¡¼¥«¥ë¤Ç¤¢¤ê¡¢ ¥Ð¥Ã¥Õ¥¡¤ËÂФ·¤Æ¥í¡¼¥«¥ë¤Ë¤Ï¤Ê¤é¤Ê¤¤¡£ see Multiple Displays¡£

Variable: real-last-command

last-command¤ÈƱÍͤËEmacs¤¬¤³¤ÎÊÑ¿ô¤ËÀßÄꤹ¤ë¤¬¡¢ Lisp¥×¥í¥°¥é¥à¤Ç¤Ï¤±¤Ã¤·¤ÆÊѹ¹¤·¤Ê¤¤¡£

Variable: this-command

¤³¤ÎÊÑ¿ô¤Ï¡¢¥¨¥Ç¥£¥¿¥³¥Þ¥ó¥É¥ë¡¼¥×¤¬ ¤¤¤Þ¼Â¹Ô¤·¤Æ¤¤¤ë¥³¥Þ¥ó¥É¤Î̾Á°¤òµ­Ï¿¤¹¤ë¡£ last-command¤ÈƱÍͤˡ¢Ä̾ï¤Ï´Ø¿ôÄêµÁ¤ò»ý¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£

¥³¥Þ¥ó¥É¥ë¡¼¥×¤Ï¡¢¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ëľÁ°¤Ë¤³¤ÎÊÑ¿ô¤ËÀßÄꤷ¡¢ ¥³¥Þ¥ó¥É¤¬½ªÎ»¤¹¤ë¤È¡Ê¥³¥Þ¥ó¥É¤¬¸å³¤Î¥³¥Þ¥ó¥É¤ËÂФ¹¤ë Á°ÃÖ°ú¿ô¤ò»ØÄꤹ¤ë¾ì¹ç¤ò½ü¤¤¤Æ¡Ë ¤³¤ÎÃͤòlast-command¤Ë¥³¥Ô¡¼¤¹¤ë¡£

¸å³¤Î¥³¥Þ¥ó¥É¤ËÂФ¹¤ë¥Õ¥é¥°¤È¤·¤Æ ¼Â¹ÔÃæ¤Ë¤³¤ÎÊÑ¿ô¤ËÀßÄꤹ¤ë¥³¥Þ¥ó¥É¤â¤¢¤ë¡£ ÆÃ¤Ë¡¢¥Æ¥­¥¹¥È¤ò¥­¥ë¤¹¤ë´Ø¿ô·²¤Ïthis-command¤Ëkill-region¤ò ÀßÄꤷ¤Æ¡¢Ä¾¸å¤Ë³¤¯¥­¥ë¥³¥Þ¥ó¥É¤Ç¤Ï ¥­¥ë¤·¤¿¥Æ¥­¥¹¥È¤ò¤Þ¤¨¤Î¥­¥ë¤ËÄɲ乤ë¤è¤¦¤Ë¤¹¤ë¡£

ÆÃÄê¤Î¥³¥Þ¥ó¥É¤¬¥¨¥é¡¼¤òµ¯¤³¤·¤¿¾ì¹ç¤Ë ľÁ°¤Î¥³¥Þ¥ó¥É¤È¤Ïǧ¼±¤µ¤ì¤¿¤¯¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ ÆÉ¼Ô¤Ï¤½¤Î¥³¥Þ¥ó¥É¤¬¤½¤ì¤òËɤ°¤è¤¦¤Ë½ñ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ 1¤Ä¤ÎÊýË¡¤Ï¡¢°Ê²¼¤Ë¼¨¤¹¤è¤¦¤Ë¡¢ ¥³¥Þ¥ó¥É¤Î»Ï¤á¤Çthis-command¤Ët¤òÀßÄꤷ¡¢ ¥³¥Þ¥ó¥É¤Î½ª¤ê¤Çthis-command¤ËÀµ¤·¤¤ÃͤòÌᤷ¤Þ¤¹¡£

(defun foo (args…)
  (interactive …)
  (let ((old-this-command this-command))
    (setq this-command t)
    …do the work…
    (setq this-command old-this-command)))

let¤Çthis-command¤ò«Çû¤·¤Þ¤»¤ó¡£ ¤È¤¤¤¦¤Î¤Ï¡¢¥¨¥é¡¼¤¬¤¢¤ë¤Èlet¤Ï¸Å¤¤ÃͤòÉü¸µ¤¹¤ë¤«¤é¤Ç¤¹¡£ ¤³¤ì¤³¤½¤¬¤³¤³¤Ç¤ÏÈò¤±¤¿¤¤let¤Îµ¡Ç½¤Ç¤¹¡£

Function: this-command-keys

¤³¤Î´Ø¿ô¤Ï¡¢¸½ºß¤Î¥³¥Þ¥ó¥É¤ËÂФ·¤ÆÄ¾Á°¤Î¥³¥Þ¥ó¥É¤¬À¸À®¤·¤¿Á°ÃÖ°ú¿ô¤ò´Þ¤á¤Æ¡¢ ¸½ºß¤Î¥³¥Þ¥ó¥É¤òµ¯Æ°¤·¤¿¥­¡¼Îó¤ò´Þ¤ó¤Àʸ»úÎ󤫥٥¯¥È¥ë¤òÊÖ¤¹¡£ ¤¹¤Ù¤Æ¤Î¥¤¥Ù¥ó¥È¤¬Ê¸»ú¤Ç¤¢¤ì¤Ð¡¢ÃͤÏʸ»úÎó¤Ç¤¢¤ë¡£ see Input Events¡£

(this-command-keys)
;; C-u C-x C-e¤ò»È¤Ã¤Æ¤³¤Î¼°¤òɾ²Á¤¹¤ë
     ⇒ "^U^X^E"
Function: this-command-keys-vector

this-command-keys¤ÈƱÍͤÀ¤¬¡¢¤Ä¤Í¤Ë¥Ù¥¯¥È¥ë¤Ç¥¤¥Ù¥ó¥È¤òÊÖ¤¹¤¿¤á¡¢ ʸ»úÎó¤ËÆþÎÏ¥¤¥Ù¥ó¥È¤òÊÝ»ý¤¹¤ëºÝ¤ÎÊ£»¨¤µ¤ò°·¤¦É¬Íפ¬¤Ê¤¤ ¡Êsee Strings of Events¡Ë¡£

Variable: last-nonmenu-event

¤³¤ÎÊÑ¿ô¤Ï¡¢¥Þ¥¦¥¹¥á¥Ë¥å¡¼¤Ë¤è¤ë¥¤¥Ù¥ó¥È¤ò¹Í褻¤º¤Ë¡¢ ¥­¡¼Îó¤È¤·¤ÆÆÉ¤ó¤ÀºÇ¸å¤ÎÆþÎÏ¥¤¥Ù¥ó¥È¤òÊÝ»ý¤¹¤ë¡£

¤³¤ÎÊÑ¿ô¤Î1¤Ä¤ÎÍÑÅӤϡ¢ ¥á¥Ë¥å¡¼¤ò¥Ý¥Ã¥×¥¢¥Ã¥×¤¹¤ë°ÌÃÖ¤òx-popup-menu¤Ë»Ø¼¨¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£ y-or-n-p¡Êsee Yes-or-No Queries¡Ë¤âÆâÉôŪ¤Ë»È¤Ã¤Æ¤¤¤ë¡£

Variable: last-command-event
Variable: last-command-char

¤³¤ÎÊÑ¿ô¤Ë¤Ï¡¢¥³¥Þ¥ó¥É¤Î°ìÉô¤È¤·¤Æ¥³¥Þ¥ó¥É¥ë¡¼¥×¤¬ ÆÉ¤ó¤ÀºÇ¸å¤ÎÆþÎÏ¥¤¥Ù¥ó¥È¤¬ÀßÄꤵ¤ì¤ë¡£ ¤³¤ÎÊÑ¿ô¤Î¼ç¤ÊÍÑÅӤϡ¢¤É¤Îʸ»ú¤òÁÞÆþ¤¹¤Ù¤­¤«¤ò·èÄꤹ¤ë¤¿¤á¤Ë self-insert-command¤¬»È¤¦¤³¤È¤Ç¤¢¤ë¡£

last-command-event
;; C-u C-x C-e¤ò»È¤Ã¤Æ¤³¤Î¼°¤òɾ²Á¤¹¤ë
     ⇒ 5

C-e¤ÎASCII¥³¡¼¥É¤Ï5¤Ê¤Î¤Ç¡¢ÃͤÏ5¤Ç¤¢¤ë¡£

Emacs 18ÈǤȤθߴ¹À­¤Î¤¿¤á¤ËÊÌ̾last-command-char¤¬¤¢¤ë¡£

Variable: last-event-frame

¤³¤ÎÊÑ¿ô¤Ï¡¢ºÇ¸å¤ÎÆþÎÏ¥¤¥Ù¥ó¥È¤ò¿¶¤ê¸þ¤±¤¿¥Õ¥ì¡¼¥à¤òµ­Ï¿¤¹¤ë¡£ Ä̾盧¤ì¤Ï¡¢¥¤¥Ù¥ó¥È¤¬À¸À®¤µ¤ì¤¿¤È¤­¤ËÁªÂò¤µ¤ì¤Æ¤¤¤¿¥Õ¥ì¡¼¥à¤Ç¤¢¤ë¤¬¡¢ ¤½¤Î¥Õ¥ì¡¼¥à¤¬ÆþÎÏ¥Õ¥©¡¼¥«¥¹¤òÊ̤Υե졼¥à¤Ë¿¶¤ê¸þ¤±¤Æ¤¤¤ë¤È¡¢ ¤³¤ÎÃͤϥ¤¥Ù¥ó¥È¤ò¿¶¤ê¸þ¤±¤¿Àè¤Î¥Õ¥ì¡¼¥à¤Ç¤¢¤ë¡£ see Input Focus¡£