-
Notifications
You must be signed in to change notification settings - Fork 13
/
run-compinit
44 lines (39 loc) · 1.23 KB
/
run-compinit
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
#!/bin/zsh
#
# run-compinit - run compinit in a smarter, faster way
#
#function run-compinit {
emulate -L zsh
setopt localoptions extendedglob
local force=0
if [[ "$1" == "-f" ]]; then
force=1
shift
fi
local zcompdump=${1:-${ZSH_COMPDUMP:-${XDG_CACHE_HOME:-$HOME/.cache}/zsh/zcompdump}}
[[ -d "$zcompdump:h" ]] || mkdir -p "$zcompdump:h"
autoload -Uz compinit
# if compdump is less than 20 hours old,
# consider it fresh and shortcut it with `compinit -C`
#
# Glob magic explained:
# #q expands globs in conditional expressions
# N - sets null_glob option (no error on 0 results)
# mh-20 - modified less than 20 hours ago
if [[ $force -ne 1 ]] && [[ $zcompdump(#qNmh-20) ]]; then
# -C (skip function check) implies -i (skip security check).
compinit -C -d "$zcompdump"
else
compinit -i -d "$zcompdump"
touch "$zcompdump"
fi
# Compile zcompdump, if modified, in background to increase startup speed.
{
if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then
if command mkdir "${zcompdump}.zwc.lock" 2>/dev/null; then
zcompile "$zcompdump"
command rmdir "${zcompdump}.zwc.lock" 2>/dev/null
fi
fi
} &!
#}