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:
copilot-swe-agent[bot] 2025-12-14 16:24:36 +00:00
parent 00280243f3
commit f02a3d6ace

13
tp.el
View File

@ -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'.