zsh-users
 help / color / mirror / code / Atom feed
From: Mikael Magnusson <mikachu@gmail.com>
To: Daniel Shahaf <d.s@daniel.shahaf.name>
Cc: Zsh Users <zsh-users@zsh.org>
Subject: Re: edit-command-line breaks out of vared
Date: Sun, 19 Aug 2018 15:18:37 +0200	[thread overview]
Message-ID: <CAHYJk3RBurSZJuFdzua5DPAU7rd2wvZX6tSAEtAXwD89-Fd_NQ@mail.gmail.com> (raw)
In-Reply-To: <20180819122254.mgx2kfbnbsxxtuqk@tarpaulin.shahaf.local2>

On Sun, Aug 19, 2018 at 2:22 PM, Daniel Shahaf <d.s@daniel.shahaf.name> wrote:
> [[[
> $ zsh -f
> % l=( 1 2 3  )
> % bindkey -e
> % autoload edit-command-line
> % zle -N edit-command-line
> % bindkey '^Fc' edit-command-line
> % vared l
> <press ^F c>
> <:w>
> <:q>
> % 1 2 3<CURSOR>
> ]]]
>
> I expected quitting the editor to let me resume the vared session, but
> instead it left me with the variable's value as a command line.

This works in my version of edit-command-line,

diff --git c/Functions/Zle/edit-command-line w/Functions/Zle/edit-command-line
index e17893e938..761f8da6d0 100644
--- c/Functions/Zle/edit-command-line
+++ w/Functions/Zle/edit-command-line
@@ -29,7 +29,12 @@
   (( $+zle_bracketed_paste )) && print -r -n - $zle_bracketed_paste[1]

   # Replace the buffer with the editor output.
-  print -Rz - "$(<$1)"
-} =(<<<"$PREBUFFER$BUFFER")
+  # avoid drawing a new prompt when we can
+  [[ -z $PREBUFFER ]] && {
+    BUFFER="$(<$1)"
+  } || {
+    print -Rz - "$(<$1)"
+    zle send-break
+  }

-zle send-break         # Force reload from the buffer stack
+} =(<<<"$PREBUFFER$BUFFER")


-- 
Mikael Magnusson


  reply	other threads:[~2018-08-19 13:18 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-19 12:22 Daniel Shahaf
2018-08-19 13:18 ` Mikael Magnusson [this message]
2018-08-19 19:03   ` Bart Schaefer
2018-08-20 12:58     ` Daniel Shahaf
2020-08-05 11:12       ` Mikael Magnusson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAHYJk3RBurSZJuFdzua5DPAU7rd2wvZX6tSAEtAXwD89-Fd_NQ@mail.gmail.com \
    --to=mikachu@gmail.com \
    --cc=d.s@daniel.shahaf.name \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).