summaryrefslogtreecommitdiff
blob: ba681293434494916c63de6ec3426fdf30793bf6 (plain)
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=6

pPN=${PN%-zsh}
mPN="${pPN}.zsh"
case ${PV} in
99999999*)
	LIVE=:
	EGIT_REPO_URI="git://github.com/hchbaw/${mPN}.git"
	EGIT_BRANCH="pu"
	inherit git-r3
	PROPERTIES="live"
	SRC_URI=""
	KEYWORDS="";;
*)
	LIVE=false
	RESTRICT="mirror"
	SRC_URI="https://github.com/hchbaw/${mPN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
	S="${WORKDIR}/${mPN}-${PV}"
	KEYWORDS="~amd64 ~x86";;
esac

DESCRIPTION="zsh automatic complete-word and list-choices: incremental completion"
HOMEPAGE="https://github.com/hchbaw/auto-fu.zsh/"

LICENSE="HPND"
SLOT="0"
IUSE="+compile"

DEPEND="compile? ( app-shells/zsh )"

DESTPATH="/usr/share/zsh/site-contrib/${mPN}"

generate_example() {
	echo "# Put something like the following into your ~/.zshrc

# First, we set sane options for the standard completion system:

autoload -Uz compinit is-at-least
compinit -D -u
zstyle ':completion:*' completer _complete
zstyle ':completion:*' list-colors \${(s.:.)LS_COLORS}
zstyle ':completion:*' menu select=1 # interactive
zstyle ':completion:*' accept-exact-dirs true
zstyle ':completion:*' path-completion false
if is-at-least 4.3.10
then	zstyle ':completion:*' format \"%B%F{yellow}%K{blue}%d%k%f%b\"
else	zstyle ':completion:*' format \"%B%d%b\"
fi

# Now we source ${PN}"
	if use compile
	then	echo ". ${DESTPATH}/${pPN}
auto-fu-install"
	else	echo ". ${DESTPATH}/${pPN}.zsh"
	fi
	echo "
# Finally, we configure ${PN}

zstyle ':auto-fu:highlight' input
zstyle ':auto-fu:highlight' completion bold,fg=blue
zstyle ':auto-fu:highlight' completion/one fg=blue
zstyle ':auto-fu:var' postdisplay # \$'\\n-azfu-'
#zstyle ':auto-fu:var' enable all
#zstyle ':auto-fu:var' track-keymap-skip opp
#zstyle ':auto-fu:var' disable magic-space
zle-line-init() auto-fu-init
zle -N zle-line-init
zle -N zle-keymap-select auto-fu-zle-keymap-select

# Starting a line with a space or tab or quoting the first word
# or escaping a word should deactivate auto-fu for that line/word.
# This is useful e.g. if auto-fu is too slow for you in some cases.
zstyle ':auto-fu:var' autoable-function/skiplines '[[:blank:]\\\\\"'\'']*'
zstyle ':auto-fu:var' autoable-function/skipwords '[\\\\]*'

# Let Ctrl-d successively remove tail of line, whole line, and exit
kill-line-maybe() {
	if ((\$#BUFFER > CURSOR))
	then	zle kill-line
	else	zle kill-whole-line
	fi
}
zle -N kill-line-maybe
bindkey '\C-d' kill-line-maybe

# Keep Ctrl-d behavior also when auto-fu is active
afu+orf-ignoreeof-deletechar-list() {
	afu-eof-maybe afu-ignore-eof zle kill-line-maybe
}
afu+orf-exit-deletechar-list() {
	afu-eof-maybe exit zle kill-line-maybe
}"
}

src_prepare() {
	(
		umask 022
		generate_example >"${S}"/zshrc-example
	)
	if ! ${LIVE}
	then
		# Make Ctrl-D return correctly.
		eapply "${FILESDIR}"/exit.patch
		# Reset color with "return":
		eapply "${FILESDIR}"/reset-color.patch
		# Make it work with older zsh versions:
		eapply "${FILESDIR}"/zsh-compatibility.patch
	fi
	eapply_user
}

src_compile() {
	! use compile || mPN="${mPN}" \
		zsh -c 'setopt extendedglob no_shwordsplit
source ${mPN}
auto-fu-zcompile ${PWD}/${mPN} ${PWD}' || die
}

src_install() {
	insinto "${DESTPATH}"
	doins "${mPN}"
	! use compile || doins "${pPN}" "${pPN}.zwc"
	dodoc zshrc-example README*
}