mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-12-18 05:40:07 +00:00
Added a little "Developers Guide"
This commit is contained in:
parent
77cbe9a6f0
commit
3dc5084e40
2 changed files with 66 additions and 5 deletions
52
README.md
52
README.md
|
@ -256,3 +256,55 @@ Please submit your contribution as a Github pull-request.
|
||||||
If you would like to contact me directly, you can find my e-mail address on my
|
If you would like to contact me directly, you can find my e-mail address on my
|
||||||
[Github profile page](https://github.com/bhilburn).
|
[Github profile page](https://github.com/bhilburn).
|
||||||
|
|
||||||
|
#### Developers Guide
|
||||||
|
|
||||||
|
The theme has grown a lot lately, so I think a little explanation would be
|
||||||
|
helpful.
|
||||||
|
|
||||||
|
##### Basic Knowledge
|
||||||
|
|
||||||
|
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() |
|
||||||
|
+---------------------+ +------------+ +---------------------+
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Adding Segments
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
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!
|
||||||
|
|
|
@ -135,8 +135,13 @@ fi
|
||||||
################################################################
|
################################################################
|
||||||
|
|
||||||
# Begin a left prompt segment
|
# Begin a left prompt segment
|
||||||
# Takes two arguments, background and foreground. Both can be omitted,
|
# Takes four arguments:
|
||||||
# rendering default background/foreground.
|
# * $1: Name of the function that was orginally invoked (mandatory).
|
||||||
|
# Necessary, to make the dynamic color-overwrite mechanism work.
|
||||||
|
# * $2: Background color
|
||||||
|
# * $3: Foreground color
|
||||||
|
# * $4: The segment content
|
||||||
|
# The latter three can be omitted,
|
||||||
left_prompt_segment() {
|
left_prompt_segment() {
|
||||||
# Overwrite given background-color by user defined variable for this segment.
|
# Overwrite given background-color by user defined variable for this segment.
|
||||||
# We get as first Parameter the function name, which called this function.
|
# We get as first Parameter the function name, which called this function.
|
||||||
|
@ -177,9 +182,13 @@ left_prompt_end() {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Begin a right prompt segment
|
# Begin a right prompt segment
|
||||||
# Takes two arguments, background and foreground. Both can be omitted,
|
# Takes four arguments:
|
||||||
# rendering default background/foreground. No ending for the right prompt
|
# * $1: Name of the function that was orginally invoked (mandatory).
|
||||||
# segment is needed (unlike the left prompt, above).
|
# Necessary, to make the dynamic color-overwrite mechanism work.
|
||||||
|
# * $2: Background color
|
||||||
|
# * $3: Foreground color
|
||||||
|
# * $4: The segment content
|
||||||
|
# No ending for the right prompt segment is needed (unlike the left prompt, above).
|
||||||
right_prompt_segment() {
|
right_prompt_segment() {
|
||||||
# Overwrite given background-color by user defined variable for this segment.
|
# Overwrite given background-color by user defined variable for this segment.
|
||||||
local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_BACKGROUND
|
local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_BACKGROUND
|
||||||
|
|
Loading…
Reference in a new issue