From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3506 invoked by alias); 29 Sep 2015 04:44:06 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 36692 Received: (qmail 6779 invoked from network); 29 Sep 2015 04:44:05 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:in-reply-to:references; bh=ySsZK3dJoeaNV9ouSvlFUB82e8oa/eNKc9lpj0WInws=; b=hSb0VoNzF+q1x4hRaCpKe43ZV4dAyno2yaSspGJXow9IS4K8drdIQmMKsm1+UnWqma XIkvosABqbG6+jIyi9ihVLi0/gF4edXzh+JRtUwpeU8saIrr/s75Oj8fOoXkPjq7/TVY PCp8H1Bg4Uyv3SgfPub+uANtsTNzyqBCW5BmfAgLFM7utmSWoRHV4w1ocQ00DHczzF8V mSY/1bejMs7tv7Q86CzNjqCObvIHDzLLP0bbDa8lernyBZXqb0FPdBzzNpsydwIMJBOY CZWUCSlImr1fp9UiPBEO251oxKN+vRs4eCzDIjUi1sxqZD0vYAtFT5eHmEh0x5pU0B+/ 5LIQ== X-Received: by 10.152.1.9 with SMTP id 9mr6504210lai.38.1443501839799; Mon, 28 Sep 2015 21:43:59 -0700 (PDT) From: Mikael Magnusson To: zsh-workers@zsh.org Subject: PATCH: Add a much simpler alternative to using url-quote-magic + bracketed-paste-magic Date: Tue, 29 Sep 2015 06:43:53 +0200 Message-Id: <1443501833-29817-1-git-send-email-mikachu@gmail.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1443501793-29753-1-git-send-email-mikachu@gmail.com> References: <1443501793-29753-1-git-send-email-mikachu@gmail.com> Now that we have more control over the yank highlighting, we can handle pasted urls directly, instead of mucking around with pretending we don't know which text was pasted together, then trying to reverse engineer this fact from it looking like a url. This function simply looks at the first few characters and if they match the configured schemas, then the paste is quoted. It handles NUMERIC to quote, but not any weird vi or newline stripping stuff. --- Functions/Zle/bracketed-paste-url-magic | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Functions/Zle/bracketed-paste-url-magic diff --git a/Functions/Zle/bracketed-paste-url-magic b/Functions/Zle/bracketed-paste-url-magic new file mode 100644 index 0000000..e05e982 --- /dev/null +++ b/Functions/Zle/bracketed-paste-url-magic @@ -0,0 +1,38 @@ +# bracketed-paste-url-magic quotes pasted urls automatically, if the +# paste exactly starts with a url, eg no spaces or other characters precede it +# +# To use it, put this in your startup files (eg, .zshrc) +# +# autoload -Uz bracketed-paste-url-magic +# zle -N bracketed-paste bracketed-paste-url-magic +# +# You can customize which schemas are to be quoted by using +# +# zstyle :bracketed-paste-url-magic schema http https ftp +# +# The default can be seen just below. + +local -a schema +zstyle -a :bracketed-paste-url-magic schema schema || schema=(http https ftp ftps file ssh sftp) + +local wantquote=${NUMERIC:-0} +local content +local start=$#LBUFFER + +zle .$WIDGET -N content + +if ! (( $wantquote )); then + if [[ $content = (${(~j:|:)schema})://* ]]; then + wantquote=1 + fi +fi + +if (( $wantquote )); then + content=${(q-)content} +fi + +LBUFFER+=$content + +YANK_START=$start +YANK_END=$#LBUFFER +YANK_ACTIVE=1 -- 2.5.0