我正在尝试解决dired-do-shell-command
不能!
在当前目录和父目录.
和..
'. 堆栈跟踪粘贴在底部。
我可以定义如下建议来绕过此错误:
(defadvice dired-get-filename (before h-no-error-if-not-filep activate)
(ad-set-arg 1 t))
但这会影响对dired-get-filename
. 我希望它仅在堆栈为dired-do-shell-command -> dired-get-marked-files -> dired-get-filename
.
我能想到的唯一方法如下
(with-output-to-string (backtrace))
在建议定义中搜索匹配项- 将周围的建议添加到其他方法以设置一些可以在建议定义中测试的变量。
有更好的方法吗?我想我正在寻找对当前堆栈跟踪的访问作为数据结构而不是来自的字符串(backtrace)
Debugger entered--Lisp error: (error "Cannot operate on `.' or `..'")
signal(error ("Cannot operate on `.' or `..'"))
error("Cannot operate on `.' or `..'")
dired-get-filename(t)
dired-get-marked-files(t nil)
(let ((files (dired-get-marked-files t current-prefix-arg))) (list (dired-read-shell-command (concat "! on " "%s: ") current-prefix-arg files) current-prefix-arg files))
call-interactively(dired-do-shell-command nil nil)