mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-01 05:16:05 +01:00
44 lines
1.2 KiB
Text
44 lines
1.2 KiB
Text
# 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
|
|
# 0 is the default and means auto detect urls
|
|
# 1 means always quote
|
|
# any other value means never 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:// magnet:)
|
|
|
|
local wantquote=${NUMERIC:-0}
|
|
local content
|
|
local start=$#LBUFFER
|
|
|
|
zle .$WIDGET -N content
|
|
|
|
if (( $wantquote == 0 )); then
|
|
if [[ $content = (${(~j:|:)schema})* ]]; then
|
|
wantquote=1
|
|
fi
|
|
fi
|
|
|
|
if (( $wantquote == 1 )); then
|
|
content=${(q-)content}
|
|
fi
|
|
|
|
LBUFFER+=$content
|
|
|
|
YANK_START=$start
|
|
YANK_END=$#LBUFFER
|
|
zle -f yank
|