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

35
tp.el
View File

@ -31,6 +31,7 @@
(require 'cl-lib) (require 'cl-lib)
(require 'dash) (require 'dash)
(require 'seq)
;;; tp layer define ;;; tp layer define
@ -69,21 +70,23 @@ For multiple layers, they are stored as a group in `tp-layer-groups'.
The first layer in the definition is the top layer." The first layer in the definition is the top layer."
(declare (indent defun)) (declare (indent defun))
;; Determine if this is a single layer (one plist argument) or multiple layers ;; Determine if this is a single layer (one plist argument) or multiple layers
(let ((is-single-layer (let ((first-layer (car layers)))
(and (= (length layers) 1) (let ((is-single-layer
(listp (car layers)) (and (= (length layers) 1)
;; A plist has an even number of elements (key-value pairs) first-layer
(cl-evenp (length (car layers))) (listp first-layer)
;; The first element is a property name (symbol, not nil) ;; A plist has an even number of elements (key-value pairs)
(symbolp (caar layers))))) (cl-evenp (length first-layer))
(if is-single-layer ;; The first element is a property name (symbol, not nil)
;; Single layer: (tp-define-layer name '(plist...)) (symbolp (car first-layer)))))
(let ((properties (car layers))) (if is-single-layer
`(progn ;; Single layer: (tp-define-layer name '(plist...))
(if (assoc ',name tp-layer-alist) (let ((properties first-layer))
(setf (cdr (assoc ',name tp-layer-alist)) ',properties) `(progn
(push (cons ',name ',properties) tp-layer-alist)) (if (assoc ',name tp-layer-alist)
(assoc ',name tp-layer-alist))) (setf (cdr (assoc ',name tp-layer-alist)) ',properties)
(push (cons ',name ',properties) tp-layer-alist))
(assoc ',name tp-layer-alist)))
;; Multiple layers: (tp-define-layer name 'layer1 '(plist1) '(plist2) ...) ;; Multiple layers: (tp-define-layer name 'layer1 '(plist1) '(plist2) ...)
(let ((layer-names nil) (let ((layer-names nil)
(idx 0) (idx 0)
@ -109,7 +112,7 @@ The first layer in the definition is the top layer."
(if (assoc ',name tp-layer-groups) (if (assoc ',name tp-layer-groups)
(setf (cdr (assoc ',name tp-layer-groups)) ',layer-names) (setf (cdr (assoc ',name tp-layer-groups)) ',layer-names)
(push (cons ',name ',layer-names) tp-layer-groups)) (push (cons ',name ',layer-names) tp-layer-groups))
(assoc ',name tp-layer-groups)))))) (assoc ',name tp-layer-groups)))))))
(defun tp-layer-props (layer-name) (defun tp-layer-props (layer-name)
"Return properties for layer LAYER-NAME from `tp-layer-alist'. "Return properties for layer LAYER-NAME from `tp-layer-alist'.