zsh-users
 help / color / mirror / 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
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

zsh-users

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.vuxu.org/zsh-users

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 zsh-users zsh-users/ http://inbox.vuxu.org/zsh-users \
		zsh-users@zsh.org
	public-inbox-index zsh-users

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.archive.zsh.users


code repositories for the project(s) associated with this inbox:

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

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git