@@ -8,7 +8,14 @@ function! gina#command#_raw#call(range, args, mods) abort
8
8
endfunction
9
9
10
10
function ! gina#command#_raw#complete (arglead, cmdline, cursorpos) abort
11
- return gina#complete#filename#any (a: arglead , a: cmdline , a: cursorpos )
11
+ let args = gina#core#args#new (matchstr (a: cmdline , ' ^.*\ze .*' ))
12
+ if empty (args .get (1 ))
13
+ return gina#complete#common#raw_command (a: arglead , a: cmdline , a: cursorpos )
14
+ endif
15
+ if args .get (1 ) = ~# ' ^\%(fetch\|pull\|push\|switch\)$'
16
+ return s: {args .get (1 )}_complete (a: arglead , a: cmdline , a: cursorpos )
17
+ endif
18
+ return []
12
19
endfunction
13
20
14
21
@@ -22,6 +29,47 @@ function! s:build_args(git, args) abort
22
29
return args .lock ()
23
30
endfunction
24
31
32
+ function ! s: fetch_complete (arglead, cmdline, cursorpos) abort
33
+ let args = gina#core#args#new (matchstr (a: cmdline , ' ^.*\ze .*' ))
34
+ if empty (args .get (2 ))
35
+ return gina#complete#common#remote (a: arglead , a: cmdline , a: cursorpos )
36
+ endif
37
+ if empty (args .get (3 ))
38
+ " TODO: Return refspecs in remote repository "args.get(2)".
39
+ endif
40
+ return []
41
+ endfunction
42
+
43
+ function ! s: pull_complete (arglead, cmdline, cursorpos) abort
44
+ let args = gina#core#args#new (matchstr (a: cmdline , ' ^.*\ze .*' ))
45
+ if empty (args .get (2 ))
46
+ return gina#complete#common#remote (a: arglead , a: cmdline , a: cursorpos )
47
+ endif
48
+ if empty (args .get (3 ))
49
+ " TODO: Return refspecs in remote repository "args.get(2)".
50
+ endif
51
+ return []
52
+ endfunction
53
+
54
+ function ! s: push_complete (arglead, cmdline, cursorpos) abort
55
+ let args = gina#core#args#new (matchstr (a: cmdline , ' ^.*\ze .*' ))
56
+ if empty (args .get (2 ))
57
+ return gina#complete#common#remote (a: arglead , a: cmdline , a: cursorpos )
58
+ endif
59
+ if empty (args .get (3 ))
60
+ return gina#complete#commit#local_branch (a: arglead , a: cmdline , a: cursorpos )
61
+ endif
62
+ return []
63
+ endfunction
64
+
65
+ function ! s: switch_complete (arglead, cmdline, cursorpos) abort
66
+ let args = gina#core#args#new (matchstr (a: cmdline , ' ^.*\ze .*' ))
67
+ if empty (args .get (2 ))
68
+ return gina#complete#commit#local_branch (a: arglead , a: cmdline , a: cursorpos )
69
+ endif
70
+ return []
71
+ endfunction
72
+
25
73
26
74
" Pipe -----------------------------------------------------------------------
27
75
function ! s: _pipe_on_exit (exitval) abort dict
0 commit comments