Skip to content

Commit e9c24c2

Browse files
committed
lispy.el (lispy-debug-step-in): improve
1 parent 013777a commit e9c24c2

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

lispy.el

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)