119625d8cSopenharmony_ci
219625d8cSopenharmony_ciuse builtin;
319625d8cSopenharmony_ciuse str;
419625d8cSopenharmony_ci
519625d8cSopenharmony_ciset edit:completion:arg-completer[my-app] = {|@words|
619625d8cSopenharmony_ci    fn spaces {|n|
719625d8cSopenharmony_ci        builtin:repeat $n ' ' | str:join ''
819625d8cSopenharmony_ci    }
919625d8cSopenharmony_ci    fn cand {|text desc|
1019625d8cSopenharmony_ci        edit:complex-candidate $text &display=$text' '(spaces (- 14 (wcswidth $text)))$desc
1119625d8cSopenharmony_ci    }
1219625d8cSopenharmony_ci    var command = 'my-app'
1319625d8cSopenharmony_ci    for word $words[1..-1] {
1419625d8cSopenharmony_ci        if (str:has-prefix $word '-') {
1519625d8cSopenharmony_ci            break
1619625d8cSopenharmony_ci        }
1719625d8cSopenharmony_ci        set command = $command';'$word
1819625d8cSopenharmony_ci    }
1919625d8cSopenharmony_ci    var completions = [
2019625d8cSopenharmony_ci        &'my-app'= {
2119625d8cSopenharmony_ci            cand -o 'cmd option'
2219625d8cSopenharmony_ci            cand -O 'cmd option'
2319625d8cSopenharmony_ci            cand --option 'cmd option'
2419625d8cSopenharmony_ci            cand --opt 'cmd option'
2519625d8cSopenharmony_ci            cand -f 'cmd flag'
2619625d8cSopenharmony_ci            cand -F 'cmd flag'
2719625d8cSopenharmony_ci            cand --flag 'cmd flag'
2819625d8cSopenharmony_ci            cand --flg 'cmd flag'
2919625d8cSopenharmony_ci            cand -h 'Print help'
3019625d8cSopenharmony_ci            cand --help 'Print help'
3119625d8cSopenharmony_ci            cand -V 'Print version'
3219625d8cSopenharmony_ci            cand --version 'Print version'
3319625d8cSopenharmony_ci        }
3419625d8cSopenharmony_ci    ]
3519625d8cSopenharmony_ci    $completions[$command]
3619625d8cSopenharmony_ci}
37