From de8ae854553a23bad426f4e88fe4481de55ed9b8 Mon Sep 17 00:00:00 2001 From: Alex Denes Date: Tue, 27 Jul 2021 17:59:17 +0000 Subject: [PATCH] Reorganize code --- .gitmodules | 12 +- .zshrc | 19 +- autosuggestions.zsh | 4 + clint.zsh | 4 + extern/powerlevel10k | 1 + extern/zsh-autosuggestions | 1 + extern/zsh-syntax-highlighting | 1 + bindings.zsh => input.zsh | 2 +- options.zsh | 53 ++++ .../prompt_c_covid_19 | 0 .../prompt_c_docker_host | 0 .../segments => p10k-segments}/prompt_c_mpv | 0 .../prompt_c_mumble | 0 .../prompt_c_new_mail | 0 .../prompt_c_newsboat | 0 .../segments => p10k-segments}/prompt_c_todo | 0 .../prompt_c_weather | 0 p10k.zsh | 235 ++++++++++++++++++ powerlevel-config/command.zsh | 5 - powerlevel-config/context.zsh | 9 - powerlevel-config/dir.zsh | 18 -- powerlevel-config/disk.zsh | 2 - powerlevel-config/misc.zsh | 6 - powerlevel-config/prompt-char.zsh | 3 - powerlevel-config/segments.zsh | 2 - powerlevel-config/separators.zsh | 9 - powerlevel-config/status.zsh | 4 - powerlevel-config/time.zsh | 1 - powerlevel-config/vcs.zsh | 82 ------ powerlevel-config/vi-mode.zsh | 9 - powerlevel10k | 1 - preferences.zsh | 51 ---- syntax.zsh | 8 + zsh-autosuggestions | 1 - zsh-syntax-highlighting | 1 - 35 files changed, 330 insertions(+), 214 deletions(-) create mode 100644 autosuggestions.zsh create mode 100644 clint.zsh create mode 160000 extern/powerlevel10k create mode 160000 extern/zsh-autosuggestions create mode 160000 extern/zsh-syntax-highlighting rename bindings.zsh => input.zsh (98%) create mode 100644 options.zsh rename {powerlevel-config/segments => p10k-segments}/prompt_c_covid_19 (100%) rename {powerlevel-config/segments => p10k-segments}/prompt_c_docker_host (100%) rename {powerlevel-config/segments => p10k-segments}/prompt_c_mpv (100%) rename {powerlevel-config/segments => p10k-segments}/prompt_c_mumble (100%) rename {powerlevel-config/segments => p10k-segments}/prompt_c_new_mail (100%) rename {powerlevel-config/segments => p10k-segments}/prompt_c_newsboat (100%) rename {powerlevel-config/segments => p10k-segments}/prompt_c_todo (100%) rename {powerlevel-config/segments => p10k-segments}/prompt_c_weather (100%) create mode 100644 p10k.zsh delete mode 100644 powerlevel-config/command.zsh delete mode 100644 powerlevel-config/context.zsh delete mode 100644 powerlevel-config/dir.zsh delete mode 100644 powerlevel-config/disk.zsh delete mode 100644 powerlevel-config/misc.zsh delete mode 100644 powerlevel-config/prompt-char.zsh delete mode 100644 powerlevel-config/segments.zsh delete mode 100644 powerlevel-config/separators.zsh delete mode 100644 powerlevel-config/status.zsh delete mode 100644 powerlevel-config/time.zsh delete mode 100644 powerlevel-config/vcs.zsh delete mode 100644 powerlevel-config/vi-mode.zsh delete mode 160000 powerlevel10k delete mode 100644 preferences.zsh create mode 100644 syntax.zsh delete mode 160000 zsh-autosuggestions delete mode 160000 zsh-syntax-highlighting diff --git a/.gitmodules b/.gitmodules index 4fead0e..4ee0612 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,9 @@ -[submodule "powerlevel10k"] - path = powerlevel10k +[submodule "extern/powerlevel10k"] + path = extern/powerlevel10k url = https://github.com/romkatv/powerlevel10k -[submodule "zsh-autosuggestions"] - path = zsh-autosuggestions +[submodule "extern/zsh-autosuggestions"] + path = extern/zsh-autosuggestions url = https://github.com/zsh-users/zsh-autosuggestions -[submodule "zsh-syntax-highlighting"] - path = zsh-syntax-highlighting +[submodule "extern/zsh-syntax-highlighting"] + path = extern/zsh-syntax-highlighting url = https://github.com/zsh-users/zsh-syntax-highlighting diff --git a/.zshrc b/.zshrc index 54991ad..052bcf8 100644 --- a/.zshrc +++ b/.zshrc @@ -1,3 +1,16 @@ -source "${ZDOTDIR}/preferences.zsh" -source "${ZDOTDIR}/completions.zsh" -source "${ZDOTDIR}/bindings.zsh" +typeset -g EXTERN_PLUGINS="$ZDOTDIR/extern/" + +source "$ZDOTDIR/options.zsh" +source "$ZDOTDIR/completions.zsh" +source "$ZDOTDIR/input.zsh" + +# Checks if the plugin exists before loading it's settings +[ -r "$EXTERN_PLUGINS/zsh-autosuggestions/zsh-autosuggestions.zsh" ] && source "$ZDOTDIR/autosuggestions.zsh" +[ -r "$EXTERN_PLUGINS/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" ] && source "$ZDOTDIR/syntax.zsh" + +if [ -r "$EXTERN_PLUGINS/powerlevel10k/powerlevel10k.zsh-theme" ]; then + source "$ZDOTDIR/p10k.zsh" +else + # Fallback builtin prompt + source "$ZDOTDIR/clint.zsh" +fi diff --git a/autosuggestions.zsh b/autosuggestions.zsh new file mode 100644 index 0000000..b05c783 --- /dev/null +++ b/autosuggestions.zsh @@ -0,0 +1,4 @@ +source "$EXTERN_PLUGINS/zsh-autosuggestions/zsh-autosuggestions.zsh" + +typeset -g ZSH_AUTOSUGGEST_STRATEGY=(completion history) +typeset -g ZSH_AUTOSUGGEST_USE_ASYNC=true diff --git a/clint.zsh b/clint.zsh new file mode 100644 index 0000000..0da072b --- /dev/null +++ b/clint.zsh @@ -0,0 +1,4 @@ +autoload -Uz promptinit vcs_info +zstyle ':vcs_info:*' enable git svn +promptinit +prompt clint diff --git a/extern/powerlevel10k b/extern/powerlevel10k new file mode 160000 index 0000000..8f798f9 --- /dev/null +++ b/extern/powerlevel10k @@ -0,0 +1 @@ +Subproject commit 8f798f986a02eb27c4ef25229976443fa2a66809 diff --git a/extern/zsh-autosuggestions b/extern/zsh-autosuggestions new file mode 160000 index 0000000..a411ef3 --- /dev/null +++ b/extern/zsh-autosuggestions @@ -0,0 +1 @@ +Subproject commit a411ef3e0992d4839f0732ebeb9823024afaaaa8 diff --git a/extern/zsh-syntax-highlighting b/extern/zsh-syntax-highlighting new file mode 160000 index 0000000..dffe304 --- /dev/null +++ b/extern/zsh-syntax-highlighting @@ -0,0 +1 @@ +Subproject commit dffe304567c86f06bf1be0fce200077504e79783 diff --git a/bindings.zsh b/input.zsh similarity index 98% rename from bindings.zsh rename to input.zsh index c6c286c..01cc910 100644 --- a/bindings.zsh +++ b/input.zsh @@ -1,7 +1,7 @@ # https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/key-bindings.zsh # https://wiki.archlinux.org/index.php/Zsh -bindkey -v +bindkey -v # vi mode for input typeset -g -A key key[Home]="${terminfo[khome]}" diff --git a/options.zsh b/options.zsh new file mode 100644 index 0000000..fab6b4f --- /dev/null +++ b/options.zsh @@ -0,0 +1,53 @@ +typeset -g ZLE_RPROMPT_INDENT=0 + +# Pager +typeset -g READNULLCMD=less +export LESS=-iRFXM +if autoload -U colors && colors; then + export LESS_TERMCAP_md=$'\e['"${color[bold]};${color[red]}"'m' + export LESS_TERMCAP_us=$'\e['"${color[bold]};${color[green]}"'m' + export LESS_TERMCAP_so=$'\e['"${color[bold]};${color[yellow]}"'m' + export LESS_TERMCAP_{me,se,ue,mb}=$'\e['"${color[none]}"'m' +fi + +# Completion +setopt auto_list # Automatically list on ambiguous completion +setopt auto_menu # Automatically use menu completion +setopt auto_param_slash # Automatically add slash to completion +setopt glob_complete # Don't automatically expand glob patterns +setopt no_list_beep # No annoying beeps on completion +setopt list_packed # Pack completion results +setopt list_types # File type in completions +setopt menu_complete # Automatically insert first match + +# Globbing +setopt glob # Enable globbing +setopt glob_star_short # Enable short ** and *** +setopt mark_dirs # Append slash when directories are matched by glob +setopt no_match # Error on no matches + +# History +typeset -g HISTSIZE=1000 +typeset -g SAVEHIST=1000 +setopt append_history # Append to history file +setopt extended_history # Duration and timestamp in history +setopt no_hist_beep # Don't beep for history searches +setopt hist_fcntl_lock # Lock history file with fcntl +setopt hist_ignore_all_dups # Ignore history duplicates +setopt hist_ignore_space # Don't add entries to history that have a space prefix +setopt hist_reduce_blanks # Reduce blanks in history +setopt inc_append_history_time # Append history post-execution +setopt share_history # Share history between sessions + +# Job control +setopt auto_continue # Automatically continue disowned jobs +setopt bg_nice # Automatically run jobs in big at lower priority +setopt no_check_jobs # Don't warn about jobs on exit +setopt notify # Show job status asap + +# Misc +setopt auto_cd # Automatically change directory without cd +setopt c_bases # Show values like C understands them +setopt interactive_comments # Allow comments in interactive shells +setopt path_dirs # Match binaries in subdirectories for path +setopt short_loops # Allow short loop versions diff --git a/powerlevel-config/segments/prompt_c_covid_19 b/p10k-segments/prompt_c_covid_19 similarity index 100% rename from powerlevel-config/segments/prompt_c_covid_19 rename to p10k-segments/prompt_c_covid_19 diff --git a/powerlevel-config/segments/prompt_c_docker_host b/p10k-segments/prompt_c_docker_host similarity index 100% rename from powerlevel-config/segments/prompt_c_docker_host rename to p10k-segments/prompt_c_docker_host diff --git a/powerlevel-config/segments/prompt_c_mpv b/p10k-segments/prompt_c_mpv similarity index 100% rename from powerlevel-config/segments/prompt_c_mpv rename to p10k-segments/prompt_c_mpv diff --git a/powerlevel-config/segments/prompt_c_mumble b/p10k-segments/prompt_c_mumble similarity index 100% rename from powerlevel-config/segments/prompt_c_mumble rename to p10k-segments/prompt_c_mumble diff --git a/powerlevel-config/segments/prompt_c_new_mail b/p10k-segments/prompt_c_new_mail similarity index 100% rename from powerlevel-config/segments/prompt_c_new_mail rename to p10k-segments/prompt_c_new_mail diff --git a/powerlevel-config/segments/prompt_c_newsboat b/p10k-segments/prompt_c_newsboat similarity index 100% rename from powerlevel-config/segments/prompt_c_newsboat rename to p10k-segments/prompt_c_newsboat diff --git a/powerlevel-config/segments/prompt_c_todo b/p10k-segments/prompt_c_todo similarity index 100% rename from powerlevel-config/segments/prompt_c_todo rename to p10k-segments/prompt_c_todo diff --git a/powerlevel-config/segments/prompt_c_weather b/p10k-segments/prompt_c_weather similarity index 100% rename from powerlevel-config/segments/prompt_c_weather rename to p10k-segments/prompt_c_weather diff --git a/p10k.zsh b/p10k.zsh new file mode 100644 index 0000000..6ea918b --- /dev/null +++ b/p10k.zsh @@ -0,0 +1,235 @@ +source "$EXTERN_PLUGINS/powerlevel10k/powerlevel10k.zsh-theme" + +# Prompt elements +typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( + os_icon + time + load + ram + disk_usage + battery + newline + + context + vi_mode + dir +) +typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( + c_new_mail + c_weather + c_covid_19 + c_mpv + newline + + c_todo + background_jobs + status + command_execution_time + vcs + vim_shell + root_indicator + ssh +) + +# General settings +typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet +typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always + +typeset -g POWERLEVEL9K_MODE=nerdfont-complete +typeset -g POWERLEVEL9K_ICON_PADDING=none + +typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true +typeset -g POWERLEVEL9K_USE_CACHE=true + +# Colors +typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=0 +typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND=3 + +typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=3 +typeset -g POWERLEVEL9K_CONTEXT_BACKGROUND=0 +typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1 + +typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=255 +typeset -g POWERLEVEL9K_DIR_FOREGROUND=254 + +typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76 +typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 + +typeset -g POWERLEVEL9K_VI_MODE_FOREGROUND=0 +typeset -g POWERLEVEL9K_VI_MODE_NORMAL_BACKGROUND=2 +typeset -g POWERLEVEL9K_VI_MODE_VISUAL_BACKGROUND=3 +typeset -g POWERLEVEL9K_VI_MODE_OVERWRITE_BACKGROUND=1 +typeset -g POWERLEVEL9K_VI_MODE_INSERT_BACKGROUND=4 + +typeset -g POWERLEVEL9K_VCS_{CLEAN,UNTRACKED}_BACKGROUND=2 +typeset -g POWERLEVEL9K_VCS_{MODIFIED,CONFLICTED}_BACKGROUND=3 +typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8 + +# Segment settings + +## Command time +typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3 +typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 +typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' + +## Context (user@host) +typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n@%m' +typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m' +typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m' + +## Directory +local anchor_files=( + .git + APKBUILD + PKGBUILD + Dockerfile + main.yml +) + +typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique +typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" +typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= + +typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=true +typeset -g POWERLEVEL9K_DIR_MAX_LENGTH='50%' +typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=true +typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true + +## Disk usage +typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90 +typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95 + +## Prompt character +typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + +## Separators +typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR='\uE0BD' +typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0BC' +typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0BA' +typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0' +typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2' +typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= +typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL= +typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= + +## Status +typeset -g POWERLEVEL9K_STATUS_OK{,_PIPE}=false +typeset -g POWERLEVEL9K_STATUS_ERROR{,_{SIGNAL,PIPE}}=true +typeset -g POWERLEVEL9K_STATUS_VERBOSE{,_SIGNAME}=true +typeset -g POWERLEVEL9K_STATUS_ERROR_{VISUAL,SIGNAL,PIPE}_IDENTIFIER_EXPANSION='' + +## Current time +typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false + +## Vi mode +typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING=N +typeset -g POWERLEVEL9K_VI_VISUAL_MODE_STRING=V +typeset -g POWERLEVEL9K_VI_OVERWRITE_MODE_STRING=O +typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING=I + +## VCS +typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 ' +typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?' + +function my_git_formatter() { + # Formatter for Git status. + # VCS_STATUS_* parameters are set by gitstatus plugin. See reference: + # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh. + emulate -L zsh + + if [[ -n $P9K_CONTENT ]]; then + typeset -g my_git_format=$P9K_CONTENT + return + fi + + # Styling for different parts of Git status. + local meta='%7F' # white foreground + local clean='%0F' # black foreground + local modified='%0F' # black foreground + local untracked='%0F' # black foreground + local conflicted='%1F' # red foreground + + local res + + if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then + local branch=${(V)VCS_STATUS_LOCAL_BRANCH} + # If local branch name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show local branch name in full without truncation, delete the next line. + (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line + res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}" + fi + + if [[ -n $VCS_STATUS_TAG + # Show tag only if not on a branch. + # Tip: To always show tag, delete the next line. + && -z $VCS_STATUS_LOCAL_BRANCH # <-- this line + ]]; then + local tag=${(V)VCS_STATUS_TAG} + # If tag name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show tag name in full without truncation, delete the next line. + (( $#tag > 32 )) && tag[13,-13]="…" # <-- this line + res+="${meta}#${clean}${tag//\%/%%}" + fi + + # Display the current Git commit if there is no branch and no tag. + # Tip: To always display the current Git commit, delete the next line. + [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line + res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}" + + # Show tracking branch name if it differs from local branch. + if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then + res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" + fi + + # Display "wip" if the latest commit's summary contains "wip" or "WIP". + if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then + res+=" ${modified}wip" + fi + + # ⇣42 if behind the remote. + (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}" + # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. + (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " + (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}" + # ⇠42 if behind the push remote. + (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}" + (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " + # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42. + (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}" + # *42 if have stashes. + (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}" + # 'merge' if the repo is in an unusual state. + [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}" + # ~42 if have merge conflicts. + (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}" + # +42 if have staged changes. + (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}" + # !42 if have unstaged changes. + (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}" + # ?42 if have untracked files. It's really a question mark, your font isn't broken. + # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. + # Remove the next line if you don't want to see untracked files at all. + (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" + # "─" if the number of unstaged files is unknown. This can happen due to + # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower + # than the number of files in the Git index, or due to bash.showDirtyState being set to false + # in the repository config. The number of staged and untracked files may also be unknown + # in this case. + (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─" + typeset -g my_git_format=$res +} +functions -M my_git_formatter 2>/dev/null + +typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1 +typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true +typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter()))+${my_git_format}}' +typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 +typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) + +# Load custom prompt segments from here +P10K_CUSTOM_PROMPTS_PATH="$ZDOTDIR/p10k-segments/" +fpath+=("$P10K_CUSTOM_PROMPTS_PATH") +P10K_CUSTOM_PROMPTS=("$P10K_CUSTOM_PROMPTS_PATH"/*) +autoload -Uz ${P10K_CUSTOM_PROMPTS##*${P10K_CUSTOM_PROMPTS##/}/} diff --git a/powerlevel-config/command.zsh b/powerlevel-config/command.zsh deleted file mode 100644 index ab08d7e..0000000 --- a/powerlevel-config/command.zsh +++ /dev/null @@ -1,5 +0,0 @@ -typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=0 -typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND=3 -typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3 -typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 -typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' diff --git a/powerlevel-config/context.zsh b/powerlevel-config/context.zsh deleted file mode 100644 index 4545242..0000000 --- a/powerlevel-config/context.zsh +++ /dev/null @@ -1,9 +0,0 @@ -typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1 -typeset -g POWERLEVEL9K_CONTEXT_ROOT_BACKGROUND=0 -typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=3 -typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_BACKGROUND=0 -typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=3 -typeset -g POWERLEVEL9K_CONTEXT_BACKGROUND=0 -typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n@%m' -typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m' -typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m' diff --git a/powerlevel-config/dir.zsh b/powerlevel-config/dir.zsh deleted file mode 100644 index b8caa53..0000000 --- a/powerlevel-config/dir.zsh +++ /dev/null @@ -1,18 +0,0 @@ -local anchor_files=( - .git - APKBUILD - PKGBUILD - Dockerfile - main.yml -) - -typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique -typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" -typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= - -typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=true -typeset -g POWERLEVEL9K_DIR_MAX_LENGTH='50%' -typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=true -typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true -typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=255 -typeset -g POWERLEVEL9K_DIR_FOREGROUND=254 diff --git a/powerlevel-config/disk.zsh b/powerlevel-config/disk.zsh deleted file mode 100644 index 50f2c1e..0000000 --- a/powerlevel-config/disk.zsh +++ /dev/null @@ -1,2 +0,0 @@ -typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90 -typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95 diff --git a/powerlevel-config/misc.zsh b/powerlevel-config/misc.zsh deleted file mode 100644 index 4722af8..0000000 --- a/powerlevel-config/misc.zsh +++ /dev/null @@ -1,6 +0,0 @@ -typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true -typeset -g POWERLEVEL9K_MODE=nerdfont-complete -typeset -g POWERLEVEL9K_ICON_PADDING=none -typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always -typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet -typeset -g POWERLEVEL9K_USE_CACHE=true diff --git a/powerlevel-config/prompt-char.zsh b/powerlevel-config/prompt-char.zsh deleted file mode 100644 index be84c3f..0000000 --- a/powerlevel-config/prompt-char.zsh +++ /dev/null @@ -1,3 +0,0 @@ -typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76 -typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 -typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' diff --git a/powerlevel-config/segments.zsh b/powerlevel-config/segments.zsh deleted file mode 100644 index edc6e57..0000000 --- a/powerlevel-config/segments.zsh +++ /dev/null @@ -1,2 +0,0 @@ -fpath+=("${ZDOTDIR}/powerlevel-config/segments") -autoload -Uz prompt_c_{covid_19,docker_host,mpv,new_mail,todo,weather,newsboat,mumble,sfeed,twitch,irc,apk} diff --git a/powerlevel-config/separators.zsh b/powerlevel-config/separators.zsh deleted file mode 100644 index 4c0a27d..0000000 --- a/powerlevel-config/separators.zsh +++ /dev/null @@ -1,9 +0,0 @@ -typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\uE0BD' -typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0BD' -typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0BC' -typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0BA' -typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0' -typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2' -typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='' -typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL='' -typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= diff --git a/powerlevel-config/status.zsh b/powerlevel-config/status.zsh deleted file mode 100644 index 194d930..0000000 --- a/powerlevel-config/status.zsh +++ /dev/null @@ -1,4 +0,0 @@ -typeset -g POWERLEVEL9K_STATUS_OK{,_PIPE}=false -typeset -g POWERLEVEL9K_STATUS_ERROR{,_{SIGNAL,PIPE}}=true -typeset -g POWERLEVEL9K_STATUS_VERBOSE{,_SIGNAME}=true -typeset -g POWERLEVEL9K_STATUS_ERROR_{VISUAL,SIGNAL,PIPE}_IDENTIFIER_EXPANSION='' diff --git a/powerlevel-config/time.zsh b/powerlevel-config/time.zsh deleted file mode 100644 index 658f7ed..0000000 --- a/powerlevel-config/time.zsh +++ /dev/null @@ -1 +0,0 @@ -typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false diff --git a/powerlevel-config/vcs.zsh b/powerlevel-config/vcs.zsh deleted file mode 100644 index 88b8e74..0000000 --- a/powerlevel-config/vcs.zsh +++ /dev/null @@ -1,82 +0,0 @@ -function my_git_formatter() { - emulate -L zsh - - if [[ -n $P9K_CONTENT ]]; then - # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from - # gitstatus plugin). VCS_STATUS_* parameters are not available in this case. - typeset -g my_git_format=$P9K_CONTENT - return - fi - - # Styling for different parts of Git status. - local meta='%7F' # white foreground - local clean='%0F' # black foreground - local modified='%0F' # black foreground - local untracked='%0F' # black foreground - local conflicted='%1F' # red foreground - - local res - local where # branch or tag - if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then - res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}" - where=${(V)VCS_STATUS_LOCAL_BRANCH} - elif [[ -n $VCS_STATUS_TAG ]]; then - res+="${meta}#" - where=${(V)VCS_STATUS_TAG} - fi - - # If local branch name or tag is at most 32 characters long, show it in full. - # Otherwise show the first 12 … the last 12. - # Tip: To always show local branch name in full without truncation, delete the next line. - (( $#where > 32 )) && where[13,-13]="…" - res+="${clean}${where//\%/%%}" # escape % - - # Display the current Git commit if there is no branch or tag. - # Tip: To always display the current Git commit, remove `[[ -z $where ]] &&` from the next line. - [[ -z $where ]] && res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}" - - # Show tracking branch name if it differs from local branch. - if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then - res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" # escape % - fi - - # ⇣42 if behind the remote. - (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}" - # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. - (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " - (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}" - # ⇠42 if behind the push remote. - (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}" - (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " - # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42. - (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}" - # *42 if have stashes. - (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}" - # 'merge' if the repo is in an unusual state. - [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}" - # ~42 if have merge conflicts. - (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}" - # +42 if have staged changes. - (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}" - # !42 if have unstaged changes. - (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}" - # ?42 if have untracked files. It's really a question mark, your font isn't broken. - # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. - # Remove the next line if you don't want to see untracked files at all. - (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" - # "─" if the number of unstaged files is unknown. This can happen due to - # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower - # than the number of files in the Git index, or due to bash.showDirtyState being set to false - # in the repository config. The number of staged and untracked files may also be unknown - # in this case. - (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─" - - typeset -g my_git_format=$res -} -functions -M my_git_formatter 2>/dev/null -typeset -g POWERLEVEL9K_VCS_STAGED_MAX_NUM=-1 -typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON=? -typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true -typeset -g POWERLEVEL9K_VCS_LOADING_TEXT= -typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter()))+${my_git_format}}' -typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 diff --git a/powerlevel-config/vi-mode.zsh b/powerlevel-config/vi-mode.zsh deleted file mode 100644 index 088386f..0000000 --- a/powerlevel-config/vi-mode.zsh +++ /dev/null @@ -1,9 +0,0 @@ -typeset -g POWERLEVEL9K_VI_MODE_FOREGROUND=0 -typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING=N -typeset -g POWERLEVEL9K_VI_MODE_NORMAL_BACKGROUND=2 -typeset -g POWERLEVEL9K_VI_VISUAL_MODE_STRING=V -typeset -g POWERLEVEL9K_VI_MODE_VISUAL_BACKGROUND=3 -typeset -g POWERLEVEL9K_VI_OVERWRITE_MODE_STRING=O -typeset -g POWERLEVEL9K_VI_MODE_OVERWRITE_BACKGROUND=1 -typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING=I -typeset -g POWERLEVEL9K_VI_MODE_INSERT_BACKGROUND=4 diff --git a/powerlevel10k b/powerlevel10k deleted file mode 160000 index 00232d1..0000000 --- a/powerlevel10k +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 00232d1b6de0931fd9394bc3f963afb88644447d diff --git a/preferences.zsh b/preferences.zsh deleted file mode 100644 index 6d12a6e..0000000 --- a/preferences.zsh +++ /dev/null @@ -1,51 +0,0 @@ -typeset -g HISTSIZE=1000 -typeset -g SAVEHIST=1000 -typeset -g ZLE_RPROMPT_INDENT=0 -# Pager and man stuff -typeset -g READNULLCMD=less -export LESS=-iRFXM -export LESS_TERMCAP_md=$'\e[01;31m' -export LESS_TERMCAP_me=$'\e[0m' -export LESS_TERMCAP_se=$'\e[0m' -export LESS_TERMCAP_so=$'\e[01;33m' -export LESS_TERMCAP_ue=$'\e[0m' -export LESS_TERMCAP_us=$'\e[01;32m' - -setopt histappend autocd auto_param_slash c_bases extendedglob nomatch notify hist_ignore_all_dups hist_ignore_space share_history nobeep listpacked markdirs extendedhistory histfcntllock - -if [[ -r "${ZDOTDIR}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" ]]; then - typeset -g ZSH_HIGHLIGHT_HIGHLIGHTERS=( - main - brackets - pattern - cursor - ) - source ${ZDOTDIR}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh -fi - -if [[ -r "${ZDOTDIR}/zsh-autosuggestions/zsh-autosuggestions.zsh" ]]; then - typeset -g ZSH_AUTOSUGGEST_STRATEGY=(completion history) - typeset -g ZSH_AUTOSUGGEST_USE_ASYNC=true - source ${ZDOTDIR}/zsh-autosuggestions/zsh-autosuggestions.zsh -fi - -zstyle -s ':custom:preferences' prompt _cur_prompt -if [[ $_cur_prompt == "p9k" ]] && [[ -r "${ZDOTDIR}/powerlevel10k/powerlevel10k.zsh-theme" ]]; then - source ${ZDOTDIR}/powerlevel-config/command.zsh - source ${ZDOTDIR}/powerlevel-config/context.zsh - source ${ZDOTDIR}/powerlevel-config/dir.zsh - source ${ZDOTDIR}/powerlevel-config/disk.zsh - source ${ZDOTDIR}/powerlevel-config/misc.zsh - source ${ZDOTDIR}/powerlevel-config/prompt-char.zsh - source ${ZDOTDIR}/powerlevel-config/separators.zsh - source ${ZDOTDIR}/powerlevel-config/segments.zsh - source ${ZDOTDIR}/powerlevel-config/status.zsh - source ${ZDOTDIR}/powerlevel-config/time.zsh - source ${ZDOTDIR}/powerlevel-config/vcs.zsh - source ${ZDOTDIR}/powerlevel-config/vi-mode.zsh - source ${ZDOTDIR}/powerlevel10k/powerlevel10k.zsh-theme -else - autoload -Uz promptinit - promptinit - prompt clint -fi diff --git a/syntax.zsh b/syntax.zsh new file mode 100644 index 0000000..8743e65 --- /dev/null +++ b/syntax.zsh @@ -0,0 +1,8 @@ +source "$EXTERN_PLUGINS/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" + +typeset -g ZSH_HIGHLIGHT_HIGHLIGHTERS=( + main + brackets + pattern + cursor +) diff --git a/zsh-autosuggestions b/zsh-autosuggestions deleted file mode 160000 index ae315de..0000000 --- a/zsh-autosuggestions +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ae315ded4dba10685dbbafbfa2ff3c1aefeb490d diff --git a/zsh-syntax-highlighting b/zsh-syntax-highlighting deleted file mode 160000 index 5eb4948..0000000 --- a/zsh-syntax-highlighting +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5eb494852ebb99cf5c2c2bffee6b74e6f1bf38d0