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 回答