我想編寫代碼,以便使用可以使用dired或其他文件對話框而不是minibuffer爲操作選擇文件。例如,他調用「獲取文件統計信息」命令,直接出現,他選擇並顯示統計信息。 (這變得更加有趣find-dired。)emacs/elisp用dired/file對話框選擇文件,然後執行操作?
但我可以看到這樣做的兩種方式 - 啓動一個帶有改變的鍵盤映射的dired,以便選擇一個文件調用一個fn來完成命令,並提供建議直接尋找文件 - 對於我認爲是一項常見任務而言似乎很奇怪。我錯過了什麼嗎?
我想編寫代碼,以便使用可以使用dired或其他文件對話框而不是minibuffer爲操作選擇文件。例如,他調用「獲取文件統計信息」命令,直接出現,他選擇並顯示統計信息。 (這變得更加有趣find-dired。)emacs/elisp用dired/file對話框選擇文件,然後執行操作?
但我可以看到這樣做的兩種方式 - 啓動一個帶有改變的鍵盤映射的dired,以便選擇一個文件調用一個fn來完成命令,並提供建議直接尋找文件 - 對於我認爲是一項常見任務而言似乎很奇怪。我錯過了什麼嗎?
爲什麼不把彈出的Dired離開它,並讓用戶自己做呢?
只需將dired-mode-map
中的一個鍵綁定到標記文件(或當前文件,如果沒有標記),執行任何您喜歡的操作(例如show stats)即可。
這是典型的Dired方法,Dired代碼爲您提供了所有需要的構建塊,特別是dired-get-marked-files
。例如,請參閱dired-aux.el
中定義的許多dired-do-*
命令的代碼。
例如:
(defun my-dired-do-stats (&optional arg)
"Do stats for the marked files."
(interactive "P")
(dolist (file (dired-get-marked-files nil arg))
(my-stats-function file))))
或者''define-derived-mode''繼承'dired-mode',如果你想更偏離它的話。 – tripleee
您是否在尋找像'dired-獲取文件換visit',這點得到的文件/目錄名,或'dired-GET-英文標明功能文件「,它將獲得所有標記文件/目錄下的文件/目錄名稱 - 它會返回一個列表?說實話,你的問題有點不清楚 - 也許你應該考慮澄清一下。 – lawlist
以下鏈接是我稱爲'dired-read-file-name'的概念的自定義版本 - http://stackoverflow.com/q/19899595/2112489也許這就是您正在尋找的概念?當彈出打開dired緩衝區來選擇文件/目錄時,它使用'recursive-edit'。我爲文件/目錄的自定義'樹視圖'模式做同樣的事情。 – lawlist