現在のディレクトリと親ディレクトリで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)