-
Notifications
You must be signed in to change notification settings - Fork 17
/
builtins.elv
38 lines (34 loc) · 1.18 KB
/
builtins.elv
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
use ./comp
use re
use path
use str
set edit:completion:arg-completer[use] = (
comp:sequence [
{|stem|
if (not (str:has-prefix $stem '.')) {
put './' '../'
put ~/.elvish/lib/**[nomatch-ok].elv | each {|m|
if (not (path:is-dir $m)) {
re:replace ~/.elvish/lib/'(.*).elv' '$1' $m
}
}
} else {
if (eq $stem ".") { set stem = "./" }
if (eq $stem "..") { set stem = "../" }
comp:files $stem ®ex='.*\.elv' &transform={|s| re:replace '\.elv$' '' $s }
}
}
]
)
use epm
var epm-completer-one = (comp:sequence [ $epm:list~ ])
var epm-completer-many = (comp:sequence [ $epm:list~ ...])
set edit:completion:arg-completer[epm:query] = $epm-completer-one
set edit:completion:arg-completer[epm:metadata] = $epm-completer-one
set edit:completion:arg-completer[epm:dest] = $epm-completer-one
set edit:completion:arg-completer[epm:uninstall] = $epm-completer-many
set edit:completion:arg-completer[epm:upgrade] = $epm-completer-many
set edit:completion:arg-completer[elvish] = (comp:sequence ^
&opts= { elvish -help | comp:extract-opts &fold } ^
[ {|arg| comp:files $arg ®ex='\.elv$' } ] ^
)