about summary refs log tree commit diff
path: root/Completion/Base/Core/_normal
blob: 539b3781fc3ca50a741183911eb90664c7280806 (plain) (blame)
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
#compdef -command-line-

local _comp_command1 _comp_command2 _comp_command skip

if [[ "$1" = -s ]]; then
  skip=(-s)
else
  skip=()
  _compskip=''
fi

# Check for a history reference to complete modifiers.
# $PREFIX has a quoted form of the !, so we can't test that
# (it might the start of a real argument), but words has the
# raw McCoy.
if [[ -o BANG_HIST &&
     ( ( $words[CURRENT] = \!*: && -z $compstate[quote] ) ||
       ( $words[CURRENT] = \"\!*: && $compstate[all_quotes] = \" ) ) ]]; then
  # This looks like a real history expansion; in that case
  # we'd better put the !'s back the way pfalstad intended.
  PREFIX=${PREFIX//\\!/!}
  compset -P '*:'
  _history_modifiers h
  return
fi

# Completing in command position?

if [[ CURRENT -eq 1 ]]; then
  curcontext="${curcontext%:*:*}:-command-:"

  comp="$_comps[-command-]"
  [[ -n "$comp" ]] && eval "$comp" && ret=0

  return ret
fi

_set_command

_dispatch "$skip[@]" "$_comp_command" \
          "$_comp_command1" "$_comp_command2" -default-