Browse Source

Add session saving, racket C-w, neotree refresh

Josh Bicking 8 years ago
parent
commit
756c718995
1 changed files with 47 additions and 11 deletions
  1. 47 11
      emacs

+ 47 - 11
emacs

@@ -1,7 +1,6 @@
 ;; TODO:
 ;; Easier undo tree traversal
 ;; Replace evil-leader with general
-;; consider removing auto-complete
 
 ;;;; Startup
 (setq initial-scratch-message "")
@@ -89,6 +88,42 @@
   (tool-bar-mode -1)
   )
 
+;; Save session including tabs
+;; http://stackoverflow.com/questions/22445670/save-and-restore-elscreen-tabs-and-split-frames
+(defun session-save ()
+    "Store the elscreen tab configuration."
+    (interactive)
+    (if (desktop-save user-emacs-directory)
+        (with-temp-file (concat user-emacs-directory ".elscreen")
+            (insert (prin1-to-string (elscreen-get-screen-to-name-alist))))))
+
+;; Load session including tabs
+(defun session-load ()
+    "Restore the elscreen tab configuration."
+    (interactive)
+    (if (desktop-read)
+        (let ((screens (reverse
+                        (read
+                         (with-temp-buffer
+                          (insert-file-contents (concat user-emacs-directory ".elscreen"))
+                          (buffer-string))))))
+            (while screens
+                (setq screen (car (car screens)))
+                (setq buffers (split-string (cdr (car screens)) ":"))
+                (if (eq screen 0)
+                    (switch-to-buffer (car buffers))
+                    (elscreen-find-and-goto-by-buffer (car buffers) t t))
+                (while (cdr buffers)
+                    (switch-to-buffer-other-window (car (cdr buffers)))
+                    (setq buffers (cdr buffers)))
+                (setq screens (cdr screens))))))
+
+;; smoother scrolling
+(setq scroll-margin 0
+scroll-conservatively 9999
+scroll-step 1)
+
+
 ;;;; Packages
 
 ;; Package installation
@@ -142,7 +177,6 @@
 	company
 	;helm
 	ivy
-	smooth-scrolling
 	flycheck
 	flycheck-pos-tip
 	evil-surround
@@ -383,6 +417,7 @@
 (evil-define-key 'normal neotree-mode-map (kbd "q") 'neotree-hide)
 (evil-define-key 'normal neotree-mode-map (kbd "RET") 'neotree-enter)
 (evil-define-key 'normal neotree-mode-map (kbd "h") 'neotree-hidden-file-toggle)
+(evil-define-key 'normal neotree-mode-map (kbd "r") 'neotree-refresh)
 
 ;Every time when the neotree window is opened, let it find current file and jump to node.
 (setq neo-smart-open t)
@@ -396,9 +431,16 @@
 (setq js-indent-level 2)
 
 
-;; geiser
-(add-to-list 'auto-mode-alist '("\\.scm\\'" . scheme-mode))
-(setq geiser-scheme-implementation 'racket)
+;; racket-mode
+(add-to-list 'auto-mode-alist '("\\.scm\\'" . racket-mode))
+
+; C-w prefix in racket-REPL
+(add-hook 'racket-repl-mode-hook 'racket-repl-evil-hook)
+
+(defun racket-repl-evil-hook ()
+  (define-key racket-repl-mode-map "\C-w" 'evil-window-map)
+  (global-set-key (kbd "C-w") 'racket-repl-mode-map))
+
 
 ;; editorconfig
 (editorconfig-mode 1)
@@ -426,12 +468,6 @@
 ;; company
 (require 'company)
 
-;; smooth-scrolling
-(require 'smooth-scrolling)
-(setq scroll-margin 0
-scroll-conservatively 9999
-scroll-step 1)
-
 ;; flycheck
 (require 'flycheck)
 (add-hook 'after-init-hook #'global-flycheck-mode)