Next: Accepting Output, Previous: Process Buffers, Up: Output from Processes [Contents][Index]
¥×¥í¥»¥¹¤Î¥Õ¥£¥ë¥¿´Ø¿ô¡Êfilter function¡Ë¤Ï¡¢ ÂбþÉÕ¤±¤é¤ì¤¿¥×¥í¥»¥¹¤«¤é¤Îɸ½à½ÐÎϤò¼õ¤±¼è¤ë´Ø¿ô¤Ç¤¹¡£ ¥×¥í¥»¥¹¤Ë¥Õ¥£¥ë¥¿¤¬¤¢¤ë¤È¡¢¤½¤Î¥×¥í¥»¥¹¤«¤é¤Î¤¹¤Ù¤Æ¤Î½ÐÎÏ¤Ï ¥Õ¥£¥ë¥¿¤ËÅϤµ¤ì¤Þ¤¹¡£ ¥×¥í¥»¥¹¤Ë¥Õ¥£¥ë¥¿¤¬¤Ê¤¤¾ì¹ç¤Ë¸Â¤Ã¤Æ¡¢ ¥×¥í¥»¥¹¤«¤é¤Î½ÐÎϸþ¤±¤Ë¥×¥í¥»¥¹¥Ð¥Ã¥Õ¥¡¤òľÀܻȤ¤¤Þ¤¹¡£
¥Õ¥£¥ë¥¿´Ø¿ô¤Ï¡¢Emacs¤¬¤Ê¤Ë¤«¤òÂԤäƤ¤¤ë¤È¤¤Ë¤Î¤ß¸Æ¤Ð¤ì¤Þ¤¹¡£
¤½¤Î¤è¤¦¤Ê´ü´Ö¤Ë¤Î¤ß¥×¥í¥»¥¹¤Î½ÐÎϤ¬ÅþÃ夹¤ë¤«¤é¤Ç¤¹¡£
Emacs¤¬ÂԤĤΤϡ¢Ã¼ËöÆþÎϤòÆÉ¤ó¤Ç¤¤¤ë¤È¤¡¢
sit-for
¤äsleep-for
¤ò¼Â¹ÔÃæ¤Î¤È¤¡Êsee Waiting¡Ë¡¢
accept-process-output
¡Êsee Accepting Output¡Ë¤ò¼Â¹ÔÃæ¤Î¤È¤¤Ç¤¹¡£
¥Õ¥£¥ë¥¿´Ø¿ô¤Ï2¤Ä¤Î°ú¿ô¡¢ ÂбþÉÕ¤±¤é¤ì¤¿¥×¥í¥»¥¹¤È¤½¤Î¥×¥í¥»¥¹¤«¤é¼õ¤±¼è¤Ã¤¿¤Ð¤«¤ê¤Î½ÐÎϤǤ¢¤ëʸ»úÎó¤ò ¼õ¤±¼è¤ê¤Þ¤¹¡£ ´Ø¿ô¤Ï½ÐÎϤËÂФ·¤Æ¤Ê¤Ë¤ò¹Ô¤Ã¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£
¥Õ¥£¥ë¥¿´Ø¿ô¤ÎÆâ¦¤Ç¤ÏÃæÃǤÏÉáÄ̤϶ػߤµ¤ì¤Æ¤¤¤Þ¤¹¡£
¤µ¤â¤Ê¤¤¤È¡¢¥³¥Þ¥ó¥É¥ì¥Ù¥ë¤ÇÂǤä¿C-g¤Î¸ú²Ì¤ä¡¢
¥æ¡¼¥¶¡¼¥³¥Þ¥ó¥É¤òÃæÃǤ¹¤ë¤¿¤á¤ËÂǤä¿C-g¤Î¸ú²Ì¤Ïͽ¬¤Ç¤¤Þ¤»¤ó¡£
¥Õ¥£¥ë¥¿´Ø¿ô¤ÎÆâ¦¤ÇÃæÃǤò¹Ô¤¤¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢
inhibit-quit
¤Ënil
¤ò«Çû¤·¤Þ¤¹¡£
See Quitting¡£
¥Õ¥£¥ë¥¿´Ø¿ô¤Î¼Â¹ÔÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤È¤½¤Î¥¨¥é¡¼¤Ï¼«Æ°Åª¤ËÊ᪤µ¤ì¡¢
¥Õ¥£¥ë¥¿´Ø¿ô¤ò»Ïư¤·¤¿¤È¤¤Ëư¤¤¤Æ¤¤¤¿
¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤òÄä»ß¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£
¤·¤«¤·¡¢debug-on-error
¤¬nil
°Ê³°¤Ç¤¢¤ë¤È¡¢
¥¨¥é¡¼¤òÊ᪤·¤Þ¤»¤ó¡£
¤³¤ì¤Ë¤è¤ê¡¢Lisp¥Ç¥Ð¥Ã¥¬¤Ç¥Õ¥£¥ë¥¿´Ø¿ô¤ò¥Ç¥Ð¥Ã¥°¤Ç¤¤Þ¤¹¡£
See Debugger¡£
¿¤¯¤Î¥Õ¥£¥ë¥¿´Ø¿ô¤Ï¡¢¤È¤¤É¤¤¢¤ë¤¤¤Ï¤Ä¤Í¤Ë¡¢
¥×¥í¥»¥¹¤Î¥Ð¥Ã¥Õ¥¡¤Ë¥Æ¥¥¹¥È¤òÁÞÆþ¤·¤Þ¤¹¡£
¤³¤ì¤Ï¥Õ¥£¥ë¥¿´Ø¿ô¤¬¤Ê¤¤¤È¤¤ÎEmacs¤Îưºî¤òÌÏÊ魯¤ë¤â¤Î¤Ç¤¹¡£
¤½¤Î¤è¤¦¤Ê¥Õ¥£¥ë¥¿´Ø¿ô¤Ç¤Ï¡¢ÂоݤΥХåե¡¤ËÁÞÆþ¤¹¤ë¤¿¤á¤Ë
set-buffer
¤ò»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤ò¤Ê¤«¤Ð¹±µ×Ū¤ËÀÚ¤êÂØ¤¨¤Ê¤¤¤è¤¦¤Ë¡¢
¤³¤ì¤é¤Î¥Õ¥£¥ë¥¿´Ø¿ô¤Ï¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤òµÏ¿¡¿Éü¸µ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¥×¥í¥»¥¹¥Þ¡¼¥«¤ò¹¹¿·¤·¡¢É¬Íפ˱þ¤¸¤Æ¥Ý¥¤¥ó¥È¤ÎÃͤ⹹¿·¤·¤Þ¤¹¡£
¤³¤ì¤é¤Ï¤Ä¤®¤Î¤è¤¦¤Ë¹Ô¤¤¤Þ¤¹¡£
(defun ordinary-insertion-filter (proc string) (with-current-buffer (process-buffer proc) (let ((moving (= (point) (process-mark proc))))
(save-excursion
;; ¥Æ¥¥¹¥È¤òÁÞÆþ¤·¡¢¥×¥í¥»¥¹¥Þ¡¼¥«¤ò¿Ê¤á¤ë
(goto-char (process-mark proc))
(insert string)
(set-marker (process-mark proc) (point)))
(if moving (goto-char (process-mark proc))))))
¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤òµÏ¿¡¿Éü¸µ¤¹¤ë¤¿¤á¤Ësave-excursion
¤Ç¤Ï¤Ê¤¯
with-current-buffer
¤ò»È¤¦¤Î¤Ï¡¢
2ÈÖÌܤÎgoto-char
¤Î¸Æ¤Ó½Ð¤·¤Ç¹Ô¤¦¥Ý¥¤¥ó¥È¤Î°Üư¸ú²Ì¤ò
͸ú¤Ë¤¹¤ë¤¿¤á¤Ç¤¹¡£
¿·¤¿¤Ë¥Æ¥¥¹¥È¤¬ÅþÃ夹¤ë¤¿¤Ó¤Ë¥×¥í¥»¥¹¥Ð¥Ã¥Õ¥¡¤¬¸«¤¨¤ë¤è¤¦¤Ë
¥Õ¥£¥ë¥¿´Ø¿ô¤Ç¶¯À©¤¹¤ë¤Ë¤Ï¡¢
¤Ä¤®¤Î¤è¤¦¤Ê¹Ô¤òwith-current-buffer
¤ÎľÁ°¤ËÆþ¤ì¤Þ¤¹¡£
(display-buffer (process-buffer proc))
¥Ý¥¤¥ó¥È°ÌÃ֤˴ؤï¤é¤º¤Ë¿·¤¿¤Ê½ÐÎϤÎËöÈø¤Ë¥Ý¥¤¥ó¥È¤ò°Üư¤¹¤ë¤Ë¤Ï¡¢
ÊÑ¿ômoving
¤òºï½ü¤·¤Æ¡¢
̵¾ò·ï¤Ëgoto-char
¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
Emacs¤Î½é´ü¤ÎÈǤǤϡ¢Àµµ¬É½¸½¤òõº÷¤·¤¿¤ê°ìÃ×½èÍý¤¹¤ë¥Õ¥£¥ë¥¿´Ø¿ô¤Ç¤Ï¡¢ ¥Þ¥Ã¥Á¥Ç¡¼¥¿¤òÌÀ¼¨Åª¤ËÊݸ¡¿Éü¸µ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤·¤¿¡£ º£¤ÎEmacs¤Ï¡¢¥Õ¥£¥ë¥¿´Ø¿ô¤ËÂФ·¤Æ¤Ï¤³¤ì¤ò¼«Æ°Åª¤Ë¹Ô¤¤¤Þ¤¹¤«¤é¡¢ ¥Õ¥£¥ë¥¿´Ø¿ô¤ÇÌÀ¼¨Åª¤Ë¹Ô¤¦É¬ÍפϤ¢¤ê¤Þ¤»¤ó¡£ See Match Data¡£
¥×¥í¥»¥¹¤Î¥Ð¥Ã¥Õ¥¡¤Ë½ÐÎϤò½ñ¤¹þ¤à¥Õ¥£¥ë¥¿´Ø¿ô¤Ï¡¢
¤½¤Î¥Ð¥Ã¥Õ¥¡¤¬Í¸ú¤Ç¤¢¤ë¤«¤É¤¦¤«¤ò¸¡ºº¤¹¤ë¤Ù¤¤Ç¤¹¡£
̵¸ú¤Ê¥Ð¥Ã¥Õ¥¡¤ËÁÞÆþ¤·¤è¤¦¤È¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
¥Ð¥Ã¥Õ¥¡¤¬Ìµ¸ú¤Ç¤¢¤ì¤Ð¡¢
¼°(buffer-name (process-buffer process))
¤ò¼Â¹Ô¤¹¤ë¤Ènil
¤òÊÖ¤·¤Þ¤¹¡£
´Ø¿ô¤ËÅϤµ¤ì¤ë½ÐÎϤÏǤ°Õ¤Î¥µ¥¤¥º¤Î²ô¤Ç¤¤Þ¤¹¡£ Ʊ¤¸½ÐÎϤò2²óÀ¸À®¤¹¤ë¥×¥í¥°¥é¥à¤Ï¡¢ ¤¢¤ë¤È¤¤Ë¤Ï°ìÅÙ¤Ë200ʸ»ú¤Î²ô¤ò1¤ÄÁ÷¤ë¾ì¹ç¤â¤¢¤ì¤Ð¡¢ 40ʸ»ú¤Î²ô¤ò5¤ÄÁ÷¤ë¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ ¥µ¥Ö¥×¥í¥»¥¹¤Î½ÐÎϤ«¤éÆÃÄê¤Î¥Æ¥¥¹¥Èʸ»úÎó¤òõ¤¹¥Õ¥£¥ë¥¿¤Ç¤Ï¡¢ ¤½¤Î¤è¤¦¤Êʸ»úÎó¤¬2¤Ä¤«¤½¤ì°Ê¾å¤Î½ÐÎϤβô¤Ëʬ³ä¤µ¤ì¤ë¾ì¹ç¤â °·¤¨¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥×¥í¥»¥¹process¤Ë¥Õ¥£¥ë¥¿´Ø¿ôfilter¤ò»ØÄꤹ¤ë¡£
filter¤¬nil
¤Ç¤¢¤ë¤È¡¢¥×¥í¥»¥¹¤Ë¥Õ¥£¥ë¥¿¤Ï¤Ê¤¤¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥×¥í¥»¥¹process¤Î¥Õ¥£¥ë¥¿´Ø¿ô¤òÊÖ¤¹¡£
¤¢¤ë¤¤¤Ï¡¢¥Õ¥£¥ë¥¿´Ø¿ô¤¬¤Ê¤±¤ì¤Ðnil
¤òÊÖ¤¹¡£
¥Õ¥£¥ë¥¿´Ø¿ô¤Î»ÈÍÑÎã¤ò¤Ä¤®¤Ë¼¨¤·¤Þ¤¹¡£
(defun keep-output (process output) (setq kept (cons output kept))) ⇒ keep-output
(setq kept nil) ⇒ nil
(set-process-filter (get-process "shell") 'keep-output) ⇒ keep-output
(process-send-string "shell" "ls ~/other\n") ⇒ nil kept ⇒ ("lewis@slug[8] % "
"FINAL-W87-SHORT.MSS backup.otl kolstad.mss~ address.txt backup.psf kolstad.psf backup.bib~ david.mss resume-Dec-86.mss~ backup.err david.psf resume-Dec.psf backup.mss dland syllabus.mss " "#backups.mss# backup.mss~ kolstad.mss ")