summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/completion.zsh4
-rw-r--r--lib/correction.zsh5
-rw-r--r--lib/directories.zsh8
-rw-r--r--lib/functions.zsh9
-rw-r--r--lib/misc.zsh8
-rw-r--r--lib/prompt_info_functions.zsh1
-rw-r--r--lib/theme-and-appearance.zsh122
-rw-r--r--lib/vcs_info.zsh2
8 files changed, 96 insertions, 63 deletions
diff --git a/lib/completion.zsh b/lib/completion.zsh
index 2c5695487..63379b53f 100644
--- a/lib/completion.zsh
+++ b/lib/completion.zsh
@@ -18,9 +18,9 @@ if [[ "$CASE_SENSITIVE" = true ]]; then
zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*'
else
if [[ "$HYPHEN_INSENSITIVE" = true ]]; then
- zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|=*' 'l:|=* r:|=*'
+ zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]-_}={[:upper:][:lower:]_-}' 'r:|=*' 'l:|=* r:|=*'
else
- zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
+ zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|=*' 'l:|=* r:|=*'
fi
fi
unset CASE_SENSITIVE HYPHEN_INSENSITIVE
diff --git a/lib/correction.zsh b/lib/correction.zsh
index 4259d3418..ba9664fcb 100644
--- a/lib/correction.zsh
+++ b/lib/correction.zsh
@@ -1,13 +1,8 @@
if [[ "$ENABLE_CORRECTION" == "true" ]]; then
alias cp='nocorrect cp'
- alias ebuild='nocorrect ebuild'
- alias gist='nocorrect gist'
- alias heroku='nocorrect heroku'
- alias hpodder='nocorrect hpodder'
alias man='nocorrect man'
alias mkdir='nocorrect mkdir'
alias mv='nocorrect mv'
- alias mysql='nocorrect mysql'
alias sudo='nocorrect sudo'
alias su='nocorrect su'
diff --git a/lib/directories.zsh b/lib/directories.zsh
index c62f56468..13b680c19 100644
--- a/lib/directories.zsh
+++ b/lib/directories.zsh
@@ -1,8 +1,16 @@
# Changing/making/removing directory
+setopt auto_cd
setopt auto_pushd
setopt pushd_ignore_dups
setopt pushdminus
+# add (uncommented):
+# zstyle ':omz:directories' aliases no
+# to your `zshrc` before loading `oh-my-zsh.sh`
+# to disable the following aliases and functions
+
+zstyle -T ':omz:directories' aliases || return 0
+
alias -g ...='../..'
alias -g ....='../../..'
alias -g .....='../../../..'
diff --git a/lib/functions.zsh b/lib/functions.zsh
index dfcc4d961..1d85ea38a 100644
--- a/lib/functions.zsh
+++ b/lib/functions.zsh
@@ -30,6 +30,13 @@ function open_command() {
;;
esac
+ # If a URL is passed, $BROWSER might be set to a local browser within SSH.
+ # See https://github.com/ohmyzsh/ohmyzsh/issues/11098
+ if [[ -n "$BROWSER" && "$1" = (http|https)://* ]]; then
+ "$BROWSER" "$@"
+ return
+ fi
+
${=open_cmd} "$@" &>/dev/null
}
@@ -56,7 +63,7 @@ function takegit() {
}
function take() {
- if [[ $1 =~ ^(https?|ftp).*\.tar\.(gz|bz2|xz)$ ]]; then
+ if [[ $1 =~ ^(https?|ftp).*\.(tar\.(gz|bz2|xz)|tgz)$ ]]; then
takeurl "$1"
elif [[ $1 =~ ^([A-Za-z0-9]\+@|https?|git|ssh|ftps?|rsync).*\.git/?$ ]]; then
takegit "$1"
diff --git a/lib/misc.zsh b/lib/misc.zsh
index 1f637083a..132f33551 100644
--- a/lib/misc.zsh
+++ b/lib/misc.zsh
@@ -15,8 +15,9 @@ if [[ $DISABLE_MAGIC_FUNCTIONS != true ]]; then
done
fi
-## jobs
-setopt long_list_jobs
+setopt multios # enable redirect to multiple streams: echo >file1 >file2
+setopt long_list_jobs # show long list format job notifications
+setopt interactivecomments # recognize comments
env_default 'PAGER' 'less'
env_default 'LESS' '-R'
@@ -30,6 +31,3 @@ if (( $+commands[ack-grep] )); then
elif (( $+commands[ack] )); then
alias afind='ack -il'
fi
-
-# recognize comments
-setopt interactivecomments
diff --git a/lib/prompt_info_functions.zsh b/lib/prompt_info_functions.zsh
index e5535848b..3dc9b6d10 100644
--- a/lib/prompt_info_functions.zsh
+++ b/lib/prompt_info_functions.zsh
@@ -18,6 +18,7 @@ function chruby_prompt_info \
vi_mode_prompt_info \
virtualenv_prompt_info \
jenv_prompt_info \
+ azure_prompt_info \
tf_prompt_info \
{
return 1
diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh
index 00947f72d..d8859b04c 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -1,59 +1,83 @@
-# ls colors
+# Sets color variable such as $fg, $bg, $color and $reset_color
autoload -U colors && colors
-# Enable ls colors
-export LSCOLORS="Gxfxcxdxbxegedabagacad"
-
-# TODO organise this chaotic logic
+# Expand variables and commands in PROMPT variables
+setopt prompt_subst
-if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
- # Find the option for using colors in ls, depending on the version
- if [[ "$OSTYPE" == netbsd* ]]; then
- # On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors);
- # otherwise, leave ls as is, because NetBSD's ls doesn't support -G
- gls --color -d . &>/dev/null && alias ls='gls --color=tty'
- elif [[ "$OSTYPE" == openbsd* ]]; then
- # On OpenBSD, "gls" (ls from GNU coreutils) and "colorls" (ls from base,
- # with color and multibyte support) are available from ports. "colorls"
- # will be installed on purpose and can't be pulled in by installing
- # coreutils, so prefer it to "gls".
- gls --color -d . &>/dev/null && alias ls='gls --color=tty'
- colorls -G -d . &>/dev/null && alias ls='colorls -G'
- elif [[ "$OSTYPE" == (darwin|freebsd)* ]]; then
- # this is a good alias, it works by default just using $LSCOLORS
- ls -G . &>/dev/null && alias ls='ls -G'
-
- # only use coreutils ls if there is a dircolors customization present ($LS_COLORS or .dircolors file)
- # otherwise, gls will use the default color scheme which is ugly af
- [[ -n "$LS_COLORS" || -f "$HOME/.dircolors" ]] && gls --color -d . &>/dev/null && alias ls='gls --color=tty'
- else
- # For GNU ls, we use the default ls color theme. They can later be overwritten by themes.
- if [[ -z "$LS_COLORS" ]]; then
- (( $+commands[dircolors] )) && eval "$(dircolors -b)"
- fi
+# Prompt function theming defaults
+ZSH_THEME_GIT_PROMPT_PREFIX="git:(" # Beginning of the git prompt, before the branch name
+ZSH_THEME_GIT_PROMPT_SUFFIX=")" # End of the git prompt
+ZSH_THEME_GIT_PROMPT_DIRTY="*" # Text to display if the branch is dirty
+ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is clean
+ZSH_THEME_RUBY_PROMPT_PREFIX="("
+ZSH_THEME_RUBY_PROMPT_SUFFIX=")"
- ls --color -d . &>/dev/null && alias ls='ls --color=tty' || { ls -G . &>/dev/null && alias ls='ls -G' }
- # Take advantage of $LS_COLORS for completion as well.
- zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
- fi
+# Use diff --color if available
+if command diff --color /dev/null{,} &>/dev/null; then
+ function diff {
+ command diff --color "$@"
+ }
fi
-# enable diff color if possible.
-if command diff --color /dev/null /dev/null &>/dev/null; then
- alias diff='diff --color'
-fi
-setopt auto_cd
-setopt multios
-setopt prompt_subst
+# Don't set ls coloring if disabled
+[[ "$DISABLE_LS_COLORS" != true ]] || return 0
-[[ -n "$WINDOW" ]] && SCREEN_NO="%B$WINDOW%b " || SCREEN_NO=""
+function test-ls-args {
+ local cmd="$1" # ls, gls, colorls, ...
+ local args="${@[2,-1]}" # arguments except the first one
+ command "$cmd" "$args" /dev/null &>/dev/null
+}
-# git theming default: Variables for theming the git info prompt
-ZSH_THEME_GIT_PROMPT_PREFIX="git:(" # Prefix at the very beginning of the prompt, before the branch name
-ZSH_THEME_GIT_PROMPT_SUFFIX=")" # At the very end of the prompt
-ZSH_THEME_GIT_PROMPT_DIRTY="*" # Text to display if the branch is dirty
-ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is clean
-ZSH_THEME_RUBY_PROMPT_PREFIX="("
-ZSH_THEME_RUBY_PROMPT_SUFFIX=")"
+# Find the option for using colors in ls, depending on the version
+case "$OSTYPE" in
+ netbsd*)
+ # On NetBSD, test if `gls` (GNU ls) is installed (this one supports colors);
+ # otherwise, leave ls as is, because NetBSD's ls doesn't support -G
+ test-ls-args gls --color && alias ls='gls --color=tty'
+ ;;
+ openbsd*)
+ # On OpenBSD, `gls` (ls from GNU coreutils) and `colorls` (ls from base,
+ # with color and multibyte support) are available from ports.
+ # `colorls` will be installed on purpose and can't be pulled in by installing
+ # coreutils (which might be installed for ), so prefer it to `gls`.
+ test-ls-args gls --color && alias ls='gls --color=tty'
+ test-ls-args colorls -G && alias ls='colorls -G'
+ ;;
+ (darwin|freebsd)*)
+ # This alias works by default just using $LSCOLORS
+ test-ls-args ls -G && alias ls='ls -G'
+ # Only use GNU ls if installed and there are user defaults for $LS_COLORS,
+ # as the default coloring scheme is not very pretty
+ [[ -n "$LS_COLORS" || -f "$HOME/.dircolors" ]] \
+ && test-ls-args gls --color \
+ && alias ls='gls --color=tty'
+ ;;
+ *)
+ if test-ls-args ls --color; then
+ alias ls='ls --color=tty'
+ elif test-ls-args ls -G; then
+ alias ls='ls -G'
+ fi
+ ;;
+esac
+
+unfunction test-ls-args
+
+
+# Default coloring for BSD-based ls
+export LSCOLORS="Gxfxcxdxbxegedabagacad"
+
+# Default coloring for GNU-based ls
+if [[ -z "$LS_COLORS" ]]; then
+ # Define LS_COLORS via dircolors if available. Otherwise, set a default
+ # equivalent to LSCOLORS (generated via https://geoff.greer.fm/lscolors)
+ if (( $+commands[dircolors] )); then
+ [[ -f "$HOME/.dircolors" ]] \
+ && source <(dircolors -b "$HOME/.dircolors") \
+ || source <(dircolors -b)
+ else
+ export LS_COLORS="di=1;36:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43"
+ fi
+fi
diff --git a/lib/vcs_info.zsh b/lib/vcs_info.zsh
index e60938c14..be6d32ee9 100644
--- a/lib/vcs_info.zsh
+++ b/lib/vcs_info.zsh
@@ -38,7 +38,7 @@
# due to malicious input as a consequence of CVE-2021-45444, which affects
# zsh versions from 5.0.3 to 5.8.
#
-autoload -Uz +X regexp-replace VCS_INFO_formats 2>/dev/null || return
+autoload -Uz +X regexp-replace VCS_INFO_formats 2>/dev/null || return 0
# 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]//\%/%%}"'