(when-let* ((fun (car args))
(beg (scope-sym-pos fun))
(bare (scope-sym-bare fun)))
- (funcall scope-callback 'function beg (length (symbol-name bare)) nil))))
+ (funcall scope-callback 'function beg (length (symbol-name bare)) nil)))
+ ((memq kw '(:args))
+ (mapc #'scope-widget-type-1 (car args))))
;; TODO: (restricted-sexp :match-alternatives CRITERIA)
(scope-widget-type-arguments head (cdr args)))
(defun scope-widget-type-arguments-1 (head args)
(cl-case head
- ((list cons group vector choice radio set repeat) (mapc #'scope-widget-type-1 args))
+ ((list cons group vector choice radio set repeat checklist)
+ (mapc #'scope-widget-type-1 args))
((function-item)
(when-let* ((fun (car args))
(beg (scope-sym-pos fun))
(prnt (cadr prnt-form))
(beg (scope-sym-pos prnt))
(bare (scope-sym-bare prnt)))
- (funcall scope-callback 'widget-type beg (length (symbol-name bare)) nil)))
+ (funcall scope-callback 'widget-type beg (length (symbol-name bare)) nil))
+ (when-let* ((props (cdddr forms))
+ (symbols-with-pos-enabled t))
+ (when-let ((val-form (plist-get props :type)))
+ (scope-widget-type local val-form))
+ (when-let ((val-form (plist-get props :args))
+ ((memq (scope-sym-bare (car-safe val-form)) '(quote \`)))
+ (val (cadr val-form))
+ ((consp val)))
+ (mapc #'scope-widget-type-1 val))))
((define-error)
(when-let* ((name-form (car forms))
((memq (scope-sym-bare (car-safe name-form)) '(quote \`)))