在函数已经是 interactive 的情况下得到 `Wrong type argument: commandp` 的报错

我写了这样配置, 目的是为了让 consult-dir 的默认动作是修改某一个 tab-local variable.

(defun my/set-tab-local-directory-to-default-directory()
(interactive)
(embark-set-tab-local-default-directory default-directory)
  )

(setq consult-dir-default-command #'my/set-tab-local-default-directory)

其中 embark-set-tab-local-default-directory 的定义是:

(defun embark-set-tab-local-default-directory (target)
(htab-local-set 'default-directory target)
  )

但是我执行 consult-dir, 回车以后却遇到报错:

consult-dir: Wrong type argument: commandp, my/set-tab-local-default-directory

但是 my/set-tab-local-default-directory 明明已经是 (interactive), 而且我自己执行 (commandp 'my/set-tab-local-default-directory) 得到的也是 t, 为什么还会有这个报错?

你命令名字写错了,与你定义的名字不一样。