모든 모드 라인 대신 활성 모드 라인에 무언가 표시


10

이것으로 모드 라인에 조직 타이머 표시기를 설정했습니다.

(setq-default
 mode-line-format
 (quote
  (
   ;; org-timer
   (:eval
    (unless (not org-timer-countdown-timer)
      (propertize (let* ((rtime (decode-time
                                 (time-subtract
                                  (timer--time org-timer-countdown-timer)
                                  (current-time))))
                         (rmins (nth 1 rtime))
                         (rsecs (nth 0 rtime)))
                    (format "🕔 %d:%d" rmins rsecs))
                  'face '(:foreground "cyan" :weight bold)
                  'help-echo "org-timer")))

   )))

이 org-timer 표시기 가 모든 모드 라인 대신 활성 모드 라인 에만 표시되기를 원합니다 . 어떻게합니까?


다음을 참조하십시오 : emacs.stackexchange.com/a/22682/2287
Lawlist

@lawlist 코드를 이해할 수 없습니다. 제 사건에 어떻게 신청해야할지 모르겠습니다.
stardiviner

1
redisplay엔진은 특정 상황에서 각 창을 확인 할 수 있습니다 (예를 들어, 모드 라인이 자연스럽게 새로 고칠 때, 또는이 새로 강제 경우). mode-line-format에 함수 가 포함 된 경우 (selected-window), 재 표시가 다양한 창을 방문 할 때 다른 창이 리턴됩니다. 이 값은 사전 기록 된 값과 비교할 수 있습니다. 예를 들어, post-command-hook마지막으로 알려진 selected-window값 을 기록하는 데 사용할 수 있으며 나중에 해당 값을 내부의 함수와 비교할 수 있습니다 mode-line-format. 그래서 PCH를 사용하여를 기록 / 저장합니다 selected-window.
lawlist

@lawlist 코드를 확인했지만 내 사례에 대한 일반적인 사용법을 찾지 못했습니다. 대신 다른 것으로 변경하면 org-timer. 어떻게해야합니까? 더 일반적인 방법을 바랍니다. 심지어 그것은 나에게 영감을주었습니다. 좀 더 정확하게 코드 예제를 줄 수 있습니까? 설정이 다르기 때문에 'face표시 문자열을 변경해야합니다.
stardiviner

나는 이것을 시도하지 않았지만이 질문은 이것과 비슷하게 보입니다 : emacs.stackexchange.com/q/13842/115
Kaushal Modi

답변:


7

다음 예에서“ACTIVE”라는 단어가 활성화 된 창의 모드 행에 나타나고 다른 모든 창에는“INACTIVE”라는 단어가 모드 행에 표시됩니다.

이 예제를 사용 emacs -Q하여 광고 된대로 작동하는지 확인하십시오. 그런 다음 필요에 따라 사용자 정의하십시오.

에 필요한 추가 후크를 추가하십시오 ml-update-all.

(defvar ml-selected-window nil)

(defun ml-record-selected-window ()
  (setq ml-selected-window (selected-window)))

(defun ml-update-all ()
  (force-mode-line-update t))

(add-hook 'post-command-hook 'ml-record-selected-window)

(add-hook 'buffer-list-update-hook 'ml-update-all)

(setq-default mode-line-format
  '(:eval
      (if (eq ml-selected-window (selected-window))
        "ACTIVE"
        "INACTIVE")))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.