{ ... }:
{
  text = ''
    # Bash autocomplete.
    # There are also options like -o nospace. see man for more info.
    # Usage: _foo() { _autocomplete "{foo,bar}" } ; complete -F _foo foo
    function _autocomplete() {
      local IFS=$'\n'
      local commands="''${*}"

      COMPREPLY=()

      local cur="''${COMP_WORDS[COMP_CWORD]}"
      local prev="''${COMP_WORDS[COMP_CWORD-1]}"
      local command="''${COMP_WORDS[0]}"

      COMPREPLY=( $(compgen -W "''${commands}" -- ''${cur}) )
      return 0
    }

    # Autocomplete only first argument.
    function _autocomplete_first() {
      local IFS=$'\n'
      local commands="''${*}"

      COMPREPLY=()

      local cur="''${COMP_WORDS[COMP_CWORD]}"
      local prev="''${COMP_WORDS[COMP_CWORD-1]}"
      local command="''${COMP_WORDS[0]}"

      if [[ "''${prev}" = "''${command}" ]]; then
        COMPREPLY=( $(compgen -W "''${commands}" -- ''${cur}) )
        return 0
      fi
    }

    # Autocomplete only first argument and the rest with files.
    function _autocomplete_first_ls() {
      local IFS=$'\n'
      local commands="''${*}"

      COMPREPLY=()

      local cur="''${COMP_WORDS[COMP_CWORD]}"
      local prev="''${COMP_WORDS[COMP_CWORD-1]}"
      local command="''${COMP_WORDS[0]}"

      if [[ "''${prev}" = "''${command}" ]]; then
        COMPREPLY=( $(compgen -W "''${commands}" -- ''${cur}) )
        return 0
      else
        COMPREPLY=( $(compgen -W "$(ls)" -- ''${cur}) )
        return 0
      fi
    }

    # Autocomplete by grepping file names.
    function _autocomplete_grep() {
      local IFS=$'\n'
      COMPREPLY=()

      local pattern="''${1}"
      local cur="''${COMP_WORDS[COMP_CWORD]}"
      local prev="''${COMP_WORDS[COMP_CWORD-1]}"
      local command="''${COMP_WORDS[0]}"

      COMPREPLY=( $(compgen -W "$(ls | grep -E ''${pattern})" -- ''${cur}) )
      return 0
    }

    # Autocomplete nested program.
    function _autocomplete_nested() {
      # local IFS=$'\n'
      local cur prev words cword split i
      _init_completion -s || return

      for ((i = 1; i <= cword; i++)); do
        if [[ ''${words[i]} != -* ]]; then
          local PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
          local root_command=''${words[i]}
          _command_offset ''${i}
          return
        fi
      done
    }
  '';
}