summary refs log tree commit diff
path: root/Functions/Zle/bracketed-paste-url-magic
blob: e1bea60d6830931507cdd5e54298c931a3db32f6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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