From cdabe7a75ea14f14ca8d4cd3bf9ac36cb1817531 Mon Sep 17 00:00:00 2001 From: neodarz Date: Fri, 28 Apr 2017 19:05:18 +0200 Subject: Delete some usless file --- .../2015-09-21-zsh-51-and-bracketed-paste.html | 79 ---------------------- 1 file changed, 79 deletions(-) delete mode 100644 build/blog/2015-09-21-zsh-51-and-bracketed-paste.html (limited to 'build/blog/2015-09-21-zsh-51-and-bracketed-paste.html') diff --git a/build/blog/2015-09-21-zsh-51-and-bracketed-paste.html b/build/blog/2015-09-21-zsh-51-and-bracketed-paste.html deleted file mode 100644 index 52a7b006..00000000 --- a/build/blog/2015-09-21-zsh-51-and-bracketed-paste.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -Zsh 5.1 and bracketed paste - - - - - - - - - -
This blog has been archived.
Visit my home page at zhimingwang.org.
- -
-
-

Zsh 5.1 and bracketed paste

- -
-

TL;DR. Jump to code.

-
-

In short, Zsh 5.1 introduced bracketed paste mode1 and turned it on by default (as it seems to me2). It is nice in certain ways — I appreciate the change, yet I was bitten nevertheless. In at least two ways:

-
    -
  1. Most annoyingly, url-quote-magic doesn't work anymore when pasting URLs, so for example if I paste

    -
    https://www.google.com/search?q=zsh
    -

    without typing in a single or double quote first, the ? and = won't be backslash-quoted by default, which causes an error when passed unnoticed (out of habit).

  2. -
  3. The Emacs shell3 is littered with ^[[?2004h and ^[[?2004l around every prompt.

  4. -
-

The solution? Zsh now also ships with bracketed-paste-magic that resolves exactly breakage #1 (and a bit more); to quote comments from the linked source file:

-
-

Starting with zsh-5.1, ZLE began to recognize the "bracketed paste" capability of terminal emulators, that is, the sequences $'\e[200~' to start a paste and $'\e[201~' to indicate the end of the pasted text. Pastes are handled by the bracketed-paste widget and insert literally into the editor buffer rather than being interpreted as keystrokes.

-

This disables some common usages where the self-insert widget has been replaced in order to accomplish some extra processing. An example is the contributed url-quote-magic widget. The bracketed-paste-magic widget replaces bracketed-paste with a wrapper that re-enables these self-insert actions, and other actions as selected by the zstyles described below.

-
-

And to resolve breakage #2, just disable bracketed paste altogether for dumb terms.

-

-Putting it together: -

-
# turn off ZLE bracketed paste in dumb term
-# otherwise turn on ZLE bracketed-paste-magic
-if [[ $TERM == dumb ]]; then
-    unset zle_bracketed_paste
-else
-    autoload -Uz bracketed-paste-magic
-    zle -N bracketed-paste bracketed-paste-magic
-fi
-
-

09/22/2015 update. I only read NEWS and not README, so I missed out on a very clear announcement of the bracketed paste incompatibitilies (between 5.0.8 and 5.1):

-
-

The default behaviour when text is pasted into an X Windows terminal has changed significantly (unless you are using a very old terminal emulator that doesn't support this mode). Now, the new "bracketed paste mode" treats all the pasted text as literal characters. This means, in particular, that a newline is simply inserted as a visible newline; you need to hit Return on the keyboard to execute the pasted text in one go. See the description of zle_bracketed_paste in the zshparams manual for more. "unset zle_bracketed_paste" restores the previous behaviour.

-
-
-
-
    -
  1. Bracketed paste mode is a safeguard against inadvertent interpretation of pasted text, e.g., newline being treated at accept-line in Zsh. You may read more about it in this blog post, which is somewhat outdated yet still informational.↩︎

  2. -
  3. Indeed it is. See update with more accurate info from official source.↩︎

  4. -
  5. I seldom use this dumb (literally) thing, but when I do I expect it to work ungarbled, naturally.↩︎

  6. -
-
-
-
- - - -- cgit v1.2.1