Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: path PATH
On Sun, Jan 22, 2023 at 1:42 AM Ray Andrews <rayandrews@xxxxxxxxxxx> wrote:
>
> I want to display the types too, and had hoped it would be possible, but it isn't so that's that.
Perhaps you can use something like this to describe parameters:
    describe-param() {
      emulate -L zsh
      [[ ARGC -eq 1 && -n $1 ]] || return
      set -- "$@" ${(Pt)1}
      [[ -$2- == *-hide-* ]] && return 1
      print -rn -- "$2 ${(q-)1}"
      if [[ -$2- == *-hideval-* ]]; then
        print
      else
        set -- "$@" ${(M)2:#(array|association)(|-*)}
        print -r -- "=${3:+( }${(j: :)${(@qqq)${(@kv)${(@P)1}}}}${3:+ )}"
      fi
    }
The output of this function is of the following shape:
    <TYPE> <NAME>[=<VALUE>]
For example:
    % describe-param PWD
    scalar-export PWD="/home/romka"
    % describe-param MAILCHECK
    integer MAILCHECK="60"
    % describe-param PATH
    scalar-tied-export-special PATH="/home/romka/bin:..."
    % describe-param path
    array-tied-unique-special path=( "/home/romka/bin" ... )
You might want to customize how the type is printed.
If you want to describe all parameters, you can do it like this:
    for name in ${(k)parameters}; do
      describe-param $name
    done
Roman.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author