|  | @@ -142,6 +142,7 @@
 | 
	
		
			
				|  |  |           :map evil-window-map
 | 
	
		
			
				|  |  |                ("q" . delete-window)
 | 
	
		
			
				|  |  |                ("C-q" . delete-window)
 | 
	
		
			
				|  |  | +	      ("x" . kill-buffer-and-window)
 | 
	
		
			
				|  |  |           :map evil-operator-state-map
 | 
	
		
			
				|  |  |                ("lw" . evil-little-word)))
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -301,6 +302,8 @@
 | 
	
		
			
				|  |  |    (advice-add #'linum-update-window
 | 
	
		
			
				|  |  |                :after #'linum-update-window-scale-fix))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +;; TODO see if I can replace bind-map with hydra. I forget things
 | 
	
		
			
				|  |  | +;; often, so a popup for some chords would be nice.
 | 
	
		
			
				|  |  |  (use-package bind-map
 | 
	
		
			
				|  |  |    :ensure t
 | 
	
		
			
				|  |  |    :after evil
 | 
	
	
		
			
				|  | @@ -341,7 +344,7 @@
 | 
	
		
			
				|  |  |     :major-modes (org-mode)
 | 
	
		
			
				|  |  |     :bindings
 | 
	
		
			
				|  |  |     ("t" 'org-toggle-latex-fragment
 | 
	
		
			
				|  |  | -    "o" 'org-timeline)))
 | 
	
		
			
				|  |  | +    "o" 'org-timeline))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    (bind-map
 | 
	
		
			
				|  |  |     my-elisp-map
 | 
	
	
		
			
				|  | @@ -350,8 +353,24 @@
 | 
	
		
			
				|  |  |     :major-modes (emacs-lisp-mode)
 | 
	
		
			
				|  |  |     :bindings
 | 
	
		
			
				|  |  |     ("el" 'evil-eval-last-sexp
 | 
	
		
			
				|  |  | +    "er" 'eval-region
 | 
	
		
			
				|  |  |      "eb" 'eval-buffer))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  (defun evil-slime-eval-last-expression ()
 | 
	
		
			
				|  |  | +    (interactive)
 | 
	
		
			
				|  |  | +    (evil-append 1)
 | 
	
		
			
				|  |  | +    (slime-eval-last-expression)
 | 
	
		
			
				|  |  | +    (evil-normal-state))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  (bind-map
 | 
	
		
			
				|  |  | +   my-slime-map
 | 
	
		
			
				|  |  | +   :keys ("M-m")
 | 
	
		
			
				|  |  | +   :evil-keys ("SPC")
 | 
	
		
			
				|  |  | +   :major-modes (lisp-mode)
 | 
	
		
			
				|  |  | +   :bindings
 | 
	
		
			
				|  |  | +   ("el" 'evil-slime-eval-last-expression
 | 
	
		
			
				|  |  | +    "er" 'slime-eval-region)))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  (use-package treemacs
 | 
	
		
			
				|  |  |    :ensure t
 | 
	
		
			
				|  |  |    :bind (:map treemacs-mode-map
 | 
	
	
		
			
				|  | @@ -521,6 +540,17 @@
 | 
	
		
			
				|  |  |    ;; other faces such as `diff-added` will be used for other actions
 | 
	
		
			
				|  |  |    (evil-goggles-use-diff-faces))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +;; TODO Finish up special rules for windows like help and repl windows.
 | 
	
		
			
				|  |  | +;; Where they're positioned, whether or not they're focused, etc.
 | 
	
		
			
				|  |  | +(use-package shackle
 | 
	
		
			
				|  |  | +  :ensure t
 | 
	
		
			
				|  |  | +  :init
 | 
	
		
			
				|  |  | +  (shackle-mode)
 | 
	
		
			
				|  |  | +  (setq shackle-rules '(("*Python*" :align t :size 0.2)
 | 
	
		
			
				|  |  | +			("*Help*" :align t :size 0.4 :select t)
 | 
	
		
			
				|  |  | +			("\\`\\*intero:.*:repl\\*\\'" :regexp t :align t :size 0.4))))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  ;; OS specific
 | 
	
		
			
				|  |  |  (use-package magit
 | 
	
		
			
				|  |  |    :if (not (eq system-type 'windows-nt))
 | 
	
	
		
			
				|  | @@ -604,6 +634,9 @@
 | 
	
		
			
				|  |  |  (use-package latex-preview-pane)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  (use-package slime
 | 
	
		
			
				|  |  | +  :init
 | 
	
		
			
				|  |  | +  (setq auto-mode-alist (cons '("\\.cl$" . common-lisp-mode) auto-mode-alist))
 | 
	
		
			
				|  |  | +  (add-hook 'lisp-mode-hook 'slime-mode)
 | 
	
		
			
				|  |  |    :config
 | 
	
		
			
				|  |  |    (setq inferior-lisp-program "sbcl")
 | 
	
		
			
				|  |  |    (slime-setup))
 |