Skip to content

Instantly share code, notes, and snippets.

@synic
Created November 5, 2015 21:43
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save synic/9516f6986357af21044c to your computer and use it in GitHub Desktop.
Save synic/9516f6986357af21044c to your computer and use it in GitHub Desktop.
(defun save-framegeometry ()
"Gets the current frame's geometry and saves to ~/.emacs.d/framegeometry."
(let (
(framegeometry-left (frame-parameter (selected-frame) 'left))
(framegeometry-top (frame-parameter (selected-frame) 'top))
(framegeometry-width (frame-parameter (selected-frame) 'width))
(framegeometry-height (frame-parameter (selected-frame) 'height))
(framegeometry-file (expand-file-name "~/.emacs.d/framegeometry"))
)
(when (not (number-or-marker-p framegeometry-left))
(setq framegeometry-left 0))
(when (not (number-or-marker-p framegeometry-top))
(setq framegeometry-top 0))
(when (not (number-or-marker-p framegeometry-width))
(setq framegeometry-width 0))
(when (not (number-or-marker-p framegeometry-height))
(setq framegeometry-height 0))
(with-temp-buffer
(insert
";;; This is the previous emacs frame's geometry.\n"
";;; Last generated " (current-time-string) ".\n"
"(setq initial-frame-alist\n"
" '(\n"
(format " (top . %d)\n" (max framegeometry-top 0))
(format " (left . %d)\n" (max framegeometry-left 0))
(format " (width . %d)\n" (max framegeometry-width 0))
(format " (height . %d)))\n" (max framegeometry-height 0)))
(when (file-writable-p framegeometry-file)
(write-file framegeometry-file))))
)
(defun load-framegeometry ()
"Loads ~/.emacs.d/framegeometry which should load the previous frame's geometry."
(let ((framegeometry-file (expand-file-name "~/.emacs.d/framegeometry")))
(when (file-readable-p framegeometry-file)
(load-file framegeometry-file)))
)
;; And then put this in `user-init'
;; Restore Frame size and location, if we are using gui emacs
(if window-system
(progn
(add-hook 'after-init-hook 'load-framegeometry)
(add-hook 'kill-emacs-hook 'save-framegeometry))
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment