elisp里如何给一个没有参数的interactive的函数传参呢

请教一下,如下图的录屏,以cnfonts-switch-profile函数为例,这个函数没有参数,是一个interactive的command,在elisp里调用的时候,需要交互式的选择profile1还是profile2,有没有什么办法在elisp里直接将profile2传递给这个函数,而不需要用户再去选择呢?(这样就可以在配置文件里直接配置指定profile2了)感谢感谢!

test

advice重写一下

1 个赞

感谢感谢!点醒我了,elisp还在学习中,我去试一下。

看了眼这函数的实现, 它里面其实是调了 (cnfonts--select-profile profile), 所以直接用这个代替应该就行.

至于给 interactive 函数传参的问题, 感觉 cnfonts-switch-profile 这个函数实现不太符合 elisp 的约定俗成. 一般来说 interactive 函数如果需要参数的话, 是会直接反映在函数参数里面的, 然后通过 (interactive) 这个 form 的参数实现补全和交互 (实现上可以参考 describe-package).

cnfonts-switch-profile 这个是直接在函数体里用了 completing-read, 要给它传参数的话倒是可以重新 bind 一下 completing-read-function, 不过感觉没啥必要这么改.

试了一下(cnfonts--select-profile profile)完美解决了这个需求。十分感谢!也十分感谢帮忙讲解传参的问题。