【发布时间】:2018-08-28 07:36:39
【问题描述】:
我不经常使用dired 模式,但正在尝试练习一下。所以我创建了一些空的练习文本文件,并用通常的快捷键标记它们。然后我尝试使用“R”命令重命名文件——以便将文件移动到新文件夹。我收到这个奇怪的错误,操作没有成功。
apply: Wrong number of arguments: (8 . 8), 10 [3 times]
当我尝试使用“C”命令进行复制时遇到了同样的错误。但有趣的是,当我尝试使用“D”进行删除时,问题并没有发生。删除确实有效。因此,似乎某处 apply 函数使用不正确。
我在 ubuntu linux 16.04 LTS 上使用 emacs 版本 25.3 和 Spacemacs 版本 0.200.13.x。
有没有人知道为什么会发生这个错误?由于dired 是emacs 核心的一部分,我想可能会与不同的包或其他东西发生冲突。我检查了 spacemacs github repo 问题列表,但没有看到任何提到的问题。任何帮助将不胜感激。
更新
根据 Phil 的建议,这里是堆栈跟踪:
Debugger entered--Lisp error: (wrong-number-of-arguments (8 . 8) 10)
helm-read-file-name-handler-1("Rename jarrett-iccv-09.pdf to: " read-file-name-internal file-exists-p nil "~/Downloads/" file-name-history nil nil "dired-do-rename" "*helm-mode-dired-do-rename*")
apply(helm-read-file-name-handler-1 ("Rename jarrett-iccv-09.pdf to: " read-file-name-internal file-exists-p nil "~/Downloads/" file-name-history nil nil "dired-do-rename" "*helm-mode-dired-do-rename*"))
helm--completing-read-default("Rename jarrett-iccv-09.pdf to: " read-file-name-internal file-exists-p nil "~/Downloads/" file-name-history nil nil)
apply(helm--completing-read-default ("Rename jarrett-iccv-09.pdf to: " read-file-name-internal file-exists-p nil "~/Downloads/" file-name-history nil nil))
#f(advice-wrapper :override completing-read-default helm--completing-read-default)("Rename jarrett-iccv-09.pdf to: " read-file-name-internal file-exists-p nil "~/Downloads/" file-name-history nil nil)
completing-read("Rename jarrett-iccv-09.pdf to: " read-file-name-internal file-exists-p nil "~/Downloads/" file-name-history nil)
read-file-name-default("Rename jarrett-iccv-09.pdf to: " "/home/krishnab/Downloads/" nil nil nil nil)
read-file-name("Rename jarrett-iccv-09.pdf to: " "/home/krishnab/Downloads/" nil nil nil nil)
ido-read-file-name("Rename jarrett-iccv-09.pdf to: " "/home/krishnab/Downloads/" nil nil nil nil)
apply(ido-read-file-name ("Rename jarrett-iccv-09.pdf to: " "/home/krishnab/Downloads/" nil nil nil nil))
#f(advice-wrapper :override #f(advice-wrapper :override read-file-name-default helm--generic-read-file-name) ido-read-file-name)("Rename jarrett-iccv-09.pdf to: " "/home/krishnab/Downloads/" nil nil nil nil)
read-file-name("Rename jarrett-iccv-09.pdf to: " "/home/krishnab/Downloads/" nil)
apply(read-file-name ("Rename jarrett-iccv-09.pdf to: " "/home/krishnab/Downloads/" nil))
dired-mark-pop-up(nil move ("jarrett-iccv-09.pdf") read-file-name "Rename jarrett-iccv-09.pdf to: " "/home/krishnab/Downloads/" nil)
dired-mark-read-file-name("Rename %s to: " "/home/krishnab/Downloads/" move nil ("jarrett-iccv-09.pdf") nil)
dired-do-create-files(move dired-rename-file "Move" nil t "Rename")
dired-do-rename(nil)
funcall-interactively(dired-do-rename nil)
call-interactively(dired-do-rename nil nil)
command-execute(dired-do-rename)
更新 2
helm github 存储库下似乎确实报告了类似的问题。似乎 helm 和 ido 模式不兼容。
https://github.com/emacs-helm/helm/issues/1819
helm wiki 中也有对此的引用。
https://github.com/emacs-helm/helm/wiki#use-helm-mode-and-ido-mode
我尝试了他们的一些建议,比如添加
'(helm-completing-read-handlers-alist
(quote
((find-file-read-only . ido)
(find-alternate-file . nil))
但仍然得到同样的错误。
【问题讨论】:
-
你能在运行
emacs -Q时复制问题吗? -
@phils 说了什么。如果没有,请一分为二,找出罪魁祸首。
-
@phils 我检查了当我使用
emacs -Q然后 dired 正常工作。棘手的是我使用的是 Spacemacs,所以我在 Messages 缓冲区中没有看到任何奇怪的错误。我还检查了dired-do-rename函数的帮助,它似乎引用了常规的dired包。我认为如果它被覆盖,那么我会看到覆盖包的名称。嗯,不知道下一步该往哪里看? -
假设
M-x toggle-debug-on-error在发生错误时为您提供堆栈跟踪,请将其粘贴到问题中。C-h k Rin dired 是否确认dired-do-rename实际上是所谓的?如果是这样,帮助说明是否为该功能定义了任何 advice? (如果是这样,它告诉你什么?) -
@phils 我按照你的建议做了。我不知道那个特定的选项。谢谢你的提示。我在尝试重命名(移动)名为
jarrett-XXX.pdf的 pdf 文件时触发了错误。
标签: emacs spacemacs dired emacs-helm