Address code review: add seq require and improve nil checks
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
This commit is contained in:
parent
00280243f3
commit
f02a3d6ace
13
tp.el
13
tp.el
@ -31,6 +31,7 @@
|
||||
|
||||
(require 'cl-lib)
|
||||
(require 'dash)
|
||||
(require 'seq)
|
||||
|
||||
;;; tp layer define
|
||||
|
||||
@ -69,16 +70,18 @@ For multiple layers, they are stored as a group in `tp-layer-groups'.
|
||||
The first layer in the definition is the top layer."
|
||||
(declare (indent defun))
|
||||
;; Determine if this is a single layer (one plist argument) or multiple layers
|
||||
(let ((first-layer (car layers)))
|
||||
(let ((is-single-layer
|
||||
(and (= (length layers) 1)
|
||||
(listp (car layers))
|
||||
first-layer
|
||||
(listp first-layer)
|
||||
;; A plist has an even number of elements (key-value pairs)
|
||||
(cl-evenp (length (car layers)))
|
||||
(cl-evenp (length first-layer))
|
||||
;; The first element is a property name (symbol, not nil)
|
||||
(symbolp (caar layers)))))
|
||||
(symbolp (car first-layer)))))
|
||||
(if is-single-layer
|
||||
;; Single layer: (tp-define-layer name '(plist...))
|
||||
(let ((properties (car layers)))
|
||||
(let ((properties first-layer))
|
||||
`(progn
|
||||
(if (assoc ',name tp-layer-alist)
|
||||
(setf (cdr (assoc ',name tp-layer-alist)) ',properties)
|
||||
@ -109,7 +112,7 @@ The first layer in the definition is the top layer."
|
||||
(if (assoc ',name tp-layer-groups)
|
||||
(setf (cdr (assoc ',name tp-layer-groups)) ',layer-names)
|
||||
(push (cons ',name ',layer-names) tp-layer-groups))
|
||||
(assoc ',name tp-layer-groups))))))
|
||||
(assoc ',name tp-layer-groups)))))))
|
||||
|
||||
(defun tp-layer-props (layer-name)
|
||||
"Return properties for layer LAYER-NAME from `tp-layer-alist'.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user