summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2021-01-02 22:20:31 +0100
committerRicardo Wurmus <rekado@elephly.net>2021-01-02 23:52:23 +0100
commitcd1deee5cd886d1ca854fd71d0b61073ac465a9f (patch)
tree75d284d92752fa29c0726eeb717b73e1c465ee00
parent41a9747e5980b10c30ad8f8fdeb51a860fc96804 (diff)
Save and restore window layout.
-rw-r--r--guile-studio-configure.scm32
1 files changed, 21 insertions, 11 deletions
diff --git a/guile-studio-configure.scm b/guile-studio-configure.scm
index 470abca..f2197b7 100644
--- a/guile-studio-configure.scm
+++ b/guile-studio-configure.scm
@@ -416,23 +416,33 @@ with the "
(add-hook 'emacs-startup-hook
(lambda ()
+ (require 'winner)
+ (winner-mode 1)
(let ((buf (generate-new-buffer "untitled.scm")))
- (switch-to-buffer buf nil t)
- (funcall (and initial-major-mode))
- (insert ";;; Welcome to Guile Studio!\n")
- (insert ";;; Type your Guile program here and evaluate it.\n")
- (setq buffer-offer-save t)
- (delete-other-windows)
-
- (run-guile)
- (set-window-dedicated-p (selected-window) t)
-
- (call-interactively 'about-guile-studio)
+ (with-current-buffer buf
+ (switch-to-buffer buf nil t)
+ (set-window-dedicated-p (selected-window) nil)
+ (set-window-parameter (selected-window) 'guile-studio/edit t)
+ (funcall (and initial-major-mode))
+ (insert ";;; Welcome to Guile Studio!\n")
+ (insert ";;; Type your Guile program here and evaluate it.\n")
+ (setq buffer-offer-save t)
+
+ (switch-to-geiser)
+ (set-window-dedicated-p (selected-window) t)
+ (call-interactively 'about-guile-studio))
;; This is necessary to show the REPL prompt after
;; displaying the side window.
(pop-to-buffer "* Guile REPL *"))
+ ;; Always restore default layout
+ (defvar guile-studio--layout (winner-conf))
+ (define-key global-map (kbd "ESC ESC ESC")
+ (lambda ()
+ (interactive)
+ (keyboard-escape-quit)
+ (winner-set guile-studio--layout)))
(kill-buffer "*scratch*")
;; Hide the cluttered Tools and Options menu items