2011-08-10 70 views

回答

2

您正在尋找的功能是read-file-name。嘗試按C-h f並輸入read-file-name以閱讀文檔。

下面是一些示例代碼讀取一個文件名:

(defun foo() 
    (interactive) 
    (setq file (read-file-name "File: ")) 
    (message "You chose: %s" file)) 
+0

謝謝!這正是我需要:) – Geo

+0

不,你想@ scottfrazer的答案。不要在Emacs裏面重新實現Emacs,因爲你不能用M-x描述函數交互:) – jrockway

3

下面的代碼展示瞭如何做到這一點(與代碼替換錯誤sexps其中文件存在或不處理的情況):

(defun do-stuff-with-file (filename) 
    "Do stuff with a file." 
    (interactive (list (read-file-name "Do stuff with file: "))) 
    (when (file-exists-p filename) 
    (error "%s already exists" filename)) 
    (when (not (file-exists-p filename)) 
    (error "%s doesn't exist" filename))) 
6

有了互動,你應該使用f對現有的文件名,或者在你的情況,F一個可能不存在的一個:

(defun foo (filename) 
    (interactive "F") 
    (if (file-exists-p filename) 
    ... 
+4

也值得注意;如果你想要一個提示,就直接粘貼到交互格式字符串上:'(interactive「FFile:」)' – jrockway

相關問題