summaryrefslogtreecommitdiff
path: root/config/lean.zsh
diff options
context:
space:
mode:
authorromkatv <roman.perepelitsa@gmail.com>2019-07-13 01:02:24 +0300
committerromkatv <roman.perepelitsa@gmail.com>2019-07-13 01:02:24 +0300
commit7fe72dfce0d35cf550f0be9a09e90ee0dd8c53c5 (patch)
tree1fa749888d897c8e97a16c5ce01bd33fa20c95de /config/lean.zsh
parent97c28065674dc2447dd7437f68218fda377a183c (diff)
polish lean.zsh a bit
Diffstat (limited to 'config/lean.zsh')
-rw-r--r--config/lean.zsh122
1 files changed, 74 insertions, 48 deletions
diff --git a/config/lean.zsh b/config/lean.zsh
index ff8fee08..7c31b7c5 100644
--- a/config/lean.zsh
+++ b/config/lean.zsh
@@ -9,6 +9,7 @@ fi
emulate -L zsh
setopt no_unset
+ # The list of segments shown on the left. Fill it with the most important segments.
typeset -ga POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
# Line #1
dir # current directory
@@ -18,6 +19,10 @@ fi
prompt_char # prompt symbol
)
+ # The list of segments shown on the right. Fill it with less important segments.
+ # Right prompt on the last prompt line (where you are typing your commands) gets
+ # automatically hidden when the input line reaches it. Right prompt above the
+ # last prompt line gets hidden if it would overlap with left prompt.
typeset -ga POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
status # exit code of the last command
command_execution_time # duration of the last command
@@ -44,19 +49,19 @@ fi
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' '
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR=
- # Don't add an empty line before each prompt. If you set it to true, you'll probably
- # want to set POWERLEVEL9K_SHOW_RULER=false below.
- typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
+ # Add an empty line before each prompt. If you set it to false, you might want to
+ # set POWERLEVEL9K_SHOW_RULER to true below.
+ typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
- # Add a horizontal line before each prompt. If you set it to false, you might want to
- # set POWERLEVEL9K_PROMPT_ADD_NEWLINE=true above.
- typeset -g POWERLEVEL9K_SHOW_RULER=true
+ # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll
+ # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE to false above.
+ typeset -g POWERLEVEL9K_SHOW_RULER=false
typeset -g POWERLEVEL9K_RULER_CHAR='─'
typeset -g POWERLEVEL9K_RULER_FOREGROUND=237
- # Green prompt symbol on success ($? == 0).
+ # Green prompt symbol if the last command succeeded.
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=76
- # Red prompt symbol on error ($? != 0).
+ # Red prompt symbol if the last command failed.
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=196
# Default prompt symbol.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯ '
@@ -65,46 +70,52 @@ fi
# Prompt symbol in visual vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='Ⅴ '
+ # Enable special styling for non-writable directories. If set to false,
+ # POWERLEVEL9K_DIR_NOT_WRITABLE_FOREGROUND defined below won't have effect.
+ typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=true
# Default current directory color.
typeset -g POWERLEVEL9K_DIR_FOREGROUND=39
# Directory color if it isn't writable.
typeset -g POWERLEVEL9K_DIR_NOT_WRITABLE_FOREGROUND=209
- # Embed a hyperlink into the directory.
- typeset -g POWERLEVEL9K_DIR_HYPERLINK=true
- # Enable special styling for non-writable directories. If set to false,
- # POWERLEVEL9K_DIR_NOT_WRITABLE_FOREGROUND defined above won't have effect.
- typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=true
-
- # Git status: feature:master#tag ⇣42⇡42 *42 merge ~42 +42 !42 ?42
+ # If set to true, embed a hyperlink into the directory. Useful for quickly
+ # opening a directory in the file manager simply by clicking the link.
+ # Can also be handy when the directory is shortened, as it allows you to see
+ # the full directory that was used in previous commands.
+ typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
+
+ # Git status: feature:master#tag ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
+ # We are using parameters defined by the gitstatus plugin. See reference:
+ # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
local vcs=''
- # 'feature' or '@72f5c8a' if not on a branch
+ # 'feature' or '@72f5c8a' if not on a branch.
vcs+='%76F${${VCS_STATUS_LOCAL_BRANCH//\%/%%}:-%f@%76F${VCS_STATUS_COMMIT[1,8]}}'
- # ':master' if the tracking branch name differs from local branch
+ # ':master' if the tracking branch name differs from local branch.
vcs+='${${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH}:+%f:%76F${VCS_STATUS_REMOTE_BRANCH//\%/%%}}'
- # '#tag' if on a tag
+ # '#tag' if on a tag.
vcs+='${VCS_STATUS_TAG:+%f#%76F${VCS_STATUS_TAG//\%/%%}}'
- # ⇣42 if behind the remote
+ # ⇣42 if behind the remote.
vcs+='${${VCS_STATUS_COMMITS_BEHIND:#0}:+ %76F⇣${VCS_STATUS_COMMITS_BEHIND}}'
- # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42
+ # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
+ # If you want '⇣42 ⇡42' instead, replace '${${(M)VCS_STATUS_COMMITS_BEHIND:#0}:+ }' with ' '.
vcs+='${${VCS_STATUS_COMMITS_AHEAD:#0}:+${${(M)VCS_STATUS_COMMITS_BEHIND:#0}:+ }%76F⇡${VCS_STATUS_COMMITS_AHEAD}}'
- # *42 if have stashes
+ # *42 if have stashes.
vcs+='${${VCS_STATUS_STASHES:#0}:+ %76F*${VCS_STATUS_STASHES}}'
- # 'merge' if the repo is in an unusual state
+ # 'merge' if the repo is in an unusual state.
vcs+='${VCS_STATUS_ACTION:+ %196F${VCS_STATUS_ACTION//\%/%%}}'
- # ~42 if have merge conflicts
+ # ~42 if have merge conflicts.
vcs+='${${VCS_STATUS_NUM_CONFLICTED:#0}:+ %196F~${VCS_STATUS_NUM_CONFLICTED}}'
- # +42 if have staged changes
+ # +42 if have staged changes.
vcs+='${${VCS_STATUS_NUM_STAGED:#0}:+ %11F+${VCS_STATUS_NUM_STAGED}}'
- # !42 if have unstaged changes
+ # !42 if have unstaged changes.
vcs+='${${VCS_STATUS_NUM_UNSTAGED:#0}:+ %11F!${VCS_STATUS_NUM_UNSTAGED}}'
- # ?42 if have untracked files
+ # ?42 if have untracked files.
vcs+='${${VCS_STATUS_NUM_UNTRACKED:#0}:+ %12F?${VCS_STATUS_NUM_UNTRACKED}}'
# If P9K_CONTENT is not empty, leave it unchanged. It's either "loading" or from vcs_info.
vcs="\${P9K_CONTENT:-$vcs}"
# Disable the default Git status formatting.
typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
- # Install our own Git status formatting.
+ # Install our own Git status formatter.
typeset -g POWERLEVEL9K_VCS_{CLEAN,UNTRACKED,MODIFIED}_CONTENT_EXPANSION=$vcs
# When Git status is being refreshed asynchronously, display the last known repo status in grey.
typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION=${${vcs//\%f}//\%<->F}
@@ -112,9 +123,8 @@ fi
# Enable counters for staged, unstaged, etc.
typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
- # These settings have no effect when vcs prompt is rendered from gitstatusd data.
- # They are used for respositories other than Git or when gitstatusd fails and Powerlevel10k
- # has to fall back to using vcs_info.
+ # These settings are used for respositories other than Git or when gitstatusd fails and
+ # Powerlevel10k has to fall back to using vcs_info.
typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76
typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=11
typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76
@@ -155,7 +165,7 @@ fi
typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=244
# Context color when running with privileges.
typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=11
- # Don't show context unless running with privileges on in SSH.
+ # Don't show context unless running with privileges on via SSH.
typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION=
typeset -g POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
@@ -163,38 +173,54 @@ fi
typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=6
# Show Python version next to the virtual environment name.
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=true
+ # Separate environment name from Python version only with a space.
typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
+ # Anaconda environment color.
typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=6
+ # Show Python version next to the anaconda environment name.
typeset -g POWERLEVEL9K_ANACONDA_SHOW_PYTHON_VERSION=true
+ # Separate environment name from Python version only with a space.
typeset -g POWERLEVEL9K_ANACONDA_{LEFT,RIGHT}_DELIMITER=
- typeset -g POWERLEVEL9K_PYENV_BACKGROUND=none
+ # Pyenv color.
typeset -g POWERLEVEL9K_PYENV_FOREGROUND=6
+ # Don't show the current Python version if it's the same as global.
typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false
- # Don't show trailing "/default" in kubernetes context.
- typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_DEFAULT_NAMESPACE=false
- # Kubernetes context classes for the purpose of using different colors with different contexts.
+ # Kubernetes context classes for the purpose of using different colors with
+ # different contexts.
#
- # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element in
- # each pair defines a pattern against which the current kubernetes context (in the format it is
- # displayed in the prompt) gets matched. The second element defines the context class. Patterns
- # are tried in order. The first match wins.
+ # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements.
+ # The first element in each pair defines a pattern against which the current
+ # kubernetes context (in the format it is displayed in the prompt) gets matched.
+ # The second element defines the context class. Patterns are tried in order.
+ # The first match wins.
#
- # For example, if your current kubernetes context is "deathray-testing", its class is TEST because
- # "deathray-testing" doesn't match the pattern '*prod*' but does match '*test*'. Hence it'll be
- # shown with the color of $POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND.
+ # For example, if your current kubernetes context is "deathray-testing", its
+ # class is TEST because "deathray-testing" doesn't match the pattern '*prod*'
+ # but does match '*test*'. Hence it'll be shown with the color of
+ # $POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND.
typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
- '*prod*' PROD
- '*test*' TEST
+ # '*prod*' PROD # These values are examples that are unlikely
+ # '*test*' TEST # to match your needs. Customize them as needed.
'*' DEFAULT)
- typeset -g POWERLEVEL9K_KUBECONTEXT_PROD_FOREGROUND=1
- typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=2
+ # typeset -g POWERLEVEL9K_KUBECONTEXT_PROD_FOREGROUND=1
+ # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=2
typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=3
-
+ # Kubernetes too long? You can shorten it by defining an expansion. The original
+ # Kubernetes context that you see in your prompt is stored in ${P9K_CONTENT} when
+ # the expansion is evaluated. To remove everything up to and including the last '/',
+ # set POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION='${P9K_CONTENT##*/}'. Parameter
+ # expansions are flexible and fast. See reference:
+ # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
+ typeset POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION='${P9K_CONTENT}'
+ # Show the trailing "/default" in kubernetes context.
+ typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_DEFAULT_NAMESPACE=true
+
+ # Current time color.
typeset -g POWERLEVEL9K_TIME_FOREGROUND=66
- # Format for the time segment: 09:51:02. See `man 3 strftime`.
+ # Format for the current time: 09:51:02. See `man 3 strftime`.
typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
}