OS X 10.6에서 gnu emacs 23.3.1 cocoa build를 실행하고 있습니다.
~ / Library / LaunchAgents / gnu.emacs.daemon.plist에 다음을 추가하여 데몬을 시작하고 실수로 죽일 경우 자동으로 emacs를 다시 시작합니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>gnu.emacs.daemon</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Emacs.app/Contents/MacOS/Emacs</string>
<string>--daemon</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>ServiceDescription</key>
<string>Gnu Emacs Daemon</string>
</dict>
</plist>
이 종류는 작동하지만 색상 테마가 제대로 작동하지 않는 것을 알았습니다. 그런 다음 init 파일에 다음을 추가 한 것을 기억했습니다.
(when window-system
(require 'alpha)
(require 'color-theme-ir-black)
(modify-frame-parameters (selected-frame) '((alpha . 85)))
(color-theme-ir-black))
데몬 창 시스템으로 시작했을 때 분명히 거짓이며 의미가 있지만, 이것을 추가 한 이유는 때때로 ssh 등의 터미널에서 일반 emacs 빌드를 시작하고 iTerm 에서이 색상 구성표를 완전히 읽을 수 없기 때문입니다. (창 시스템 일 때 ...). --daemon으로 시작할 때 emacs가 창 모드를 시작하게하는 방법이 있습니까?
내가 주목 한 또 다른 문제는 dameon 모드에서 프레스 sw (삭제 프레임)를 실행할 때 단독으로 표시되거나 아이콘 화 된 프레임을 삭제하는 오류가 발생하지 않으며 emacs가 백그라운드에서 계속 실행된다는 것입니다. 나는이 부분을 좋아하지만 마지막 프레임이 종료되면 더 이상 문서에서 emacs를 다시 열 수 없으며 emacs가 활성화되고 메뉴가 표시되지만 작동하지 않으며 새 프레임을 만들 수 없다는 것을 알았습니다. 명령 행에서 emacsclient를 사용하는 것을 제외하고. 다른 사람이이 문제 또는 해결 방법에 대한 권장 사항이 있습니까? 아마도 sw를 바인드하여 마지막 프레임과 iconify-frame을 대신 감지 할 수는 있지만 왜 마지막 프레임이 아니라고 생각하고 처음부터 죽일 수 있었는지 확실하지 않습니다.
최신 정보:
Steve Purcell의 다음 블로그에서 비슷한 문제에 대한 픽스를 발견했습니다. http://emacs-fu.blogspot.com/2009/03/color-theming.html
비밀은 'after-make-frame-functions 후크를 사용하여 새로 만든 프레임을 설정하고 각 프레임마다 고유 한 색상 테마를 가질 수 있도록 (setq color-theme-is-global nil) 설정하는 것입니다. 따라서 init의 관련 섹션은 이제 다음과 같습니다.
(defvar after-make-console-frame-hooks '()
"Hooks to run after creating a new TTY frame")
(defvar after-make-window-system-frame-hooks '()
"Hooks to run after creating a new window-system frame")
(defun run-after-make-frame-hooks (frame)
"Selectively run either `after-make-console-frame-hooks' or
`after-make-window-system-frame-hooks'"
(select-frame frame)
(run-hooks (if window-system
'after-make-window-system-frame-hooks
'after-make-console-frame-hooks)))
(add-hook 'after-make-frame-functions 'run-after-make-frame-hooks)
(add-hook 'after-init-hook (lambda ()
(run-after-make-frame-hooks (selected-frame))))
(setq color-theme-is-global nil)
(add-hook 'after-make-window-system-frame-hooks
'(lambda ()
(require 'alpha)
(require 'color-theme-ir-black)
(modify-frame-parameters (selected-frame) '((alpha . 85)))
(color-theme-ir-black)
(global-set-key (kbd "s-w") 'delete-frame)))
그러나 emacs가 데몬으로 시작되었을 때 delete-frame이 마지막 프레임을 닫고 emacsclient를 사용하여 다른 프레임을 만들 수없는 문제가 여전히 있습니다.
최신 정보:
내가 eval (frame-list)
하나만 볼 수 있지만 두 개의 프레임이 나열되어 있습니다. /Applications/Emacs.app
emacsclient 대신 open으로 Emacs를 시작하면 이런 일이 발생하지 않는 것을 알았습니다 . 나는 보통 e='emacsclient -c -n '
두 번째 프레임을 만드는 별명으로 명령 행에서 emacs를 시작 합니다. open 명령으로 emacs를 시작해야만 다른 프레임에 연결할 수 있습니다. -c
아무 것도 얻지 않고 emacsclient -n somefile을 시도 하면 실행 하면 응용 프로그램 폴더에서 새 프레임을 만들거나 emacs를 열 emacsclient -n -e '(frame-list)'
때까지 프레임이 보이지 않습니다 -c
.