diff --git a/modules/perl/README.md b/modules/perl/README.md index 90af1ebe..f25d4a95 100644 --- a/modules/perl/README.md +++ b/modules/perl/README.md @@ -51,6 +51,24 @@ Aliases - `plbu` uninstalls a Perl version. - `plbx` temporarily sets the Perl version to use. +Functions +--------- + + - `perl-info` exposes information about the Perl environment via the + `$perl_info` associative array. + +Theming +------- + +To display the name of the currach Perl version in a prompt, define the +following style in the `prompt_name_setup` function. + + # %v - perl version. + zstyle ':prezto:module:perl:info:version' format 'version:%v' + +Then add `$perl_info[version]` to `$PROMPT` or `$RPROMPT` and call +`perl-info` in the `prompt_name_precmd` hook function. + Authors ------- diff --git a/modules/perl/functions/perl-info b/modules/perl/functions/perl-info new file mode 100644 index 00000000..c26e405b --- /dev/null +++ b/modules/perl/functions/perl-info @@ -0,0 +1,30 @@ +# +# Exposes information about the Perl environment via the $perl_info associative +# array. +# +# Authors: +# JINNOUCHI Yasushi +# + +local version +local version_format +local version_formatted + +# Clean up previous $perl_info. +unset perl_info +typeset -gA perl_info + +if (( $+commands[perlbrew] )); then + version=${${(F)${(f)"$(perlbrew list)"}:# *}[(w)2]} +elif (( $+commands[plenv] )); then + version=$(plenv version-name) +elif (( $+commands[perl] )); then + version=$(perl -e 'printf "%vd", $^V') +fi + +# Format version. +if [[ -n "$version" ]]; then + zstyle -s ':prezto:module:perl:info:version' format 'version_format' + zformat -f version_formatted "$version_format" "v:$version" + perl_info[version]="$version_formatted" +fi