Browse Source

Added loading and saving

Samuel W. Flint 7 years ago
parent
commit
ce7cf33d8b
1 changed files with 15 additions and 2 deletions
  1. 15 2
      buffer-layers.el

+ 15 - 2
buffer-layers.el

@@ -39,6 +39,11 @@
 (defvar *buffer-layer-file* "~/.emacs.d/buffer-layer-definitions.el"
   "The file to store buffer layer definitions in.")
 
+(defun buffer-layers-load-definitions-file ()
+  "Load buffer layer definitions file."
+  (load *buffer-layer-file* t t)
+  (message "Loaded Buffer Layer Definitions."))
+
 (defun buffer-layers-applied-p (layer)
   "Returns true if LAYER is applied."
   (member layer *buffer-layers-applied*))
@@ -155,10 +160,9 @@
   "Set the buffer to automatically select."
   (interactive (list (completing-read "Layer: " *buffer-layers* nil t))))
 
-(defun buffer-layers-save ()
+(defun buffer-layers-save (the-layer)
   "Save defined buffer layers."
   (interactive)
-
   (insert (format "%S\n\n" (let ((name (buffer-layer-name the-layer))
                                  (files (buffer-layer-files the-layer))
                                  (select (buffer-layer-select the-layer))
@@ -170,6 +174,13 @@
                                 :on-apply ,on-apply
                                 :on-remove ,on-remove)))))
 
+(defun buffer-layers-save-definitions ()
+  (with-current-buffer (find-file *buffer-layers-file*)
+    (mark-whole-buffer)
+    (kill-region)
+    (mapc #'buffer-layers-save *buffer-layer-definitions*))
+  (message "Saved Buffer Layer Definitions."))
+
 (defvar buffer-layers-map (make-keymap)
   "Keymap for buffer-layer commands.")
 
@@ -190,9 +201,11 @@
   :lighter " BLM" :global t :variable buffer-layers-mode-p
   (if buffer-layers-mode-p
       (progn
+        (buffer-layers-load-definitions-file)
         (define-key ctl-x-map (kbd "L") buffer-layers-map)
         (add-hook 'kill-emacs-hook #'buffer-layers-unload-all-buffer-layers))
     (progn
+      (buffer-layers-save-definitions)
       (define-key ctl-x-map (kbd "L") nil)
       (remove-hook 'kill-emacs-hook #'buffer-layers-unload-all-buffer-layers))))