p10k display
  dir=short|long|auto
  right=hide|show
  empty_line=print|show|hide
  ruler=print|show|hide
  segment:kubecontext=show|hide
  gap=show|hide
  line1=show|hide

`print` controls all future prompts; it's weird to use it in POWERLEVEL9K_DISPLAY_PAST but it's not contradictory

# default values
POWERLEVEL9K_DISPLAY_NEW_TTY=()
POWERLEVEL9K_DISPLAY_CURRENT=()
POWERLEVEL9K_DISPLAY_PAST=()
POWERLEVEL9K_NEW_TTY_MAX_AGE_SECONDS=inf

# new way to show empty line
POWERLEVEL9K_DISPLAY_NEW_TTY=(empty_line=hide)
POWERLEVEL9K_DISPLAY_CURRENT=(empty_line=print)
POWERLEVEL9K_NEW_TTY_MAX_AGE_SECONDS=5

# deprecated.
POWERLEVEL9K_SHOW_RULER
POWERLEVEL9K_PROMPT_ADD_NEWLINE

if POWERLEVEL9K_PROMPT_ADD_NEWLINE is true; then
  if any of the new flags are set {
    print a warning and do nothing
  } else {
    POWERLEVEL9K_DISPLAY_NEW_TTY=(empty_line=hide)
    POWERLEVEL9K_DISPLAY_CURRENT=(empty_line=print)
  }
fi

if POWERLEVEL9K_SHOW_RULER is true; then
  if any of the new flags are set {
    print a warning and do nothing
  } else {
    POWERLEVEL9K_DISPLAY_CURRENT=(ruler=show)
  }
fi

POWERLEVEL9K_DISPLAY_CURRENT=(ruler=show segment:kubecontext=hide segment:time=hide)
POWERLEVEL9K_DISPLAY_PAST=(ruler=hide segment:time=show)
POWERLEVEL9K_DISPLAY_NEW_TTY=(ruler=hide)
POWERLEVEL9K_NEW_TTY_MAX_AGE_SECONDS=5
POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=true

# $BUFFER       current command line
# $P9K_COMMAND  the first word in $BUFFER after alias expansion
function p10k-on-buffer-change() {
  case ${P9K_COMMAND:t} in
    kubectl)   p10k display segment:kubecontext=show;;
    az)        p10k display segment:azure=show;;
    terraform) p10k display segment:azure=show segment:kubecontext=show;;
    *)         p10k display segment:azure=hide segment:kubecontext=hide;;
  esac
}

# $P9K_PROMPT_TYPE  instant|regular
# $P9K_TTY_TYPE     new|old
function p10k-on-pre-prompt() {
  p10k display segment:kubecontext=hide segment:azure=hide
  p10k display line1=show right=show segment:time=hide
  if [[ $P9K_TTY_TYPE == new ]]; then
    p10k display empty_line=hide
  else
    p10k display empty_line=show
  fi
}

function p10k-on-post-prompt() {
  p10k display line1=hide right=hide segment:time=show
}

empty_line
ruler
1
1/left_frame
1/left
1/left/time
1/gap
