请教一下,如下图的录屏,以cnfonts-switch-profile
函数为例,这个函数没有参数,是一个interactive的command,在elisp里调用的时候,需要交互式的选择profile1
还是profile2
,有没有什么办法在elisp里直接将profile2
传递给这个函数,而不需要用户再去选择呢?(这样就可以在配置文件里直接配置指定profile2了)感谢感谢!
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)
完美解决了这个需求。十分感谢!也十分感谢帮忙讲解传参的问题。