[英]Emacs `dired` error when renaming file using Helm: `apply` wrong number of arguments
我不經常使用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回購問題列表,但未發現任何問題。 任何幫助,將不勝感激。
更新
按照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倉庫下似乎確實報告了類似的問題。 似乎頭盔和ido模式不兼容。
https://github.com/emacs-helm/helm/issues/1819
在helm
維基中也有對此的參考。
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))
但是仍然出現相同的錯誤。
乍一看,在我看來,這就像最新版頭盔中的錯誤一樣。
從MELPA安裝helm,我看到helm-read-file-name-handler-1
接受8個參數:
(helm-read-file-name-handler-1 PROMPT DIR DEFAULT-FILENAME必須初始化初始預測名稱緩沖)
雖然helm--completing-read-default
保證按照堆棧跟蹤用10調用它。
helm--completing-read-default
在helm-completing-read-handlers-alist
查找dired-do-rename
,並發現它已映射到helm-read-file-name-handler-1
。 然后,它會將處理程序識別為以Helm函數命名的名稱空間,並在此基礎上用另外兩個特定於Helm的自變量調用它。
默認情況下, helm-completing-read-handlers-alist
包括:
(dired-do-rename . helm-read-file-name-handler-1)
(dired-do-copy . helm-read-file-name-handler-1)
(dired-do-symlink . helm-read-file-name-handler-1)
(dired-do-relsymlink . helm-read-file-name-handler-1)
(dired-do-hardlink . helm-read-file-name-handler-1))
因此,此問題會影響所有這些煩人的命令。
您可以通過刪除所有這些來解決此問題。
例如: Mx customize-option
RET helm-completing-read-handlers-alist
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.