Emacs:有没有办法将变量或字符串传递给M-x命令?

时间:2010-02-11 13:05:00

标签: emacs ide editor

我有一个名为go-to-url的命令,我在我的lisp代码中调用它,这会打开一个网页,我只是传递一个值字符串,如下所示:

(go-to-url "www.yahoo.com")

然而,从M-x命令行使用此功能会很不错。有没有办法做到这一点?我没有尝试过的任何作品

3 个答案:

答案 0 :(得分:11)

您将使用互动表格:

(defun go-to-url (url)
  (interactive "sURL: ")
  (do-your-stuff url))

通过这种方式,您可以在自己的口述和go-to-url中使用M-x: go-to-url,并且系统会提示您输入参数。

另请参阅我对您的其他问题的回复:Emacs: Is there a way to create a interactive script using Emacs?

答案 1 :(得分:1)

有一个函数可以执行这个`browse-url',它会提示你在点上浏览网址,或者你可以编辑/创建一个。

对于带有数字参数的函数,您也可以使用C-u,然后键入要传递给执行命令的值。

答案 2 :(得分:0)

Icicles中,在任何使用迷你缓冲区期间(完成与否),您都可以点击insert a string that was saved in a variable or a register的密钥。

  • 对于一个寄存器,点击 C-x r i (像往常一样)。
  • 对于字符串,请按 C - =

默认情况下,使用的变量是icicle-input-string,但如果使用前缀arg(即 C-u C - = ),则会提示您输入要使用的变量。完成候选包括所有字符串值变量。

您可以使用命令icicle-save-string-to-variable将字符串(例如复杂的正则表达式)保存到变量中。同样,默认情况下,变量为icicle-input-string,但使用前缀arg会提示您输入变量。

您也可以随时点击 M - :并输入Lisp sexp进行评估,从而在迷你缓冲区中插入一个字符串。结果很漂亮,并插入迷你缓冲区。 (在Icicles中, M - :会打开一个递归的迷你缓冲区,并且可以打印出来。)