forked from sorin-ionescu/prezto
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinit.zsh
154 lines (124 loc) · 3.68 KB
/
init.zsh
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#
# Initializes Prezto.
#
# Authors:
# Prem Mallappa <[email protected]>
# Sorin Ionescu <[email protected]>
#
#
# Version Check
#
# Check for the minimum supported version.
min_zsh_version='4.3.11'
if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then
print "prezto: old shell detected, minimum required: $min_zsh_version" >&2
return 1
fi
unset min_zsh_version
#export ZDOTDIR=${HOME}
## env_append PATH ~/bin
env_append() { env_remove $1 $2 && export $1="`printenv $1`:$2"; }
env_prepend () { env_remove $1 $2 && export $1="$2:`printenv $1`"; }
## env_remove PATH ~/bin
env_remove () {
[[ "X$1" == "X" ]] && return
[[ "X$2" == "X" ]] && return
export $1=`printenv $1 | awk -v RS=: -v ORS=: '$0 != "'$2'"' | sed 's/:$//'`;
}
path_append () { env_append PATH $1; }
path_prepend () { env_prepend PATH $1; }
path_remove () { env_remove PATH $1; }
#
# Module Loader
#
# Loads Prezto modules.
function pmodload {
local -a pmodules
local pmodule
local pfunction_glob='^([_.]*|prompt_*_setup|README*)(-.N:t)'
local zd=${ZDOTDIR:-${HOME}}
local modulesdir=${ZMODDIR:-${zd}/".zprezto/modules"}
# $argv is overridden in the anonymous function.
pmodules=("$argv[@]")
# Add functions to $fpath.
fpath=(${pmodules:+${modulesdir}/${^pmodules}/functions(/FN)} $fpath)
function {
local pfunction
# Extended globbing is needed for listing autoloadable function directories.
setopt LOCAL_OPTIONS EXTENDED_GLOB
# Load Prezto functions.
for pfunction in ${modulesdir}/${^pmodules}/functions/$~pfunction_glob; do
autoload -U "$pfunction"
done
}
# Load Prezto modules.
for pmodule in "$pmodules[@]"; do
local moddir="${modulesdir}/$pmodule"
if zstyle -t ":prezto:module:$pmodule" loaded 'yes' 'no'; then
continue
elif [[ ! -d "${modulesdir}/$pmodule" ]]; then
print "$0: no such module: $pmodule" >&2
continue
else
if [[ -s "${moddir}/init.zsh" ]]; then
source "${moddir}/init.zsh"
fi
if (( $? == 0 )); then
zstyle ":prezto:module:$pmodule" loaded 'yes'
else
# Remove the $fpath entry.
fpath[(r)${moddir}/functions]=()
function {
local pfunction
# Extended globbing is needed for listing autoloadable function
# directories.
setopt LOCAL_OPTIONS EXTENDED_GLOB
# Unload Prezto functions.
for pfunction in $moddir/functions/$~pfunction_glob; do
unfunction "$pfunction"
done
}
zstyle ":prezto:module:$pmodule" loaded 'no'
fi
fi
done
}
#
# Prezto Initialization
#
# Source the Prezto configuration file.
if [[ -s "${ZDOTDIR:-$HOME}/.zpreztorc" ]]; then
source "${ZDOTDIR:-$HOME}/.zpreztorc"
fi
# Disable color and theme in dumb terminals.
case $TERM in
'9term' | 'dumb' | 'eterm')
zstyle ':prezto:*:*' color 'no'
zstyle ':prezto:module:prompt' theme 'off'
;;
*)
esac
# Load Zsh modules.
zstyle -a ':prezto:load' zmodule 'zmodules'
for zmodule ("$zmodules[@]") zmodload "zsh/${(z)zmodule}"
unset zmodule{s,}
# Autoload Zsh functions.
zstyle -a ':prezto:load' zfunction 'zfunctions'
for zfunction ("$zfunctions[@]") autoload -Uz "$zfunction"
unset zfunction{s,}
# Load Prezto modules.
ZMODDIR="${ZDOTDIR:-$HOME/.zprezto}/modules"
zstyle -a ':prezto:load' pmodule 'pmodules'
pmodload "$pmodules[@]"
unset pmodules
#set -x
# Load Prems modules, override anything that is not needed
ZMODDIR="${ZDOTDIR:-$HOME/.zprezto}/prem_modules"
zstyle -a ':prems:load' pmodule 'pmodules'
pmodload "$pmodules[@]"
unset pmodules
unset ZMODDIR
function {
fpath=(${ZDOTDIR:-${HOME}/".zprezto"}/functions(/FN) $fpath)
autoload -U ${fpath[1]}/*(:t)
}