diff --git a/coffee/omelette.coffee b/coffee/omelette.coffee index d7aa3d9..c0b8978 100644 --- a/coffee/omelette.coffee +++ b/coffee/omelette.coffee @@ -112,6 +112,21 @@ class Omelette extends EventEmitter __ltrim_colon_completions "$cur" } complete -F #{completion} #{program} + elif type compctl &>/dev/null; then + #{completion} () { + local cword line point si + read -Ac words + read -cn cword + read -l line + si="$IFS" + if ! IFS=$'\n' reply=($(#{program} --compzsh --compgen "${cword}" "${words[cword-1]}" "${line}")); then + local ret=$? + IFS="$si" + return $ret + fi + IFS="$si" + } + compctl -K #{completion} #{program} fi ### #{program} completion - end ### """ diff --git a/deno/omelette.ts b/deno/omelette.ts index 588c19c..46908d3 100644 --- a/deno/omelette.ts +++ b/deno/omelette.ts @@ -155,7 +155,7 @@ class Omelette extends EventEmitter { let completions = this.programs.map((program: string) => { let completion; completion = `_${program}_completion`; - return `### ${program} completion - begin. generated by omelette.js ###\nif type compdef &>/dev/null; then\n ${completion}() {\n compadd -- \`${this.program} --compzsh --compgen "\${CURRENT}" "\${words[CURRENT-1]}" "\${BUFFER}"\`\n }\n compdef ${completion} ${program}\nelif type complete &>/dev/null; then\n ${completion}() {\n local cur prev nb_colon\n _get_comp_words_by_ref -n : cur prev\n nb_colon=$(grep -o ":" <<< "$COMP_LINE" | wc -l)\n\n COMPREPLY=( $(compgen -W '$(${this.program} --compbash --compgen "$((COMP_CWORD - (nb_colon * 2)))" "$prev" "\${COMP_LINE}")' -- "$cur") )\n\n __ltrim_colon_completions "$cur"\n }\n complete -F ${completion} ${program}\nfi\n### ${program} completion - end ###`; + return `### ${program} completion - begin. generated by omelette.js ###\nif type compdef &>/dev/null; then\n ${completion}() {\n compadd -- \`${this.program} --compzsh --compgen "\${CURRENT}" "\${words[CURRENT-1]}" "\${BUFFER}"\`\n }\n compdef ${completion} ${program}\nelif type complete &>/dev/null; then\n ${completion}() {\n local cur prev nb_colon\n _get_comp_words_by_ref -n : cur prev\n nb_colon=$(grep -o ":" <<< "$COMP_LINE" | wc -l)\n\n COMPREPLY=( $(compgen -W '$(${this.program} --compbash --compgen "$((COMP_CWORD - (nb_colon * 2)))" "$prev" "\${COMP_LINE}")' -- "$cur") )\n\n __ltrim_colon_completions "$cur"\n }\n complete -F ${completion} ${program}\nelif type compctl &>/dev/null; then\n ${completion} () {\n local cword line point si\n read -Ac words\n read -cn cword\n read -l line\n si="$IFS"\n if ! IFS=$'\n' reply=($(${program} --compzsh --compgen "\${cword}" "\${words[cword-1]}" "\${line}")); then\n local ret=$?\n IFS="$si"\n return $ret\n fi\n IFS="$si"\n }\n compctl -K ${completion} ${program}\nfi\n### ${program} completion - end ###`; }); if (this.isDebug) { // Adding aliases for testing purposes diff --git a/src/omelette.js b/src/omelette.js index f745d8d..0625b2e 100644 --- a/src/omelette.js +++ b/src/omelette.js @@ -138,7 +138,7 @@ completions = this.programs.map((program) => { var completion; completion = `_${program}_completion`; - return `### ${program} completion - begin. generated by omelette.js ###\nif type compdef &>/dev/null; then\n ${completion}() {\n compadd -- \`${this.program} --compzsh --compgen "\${CURRENT}" "\${words[CURRENT-1]}" "\${BUFFER}"\`\n }\n compdef ${completion} ${program}\nelif type complete &>/dev/null; then\n ${completion}() {\n local cur prev nb_colon\n _get_comp_words_by_ref -n : cur prev\n nb_colon=$(grep -o ":" <<< "$COMP_LINE" | wc -l)\n\n COMPREPLY=( $(compgen -W '$(${this.program} --compbash --compgen "$((COMP_CWORD - (nb_colon * 2)))" "$prev" "\${COMP_LINE}")' -- "$cur") )\n\n __ltrim_colon_completions "$cur"\n }\n complete -F ${completion} ${program}\nfi\n### ${program} completion - end ###`; + return `### ${program} completion - begin. generated by omelette.js ###\nif type compdef &>/dev/null; then\n ${completion}() {\n compadd -- \`${this.program} --compzsh --compgen "\${CURRENT}" "\${words[CURRENT-1]}" "\${BUFFER}"\`\n }\n compdef ${completion} ${program}\nelif type complete &>/dev/null; then\n ${completion}() {\n local cur prev nb_colon\n _get_comp_words_by_ref -n : cur prev\n nb_colon=$(grep -o ":" <<< "$COMP_LINE" | wc -l)\n\n COMPREPLY=( $(compgen -W '$(${this.program} --compbash --compgen "$((COMP_CWORD - (nb_colon * 2)))" "$prev" "\${COMP_LINE}")' -- "$cur") )\n\n __ltrim_colon_completions "$cur"\n }\n complete -F ${completion} ${program}\nelif type compctl &>/dev/null; then\n ${completion} () {\n local cword line point si\n read -Ac words\n read -cn cword\n read -l line\n si="$IFS"\n if ! IFS=$'\n' reply=($(${program} --compzsh --compgen "\${cword}" "\${words[cword-1]}" "\${line}")); then\n local ret=$?\n IFS="$si"\n return $ret\n fi\n IFS="$si"\n }\n compctl -K ${completion} ${program}\nfi\n### ${program} completion - end ###`; }); if (this.isDebug) { // Adding aliases for testing purposes