Oh, excellent. I knew there had to be an easy way to do this. Thank you! On 31 August 2017 at 15:33, Mikael Magnusson wrote: > On Thu, Aug 31, 2017 at 7:38 PM, Stephen Talley > wrote: > > Is there any way for a command to pre-populate the the zle for the next > > command? > > > > Suppose I have, for example, a zsh function "buildcmd" that produces a > > command line (based on supplied arguments, say) that the user would then > be > > able to edit in the zle before hitting enter to accept the line and > execute > > it. The flow would be: > > > > % buildcmd --my --args > > % > > > > I know I could just do: > > > > % `buildcmd --my --args` > > > > to achieve the same thing, but it's a bit more tedious than I'd like. > > > > Ideally there'd be some hook (precmd? accept-line?) that could check a > > variable and pre-populate the zle: > > > > buildcmd() { > > zle_prepopulate="some command to edit" > > } > > > > precmd() { > > if [ -n "$zle_prepopulate" ] > > then > > zle -U "$zle_prepopulate" > > fi > > } > > > > ...but of course this doesn't quite work because the call to zle is not > in > > the context of a widget. > > > > Is there a way? > > You can use print -z to push any string you like on the zle editor > stack, which effectively does what you want. (Ie, it is popped when > the next command line is to be entered, which is immediately). There's > no need to involve precmd or any hook, you can just call print -z > directly from your function. > > -- > Mikael Magnusson >