group-n submatch-n))
(scope-rx local (cdr regexp))))))))
+(defun scope-gv-define-expander (local name handler)
+ (when-let* ((beg (scope-sym-pos name)) (bare (scope-sym-bare name)))
+ (funcall scope-callback 'defun beg (length (symbol-name bare)) nil))
+ (scope-1 local handler))
+
+(defun scope-gv-define-simple-setter (local name setter rest)
+ (when-let* ((beg (scope-sym-pos name)) (bare (scope-sym-bare name)))
+ (funcall scope-callback 'defun beg (length (symbol-name bare)) nil))
+ (when-let* ((beg (scope-sym-pos setter)) (bare (scope-sym-bare setter)))
+ (funcall scope-callback 'function beg (length (symbol-name bare)) nil))
+ (scope-n local rest))
+
(defvar scope-safe-macros t
"Specify which macros are safe to expand.
(scope-let* local (car forms) (cdr forms)))
((memq bare '(cl-eval-when)) ; Likewise!
(scope-n local (cdr forms)))
+ ((memq bare '(gv-define-expander))
+ (scope-gv-define-expander local (car forms) (cadr forms)))
+ ((memq bare '(gv-define-simple-setter))
+ (scope-gv-define-simple-setter
+ local (car forms) (cadr forms) (cddr forms)))
((scope-safe-macro-p bare)
(scope-1 local (let ((symbols-with-pos-enabled t))
;; Ignore errors from trying to expand