-
Notifications
You must be signed in to change notification settings - Fork 944
Developer's Guide
Our main entry point are the PROMPT
and RPROMPT
variables, which are
interpreted by zsh itself. All that this (and any other) theme does is
filling these two variables with control instructions (like defining
colors, etc.) and ready-to-use data. So within this theme we collect a
whole bunch of information to put in that variables. You can find
PROMPT
and RPROMPT
at the very end of the powerlevel9k.zsh-theme
.
This simple diagram may explain the invoking order better:
+-----+ +---------+
| Zsh |--->| $PROMPT |
+-----+ +---------+
|
V
+---------------------+ +------------+ +---------------------+
| build_left_prompt() |--->| prompt_*() |->| $1_prompt_segment() |
+---------------------+ +------------+ +---------------------+
Feel free to add your own segments. Every segment gets called with an
orientation as first parameter (left
or right
), so we can figure
out on which side we should draw the segment. This information is
used at the time we call the actual segment-drawing function:
$1_prompt_segment
. To make the magic color-overwrite mechanism to
work, we have to pass our function name as first argument. Usually
this is just $0
. Second parameter is a default background color,
third the default foreground color. And finally we pass our content
to the function. So our function could look somewhat like this:
prompt_echo() {
local content='Hello World!'
$1_prompt_segment $0 blue red $content
}
At this point we can overwrite our blue-on-red segment by putting
POWERLEVEL9K_ECHO_FOREGROUND="200"
POWERLEVEL9K_ECHO_BACKGROUND="040"
in our ~/.zshrc
. We now have a pink-on-green segment. Yay!