File: copyq-completion

package info (click to toggle)
copyq 13.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 12,964 kB
  • sloc: cpp: 63,306; sh: 992; xml: 452; python: 293; ruby: 152; makefile: 27; javascript: 25
file content (106 lines) | stat: -rw-r--r-- 3,523 bytes parent folder | download | duplicates (4)
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# shellcheck shell=bash

_copyq_commands=(
    show hide toggle menu exit disable enable clipboard selection paste copy
    count select next previous add insert remove edit separator read write
    action popup tab removetab renametab exporttab importtab config eval session
    help
)

_copyq_list_sessions() {
    ss -l -x | sed -nE 's#.*/\.copyq-?(\S*)_s .*#\1#p'
}

_copyq_complete_words() {
    while read -r item; do
        COMPREPLY+=("$item")
    done < <(compgen -W "$1" -- "${COMP_WORDS[$COMP_CWORD]}")
}

_copyq_complete_lines() {
    while read -r item; do
        COMPREPLY+=("$item")
    done < <(IFS=$'\n' compgen -W "$1" -- "${COMP_WORDS[$COMP_CWORD]}")
}

_copyq_complete_files() {
    while read -r item; do
        COMPREPLY+=("$item")
    done < <(compgen -f -- "${COMP_WORDS[$COMP_CWORD]}")
}

_copyq_completions() {
    case "$COMP_CWORD" in
        1)
            case "${COMP_WORDS[$COMP_CWORD]}" in
                --*)
                    _copyq_complete_words '--session --help'
                    ;;
                -*)
                    _copyq_complete_words '-e -s -h'
                    ;;
                *)
                    _copyq_complete_words "${_copyq_commands[*]}"
                    ;;
            esac
            ;;
        2)
            case "${COMP_WORDS[$COMP_CWORD-1]}" in
                show)
                    pidof copyq &>/dev/null || return
                    _copyq_complete_lines "$(copyq tab)"
                    ;;
                clipboard)
                    pidof copyq &>/dev/null || return
                    _copyq_complete_lines "$(copyq clipboard -- ?)"
                    ;;
                selection)
                    pidof copyq &>/dev/null || return
                    _copyq_complete_lines "$(copyq selection -- ?)"
                    ;;
                copy)
                    pidof copyq &>/dev/null || return
                    _copyq_complete_lines "$(copyq clipboardFormatsToSave)"
                    ;;
                read)
                    pidof copyq &>/dev/null || return
                    _copyq_complete_lines "$(copyq read -- ?)"
                    ;;
                write)
                    pidof copyq &>/dev/null || return
                    _copyq_complete_lines "$(copyq clipboardFormatsToSave)"
                    ;;
                tab)
                    pidof copyq &>/dev/null || return
                    _copyq_complete_lines "$(copyq tab)"
                    ;;
                removetab)
                    pidof copyq &>/dev/null || return
                    _copyq_complete_lines "$(copyq tab)"
                    ;;
                renametab)
                    pidof copyq &>/dev/null || return
                    _copyq_complete_lines "$(copyq tab)"
                    ;;
                exporttab)
                    _copyq_complete_files
                    ;;
                importtab)
                    _copyq_complete_files
                    ;;
                config)
                    pidof copyq &>/dev/null || return
                    _copyq_complete_lines "$(copyq config | grep '^[^ ]')"
                    ;;
                session|-s|--session)
                    _copyq_complete_lines "$(_copyq_list_sessions)"
                    ;;
                help|-h|--help)
                    _copyq_complete_words "${_copyq_commands[*]}"
                    ;;
            esac
            ;;
    esac
}

complete -o filenames -F _copyq_completions copyq