Emacs 시작할 때 이전 frame 복원
Emacs는 종료할 때 프레임의 위치와 크기를 저장하지 않는다. desktop-save-mode를 사용하면 되지만 이 모드는 frame 위치와 크기 뿐만 아니라, 버퍼 등등 온갖 상태를 저장하므로 emacs를 재시작 하기가 부담스럽다.
그래서 간단하게 frame의 위치와 크기를 저장하고 복원하는 함수를 만들었다.
;;; Save frame
(defun my-save-frame ()
"Gets the current frame's geometry and saves to ~/.emacs.d/frame.el."
(let ((frameg-left (frame-parameter (selected-frame) 'left))
(frameg-top (frame-parameter (selected-frame) 'top))
(frameg-width (frame-text-width))
(frameg-height (frame-text-height))
(frameg-file "~/.emacs.d/frame.el"))
(with-temp-buffer
(insert
";;; This file stores the previous emacs frame's geometry.\n"
"(setq initial-frame-alist\n"
(format "'((top . %d)\n" (max frameg-top 0))
(format " (left . %d)\n" (max frameg-left 0))
(format " (width . (text-pixels . %d))\n" (max frameg-width 0))
(format " (height . (text-pixels . %d))))\n" (max frameg-height 0)))
(when (file-writable-p frameg-file)
(write-file frameg-file)))))
;;; Load frame
(defun my-load-frame ()
"Loads ~/.emacs.d/frame.el which should load the previous frame's geometry."
(let ((frameg-file "~/.emacs.d/frame.el"))
(when (file-readable-p frameg-file)
(load-file frameg-file))))
(my-load-frame)
(when (display-graphic-p)
(add-hook 'kill-emacs-hook #'my-save-frame))
댓글
Comments powered by Disqus