2014-06-11 3 views
3

나는 OS X 10.9 (매버릭스)에서 emacsformacosx.com의 emacs 24.3을 사용하고 있습니다. 동작은 Debian Wheezy의 emacs 23.4.1에서 동일합니다.계산기 창 전용으로 Emacs를 구성하는 방법은 무엇입니까?

자동화를 적용하여 set-window-dedicated-p을 적용하면 버퍼를 전환/열기해도 특정 창을 사용하지 않습니다. 예를 들어, 계산기에있는 경우 수동으로 Meta-:을 사용하고 (set-window-dedicated-p (get-buffer-window) t)을 입력하면 훌륭하게 작동합니다. 내 계산기 창은 다른 버퍼에 의해 도용되지 않습니다. 나는 그것이 자동적으로 그렇게 작동하기를 바랍니다.

(add-hook 'calc-mode-hook 
    (lambda() 
    (message "Dedicating %s" (buffer-name)) 
    (set-window-dedicated-p (get-buffer-window) t) 
    (message "Dedication %s" (window-dedicated-p (get-buffer-window "*Calculator*"))))) 

가 그럼 난 * * 표시 메시지에 창을 이맥스, 스위치를 시작하고 Meta-xcalc :

나는 나의 .emacs 파일에 넣고. * Messages * 버퍼가 표시됩니다.

Dedicating *Calculator* 
Dedication t 

그래서 내 후크가 호출되었고 어떤 버퍼를 조작했는지 알 수 있습니다. 그러나 * Calculator * 버퍼는 전용 버퍼가 아니며 제대로 작동하지 않으며 Meta-:(window-dedicated-p)nil을 반환합니다. * Messages * 버퍼가 대신 전용입니다.

* Calculator * 창이 왜곡되어 있지만 이후에는 표시되지 않는 이유는 무엇입니까? 여기서 내가 뭘 잘못하고 있니?

답변

4

불행히도 *Calculator* 버퍼는 코드 실행 시점의 어떤 창에도 표시되지 않습니다.

'확인'메시지가 오해의 소지가있었습니다. (buffer-name)은 확실히 원하는 버퍼이지만 모든 창에있는 것이 아니므로 실제로 모든 상황에서 창에 대해 nil 인수를 전달하고 있습니다. 즉, 현재 창을 전용으로 설정 한 다음 전용 창을 확인합니다 (실제로 있어야 함).

calc에 대한 조언은 여기에 필요한 것 같아요. 예 :

(defadvice calc (after my-dedicated-calc-window) 
    "Make the *Calculator* window dedicated." 
    (let ((win (get-buffer-window "*Calculator*"))) 
    (when win 
     (set-window-dedicated-p win t)))) 
(ad-activate 'calc) 

n.b calc에 대한 인수가 윈도우 디스플레이에 어떻게 영향을 미치는지 정확히 모르겠지만,이 코드는 set-window-dedicated-p에 대한 호출을 래핑하는 창에 대한 테스트로는 모든 경우에 괜찮을 것으로 생각됩니다.

+0

최소한 이맥스 22.1.1에서 정상적으로 작동합니다. 감사! – rhashimoto

관련 문제