0

.bash_rc に次の関数があります。

function ForwardSearchXdvi {
latex -src *.tex;
for i in *.dvi; do xdvi -sourceposition "$1 ${i/.dvi/.tex}" $i; done ;
}

動作します... $1 引数 (file.tex のターゲット行番号) を指定してコマンド ラインで呼び出すと、問題ありません。

emacsから直接実行したいので、次のコマンドを作成しました。

(defun ForwardXdviSearch ()
(interactive)
(shell-command (format "bash -ic %s" (shell-quote-argument "latex -src J[HCI]*.tex; for i in J[HCI]*.dvi; do xdvi -sourceposition \"$1 ${i/.dvi/.tex}\" $i; done ;")))
)

「Mx Function」で関数を呼び出すときに、引数 $1 を関数に渡すにはどうすればよいですか?

4

1 に答える 1

2

interactive引数を読み取るには、特別な形式を使用する必要があります。この未テストのコードのようなもの:

(defun forward-xdvi-search (line-number)
  (interactive "nForward to line: ")
  (shell-command
   (format "bash -ic %s"
           (shell-quote-argument
            (format "latex -src J[HCI]\*.tex; for i in J[HCI]\*.dvi; do xdvi -sourceposition \"%d ${i/.dvi/.tex}\" $i; done ;"
                    line-number)))))

@philsによって提案された改善で編集

于 2013-07-16T10:30:51.037 に答える