2011-01-26 8 views
6

私は関数を対話的に既存のディレクトリを要求するが、default-directoryから始めるのではなく、 '〜/ should/start/here/always/in/this/function'のようなローカルローカルのデフォルトパスを(interactive "D")を使用して開始するにはどうしたらよいですか?私の最初の考えは、最初にdefault-dirを設定して元の関数を呼び出す別の関数を作成することですが、それは正しくないと思われます。この場合、対話がどのように促されるのかはわかりません。対話型ディレクトリ選択のデフォルトパスをelisp defunで始めるように設定するにはどうすればよいですか?

答えて

9

あなたはこの自分を書いているので、あなたはこのような何かすることができます(あなたは追加の引数を追加したい場合がありますディレクトリ名を取得するためにread-directoryを呼び出すためにLisp式でinteractiveを使用しています

(defun choose-directory (directory) 
    "sample that uses interactive to get a directory" 
    (interactive (list (read-directory-name "What directory? " 
              choose-directory-default-directory))) 
    (message "You chose %s." directory)) 

(defvar choose-directory-default-directory "/home/tjackson/work/data" 
    "Initial starting point.") 

を、リンク/ docsを確認してください)。

オリジナルのハンチングも同様に機能しますが、思ったように、きれいではありません。しかし、動作を変更したい機能を変更したくない、または変更できない場合はうまく機能します。私はあなたがそれを達成する方法を示すためにその解決策を以下に挙げました(言及しなかったパズルの唯一の部分はcall-interactivelyでした):

関連する問題