Emacs Lisp:을 새로 생성된 버퍼를 표시하기 전에 반환됩니다?
-
06-07-2019 - |
문제
에서 다음과 같은 기능에 emacs Lisp,
(defun show-life ()
(interactive)
(switch-to-buffer "*Life-Window*") ; show how life goes on while living
(live)) ; it takes 70 years to finish and return!
내가 만들고 싶은 버퍼"생명 창"및 생활을 이벤트를 생성하여(살고)표시되는 동안 지속적으로 살아갑니다.
불행하게도,버퍼만 표시 된 후(라)반환합니다(때 그 이상!)
저는 팝을 버퍼는 동작은 동일합니다.
해결책
호출을 추가 'sit-for
전화 'live
, 예
(defun show-life ()
(interactive)
(switch-to-buffer "*Life-Window*") ; show how life goes on while living
(sit-for 0) ; perform redisplay
(live)) ; it takes 70 years to finish and return!
고,당신이 원하는 경우의 결과를 참조하십시오 'live
,그것은 주기적으로 전화 'sit-for
뿐만 아니라.
문서에 대한 문자열 'sit-for
입니다:
앉은 컴파일 패키지 기능 `subr.el'.(앉아에 대한 초 및 선택 nodisp)
을 수행이 다시 표시되어,그릴 초 초까지 입력 유효합니다.초될 수 있는 부동 소수점 값입니다.(에서 운영 체제 는 시스템이 지원하지 않기 에 대한 분수의 두 번째, 부동 소수점 값을 내림 가장 가까운 정수입니다.)
는 경우 선택적인 arg nodisp t 지 다시 표시,그냥 기다려 입력합니다.다시 표시되어 발생하지 않는 경우에 입력 사용 가능하기 전에 시작됩니다.
값이면 기다렸다가 가득 시간 입력에 도착,그리고 nil 지 않습니다.
다른 팁
나는 솔루션입니다.내가 사용하는 (sit-for <time-to-wait>)
을 얻을 버퍼 업데이트를 표시하는 삶의 이벤트입니다.
그래서 코드 세그먼트는 수정해야 합니다 다음과 같다:
(defun show-life () (interactive) (switch-to-buffer "*Life-Window*") ; show how life goes on while living (sit-for 0) (live)) ; it takes 70 years to finish and return!
어쩌면 내부의 live
체, sit-for
해야한 주기적으로 호출됩니다.
제휴하지 않습니다 StackOverflow