
theme:widget:add cwd

XTW_cwd_text_prefix=""
XTW_cwd_text_suffix=""

XTW_cwd_style=""

XTW_cwd_style_trunk=cyan
XTW_cwd_style_tail=magenta
XTW_cwd_style_sep=dim
XTW_cwd_sep=/
XTW_cwd_style_root=red
XTW_cwd_style_rootfolder=yellow

___x_cmd_theme_widget_cwd(){
    theme:comp cwd

    [ -z "$XTW_cwd_style" ] || {
        theme:style_ "%${XTW_cwd_style}%" "${XTW_cwd_text_prefix}${x_cwd}${XTW_cwd_text_suffix}"
        X_cwd="$x_"
        return
    }

    local p="${XTW_cwd_text_prefix}${x_cwd}${XTW_cwd_text_suffix}"
    case "$p" in
        /)
            theme:style_  "%${XTW_cwd_style_root:-red}%"     "${p}"
            ;;
        */*)
            local t=""
            theme:style_  "%${XTW_cwd_style_tail:-magenta}%"     "${p##*/}";     t="$x_"
            theme:style_  "%${XTW_cwd_style_trunk:-cyan}%"       "${p%/*}";      p="${x_}"
            theme:style_  "%${XTW_cwd_style_sep:-dim}%"          "${XTW_cwd_sep:-/}";
            x_="${p}${x_}${t}"
            ;;
        *)
            theme:style_  "%${XTW_cwd_style_rootfolder:-yellow}%" "${p}" ;;
    esac
    X_cwd="$x_"
}

XTW_cwd_style_git=""
___x_cmd_theme_widget_cwd_git(){
    [ -z "$x_git" ] || {
        x_=
        x_git_name="${x_git_root##*/}"
        x_="${x_git_name}${PWD#*"${x_git_root}"}"

        x_="${XTW_cwd_text_prefix}${x_}${XTW_cwd_text_suffix}"
        [ -z "$XTW_cwd_style_git" ] || {
            theme:style_ "%${XTW_cwd_style_git}%" "${x_}"
        }
        X_cwd="$x_"
        return
    }

    ___x_cmd_theme_widget_cwd
}
