diff options
author | Mikael Magnusson <mikachu@gmail.com> | 2015-10-01 03:52:16 +0200 |
---|---|---|
committer | Mikael Magnusson <mikachu@gmail.com> | 2015-10-01 03:55:21 +0200 |
commit | 76da752fd75955cd6240c1daa026cc34dea1e010 (patch) | |
tree | 45e8de39acf77b30d348868ab86cfaeafc6104a9 /Functions/Zle | |
parent | a855d7bd246ef44d5393c3088aae8214d41d2b85 (diff) | |
download | zsh-76da752fd75955cd6240c1daa026cc34dea1e010.tar.gz zsh-76da752fd75955cd6240c1daa026cc34dea1e010.tar.xz zsh-76da752fd75955cd6240c1daa026cc34dea1e010.zip |
36692: bracketed-paste-url-magic: simpler alternative for handling pasted urls
Diffstat (limited to 'Functions/Zle')
-rw-r--r-- | Functions/Zle/bracketed-paste-url-magic | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Functions/Zle/bracketed-paste-url-magic b/Functions/Zle/bracketed-paste-url-magic new file mode 100644 index 000000000..e1bea60d6 --- /dev/null +++ b/Functions/Zle/bracketed-paste-url-magic @@ -0,0 +1,42 @@ +# bracketed-paste-url-magic quotes pasted urls automatically, if the +# paste exactly starts with a url, eg no spaces or other characters precede it +# +# If the numeric argument is provided (eg, pressing alt-0 or alt-1 in emacs mode, +# or just the number by itself in vi command mode), then override the url detection +# and if it was 0, never quote, and if it was 1, always quote. +# +# To use this widget, 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 +zle -f yank |