From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1415 invoked by alias); 31 Aug 2017 19:34:02 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 22859 Received: (qmail 29404 invoked by uid 1010); 31 Aug 2017 19:34:02 -0000 X-Qmail-Scanner-Diagnostics: from mail-qk0-f170.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.220.170):SA:0(-1.4/5.0):. Processed in 1.123757 secs); 31 Aug 2017 19:34:02 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RCVD_IN_SORBS_SPAM, SPF_PASS,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.1 X-Envelope-From: mikachu@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Ckup/R9t2VcfcK4vvyHwQjAoGYm+D5504ARNpSjfluM=; b=JOwkf5vRyRnCloiLY8KRryVkQD0FCHYOhb0i53t/ylRf+OyDAKHYYPUdk6Pq/ejeEl XlD+vY+A/t2fO4pq+QN4BUW5wAOUD9+4r1QzMLFRM1rXzp0jlBPjm+oQMHKPLE2KF4A3 QAb/jGfr3Oe0iOfods1DKhXLqSKKVJuVY6W6N9FclHwqwf6pTqzAvIyrEfz2+bMCMuIP AS+AWTCKzuZnrIjksYkdlXzzoigPhvuG5juVdynvCHTaH4Rj5PJEzbLbEMasIm1/WDIt vzM3ChbFIf+voFZtAyt5AV+ImRhmfJHeLVuZh7/P7Xy3roOoKKPBXD/vR1XeCaTjQLyb YdYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Ckup/R9t2VcfcK4vvyHwQjAoGYm+D5504ARNpSjfluM=; b=RE5ivnDaiIePnrGYNobrmIm2IO0hwecvazPtQ7GMPTlZCaiEq9DmM+iywtlE9jXIoB RFvBKcGG6omK2XWdEe89fSBU8tlEwtCmeyJy/j9AmICdZOhwK1n+qBDQ3QQXYKijBLKz UIJFbcAti9+piSCvMFzDHOBUopPwstOG5Dy+wNuNUcLlsnBdXFYa8/zXl0uNo9yTQ1Zm OiQ/cxXajlHzv7oX9uqpI/ZgFfQTt7hkjuxxroM8EfS7UcHop3X7kld/bLJHxCOa0BhZ UYdbe4GcXLZORYhUZjfX0yNPOaAum5Ou5BlEucrIvw1XQJ2IX3l66j/4dpli9IkZbKuX yp5Q== X-Gm-Message-State: AHPjjUiFDbEoyVOKrj8p0SxlP1LIw/fMt57FB+EWUyqe2rPDlqNKaOz8 92OJsgQAgO74ErRIwjcdKbksj9oAOQ== X-Google-Smtp-Source: ADKCNb5MLEU8jLhEifkaM5tKCVMqWSW1fTtNldEn9FPVva+KssRZA78y+FCkR10ERmocS5oTXZCF1/1cc1+jUms7s/Q= X-Received: by 10.55.53.135 with SMTP id c129mr2051763qka.43.1504208035075; Thu, 31 Aug 2017 12:33:55 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: From: Mikael Magnusson Date: Thu, 31 Aug 2017 21:33:54 +0200 Message-ID: Subject: Re: pre-populate zle for next command? To: Stephen Talley Cc: Zsh Users Content-Type: text/plain; charset="UTF-8" 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