在 Emacs 中,有没有办法从 init.el 以非交互方式调用交互函数?

mzi*_*ann 4 sql emacs elisp

一般来说,如果它的参数是已知的,是否可以从 init.el 调用交互式函数?

举个具体的例子:在sql包中,有一个交互函数sql-connect。

当调用为

    M-x sql-connect
Run Code Online (Sandbox Code Playgroud)

它在小缓冲区中请求连接。接听

    my-mysql-localhost-connection1
Run Code Online (Sandbox Code Playgroud)

打开一个带有 mysql 提示的SQL缓冲区,这是我想要的。

我想在 Emacs 启动时在SQL缓冲区中启动连接。但是在我的 init.el 中添加:

   (sql-connect 'my-mysql-localhost-connection1)      
Run Code Online (Sandbox Code Playgroud)

什么都不做。在这种情况下,对于一般的交互功能(哪些参数是已知的),我试图实现的目标是什么?

谢谢

phi*_*ils 5

一般来说:

是的,您可以在交互式调用后使用repeat-complex-command( C-xM-:) 来找出参数最终的样子。这是一种值得记住的有用方法,因为有时在交互形式中存在隐藏的操作,可以将用户的输入转换为不同的内容1。

这不一定会为您提供在非交互式调用中使用的最佳参数(这将始终取决于相关函数),但如果您不确定如何将其翻译为其他2 .

1 align-regexp就是一个很好的例子。
2假设您至少已阅读相关函数的文档字符串——在非交互式上下文中调用给定的交互式命令并不少见,并且函数帮助通常足以指出这个出来。

  • nb http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13715#20 说这是一个文档错误,并且 CONNECTION 确实应该是一个字符串。 (2认同)