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
35
tp.el
35
tp.el
@ -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'.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user