mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-02-06 02:51:32 +01:00
Merge branch 'ohmyzsh:master' into conda
This commit is contained in:
commit
cb471f56ef
13 changed files with 102 additions and 46 deletions
4
.github/workflows/main.yml
vendored
4
.github/workflows/main.yml
vendored
|
|
@ -10,6 +10,10 @@ on:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
tests:
|
tests:
|
||||||
name: Run tests
|
name: Run tests
|
||||||
|
|
|
||||||
4
.github/workflows/project.yml
vendored
4
.github/workflows/project.yml
vendored
|
|
@ -5,6 +5,10 @@ on:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
types: [opened, synchronize]
|
types: [opened, synchronize]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
add-to-project:
|
add-to-project:
|
||||||
name: Add to project
|
name: Add to project
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
# Impacted versions go from v5.0.3 to v5.8 (v5.8.1 is the first patched version)
|
# Don't skip this file until a Zsh release does the necessary quoting.
|
||||||
autoload -Uz is-at-least
|
# This is because even though 5.8.1 undid recursive prompt_subst inside
|
||||||
if is-at-least 5.8.1 || ! is-at-least 5.0.3; then
|
# prompt sequences, % characters in relevant fields will still be rendered
|
||||||
return
|
# incorrectly in vcs_info, on all Zsh releases up to writing this.
|
||||||
fi
|
#
|
||||||
|
# There is no release yet that does this right, since it requires changing
|
||||||
|
# how what vcs_info hooks expect to receive. Even so, I'd rather be correct
|
||||||
|
# and break custom vcs_info hooks than have a broken prompt.
|
||||||
|
|
||||||
# Quote necessary $hook_com[<field>] items just before they are used
|
# Quote necessary $hook_com[<field>] items just before they are used
|
||||||
# in the line "VCS_INFO_hook 'post-backend'" of the VCS_INFO_formats
|
# in the line "VCS_INFO_hook 'post-backend'" of the VCS_INFO_formats
|
||||||
|
|
@ -35,7 +38,7 @@ fi
|
||||||
# due to malicious input as a consequence of CVE-2021-45444, which affects
|
# due to malicious input as a consequence of CVE-2021-45444, which affects
|
||||||
# zsh versions from 5.0.3 to 5.8.
|
# zsh versions from 5.0.3 to 5.8.
|
||||||
#
|
#
|
||||||
autoload -Uz +X regexp-replace VCS_INFO_formats
|
autoload -Uz +X regexp-replace VCS_INFO_formats 2>/dev/null || return
|
||||||
|
|
||||||
# We use $tmp here because it's already a local variable in VCS_INFO_formats
|
# We use $tmp here because it's already a local variable in VCS_INFO_formats
|
||||||
typeset PATCH='for tmp (base base-name branch misc revision subdir) hook_com[$tmp]="${hook_com[$tmp]//\%/%%}"'
|
typeset PATCH='for tmp (base base-name branch misc revision subdir) hook_com[$tmp]="${hook_com[$tmp]//\%/%%}"'
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,3 @@
|
||||||
# copydir plugin
|
# copydir plugin
|
||||||
|
|
||||||
Copies the path of your current folder to the system clipboard.
|
This plugin is deprecated. Use the [`copypath` plugin](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/copypath) instead.
|
||||||
|
|
||||||
To use, add `copydir` to your plugins array:
|
|
||||||
```
|
|
||||||
plugins=(... copydir)
|
|
||||||
```
|
|
||||||
|
|
||||||
Then use the command `copydir` to copy the $PWD.
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
# Copies the pathname of the current directory to the system or X Windows clipboard
|
echo ${(%):-'%F{yellow}The `%Bcopydir%b` plugin is deprecated. Use the `%Bcopypath%b` plugin instead.%f'}
|
||||||
|
source "$ZSH/plugins/copypath/copypath.plugin.zsh"
|
||||||
|
|
||||||
|
# TODO: 2022-02-22: Remove deprecated copydir function.
|
||||||
function copydir {
|
function copydir {
|
||||||
emulate -L zsh
|
copypath
|
||||||
print -n $PWD | clipcopy
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
15
plugins/copypath/README.md
Normal file
15
plugins/copypath/README.md
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
# copypath plugin
|
||||||
|
|
||||||
|
Copies the path of given directory or file to the system clipboard.
|
||||||
|
|
||||||
|
To use it, add `copypath` to the plugins array in your zshrc file:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
plugins=(... copypath)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
- `copypath`: copies the absolute path of the current directory.
|
||||||
|
|
||||||
|
- `copypath <file_or_directory>`: copies the absolute path of the given file.
|
||||||
15
plugins/copypath/copypath.plugin.zsh
Normal file
15
plugins/copypath/copypath.plugin.zsh
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Copies the path of given directory or file to the system or X Windows clipboard.
|
||||||
|
# Copy current directory if no parameter.
|
||||||
|
function copypath {
|
||||||
|
# If no argument passed, use current directory
|
||||||
|
local file="${1:-.}"
|
||||||
|
|
||||||
|
# If argument is not an absolute path, prepend $PWD
|
||||||
|
[[ $file = /* ]] || file="$PWD/$file"
|
||||||
|
|
||||||
|
# Copy the absolute path without resolving symlinks
|
||||||
|
# If clipcopy fails, exit the function with an error
|
||||||
|
print -n "${file:a}" | clipcopy || return 1
|
||||||
|
|
||||||
|
echo ${(%):-"%B${file:a}%b copied to clipboard."}
|
||||||
|
}
|
||||||
|
|
@ -52,7 +52,10 @@ source_env() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# test .env syntax
|
# test .env syntax
|
||||||
zsh -fn $ZSH_DOTENV_FILE || echo "dotenv: error when sourcing '$ZSH_DOTENV_FILE' file" >&2
|
zsh -fn $ZSH_DOTENV_FILE || {
|
||||||
|
echo "dotenv: error when sourcing '$ZSH_DOTENV_FILE' file" >&2
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
setopt localoptions allexport
|
setopt localoptions allexport
|
||||||
source $ZSH_DOTENV_FILE
|
source $ZSH_DOTENV_FILE
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,9 @@ command mkdir -p "$ZSH_CACHE_DIR/completions"
|
||||||
# If the completion file does not exist, generate it and then source it
|
# If the completion file does not exist, generate it and then source it
|
||||||
# Otherwise, source it and regenerate in the background
|
# Otherwise, source it and regenerate in the background
|
||||||
if [[ ! -f "$ZSH_CACHE_DIR/completions/_helm" ]]; then
|
if [[ ! -f "$ZSH_CACHE_DIR/completions/_helm" ]]; then
|
||||||
helm completion zsh >| "$ZSH_CACHE_DIR/completions/_helm"
|
helm completion zsh | tee "$ZSH_CACHE_DIR/completions/_helm" >/dev/null
|
||||||
source "$ZSH_CACHE_DIR/completions/_helm"
|
source "$ZSH_CACHE_DIR/completions/_helm"
|
||||||
else
|
else
|
||||||
source "$ZSH_CACHE_DIR/completions/_helm"
|
source "$ZSH_CACHE_DIR/completions/_helm"
|
||||||
helm completion zsh >| "$ZSH_CACHE_DIR/completions/_helm" &|
|
helm completion zsh | tee "$ZSH_CACHE_DIR/completions/_helm" >/dev/null &|
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,11 @@ if (( $+commands[kubectl] )); then
|
||||||
# If the completion file does not exist, generate it and then source it
|
# If the completion file does not exist, generate it and then source it
|
||||||
# Otherwise, source it and regenerate in the background
|
# Otherwise, source it and regenerate in the background
|
||||||
if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then
|
if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then
|
||||||
kubectl completion zsh >| "$ZSH_CACHE_DIR/completions/_kubectl"
|
kubectl completion zsh | tee "$ZSH_CACHE_DIR/completions/_kubectl" >/dev/null
|
||||||
source "$ZSH_CACHE_DIR/completions/_kubectl"
|
source "$ZSH_CACHE_DIR/completions/_kubectl"
|
||||||
else
|
else
|
||||||
source "$ZSH_CACHE_DIR/completions/_kubectl"
|
source "$ZSH_CACHE_DIR/completions/_kubectl"
|
||||||
kubectl completion zsh >| "$ZSH_CACHE_DIR/completions/_kubectl" &|
|
kubectl completion zsh | tee "$ZSH_CACHE_DIR/completions/_kubectl" >/dev/null &|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,23 +35,17 @@ local reset="%{$reset_color%}"
|
||||||
local -a color_array
|
local -a color_array
|
||||||
color_array=($green $red $cyan $yellow $blue $magenta $white)
|
color_array=($green $red $cyan $yellow $blue $magenta $white)
|
||||||
|
|
||||||
local username_normal_color=$white
|
local username_color=$white
|
||||||
local username_root_color=$red
|
local hostname_color=$color_array[$[((#HOST))%7+1]] # choose hostname color based on first character
|
||||||
local hostname_root_color=$red
|
|
||||||
|
|
||||||
# calculating hostname color with hostname characters
|
|
||||||
for i in `hostname`; local hostname_normal_color=$color_array[$[((#i))%7+1]]
|
|
||||||
local -a hostname_color
|
|
||||||
hostname_color=%(!.$hostname_root_color.$hostname_normal_color)
|
|
||||||
|
|
||||||
local current_dir_color=$blue
|
local current_dir_color=$blue
|
||||||
local username_command="%n"
|
|
||||||
local hostname_command="%m"
|
local username="%n"
|
||||||
|
local hostname="%m"
|
||||||
local current_dir="%~"
|
local current_dir="%~"
|
||||||
|
|
||||||
local username_output="%(!..$username_normal_color$username_command$reset@)"
|
local username_output="%(!..${username_color}${username}${reset}@)"
|
||||||
local hostname_output="$hostname_color$hostname_command$reset"
|
local hostname_output="${hostname_color}${hostname}${reset}"
|
||||||
local current_dir_output="$current_dir_color$current_dir$reset"
|
local current_dir_output="${current_dir_color}${current_dir}${reset}"
|
||||||
local jobs_bg="${red}fg: %j$reset"
|
local jobs_bg="${red}fg: %j$reset"
|
||||||
local last_command_output="%(?.%(!.$red.$green).$yellow)"
|
local last_command_output="%(?.%(!.$red.$green).$yellow)"
|
||||||
|
|
||||||
|
|
@ -68,8 +62,18 @@ ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE=">"
|
||||||
ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE="<"
|
ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE="<"
|
||||||
ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE="$red<>"
|
ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE="$red<>"
|
||||||
|
|
||||||
PROMPT='$username_output$hostname_output:$current_dir_output%1(j. [$jobs_bg].)'
|
function michelebologna_git_prompt {
|
||||||
GIT_PROMPT='$(out=$(git_prompt_info)$(git_prompt_status)$(git_remote_status);if [[ -n $out ]]; then printf %s " $white($green$out$white)$reset";fi)'
|
local out=$(git_prompt_info)$(git_prompt_status)$(git_remote_status)
|
||||||
PROMPT+="$GIT_PROMPT"
|
[[ -n $out ]] || return
|
||||||
|
printf " %s(%s%s%s)%s" \
|
||||||
|
"%{$fg_bold[white]%}" \
|
||||||
|
"%{$fg_bold[green]%}" \
|
||||||
|
"$out" \
|
||||||
|
"%{$fg_bold[white]%}" \
|
||||||
|
"%{$reset_color%}"
|
||||||
|
}
|
||||||
|
|
||||||
|
PROMPT="$username_output$hostname_output:$current_dir_output%1(j. [$jobs_bg].)"
|
||||||
|
PROMPT+='$(michelebologna_git_prompt)'
|
||||||
PROMPT+=" $last_command_output%#$reset "
|
PROMPT+=" $last_command_output%#$reset "
|
||||||
RPROMPT=''
|
RPROMPT=''
|
||||||
|
|
|
||||||
|
|
@ -65,18 +65,27 @@ function is_update_available() {
|
||||||
local remote_head
|
local remote_head
|
||||||
remote_head=$(
|
remote_head=$(
|
||||||
if (( ${+commands[curl]} )); then
|
if (( ${+commands[curl]} )); then
|
||||||
curl -fsSL -H 'Accept: application/vnd.github.v3.sha' $api_url 2>/dev/null
|
curl -m 2 -fsSL -H 'Accept: application/vnd.github.v3.sha' $api_url 2>/dev/null
|
||||||
elif (( ${+commands[wget]} )); then
|
elif (( ${+commands[wget]} )); then
|
||||||
wget -O- --header='Accept: application/vnd.github.v3.sha' $api_url 2>/dev/null
|
wget -T 2 -O- --header='Accept: application/vnd.github.v3.sha' $api_url 2>/dev/null
|
||||||
elif (( ${+commands[fetch]} )); then
|
elif (( ${+commands[fetch]} )); then
|
||||||
HTTP_ACCEPT='Accept: application/vnd.github.v3.sha' fetch -o - $api_url 2>/dev/null
|
HTTP_ACCEPT='Accept: application/vnd.github.v3.sha' fetch -T 2 -o - $api_url 2>/dev/null
|
||||||
else
|
else
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
) || return 1
|
) || return 1
|
||||||
|
|
||||||
# Compare local and remote HEADs
|
# Compare local and remote HEADs (if they're equal there are no updates)
|
||||||
[[ "$local_head" != "$remote_head" ]]
|
[[ "$local_head" != "$remote_head" ]] || return 1
|
||||||
|
|
||||||
|
# If local and remote HEADs don't match, check if there's a common ancestor
|
||||||
|
# If the merge-base call fails, $remote_head might not be downloaded so assume there are updates
|
||||||
|
local base
|
||||||
|
base=$(cd -q "$ZSH"; git merge-base $local_head $remote_head 2>/dev/null) || return 0
|
||||||
|
|
||||||
|
# If the common ancestor ($base) is not $remote_head,
|
||||||
|
# the local HEAD is older than the remote HEAD
|
||||||
|
[[ $base != $remote_head ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
function update_last_updated_file() {
|
function update_last_updated_file() {
|
||||||
|
|
|
||||||
|
|
@ -42,13 +42,17 @@ set -e
|
||||||
# $USER is defined by login(1) which is not always executed (e.g. containers)
|
# $USER is defined by login(1) which is not always executed (e.g. containers)
|
||||||
# POSIX: https://pubs.opengroup.org/onlinepubs/009695299/utilities/id.html
|
# POSIX: https://pubs.opengroup.org/onlinepubs/009695299/utilities/id.html
|
||||||
USER=${USER:-$(id -u -n)}
|
USER=${USER:-$(id -u -n)}
|
||||||
|
# $HOME is defined at the time of login, but it could be unset. If it is unset,
|
||||||
|
# a tilde by itself (~) will not be expanded to the current user's home directory.
|
||||||
|
# POSIX: https://pubs.opengroup.org/onlinepubs/009696899/basedefs/xbd_chap08.html#tag_08_03
|
||||||
|
HOME="${HOME:-$(getent passwd $USER | cut -d: -f6)}"
|
||||||
|
|
||||||
|
|
||||||
# Track if $ZSH was provided
|
# Track if $ZSH was provided
|
||||||
custom_zsh=${ZSH:+yes}
|
custom_zsh=${ZSH:+yes}
|
||||||
|
|
||||||
# Default settings
|
# Default settings
|
||||||
ZSH=${ZSH:-~/.oh-my-zsh}
|
ZSH="${ZSH:-$HOME/.oh-my-zsh}"
|
||||||
REPO=${REPO:-ohmyzsh/ohmyzsh}
|
REPO=${REPO:-ohmyzsh/ohmyzsh}
|
||||||
REMOTE=${REMOTE:-https://github.com/${REPO}.git}
|
REMOTE=${REMOTE:-https://github.com/${REPO}.git}
|
||||||
BRANCH=${BRANCH:-master}
|
BRANCH=${BRANCH:-master}
|
||||||
|
|
@ -268,7 +272,7 @@ setup_ohmyzsh() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Manual clone with git config options to support git < v1.7.2
|
# Manual clone with git config options to support git < v1.7.2
|
||||||
git init "$ZSH" && cd "$ZSH" \
|
git init --quiet "$ZSH" && cd "$ZSH" \
|
||||||
&& git config core.eol lf \
|
&& git config core.eol lf \
|
||||||
&& git config core.autocrlf false \
|
&& git config core.autocrlf false \
|
||||||
&& git config fsck.zeroPaddedFilemode ignore \
|
&& git config fsck.zeroPaddedFilemode ignore \
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue