|
@@ -84,8 +84,8 @@
|
|
|
(member layer *buffer-layers-applied*))
|
|
|
|
|
|
(defun buffer-layer--get-buffer-layer-definition (layer-name)
|
|
|
- (first (cl-remove-if-not (lambda (layer)
|
|
|
- (eq layer-name (buffer-layer-name layer))) *buffer-layer-definitions*)))
|
|
|
+ (car (cl-remove-if-not (lambda (layer)
|
|
|
+ (eq layer-name (buffer-layer-name layer))) *buffer-layer-definitions*)))
|
|
|
|
|
|
(defun buffer-layer--generate-buffers-list (layer-name)
|
|
|
(intern (format "*buffer-layer-%s--buffers*" layer-name)))
|
|
@@ -103,35 +103,46 @@
|
|
|
:on-remove (lambda () ,@on-remove))
|
|
|
*buffer-layer-definitions*
|
|
|
:key #'buffer-layer-name)
|
|
|
- (defvar ,(buffer-layer--generate-buffers-list name))
|
|
|
+ (defvar ,(buffer-layer--generate-buffers-list name) nil)
|
|
|
',name))
|
|
|
|
|
|
(defun buffer-layers-load-layer (name)
|
|
|
- (interactive (list (completing-read "Layer Name: "
|
|
|
- (cl-remove-if #'(lambda (layer) (member layer *buffer-layers-applied*)) *buffer-layers*)
|
|
|
- nil t)))
|
|
|
+ (interactive (list (intern (completing-read "Layer Name: "
|
|
|
+ (cl-remove-if #'(lambda (layer) (member layer *buffer-layers-applied*)) *buffer-layers*)
|
|
|
+ nil t))))
|
|
|
(let ((layer-definition (buffer-layer--get-buffer-layer-definition name)))
|
|
|
- ;; (if (not (buffer-layer-p layer-definition))
|
|
|
- ;; (error "Layer Undefined: %s" name))
|
|
|
- (let ((files (buffer-layer-files layer-definition))
|
|
|
- (select (buffer-layer-select layer-definition))
|
|
|
- (on-apply (buffer-layer-on-apply layer-definition))
|
|
|
- (buffers-list (buffer-layer--generate-buffers-list name)))
|
|
|
- (mapc (lambda (file)
|
|
|
- (add-to-list buffers-list (find-file file)))
|
|
|
- files)
|
|
|
- (funcall on-apply)
|
|
|
- (when (stringp select)
|
|
|
- (switch-to-buffer select))
|
|
|
- (add-to-list '*buffer-layers-applied* name)
|
|
|
- (message "Applied buffer layer %s." name))))
|
|
|
+ (if (not (buffer-layer-p layer-definition))
|
|
|
+ (error "Layer Undefined: %s" name)
|
|
|
+ (let ((files (buffer-layer-files layer-definition))
|
|
|
+ (select (buffer-layer-select layer-definition))
|
|
|
+ (on-apply (buffer-layer-on-apply layer-definition))
|
|
|
+ (buffers-list (buffer-layer--generate-buffers-list name)))
|
|
|
+ (setf (symbol-value buffers-list) (mapcar #'find-file files))
|
|
|
+ (funcall on-apply)
|
|
|
+ (when (stringp select)
|
|
|
+ (switch-to-buffer select))
|
|
|
+ (add-to-list '*buffer-layers-applied* name)
|
|
|
+ (message "Applied buffer layer %s." name)))))
|
|
|
|
|
|
(defalias 'load-buffer-layer 'buffer-layers-load-layer)
|
|
|
|
|
|
(defun buffer-layers-unload-buffer-layer (name)
|
|
|
"Unload Buffer Layer named NAME."
|
|
|
- (interactive (list (completing-read "Buffer Layer Name: " *buffer-layers-applied*)))
|
|
|
- (funcall (buffer-layers--remover-name name)))
|
|
|
+ (interactive (list (intern (completing-read "Buffer Layer Name: " *buffer-layers-applied*))))
|
|
|
+ (let ((layer-definition (buffer-layer--get-buffer-layer-definition name)))
|
|
|
+ (if (not (buffer-layer-p layer-definition))
|
|
|
+ (error "Layer Undefined: %s" name)
|
|
|
+ (let ((buffers-list (buffer-layer--generate-buffers-list name))
|
|
|
+ (on-remove (buffer-layer-on-remove layer-definition)))
|
|
|
+ (mapc (lambda (buffer)
|
|
|
+ (with-current-buffer buffer
|
|
|
+ (save-buffer)
|
|
|
+ (kill-buffer buffer)))
|
|
|
+ (symbol-value buffers-list))
|
|
|
+ (funcall on-remove)
|
|
|
+ (setf (symbol-value buffers-list) nil)
|
|
|
+ (setq *buffer-layers-applied* (delq name *buffer-layers-applied*))
|
|
|
+ (message "Removed Buffer Layer: %s" name)))))
|
|
|
|
|
|
(defun buffer-layers-list ()
|
|
|
"Produce a list of defined buffer layers."
|