1

それは私が使用しているものです:

  (interactive "sEnterh the name of the figure (e.g. markov-chain.png): 
sCaption: ")

それが私が使いたいものです:

  (interactive (list (read-file-name "Image file: " (if (file-exists-p "_static")
                                                        "_static"
                                                      default-directory
                                                      )))
"sCaption: ")

これはどのように行うことができますか?

つまり、インタラクティブなタイプを1つの文字列に混在させることができます。

  (interactive "r
sEnter char to use: 
sNumbering style used (d for digit, l for letter, r for Roman digits): 
sShould I dobule line breaks? (RET for yes) ")

しかし、どうすればインタラクティブタイプを組み合わせることができますか?私の例では「s」とelispコードを組み合わせることができますか?

4

2 に答える 2

1

私があなたの質問を正しく理解している場合、Lispコードを使用して引数のリストを作成する場合interactive、コードはすべての引数を処理する必要があり、の便利なプロンプト機能にアクセスできませんinteractive。したがって、最初の例は次のようになります

(interactive
  (list
    (read-file-name "Image file: " (if (file-exists-p "_static")
                                       "_static"
                                      default-directory) )
    (read-string "Caption: ") ))
于 2012-09-05T10:50:24.237 に答える
0

ああ私はインタラクティブタイプなしでそれを解決しました:

(defun rst-bk-numfigs ()
  (interactive) 
  (let (Fig Caption)
    (setq Fig (file-name-nondirectory 
               (car (list (read-file-name "Image file: "
                                     (if (file-exists-p "_static") ;; actually I need dir-p
                                         "_static"
                                       default-directory
                                       ))))))
    (setq Caption (read-from-minibuffer "Caption: "))))

おそらくインタラクティブタイプとelispコードの統合は不可能です。

于 2012-09-05T08:26:18.417 に答える