2014-01-29 50 views
1

我正在尋找一種方法來顯示一個目錄中的文件名列表,然後選擇其中的一個。如何在Emacs中使用dired-read-file-name?

我發現這一點: https://github.com/lawlist/dired-read-file-name,它似乎有前途的,所以我把它複製到我的emacs豬病和嘗試:

(require 'dired-read-file-name) 

,但我得到的錯誤

error: Required feature `dired-read-file-name' was not provided 
+0

正常的做法是調用'read-file-name'。所以你可能想解釋'read-file-name'的哪個方面不適合你的需求。 – Stefan

+0

是的。如果您想從用戶讀取文件名,請使用'read-file-name'。如果你想從文本中選擇一個文件名作爲用戶輸入的默認值,可以使用'find-file-at-point'和好友,從庫'ffap.el'。如果您想讓用戶在使用不同目錄(「路徑」)的預定的一組* *絕對*文件名中進行選擇,請使用「completion-read」。 – Drew

+0

'dired-read-file-name'的github存儲庫只是使用這個概念的一個工作示例,它基於函數'dired-get-marked-files'。 'dired-get-marked-files'返回已標記的文件名列表 - 如果只選擇或標記了一個文件,則結果轉換爲設置爲變量'dired-one-file'的字符串。我已經配置了輸入鍵來匹配我喜歡的行爲,但用戶可以通過一些'elisp'編碼來修改。函數'lawlist-save-as'可能是您尋求的行爲最接近的例子。 – lawlist

回答

3

require是行不通的因爲dired-read-file-name.el的來源沒有provides表達式。您可能需要添加:

(provide 'dired-read-file-name) 

添加文件的結尾。

或者,您可以只需load或更低級別load-file

也看看this

+0

謝謝,它現在有效。但它似乎不是我正在尋找..我嘗試'(讓((文件(dired-read-file-name「a」)))(消息「%s」文件))'希望它會返回我在dired中選擇的文件名..但相反,它似乎打開一個新的緩衝區中的文件.. –

+0

@HåkonHægland您可能會對'dired-file-name-at-point'或變量'文件名-AT-點functions'。有關更多信息,請嘗試使用'C-h v文件名 - 點 - 函數'。 – pmr

+1

'provides'不存在---使用'provide'。 – Drew