@@ -4173,20 +4173,26 @@ return the corresponding `setq' expression."
41734173(defun lispy-debug-step-in ()
41744174 " Eval current function arguments and jump to definition."
41754175 (interactive )
4176- (let* ((sxp (lispy--setq-expression))
4177- (fun (car sxp)))
4178- (if (functionp fun)
4179- (let ((args (delq '&optional (copy-seq (help-function-arglist fun t ))))
4180- (vals (cdr sxp)))
4181- (if vals
4182- (setcdr (last vals) (make-list (- (length args) (length vals)) nil ))
4183- (setq vals (make-list (- (length args) (length vals)) nil )))
4184-
4185- (cl-mapcar (lambda (x_ y_ ) (set x_ (eval y_)))
4186- args vals)
4187- (lispy-goto-symbol fun))
4176+ (let* ((ldsi-sxp (lispy--setq-expression))
4177+ (ldsi-fun (car ldsi-sxp)))
4178+ (if (functionp ldsi-fun)
4179+ (let ((ldsi-args (copy-seq (help-function-arglist ldsi-fun t )))
4180+ (ldsi-vals (cdr ldsi-sxp))
4181+ ldsi-arg)
4182+ (catch 'done
4183+ (while (setq ldsi-arg (pop ldsi-args))
4184+ (cond ((eq ldsi-arg '&optional )
4185+ (setq ldsi-arg (pop ldsi-args))
4186+ (set ldsi-arg (eval (pop ldsi-vals))))
4187+ ((eq ldsi-arg '&rest )
4188+ (setq ldsi-arg (pop ldsi-args))
4189+ (set ldsi-arg (mapcar #'eval ldsi-vals))
4190+ (throw 'done t ))
4191+ (t
4192+ (set ldsi-arg (eval (pop ldsi-vals)))))))
4193+ (lispy-goto-symbol ldsi-fun))
41884194 (lispy-complain
4189- (format " %S isn't a function" fun)))))
4195+ (format " %S isn't a function" ldsi- fun)))))
41904196
41914197; ; ——— Key definitions —————————————————————————————————————————————————————————
41924198(defvar ac-trigger-commands '(self-insert-command ))
0 commit comments