blob: 675bf6cff669cfeabe4cf7934511b955c05b64c7 (
plain)
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
|
# dcop completion
#
# Inputs:
# $1 -- name of the command whose arguments are being completed
# $2 -- word being completed
# $3 -- ord preceding the word being completed
# $COMP_LINE -- current command line
# $COMP_PONT -- cursor position
# $COMP_WORDS -- array containing individual words in the current
# command line
# $COMP_CWORD -- index into ${COMP_WORDS} of the word containing the
# current cursor position
# Output:
# COMPREPLY array variable contains possible completions
#
# dcop syntax:
# dcop [ application [object [function [arg1] [arg2] [arg3] ... ] ] ]
#
_complete_dcop ()
{
local wordlist
COMPREPLY=()
wordlist=""
if (( $COMP_CWORD == 1 )); then
#
# Application. This one is easy, just return all names that dcop
# gives us.
#
wordlist=$(dcop)
elif (( $COMP_CWORD == 2 )); then
#
# Object. 'dcop <application>' returns all objects the application
# supports plus (default). The parenthesis in (default) should be
# omitted when using it as an argument so we need to remove them.
#
wordlist=$(dcop ${COMP_WORDS[1]} | sed -e "s,(default),default,")
elif (( $COMP_CWORD == 3 )); then
#
# Function. 'dcop <application> <object>' returns functions of the
# form 'type functionname(arguments)'. We need to return a list with
# the functionnames.
#
wordlist=$(dcop ${COMP_WORDS[1]} ${COMP_WORDS[2]} | sed -e "s,.* \(.*\)(.*,\1,")
fi
COMPREPLY=( $(compgen -W "$wordlist" "$2") )
return 0
}
complete -F _complete_dcop dcop
|