From e9e8c6b54d594109041bdd4bc3902b40f9ae8849 Mon Sep 17 00:00:00 2001 From: Steven Pitts <25968054+stevenpitts@users.noreply.github.com> Date: Wed, 25 May 2022 10:32:33 -0400 Subject: [PATCH 001/253] feat(git): add `gupom` and `gupomi` aliases (#10261) Co-authored-by: Steven Pitts --- plugins/git/README.md | 2 ++ plugins/git/git.plugin.zsh | 2 ++ 2 files changed, 4 insertions(+) diff --git a/plugins/git/README.md b/plugins/git/README.md index b9af3488f..b9a0309f3 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -181,6 +181,8 @@ plugins=(... git) | gupv | git pull --rebase -v | | gupa | git pull --rebase --autostash | | gupav | git pull --rebase --autostash -v | +| gupom | git pull --rebase origin $(git_main_branch) | +| gupomi | git pull --rebase=interactive origin $(git_main_branch) | | glum | git pull upstream $(git_main_branch) | | gwch | git whatchanged -p --abbrev-commit --pretty=medium | | gwip | git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]" | diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 8f7e623ec..be6adc7ce 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -307,6 +307,8 @@ alias gup='git pull --rebase' alias gupv='git pull --rebase -v' alias gupa='git pull --rebase --autostash' alias gupav='git pull --rebase --autostash -v' +alias gupom='git pull --rebase origin $(git_main_branch)' +alias gupomi='git pull --rebase=interactive origin $(git_main_branch)' alias glum='git pull upstream $(git_main_branch)' alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' From 18e7e5d0339f3491a6c0324e2443415309b56173 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Wed, 1 Jun 2022 09:11:49 +0200 Subject: [PATCH 002/253] fix(updater): use `curl --connect-timeout` in new update check --- tools/check_for_upgrade.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh index 149500aa9..009c273fa 100644 --- a/tools/check_for_upgrade.sh +++ b/tools/check_for_upgrade.sh @@ -65,7 +65,7 @@ function is_update_available() { local remote_head remote_head=$( if (( ${+commands[curl]} )); then - curl -m 2 -fsSL -H 'Accept: application/vnd.github.v3.sha' $api_url 2>/dev/null + curl --conect-timeout 2 -fsSL -H 'Accept: application/vnd.github.v3.sha' $api_url 2>/dev/null elif (( ${+commands[wget]} )); then wget -T 2 -O- --header='Accept: application/vnd.github.v3.sha' $api_url 2>/dev/null elif (( ${+commands[fetch]} )); then From 6622210d7d4afe859f11c5d50c177bd5e500f2c6 Mon Sep 17 00:00:00 2001 From: FaeTheWolf Date: Sun, 5 Jun 2022 09:59:44 -0400 Subject: [PATCH 003/253] fix(oc): fix completion for oc 4.9 and 4.10 (#10973) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #10939 Co-authored-by: Jorge Francisco Varela Gutiérrez --- plugins/oc/oc.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/oc/oc.plugin.zsh b/plugins/oc/oc.plugin.zsh index b968c4bd4..f0e2fc3bc 100644 --- a/plugins/oc/oc.plugin.zsh +++ b/plugins/oc/oc.plugin.zsh @@ -4,4 +4,5 @@ if [ $commands[oc] ]; then source <(oc completion zsh) + compdef _oc oc fi From d41ca84af1271e8bfbe26f581cebe3b86521d0db Mon Sep 17 00:00:00 2001 From: Maxim Derbenev Date: Mon, 6 Jun 2022 18:37:42 +0500 Subject: [PATCH 004/253] fix(docker): rename `dip` alias to `dipu` to avoid naming conflict (#10957) --- plugins/docker/README.md | 2 +- plugins/docker/docker.plugin.zsh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/docker/README.md b/plugins/docker/README.md index 2b721c770..606690f14 100644 --- a/plugins/docker/README.md +++ b/plugins/docker/README.md @@ -57,7 +57,7 @@ the lines below to your zshrc file**, but be aware of the side effects: | dib | `docker image build` | Build an image from a Dockerfile (same as docker build) | | dii | `docker image inspect` | Display detailed information on one or more images | | dils | `docker image ls` | List docker images | -| dip | `docker image push` | Push an image or repository to a remote registry | +| dipu | `docker image push` | Push an image or repository to a remote registry | | dirm | `docker image rm` | Remove one or more images | | dit | `docker image tag` | Add a name and tag to a particular image | | | | **Docker Network** | diff --git a/plugins/docker/docker.plugin.zsh b/plugins/docker/docker.plugin.zsh index 843c8e241..9c8ad8a28 100644 --- a/plugins/docker/docker.plugin.zsh +++ b/plugins/docker/docker.plugin.zsh @@ -21,7 +21,7 @@ alias dxcit='docker container exec -it' alias dib='docker image build' alias dii='docker image inspect' alias dils='docker image ls' -alias dip='docker image push' +alias dipu='docker image push' alias dirm='docker image rm' alias dit='docker image tag' From 055c3b6cb30c5e658914000597b8582afc3aa40e Mon Sep 17 00:00:00 2001 From: Jon Mosco <1970496+jonmosco@users.noreply.github.com> Date: Sun, 12 Jun 2022 13:41:52 -0400 Subject: [PATCH 005/253] chore(kube-ps1): update to most recent version (#10980) --- plugins/kube-ps1/README.md | 3 +++ plugins/kube-ps1/kube-ps1.plugin.zsh | 39 +++++++++++++++++++--------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/plugins/kube-ps1/README.md b/plugins/kube-ps1/README.md index b08997b0f..1ed3e4438 100644 --- a/plugins/kube-ps1/README.md +++ b/plugins/kube-ps1/README.md @@ -128,6 +128,7 @@ the following environment variables: | `KUBE_PS1_NS_ENABLE` | `true` | Display the namespace. If set to `false`, this will also disable `KUBE_PS1_DIVIDER` | | `KUBE_PS1_PREFIX` | `(` | Prompt opening character | | `KUBE_PS1_SYMBOL_ENABLE` | `true ` | Display the prompt Symbol. If set to `false`, this will also disable `KUBE_PS1_SEPARATOR` | +| `KUBE_PS1_SYMBOL_PADDING` | `false` | Adds a space (padding) after the symbol to prevent clobbering prompt characters | | `KUBE_PS1_SYMBOL_DEFAULT` | `⎈ ` | Default prompt symbol. Unicode `\u2388` | | `KUBE_PS1_SYMBOL_USE_IMG` | `false` | ☸️ , Unicode `\u2638` as the prompt symbol | | `KUBE_PS1_SEPARATOR` | | | Separator between symbol and context name | @@ -151,8 +152,10 @@ The default colors are set with the following environment variables: | Variable | Default | Meaning | | :------- | :-----: | ------- | +| `KUBE_PS1_PREFIX_COLOR` | `null` | Set default color of the prompt prefix | | `KUBE_PS1_SYMBOL_COLOR` | `blue` | Set default color of the Kubernetes symbol | | `KUBE_PS1_CTX_COLOR` | `red` | Set default color of the context | +| `KUBE_PS1_SUFFIX_COLOR` | `null` | Set default color of the prompt suffix | | `KUBE_PS1_NS_COLOR` | `cyan` | Set default color of the namespace | | `KUBE_PS1_BG_COLOR` | `null` | Set default color of the prompt background | diff --git a/plugins/kube-ps1/kube-ps1.plugin.zsh b/plugins/kube-ps1/kube-ps1.plugin.zsh index 9e77cbc19..894e0f7f0 100644 --- a/plugins/kube-ps1/kube-ps1.plugin.zsh +++ b/plugins/kube-ps1/kube-ps1.plugin.zsh @@ -1,9 +1,9 @@ -#!/bin/bash +#!/usr/bin/env bash # Kubernetes prompt helper for bash/zsh # Displays current context and namespace -# Copyright 2019 Jon Mosco +# Copyright 2021 Jon Mosco # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -24,7 +24,8 @@ # Override these values in ~/.zshrc or ~/.bashrc KUBE_PS1_BINARY="${KUBE_PS1_BINARY:-kubectl}" KUBE_PS1_SYMBOL_ENABLE="${KUBE_PS1_SYMBOL_ENABLE:-true}" -KUBE_PS1_SYMBOL_DEFAULT=${KUBE_PS1_SYMBOL_DEFAULT:-$'\u2388 '} +KUBE_PS1_SYMBOL_DEFAULT=${KUBE_PS1_SYMBOL_DEFAULT:-$'\u2388'} +KUBE_PS1_SYMBOL_PADDING="${KUBE_PS1_SYMBOL_PADDING:-false}" KUBE_PS1_SYMBOL_USE_IMG="${KUBE_PS1_SYMBOL_USE_IMG:-false}" KUBE_PS1_NS_ENABLE="${KUBE_PS1_NS_ENABLE:-true}" KUBE_PS1_CONTEXT_ENABLE="${KUBE_PS1_CONTEXT_ENABLE:-true}" @@ -32,10 +33,12 @@ KUBE_PS1_PREFIX="${KUBE_PS1_PREFIX-(}" KUBE_PS1_SEPARATOR="${KUBE_PS1_SEPARATOR-|}" KUBE_PS1_DIVIDER="${KUBE_PS1_DIVIDER-:}" KUBE_PS1_SUFFIX="${KUBE_PS1_SUFFIX-)}" + KUBE_PS1_SYMBOL_COLOR="${KUBE_PS1_SYMBOL_COLOR-blue}" KUBE_PS1_CTX_COLOR="${KUBE_PS1_CTX_COLOR-red}" KUBE_PS1_NS_COLOR="${KUBE_PS1_NS_COLOR-cyan}" KUBE_PS1_BG_COLOR="${KUBE_PS1_BG_COLOR}" + KUBE_PS1_KUBECONFIG_CACHE="${KUBECONFIG}" KUBE_PS1_DISABLE_PATH="${HOME}/.kube/kube-ps1/disabled" KUBE_PS1_LAST_TIME=0 @@ -149,18 +152,17 @@ _kube_ps1_symbol() { case "${KUBE_PS1_SHELL}" in bash) - if ((BASH_VERSINFO[0] >= 4)) && [[ $'\u2388 ' != "\\u2388 " ]]; then + if ((BASH_VERSINFO[0] >= 4)) && [[ $'\u2388' != "\\u2388" ]]; then KUBE_PS1_SYMBOL="${KUBE_PS1_SYMBOL_DEFAULT}" - # KUBE_PS1_SYMBOL=$'\u2388 ' - KUBE_PS1_SYMBOL_IMG=$'\u2638 ' + KUBE_PS1_SYMBOL_IMG=$'\u2638\ufe0f' else - KUBE_PS1_SYMBOL=$'\xE2\x8E\x88 ' - KUBE_PS1_SYMBOL_IMG=$'\xE2\x98\xB8 ' + KUBE_PS1_SYMBOL=$'\xE2\x8E\x88' + KUBE_PS1_SYMBOL_IMG=$'\xE2\x98\xB8' fi ;; zsh) KUBE_PS1_SYMBOL="${KUBE_PS1_SYMBOL_DEFAULT}" - KUBE_PS1_SYMBOL_IMG="\u2638 ";; + KUBE_PS1_SYMBOL_IMG="\u2638";; *) KUBE_PS1_SYMBOL="k8s" esac @@ -169,7 +171,12 @@ _kube_ps1_symbol() { KUBE_PS1_SYMBOL="${KUBE_PS1_SYMBOL_IMG}" fi - echo "${KUBE_PS1_SYMBOL}" + if [[ "${KUBE_PS1_SYMBOL_PADDING}" == true ]]; then + echo "${KUBE_PS1_SYMBOL} " + else + echo "${KUBE_PS1_SYMBOL}" + fi + } _kube_ps1_split() { @@ -339,7 +346,11 @@ kube_ps1() { [[ -n "${KUBE_PS1_BG_COLOR}" ]] && KUBE_PS1+="$(_kube_ps1_color_bg ${KUBE_PS1_BG_COLOR})" # Prefix - [[ -n "${KUBE_PS1_PREFIX}" ]] && KUBE_PS1+="${KUBE_PS1_PREFIX}" + if [[ -z "${KUBE_PS1_PREFIX_COLOR:-}" ]] && [[ -n "${KUBE_PS1_PREFIX}" ]]; then + KUBE_PS1+="${KUBE_PS1_PREFIX}" + else + KUBE_PS1+="$(_kube_ps1_color_fg $KUBE_PS1_PREFIX_COLOR)${KUBE_PS1_PREFIX}${KUBE_PS1_RESET_COLOR}" + fi # Symbol KUBE_PS1+="$(_kube_ps1_color_fg $KUBE_PS1_SYMBOL_COLOR)$(_kube_ps1_symbol)${KUBE_PS1_RESET_COLOR}" @@ -362,7 +373,11 @@ kube_ps1() { fi # Suffix - [[ -n "${KUBE_PS1_SUFFIX}" ]] && KUBE_PS1+="${KUBE_PS1_SUFFIX}" + if [[ -z "${KUBE_PS1_SUFFIX_COLOR:-}" ]] && [[ -n "${KUBE_PS1_SUFFIX}" ]]; then + KUBE_PS1+="${KUBE_PS1_SUFFIX}" + else + KUBE_PS1+="$(_kube_ps1_color_fg $KUBE_PS1_SUFFIX_COLOR)${KUBE_PS1_SUFFIX}${KUBE_PS1_RESET_COLOR}" + fi # Close Background color if defined [[ -n "${KUBE_PS1_BG_COLOR}" ]] && KUBE_PS1+="${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_DEFAULT_BG}${_KUBE_PS1_CLOSE_ESC}" From 50550c70eaa36e79fdf380bdc4ddad4a1ad581a0 Mon Sep 17 00:00:00 2001 From: Sukka Date: Mon, 13 Jun 2022 02:22:29 +0800 Subject: [PATCH 006/253] fix(github): deprecate the `git.io` command (#10896) --- plugins/github/README.md | 1 - plugins/github/github.plugin.zsh | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/github/README.md b/plugins/github/README.md index af2b8a4e7..5d8b62501 100644 --- a/plugins/github/README.md +++ b/plugins/github/README.md @@ -11,7 +11,6 @@ This plugin supports working with GitHub from the command line. It provides a fe * `empty_gh` - Creates a new empty repo (with a `README.md`) and pushes it to GitHub * `new_gh` - Initializes an existing directory as a repo and pushes it to GitHub * `exist_gh` - Takes an existing repo and pushes it to GitHub -* `git.io` - Shortens a URL using [git.io](https://git.io) ## Installation diff --git a/plugins/github/github.plugin.zsh b/plugins/github/github.plugin.zsh index 8e4b97352..79114ff69 100644 --- a/plugins/github/github.plugin.zsh +++ b/plugins/github/github.plugin.zsh @@ -68,8 +68,9 @@ exist_gh() { # [DIRECTORY] # documentation: https://github.com/blog/985-git-io-github-url-shortener # git.io() { - emulate -L zsh - curl -i -s https://git.io -F "url=$1" | grep "Location" | cut -f 2 -d " " + # emulate -L zsh + # curl -i -s https://git.io -F "url=$1" | grep "Location" | cut -f 2 -d " " + print -u2 ${(%):-"%F{yellow}%BThe \`git.io\` is deprecated.%b\nView the announcement made by GitHub: https://github.blog/changelog/2022-01-11-git-io-no-longer-accepts-new-urls/%f"} } # End Functions ############################################################# From 0866f4daf4f55a52c1979002627f1bf61aa1e1c6 Mon Sep 17 00:00:00 2001 From: Ilya Maximov Date: Sun, 8 May 2022 17:24:00 +0200 Subject: [PATCH 007/253] fix(toolbox): fix the plugin's filename --- plugins/toolbox/{kubectx.plugin.zsh => toolbox.plugin.zsh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename plugins/toolbox/{kubectx.plugin.zsh => toolbox.plugin.zsh} (100%) diff --git a/plugins/toolbox/kubectx.plugin.zsh b/plugins/toolbox/toolbox.plugin.zsh similarity index 100% rename from plugins/toolbox/kubectx.plugin.zsh rename to plugins/toolbox/toolbox.plugin.zsh From ed03e7127f392bb3ee51ed971e9f2c76984bb761 Mon Sep 17 00:00:00 2001 From: Ilya Maximov Date: Sun, 8 May 2022 17:29:02 +0200 Subject: [PATCH 008/253] feat(toolbox): alias for `toolbox enter` --- plugins/toolbox/README.md | 6 ++++++ plugins/toolbox/toolbox.plugin.zsh | 2 ++ 2 files changed, 8 insertions(+) diff --git a/plugins/toolbox/README.md b/plugins/toolbox/README.md index aac2bb3b0..abaca31f4 100644 --- a/plugins/toolbox/README.md +++ b/plugins/toolbox/README.md @@ -17,3 +17,9 @@ You can use it by adding `$(toolbox_prompt_info)` to your `PROMPT` or `RPROMPT` ```zsh RPROMPT='$(toolbox_prompt_info)' ``` + +## Aliases + +| Alias | Command | Description | +|-------|----------------------|----------------------------------------| +| tb | `toolbox enter` | Enters the toolbox environment | diff --git a/plugins/toolbox/toolbox.plugin.zsh b/plugins/toolbox/toolbox.plugin.zsh index 8b6bf5ecd..d24d6d396 100644 --- a/plugins/toolbox/toolbox.plugin.zsh +++ b/plugins/toolbox/toolbox.plugin.zsh @@ -1,3 +1,5 @@ function toolbox_prompt_info() { [[ -f /run/.toolboxenv ]] && echo "⬢" } + +alias tb="toolbox enter" From 8168ec0174e7e3212be20ecc74810155772abff1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Wed, 15 Jun 2022 20:07:35 +0200 Subject: [PATCH 009/253] refactor!: remove deprecated plugins BREAKING CHANGE: the following deprecated plugins have been removed: `cargo`, `copydir`, `npx`, `osx`, and `rustup`. See the wiki for more info: https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins#removed refactor(rustup)!: remove deprecated plugin BREAKING CHANGE: the plugin was deprecated and is now removed. See the wiki for more info: https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins#removed --- plugins/cargo/README.md | 3 --- plugins/cargo/cargo.plugin.zsh | 7 ------- plugins/copydir/README.md | 3 --- plugins/copydir/copydir.plugin.zsh | 7 ------- plugins/npx/README.md | 16 ---------------- plugins/npx/npx.plugin.zsh | 12 ------------ plugins/osx/README.md | 3 --- plugins/osx/osx.plugin.zsh | 5 ----- plugins/rustup/README.md | 3 --- plugins/rustup/rustup.plugin.zsh | 7 ------- 10 files changed, 66 deletions(-) delete mode 100644 plugins/cargo/README.md delete mode 100644 plugins/cargo/cargo.plugin.zsh delete mode 100644 plugins/copydir/README.md delete mode 100644 plugins/copydir/copydir.plugin.zsh delete mode 100644 plugins/npx/README.md delete mode 100644 plugins/npx/npx.plugin.zsh delete mode 100644 plugins/osx/README.md delete mode 100644 plugins/osx/osx.plugin.zsh delete mode 100644 plugins/rustup/README.md delete mode 100644 plugins/rustup/rustup.plugin.zsh diff --git a/plugins/cargo/README.md b/plugins/cargo/README.md deleted file mode 100644 index 93e69ae7f..000000000 --- a/plugins/cargo/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# cargo - -**Deprecated: use the [`rust`](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/rust) plugin instead.** diff --git a/plugins/cargo/cargo.plugin.zsh b/plugins/cargo/cargo.plugin.zsh deleted file mode 100644 index 692025e8f..000000000 --- a/plugins/cargo/cargo.plugin.zsh +++ /dev/null @@ -1,7 +0,0 @@ -print ${(%):-'%F{yellow}The `cargo` plugin is deprecated and has been moved to the `rust` plugin.'} -print ${(%):-'Please update your .zshrc to use the `%Brust%b` plugin instead.%f'} - -(( ${fpath[(Ie)$ZSH/plugins/rust]} )) || { - fpath=("$ZSH/plugins/rust" $fpath) - source "$ZSH/plugins/rust/rust.plugin.zsh" -} diff --git a/plugins/copydir/README.md b/plugins/copydir/README.md deleted file mode 100644 index cf24b789f..000000000 --- a/plugins/copydir/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# copydir plugin - -This plugin is deprecated. Use the [`copypath` plugin](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/copypath) instead. diff --git a/plugins/copydir/copydir.plugin.zsh b/plugins/copydir/copydir.plugin.zsh deleted file mode 100644 index a2b489ec0..000000000 --- a/plugins/copydir/copydir.plugin.zsh +++ /dev/null @@ -1,7 +0,0 @@ -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 { - copypath -} diff --git a/plugins/npx/README.md b/plugins/npx/README.md deleted file mode 100644 index 4b2aba8f0..000000000 --- a/plugins/npx/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# npx plugin - -## Deprecation - -Since npm v7, `npx` has been moved to `npm exec`. With the move, [the `--shell-auto-fallback` argument -for `npx` has been removed](https://github.com/npm/cli/blob/v7.0.0/docs/content/cli-commands/npm-exec.md#compatibility-with-older-npx-versions): - -> Shell fallback functionality is removed, as it is not advisable. - -When using npm v7, you'll get this error: - -> npx: the --shell-auto-fallback argument has been removed - -If you get this error, just disable the plugin by removing it from the plugins array in your zshrc file. -This plugin will no longer be maintained and will be removed in the future, when the older `npx` versions -are no longer available. diff --git a/plugins/npx/npx.plugin.zsh b/plugins/npx/npx.plugin.zsh deleted file mode 100644 index c1e2eca98..000000000 --- a/plugins/npx/npx.plugin.zsh +++ /dev/null @@ -1,12 +0,0 @@ -if (( ! $+commands[npx] )); then - return -fi - -if ! npx_fallback_script="$(npx --shell-auto-fallback zsh 2>/dev/null)"; then - print -u2 ${(%):-"%F{yellow}This \`npx\` version ($(npx --version)) is not supported.%f"} -else - source <(<<< "$npx_fallback_script") -fi - -print -u2 ${(%):-"%F{yellow}The \`npx\` plugin is deprecated and will be removed soon. %BPlease disable it%b.%f"} -unset npx_fallback_script diff --git a/plugins/osx/README.md b/plugins/osx/README.md deleted file mode 100644 index 98d859545..000000000 --- a/plugins/osx/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# osx plugin - -**Deprecated: use the [`macos`](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/macos) plugin instead.** diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh deleted file mode 100644 index 3b0935981..000000000 --- a/plugins/osx/osx.plugin.zsh +++ /dev/null @@ -1,5 +0,0 @@ -print -u2 ${(%):-'%F{yellow}The `osx` plugin is deprecated and has been renamed to `macos`.'} -print -u2 ${(%):-'Please update your .zshrc to use the `%Bmacos%b` plugin instead.%f'} - -(( ${fpath[(Ie)$ZSH/plugins/macos]} )) || fpath=("$ZSH/plugins/macos" $fpath) -source "$ZSH/plugins/macos/macos.plugin.zsh" diff --git a/plugins/rustup/README.md b/plugins/rustup/README.md deleted file mode 100644 index c620e72a8..000000000 --- a/plugins/rustup/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# rustup - -**Deprecated: use the [`rust`](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/rust) plugin instead.** diff --git a/plugins/rustup/rustup.plugin.zsh b/plugins/rustup/rustup.plugin.zsh deleted file mode 100644 index ef141cf8f..000000000 --- a/plugins/rustup/rustup.plugin.zsh +++ /dev/null @@ -1,7 +0,0 @@ -print ${(%):-'%F{yellow}The `rustup` plugin is deprecated and has been moved to the `rust` plugin.'} -print ${(%):-'Please update your .zshrc to use the `%Brust%b` plugin instead.%f'} - -(( ${fpath[(Ie)$ZSH/plugins/rust]} )) || { - fpath=("$ZSH/plugins/rust" $fpath) - source "$ZSH/plugins/rust/rust.plugin.zsh" -} From 4c82a2eedf0c43d47601ffa8b0303ed1326fab8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20M=C3=BCller?= Date: Sun, 19 Jun 2022 12:32:16 +0200 Subject: [PATCH 010/253] fix(emacs): fix check for open frames w/ extra output (#10992) --- plugins/emacs/emacsclient.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/emacs/emacsclient.sh b/plugins/emacs/emacsclient.sh index 25efe0d68..96893c932 100755 --- a/plugins/emacs/emacsclient.sh +++ b/plugins/emacs/emacsclient.sh @@ -11,7 +11,7 @@ emacsfun() { esac # Check if there are suitable frames - frames="$(emacsclient -a '' -n -e "$cmd" 2>/dev/null)" + frames="$(emacsclient -a '' -n -e "$cmd" 2>/dev/null |sed 's/.*\x07//g' )" # Only create another X frame if there isn't one present if [ -z "$frames" -o "$frames" = nil ]; then From d2dc3bd2da531754778d1e9d7fb082715fc532f1 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 12 Jul 2022 18:40:39 +0200 Subject: [PATCH 011/253] feat(brew): run `brew shellenv` command at plugin load (#10874) --- plugins/brew/README.md | 12 ++++++++---- plugins/brew/brew.plugin.zsh | 30 +++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/plugins/brew/README.md b/plugins/brew/README.md index bf952bf01..64e0e1153 100644 --- a/plugins/brew/README.md +++ b/plugins/brew/README.md @@ -8,19 +8,23 @@ To use it, add `brew` to the plugins array of your zshrc file: plugins=(... brew) ``` +## Shellenv + +This plugin also executes `brew shellenv` at plugin load to set up many useful variables, such as `HOMEBREW_PREFIX` or `HOMEBREW_REPOSITORY`. + ## Aliases | Alias | Command | Description | -|----------|---------------------------------------|---------------------------------------------------------------------| +| -------- | ------------------------------------- | ------------------------------------------------------------------- | +| `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | +| `bcubo` | `brew update && brew outdated --cask` | Update Homebrew data, then list outdated casks. | | `brewp` | `brew pin` | Pin a specified formula so that it's not upgraded. | | `brews` | `brew list -1` | List installed formulae or the installed files for a given formula. | | `brewsp` | `brew list --pinned` | List pinned formulae, or show the version of a given formula. | -| `bubo` | `brew update && brew outdated` | Update Homebrew data, then list outdated formulae and casks. | | `bubc` | `brew upgrade && brew cleanup` | Upgrade outdated formulae and casks, then run cleanup. | +| `bubo` | `brew update && brew outdated` | Update Homebrew data, then list outdated formulae and casks. | | `bubu` | `bubo && bubc` | Do the last two operations above. | | `buf` | `brew upgrade --formula` | Upgrade only formulas (not casks). | -| `bcubo` | `brew update && brew outdated --cask` | Update Homebrew data, then list outdated casks. | -| `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | ## Completion diff --git a/plugins/brew/brew.plugin.zsh b/plugins/brew/brew.plugin.zsh index 070a083d0..4a2322216 100644 --- a/plugins/brew/brew.plugin.zsh +++ b/plugins/brew/brew.plugin.zsh @@ -1,11 +1,35 @@ +if (( ! $+commands[brew] )); then + if [[ -x /opt/homebrew/bin/brew ]]; then + BREW_LOCATION="/opt/homebrew/bin/brew" + elif [[ -x /usr/local/bin/brew ]]; then + BREW_LOCATION="/usr/local/bin/brew" + elif [[ -x /home/linuxbrew/.linuxbrew/bin/brew ]]; then + BREW_LOCATION="/home/linuxbrew/.linuxbrew/bin/brew" + elif [[ -x "$HOME/.linuxbrew/bin/brew" ]]; then + BREW_LOCATION="$HOME/.linuxbrew/bin/brew" + else + return + fi +fi + +if [[ -z "$HOMEBREW_PREFIX" ]]; then + if [[ -z $BREW_LOCATION ]]; then + eval "$(brew shellenv)" + else + eval "$("$BREW_LOCATION" shellenv)" + fi +fi + +unset BREW_LOCATION + +alias bcubc='brew upgrade --cask && brew cleanup' +alias bcubo='brew update && brew outdated --cask' alias brewp='brew pin' alias brewsp='brew list --pinned' -alias bubo='brew update && brew outdated' alias bubc='brew upgrade && brew cleanup' +alias bubo='brew update && brew outdated' alias bubu='bubo && bubc' alias buf='brew upgrade --formula' -alias bcubo='brew update && brew outdated --cask' -alias bcubc='brew upgrade --cask && brew cleanup' function brews() { local formulae="$(brew leaves | xargs brew deps --installed --for-each)" From 5336e59db1b76b9b5439099cbc5a311796d32ba9 Mon Sep 17 00:00:00 2001 From: Ian Cowan <38896380+iccowan@users.noreply.github.com> Date: Tue, 12 Jul 2022 12:46:42 -0400 Subject: [PATCH 012/253] chore(git): fix unintentional latex in documentation (#11018) --- plugins/git/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/git/README.md b/plugins/git/README.md index b9a0309f3..0700dcc32 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -23,7 +23,7 @@ plugins=(... git) | gb | git branch | | gba | git branch -a | | gbd | git branch -d | -| gbda | git branch --no-color --merged \| grep -vE "^([+*]\|\s*($(git_main_branch)\|$(git_develop_branch))\s*$)" \| xargs git branch -d 2>/dev/null | +| gbda | git branch --no-color --merged \| grep -vE "^([+*]\|\s*($(git_main_branch)\|$(git_develop_branch))\s*$)" \| xargs git branch -d 2>/dev/null | | gbD | git branch -D | | gbl | git blame -b -w | | gbnm | git branch --no-merged | @@ -42,12 +42,12 @@ plugins=(... git) | gcans! | git commit -v -a -s --no-edit --amend | | gcam | git commit -a -m | | gcas | git commit -a -s | -| gcasm | git commit -a -s -m | +| gcasm | git commit -a -s -m | | gcsm | git commit -s -m | | gcb | git checkout -b | | gcf | git config --list | | gcl | git clone --recurse-submodules | -| gccd | git clone --recurse-submodules "$@" && cd "$(basename $_ .git)" | +| gccd | git clone --recurse-submodules "$@" && cd "$(basename $_ .git)" | | gclean | git clean -id | | gpristine | git reset --hard && git clean -dffx | | gcm | git checkout $(git_main_branch) | From 4506210c38774bc5da1a0495c2a911776cf6f2cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sun, 19 Jun 2022 12:54:11 +0200 Subject: [PATCH 013/253] fix(lib): don't attach to tty in `wl-copy` and `xclip` (#10953) Fixes #10925 --- lib/clipboard.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/clipboard.zsh b/lib/clipboard.zsh index 4e3ba0a45..272b41598 100644 --- a/lib/clipboard.zsh +++ b/lib/clipboard.zsh @@ -58,10 +58,10 @@ function detect-clipboard() { function clipcopy() { cat "${1:-/dev/stdin}" > /dev/clipboard; } function clippaste() { cat /dev/clipboard; } elif [ -n "${WAYLAND_DISPLAY:-}" ] && (( ${+commands[wl-copy]} )) && (( ${+commands[wl-paste]} )); then - function clipcopy() { wl-copy < "${1:-/dev/stdin}"; } + function clipcopy() { wl-copy < "${1:-/dev/stdin}" &>/dev/null &|; } function clippaste() { wl-paste; } elif [ -n "${DISPLAY:-}" ] && (( ${+commands[xclip]} )); then - function clipcopy() { xclip -in -selection clipboard < "${1:-/dev/stdin}"; } + function clipcopy() { xclip -in -selection clipboard < "${1:-/dev/stdin}" &>/dev/null &|; } function clippaste() { xclip -out -selection clipboard; } elif [ -n "${DISPLAY:-}" ] && (( ${+commands[xsel]} )); then function clipcopy() { xsel --clipboard --input < "${1:-/dev/stdin}"; } From 39573125e4971b34e26f4cb3aaa210a74ea6ca34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sun, 19 Jun 2022 12:49:32 +0200 Subject: [PATCH 014/253] feat(lib): wait for input to copy to the clipboard (#10953) --- lib/clipboard.zsh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/clipboard.zsh b/lib/clipboard.zsh index 272b41598..aab21a28a 100644 --- a/lib/clipboard.zsh +++ b/lib/clipboard.zsh @@ -52,37 +52,37 @@ function detect-clipboard() { emulate -L zsh if [[ "${OSTYPE}" == darwin* ]] && (( ${+commands[pbcopy]} )) && (( ${+commands[pbpaste]} )); then - function clipcopy() { pbcopy < "${1:-/dev/stdin}"; } + function clipcopy() { cat "${1:-/dev/stdin}" | pbcopy; } function clippaste() { pbpaste; } elif [[ "${OSTYPE}" == (cygwin|msys)* ]]; then function clipcopy() { cat "${1:-/dev/stdin}" > /dev/clipboard; } function clippaste() { cat /dev/clipboard; } elif [ -n "${WAYLAND_DISPLAY:-}" ] && (( ${+commands[wl-copy]} )) && (( ${+commands[wl-paste]} )); then - function clipcopy() { wl-copy < "${1:-/dev/stdin}" &>/dev/null &|; } + function clipcopy() { cat "${1:-/dev/stdin}" | wl-copy &>/dev/null &|; } function clippaste() { wl-paste; } elif [ -n "${DISPLAY:-}" ] && (( ${+commands[xclip]} )); then - function clipcopy() { xclip -in -selection clipboard < "${1:-/dev/stdin}" &>/dev/null &|; } + function clipcopy() { cat "${1:-/dev/stdin}" | xclip -selection clipboard -in &>/dev/null &|; } function clippaste() { xclip -out -selection clipboard; } elif [ -n "${DISPLAY:-}" ] && (( ${+commands[xsel]} )); then - function clipcopy() { xsel --clipboard --input < "${1:-/dev/stdin}"; } + function clipcopy() { cat "${1:-/dev/stdin}" | xsel --clipboard --input; } function clippaste() { xsel --clipboard --output; } elif (( ${+commands[lemonade]} )); then - function clipcopy() { lemonade copy < "${1:-/dev/stdin}"; } + function clipcopy() { cat "${1:-/dev/stdin}" | lemonade copy; } function clippaste() { lemonade paste; } elif (( ${+commands[doitclient]} )); then - function clipcopy() { doitclient wclip < "${1:-/dev/stdin}"; } + function clipcopy() { cat "${1:-/dev/stdin}" | doitclient wclip; } function clippaste() { doitclient wclip -r; } elif (( ${+commands[win32yank]} )); then - function clipcopy() { win32yank -i < "${1:-/dev/stdin}"; } + function clipcopy() { cat "${1:-/dev/stdin}" | win32yank -i; } function clippaste() { win32yank -o; } elif [[ $OSTYPE == linux-android* ]] && (( $+commands[termux-clipboard-set] )); then - function clipcopy() { termux-clipboard-set < "${1:-/dev/stdin}"; } + function clipcopy() { cat "${1:-/dev/stdin}" | termux-clipboard-set; } function clippaste() { termux-clipboard-get; } elif [ -n "${TMUX:-}" ] && (( ${+commands[tmux]} )); then function clipcopy() { tmux load-buffer "${1:--}"; } function clippaste() { tmux save-buffer -; } elif [[ $(uname -r) = *icrosoft* ]]; then - function clipcopy() { clip.exe < "${1:-/dev/stdin}"; } + function clipcopy() { cat "${1:-/dev/stdin}" | clip.exe; } function clippaste() { powershell.exe -noprofile -command Get-Clipboard; } else function _retry_clipboard_detection_or_fail() { From ef8e63a7fd30e04079e54ea76043c1db76e24ddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Tue, 12 Jul 2022 18:56:09 +0200 Subject: [PATCH 015/253] fix(lib): prefer `xsel` over `xclip` in clipboard.zsh See #10925 --- lib/clipboard.zsh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/clipboard.zsh b/lib/clipboard.zsh index aab21a28a..ad83fc4b2 100644 --- a/lib/clipboard.zsh +++ b/lib/clipboard.zsh @@ -10,8 +10,8 @@ # - pbcopy, pbpaste (macOS) # - cygwin (Windows running Cygwin) # - wl-copy, wl-paste (if $WAYLAND_DISPLAY is set) -# - xclip (if $DISPLAY is set) # - xsel (if $DISPLAY is set) +# - xclip (if $DISPLAY is set) # - lemonade (for SSH) https://github.com/pocke/lemonade # - doitclient (for SSH) http://www.chiark.greenend.org.uk/~sgtatham/doit/ # - win32yank (Windows) @@ -60,12 +60,12 @@ function detect-clipboard() { elif [ -n "${WAYLAND_DISPLAY:-}" ] && (( ${+commands[wl-copy]} )) && (( ${+commands[wl-paste]} )); then function clipcopy() { cat "${1:-/dev/stdin}" | wl-copy &>/dev/null &|; } function clippaste() { wl-paste; } - elif [ -n "${DISPLAY:-}" ] && (( ${+commands[xclip]} )); then - function clipcopy() { cat "${1:-/dev/stdin}" | xclip -selection clipboard -in &>/dev/null &|; } - function clippaste() { xclip -out -selection clipboard; } elif [ -n "${DISPLAY:-}" ] && (( ${+commands[xsel]} )); then function clipcopy() { cat "${1:-/dev/stdin}" | xsel --clipboard --input; } function clippaste() { xsel --clipboard --output; } + elif [ -n "${DISPLAY:-}" ] && (( ${+commands[xclip]} )); then + function clipcopy() { cat "${1:-/dev/stdin}" | xclip -selection clipboard -in &>/dev/null &|; } + function clippaste() { xclip -out -selection clipboard; } elif (( ${+commands[lemonade]} )); then function clipcopy() { cat "${1:-/dev/stdin}" | lemonade copy; } function clippaste() { lemonade paste; } From 0726c1099fec6599dbf91a260f21d6d45fd8f309 Mon Sep 17 00:00:00 2001 From: Hans Donner Date: Tue, 12 Jul 2022 19:25:27 +0200 Subject: [PATCH 016/253] fix(aws): allow non-space characters in profile names (#11040) --- plugins/aws/aws.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/aws/aws.plugin.zsh b/plugins/aws/aws.plugin.zsh index b8625d7ac..2167f552c 100644 --- a/plugins/aws/aws.plugin.zsh +++ b/plugins/aws/aws.plugin.zsh @@ -147,7 +147,7 @@ function aws_change_access_key() { function aws_profiles() { [[ -r "${AWS_CONFIG_FILE:-$HOME/.aws/config}" ]] || return 1 - grep --color=never -Eo '\[.*\]' "${AWS_CONFIG_FILE:-$HOME/.aws/config}" | sed -E 's/^[[:space:]]*\[(profile)?[[:space:]]*([-_[:alnum:]\.@]+)\][[:space:]]*$/\2/g' + grep --color=never -Eo '\[.*\]' "${AWS_CONFIG_FILE:-$HOME/.aws/config}" | sed -E 's/^[[:space:]]*\[(profile)?[[:space:]]*([^[:space:]]+)\][[:space:]]*$/\2/g' } function _aws_profiles() { From 0c7ce363c903e1e3255d4d30255ff4790678ace9 Mon Sep 17 00:00:00 2001 From: hellzbellz <31550512+Hellzbellz123@users.noreply.github.com> Date: Tue, 12 Jul 2022 10:36:43 -0700 Subject: [PATCH 017/253] chore(lib): only create `afind` alias if `ack` is installed (#11017) --- lib/misc.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/misc.zsh b/lib/misc.zsh index a5d3af998..1f637083a 100644 --- a/lib/misc.zsh +++ b/lib/misc.zsh @@ -24,10 +24,10 @@ env_default 'LESS' '-R' ## super user alias alias _='sudo ' -## more intelligent acking for ubuntu users +## more intelligent acking for ubuntu users and no alias for users without ack if (( $+commands[ack-grep] )); then alias afind='ack-grep -il' -else +elif (( $+commands[ack] )); then alias afind='ack -il' fi From 249c708ed3a4a7a63d16a6e911a46b6fb9623cbd Mon Sep 17 00:00:00 2001 From: Anubhav Sharma Date: Tue, 12 Jul 2022 13:44:32 -0400 Subject: [PATCH 018/253] fix(frontcube): fix escape of reset color sequence (#10921) --- themes/frontcube.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/frontcube.zsh-theme b/themes/frontcube.zsh-theme index f9488d0ac..de6348329 100644 --- a/themes/frontcube.zsh-theme +++ b/themes/frontcube.zsh-theme @@ -1,7 +1,7 @@ PROMPT=' %{$fg_bold[gray]%}%~%{$fg_bold[blue]%}%{$fg_bold[blue]%} % %{$reset_color%} -%{$fg[green]%}➞ %{$reset_color%' +%{$fg[green]%}➞ %{$reset_color%}' RPROMPT='$(git_prompt_info) $(ruby_prompt_info)' From bb6c14cdfd0b7d543d0d9c2e5f0c0a9409a82084 Mon Sep 17 00:00:00 2001 From: Brian Wright <4408242+PennRobotics@users.noreply.github.com> Date: Tue, 26 Jul 2022 11:46:10 +0200 Subject: [PATCH 019/253] fix(updater): correct spelling of `curl` flag (#11072) --- tools/check_for_upgrade.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh index 009c273fa..cc527e72d 100644 --- a/tools/check_for_upgrade.sh +++ b/tools/check_for_upgrade.sh @@ -65,7 +65,7 @@ function is_update_available() { local remote_head remote_head=$( if (( ${+commands[curl]} )); then - curl --conect-timeout 2 -fsSL -H 'Accept: application/vnd.github.v3.sha' $api_url 2>/dev/null + curl --connect-timeout 2 -fsSL -H 'Accept: application/vnd.github.v3.sha' $api_url 2>/dev/null elif (( ${+commands[wget]} )); then wget -T 2 -O- --header='Accept: application/vnd.github.v3.sha' $api_url 2>/dev/null elif (( ${+commands[fetch]} )); then From af2daa7ab7dde3674f4861ef684773410b9cccd4 Mon Sep 17 00:00:00 2001 From: Christopher Boyd <6323077+cpboyd@users.noreply.github.com> Date: Wed, 27 Jul 2022 12:06:28 -0400 Subject: [PATCH 020/253] feat(flutter): use up-to-date zsh completion (#11062) --- plugins/flutter/_flutter | 37 ------------------------------ plugins/flutter/flutter.plugin.zsh | 15 ++++++++++++ 2 files changed, 15 insertions(+), 37 deletions(-) delete mode 100644 plugins/flutter/_flutter diff --git a/plugins/flutter/_flutter b/plugins/flutter/_flutter deleted file mode 100644 index ab6ce4265..000000000 --- a/plugins/flutter/_flutter +++ /dev/null @@ -1,37 +0,0 @@ -#compdef flutter -#autoload - -local -a _1st_arguments -_1st_arguments=( - "analyze":"Analyze the project's Dart code." - "assemble":"Assemble and build flutter resources." - "attach":"Attach to a running application." - "build":"Flutter build commands." - "channel":"List or switch flutter channels." - "clean":"Delete the build/ and .dart_tool/ directories." - "config":"Configure Flutter settings." - "create":"Create a new Flutter project." - "devices":"List all connected devices." - "doctor":"Show information about the installed tooling." - "drive":"Runs Flutter Driver tests for the current project." - "emulators":"List, launch and create emulators." - "format":" Format one or more dart files." - "help":"Display help information for flutter." - "install":"Install a Flutter app on an attached device." - "logs":"Show log output for running Flutter apps." - "make-host-app-editable":"Moves host apps from generated directories to non-generated directories so that they can be edited by developers." - "precache":"Populates the Flutter tool's cache of binary artifacts." - "pub":"Commands for managing Flutter packages." - "run":"Run your Flutter app on an attached device." - "screenshot":"Take a screenshot from a connected device." - "test":"Run Flutter unit tests for the current project." - "upgrade":"Upgrade your copy of Flutter." - "version":"List or switch flutter versions." -) - -_arguments -C '*:: :->subcmds' - -if (( CURRENT == 1 )); then - _describe -t commands "flutter command" _1st_arguments - return -fi diff --git a/plugins/flutter/flutter.plugin.zsh b/plugins/flutter/flutter.plugin.zsh index 80b74f64a..44d196cd4 100644 --- a/plugins/flutter/flutter.plugin.zsh +++ b/plugins/flutter/flutter.plugin.zsh @@ -12,3 +12,18 @@ alias flrd="flutter run --debug" alias flrp="flutter run --profile" alias flrr="flutter run --release" alias flupgrd="flutter upgrade" + +# COMPLETION FUNCTION +if (( ! $+commands[flutter] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `flutter`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_flutter" ]]; then + typeset -g -A _comps + autoload -Uz _flutter + _comps[flutter]=_flutter +fi + +flutter zsh-completion >| "$ZSH_CACHE_DIR/completions/_flutter" &| \ No newline at end of file From 8362ae285a5c227cb20387543483a3597fa31931 Mon Sep 17 00:00:00 2001 From: Felix Stupp Date: Wed, 27 Jul 2022 16:07:53 +0000 Subject: [PATCH 021/253] fix(git-auto-fetch): don't override native `stat` command (#11068) --- plugins/git-auto-fetch/git-auto-fetch.plugin.zsh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh b/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh index efe8cbe66..2e029639c 100644 --- a/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh +++ b/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh @@ -2,7 +2,8 @@ : ${GIT_AUTO_FETCH_INTERVAL:=60} # Necessary for the git-fetch-all function -zmodload zsh/datetime zsh/stat +zmodload zsh/datetime +zmodload -F zsh/stat b:zstat # only zstat command, not stat command function git-fetch-all { ( From aa75eeea3348b906f2016be0e44335889e0faed1 Mon Sep 17 00:00:00 2001 From: Anatoli Babenia Date: Fri, 29 Jul 2022 14:05:34 +0300 Subject: [PATCH 022/253] chore(copybuffer): format shortcut and lighten text (#11078) --- plugins/copybuffer/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/copybuffer/README.md b/plugins/copybuffer/README.md index da138bdbd..a53d1c813 100644 --- a/plugins/copybuffer/README.md +++ b/plugins/copybuffer/README.md @@ -1,7 +1,7 @@ # `copybuffer` plugin -This plugin binds the ctrl-o keyboard shortcut to a command that copies the text -that is currently typed in the command line ($BUFFER) to the system clipboard. +This plugin adds the ctrl-o keyboard shortcut to copy the current text +in the command line to the system clipboard. This is useful if you type a command - and before you hit enter to execute it - want to copy it maybe so you can paste it into a script, gist or whatnot. From 4fcf52c2b1e086596d96b04f9c1ff3d742194857 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 1 Aug 2022 20:54:45 +0200 Subject: [PATCH 023/253] fix: don't use `$functions_source` for compatibility with zsh < 5.4 --- plugins/aliases/aliases.plugin.zsh | 23 +++++----- plugins/shell-proxy/shell-proxy.plugin.zsh | 51 ++++++++++++---------- 2 files changed, 42 insertions(+), 32 deletions(-) diff --git a/plugins/aliases/aliases.plugin.zsh b/plugins/aliases/aliases.plugin.zsh index 4e1e0558e..9864de957 100644 --- a/plugins/aliases/aliases.plugin.zsh +++ b/plugins/aliases/aliases.plugin.zsh @@ -1,11 +1,14 @@ -# with lots of 3rd-party amazing aliases installed, just need something to explore it quickly. -# -# - acs: alias cheatsheet -# group alias by command, pass addition argv to grep. -function acs(){ - (( $+commands[python3] )) || { - echo "[error] No python executable detected" - return +# Handle $0 according to the standard: +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" +0="${${(M)0:#/*}:-$PWD/$0}" + +eval ' + function acs(){ + (( $+commands[python3] )) || { + echo "[error] No python executable detected" + return + } + alias | python3 "'"${0:h}"'/cheatsheet.py" "$@" } - alias | python3 ${functions_source[$0]:h}/cheatsheet.py $@ -} +' diff --git a/plugins/shell-proxy/shell-proxy.plugin.zsh b/plugins/shell-proxy/shell-proxy.plugin.zsh index 9d45b5269..4fdbe9322 100644 --- a/plugins/shell-proxy/shell-proxy.plugin.zsh +++ b/plugins/shell-proxy/shell-proxy.plugin.zsh @@ -1,32 +1,39 @@ #!/usr/bin/bash # shellcheck disable=SC1090,SC2154 -proxy() { - # deprecate $DEFAULT_PROXY, use SHELLPROXY_URL instead - if [[ -n "$DEFAULT_PROXY" && -z "$SHELLPROXY_URL" ]]; then - echo >&2 "proxy: DEFAULT_PROXY is deprecated, use SHELLPROXY_URL instead" - SHELLPROXY_URL="$DEFAULT_PROXY" - unset DEFAULT_PROXY - fi +# Handle $0 according to the standard: +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html +0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" +0="${${(M)0:#/*}:-$PWD/$0}" - # deprecate CONFIG_PROXY, use SHELLPROXY_CONFIG instead - if [[ -n "$CONFIG_PROXY" && -z "$SHELLPROXY_CONFIG" ]]; then - echo >&2 "proxy: CONFIG_PROXY is deprecated, use SHELLPROXY_CONFIG instead" - SHELLPROXY_CONFIG="$CONFIG_PROXY" - unset CONFIG_PROXY - fi +eval ' + proxy() { + # deprecate $DEFAULT_PROXY, use SHELLPROXY_URL instead + if [[ -n "$DEFAULT_PROXY" && -z "$SHELLPROXY_URL" ]]; then + echo >&2 "proxy: DEFAULT_PROXY is deprecated, use SHELLPROXY_URL instead" + SHELLPROXY_URL="$DEFAULT_PROXY" + unset DEFAULT_PROXY + fi - # the proxy.py script is in the same directory as this function - local proxy="${functions_source[$0]:A:h}/proxy.py" + # deprecate CONFIG_PROXY, use SHELLPROXY_CONFIG instead + if [[ -n "$CONFIG_PROXY" && -z "$SHELLPROXY_CONFIG" ]]; then + echo >&2 "proxy: CONFIG_PROXY is deprecated, use SHELLPROXY_CONFIG instead" + SHELLPROXY_CONFIG="$CONFIG_PROXY" + unset CONFIG_PROXY + fi - # capture the output of the proxy script and bail out if it fails - local output - output="$(SHELLPROXY_URL="$SHELLPROXY_URL" SHELLPROXY_CONFIG="$SHELLPROXY_CONFIG" "$proxy" "$1")" || - return $? + # the proxy.py script is in the same directory as this function + local proxy="'"${0:h}"'/proxy.py" - # evaluate the output generated by the proxy script - source <(echo "$output") -} + # capture the output of the proxy script and bail out if it fails + local output + output="$(SHELLPROXY_URL="$SHELLPROXY_URL" SHELLPROXY_CONFIG="$SHELLPROXY_CONFIG" "$proxy" "$1")" || + return $? + + # evaluate the output generated by the proxy script + source <(echo "$output") + } +' _proxy() { local -r commands=('enable' 'disable' 'status') From 0346cdf7f63bcddc704cc0551f260d31adb8fc9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Tue, 2 Aug 2022 19:27:54 +0200 Subject: [PATCH 024/253] docs: document new aliases policy (#11045) --- .github/PULL_REQUEST_TEMPLATE.md | 1 + CONTRIBUTING.md | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 1abae8913..5c94caeb5 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -9,6 +9,7 @@ - [ ] The code is mine or it's from somewhere with an MIT-compatible license. - [ ] The code is efficient, to the best of my ability, and does not waste computer resources. - [ ] The code is stable and I have tested it myself, to the best of my abilities. +- [ ] If the code introduces new aliases, I provide a valid use case for all plugin users down below. ## Changes: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2bd877892..59cf96012 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -104,6 +104,27 @@ maintainers) by mentioning their GitHub handle (starting with `@`) in your messa For any extensive change, such as a new plugin, you will have to find testers to +1 your PR. +### New plugin aliases + +We acknowledge that aliases are a core part of Oh My Zsh. There are plugins that have +100 aliases! + +This has become an issue for two opposing reasons: + +- Some users want to have their personal aliases in Oh My Zsh. +- Some users don't want any aliases at all and feel that there are too many. + +Because of this, from now on we're requiring that new aliases follow these conditions: + +1. They will be used by many people, not just a few. +2. The aliases will be used many times and for common tasks. +3. Prefer one generic alias over many specific ones. +4. When justifying the need for an alias, talk about workflows where you'll use it, + preferably in combination with other aliases. +5. If there exists a command with the same name, look for a different alias name. + +This list is not exhaustive! Please remember that your alias will be in the machines of many people, +so it should be justified why they should have it. + ---- ## Use the Search, Luke From 97134d1eed19b72a9c4bf90a2effa847221608bf Mon Sep 17 00:00:00 2001 From: Ben Walton Date: Tue, 2 Aug 2022 18:28:44 +0100 Subject: [PATCH 025/253] fix(cli): make `omz` honour symlinks when changing `.zshrc` (#11082) --- lib/cli.zsh | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/lib/cli.zsh b/lib/cli.zsh index b71f6d9ce..db659c11f 100644 --- a/lib/cli.zsh +++ b/lib/cli.zsh @@ -280,9 +280,10 @@ multi == 1 && length(\$0) > 0 { " local zdot="${ZDOTDIR:-$HOME}" - awk "$awk_script" "$zdot/.zshrc" > "$zdot/.zshrc.new" \ - && command mv -f "$zdot/.zshrc" "$zdot/.zshrc.bck" \ - && command mv -f "$zdot/.zshrc.new" "$zdot/.zshrc" + local zshrc="${${:-"${zdot}/.zshrc"}:A}" + awk "$awk_script" "$zshrc" > "$zdot/.zshrc.new" \ + && command cp -f "$zshrc" "$zdot/.zshrc.bck" \ + && command mv -f "$zdot/.zshrc.new" "$zshrc" # Exit if the new .zshrc file wasn't created correctly [[ $? -eq 0 ]] || { @@ -294,8 +295,7 @@ multi == 1 && length(\$0) > 0 { # Exit if the new .zshrc file has syntax errors if ! command zsh -n "$zdot/.zshrc"; then _omz::log error "broken syntax in '"${zdot/#$HOME/\~}/.zshrc"'. Rolling back changes..." - command mv -f "$zdot/.zshrc" "$zdot/.zshrc.new" - command mv -f "$zdot/.zshrc.bck" "$zdot/.zshrc" + command mv -f "$zdot/.zshrc.bck" "$zshrc" return 1 fi @@ -354,9 +354,10 @@ multi == 1 && /^[^#]*\)/ { " local zdot="${ZDOTDIR:-$HOME}" - awk "$awk_script" "$zdot/.zshrc" > "$zdot/.zshrc.new" \ - && command mv -f "$zdot/.zshrc" "$zdot/.zshrc.bck" \ - && command mv -f "$zdot/.zshrc.new" "$zdot/.zshrc" + local zshrc="${${:-"${zdot}/.zshrc"}:A}" + awk "$awk_script" "$zshrc" > "$zdot/.zshrc.new" \ + && command cp -f "$zshrc" "$zdot/.zshrc.bck" \ + && command mv -f "$zdot/.zshrc.new" "$zshrc" # Exit if the new .zshrc file wasn't created correctly [[ $? -eq 0 ]] || { @@ -368,8 +369,7 @@ multi == 1 && /^[^#]*\)/ { # Exit if the new .zshrc file has syntax errors if ! command zsh -n "$zdot/.zshrc"; then _omz::log error "broken syntax in '"${zdot/#$HOME/\~}/.zshrc"'. Rolling back changes..." - command mv -f "$zdot/.zshrc" "$zdot/.zshrc.new" - command mv -f "$zdot/.zshrc.bck" "$zdot/.zshrc" + command mv -f "$zdot/.zshrc.bck" "$zshrc" return 1 fi @@ -715,7 +715,8 @@ END { ' local zdot="${ZDOTDIR:-$HOME}" - awk "$awk_script" "$zdot/.zshrc" > "$zdot/.zshrc.new" \ + local zshrc="${${:-"${zdot}/.zshrc"}:A}" + awk "$awk_script" "$zshrc" > "$zdot/.zshrc.new" \ || { # Prepend ZSH_THEME= line to .zshrc if it doesn't exist cat < "$zdot/.zshrc.new" \ - && command mv -f "$zdot/.zshrc" "$zdot/.zshrc.bck" \ - && command mv -f "$zdot/.zshrc.new" "$zdot/.zshrc" + && command cp -f "$zshrc" "$zdot/.zshrc.bck" \ + && command mv -f "$zdot/.zshrc.new" "$zshrc" # Exit if the new .zshrc file wasn't created correctly [[ $? -eq 0 ]] || { @@ -737,8 +738,7 @@ EOF # Exit if the new .zshrc file has syntax errors if ! command zsh -n "$zdot/.zshrc"; then _omz::log error "broken syntax in '"${zdot/#$HOME/\~}/.zshrc"'. Rolling back changes..." - command mv -f "$zdot/.zshrc" "$zdot/.zshrc.new" - command mv -f "$zdot/.zshrc.bck" "$zdot/.zshrc" + command mv -f "$zdot/.zshrc.bck" "$zshrc" return 1 fi From ff2b0e48aef19655316eb9d52b893bd713eb0759 Mon Sep 17 00:00:00 2001 From: LittleboyHarry Date: Wed, 10 Aug 2022 17:58:19 +0800 Subject: [PATCH 026/253] fix(debian): remove aptitude-only `-P` flag (#11053) --- plugins/debian/debian.plugin.zsh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh index e4db8fe33..f649a5b16 100644 --- a/plugins/debian/debian.plugin.zsh +++ b/plugins/debian/debian.plugin.zsh @@ -89,22 +89,22 @@ else alias afu="su -lc '$apt-file update'" alias au="su -lc '$apt_pref $apt_upgr' root" function ai() { - cmd="su -lc 'aptitude -P install $@' root" + cmd="su -lc '$apt_pref install $@' root" print "$cmd" eval "$cmd" } function ap() { - cmd="su -lc '$apt_pref -P purge $@' root" + cmd="su -lc '$apt_pref purge $@' root" print "$cmd" eval "$cmd" } function ar() { - cmd="su -lc '$apt_pref -P remove $@' root" + cmd="su -lc '$apt_pref remove $@' root" print "$cmd" eval "$cmd" } function aar() { - cmd="su -lc '$apt_pref -P autoremove $@' root" + cmd="su -lc '$apt_pref autoremove $@' root" print "$cmd" eval "$cmd" } From e857cc8cb93cf5f1f474c8a84b6ec644be7bdd2e Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Wed, 10 Aug 2022 07:17:47 -0700 Subject: [PATCH 027/253] feat(git): alias `gluc` to sync with current branch in upstream (#11101) --- plugins/git/README.md | 1 + plugins/git/git.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/git/README.md b/plugins/git/README.md index 0700dcc32..050c13d81 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -184,6 +184,7 @@ plugins=(... git) | gupom | git pull --rebase origin $(git_main_branch) | | gupomi | git pull --rebase=interactive origin $(git_main_branch) | | glum | git pull upstream $(git_main_branch) | +| gluc | git pull upstream $(git_current_branch) | | gwch | git whatchanged -p --abbrev-commit --pretty=medium | | gwip | git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]" | | gam | git am | diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index be6adc7ce..f25453bc1 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -310,6 +310,7 @@ alias gupav='git pull --rebase --autostash -v' alias gupom='git pull --rebase origin $(git_main_branch)' alias gupomi='git pull --rebase=interactive origin $(git_main_branch)' alias glum='git pull upstream $(git_main_branch)' +alias gluc='git pull upstream $(git_current_branch)' alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]"' From 835a0a5d17765243cabee782acb5905a9aab33c3 Mon Sep 17 00:00:00 2001 From: 180909 Date: Wed, 10 Aug 2022 22:18:59 +0800 Subject: [PATCH 028/253] feat(golang): add `gow` alias for `go work` (#11105) --- plugins/golang/README.md | 1 + plugins/golang/golang.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/golang/README.md b/plugins/golang/README.md index 979c89010..3b7d1e19f 100644 --- a/plugins/golang/README.md +++ b/plugins/golang/README.md @@ -35,3 +35,4 @@ plugins=(... golang) | gotod | `go tool dist` | Utility to bootstrap, build and test go runtime | | gotofx | `go tool fix` | Fixes an application to use newer features | | gov | `go vet` | Vet examines Go source code and reports suspicious constructs | +| gow | `go work` | Work provides access to operations on workspaces | diff --git a/plugins/golang/golang.plugin.zsh b/plugins/golang/golang.plugin.zsh index 4dafecd86..0dbaab069 100644 --- a/plugins/golang/golang.plugin.zsh +++ b/plugins/golang/golang.plugin.zsh @@ -32,3 +32,4 @@ alias gotoc='go tool compile' alias gotod='go tool dist' alias gotofx='go tool fix' alias gov='go vet' +alias gow='go work' From b74a15a80e24ae12e533a38e580cd0a939dece31 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sun, 14 Aug 2022 10:00:30 -0500 Subject: [PATCH 029/253] feat(gitfast): update to git-completion 1.3.7 (#11114) --- plugins/gitfast/git-completion.bash | 89 +++++++++++++++++++++------- plugins/gitfast/git-prompt.sh | 91 +++++++++++++++-------------- plugins/gitfast/update | 2 +- 3 files changed, 115 insertions(+), 67 deletions(-) diff --git a/plugins/gitfast/git-completion.bash b/plugins/gitfast/git-completion.bash index 2603ba7bb..dd06b5048 100644 --- a/plugins/gitfast/git-completion.bash +++ b/plugins/gitfast/git-completion.bash @@ -49,6 +49,11 @@ # and git-switch completion (e.g., completing "foo" when "origin/foo" # exists). # +# GIT_COMPLETION_SHOW_ALL_COMMANDS +# +# When set to "1" suggest all commands, including plumbing commands +# which are hidden by default (e.g. "cat-file" on "git ca"). +# # GIT_COMPLETION_SHOW_ALL # # When set to "1" suggest all options, including options which are @@ -321,19 +326,19 @@ __gitcomp_builtin_apply_default=" --exclude= --include= --no-add --stat --numsta __gitcomp_builtin_archive_default=" --output= --remote= --exec= --no-output -- --no-remote --no-exec" __gitcomp_builtin_bisect__helper_default=" --bisect-reset --bisect-next-check --bisect-terms --bisect-start --bisect-next --bisect-state --bisect-log --bisect-replay --bisect-skip --bisect-visualize --bisect-run --no-log --log" __gitcomp_builtin_blame_default=" --incremental --root --show-stats --progress --score-debug --show-name --show-number --porcelain --line-porcelain --show-email --ignore-rev= --ignore-revs-file= --color-lines --color-by-age --minimal --contents= --abbrev --no-incremental -- --no-root --no-show-stats --no-progress --no-score-debug --no-show-name --no-show-number --no-porcelain --no-line-porcelain --no-show-email --no-ignore-rev --no-ignore-revs-file --no-color-lines --no-color-by-age --no-minimal --no-contents --no-abbrev" -__gitcomp_builtin_branch_default=" --verbose --quiet --track --set-upstream-to= --unset-upstream --color --remotes --contains --no-contains --abbrev --all --delete --move --copy --list --show-current --create-reflog --edit-description --merged --no-merged --column --sort= --points-at= --ignore-case --format= -- --no-verbose --no-quiet --no-track --no-set-upstream-to --no-unset-upstream --no-color --no-remotes --no-abbrev --no-all --no-delete --no-move --no-copy --no-list --no-show-current --no-create-reflog --no-edit-description --no-column --no-sort --no-points-at --no-ignore-case --no-format" +__gitcomp_builtin_branch_default=" --verbose --quiet --track --set-upstream-to= --unset-upstream --color --remotes --contains --no-contains --abbrev --all --delete --move --copy --list --show-current --create-reflog --edit-description --merged --no-merged --column --sort= --points-at= --ignore-case --recurse-submodules --format= -- --no-verbose --no-quiet --no-track --no-set-upstream-to --no-unset-upstream --no-color --no-remotes --no-abbrev --no-all --no-delete --no-move --no-copy --no-list --no-show-current --no-create-reflog --no-edit-description --no-column --no-sort --no-points-at --no-ignore-case --no-recurse-submodules --no-format" __gitcomp_builtin_bugreport_default=" --output-directory= --suffix= --no-output-directory -- --no-suffix" -__gitcomp_builtin_cat_file_default=" --textconv --filters --path= --allow-unknown-type --buffer --batch --batch-check --follow-symlinks --batch-all-objects --unordered --no-path -- --no-allow-unknown-type --no-buffer --no-follow-symlinks --no-batch-all-objects --no-unordered" +__gitcomp_builtin_cat_file_default=" --allow-unknown-type --batch --batch-check --batch-command --batch-all-objects --buffer --follow-symlinks --unordered --textconv --filters --path= --no-allow-unknown-type -- --no-buffer --no-follow-symlinks --no-unordered --no-path" __gitcomp_builtin_check_attr_default=" --all --cached --stdin --no-all -- --no-cached --no-stdin" __gitcomp_builtin_check_ignore_default=" --quiet --verbose --stdin --non-matching --no-index --index -- --no-quiet --no-verbose --no-stdin --no-non-matching" __gitcomp_builtin_check_mailmap_default=" --stdin --no-stdin" __gitcomp_builtin_checkout_default=" --guess --overlay --quiet --recurse-submodules --progress --merge --conflict= --detach --track --orphan= --ignore-other-worktrees --ours --theirs --patch --ignore-skip-worktree-bits --pathspec-from-file= --pathspec-file-nul --no-guess -- --no-overlay --no-quiet --no-recurse-submodules --no-progress --no-merge --no-conflict --no-detach --no-track --no-orphan --no-ignore-other-worktrees --no-patch --no-ignore-skip-worktree-bits --no-pathspec-from-file --no-pathspec-file-nul" __gitcomp_builtin_checkout__worker_default=" --prefix= --no-prefix" -__gitcomp_builtin_checkout_index_default=" --all --force --quiet --no-create --index --stdin --temp --prefix= --stage= --create -- --no-all --no-force --no-quiet --no-index --no-stdin --no-temp --no-prefix" +__gitcomp_builtin_checkout_index_default=" --all --ignore-skip-worktree-bits --force --quiet --no-create --index --stdin --temp --prefix= --stage= --create -- --no-all --no-ignore-skip-worktree-bits --no-force --no-quiet --no-index --no-stdin --no-temp --no-prefix" __gitcomp_builtin_cherry_default=" --abbrev --verbose --no-abbrev -- --no-verbose" __gitcomp_builtin_cherry_pick_default=" --quit --continue --abort --skip --cleanup= --no-commit --edit --signoff --mainline= --rerere-autoupdate --strategy= --strategy-option= --gpg-sign --ff --allow-empty --allow-empty-message --keep-redundant-commits --commit -- --no-cleanup --no-edit --no-signoff --no-mainline --no-rerere-autoupdate --no-strategy --no-strategy-option --no-gpg-sign --no-ff --no-allow-empty --no-allow-empty-message --no-keep-redundant-commits" __gitcomp_builtin_clean_default=" --quiet --dry-run --interactive --exclude= --no-quiet -- --no-dry-run --no-interactive" -__gitcomp_builtin_clone_default=" --verbose --quiet --progress --reject-shallow --no-checkout --bare --mirror --local --no-hardlinks --shared --recurse-submodules --jobs= --template= --reference= --reference-if-able= --dissociate --origin= --branch= --upload-pack= --depth= --shallow-since= --shallow-exclude= --single-branch --no-tags --shallow-submodules --separate-git-dir= --config= --server-option= --ipv4 --ipv6 --filter= --remote-submodules --sparse --checkout --hardlinks --tags -- --no-verbose --no-quiet --no-progress --no-reject-shallow --no-bare --no-mirror --no-local --no-shared --no-recurse-submodules --no-recursive --no-jobs --no-template --no-reference --no-reference-if-able --no-dissociate --no-origin --no-branch --no-upload-pack --no-depth --no-shallow-since --no-shallow-exclude --no-single-branch --no-shallow-submodules --no-separate-git-dir --no-config --no-server-option --no-ipv4 --no-ipv6 --no-filter --no-remote-submodules --no-sparse" +__gitcomp_builtin_clone_default=" --verbose --quiet --progress --reject-shallow --no-checkout --bare --mirror --local --no-hardlinks --shared --recurse-submodules --jobs= --template= --reference= --reference-if-able= --dissociate --origin= --branch= --upload-pack= --depth= --shallow-since= --shallow-exclude= --single-branch --no-tags --shallow-submodules --separate-git-dir= --config= --server-option= --ipv4 --ipv6 --filter= --also-filter-submodules --remote-submodules --sparse --checkout --hardlinks --tags -- --no-verbose --no-quiet --no-progress --no-reject-shallow --no-bare --no-mirror --no-local --no-shared --no-recurse-submodules --no-recursive --no-jobs --no-template --no-reference --no-reference-if-able --no-dissociate --no-origin --no-branch --no-upload-pack --no-depth --no-shallow-since --no-shallow-exclude --no-single-branch --no-shallow-submodules --no-separate-git-dir --no-config --no-server-option --no-ipv4 --no-ipv6 --no-filter --no-also-filter-submodules --no-remote-submodules --no-sparse" __gitcomp_builtin_column_default=" --command= --mode --raw-mode= --width= --indent= --nl= --padding= --no-command -- --no-mode --no-raw-mode --no-width --no-indent --no-nl --no-padding" __gitcomp_builtin_commit_default=" --quiet --verbose --file= --author= --date= --message= --reedit-message= --reuse-message= --fixup= --squash= --reset-author --trailer= --signoff --template= --edit --cleanup= --status --gpg-sign --all --include --interactive --patch --only --no-verify --dry-run --short --branch --ahead-behind --porcelain --long --null --amend --no-post-rewrite --untracked-files --pathspec-from-file= --pathspec-file-nul --verify --post-rewrite -- --no-quiet --no-verbose --no-file --no-author --no-date --no-message --no-reedit-message --no-reuse-message --no-fixup --no-squash --no-reset-author --no-signoff --no-template --no-edit --no-cleanup --no-status --no-gpg-sign --no-all --no-include --no-interactive --no-patch --no-only --no-dry-run --no-short --no-branch --no-ahead-behind --no-porcelain --no-long --no-null --no-amend --no-untracked-files --no-pathspec-from-file --no-pathspec-file-nul" __gitcomp_builtin_commit_graph_default=" --object-dir= --no-object-dir" @@ -346,31 +351,33 @@ __gitcomp_builtin_describe_default=" --contains --debug --all --tags --long --fi __gitcomp_builtin_difftool_default=" --gui --dir-diff --no-prompt --symlinks --tool= --tool-help --trust-exit-code --extcmd= --no-index --index -- --no-gui --no-dir-diff --no-symlinks --no-tool --no-tool-help --no-trust-exit-code --no-extcmd" __gitcomp_builtin_env__helper_default=" --type= --default= --exit-code --no-default -- --no-exit-code" __gitcomp_builtin_fast_export_default=" --progress= --signed-tags= --tag-of-filtered-object= --reencode= --export-marks= --import-marks= --import-marks-if-exists= --fake-missing-tagger --full-tree --use-done-feature --no-data --refspec= --anonymize --anonymize-map= --reference-excluded-parents --show-original-ids --mark-tags --data -- --no-progress --no-signed-tags --no-tag-of-filtered-object --no-reencode --no-export-marks --no-import-marks --no-import-marks-if-exists --no-fake-missing-tagger --no-full-tree --no-use-done-feature --no-refspec --no-anonymize --no-reference-excluded-parents --no-show-original-ids --no-mark-tags" -__gitcomp_builtin_fetch_default=" --verbose --quiet --all --set-upstream --append --atomic --upload-pack= --force --multiple --tags --jobs= --prefetch --prune --prune-tags --recurse-submodules --dry-run --write-fetch-head --keep --update-head-ok --progress --depth= --shallow-since= --shallow-exclude= --deepen= --unshallow --update-shallow --refmap= --server-option= --ipv4 --ipv6 --negotiation-tip= --negotiate-only --filter= --auto-maintenance --auto-gc --show-forced-updates --write-commit-graph --stdin --no-verbose -- --no-quiet --no-all --no-set-upstream --no-append --no-atomic --no-upload-pack --no-force --no-multiple --no-tags --no-jobs --no-prefetch --no-prune --no-prune-tags --no-recurse-submodules --no-dry-run --no-write-fetch-head --no-keep --no-update-head-ok --no-progress --no-depth --no-shallow-since --no-shallow-exclude --no-deepen --no-update-shallow --no-server-option --no-ipv4 --no-ipv6 --no-negotiation-tip --no-negotiate-only --no-filter --no-auto-maintenance --no-auto-gc --no-show-forced-updates --no-write-commit-graph --no-stdin" +__gitcomp_builtin_fetch_default=" --verbose --quiet --all --set-upstream --append --atomic --upload-pack= --force --multiple --tags --jobs= --prefetch --prune --prune-tags --recurse-submodules --dry-run --write-fetch-head --keep --update-head-ok --progress --depth= --shallow-since= --shallow-exclude= --deepen= --unshallow --refetch --update-shallow --refmap= --server-option= --ipv4 --ipv6 --negotiation-tip= --negotiate-only --filter= --auto-maintenance --auto-gc --show-forced-updates --write-commit-graph --stdin --no-verbose -- --no-quiet --no-all --no-set-upstream --no-append --no-atomic --no-upload-pack --no-force --no-multiple --no-tags --no-jobs --no-prefetch --no-prune --no-prune-tags --no-recurse-submodules --no-dry-run --no-write-fetch-head --no-keep --no-update-head-ok --no-progress --no-depth --no-shallow-since --no-shallow-exclude --no-deepen --no-update-shallow --no-server-option --no-ipv4 --no-ipv6 --no-negotiation-tip --no-negotiate-only --no-filter --no-auto-maintenance --no-auto-gc --no-show-forced-updates --no-write-commit-graph --no-stdin" __gitcomp_builtin_fmt_merge_msg_default=" --log --message= --into-name= --file= --no-log -- --no-message --no-into-name --no-file" __gitcomp_builtin_for_each_ref_default=" --shell --perl --python --tcl --count= --format= --color --sort= --points-at= --merged --no-merged --contains --no-contains --ignore-case -- --no-shell --no-perl --no-python --no-tcl --no-count --no-format --no-color --no-sort --no-points-at --no-ignore-case" __gitcomp_builtin_for_each_repo_default=" --config= --no-config" __gitcomp_builtin_format_patch_default=" --numbered --no-numbered --signoff --stdout --cover-letter --numbered-files --suffix= --start-number= --reroll-count= --filename-max-length= --rfc --cover-from-description= --subject-prefix= --output-directory= --keep-subject --no-binary --zero-commit --ignore-if-in-upstream --no-stat --add-header= --to= --cc= --from --in-reply-to= --attach --inline --thread --signature= --base= --signature-file= --quiet --progress --interdiff= --range-diff= --creation-factor= --binary -- --no-numbered --no-signoff --no-stdout --no-cover-letter --no-numbered-files --no-suffix --no-start-number --no-reroll-count --no-filename-max-length --no-cover-from-description --no-zero-commit --no-ignore-if-in-upstream --no-add-header --no-to --no-cc --no-from --no-in-reply-to --no-attach --no-thread --no-signature --no-base --no-signature-file --no-quiet --no-progress --no-interdiff --no-range-diff --no-creation-factor" __gitcomp_builtin_fsck_default=" --verbose --unreachable --dangling --tags --root --cache --reflogs --full --connectivity-only --strict --lost-found --progress --name-objects --no-verbose -- --no-unreachable --no-dangling --no-tags --no-root --no-cache --no-reflogs --no-full --no-connectivity-only --no-strict --no-lost-found --no-progress --no-name-objects" __gitcomp_builtin_fsck_objects_default=" --verbose --unreachable --dangling --tags --root --cache --reflogs --full --connectivity-only --strict --lost-found --progress --name-objects --no-verbose -- --no-unreachable --no-dangling --no-tags --no-root --no-cache --no-reflogs --no-full --no-connectivity-only --no-strict --no-lost-found --no-progress --no-name-objects" +__gitcomp_builtin_fsmonitor__daemon_default="" __gitcomp_builtin_gc_default=" --quiet --prune --aggressive --keep-largest-pack --no-quiet -- --no-prune --no-aggressive --no-keep-largest-pack" __gitcomp_builtin_grep_default=" --cached --no-index --untracked --exclude-standard --recurse-submodules --invert-match --ignore-case --word-regexp --text --textconv --recursive --max-depth= --extended-regexp --basic-regexp --fixed-strings --perl-regexp --line-number --column --full-name --files-with-matches --name-only --files-without-match --only-matching --count --color --break --heading --context= --before-context= --after-context= --threads= --show-function --function-context --and --or --not --quiet --all-match --index -- --no-cached --no-untracked --no-exclude-standard --no-recurse-submodules --no-invert-match --no-ignore-case --no-word-regexp --no-text --no-textconv --no-recursive --no-extended-regexp --no-basic-regexp --no-fixed-strings --no-perl-regexp --no-line-number --no-column --no-full-name --no-files-with-matches --no-name-only --no-files-without-match --no-only-matching --no-count --no-color --no-break --no-heading --no-context --no-before-context --no-after-context --no-threads --no-show-function --no-function-context --no-or --no-quiet --no-all-match" __gitcomp_builtin_hash_object_default=" --stdin --stdin-paths --no-filters --literally --path= --filters -- --no-stdin --no-stdin-paths --no-literally --no-path" -__gitcomp_builtin_help_default=" --all --man --web --info --verbose --guides --config --no-man -- --no-web --no-info --no-verbose" +__gitcomp_builtin_help_default=" --all --external-commands --aliases --man --web --info --verbose --guides --config --no-external-commands -- --no-aliases --no-man --no-web --no-info --no-verbose" +__gitcomp_builtin_hook_default="" __gitcomp_builtin_init_default=" --template= --bare --shared --quiet --separate-git-dir= --initial-branch= --object-format= --no-template -- --no-bare --no-quiet --no-separate-git-dir --no-initial-branch --no-object-format" __gitcomp_builtin_init_db_default=" --template= --bare --shared --quiet --separate-git-dir= --initial-branch= --object-format= --no-template -- --no-bare --no-quiet --no-separate-git-dir --no-initial-branch --no-object-format" __gitcomp_builtin_interpret_trailers_default=" --in-place --trim-empty --where= --if-exists= --if-missing= --only-trailers --only-input --unfold --parse --no-divider --trailer= --divider -- --no-in-place --no-trim-empty --no-where --no-if-exists --no-if-missing --no-only-trailers --no-only-input --no-unfold --no-trailer" __gitcomp_builtin_log_default=" --quiet --source --use-mailmap --decorate-refs= --decorate-refs-exclude= --decorate --no-quiet -- --no-source --no-use-mailmap --no-mailmap --no-decorate-refs --no-decorate-refs-exclude --no-decorate" __gitcomp_builtin_ls_files_default=" --cached --deleted --modified --others --ignored --stage --killed --directory --eol --empty-directory --unmerged --resolve-undo --exclude= --exclude-from= --exclude-per-directory= --exclude-standard --full-name --recurse-submodules --error-unmatch --with-tree= --abbrev --debug --deduplicate --sparse --no-cached -- --no-deleted --no-modified --no-others --no-ignored --no-stage --no-killed --no-directory --no-eol --no-empty-directory --no-unmerged --no-resolve-undo --no-exclude-per-directory --no-recurse-submodules --no-error-unmatch --no-with-tree --no-abbrev --no-debug --no-deduplicate --no-sparse" __gitcomp_builtin_ls_remote_default=" --quiet --upload-pack= --tags --heads --refs --get-url --sort= --symref --server-option= --no-quiet -- --no-upload-pack --no-tags --no-heads --no-refs --no-get-url --no-sort --no-symref --no-server-option" -__gitcomp_builtin_ls_tree_default=" --long --name-only --name-status --full-name --full-tree --abbrev --no-long -- --no-name-only --no-name-status --no-full-name --no-full-tree --no-abbrev" +__gitcomp_builtin_ls_tree_default=" --long --name-only --name-status --object-only --full-name --full-tree --format= --abbrev --no-full-name -- --no-full-tree --no-abbrev" __gitcomp_builtin_merge_default=" --stat --summary --log --squash --commit --edit --cleanup= --ff --ff-only --rerere-autoupdate --verify-signatures --strategy= --strategy-option= --message= --file --into-name= --verbose --quiet --abort --quit --continue --allow-unrelated-histories --progress --gpg-sign --autostash --overwrite-ignore --signoff --no-verify --verify -- --no-stat --no-summary --no-log --no-squash --no-commit --no-edit --no-cleanup --no-ff --no-rerere-autoupdate --no-verify-signatures --no-strategy --no-strategy-option --no-message --no-into-name --no-verbose --no-quiet --no-abort --no-quit --no-continue --no-allow-unrelated-histories --no-progress --no-gpg-sign --no-autostash --no-overwrite-ignore --no-signoff" __gitcomp_builtin_merge_base_default=" --all --octopus --independent --is-ancestor --fork-point --no-all" __gitcomp_builtin_merge_file_default=" --stdout --diff3 --zdiff3 --ours --theirs --union --marker-size= --quiet --no-stdout -- --no-diff3 --no-zdiff3 --no-ours --no-theirs --no-union --no-marker-size --no-quiet" __gitcomp_builtin_mktree_default=" --missing --batch --no-missing -- --no-batch" __gitcomp_builtin_multi_pack_index_default=" --object-dir= --no-object-dir" __gitcomp_builtin_mv_default=" --verbose --dry-run --sparse --no-verbose -- --no-dry-run --no-sparse" -__gitcomp_builtin_name_rev_default=" --name-only --tags --refs= --exclude= --all --stdin --undefined --always --no-name-only -- --no-tags --no-refs --no-exclude --no-all --no-stdin --no-undefined --no-always" +__gitcomp_builtin_name_rev_default=" --name-only --tags --refs= --exclude= --all --stdin --annotate-stdin --undefined --always --no-name-only -- --no-tags --no-refs --no-exclude --no-all --no-stdin --no-annotate-stdin --no-undefined --no-always" __gitcomp_builtin_notes_default=" --ref= --no-ref" __gitcomp_builtin_pack_objects_default=" --quiet --progress --all-progress --all-progress-implied --index-version= --max-pack-size= --local --incremental --window= --window-memory= --depth= --reuse-delta --reuse-object --delta-base-offset --threads= --non-empty --revs --unpacked --all --reflog --indexed-objects --stdin-packs --stdout --include-tag --keep-unreachable --pack-loose-unreachable --unpack-unreachable --sparse --thin --shallow --honor-pack-keep --keep-pack= --compression= --keep-true-parents --use-bitmap-index --write-bitmap-index --filter= --missing= --exclude-promisor-objects --delta-islands --uri-protocol= --no-quiet -- --no-progress --no-all-progress --no-all-progress-implied --no-local --no-incremental --no-window --no-depth --no-reuse-delta --no-reuse-object --no-delta-base-offset --no-threads --no-non-empty --no-revs --no-stdin-packs --no-stdout --no-include-tag --no-keep-unreachable --no-pack-loose-unreachable --no-unpack-unreachable --no-sparse --no-thin --no-shallow --no-honor-pack-keep --no-keep-pack --no-compression --no-keep-true-parents --no-use-bitmap-index --no-write-bitmap-index --no-filter --no-exclude-promisor-objects --no-delta-islands --no-uri-protocol" __gitcomp_builtin_pack_refs_default=" --all --prune --no-all -- --no-prune" @@ -383,12 +390,12 @@ __gitcomp_builtin_range_diff_default=" --creation-factor= --no-dual-color --note __gitcomp_builtin_read_tree_default=" --index-output= --empty --verbose --trivial --aggressive --reset --prefix= --exclude-per-directory= --dry-run --no-sparse-checkout --debug-unpack --recurse-submodules --quiet --sparse-checkout -- --no-empty --no-verbose --no-trivial --no-aggressive --no-reset --no-dry-run --no-debug-unpack --no-recurse-submodules --no-quiet" __gitcomp_builtin_rebase_default=" --onto= --keep-base --no-verify --quiet --verbose --no-stat --signoff --committer-date-is-author-date --reset-author-date --ignore-whitespace --whitespace= --force-rebase --no-ff --continue --skip --abort --quit --edit-todo --show-current-patch --apply --merge --interactive --rerere-autoupdate --empty= --autosquash --gpg-sign --autostash --exec= --rebase-merges --fork-point --strategy= --strategy-option= --root --reschedule-failed-exec --reapply-cherry-picks --verify --stat --ff -- --no-onto --no-keep-base --no-quiet --no-verbose --no-signoff --no-committer-date-is-author-date --no-reset-author-date --no-ignore-whitespace --no-whitespace --no-force-rebase --no-rerere-autoupdate --no-autosquash --no-gpg-sign --no-autostash --no-exec --no-rebase-merges --no-fork-point --no-strategy --no-strategy-option --no-root --no-reschedule-failed-exec --no-reapply-cherry-picks" __gitcomp_builtin_receive_pack_default=" --quiet --no-quiet" -__gitcomp_builtin_reflog_default=" --quiet --source --use-mailmap --decorate-refs= --decorate-refs-exclude= --decorate --no-quiet -- --no-source --no-use-mailmap --no-mailmap --no-decorate-refs --no-decorate-refs-exclude --no-decorate" +__gitcomp_builtin_reflog_default="" __gitcomp_builtin_remote_default=" --verbose --no-verbose" __gitcomp_builtin_repack_default=" --quiet --local --write-bitmap-index --delta-islands --unpack-unreachable= --keep-unreachable --window= --window-memory= --depth= --threads= --max-pack-size= --pack-kept-objects --keep-pack= --geometric= --write-midx --no-quiet -- --no-local --no-write-bitmap-index --no-delta-islands --no-unpack-unreachable --no-keep-unreachable --no-window --no-window-memory --no-depth --no-threads --no-max-pack-size --no-pack-kept-objects --no-keep-pack --no-geometric --no-write-midx" __gitcomp_builtin_replace_default=" --list --delete --edit --graft --convert-graft-file --raw --format= --no-raw -- --no-format" __gitcomp_builtin_rerere_default=" --rerere-autoupdate --no-rerere-autoupdate" -__gitcomp_builtin_reset_default=" --quiet --mixed --soft --hard --merge --keep --recurse-submodules --patch --intent-to-add --pathspec-from-file= --pathspec-file-nul --no-quiet -- --no-mixed --no-soft --no-hard --no-merge --no-keep --no-recurse-submodules --no-patch --no-intent-to-add --no-pathspec-from-file --no-pathspec-file-nul" +__gitcomp_builtin_reset_default=" --quiet --no-refresh --mixed --soft --hard --merge --keep --recurse-submodules --patch --intent-to-add --pathspec-from-file= --pathspec-file-nul --refresh -- --no-quiet --no-mixed --no-soft --no-hard --no-merge --no-keep --no-recurse-submodules --no-patch --no-intent-to-add --no-pathspec-from-file --no-pathspec-file-nul" __gitcomp_builtin_restore_default=" --source= --staged --worktree --ignore-unmerged --overlay --quiet --recurse-submodules --progress --merge --conflict= --ours --theirs --patch --ignore-skip-worktree-bits --pathspec-from-file= --pathspec-file-nul --no-source -- --no-staged --no-worktree --no-ignore-unmerged --no-overlay --no-quiet --no-recurse-submodules --no-progress --no-merge --no-conflict --no-patch --no-ignore-skip-worktree-bits --no-pathspec-from-file --no-pathspec-file-nul" __gitcomp_builtin_revert_default=" --quit --continue --abort --skip --cleanup= --no-commit --edit --signoff --mainline= --rerere-autoupdate --strategy= --strategy-option= --gpg-sign --commit -- --no-cleanup --no-edit --no-signoff --no-mainline --no-rerere-autoupdate --no-strategy --no-strategy-option --no-gpg-sign" __gitcomp_builtin_rm_default=" --dry-run --quiet --cached --ignore-unmatch --sparse --pathspec-from-file= --pathspec-file-nul --no-dry-run -- --no-quiet --no-cached --no-ignore-unmatch --no-sparse --no-pathspec-from-file --no-pathspec-file-nul" @@ -416,7 +423,7 @@ __gitcomp_builtin_verify_tag_default=" --verbose --raw --format= --no-verbose -- __gitcomp_builtin_version_default=" --build-options --no-build-options" __gitcomp_builtin_whatchanged_default=" --quiet --source --use-mailmap --decorate-refs= --decorate-refs-exclude= --decorate --no-quiet -- --no-source --no-use-mailmap --no-mailmap --no-decorate-refs --no-decorate-refs-exclude --no-decorate" __gitcomp_builtin_write_tree_default=" --missing-ok --prefix= --no-missing-ok -- --no-prefix" -__gitcomp_builtin_send_email_default="--cc= --smtp-server= --identity= --smtp-ssl --sender= --from= --cc-cover --no-to-cover --sendmail-cmd= --signed-off-cc --signed-off-by-cc --in-reply-to= --no-cc --confirm= --no-bcc --to= --annotate --smtp-encryption= --relogin-delay= --to-cmd= --smtp-domain= --smtp-auth= --bcc= --quiet --subject= --chain-reply-to --cc-cmd= --no-format-patch --transfer-encoding= --smtp-user= --reply-to= --force --dry-run --no-identity --no-validate --8bit-encoding= --to-cover --compose --thread --format-patch --no-thread --smtp-server-option= --compose-encoding= --smtp-server-port= --no-smtp-auth --no-signed-off-cc --no-signed-off-by-cc --smtp-debug= --no-suppress-from --suppress-from --no-to --dump-aliases --xmailer --no-annotate --no-cc-cover --smtp-pass= --smtp-ssl-cert-path= --no-chain-reply-to --suppress-cc= --validate --batch-size= --envelope-sender= --no-xmailer --numbered --no-numbered --signoff --stdout --cover-letter --numbered-files --suffix= --start-number= --reroll-count= --filename-max-length= --rfc --cover-from-description= --subject-prefix= --output-directory= --keep-subject --no-binary --zero-commit --ignore-if-in-upstream --no-stat --add-header= --from --attach --inline --signature= --base= --signature-file= --progress --interdiff= --range-diff= --creation-factor= --binary -- --no-signoff --no-stdout --no-cover-letter --no-numbered-files --no-suffix --no-start-number --no-reroll-count --no-filename-max-length --no-cover-from-description --no-zero-commit --no-ignore-if-in-upstream --no-add-header --no-from --no-in-reply-to --no-attach --no-signature --no-base --no-signature-file --no-quiet --no-progress --no-interdiff --no-range-diff --no-creation-factor" +__gitcomp_builtin_send_email_default="--sender= --from= --smtp-auth= --8bit-encoding= --no-format-patch --no-bcc --no-suppress-from --no-annotate --relogin-delay= --no-cc --no-signed-off-cc --no-signed-off-by-cc --no-chain-reply-to --smtp-debug= --smtp-domain= --chain-reply-to --dry-run --compose --bcc= --smtp-user= --thread --cc-cover --identity= --to= --reply-to= --no-cc-cover --suppress-cc= --to-cmd= --smtp-server= --smtp-ssl-cert-path= --no-thread --smtp-server-option= --quiet --batch-size= --envelope-sender= --smtp-ssl --no-to --validate --format-patch --suppress-from --cc= --compose-encoding= --to-cover --in-reply-to= --annotate --smtp-encryption= --cc-cmd= --smtp-server-port= --smtp-pass= --signed-off-cc --signed-off-by-cc --no-xmailer --subject= --no-to-cover --confirm= --transfer-encoding= --no-smtp-auth --sendmail-cmd= --no-validate --no-identity --dump-aliases --xmailer --force --numbered --no-numbered --signoff --stdout --cover-letter --numbered-files --suffix= --start-number= --reroll-count= --filename-max-length= --rfc --cover-from-description= --subject-prefix= --output-directory= --keep-subject --no-binary --zero-commit --ignore-if-in-upstream --no-stat --add-header= --from --attach --inline --signature= --base= --signature-file= --progress --interdiff= --range-diff= --creation-factor= --binary -- --no-signoff --no-stdout --no-cover-letter --no-numbered-files --no-suffix --no-start-number --no-reroll-count --no-filename-max-length --no-cover-from-description --no-zero-commit --no-ignore-if-in-upstream --no-add-header --no-from --no-in-reply-to --no-attach --no-signature --no-base --no-signature-file --no-quiet --no-progress --no-interdiff --no-range-diff --no-creation-factor" __gitcomp_builtin_get_default () { @@ -2841,6 +2848,10 @@ _git_restore () --*) __gitcomp_builtin restore ;; + *) + if __git rev-parse --verify --quiet HEAD >/dev/null; then + __git_complete_index_file "--modified" + fi esac } @@ -2942,9 +2953,37 @@ _git_show_branch () __git_complete_revlist } +__gitcomp_directories () +{ + local _tmp_dir _tmp_completions _found=0 + + # Get the directory of the current token; this differs from dirname + # in that it keeps up to the final trailing slash. If no slash found + # that's fine too. + [[ "$cur" =~ .*/ ]] + _tmp_dir=$BASH_REMATCH + + # Find possible directory completions, adding trailing '/' characters, + # de-quoting, and handling unusual characters. + while IFS= read -r -d $'\0' c ; do + # If there are directory completions, find ones that start + # with "$cur", the current token, and put those in COMPREPLY + if [[ $c == "$cur"* ]]; then + COMPREPLY+=("$c/") + _found=1 + fi + done < <(git ls-tree -z -d --name-only HEAD $_tmp_dir) + + if [[ $_found == 0 ]] && [[ "$cur" =~ /$ ]]; then + # No possible further completions any deeper, so assume we're at + # a leaf directory and just consider it complete + __gitcomp_direct_append "$cur " + fi +} + _git_sparse_checkout () { - local subcommands="list init set disable" + local subcommands="list init set disable add reapply" local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then __gitcomp "$subcommands" @@ -2952,14 +2991,14 @@ _git_sparse_checkout () fi case "$subcommand,$cur" in - init,--*) - __gitcomp_opts "--cone" - ;; - set,--*) - __gitcomp_opts "--stdin" - ;; - *) + *,--*) + __gitcomp_builtin sparse-checkout_$subcommand "" "--" ;; + set,*|add,*) + if [ "$(__git config core.sparseCheckoutCone)" == "true" ] || + [ -n "$(__git_find_on_cmdline --cone)" ]; then + __gitcomp_directories + fi esac } @@ -3411,7 +3450,13 @@ __git_main () then __gitcomp "$GIT_TESTING_PORCELAIN_COMMAND_LIST" else - __gitcomp_nl "$(__git --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config)" + local list_cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config + + if test "${GIT_COMPLETION_SHOW_ALL_COMMANDS-}" = "1" + then + list_cmds=builtins,$list_cmds + fi + __gitcomp_nl "$(__git --list-cmds=$list_cmds)" fi ;; esac @@ -3589,9 +3634,9 @@ if ! git --list-cmds=main >/dev/null 2>&1; then __git_cmds[list-complete]="apply blame cherry config difftool fsck help instaweb mergetool prune reflog remote repack replace request-pull send-email show-branch stage whatchanged" __git_cmds[list-guide]="attributes cli core-tutorial credentials cvs-migration diffcore everyday faq glossary hooks ignore mailmap modules namespaces remote-helpers repository-layout revisions submodules tutorial tutorial-2 workflows" __git_cmds[list-mainporcelain]="add am archive bisect branch bundle checkout cherry-pick citool clean clone commit describe diff fetch format-patch gc grep gui init log maintenance merge mv notes pull push range-diff rebase reset restore revert rm shortlog show sparse-checkout stash status submodule switch tag worktree gitk" - __git_cmds[main]="add add--interactive am annotate apply archimport archive bisect bisect--helper blame branch bugreport bundle cat-file check-attr check-ignore check-mailmap check-ref-format checkout checkout--worker checkout-index cherry cherry-pick citool clean clone column commit commit-graph commit-tree config count-objects credential credential-cache credential-cache--daemon credential-gnome-keyring credential-libsecret credential-store cvsexportcommit cvsimport cvsserver daemon describe diff diff-files diff-index diff-tree difftool difftool--helper env--helper fast-export fast-import fetch fetch-pack filter-branch fmt-merge-msg for-each-ref for-each-repo format-patch fsck fsck-objects gc get-tar-commit-id grep gui gui--askpass hash-object help http-backend http-fetch http-push imap-send index-pack init init-db instaweb interpret-trailers log ls-files ls-remote ls-tree mailinfo mailsplit maintenance merge merge-base merge-file merge-index merge-octopus merge-one-file merge-ours merge-recursive merge-recursive-ours merge-recursive-theirs merge-resolve merge-subtree merge-tree mergetool mktag mktree multi-pack-index mv mw name-rev notes p4 pack-objects pack-redundant pack-refs patch-id pickaxe prune prune-packed pull push quiltimport range-diff read-tree rebase receive-pack reflog remote remote-ext remote-fd remote-ftp remote-ftps remote-http remote-https remote-mediawiki repack replace request-pull rerere reset restore rev-list rev-parse revert rm send-email send-pack sh-i18n--envsubst shell shortlog show show-branch show-index show-ref sparse-checkout stage stash status stripspace submodule submodule--helper subtree svn switch symbolic-ref tag unpack-file unpack-objects update-index update-ref update-server-info upload-archive upload-archive--writer upload-pack var verify-commit verify-pack verify-tag version web--browse whatchanged worktree write-tree" + __git_cmds[main]="add add--interactive am annotate apply archimport archive bisect bisect--helper blame branch bugreport bundle cat-file check-attr check-ignore check-mailmap check-ref-format checkout checkout--worker checkout-index cherry cherry-pick citool clean clone column commit commit-graph commit-tree config count-objects credential credential-cache credential-cache--daemon credential-store cvsexportcommit cvsimport cvsserver daemon describe diff diff-files diff-index diff-tree difftool difftool--helper env--helper fast-export fast-import fetch fetch-pack filter-branch fmt-merge-msg for-each-ref for-each-repo format-patch fsck fsck-objects fsmonitor--daemon gc get-tar-commit-id grep gui gui--askpass hash-object help hook http-backend http-fetch http-push imap-send index-pack init init-db instaweb interpret-trailers legacy-rebase legacy-stash log ls-files ls-remote ls-tree mailinfo mailsplit maintenance merge merge-base merge-file merge-index merge-octopus merge-one-file merge-ours merge-recursive merge-recursive-ours merge-recursive-theirs merge-resolve merge-subtree merge-tree mergetool mktag mktree multi-pack-index mv name-rev notes p4 pack-objects pack-redundant pack-refs patch-id pickaxe prune prune-packed pull push quiltimport range-diff read-tree rebase rebase--helper receive-pack reflog relink remote remote-ext remote-fd remote-ftp remote-ftps remote-http remote-https remote-testsvn repack replace request-pull rerere reset restore rev-list rev-parse revert rm send-email send-pack serve sh-i18n--envsubst shell shortlog show show-branch show-index show-ref sparse-checkout stage stash status stripspace submodule submodule--helper svn switch symbolic-ref tag unpack-file unpack-objects update-index update-ref update-server-info upload-archive upload-archive--writer upload-pack var verify-commit verify-pack verify-tag version web--browse whatchanged worktree write-tree" __git_cmds[others]="" - __git_cmds[parseopt]="add am apply archive bisect--helper blame branch bugreport cat-file check-attr check-ignore check-mailmap checkout checkout--worker checkout-index cherry cherry-pick clean clone column commit commit-graph config count-objects credential-cache credential-cache--daemon credential-store describe difftool env--helper fast-export fetch fmt-merge-msg for-each-ref for-each-repo format-patch fsck fsck-objects gc grep hash-object help init init-db interpret-trailers log ls-files ls-remote ls-tree merge merge-base merge-file mktree multi-pack-index mv name-rev notes pack-objects pack-refs pickaxe prune prune-packed pull push range-diff read-tree rebase receive-pack reflog remote repack replace rerere reset restore revert rm send-pack shortlog show show-branch show-index show-ref sparse-checkout stage stash status stripspace switch symbolic-ref tag update-index update-ref update-server-info upload-pack verify-commit verify-pack verify-tag version whatchanged write-tree " + __git_cmds[parseopt]="add am apply archive bisect--helper blame branch bugreport cat-file check-attr check-ignore check-mailmap checkout checkout--worker checkout-index cherry cherry-pick clean clone column commit commit-graph config count-objects credential-cache credential-cache--daemon credential-store describe difftool env--helper fast-export fetch fmt-merge-msg for-each-ref for-each-repo format-patch fsck fsck-objects fsmonitor--daemon gc grep hash-object help hook init init-db interpret-trailers log ls-files ls-remote ls-tree merge merge-base merge-file mktree multi-pack-index mv name-rev notes pack-objects pack-refs pickaxe prune prune-packed pull push range-diff read-tree rebase receive-pack reflog remote repack replace rerere reset restore revert rm send-pack shortlog show show-branch show-index show-ref sparse-checkout stage stash status stripspace switch symbolic-ref tag update-index update-ref update-server-info upload-pack verify-commit verify-pack verify-tag version whatchanged write-tree " # Override __git __git () diff --git a/plugins/gitfast/git-prompt.sh b/plugins/gitfast/git-prompt.sh index db7c0068f..1435548e0 100644 --- a/plugins/gitfast/git-prompt.sh +++ b/plugins/gitfast/git-prompt.sh @@ -66,6 +66,11 @@ # git always compare HEAD to @{upstream} # svn always compare HEAD to your SVN upstream # +# By default, __git_ps1 will compare HEAD to your SVN upstream if it can +# find one, or @{upstream} otherwise. Once you have set +# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by +# setting the bash.showUpstream config variable. +# # You can change the separator between the branch name and the above # state symbols by setting GIT_PS1_STATESEPARATOR. The default separator # is SP. @@ -79,11 +84,6 @@ # single '?' character by setting GIT_PS1_COMPRESSSPARSESTATE, or omitted # by setting GIT_PS1_OMITSPARSESTATE. # -# By default, __git_ps1 will compare HEAD to your SVN upstream if it can -# find one, or @{upstream} otherwise. Once you have set -# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by -# setting the bash.showUpstream config variable. -# # If you would like to see more information about the identity of # commits checked out as a detached HEAD, set GIT_PS1_DESCRIBE_STYLE # to one of these values: @@ -115,7 +115,7 @@ __git_ps1_show_upstream () { local key value local svn_remote svn_url_pattern count n - local upstream=git legacy="" verbose="" name="" + local upstream_type=git legacy="" verbose="" name="" svn_remote=() # get some config options from git-config @@ -132,7 +132,7 @@ __git_ps1_show_upstream () svn-remote.*.url) svn_remote[$((${#svn_remote[@]} + 1))]="$value" svn_url_pattern="$svn_url_pattern\\|$value" - upstream=svn+git # default upstream is SVN if available, else git + upstream_type=svn+git # default upstream type is SVN if available, else git ;; esac done <<< "$output" @@ -141,16 +141,16 @@ __git_ps1_show_upstream () local option for option in ${GIT_PS1_SHOWUPSTREAM}; do case "$option" in - git|svn) upstream="$option" ;; + git|svn) upstream_type="$option" ;; verbose) verbose=1 ;; legacy) legacy=1 ;; name) name=1 ;; esac done - # Find our upstream - case "$upstream" in - git) upstream="@{upstream}" ;; + # Find our upstream type + case "$upstream_type" in + git) upstream_type="@{upstream}" ;; svn*) # get the upstream from the "git-svn-id: ..." in a commit message # (git-svn uses essentially the same procedure internally) @@ -167,12 +167,12 @@ __git_ps1_show_upstream () if [[ -z "$svn_upstream" ]]; then # default branch name for checkouts with no layout: - upstream=${GIT_SVN_ID:-git-svn} + upstream_type=${GIT_SVN_ID:-git-svn} else - upstream=${svn_upstream#/} + upstream_type=${svn_upstream#/} fi - elif [[ "svn+git" = "$upstream" ]]; then - upstream="@{upstream}" + elif [[ "svn+git" = "$upstream_type" ]]; then + upstream_type="@{upstream}" fi ;; esac @@ -180,11 +180,11 @@ __git_ps1_show_upstream () # Find how many commits we are ahead/behind our upstream if [[ -z "$legacy" ]]; then count="$(git rev-list --count --left-right \ - "$upstream"...HEAD 2>/dev/null)" + "$upstream_type"...HEAD 2>/dev/null)" else # produce equivalent output to --count for older versions of git local commits - if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)" + if commits="$(git rev-list --left-right "$upstream_type"...HEAD 2>/dev/null)" then local commit behind=0 ahead=0 for commit in $commits @@ -214,26 +214,26 @@ __git_ps1_show_upstream () *) # diverged from upstream p="<>" ;; esac - else + else # verbose, set upstream instead of p case "$count" in "") # no upstream - p="" ;; + upstream="" ;; "0 0") # equal to upstream - p=" u=" ;; + upstream="|u=" ;; "0 "*) # ahead of upstream - p=" u+${count#0 }" ;; + upstream="|u+${count#0 }" ;; *" 0") # behind upstream - p=" u-${count% 0}" ;; + upstream="|u-${count% 0}" ;; *) # diverged from upstream - p=" u+${count#* }-${count% *}" ;; + upstream="|u+${count#* }-${count% *}" ;; esac if [[ -n "$count" && -n "$name" ]]; then __git_ps1_upstream_name=$(git rev-parse \ - --abbrev-ref "$upstream" 2>/dev/null) + --abbrev-ref "$upstream_type" 2>/dev/null) if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then - p="$p \${__git_ps1_upstream_name}" + upstream="$upstream \${__git_ps1_upstream_name}" else - p="$p ${__git_ps1_upstream_name}" + upstream="$upstream ${__git_ps1_upstream_name}" # not needed anymore; keep user's # environment clean unset __git_ps1_upstream_name @@ -245,7 +245,8 @@ __git_ps1_show_upstream () # Helper function that is meant to be called from __git_ps1. It # injects color codes into the appropriate gitstring variables used -# to build a gitstring. +# to build a gitstring. Colored variables are responsible for clearing +# their own color. __git_ps1_colorize_gitstring () { if [[ -n ${ZSH_VERSION-} ]]; then @@ -271,22 +272,23 @@ __git_ps1_colorize_gitstring () else branch_color="$bad_color" fi - c="$branch_color$c" + if [ -n "$c" ]; then + c="$branch_color$c$c_clear" + fi + b="$branch_color$b$c_clear" - z="$c_clear$z" - if [ "$w" = "*" ]; then - w="$bad_color$w" + if [ -n "$w" ]; then + w="$bad_color$w$c_clear" fi if [ -n "$i" ]; then - i="$ok_color$i" + i="$ok_color$i$c_clear" fi if [ -n "$s" ]; then - s="$flags_color$s" + s="$flags_color$s$c_clear" fi if [ -n "$u" ]; then - u="$bad_color$u" + u="$bad_color$u$c_clear" fi - r="$c_clear$r" } # Helper function to read the first line of a file into a variable. @@ -512,7 +514,8 @@ __git_ps1 () local u="" local h="" local c="" - local p="" + local p="" # short version of upstream state indicator + local upstream="" # verbose version of upstream state indicator if [ "true" = "$inside_gitdir" ]; then if [ "true" = "$bare_repo" ]; then @@ -555,6 +558,12 @@ __git_ps1 () local z="${GIT_PS1_STATESEPARATOR-" "}" + b=${b##refs/heads/} + if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then + __git_ps1_branch_name=$b + b="\${__git_ps1_branch_name}" + fi + # NO color option unless in PROMPT_COMMAND mode or it's Zsh if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then if [ $pcmode = yes ] || [ -n "${ZSH_VERSION-}" ]; then @@ -562,14 +571,8 @@ __git_ps1 () fi fi - b=${b##refs/heads/} - if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then - __git_ps1_branch_name=$b - b="\${__git_ps1_branch_name}" - fi - - local f="$h$w$i$s$u" - local gitstring="$c$b${f:+$z$f}${sparse}$r$p" + local f="$h$w$i$s$u$p" + local gitstring="$c$b${f:+$z$f}${sparse}$r${upstream}" if [ $pcmode = yes ]; then if [ "${__git_printf_supports_v-}" != yes ]; then diff --git a/plugins/gitfast/update b/plugins/gitfast/update index 5ebaaef3d..feb13ff7e 100755 --- a/plugins/gitfast/update +++ b/plugins/gitfast/update @@ -1,7 +1,7 @@ #!/bin/sh url="https://raw.githubusercontent.com/felipec/git-completion" -version="1.3.6" +version="1.3.7" curl -s -o _git "${url}/v${version}/git-completion.zsh" && curl -s -o git-completion.bash "${url}/v${version}/git-completion.bash" && From 3668ec2a82250020ca0c285ef8b277f1385a8085 Mon Sep 17 00:00:00 2001 From: Zik <48577114+zikaeroh@users.noreply.github.com> Date: Sun, 14 Aug 2022 08:01:31 -0700 Subject: [PATCH 030/253] refactor(gb)!: remove obsolete `gb` plugin (#11115) --- plugins/gb/README.md | 21 -------- plugins/gb/_gb | 111 ------------------------------------------- 2 files changed, 132 deletions(-) delete mode 100644 plugins/gb/README.md delete mode 100644 plugins/gb/_gb diff --git a/plugins/gb/README.md b/plugins/gb/README.md deleted file mode 100644 index 822c29aaa..000000000 --- a/plugins/gb/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# `gb` plugin - -> A project based build tool for the Go programming language. - -See https://getgb.io for the full `gb` documentation - -* * * * - -- Adds completion support for all `gb` commands. -- Also supports completion for the [`gb-vendor` plugin](https://godoc.org/github.com/constabulary/gb/cmd/gb-vendor). - -To use it, add `gb` to your plugins array: -```sh -plugins=(... gb) -``` - -## Caveats - -The `git` plugin defines an alias `gb` that usually conflicts with the `gb` program. -If you're having trouble with it, remove it by adding `unalias gb` at the end of your -zshrc file. diff --git a/plugins/gb/_gb b/plugins/gb/_gb deleted file mode 100644 index 8148adf16..000000000 --- a/plugins/gb/_gb +++ /dev/null @@ -1,111 +0,0 @@ -#compdef gb -#autoload - -_gb () { - local ret=1 state - _arguments -C ':command:->command' '*::options:->options' && ret=0 - - case $state in - (command) - local -a subcommands - subcommands=( - "build:build a package" - "doc:show documentation for a package or symbol" - "env:print project environment variables" - "generate:generate Go files by processing source" - "help:displays the help" - "info:info returns information about this project" - "list:list the packages named by the importpaths" - "test:test packages" - "vendor:manage your vendored dependencies" - ) - _describe -t subcommands 'gb subcommands' subcommands && ret=0 - ;; - (options) - case $line[1] in - (build) - _arguments \ - -f'[ignore cached packages]' \ - -F'[do not cache packages]' \ - -q'[decreases verbosity]' \ - -P'[the number of build jobs to run in parallel]' \ - -R'[sets the base of the project root search path]' \ - -dotfile'[output a dot formatted file of the build steps]' \ - -ldflags'["flag list" arguments to pass to the linker]' \ - -gcflags'["arg list" arguments to pass to the compiler]' \ - -race'[enable data race detection]' \ - -tags'["tag list" additional build tags]' - ;; - (list) - _arguments \ - -f'[alternate format for the list, using the syntax of package template]' \ - -s'[read format template from STDIN]' \ - -json'[prints output in structured JSON format]' - ;; - (test) - _arguments \ - -v'[print output from test subprocess]' \ - -ldflags'["flag list" arguments to pass to the linker]' \ - -gcflags'["arg list" arguments to pass to the compiler]' \ - -race'[enable data race detection]' \ - -tags'["tag list" additional build tags]' - ;; - (vendor) - _gb-vendor - esac - ;; - esac - - return ret -} - -_gb-vendor () { - local curcontext="$curcontext" state line - _arguments -C ':command:->command' '*::options:->options' - - case $state in - (command) - local -a subcommands - subcommands=( - 'delete:deletes a local dependency' - 'fetch:fetch a remote dependency' - 'list:lists dependencies, one per line' - 'purge:remove all unreferenced dependencies' - 'restore:restore dependencies from the manifest' - 'update:update a local dependency' - ) - _describe -t subcommands 'gb vendor subcommands' subcommands && ret=0 - ;; - (options) - case $line[1] in - (delete) - _arguments \ - -all'[remove all dependencies]' - ;; - (fetch) - _arguments \ - -branch'[fetch from a particular branch]' \ - -no-recurse'[do not fetch recursively]' \ - -tag'[fetch the specified tag]' \ - -revision'[fetch the specific revision from the branch (if supplied)]' \ - -precaire'[allow the use of insecure protocols]' \ - ;; - (list) - _arguments \ - -f'[controls the template used for printing each manifest entry]' - ;; - (restore) - _arguments \ - -precaire'[allow the use of insecure protocols]' - ;; - (update) - _arguments \ - -all'[update all dependencies in the manifest or supply a given dependency]' \ - -precaire'[allow the use of insecure protocols]' - ;; - esac - ;; - esac -} - -_gb From b05d8c3be65091153b4d37cbde9d2ee46f9cba2e Mon Sep 17 00:00:00 2001 From: Roman Danyk <17525890+RomanDanyk@users.noreply.github.com> Date: Tue, 23 Aug 2022 20:23:42 +0300 Subject: [PATCH 031/253] fix(common-aliases): don't overshadow `duf` if installed (#11112) --- plugins/common-aliases/README.md | 7 ++++++- plugins/common-aliases/common-aliases.plugin.zsh | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/common-aliases/README.md b/plugins/common-aliases/README.md index 0354c7a3f..1417c3056 100644 --- a/plugins/common-aliases/README.md +++ b/plugins/common-aliases/README.md @@ -35,9 +35,11 @@ plugins=(... common-aliases) | mv | `mv -i` | Move a file | | zshrc | `${=EDITOR} ~/.zshrc` | Quickly access the ~/.zshrc file | | dud | `du -d 1 -h` | Display the size of files at depth 1 in current location in human-readable form | -| duf | `du -sh` | Display the size of files in current location in human-readable form | +| duf\* | `du -sh` | Display the size of files in current location in human-readable form | | t | `tail -f` | Shorthand for tail which outputs the last part of a file | +\* Only if the [`duf`](https://github.com/muesli/duf) command isn't installed. + ### find and grep | Alias | Command | Description | @@ -66,12 +68,15 @@ These aliases are expanded in any position in the command line, meaning you can end of the command you've typed. Examples: Quickly pipe to less: + ```zsh $ ls -l /var/log L # will run $ ls -l /var/log | less ``` + Silences stderr output: + ```zsh $ find . -type f NE # will run diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh index 8b58b6310..3139b821a 100644 --- a/plugins/common-aliases/common-aliases.plugin.zsh +++ b/plugins/common-aliases/common-aliases.plugin.zsh @@ -35,7 +35,7 @@ alias -g NUL="> /dev/null 2>&1" alias -g P="2>&1| pygmentize -l pytb" alias dud='du -d 1 -h' -alias duf='du -sh *' +(( $+commands[duf] )) || alias duf='du -sh *' (( $+commands[fd] )) || alias fd='find . -type d -name' alias ff='find . -type f -name' From 6d48309cd7da1b91038cf08be7865fb5bb9bc5ea Mon Sep 17 00:00:00 2001 From: Erik Thorelli Date: Tue, 23 Aug 2022 10:26:46 -0700 Subject: [PATCH 032/253] chore(react-native): add maintainer for `react-native` plugin (#11109) --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0cb9410fc..c6b3e8ce9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,6 +4,7 @@ plugins/aws/ @maksyms plugins/genpass/ @atoponce plugins/git-lfs/ @hellovietduc plugins/gitfast/ @felipec +plugins/react-native @esthor plugins/sdk/ @rgoldberg plugins/shell-proxy/ @septs plugins/universalarchive/ @Konfekt From 875a4553204679cc1e3023a7d0e0bf2cf7d60800 Mon Sep 17 00:00:00 2001 From: Monson Shao Date: Thu, 8 Sep 2022 01:03:45 +0800 Subject: [PATCH 033/253] perf: `zrecompile` the compdump file to speed up startup (#8802) --- oh-my-zsh.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index 925ee46aa..d6ef97a07 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -67,7 +67,7 @@ fi fpath=("$ZSH/functions" "$ZSH/completions" $fpath) # Load all stock functions (from $fpath files) called below. -autoload -U compaudit compinit +autoload -U compaudit compinit zrecompile # Set ZSH_CUSTOM to the path where your custom config files # and plugins exists, or else we will use the default custom/ @@ -142,6 +142,9 @@ EOF fi unset zcompdump_revision zcompdump_fpath zcompdump_refresh +# zcompile the completion dump file if the .zwc is older or missing. +zrecompile -q -p "$ZSH_COMPDUMP" && rm -f "$ZSH_COMPDUMP.zwc.old" + # Load all of the config files in ~/oh-my-zsh that end in .zsh # TIP: Add files you don't want in git to .gitignore for config_file ("$ZSH"/lib/*.zsh); do From 18d2152798e15898f3c11a2fd3d8a59a62b4ac33 Mon Sep 17 00:00:00 2001 From: James Yeoman Date: Tue, 26 Apr 2022 11:37:42 +0100 Subject: [PATCH 034/253] feat(gcloud): support for official apt repo (#10889) Fixes #10888 Closes #10889 --- plugins/gcloud/gcloud.plugin.zsh | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/plugins/gcloud/gcloud.plugin.zsh b/plugins/gcloud/gcloud.plugin.zsh index 7368eb3a6..d43c62178 100644 --- a/plugins/gcloud/gcloud.plugin.zsh +++ b/plugins/gcloud/gcloud.plugin.zsh @@ -10,7 +10,8 @@ if [[ -z "${CLOUDSDK_HOME}" ]]; then "/opt/homebrew/Caskroom/google-cloud-sdk/latest/google-cloud-sdk" "/usr/share/google-cloud-sdk" "/snap/google-cloud-sdk/current" - "/usr/lib64/google-cloud-sdk/" + "/usr/lib/google-cloud-sdk" + "/usr/lib64/google-cloud-sdk" "/opt/google-cloud-sdk" ) @@ -20,15 +21,28 @@ if [[ -z "${CLOUDSDK_HOME}" ]]; then break fi done + unset search_locations gcloud_sdk_location fi if (( ${+CLOUDSDK_HOME} )); then + # Only source this if gcloud isn't already on the path if (( ! $+commands[gcloud] )); then - # Only source this if GCloud isn't already on the path if [[ -f "${CLOUDSDK_HOME}/path.zsh.inc" ]]; then source "${CLOUDSDK_HOME}/path.zsh.inc" fi fi - source "${CLOUDSDK_HOME}/completion.zsh.inc" + + # Look for completion file in different paths + for comp_file ( + "${CLOUDSDK_HOME}/completion.zsh.inc" # default location + "/usr/share/google-cloud-sdk/completion.zsh.inc" # apt-based location + ); do + if [[ -f "${comp_file}" ]]; then + source "${comp_file}" + break + fi + done + unset comp_file + export CLOUDSDK_HOME fi From dfa88b4d369f6afc7205af0b399a0ef05a4bef2e Mon Sep 17 00:00:00 2001 From: ajilty Date: Thu, 25 Aug 2022 22:02:35 -0400 Subject: [PATCH 035/253] feat(gcloud): support macports installation path (#11133) Closes #11133 --- plugins/gcloud/gcloud.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/gcloud/gcloud.plugin.zsh b/plugins/gcloud/gcloud.plugin.zsh index d43c62178..9be9d68aa 100644 --- a/plugins/gcloud/gcloud.plugin.zsh +++ b/plugins/gcloud/gcloud.plugin.zsh @@ -13,6 +13,7 @@ if [[ -z "${CLOUDSDK_HOME}" ]]; then "/usr/lib/google-cloud-sdk" "/usr/lib64/google-cloud-sdk" "/opt/google-cloud-sdk" + "/opt/local/libexec/google-cloud-sdk" ) for gcloud_sdk_location in $search_locations; do From 7dcabbe6826073ef6069c8a4b6f9a943f00d2df0 Mon Sep 17 00:00:00 2001 From: Giovanni Squillero Date: Sat, 10 Sep 2022 16:57:23 +0200 Subject: [PATCH 036/253] chore(init): ignore any aliases when running `rm` (#11156) --- oh-my-zsh.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index d6ef97a07..29d39ca23 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -143,7 +143,7 @@ fi unset zcompdump_revision zcompdump_fpath zcompdump_refresh # zcompile the completion dump file if the .zwc is older or missing. -zrecompile -q -p "$ZSH_COMPDUMP" && rm -f "$ZSH_COMPDUMP.zwc.old" +zrecompile -q -p "$ZSH_COMPDUMP" && command rm -f "$ZSH_COMPDUMP.zwc.old" # Load all of the config files in ~/oh-my-zsh that end in .zsh # TIP: Add files you don't want in git to .gitignore From 74235e8aea0c3447871791ed56e7d0131586a057 Mon Sep 17 00:00:00 2001 From: Preet Patel Date: Tue, 4 Oct 2022 03:22:18 +1300 Subject: [PATCH 037/253] feat(react-native): add aliases for 2021 and 2022 iOS devices (#11191) --- plugins/react-native/README.md | 139 ++++++++++--------- plugins/react-native/react-native.plugin.zsh | 10 +- 2 files changed, 85 insertions(+), 64 deletions(-) diff --git a/plugins/react-native/README.md b/plugins/react-native/README.md index d0a53b8d7..88fa233b7 100644 --- a/plugins/react-native/README.md +++ b/plugins/react-native/README.md @@ -11,66 +11,79 @@ plugins=(... react-native) ## Aliases -| Alias | React Native command | -| :------------ | :------------------------------------------------- | -| **rn** | `react-native` | -| **rns** | `react-native start` | -| **rnlink** | `react-native link` | -| _Logging_ | | -| **rnland** | `react-native log-android` | -| **rnlios** | `react-native log-ios` | -| _App Testing_ | | -| **rnand** | `react-native run-android` | -| **rnios** | `react-native run-ios` | -| _iPhone_ | | -| **rnios4s** | `react-native run-ios --simulator "iPhone 4s"` | -| **rnios5** | `react-native run-ios --simulator "iPhone 5"` | -| **rnios5s** | `react-native run-ios --simulator "iPhone 5s"` | -| **rnios6** | `react-native run-ios --simulator "iPhone 6"` | -| **rnios6s** | `react-native run-ios --simulator "iPhone 6s"` | -| **rnios6p** | `react-native run-ios --simulator "iPhone 6 Plus"` | -| **rnios6sp** | `react-native run-ios --simulator "iPhone 6s Plus"` | -| **rnios7** | `react-native run-ios --simulator "iPhone 7"` | -| **rnios7p** | `react-native run-ios --simulator "iPhone 7 Plus"` | -| **rnios8** | `react-native run-ios --simulator "iPhone 8"` | -| **rnios8p** | `react-native run-ios --simulator "iPhone 8 Plus"` | -| **rniosse** | `react-native run-ios --simulator "iPhone SE"` | -| **rniosx** | `react-native run-ios --simulator "iPhone X"` | -| **rniosxs** | `react-native run-ios --simulator "iPhone Xs"` | -| **rniosxsm** | `react-native run-ios --simulator "iPhone Xs Max"` | -| **rniosxr** | `react-native run-ios --simulator "iPhone Xʀ"` | -| **rnios11** | `react-native run-ios --simulator "iPhone 11"` | -| **rnios11p** | `react-native run-ios --simulator "iPhone 11 Pro"` | -| **rnios11pm** | `react-native run-ios --simulator "iPhone 11 Pro Max"` | -| _iPad_ | | -| **rnipad2** | `react-native run-ios --simulator "iPad 2"` | -| **rnipad5** | `react-native run-ios --simulator "iPad (5th generation)"` | -| **rnipad6** | `react-native run-ios --simulator "iPad (6th generation)"` | -| **rnipadr** | `react-native run-ios --simulator "iPad Retina"` | -| **rnipada** | `react-native run-ios --simulator "iPad Air"` | -| **rnipada2** | `react-native run-ios --simulator "iPad Air 2"` | -| **rnipada3** | `react-native run-ios --simulator "iPad Air (3rd generation)"` | -| **rnipadm2** | `react-native run-ios --simulator "iPad mini 2"` | -| **rnipadm3** | `react-native run-ios --simulator "iPad mini 3"` | -| **rnipadm4** | `react-native run-ios --simulator "iPad mini 4"` | -| **rnipadm5** | `react-native run-ios --simulator "iPad mini (5th generation)"` | -| **rnipadp9** | `react-native run-ios --simulator "iPad Pro (9.7-inch)"` | -| **rnipadp12** | `react-native run-ios --simulator "iPad Pro (12.9-inch)"` | -| **rnipadp122** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (2nd generation)"` | -| **rnipadp10** | `react-native run-ios --simulator "iPad Pro (10.5-inch)"` | -| **rnipad11** | `react-native run-ios --simulator "iPad Pro (11-inch)"` | -| **rnipad123** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (3rd generation)"` | -| _Apple TV_ | | -| **rnatv** | `react-native run-ios --simulator "Apple TV"` | -| **rnatv4k** | `react-native run-ios --simulator "Apple TV 4K"` | -| **rnatv4k1080**| `react-native run-ios --simulator "Apple TV 4K (at 1080p)"` | -| **rnipad123** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (3rd generation)"` | -| _Apple Watch_ | | -| **rnaw38** | `react-native run-ios --simulator "Apple Watch - 38mm"` | -| **rnaw42** | `react-native run-ios --simulator "Apple Watch - 42mm"` | -| **rnaws238** | `react-native run-ios --simulator "Apple Watch Series 2 - 38mm"` | -| **rnaws242** | `react-native run-ios --simulator "Apple Watch Series 2 - 42mm"` | -| **rnaws338** | `react-native run-ios --simulator "Apple Watch Series 3 - 38mm"` | -| **rnaws342** | `react-native run-ios --simulator "Apple Watch Series 3 - 42mm"` | -| **rnaws440** | `react-native run-ios --simulator "Apple Watch Series 4 - 40mm"` | -| **rnaws444** | `react-native run-ios --simulator "Apple Watch Series 4 - 44mm"` | +| Alias | React Native command | +| :------------ | :----------------------------------------------------- | +| **rn** | `react-native` | +| **rns** | `react-native start` | +| **rnlink** | `react-native link` | +| _Logging_ | | +| **rnland** | `react-native log-android` | +| **rnlios** | `react-native log-ios` | +| _App Testing_ | | +| **rnand** | `react-native run-android` | +| **rnios** | `react-native run-ios` | +| _iPhone_ | | +| **rnios4s** | `react-native run-ios --simulator "iPhone 4s"` | +| **rnios5** | `react-native run-ios --simulator "iPhone 5"` | +| **rnios5s** | `react-native run-ios --simulator "iPhone 5s"` | +| **rnios6** | `react-native run-ios --simulator "iPhone 6"` | +| **rnios6s** | `react-native run-ios --simulator "iPhone 6s"` | +| **rnios6p** | `react-native run-ios --simulator "iPhone 6 Plus"` | +| **rnios6sp** | `react-native run-ios --simulator "iPhone 6s Plus"` | +| **rnios7** | `react-native run-ios --simulator "iPhone 7"` | +| **rnios7p** | `react-native run-ios --simulator "iPhone 7 Plus"` | +| **rnios8** | `react-native run-ios --simulator "iPhone 8"` | +| **rnios8p** | `react-native run-ios --simulator "iPhone 8 Plus"` | +| **rniosse** | `react-native run-ios --simulator "iPhone SE"` | +| **rniosx** | `react-native run-ios --simulator "iPhone X"` | +| **rniosxs** | `react-native run-ios --simulator "iPhone Xs"` | +| **rniosxsm** | `react-native run-ios --simulator "iPhone Xs Max"` | +| **rniosxr** | `react-native run-ios --simulator "iPhone Xʀ"` | +| **rnios11** | `react-native run-ios --simulator "iPhone 11"` | +| **rnios11p** | `react-native run-ios --simulator "iPhone 11 Pro"` | +| **rnios11pm** | `react-native run-ios --simulator "iPhone 11 Pro Max"` | +| **rnios12** | `react-native run-ios --simulator "iPhone 12"` | +| **rnios12m** | `react-native run-ios --simulator "iPhone 12 mini"` | +| **rnios12p** | `react-native run-ios --simulator "iPhone 12 Pro"` | +| **rnios12pm** | `react-native run-ios --simulator "iPhone 12 Pro Max"` | +| **rnios13** | `react-native run-ios --simulator "iPhone 13"` | +| **rnios13m** | `react-native run-ios --simulator "iPhone 13 mini"` | +| **rnios13p** | `react-native run-ios --simulator "iPhone 13 Pro"` | +| **rnios13pm** | `react-native run-ios --simulator "iPhone 13 Pro Max"` | +| **rnios14** | `react-native run-ios --simulator "iPhone 14"` | +| **rnios14pl** | `react-native run-ios --simulator "iPhone 14 Plus"` | +| **rnios14p** | `react-native run-ios --simulator "iPhone 14 Pro"` | +| **rnios14pm** | `react-native run-ios --simulator "iPhone 14 Pro Max"` | + +| _iPad_ | | +| **rnipad2** | `react-native run-ios --simulator "iPad 2"` | +| **rnipad5** | `react-native run-ios --simulator "iPad (5th generation)"` | +| **rnipad6** | `react-native run-ios --simulator "iPad (6th generation)"` | +| **rnipadr** | `react-native run-ios --simulator "iPad Retina"` | +| **rnipada** | `react-native run-ios --simulator "iPad Air"` | +| **rnipada2** | `react-native run-ios --simulator "iPad Air 2"` | +| **rnipada3** | `react-native run-ios --simulator "iPad Air (3rd generation)"` | +| **rnipadm2** | `react-native run-ios --simulator "iPad mini 2"` | +| **rnipadm3** | `react-native run-ios --simulator "iPad mini 3"` | +| **rnipadm4** | `react-native run-ios --simulator "iPad mini 4"` | +| **rnipadm5** | `react-native run-ios --simulator "iPad mini (5th generation)"` | +| **rnipadp9** | `react-native run-ios --simulator "iPad Pro (9.7-inch)"` | +| **rnipadp12** | `react-native run-ios --simulator "iPad Pro (12.9-inch)"` | +| **rnipadp122** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (2nd generation)"` | +| **rnipadp10** | `react-native run-ios --simulator "iPad Pro (10.5-inch)"` | +| **rnipad11** | `react-native run-ios --simulator "iPad Pro (11-inch)"` | +| **rnipad123** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (3rd generation)"` | +| _Apple TV_ | | +| **rnatv** | `react-native run-ios --simulator "Apple TV"` | +| **rnatv4k** | `react-native run-ios --simulator "Apple TV 4K"` | +| **rnatv4k1080**| `react-native run-ios --simulator "Apple TV 4K (at 1080p)"` | +| **rnipad123** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (3rd generation)"` | +| _Apple Watch_ | | +| **rnaw38** | `react-native run-ios --simulator "Apple Watch - 38mm"` | +| **rnaw42** | `react-native run-ios --simulator "Apple Watch - 42mm"` | +| **rnaws238** | `react-native run-ios --simulator "Apple Watch Series 2 - 38mm"` | +| **rnaws242** | `react-native run-ios --simulator "Apple Watch Series 2 - 42mm"` | +| **rnaws338** | `react-native run-ios --simulator "Apple Watch Series 3 - 38mm"` | +| **rnaws342** | `react-native run-ios --simulator "Apple Watch Series 3 - 42mm"` | +| **rnaws440** | `react-native run-ios --simulator "Apple Watch Series 4 - 40mm"` | +| **rnaws444** | `react-native run-ios --simulator "Apple Watch Series 4 - 44mm"` | diff --git a/plugins/react-native/react-native.plugin.zsh b/plugins/react-native/react-native.plugin.zsh index 8323c27bd..afeaab4fd 100644 --- a/plugins/react-native/react-native.plugin.zsh +++ b/plugins/react-native/react-native.plugin.zsh @@ -28,9 +28,17 @@ alias rnios11='react-native run-ios --simulator "iPhone 11"' alias rnios11p='react-native run-ios --simulator "iPhone 11 Pro"' alias rnios11pm='react-native run-ios --simulator "iPhone 11 Pro Max"' alias rnios12='react-native run-ios --simulator "iPhone 12"' +alias rnios12m='react-native run-ios --simulator "iPhone 12 mini"' alias rnios12p='react-native run-ios --simulator "iPhone 12 Pro"' alias rnios12pm='react-native run-ios --simulator "iPhone 12 Pro Max"' - +alias rnios13='react-native run-ios --simulator "iPhone 13"' +alias rnios13m='react-native run-ios --simulator "iPhone 13 mini"' +alias rnios13p='react-native run-ios --simulator "iPhone 13 Pro"' +alias rnios13pm='react-native run-ios --simulator "iPhone 13 Pro Max"' +alias rnios14='react-native run-ios --simulator "iPhone 14"' +alias rnios14pl='react-native run-ios --simulator "iPhone 14 Plus"' +alias rnios14p='react-native run-ios --simulator "iPhone 14 Pro"' +alias rnios14pm='react-native run-ios --simulator "iPhone 14 Pro Max"' # iPad alias rnipad2='react-native run-ios --simulator "iPad 2"' From 23f3ded92d07184b3611d08c62d7b474a76c956f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 3 Oct 2022 16:24:15 +0200 Subject: [PATCH 038/253] chore(react-native): fix README table alignment --- plugins/react-native/README.md | 151 ++++++++++++++++----------------- 1 file changed, 75 insertions(+), 76 deletions(-) diff --git a/plugins/react-native/README.md b/plugins/react-native/README.md index 88fa233b7..807c063a5 100644 --- a/plugins/react-native/README.md +++ b/plugins/react-native/README.md @@ -11,79 +11,78 @@ plugins=(... react-native) ## Aliases -| Alias | React Native command | -| :------------ | :----------------------------------------------------- | -| **rn** | `react-native` | -| **rns** | `react-native start` | -| **rnlink** | `react-native link` | -| _Logging_ | | -| **rnland** | `react-native log-android` | -| **rnlios** | `react-native log-ios` | -| _App Testing_ | | -| **rnand** | `react-native run-android` | -| **rnios** | `react-native run-ios` | -| _iPhone_ | | -| **rnios4s** | `react-native run-ios --simulator "iPhone 4s"` | -| **rnios5** | `react-native run-ios --simulator "iPhone 5"` | -| **rnios5s** | `react-native run-ios --simulator "iPhone 5s"` | -| **rnios6** | `react-native run-ios --simulator "iPhone 6"` | -| **rnios6s** | `react-native run-ios --simulator "iPhone 6s"` | -| **rnios6p** | `react-native run-ios --simulator "iPhone 6 Plus"` | -| **rnios6sp** | `react-native run-ios --simulator "iPhone 6s Plus"` | -| **rnios7** | `react-native run-ios --simulator "iPhone 7"` | -| **rnios7p** | `react-native run-ios --simulator "iPhone 7 Plus"` | -| **rnios8** | `react-native run-ios --simulator "iPhone 8"` | -| **rnios8p** | `react-native run-ios --simulator "iPhone 8 Plus"` | -| **rniosse** | `react-native run-ios --simulator "iPhone SE"` | -| **rniosx** | `react-native run-ios --simulator "iPhone X"` | -| **rniosxs** | `react-native run-ios --simulator "iPhone Xs"` | -| **rniosxsm** | `react-native run-ios --simulator "iPhone Xs Max"` | -| **rniosxr** | `react-native run-ios --simulator "iPhone Xʀ"` | -| **rnios11** | `react-native run-ios --simulator "iPhone 11"` | -| **rnios11p** | `react-native run-ios --simulator "iPhone 11 Pro"` | -| **rnios11pm** | `react-native run-ios --simulator "iPhone 11 Pro Max"` | -| **rnios12** | `react-native run-ios --simulator "iPhone 12"` | -| **rnios12m** | `react-native run-ios --simulator "iPhone 12 mini"` | -| **rnios12p** | `react-native run-ios --simulator "iPhone 12 Pro"` | -| **rnios12pm** | `react-native run-ios --simulator "iPhone 12 Pro Max"` | -| **rnios13** | `react-native run-ios --simulator "iPhone 13"` | -| **rnios13m** | `react-native run-ios --simulator "iPhone 13 mini"` | -| **rnios13p** | `react-native run-ios --simulator "iPhone 13 Pro"` | -| **rnios13pm** | `react-native run-ios --simulator "iPhone 13 Pro Max"` | -| **rnios14** | `react-native run-ios --simulator "iPhone 14"` | -| **rnios14pl** | `react-native run-ios --simulator "iPhone 14 Plus"` | -| **rnios14p** | `react-native run-ios --simulator "iPhone 14 Pro"` | -| **rnios14pm** | `react-native run-ios --simulator "iPhone 14 Pro Max"` | - -| _iPad_ | | -| **rnipad2** | `react-native run-ios --simulator "iPad 2"` | -| **rnipad5** | `react-native run-ios --simulator "iPad (5th generation)"` | -| **rnipad6** | `react-native run-ios --simulator "iPad (6th generation)"` | -| **rnipadr** | `react-native run-ios --simulator "iPad Retina"` | -| **rnipada** | `react-native run-ios --simulator "iPad Air"` | -| **rnipada2** | `react-native run-ios --simulator "iPad Air 2"` | -| **rnipada3** | `react-native run-ios --simulator "iPad Air (3rd generation)"` | -| **rnipadm2** | `react-native run-ios --simulator "iPad mini 2"` | -| **rnipadm3** | `react-native run-ios --simulator "iPad mini 3"` | -| **rnipadm4** | `react-native run-ios --simulator "iPad mini 4"` | -| **rnipadm5** | `react-native run-ios --simulator "iPad mini (5th generation)"` | -| **rnipadp9** | `react-native run-ios --simulator "iPad Pro (9.7-inch)"` | -| **rnipadp12** | `react-native run-ios --simulator "iPad Pro (12.9-inch)"` | -| **rnipadp122** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (2nd generation)"` | -| **rnipadp10** | `react-native run-ios --simulator "iPad Pro (10.5-inch)"` | -| **rnipad11** | `react-native run-ios --simulator "iPad Pro (11-inch)"` | -| **rnipad123** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (3rd generation)"` | -| _Apple TV_ | | -| **rnatv** | `react-native run-ios --simulator "Apple TV"` | -| **rnatv4k** | `react-native run-ios --simulator "Apple TV 4K"` | -| **rnatv4k1080**| `react-native run-ios --simulator "Apple TV 4K (at 1080p)"` | -| **rnipad123** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (3rd generation)"` | -| _Apple Watch_ | | -| **rnaw38** | `react-native run-ios --simulator "Apple Watch - 38mm"` | -| **rnaw42** | `react-native run-ios --simulator "Apple Watch - 42mm"` | -| **rnaws238** | `react-native run-ios --simulator "Apple Watch Series 2 - 38mm"` | -| **rnaws242** | `react-native run-ios --simulator "Apple Watch Series 2 - 42mm"` | -| **rnaws338** | `react-native run-ios --simulator "Apple Watch Series 3 - 38mm"` | -| **rnaws342** | `react-native run-ios --simulator "Apple Watch Series 3 - 42mm"` | -| **rnaws440** | `react-native run-ios --simulator "Apple Watch Series 4 - 40mm"` | -| **rnaws444** | `react-native run-ios --simulator "Apple Watch Series 4 - 44mm"` | +| Alias | React Native command | +| :-------------- | :------------------------------------------------------------------------- | +| **rn** | `react-native` | +| **rns** | `react-native start` | +| **rnlink** | `react-native link` | +| _Logging_ | | +| **rnland** | `react-native log-android` | +| **rnlios** | `react-native log-ios` | +| _App Testing_ | | +| **rnand** | `react-native run-android` | +| **rnios** | `react-native run-ios` | +| _iPhone_ | | +| **rnios4s** | `react-native run-ios --simulator "iPhone 4s"` | +| **rnios5** | `react-native run-ios --simulator "iPhone 5"` | +| **rnios5s** | `react-native run-ios --simulator "iPhone 5s"` | +| **rnios6** | `react-native run-ios --simulator "iPhone 6"` | +| **rnios6s** | `react-native run-ios --simulator "iPhone 6s"` | +| **rnios6p** | `react-native run-ios --simulator "iPhone 6 Plus"` | +| **rnios6sp** | `react-native run-ios --simulator "iPhone 6s Plus"` | +| **rnios7** | `react-native run-ios --simulator "iPhone 7"` | +| **rnios7p** | `react-native run-ios --simulator "iPhone 7 Plus"` | +| **rnios8** | `react-native run-ios --simulator "iPhone 8"` | +| **rnios8p** | `react-native run-ios --simulator "iPhone 8 Plus"` | +| **rniosse** | `react-native run-ios --simulator "iPhone SE"` | +| **rniosx** | `react-native run-ios --simulator "iPhone X"` | +| **rniosxs** | `react-native run-ios --simulator "iPhone Xs"` | +| **rniosxsm** | `react-native run-ios --simulator "iPhone Xs Max"` | +| **rniosxr** | `react-native run-ios --simulator "iPhone Xʀ"` | +| **rnios11** | `react-native run-ios --simulator "iPhone 11"` | +| **rnios11p** | `react-native run-ios --simulator "iPhone 11 Pro"` | +| **rnios11pm** | `react-native run-ios --simulator "iPhone 11 Pro Max"` | +| **rnios12** | `react-native run-ios --simulator "iPhone 12"` | +| **rnios12m** | `react-native run-ios --simulator "iPhone 12 mini"` | +| **rnios12p** | `react-native run-ios --simulator "iPhone 12 Pro"` | +| **rnios12pm** | `react-native run-ios --simulator "iPhone 12 Pro Max"` | +| **rnios13** | `react-native run-ios --simulator "iPhone 13"` | +| **rnios13m** | `react-native run-ios --simulator "iPhone 13 mini"` | +| **rnios13p** | `react-native run-ios --simulator "iPhone 13 Pro"` | +| **rnios13pm** | `react-native run-ios --simulator "iPhone 13 Pro Max"` | +| **rnios14** | `react-native run-ios --simulator "iPhone 14"` | +| **rnios14pl** | `react-native run-ios --simulator "iPhone 14 Plus"` | +| **rnios14p** | `react-native run-ios --simulator "iPhone 14 Pro"` | +| **rnios14pm** | `react-native run-ios --simulator "iPhone 14 Pro Max"` | +| _iPad_ | | +| **rnipad2** | `react-native run-ios --simulator "iPad 2"` | +| **rnipad5** | `react-native run-ios --simulator "iPad (5th generation)"` | +| **rnipad6** | `react-native run-ios --simulator "iPad (6th generation)"` | +| **rnipadr** | `react-native run-ios --simulator "iPad Retina"` | +| **rnipada** | `react-native run-ios --simulator "iPad Air"` | +| **rnipada2** | `react-native run-ios --simulator "iPad Air 2"` | +| **rnipada3** | `react-native run-ios --simulator "iPad Air (3rd generation)"` | +| **rnipadm2** | `react-native run-ios --simulator "iPad mini 2"` | +| **rnipadm3** | `react-native run-ios --simulator "iPad mini 3"` | +| **rnipadm4** | `react-native run-ios --simulator "iPad mini 4"` | +| **rnipadm5** | `react-native run-ios --simulator "iPad mini (5th generation)"` | +| **rnipadp9** | `react-native run-ios --simulator "iPad Pro (9.7-inch)"` | +| **rnipadp12** | `react-native run-ios --simulator "iPad Pro (12.9-inch)"` | +| **rnipadp122** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (2nd generation)"` | +| **rnipadp10** | `react-native run-ios --simulator "iPad Pro (10.5-inch)"` | +| **rnipad11** | `react-native run-ios --simulator "iPad Pro (11-inch)"` | +| **rnipad123** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (3rd generation)"` | +| _Apple TV_ | | +| **rnatv** | `react-native run-ios --simulator "Apple TV"` | +| **rnatv4k** | `react-native run-ios --simulator "Apple TV 4K"` | +| **rnatv4k1080** | `react-native run-ios --simulator "Apple TV 4K (at 1080p)"` | +| **rnipad123** | `react-native run-ios --simulator "iPad Pro (12.9-inch) (3rd generation)"` | +| _Apple Watch_ | | +| **rnaw38** | `react-native run-ios --simulator "Apple Watch - 38mm"` | +| **rnaw42** | `react-native run-ios --simulator "Apple Watch - 42mm"` | +| **rnaws238** | `react-native run-ios --simulator "Apple Watch Series 2 - 38mm"` | +| **rnaws242** | `react-native run-ios --simulator "Apple Watch Series 2 - 42mm"` | +| **rnaws338** | `react-native run-ios --simulator "Apple Watch Series 3 - 38mm"` | +| **rnaws342** | `react-native run-ios --simulator "Apple Watch Series 3 - 42mm"` | +| **rnaws440** | `react-native run-ios --simulator "Apple Watch Series 4 - 40mm"` | +| **rnaws444** | `react-native run-ios --simulator "Apple Watch Series 4 - 44mm"` | From 1c879f67b4380f0705ee1bc578d5aab53bf192a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 3 Oct 2022 16:58:42 +0200 Subject: [PATCH 039/253] fix(ssh-agent): silence `ssh-add` if quiet mode is enabled (#11201) Fixes #11201 --- plugins/ssh-agent/ssh-agent.plugin.zsh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh index 0d6a35b35..78ac46b13 100644 --- a/plugins/ssh-agent/ssh-agent.plugin.zsh +++ b/plugins/ssh-agent/ssh-agent.plugin.zsh @@ -72,6 +72,9 @@ function _add_identities() { local args zstyle -a :omz:plugins:ssh-agent ssh-add-args args + # if ssh-agent quiet mode, pass -q to ssh-add + zstyle -t :omz:plugins:ssh-agent quiet && args=(-q $args) + # use user specified helper to ask for password (ksshaskpass, etc) local helper zstyle -s :omz:plugins:ssh-agent helper helper From e0e22d112013aee22635b6afe4c2c9d1bf88cbf0 Mon Sep 17 00:00:00 2001 From: George Rodrigues Date: Mon, 3 Oct 2022 12:03:53 -0300 Subject: [PATCH 040/253] chore(docs): fix some typos (#11211) --- plugins/emoji/update_emoji.py | 4 ++-- plugins/lpass/_lpass | 2 +- plugins/ng/_ng | 2 +- plugins/pm2/_pm2 | 2 +- plugins/salt/_salt | 2 +- plugins/swiftpm/_swift | 2 +- plugins/systemadmin/README.md | 2 +- plugins/terraform/_terraform | 2 +- tools/require_tool.sh | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/emoji/update_emoji.py b/plugins/emoji/update_emoji.py index eb945b9ef..18b3c060d 100644 --- a/plugins/emoji/update_emoji.py +++ b/plugins/emoji/update_emoji.py @@ -56,7 +56,7 @@ typeset -gAH emoji_groups # def country_iso(_all_names, _omz_name): # """ Using the external library country_converter, -# this funciton can detect the ISO2 and ISO3 codes +# this function can detect the ISO2 and ISO3 codes # of the country. It takes as argument the array # with all the names of the emoji, and returns that array.""" # omz_no_underscore = re.sub(r'_', r' ', _omz_name) @@ -96,7 +96,7 @@ def name_to_omz(_name, _group, _subgroup, _status): # Special treatment by status # Enables us to have every emoji combination, # even the one that are not officially sanctionned - # and are implemeted by, say, only one vendor + # and are implemented by, say, only one vendor if _status == "unqualified": shortname += "_unqualified" elif _status == "minimally-qualified": diff --git a/plugins/lpass/_lpass b/plugins/lpass/_lpass index e6193a22d..621a7bcd7 100644 --- a/plugins/lpass/_lpass +++ b/plugins/lpass/_lpass @@ -106,7 +106,7 @@ _lpass() { generic_options+=('--color=[Color: auto | never | always]') fi if [ "$has_interactive" -eq 1 ]; then - generic_options+=("--non-interactive[Use stardard input instead of $EDITOR]") + generic_options+=("--non-interactive[Use standard input instead of $EDITOR]") fi _arguments $generic_options fi diff --git a/plugins/ng/_ng b/plugins/ng/_ng index 9c96cf7e3..86c6ce187 100644 --- a/plugins/ng/_ng +++ b/plugins/ng/_ng @@ -46,7 +46,7 @@ elif (( CURRENT == 3 )); then # ... # } # } - # In abscence of a proper JSON parser, just grab the lines with + # In absence of a proper JSON parser, just grab the lines with # a 2-space indentation and only the stuff inside quotes local -a projects projects=(${(@f)"$(ng config projects 2>/dev/null | sed -n 's/^ "\([^"]\+\)".*$/\1/p')"}) diff --git a/plugins/pm2/_pm2 b/plugins/pm2/_pm2 index 86412aef1..faa6a3404 100644 --- a/plugins/pm2/_pm2 +++ b/plugins/pm2/_pm2 @@ -118,7 +118,7 @@ start_options=( ) logs_options=( '--json[json log output]' - '--format[formated log output]' + '--format[formatted log output]' '--raw[raw output]' '--err[only shows error output]' '--out[only shows standard output]' diff --git a/plugins/salt/_salt b/plugins/salt/_salt index a1c55f350..589d21d8b 100644 --- a/plugins/salt/_salt +++ b/plugins/salt/_salt @@ -9,7 +9,7 @@ # zstyle ':completion::complete:salt(|-call):modules:' use-cache true # zstyle ':completion::complete:salt(|-cp|-call|-run|-key):salt_dir:' use-cache true # -# cache validation can be controled with the style cache-ttl. +# cache validation can be controlled with the style cache-ttl. # it expects two arguments: number (days|hours|weeks|months) # to invalidate the minion cache after four days: # zstyle ':completion::complete:salt(|-cp|-call):minions:' cache-ttl 4 days diff --git a/plugins/swiftpm/_swift b/plugins/swiftpm/_swift index fe6f1c9aa..3a923226d 100644 --- a/plugins/swiftpm/_swift +++ b/plugins/swiftpm/_swift @@ -301,7 +301,7 @@ _swift_package_init() { _swift_package_unedit() { arguments=( ":The name of the package to unedit:_swift_dependency" - "--force[Unedit the package even if it has uncommited and unpushed changes.]" + "--force[Unedit the package even if it has uncommitted and unpushed changes.]" ) _arguments $arguments && return } diff --git a/plugins/systemadmin/README.md b/plugins/systemadmin/README.md index 146b58605..3a9d9de66 100644 --- a/plugins/systemadmin/README.md +++ b/plugins/systemadmin/README.md @@ -41,7 +41,7 @@ plugins=(... systemadmin) | accessip10 | List the top 10 accesses to the ip address in the nginx/access.log file or another log file if specified | | visitpage20 | List the top 20 most visited files or pages in the nginx/access.log file or another log file if specified | | consume100 | List the 100 most time-consuming Page lists (more than 60 seconds) as well as the corresponding number of occurrences | -| webtraffic | List website traffic statistics in GB from tne nginx/access.log file or another log file if specified | +| webtraffic | List website traffic statistics in GB from the nginx/access.log file or another log file if specified | | c404 | List statistics on 404 connections in the nginx/access.log file or another log file if specified | | httpstatus | List statistics based on http status in the nginx/access.log file or another log file if specified | | d0 | Delete 0 byte files recursively in the current directory or another if specified | diff --git a/plugins/terraform/_terraform b/plugins/terraform/_terraform index a19e50670..625834563 100644 --- a/plugins/terraform/_terraform +++ b/plugins/terraform/_terraform @@ -47,7 +47,7 @@ __apply() { '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ '-lock-timeout=[(0s) Duration to retry a state lock.]' \ '-input=[(true) Ask for input for variables if not directly set.]' \ - '-no-color[If specified, output wil be colorless.]' \ + '-no-color[If specified, output will be colorless.]' \ '-parallelism=[(10) Limit the number of parallel resource operations.]' \ '-refresh=[(true) Update state prior to checking for differences. This has no effect if a plan file is given to apply.]' \ '-state=[(terraform.tfstate) Path to read and save state (unless state-out is specified).]:statefile:_files -g "*.tfstate"' \ diff --git a/tools/require_tool.sh b/tools/require_tool.sh index 1fa77f77a..19c5f6fa9 100755 --- a/tools/require_tool.sh +++ b/tools/require_tool.sh @@ -107,7 +107,7 @@ usage() { NAME require_tool.sh - Ensure version of a tool is greater than the one expected -SYNOPSYS +SYNOPSIS require_tool.sh [ -h ] [ --help ] [ TOOL MIN_VERSION ] From b93b67b84490d45eb2544b1741e64dc16103207d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 3 Oct 2022 17:11:52 +0200 Subject: [PATCH 041/253] fix(gradle): remove deprecated use of `egrep` (#11160) --- plugins/gradle/_gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/gradle/_gradle b/plugins/gradle/_gradle index e77b23cdb..770723d85 100644 --- a/plugins/gradle/_gradle +++ b/plugins/gradle/_gradle @@ -96,7 +96,7 @@ __gradle-generate-script-cache() { zle -R "Generating Gradle build script cache" # Cache all Gradle scripts local -a gradle_build_scripts - gradle_build_scripts=( $(find $project_root_dir -type f -name "*.gradle" -o -name "*.gradle.kts" 2>/dev/null | egrep -v "$script_exclude_pattern") ) + gradle_build_scripts=( $(find $project_root_dir -type f -name "*.gradle" -o -name "*.gradle.kts" 2>/dev/null | grep -E -v "$script_exclude_pattern") ) printf "%s\n" "${gradle_build_scripts[@]}" >| $cache_dir/$cache_name fi } From 570158e464c9f57ab03c4162b4e6853b2c7c650d Mon Sep 17 00:00:00 2001 From: Nadhem Date: Mon, 3 Oct 2022 16:59:49 +0100 Subject: [PATCH 042/253] chore(lib): update deprecated grep aliases (#11161) --- lib/grep.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/grep.zsh b/lib/grep.zsh index a725e0f26..54e0f694e 100644 --- a/lib/grep.zsh +++ b/lib/grep.zsh @@ -24,8 +24,8 @@ else if [[ -n "$GREP_OPTIONS" ]]; then # export grep, egrep and fgrep settings alias grep="grep $GREP_OPTIONS" - alias egrep="egrep $GREP_OPTIONS" - alias fgrep="fgrep $GREP_OPTIONS" + alias egrep="grep -E $GREP_OPTIONS" + alias fgrep="grep -F $GREP_OPTIONS" # write to cache file if cache directory is writable if [[ -w "$ZSH_CACHE_DIR" ]]; then From 78e85c7d78edeca7f06d6a54ad7f03f10dacde62 Mon Sep 17 00:00:00 2001 From: Carlo Date: Thu, 6 Oct 2022 20:01:56 +0100 Subject: [PATCH 043/253] fix(nvm): source nvm script only when used (#11205) closes #11042 --- plugins/nvm/README.md | 6 +++--- plugins/nvm/nvm.plugin.zsh | 38 ++++++++++++++++---------------------- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/plugins/nvm/README.md b/plugins/nvm/README.md index a8bc34ae7..1acf12050 100644 --- a/plugins/nvm/README.md +++ b/plugins/nvm/README.md @@ -22,9 +22,9 @@ These settings should go in your zshrc file, before Oh My Zsh is sourced: nvm has been installed, regardless of chip architecture, use `NVM_HOMEBREW=$(brew --prefix nvm)`. - **`NVM_LAZY`**: if you want the plugin to defer the load of nvm to speed-up the start of your zsh session, - set `NVM_LAZY` to `1`. This will use the `--no-use` parameter when loading nvm, and will create a function - for `node`, `npm`, `yarn`, and the command(s) specified by `NVM_LAZY_CMD`, so when you call either of them, - nvm will load with `nvm use default`. + set `NVM_LAZY` to `1`. This will source nvm script only when using it, and will create a function for `node`, + `npm`, `pnpm`, `yarn`, and the command(s) specified by `NVM_LAZY_CMD`, so when you call either of them, + nvm will be loaded and run with default version. - **`NVM_LAZY_CMD`**: if you want additional command(s) to trigger lazy loading of nvm, set `NVM_LAZY_CMD` to the command or an array of the commands. diff --git a/plugins/nvm/nvm.plugin.zsh b/plugins/nvm/nvm.plugin.zsh index 630854a71..1fb4d238b 100644 --- a/plugins/nvm/nvm.plugin.zsh +++ b/plugins/nvm/nvm.plugin.zsh @@ -4,39 +4,33 @@ if [[ -z "$NVM_DIR" ]]; then export NVM_DIR="$HOME/.nvm" elif [[ -d "${XDG_CONFIG_HOME:-$HOME/.config}/nvm" ]]; then export NVM_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/nvm" + elif (( $+commands[brew] )); then + NVM_HOMEBREW="${NVM_HOMEBREW:-${HOMEBREW_PREFIX:-$(brew --prefix)}/opt/nvm}" + if [[ -d "$NVM_HOMEBREW" ]]; then + export NVM_DIR="$NVM_HOMEBREW" + fi fi fi # Don't try to load nvm if command already available # Note: nvm is a function so we need to use `which` -! which nvm &>/dev/null || return +which nvm &>/dev/null && return -if [[ -f "$NVM_DIR/nvm.sh" ]]; then +if (( $+NVM_LAZY )); then + # Call nvm when first using nvm, node, npm, pnpm, yarn or $NVM_LAZY_CMD + function nvm node npm pnpm yarn $NVM_LAZY_CMD { + unfunction nvm node npm pnpm yarn $NVM_LAZY_CMD + # Load nvm if it exists in $NVM_DIR + [[ -f "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh" + "$0" "$@" + } +elif [[ -f "$NVM_DIR/nvm.sh" ]]; then # Load nvm if it exists in $NVM_DIR - source "$NVM_DIR/nvm.sh" ${NVM_LAZY+"--no-use"} -elif (( $+commands[brew] )); then - # Otherwise try to load nvm installed via Homebrew - # User can set this if they have an unusual Homebrew setup - NVM_HOMEBREW="${NVM_HOMEBREW:-${HOMEBREW_PREFIX:-$(brew --prefix)}/opt/nvm}" - # Load nvm from Homebrew location if it exists - if [[ -f "$NVM_HOMEBREW/nvm.sh" ]]; then - source "$NVM_HOMEBREW/nvm.sh" ${NVM_LAZY+"--no-use"} - else - return - fi + source "$NVM_DIR/nvm.sh" else return fi -# Call nvm when first using node, npm or yarn -if (( $+NVM_LAZY )); then - function node npm yarn $NVM_LAZY_CMD { - unfunction node npm yarn $NVM_LAZY_CMD - nvm use default - command "$0" "$@" - } -fi - # Autoload nvm when finding a .nvmrc file in the current directory # Adapted from: https://github.com/nvm-sh/nvm#zsh if (( $+NVM_AUTOLOAD )); then From f52b3c6716b632a439355510d559c9d5522edc7e Mon Sep 17 00:00:00 2001 From: Eddie <36518273+0xEddie@users.noreply.github.com> Date: Fri, 7 Oct 2022 06:31:01 -0600 Subject: [PATCH 044/253] chore(dnote): fix incorrect link (#11237) --- plugins/dnote/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/dnote/README.md b/plugins/dnote/README.md index e1b9b7044..7b41b9027 100644 --- a/plugins/dnote/README.md +++ b/plugins/dnote/README.md @@ -1,6 +1,6 @@ # Dnote Plugin -This plugin adds auto-completion for [Dnote](https://dnote.io) project. +This plugin adds auto-completion for [Dnote](https://www.getdnote.com/), a simple command line notebook. To use it, add `dnote` to the plugins array in your zshrc file: From 065f5ffc5ae107f752b908d1c81e4c4f3e26e7b7 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Oct 2022 15:39:00 +0300 Subject: [PATCH 045/253] ci: harden permissions for GitHub Workflows (#11174) * build: harden main.yml permissions Signed-off-by: Alex * build: harden project.yml permissions Signed-off-by: Alex * Update project.yml The permissions are not necessary, because a separate token is used `GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }}` --- .github/workflows/main.yml | 3 +++ .github/workflows/project.yml | 1 + 2 files changed, 4 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 50e00f9c9..57a1e3833 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,6 +14,9 @@ concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true +permissions: + contents: read # to fetch code (actions/checkout) + jobs: tests: name: Run tests diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index b2219893d..999cc08e2 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -9,6 +9,7 @@ concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true +permissions: {} jobs: add-to-project: name: Add to project From 11daa7dd5f22acadef1135000e92cc899e22c134 Mon Sep 17 00:00:00 2001 From: Erik Thorelli Date: Fri, 7 Oct 2022 05:40:13 -0700 Subject: [PATCH 046/253] chore: add vscode workspace settings to gitignore (#11108) There are workspace settings for vscode plugins that make contributing to ohmyzsh easier. However, these would be noisy for users, especially for those that don't use vscode. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index ec24a19bb..71ae444e5 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,6 @@ cache/ log/ *.swp .DS_Store + +# editor configs +.vscode \ No newline at end of file From f80cf12092edb1bed8b7972bc1b9d63c836a9be7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Wed, 12 Oct 2022 10:49:44 +0200 Subject: [PATCH 047/253] fix: fix OSC 8 hyperlink escape sequences --- tools/install.sh | 2 +- tools/upgrade.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index 495ad2c11..bc3723050 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -185,7 +185,7 @@ supports_truecolor() { fmt_link() { # $1: text, $2: url, $3: fallback mode if supports_hyperlinks; then - printf '\033]8;;%s\a%s\033]8;;\a\n' "$2" "$1" + printf '\033]8;;%s\033\\%s\033]8;;\033\\\n' "$2" "$1" return fi diff --git a/tools/upgrade.sh b/tools/upgrade.sh index afc6a98dd..2f3b4dae3 100755 --- a/tools/upgrade.sh +++ b/tools/upgrade.sh @@ -107,7 +107,7 @@ supports_truecolor() { fmt_link() { # $1: text, $2: url, $3: fallback mode if supports_hyperlinks; then - printf '\033]8;;%s\a%s\033]8;;\a\n' "$2" "$1" + printf '\033]8;;%s\033\\%s\033]8;;\033\\\n' "$2" "$1" return fi From ee4910e3b36dc5556cad567c3760ee500297cc8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Wed, 12 Oct 2022 10:55:02 +0200 Subject: [PATCH 048/253] fix: show full hyperlinks in Konsole (#10964) Fixes #10964 --- tools/install.sh | 10 ++++++++-- tools/upgrade.sh | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index bc3723050..fb6973dbc 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -156,11 +156,17 @@ supports_hyperlinks() { return 0 fi - # Windows Terminal or Konsole also support hyperlinks - if [ -n "$WT_SESSION" ] || [ -n "$KONSOLE_VERSION" ]; then + # Windows Terminal also supports hyperlinks + if [ -n "$WT_SESSION" ]; then return 0 fi + # Konsole supports hyperlinks, but it's an opt-in setting that can't be detected + # https://github.com/ohmyzsh/ohmyzsh/issues/10964 + # if [ -n "$KONSOLE_VERSION" ]; then + # return 0 + # fi + return 1 } diff --git a/tools/upgrade.sh b/tools/upgrade.sh index 2f3b4dae3..596a59302 100755 --- a/tools/upgrade.sh +++ b/tools/upgrade.sh @@ -78,11 +78,17 @@ supports_hyperlinks() { return 0 fi - # Windows Terminal or Konsole also support hyperlinks - if [ -n "$WT_SESSION" ] || [ -n "$KONSOLE_VERSION" ]; then + # Windows Terminal also supports hyperlinks + if [ -n "$WT_SESSION" ]; then return 0 fi + # Konsole supports hyperlinks, but it's an opt-in setting that can't be detected + # https://github.com/ohmyzsh/ohmyzsh/issues/10964 + # if [ -n "$KONSOLE_VERSION" ]; then + # return 0 + # fi + return 1 } From b9be3a43b4da579299b4426b1ba9121f746e2555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 3 Oct 2022 18:52:50 +0200 Subject: [PATCH 049/253] fix(cli): change unrecognized `\s` in BSD awk (#11146) In BSD awk, \s is not a valid sequence interchangeable with "space or tab characters" as it is in GNU awk. This fix uses [ \t] instead, which is all the possibilities that we need to contemplate when reading the .zshrc file. Fixes #11146 --- lib/cli.zsh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/cli.zsh b/lib/cli.zsh index db659c11f..f15bd6d63 100644 --- a/lib/cli.zsh +++ b/lib/cli.zsh @@ -241,21 +241,21 @@ function _omz::plugin::disable { # Remove plugins substitution awk script local awk_subst_plugins="\ - gsub(/\s+(${(j:|:)dis_plugins})/, \"\") # with spaces before - gsub(/(${(j:|:)dis_plugins})\s+/, \"\") # with spaces after + gsub(/[ \t]+(${(j:|:)dis_plugins})/, \"\") # with spaces before + gsub(/(${(j:|:)dis_plugins})[ \t]+/, \"\") # with spaces after gsub(/\((${(j:|:)dis_plugins})\)/, \"\") # without spaces (only plugin) " # Disable plugins awk script local awk_script=" # if plugins=() is in oneline form, substitute disabled plugins and go to next line -/^\s*plugins=\([^#]+\).*\$/ { +/^[ \t]*plugins=\([^#]+\).*\$/ { $awk_subst_plugins print \$0 next } # if plugins=() is in multiline form, enable multi flag and disable plugins if they're there -/^\s*plugins=\(/ { +/^[ \t]*plugins=\(/ { multi=1 $awk_subst_plugins print \$0 @@ -330,14 +330,14 @@ function _omz::plugin::enable { # Enable plugins awk script local awk_script=" # if plugins=() is in oneline form, substitute ) with new plugins and go to the next line -/^\s*plugins=\([^#]+\).*\$/ { +/^[ \t]*plugins=\([^#]+\).*\$/ { sub(/\)/, \" $add_plugins&\") print \$0 next } # if plugins=() is in multiline form, enable multi flag -/^\s*plugins=\(/ { +/^[ \t]*plugins=\(/ { multi=1 } @@ -699,9 +699,9 @@ function _omz::theme::set { # Enable theme in .zshrc local awk_script=' -!set && /^\s*ZSH_THEME=[^#]+.*$/ { +!set && /^[ \t]*ZSH_THEME=[^#]+.*$/ { set=1 - sub(/^\s*ZSH_THEME=[^#]+.*$/, "ZSH_THEME=\"'$1'\" # set by `omz`") + sub(/^[ \t]*ZSH_THEME=[^#]+.*$/, "ZSH_THEME=\"'$1'\" # set by `omz`") print $0 next } From 52e848ce8f8d7370a202e0bee07ce2c32858932e Mon Sep 17 00:00:00 2001 From: Sibs <68712272+Bryan-netizen@users.noreply.github.com> Date: Fri, 14 Oct 2022 20:07:26 +0300 Subject: [PATCH 050/253] feat(web-search): add support for Brave search engine (#11106) --- plugins/web-search/README.md | 3 ++- plugins/web-search/web-search.plugin.zsh | 34 +++++++++++++----------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/plugins/web-search/README.md b/plugins/web-search/README.md index da90f90a0..54232a910 100644 --- a/plugins/web-search/README.md +++ b/plugins/web-search/README.md @@ -25,9 +25,10 @@ $ google oh-my-zsh Available search contexts are: | Context | URL | -|-----------------------|------------------------------------------| +| --------------------- | ---------------------------------------- | | `bing` | `https://www.bing.com/search?q=` | | `google` | `https://www.google.com/search?q=` | +| `brs` or `brave` | `https://search.brave.com/search?q=` | | `yahoo` | `https://search.yahoo.com/search?p=` | | `ddg` or `duckduckgo` | `https://www.duckduckgo.com/?q=` | | `sp` or `startpage` | `https://www.startpage.com/do/search?q=` | diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh index 229948894..d8b4a7f8b 100644 --- a/plugins/web-search/web-search.plugin.zsh +++ b/plugins/web-search/web-search.plugin.zsh @@ -7,22 +7,23 @@ function web_search() { typeset -A urls urls=( $ZSH_WEB_SEARCH_ENGINES - google "https://www.google.com/search?q=" - bing "https://www.bing.com/search?q=" - yahoo "https://search.yahoo.com/search?p=" - duckduckgo "https://www.duckduckgo.com/?q=" - startpage "https://www.startpage.com/do/search?q=" - yandex "https://yandex.ru/yandsearch?text=" - github "https://github.com/search?q=" - baidu "https://www.baidu.com/s?wd=" - ecosia "https://www.ecosia.org/search?q=" - goodreads "https://www.goodreads.com/search?q=" - qwant "https://www.qwant.com/?q=" - givero "https://www.givero.com/search?q=" - stackoverflow "https://stackoverflow.com/search?q=" - wolframalpha "https://www.wolframalpha.com/input/?i=" - archive "https://web.archive.org/web/*/" - scholar "https://scholar.google.com/scholar?q=" + google "https://www.google.com/search?q=" + bing "https://www.bing.com/search?q=" + brave "https://search.brave.com/search?q=" + yahoo "https://search.yahoo.com/search?p=" + duckduckgo "https://www.duckduckgo.com/?q=" + startpage "https://www.startpage.com/do/search?q=" + yandex "https://yandex.ru/yandsearch?text=" + github "https://github.com/search?q=" + baidu "https://www.baidu.com/s?wd=" + ecosia "https://www.ecosia.org/search?q=" + goodreads "https://www.goodreads.com/search?q=" + qwant "https://www.qwant.com/?q=" + givero "https://www.givero.com/search?q=" + stackoverflow "https://stackoverflow.com/search?q=" + wolframalpha "https://www.wolframalpha.com/input/?i=" + archive "https://web.archive.org/web/*/" + scholar "https://scholar.google.com/scholar?q=" ) # check whether the search engine is supported @@ -47,6 +48,7 @@ function web_search() { alias bing='web_search bing' +alias brs='web_search brave' alias google='web_search google' alias yahoo='web_search yahoo' alias ddg='web_search duckduckgo' From 08d5c936c670bd7e37902f64a065ba9f74452cb9 Mon Sep 17 00:00:00 2001 From: Syphdias Date: Fri, 14 Oct 2022 19:12:04 +0200 Subject: [PATCH 051/253] fix(git-auto-fetch): avoid password prompt with `GIT_TERMINAL_PROMPT=0` (#11234) --- plugins/git-auto-fetch/git-auto-fetch.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh b/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh index 2e029639c..2df34bb7b 100644 --- a/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh +++ b/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh @@ -28,6 +28,7 @@ function git-fetch-all { # Fetch all remotes (avoid ssh passphrase prompt) date -R &>! "$gitdir/FETCH_LOG" GIT_SSH_COMMAND="command ssh -o BatchMode=yes" \ + GIT_TERMINAL_PROMPT=0 \ command git fetch --all 2>/dev/null &>> "$gitdir/FETCH_LOG" ) &| } From 34cd8fbd4afce7b2beb3292f4f90ca57142f442c Mon Sep 17 00:00:00 2001 From: Warren Young Date: Mon, 29 Aug 2022 21:49:12 -0600 Subject: [PATCH 052/253] refactor(fossil): use `fossil branch current` supported since v2.7 (#11138) Using the automation-friendly "fossil branch current" feature added in Fossil 2.7 instead of ad hoc parsing of human-readable "fossil branch" output. Not only does this fix a stray space in the output, it's more robust against changes in command output in general. Closes #11138 --- plugins/fossil/fossil.plugin.zsh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/fossil/fossil.plugin.zsh b/plugins/fossil/fossil.plugin.zsh index a2123f415..fadf6095d 100644 --- a/plugins/fossil/fossil.plugin.zsh +++ b/plugins/fossil/fossil.plugin.zsh @@ -13,12 +13,11 @@ ZSH_THEME_FOSSIL_PROMPT_DIRTY=" %{$fg_bold[red]%}✖" ZSH_THEME_FOSSIL_PROMPT_CLEAN=" %{$fg_bold[green]%}✔" function fossil_prompt_info() { - local info=$(fossil branch 2>&1) + local branch=$(fossil branch current 2>&1) # if we're not in a fossil repo, don't show anything - ! command grep -q "use --repo" <<< "$info" || return + ! command grep -q "use --repo" <<< "$branch" || return - local branch=$(echo $info | grep "* " | sed 's/* //g') local changes=$(fossil changes) local dirty="$ZSH_THEME_FOSSIL_PROMPT_CLEAN" From c7c0a8917b8ded7511c07105c82bd7417b92f7a3 Mon Sep 17 00:00:00 2001 From: tmoschou <5567550+tmoschou@users.noreply.github.com> Date: Sat, 15 Oct 2022 04:57:42 +1030 Subject: [PATCH 053/253] fix(brew): do not source `brew shellenv` if already on path (#11167) --- plugins/brew/README.md | 5 ++++- plugins/brew/brew.plugin.zsh | 17 ++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/plugins/brew/README.md b/plugins/brew/README.md index 64e0e1153..9ce2c5bb0 100644 --- a/plugins/brew/README.md +++ b/plugins/brew/README.md @@ -10,7 +10,10 @@ plugins=(... brew) ## Shellenv -This plugin also executes `brew shellenv` at plugin load to set up many useful variables, such as `HOMEBREW_PREFIX` or `HOMEBREW_REPOSITORY`. +If `brew` is not found in the PATH, this plugin will attempt to find it in common +locations, and execute `brew shellenv` to set the environment appropriately. +This plugin will also export `HOMEBREW_PREFIX="$(brew --prefix)"` if not previously +defined for convenience. ## Aliases diff --git a/plugins/brew/brew.plugin.zsh b/plugins/brew/brew.plugin.zsh index 4a2322216..41420b5b7 100644 --- a/plugins/brew/brew.plugin.zsh +++ b/plugins/brew/brew.plugin.zsh @@ -10,18 +10,21 @@ if (( ! $+commands[brew] )); then else return fi + + # Only add Homebrew installation to PATH, MANPATH, and INFOPATH if brew is + # not already on the path, to prevent duplicate entries. This aligns with + # the behavior of the brew installer.sh post-install steps. + eval "$("$BREW_LOCATION" shellenv)" + unset BREW_LOCATION fi if [[ -z "$HOMEBREW_PREFIX" ]]; then - if [[ -z $BREW_LOCATION ]]; then - eval "$(brew shellenv)" - else - eval "$("$BREW_LOCATION" shellenv)" - fi + # Maintain compatability with potential custom user profiles, where we had + # previously relied on always sourcing shellenv. OMZ plugins should not rely + # on this to be defined due to out of order processing. + export HOMEBREW_PREFIX="$(brew --prefix)" fi -unset BREW_LOCATION - alias bcubc='brew upgrade --cask && brew cleanup' alias bcubo='brew update && brew outdated --cask' alias brewp='brew pin' From 65a1e4edbe678cdac37ad96ca4bc4f6d77e27adf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 14 Oct 2022 20:31:33 +0200 Subject: [PATCH 054/253] fix(installer): detect newer Git for Windows version errors (#11157) Fixes #11157 --- tools/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/install.sh b/tools/install.sh index fb6973dbc..a6538f9d7 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -273,7 +273,7 @@ setup_ohmyzsh() { } ostype=$(uname) - if [ -z "${ostype%CYGWIN*}" ] && git --version | grep -q msysgit; then + if [ -z "${ostype%CYGWIN*}" ] && git --version | grep -Eq 'msysgit|windows'; then fmt_error "Windows/MSYS Git is not supported on Cygwin" fmt_error "Make sure the Cygwin git package is installed and is first on the \$PATH" exit 1 From 818f3de1fa6588a94bf207766a811992e301acf1 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Sat, 1 Oct 2022 11:21:19 +0200 Subject: [PATCH 055/253] fix(debian)!: remove ar alias BREAKING CHANGE: This alias needs to be removed because is shadowing `ar` archiver. Closes #9304 --- plugins/debian/README.md | 39 ++++++++++++++++---------------- plugins/debian/debian.plugin.zsh | 7 ------ 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/plugins/debian/README.md b/plugins/debian/README.md index 2ce206cfb..1db534f13 100644 --- a/plugins/debian/README.md +++ b/plugins/debian/README.md @@ -30,26 +30,25 @@ Set `$apt_pref` and `$apt_upgr` to whatever command you want (before sourcing Oh ## Superuser Operations Aliases -| Alias | Command | Description | -| -------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `aac` | `sudo $apt_pref autoclean` | Clears out the local repository of retrieved package files | -| `aar` | `sudo $apt_pref autoremove` | Removes packages installed automatically that are no longer needed | -| `abd` | `sudo $apt_pref build-dep` | Installs all dependencies for building packages | -| `ac` | `sudo $apt_pref clean` | Clears out the local repository of retrieved package files except lock files | -| `ad` | `sudo $apt_pref update` | Updates the package lists for upgrades for packages | -| `adg` | `sudo $apt_pref update && sudo $apt_pref $apt_upgr` | Update and upgrade packages | -| `ads` | `sudo apt-get dselect-upgrade` | Installs packages from list and removes all not in the list | -| `adu` | `sudo $apt_pref update && sudo $apt_pref dist-upgrade` | Smart upgrade that handles dependencies | -| `afu` | `sudo apt-file update` | Update the files in packages | -| `ai` | `sudo $apt_pref install` | Command-line tool to install package | -| `ail` | `sed -e 's/ */ /g' -e 's/ *//' \| cut -s -d ' ' -f 1 \| xargs sudo $apt_pref install` | Install all packages given on the command line while using only the first word of each line | -| `alu` | `sudo apt update && apt list -u && sudo apt upgrade` | Update, list and upgrade packages | -| `ap` | `sudo $apt_pref purge` | Removes packages along with configuration files | -| `ar` | `sudo $apt_pref remove` | Removes packages, keeps the configuration files | -| `au` | `sudo $apt_pref $apt_upgr` | Install package upgrades | -| `di` | `sudo dpkg -i` | Install all .deb files in the current directory | -| `dia` | `sudo dpkg -i ./*.deb` | Install all .deb files in the current directory | -| `kclean` | `sudo aptitude remove -P ?and(~i~nlinux-(ima\|hea) ?not(~n$(uname -r)))` | Remove ALL kernel images and headers EXCEPT the one in use | +| Alias | Command | Description | +| -------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `aac` | `sudo $apt_pref autoclean` | Clears out the local repository of retrieved package files | +| `aar` | `sudo $apt_pref autoremove` | Removes packages installed automatically that are no longer needed | +| `abd` | `sudo $apt_pref build-dep` | Installs all dependencies for building packages | +| `ac` | `sudo $apt_pref clean` | Clears out the local repository of retrieved package files except lock files | +| `ad` | `sudo $apt_pref update` | Updates the package lists for upgrades for packages | +| `adg` | `sudo $apt_pref update && sudo $apt_pref $apt_upgr` | Update and upgrade packages | +| `ads` | `sudo apt-get dselect-upgrade` | Installs packages from list and removes all not in the list | +| `adu` | `sudo $apt_pref update && sudo $apt_pref dist-upgrade` | Smart upgrade that handles dependencies | +| `afu` | `sudo apt-file update` | Update the files in packages | +| `ai` | `sudo $apt_pref install` | Command-line tool to install package | +| `ail` | `sed -e 's/ */ /g' -e 's/ *//' \| cut -s -d ' ' -f 1 \| xargs sudo $apt_pref install` | Install all packages given on the command line while using only the first word of each line | +| `alu` | `sudo apt update && apt list -u && sudo apt upgrade` | Update, list and upgrade packages | +| `ap` | `sudo $apt_pref purge` | Removes packages along with configuration files | +| `au` | `sudo $apt_pref $apt_upgr` | Install package upgrades | +| `di` | `sudo dpkg -i` | Install all .deb files in the current directory | +| `dia` | `sudo dpkg -i ./*.deb` | Install all .deb files in the current directory | +| `kclean` | `sudo aptitude remove -P ?and(~i~nlinux-(ima\|hea) ?not(~n$(uname -r)))` | Remove ALL kernel images and headers EXCEPT the one in use | ## Aliases - Commands using `su` diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh index f649a5b16..2d8c4666e 100644 --- a/plugins/debian/debian.plugin.zsh +++ b/plugins/debian/debian.plugin.zsh @@ -55,7 +55,6 @@ if [[ $use_sudo -eq 1 ]]; then alias ail="sed -e 's/ */ /g' -e 's/ *//' | cut -s -d ' ' -f 1 | xargs sudo $apt_pref install" alias ap="sudo $apt_pref purge" - alias ar="sudo $apt_pref remove" alias aar="sudo $apt_pref autoremove" # apt-get only @@ -98,11 +97,6 @@ else print "$cmd" eval "$cmd" } - function ar() { - cmd="su -lc '$apt_pref remove $@' root" - print "$cmd" - eval "$cmd" - } function aar() { cmd="su -lc '$apt_pref autoremove $@' root" print "$cmd" @@ -147,7 +141,6 @@ apt_pref_compdef au "$apt_upgr" apt_pref_compdef ai "install" apt_pref_compdef ail "install" apt_pref_compdef ap "purge" -apt_pref_compdef ar "remove" apt_pref_compdef aar "autoremove" apt_pref_compdef ads "dselect-upgrade" From 7e3231b846dec87fcf6537f6e45c9c1be9f718fe Mon Sep 17 00:00:00 2001 From: Carlo Date: Tue, 18 Oct 2022 19:10:55 +0200 Subject: [PATCH 056/253] feat(z): replace `rupa/z` with `agkozak/zsh-z` (#11236) --- plugins/z/LICENSE | 21 + plugins/z/MANUAL.md | 343 +++++++++++++++ plugins/z/Makefile | 4 - plugins/z/README | 148 ------- plugins/z/README.md | 7 +- plugins/z/_z | 82 ++++ plugins/z/z.1 | 173 -------- plugins/z/z.plugin.zsh | 972 ++++++++++++++++++++++++++++++++++++++++- plugins/z/z.sh | 267 ----------- 9 files changed, 1417 insertions(+), 600 deletions(-) create mode 100644 plugins/z/LICENSE create mode 100644 plugins/z/MANUAL.md delete mode 100644 plugins/z/Makefile delete mode 100644 plugins/z/README create mode 100644 plugins/z/_z delete mode 100644 plugins/z/z.1 delete mode 100644 plugins/z/z.sh diff --git a/plugins/z/LICENSE b/plugins/z/LICENSE new file mode 100644 index 000000000..d1cca7ae5 --- /dev/null +++ b/plugins/z/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018-2022 Alexandros Kozak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/plugins/z/MANUAL.md b/plugins/z/MANUAL.md new file mode 100644 index 000000000..dcca3c452 --- /dev/null +++ b/plugins/z/MANUAL.md @@ -0,0 +1,343 @@ +# Zsh-z + +Zsh-z is a command line tool that allows you to jump quickly to directories that you have visited frequently in the past, or recently -- but most often a combination of the two (a concept known as ["frecency"](https://en.wikipedia.org/wiki/Frecency)). It works by keeping track of when you go to directories and how much time you spend in them. It is then in the position to guess where you want to go when you type a partial string, e.g., `z src` might take you to `~/src/zsh`. `z zsh` might also get you there, and `z c/z` might prove to be even more specific -- it all depends on your habits and how much time you have been using Zsh-z to build up a database. After using Zsh-z for a little while, you will get to where you want to be by typing considerably less than you would need if you were using `cd`. + +Zsh-z is a native Zsh port of [rupa/z](https://github.com/rupa/z), a tool written for `bash` and Zsh that uses embedded `awk` scripts to do the heavy lifting. It was quite possibly my most used command line tool for a couple of years. I decided to translate it, `awk` parts and all, into pure Zsh script, to see if by eliminating calls to external tools (`awk`, `sort`, `date`, `sed`, `mv`, `rm`, and `chown`) and reducing forking through subshells I could make it faster. The performance increase is impressive, particularly on systems where forking is slow, such as Cygwin, MSYS2, and WSL. I have found that, in those environments, switching directories using Zsh-z can be over 100% faster than it is using `rupa/z`. + +There is a noteworthy stability increase as well. Race conditions have always been a problem with `rupa/z`, and users of that utility will occasionally lose their `.z` databases. By having Zsh-z only use Zsh (`rupa/z` uses a hybrid shell code that works on `bash` as well), I have been able to implement a `zsh/system`-based file-locking mechanism similar to [the one @mafredri once proposed for `rupa/z`](https://github.com/rupa/z/pull/199). It is now nearly impossible to crash the database, even through extreme testing. + +There are other, smaller improvements which I try to document in [Improvements and Fixes](#improvements-and-fixes). These include the new default behavior of sorting your tab completions by frecency rather than just letting Zsh sort the raw results alphabetically (a behavior which can be restored if you like it -- [see below](#settings)). + +Zsh-z is a drop-in replacement for `rupa/z` and will, by default, use the same database (`~/.z`), so you can go on using `rupa/z` when you launch `bash`. + +## Table of Contents +- [News](#news) +- [Installation](#installation) +- [Command Line Options](#command-line-options) +- [Settings](#settings) +- [Case Sensitivity](#case-sensitivity) +- [`ZSHZ_UNCOMMON`](#zshz_uncommon) +- [Making `--add` work for you](#making---add-work-for-you) +- [Other Improvements and Fixes](#other-improvements-and-fixes) +- [Migrating from Other Tools](#migrating-from-other-tools) +- [`COMPLETE_ALIASES`](#complete_aliases) +- [Known Bugs](#known-bugs) + +## News + +
+ Here are the latest features and updates. + +- June 29, 2022 + + Zsh-z is less likely to leave temporary files sitting around (props @mafredri). +- June 27, 2022 + + A bug was fixed which was preventing paths with spaces in them from being updated ([#61](https://github.com/agkozak/zsh-z/issues/61)). + + If writing to the temporary database file fails, the database will not be clobbered (props @mafredri). +- December 19, 2021 + + ZSH-z will now display tildes for `HOME` during completion when `ZSHZ_TILDE=1` has been set. +- November 11, 2021 + + A bug was fixed which was preventing ranks from being incremented. + + `--add` has been made to work with relative paths and has been documented for the user. +- October 14, 2021 + + Completions were being sorted alphabetically, rather than by rank; this error has been fixed. +- September 25, 2021 + + Orthographical change: "Zsh," not "ZSH." +- September 23, 2021 + + `z -xR` will now remove a directory *and its subdirectories* from the database. + + `z -x` and `z -xR` can now take an argument; without one, `PWD` is assumed. +- September 7, 2021 + + Fixed the unload function so that it removes the `$ZSHZ_CMD` alias (default: `z`). +- August 27, 2021 + + Using `print -v ... -f` instead of `print -v` to work around longstanding bug in Zsh involving `print -v` and multibyte strings. +- August 13, 2021 + + Fixed the explanation string printed during completion so that it may be formatted with `zstyle`. + + Zsh-z now declares `ZSHZ_EXCLUDE_DIRS` as an array with unique elements so that you do not have to. +- July 29, 2021 + + Temporarily disabling use of `print -v`, which seems to be mangling CJK multibyte strings. +- July 27, 2021 + + Internal escaping of path names now works with older versions of ZSH. + + Zsh-z now detects and discards any incomplete or incorrectly formattted database entries. +- July 10, 2021 + + Setting `ZSHZ_TRAILING_SLASH=1` makes it so that a search pattern ending in `/` can match the end of a path; e.g. `z foo/` can match `/path/to/foo`. +- June 25, 2021 + + Setting `ZSHZ_TILDE=1` displays the `HOME` directory as `~`. +- May 7, 2021 + + Setting `ZSHZ_ECHO=1` will cause Zsh-z to display the new path when you change directories. + + Better escaping of path names to deal paths containing the characters ``\`()[]``. +- February 15, 2021 + + Ranks are displayed the way `rupa/z` now displays them, i.e. as large integers. This should help Zsh-z to integrate with other tools. +- January 31, 2021 + + Zsh-z is now efficient enough that, on MSYS2 and Cygwin, it is faster to run it in the foreground than it is to fork a subshell for it. + + `_zshz_precmd` simply returns if `PWD` is `HOME` or in `ZSH_EXCLUDE_DIRS`, rather than waiting for `zshz` to do that. +- January 17, 2021 + + Made sure that the `PUSHD_IGNORE_DUPS` option is respected. +- January 14, 2021 + + The `z -h` help text now breaks at spaces. + + `z -l` was not working for Zsh version < 5. +- January 11, 2021 + + Major refactoring of the code. + + `z -lr` and `z -lt` work as expected. + + `EXTENDED_GLOB` has been disabled within the plugin to accomodate old-fashioned Windows directories with names such as `Progra~1`. + + Removed `zshelldoc` documentation. +- January 6, 2021 + + I have corrected the frecency routine so that it matches `rupa/z`'s math, but for the present, Zsh-z will continue to display ranks as 1/10000th of what they are in `rupa/z` -- [they had to multiply theirs by 10000](https://github.com/rupa/z/commit/f1f113d9bae9effaef6b1e15853b5eeb445e0712) to work around `bash`'s inadequacies at dealing with decimal fractions. +- January 5, 2021 + + If you try `z foo`, and `foo` is not in the database but `${PWD}/foo` is a valid directory, Zsh-z will `cd` to it. +- December 22, 2020 + + `ZSHZ_CASE`: when set to `ignore`, pattern matching is case-insensitive; when set to `smart`, patterns are matched case-insensitively when they are all lowercase and case-sensitively when they have uppercase characters in them (a behavior very much like Vim's `smartcase` setting). + + `ZSHZ_KEEP_DIRS` is an array of directory names that should not be removed from the database, even if they are not currently available (useful when a drive is not always mounted). + + Symlinked datafiles were having their symlinks overwritten; this bug has been fixed. + +
+ +## Installation + +### General observations + +This script can be installed simply by downloading it and sourcing it from your `.zshrc`: + + source /path/to/zsh-z.plugin.zsh + +For tab completion to work, you will want to have loaded `compinit`. The frameworks handle this themselves. If you are not using a framework, put + + autoload -U compinit && compinit + +in your .zshrc somewhere below where you source `zsh-z.plugin.zsh`. + +If you add + + zstyle ':completion:*' menu select + +to your `.zshrc`, your completion menus will look very nice. This `zstyle` invocation should work with any of the frameworks below as well. + +### For [antigen](https://github.com/zsh-users/antigen) users + +Add the line + + antigen bundle agkozak/zsh-z + +to your `.zshrc`, somewhere above the line that says `antigen apply`. + +### For [oh-my-zsh](http://ohmyz.sh/) users + +Execute the following command: + + git clone https://github.com/agkozak/zsh-z ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-z + +and add `zsh-z` to the line of your `.zshrc` that specifies `plugins=()`, e.g., `plugins=( git zsh-z )`. + +### For [prezto](https://github.com/sorin-ionescu/prezto) users + +Execute the following command: + + git clone https://github.com/agkozak/zsh-z.git ~/.zprezto-contrib/zsh-z + +Then edit your `~/.zpreztorc` file. Make sure the line that says + + zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib + +is uncommented. Then find the section that specifies which modules are to be loaded; it should look something like this: + + zstyle ':prezto:load' pmodule \ + 'environment' \ + 'terminal' \ + 'editor' \ + 'history' \ + 'directory' \ + 'spectrum' \ + 'utility' \ + 'completion' \ + 'prompt' + +Add a backslash to the end of the last line add `'zsh-z'` to the list, e.g., + + zstyle ':prezto:load' pmodule \ + 'environment' \ + 'terminal' \ + 'editor' \ + 'history' \ + 'directory' \ + 'spectrum' \ + 'utility' \ + 'completion' \ + 'prompt' \ + 'zsh-z' + +Then relaunch `zsh`. + +### For [zcomet](https://github.com/agkozak/zcomet) users + +Simply add + + zcomet load agkozak/zsh-z + +to your `.zshrc` (below where you source `zcomet.zsh` and above where you run `zcomet compinit`). + +### For [zgen](https://github.com/tarjoilija/zgen) users + +Add the line + + zgen load agkozak/zsh-z + +somewhere above the line that says `zgen save`. Then run + + zgen reset + zsh + +to refresh your init script. + +### For [Zim](https://github.com/zimfw/zimfw) + +Add the following line to your `.zimrc`: + + zmodule https://github.com/agkozak/zsh-z + +Then run + + zimfw install + +and restart your shell. + +### For [Zinit](https://github.com/zdharma-continuum/zinit) users + +Add the line + + zinit load agkozak/zsh-z + +to your `.zshrc`. + +`zsh-z` supports `zinit`'s `unload` feature; just run `zinit unload agkozak/zshz` to restore the shell to its state before `zsh-z` was loaded. + +### For [Znap](https://github.com/marlonrichert/zsh-snap) users + +Add the line + + znap source agkozak/zsh-z + +somewhere below the line where you `source` Znap itself. + +### For [zplug](https://github.com/zplug/zplug) users + +Add the line + + zplug "agkozak/zsh-z" + +somewhere above the line that says `zplug load`. Then run + + zplug install + zplug load + +to install `zsh-z`. + +## Command Line Options + +- `--add` Add a directory to the database +- `-c` Only match subdirectories of the current directory +- `-e` Echo the best match without going to it +- `-h` Display help +- `-l` List all matches without going to them +- `-r` Match by rank (i.e. how much time you spend in directories) +- `-t` Time -- match by how recently you have been to directories +- `-x` Remove a directory (by default, the current directory) from the database +- `-xR` Remove a directory (by default, the current directory) and its subdirectories from the database + +# Settings + +Zsh-z has environment variables (they all begin with `ZSHZ_`) that change its behavior if you set them; you can also keep your old ones if you have been using `rupa/z` (they begin with `_Z_`). + +* `ZSHZ_CMD` changes the command name (default: `z`) +* `ZSHZ_COMPLETION` can be `'frecent'` (default) or `'legacy'`, depending on whether you want your completion results sorted according to frecency or simply sorted alphabetically +* `ZSHZ_DATA` changes the database file (default: `~/.z`) +* `ZSHZ_ECHO` displays the new path name when changing directories (default: `0`) +* `ZSHZ_EXCLUDE_DIRS` is an array of directories to keep out of the database (default: empty) +* `ZSHZ_KEEP_DIRS` is an array of directories that should not be removed from the database, even if they are not currently available (useful when a drive is not always mounted) (default: empty) +* `ZSHZ_MAX_SCORE` is the maximum combined score the database entries can have before they begin to age and potentially drop out of the database (default: 9000) +* `ZSHZ_NO_RESOLVE_SYMLINKS` prevents symlink resolution (default: `0`) +* `ZSHZ_OWNER` allows usage when in `sudo -s` mode (default: empty) +* `ZSHZ_TILDE` displays the name of the `HOME` directory as a `~` (default: `0`) +* `ZSHZ_TRAILING_SLASH` makes it so that a search pattern ending in `/` can match the final element in a path; e.g., `z foo/` can match `/path/to/foo` (default: `0`) +* `ZSHZ_UNCOMMON` changes the logic used to calculate the directory jumped to; [see below](#zshz_uncommon`) (default: `0`) + +## Case sensitivity + +The default behavior of Zsh-z is to try to find a case-sensitive match. If there is none, then Zsh-z tries to find a case-insensitive match. + +Some users prefer simple case-insensitivity; this behavior can be enabled by setting + + ZSHZ_CASE=ignore + +If you like Vim's `smartcase` setting, where lowercase patterns are case-insensitive while patterns with any uppercase characters are treated case-sensitively, try setting + + ZSHZ_CASE=smart + +## `ZSHZ_UNCOMMON` + +A common complaint about the default behavior of `rupa/z` and Zsh-z involves "common prefixes." If you type `z code` and the best matches, in increasing order, are + + /home/me/code/foo + /home/me/code/bar + /home/me/code/bat + +Zsh-z will see that all possible matches share a common prefix and will send you to that directory -- `/home/me/code` -- which is often a desirable result. But if the possible matches are + + /home/me/.vscode/foo + /home/me/code/foo + /home/me/code/bar + /home/me/code/bat + +then there is no common prefix. In this case, `z code` will simply send you to the highest-ranking match, `/home/me/code/bat`. + +You may enable an alternate, experimental behavior by setting `ZSHZ_UNCOMMON=1`. If you do that, Zsh-z will not jump to a common prefix, even if one exists. Instead, it chooses the highest-ranking match -- but it drops any subdirectories that do not include the search term. So if you type `z bat` and `/home/me/code/bat` is the best match, that is exactly where you will end up. If, however, you had typed `z code` and the best match was also `/home/me/code/bat`, you would have ended up in `/home/me/code` (because `code` was what you had searched for). This feature is still in development, and feedback is welcome. + +## Making `--add` Work for You + +Zsh-z internally uses the `--add` option to add paths to its database. @zachriggle pointed out to me that users might want to use `--add` themselves, so I have altered it a little to make it more user-friendly. + +A good example might involve a directory tree that has Git repositories within it. The working directories could be added to the Zsh-z database as a batch with + + for i in $(find $PWD -maxdepth 3 -name .git -type d); do + z --add ${i:h} + done + +(As a Zsh user, I tend to use `**` instead of `find`, but it is good to see how deep your directory trees go before doing that.) + + +## Other Improvements and Fixes + +* `z -x` works, with the help of `chpwd_functions`. +* Zsh-z works on Solaris. +* Zsh-z uses the "new" `zshcompsys` completion system instead of the old `compctl` one. +* There is no error message when the database file has not yet been created. +* There is support for special characters (e.g., `[`) in directory names. +* If `z -l` only returns one match, a common root is not printed. +* Exit status codes increasingly make sense. +* Completions work with options `-c`, `-r`, and `-t`. +* If `~/foo` and `~/foob` are matches, `~/foo` is *not* the common root. Only a common parent directory can be a common root. +* `z -x` and the new, recursive `z -xR` can take an argument so that you can remove directories other than `PWD` from the database. + +## Migrating from Other Tools + +Zsh-z's database format is identical to that of `rupa/z`. You may switch freely between the two tools (I still use `rupa/z` for `bash`). `fasd` also uses that database format, but it stores it by default in `~/.fasd`, so you will have to `cp ~/.fasd ~/.z` if you want to use your old directory history. + +If you are coming to Zsh-z (or even to the original `rupa/z`, for that matter) from `autojump`, try using my [`jumpstart-z`](https://github.com/agkozak/jumpstart-z/blob/master/jumpstart-z) tool to convert your old database to the Zsh-z format, or simply run + + awk -F "\t" '{printf("%s|%0.f|%s\n", $2, $1, '"$(date +%s)"')}' < /path/to/autojump.txt > ~/.z + +## `COMPLETE_ALIASES` + +`z`, or any alternative you set up using `$ZSH_CMD` or `$_Z_CMD`, is an alias. `setopt COMPLETE_ALIASES` divorces the tab completion for aliases from the underlying commands they invoke, so if you enable `COMPLETE_ALIASES`, tab completion for Zsh-z will be broken. You can get it working again, however, by adding under + + setopt COMPLETE_ALIASES + +the line + + compdef _zshz ${ZSHZ_CMD:-${_Z_CMD:-z}} + +That will re-bind `z` or the command of your choice to the underlying Zsh-z function. + +## Known Bugs +It is possible to run a completion on a string with spaces in it, e.g., `z us bi` might take you to `/usr/local/bin`. This works, but as things stand, after the completion the command line reads + + z us /usr/local/bin. + +You get where you want to go, but the detritus on the command line is annoying. This is also a problem in `rupa/z`, but I am keen on eventually eliminating this glitch. Advice is welcome. diff --git a/plugins/z/Makefile b/plugins/z/Makefile deleted file mode 100644 index dcf433d40..000000000 --- a/plugins/z/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -readme: - @groff -man -Tascii z.1 | col -bx - -.PHONY: readme diff --git a/plugins/z/README b/plugins/z/README deleted file mode 100644 index 47e54c57a..000000000 --- a/plugins/z/README +++ /dev/null @@ -1,148 +0,0 @@ -Z(1) User Commands Z(1) - - - -NAME - z - jump around - -SYNOPSIS - z [-chlrtx] [regex1 regex2 ... regexn] - -AVAILABILITY - bash, zsh - -DESCRIPTION - Tracks your most used directories, based on 'frecency'. - - After a short learning phase, z will take you to the most 'frecent' - directory that matches ALL of the regexes given on the command line, in - order. - - For example, z foo bar would match /foo/bar but not /bar/foo. - -OPTIONS - -c restrict matches to subdirectories of the current directory - - -e echo the best match, don't cd - - -h show a brief help message - - -l list only - - -r match by rank only - - -t match by recent access only - - -x remove the current directory from the datafile - -EXAMPLES - z foo cd to most frecent dir matching foo - - z foo bar cd to most frecent dir matching foo, then bar - - z -r foo cd to highest ranked dir matching foo - - z -t foo cd to most recently accessed dir matching foo - - z -l foo list all dirs matching foo (by frecency) - -NOTES - Installation: - Put something like this in your $HOME/.bashrc or $HOME/.zshrc: - - . /path/to/z.sh - - cd around for a while to build up the db. - - PROFIT!! - - Optionally: - Set $_Z_CMD to change the command name (default z). - Set $_Z_DATA to change the datafile (default $HOME/.z). - Set $_Z_MAX_SCORE lower to age entries out faster (default - 9000). - Set $_Z_NO_RESOLVE_SYMLINKS to prevent symlink resolution. - Set $_Z_NO_PROMPT_COMMAND to handle PROMPT_COMMAND/precmd your- - self. - Set $_Z_EXCLUDE_DIRS to an array of directory trees to exclude. - Set $_Z_OWNER to allow usage when in 'sudo -s' mode. - (These settings should go in .bashrc/.zshrc before the line - added above.) - Install the provided man page z.1 somewhere in your MANPATH, - like /usr/local/man/man1. - - Aging: - The rank of directories maintained by z undergoes aging based on a sim- - ple formula. The rank of each entry is incremented every time it is - accessed. When the sum of ranks is over 9000, all ranks are multiplied - by 0.99. Entries with a rank lower than 1 are forgotten. - - Frecency: - Frecency is a portmanteau of 'recent' and 'frequency'. It is a weighted - rank that depends on how often and how recently something occurred. As - far as I know, Mozilla came up with the term. - - To z, a directory that has low ranking but has been accessed recently - will quickly have higher rank than a directory accessed frequently a - long time ago. - - Frecency is determined at runtime. - - Common: - When multiple directories match all queries, and they all have a common - prefix, z will cd to the shortest matching directory, without regard to - priority. This has been in effect, if undocumented, for quite some - time, but should probably be configurable or reconsidered. - - Tab Completion: - z supports tab completion. After any number of arguments, press TAB to - complete on directories that match each argument. Due to limitations of - the completion implementations, only the last argument will be com- - pleted in the shell. - - Internally, z decides you've requested a completion if the last argu- - ment passed is an absolute path to an existing directory. This may - cause unexpected behavior if the last argument to z begins with /. - -ENVIRONMENT - A function _z() is defined. - - The contents of the variable $_Z_CMD is aliased to _z 2>&1. If not set, - $_Z_CMD defaults to z. - - The environment variable $_Z_DATA can be used to control the datafile - location. If it is not defined, the location defaults to $HOME/.z. - - The environment variable $_Z_NO_RESOLVE_SYMLINKS can be set to prevent - resolving of symlinks. If it is not set, symbolic links will be - resolved when added to the datafile. - - In bash, z appends a command to the PROMPT_COMMAND environment variable - to maintain its database. In zsh, z appends a function _z_precmd to the - precmd_functions array. - - The environment variable $_Z_NO_PROMPT_COMMAND can be set if you want - to handle PROMPT_COMMAND or precmd yourself. - - The environment variable $_Z_EXCLUDE_DIRS can be set to an array of - directory trees to exclude from tracking. $HOME is always excluded. - Directories must be full paths without trailing slashes. - - The environment variable $_Z_OWNER can be set to your username, to - allow usage of z when your sudo environment keeps $HOME set. - -FILES - Data is stored in $HOME/.z. This can be overridden by setting the - $_Z_DATA environment variable. When initialized, z will raise an error - if this path is a directory, and not function correctly. - - A man page (z.1) is provided. - -SEE ALSO - regex(7), pushd, popd, autojump, cdargs - - Please file bugs at https://github.com/rupa/z/ - - - -z January 2013 Z(1) diff --git a/plugins/z/README.md b/plugins/z/README.md index ea8d4610a..5b7d6f649 100644 --- a/plugins/z/README.md +++ b/plugins/z/README.md @@ -1,8 +1,9 @@ # z - jump around -This plugin defines the [z command](https://github.com/rupa/z) that tracks your most visited directories and allows you to access them with very few keystrokes. +This plugin defines the [z command](https://github.com/agkozak/zsh-z) that tracks your most visited directories and allows you to access them with very few keystrokes. ### Example + Assume that you have previously visited directory `~/.oh-my-zsh/plugins`. From any folder in your command line, you can quickly access it by using a regex match to this folder: ```bash @@ -11,6 +12,7 @@ Assume that you have previously visited directory `~/.oh-my-zsh/plugins`. From a ``` ### Setup + To enable z, add `z` to your `plugins` array in your zshrc file: ```zsh @@ -19,5 +21,4 @@ plugins=(... z) ### Further reading -For advanced usage and details of z, see [README](./README) (in man page format, copied from [rupa/z](https://github.com/rupa/z)). - +For advanced usage and details of z, see [MANUAL](./MANUAL.md) (copied from [agkozak/zsh-z](https://github.com/agkozak/zsh-z)). diff --git a/plugins/z/_z b/plugins/z/_z new file mode 100644 index 000000000..9891a52ed --- /dev/null +++ b/plugins/z/_z @@ -0,0 +1,82 @@ +#compdef zshz ${ZSHZ_CMD:-${_Z_CMD:-z}} +# +# Zsh-z - jump around with Zsh - A native Zsh version of z without awk, sort, +# date, or sed +# +# https://github.com/agkozak/zsh-z +# +# Copyright (c) 2018-2022 Alexandros Kozak +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +# z (https://github.com/rupa/z) is copyright (c) 2009 rupa deadwyler and +# licensed under the WTFPL license, Version 2.a +# +# shellcheck shell=ksh + +############################################################ +# Zsh-z COMPLETIONS +############################################################ +emulate -L zsh +(( ZSHZ_DEBUG )) && + setopt LOCAL_OPTIONS WARN_CREATE_GLOBAL NO_WARN_NESTED_VAR 2> /dev/null + +# TODO: This routine currently reproduces z's feature of allowing spaces to be +# used as wildcards in completions, so that +# +# z us lo bi +# +# can expand to +# +# z /usr/local/bin +# +# but it also reproduces z's buggy display on the commandline, viz. +# +# z us lo /usr/local/bin +# +# Address. + +local completions expl completion +local -a completion_list + +completions=$(zshz --complete ${(@)words:1}) +[[ -z $completions ]] && return 1 + +for completion in ${(f)completions[@]}; do + if (( ZSHZ_TILDE )) && [[ $completion == ${HOME}* ]]; then + completion="~${(q)${completion#${HOME}}}" + else + completion="${(q)completion}" + fi + completion_list+=( $completion ) +done + +_description -V completion_list expl 'directories' + +if [[ $ZSHZ_COMPLETION == 'legacy' ]]; then + compadd "${expl[@]}" -QU -- "${completion_list[@]}" +else + compadd "${expl[@]}" -QU -V zsh-z -- "${completion_list[@]}" +fi + +compstate[insert]=menu + +return 0 + +# vim: ft=zsh:fdm=indent:ts=2:et:sts=2:sw=2: diff --git a/plugins/z/z.1 b/plugins/z/z.1 deleted file mode 100644 index 182f98176..000000000 --- a/plugins/z/z.1 +++ /dev/null @@ -1,173 +0,0 @@ -.TH "Z" "1" "January 2013" "z" "User Commands" -.SH -NAME -z \- jump around -.SH -SYNOPSIS -z [\-chlrtx] [regex1 regex2 ... regexn] -.SH -AVAILABILITY -bash, zsh -.SH -DESCRIPTION -Tracks your most used directories, based on 'frecency'. -.P -After a short learning phase, \fBz\fR will take you to the most 'frecent' -directory that matches ALL of the regexes given on the command line, in order. - -For example, \fBz foo bar\fR would match \fB/foo/bar\fR but not \fB/bar/foo\fR. -.SH -OPTIONS -.TP -\fB\-c\fR -restrict matches to subdirectories of the current directory -.TP -\fB\-e\fR -echo the best match, don't cd -.TP -\fB\-h\fR -show a brief help message -.TP -\fB\-l\fR -list only -.TP -\fB\-r\fR -match by rank only -.TP -\fB\-t\fR -match by recent access only -.TP -\fB\-x\fR -remove the current directory from the datafile -.SH EXAMPLES -.TP 14 -\fBz foo\fR -cd to most frecent dir matching foo -.TP 14 -\fBz foo bar\fR -cd to most frecent dir matching foo, then bar -.TP 14 -\fBz -r foo\fR -cd to highest ranked dir matching foo -.TP 14 -\fBz -t foo\fR -cd to most recently accessed dir matching foo -.TP 14 -\fBz -l foo\fR -list all dirs matching foo (by frecency) -.SH -NOTES -.SS -Installation: -.P -Put something like this in your \fB$HOME/.bashrc\fR or \fB$HOME/.zshrc\fR: -.RS -.P -\fB. /path/to/z.sh\fR -.RE -.P -\fBcd\fR around for a while to build up the db. -.P -PROFIT!! -.P -Optionally: -.RS -Set \fB$_Z_CMD\fR to change the command name (default \fBz\fR). -.RE -.RS -Set \fB$_Z_DATA\fR to change the datafile (default \fB$HOME/.z\fR). -.RE -.RS -Set \fB$_Z_MAX_SCORE\fR lower to age entries out faster (default \fB9000\fR). -.RE -.RS -Set \fB$_Z_NO_RESOLVE_SYMLINKS\fR to prevent symlink resolution. -.RE -.RS -Set \fB$_Z_NO_PROMPT_COMMAND\fR to handle \fBPROMPT_COMMAND/precmd\fR yourself. -.RE -.RS -Set \fB$_Z_EXCLUDE_DIRS\fR to an array of directory trees to exclude. -.RE -.RS -Set \fB$_Z_OWNER\fR to allow usage when in 'sudo -s' mode. -.RE -.RS -(These settings should go in .bashrc/.zshrc before the line added above.) -.RE -.RS -Install the provided man page \fBz.1\fR somewhere in your \f$MANPATH, like -\fB/usr/local/man/man1\fR. -.RE -.SS -Aging: -The rank of directories maintained by \fBz\fR undergoes aging based on a simple -formula. The rank of each entry is incremented every time it is accessed. When -the sum of ranks is over 9000, all ranks are multiplied by 0.99. Entries with a -rank lower than 1 are forgotten. -.SS -Frecency: -Frecency is a portmanteau of 'recent' and 'frequency'. It is a weighted rank -that depends on how often and how recently something occurred. As far as I -know, Mozilla came up with the term. -.P -To \fBz\fR, a directory that has low ranking but has been accessed recently -will quickly have higher rank than a directory accessed frequently a long time -ago. -.P -Frecency is determined at runtime. -.SS -Common: -When multiple directories match all queries, and they all have a common prefix, -\fBz\fR will cd to the shortest matching directory, without regard to priority. -This has been in effect, if undocumented, for quite some time, but should -probably be configurable or reconsidered. -.SS -Tab Completion: -\fBz\fR supports tab completion. After any number of arguments, press TAB to -complete on directories that match each argument. Due to limitations of the -completion implementations, only the last argument will be completed in the -shell. -.P -Internally, \fBz\fR decides you've requested a completion if the last argument -passed is an absolute path to an existing directory. This may cause unexpected -behavior if the last argument to \fBz\fR begins with \fB/\fR. -.SH -ENVIRONMENT -A function \fB_z()\fR is defined. -.P -The contents of the variable \fB$_Z_CMD\fR is aliased to \fB_z 2>&1\fR. If not -set, \fB$_Z_CMD\fR defaults to \fBz\fR. -.P -The environment variable \fB$_Z_DATA\fR can be used to control the datafile -location. If it is not defined, the location defaults to \fB$HOME/.z\fR. -.P -The environment variable \fB$_Z_NO_RESOLVE_SYMLINKS\fR can be set to prevent -resolving of symlinks. If it is not set, symbolic links will be resolved when -added to the datafile. -.P -In bash, \fBz\fR appends a command to the \fBPROMPT_COMMAND\fR environment -variable to maintain its database. In zsh, \fBz\fR appends a function -\fB_z_precmd\fR to the \fBprecmd_functions\fR array. -.P -The environment variable \fB$_Z_NO_PROMPT_COMMAND\fR can be set if you want to -handle \fBPROMPT_COMMAND\fR or \fBprecmd\fR yourself. -.P -The environment variable \fB$_Z_EXCLUDE_DIRS\fR can be set to an array of -directory trees to exclude from tracking. \fB$HOME\fR is always excluded. -Directories must be full paths without trailing slashes. -.P -The environment variable \fB$_Z_OWNER\fR can be set to your username, to -allow usage of \fBz\fR when your sudo environment keeps \fB$HOME\fR set. -.SH -FILES -Data is stored in \fB$HOME/.z\fR. This can be overridden by setting the -\fB$_Z_DATA\fR environment variable. When initialized, \fBz\fR will raise an -error if this path is a directory, and not function correctly. -.P -A man page (\fBz.1\fR) is provided. -.SH -SEE ALSO -regex(7), pushd, popd, autojump, cdargs -.P -Please file bugs at https://github.com/rupa/z/ diff --git a/plugins/z/z.plugin.zsh b/plugins/z/z.plugin.zsh index 7d3eacac0..209edfea7 100644 --- a/plugins/z/z.plugin.zsh +++ b/plugins/z/z.plugin.zsh @@ -1,6 +1,968 @@ -# Handle $0 according to the standard: -# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html -0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" -0="${${(M)0:#/*}:-$PWD/$0}" +################################################################################ +# Zsh-z - jump around with Zsh - A native Zsh version of z without awk, sort, +# date, or sed +# +# https://github.com/agkozak/zsh-z +# +# Copyright (c) 2018-2022 Alexandros Kozak +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +# z (https://github.com/rupa/z) is copyright (c) 2009 rupa deadwyler and +# licensed under the WTFPL license, Version 2. +# +# Zsh-z maintains a jump-list of the directories you actually use. +# +# INSTALL: +# * put something like this in your .zshrc: +# source /path/to/zsh-z.plugin.zsh +# * cd around for a while to build up the database +# +# USAGE: +# * z foo cd to the most frecent directory matching foo +# * z foo bar cd to the most frecent directory matching both foo and bar +# (e.g. /foo/bat/bar/quux) +# * z -r foo cd to the highest ranked directory matching foo +# * z -t foo cd to most recently accessed directory matching foo +# * z -l foo List matches instead of changing directories +# * z -e foo Echo the best match without changing directories +# * z -c foo Restrict matches to subdirectories of PWD +# * z -x Remove a directory (default: PWD) from the database +# * z -xR Remove a directory (default: PWD) and its subdirectories from +# the database +# +# ENVIRONMENT VARIABLES: +# +# ZSHZ_CASE -> if `ignore', pattern matching is case-insensitive; if `smart', +# pattern matching is case-insensitive only when the pattern is all +# lowercase +# ZSHZ_CMD -> name of command (default: z) +# ZSHZ_COMPLETION -> completion method (default: 'frecent'; 'legacy' for +# alphabetic sorting) +# ZSHZ_DATA -> name of datafile (default: ~/.z) +# ZSHZ_EXCLUDE_DIRS -> array of directories to exclude from your database +# (default: empty) +# ZSHZ_KEEP_DIRS -> array of directories that should not be removed from the +# database, even if they are not currently available (default: empty) +# ZSHZ_MAX_SCORE -> maximum combined score the database entries can have +# before beginning to age (default: 9000) +# ZSHZ_NO_RESOLVE_SYMLINKS -> '1' prevents symlink resolution +# ZSHZ_OWNER -> your username (if you want use Zsh-z while using sudo -s) +# ZSHZ_UNCOMMON -> if 1, do not jump to "common directories," but rather drop +# subdirectories based on what the search string was (default: 0) +################################################################################ -source "${0:h}/z.sh" +autoload -U is-at-least + +if ! is-at-least 4.3.11; then + print "Zsh-z requires Zsh v4.3.11 or higher." >&2 && exit +fi + +############################################################ +# The help message +# +# Globals: +# ZSHZ_CMD +############################################################ +_zshz_usage() { + print "Usage: ${ZSHZ_CMD:-${_Z_CMD:-z}} [OPTION]... [ARGUMENT] +Jump to a directory that you have visited frequently or recently, or a bit of both, based on the partial string ARGUMENT. + +With no ARGUMENT, list the directory history in ascending rank. + + --add Add a directory to the database + -c Only match subdirectories of the current directory + -e Echo the best match without going to it + -h Display this help and exit + -l List all matches without going to them + -r Match by rank + -t Match by recent access + -x Remove a directory from the database (by default, the current directory) + -xR Remove a directory and its subdirectories from the database (by default, the current directory)" | + fold -s -w $COLUMNS >&2 +} + +# Load zsh/datetime module, if necessary +(( $+EPOCHSECONDS )) || zmodload zsh/datetime + +# Load zsh/files, if necessary +[[ ${builtins[zf_chown]} == 'defined' && + ${builtins[zf_mv]} == 'defined' && + ${builtins[zf_rm]} == 'defined' ]] || + zmodload -F zsh/files b:zf_chown b:zf_mv b:zf_rm + +# Load zsh/system, if necessary +[[ ${modules[zsh/system]} == 'loaded' ]] || zmodload zsh/system &> /dev/null + +# Global associative array for internal use +typeset -gA ZSHZ + +# Make sure ZSHZ_EXCLUDE_DIRS has been declared so that other scripts can +# simply append to it +(( ${+ZSHZ_EXCLUDE_DIRS} )) || typeset -gUa ZSHZ_EXCLUDE_DIRS + +# Determine if zsystem flock is available +zsystem supports flock &> /dev/null && ZSHZ[USE_FLOCK]=1 + +# Determine if `print -v' is supported +is-at-least 5.3.0 && ZSHZ[PRINTV]=1 + +############################################################ +# The Zsh-z Command +# +# Globals: +# ZSHZ +# ZSHZ_CASE +# ZSHZ_COMPLETION +# ZSHZ_DATA +# ZSHZ_DEBUG +# ZSHZ_EXCLUDE_DIRS +# ZSHZ_KEEP_DIRS +# ZSHZ_MAX_SCORE +# ZSHZ_OWNER +# +# Arguments: +# $* Command options and arguments +############################################################ +zshz() { + + # Don't use `emulate -L zsh' - it breaks PUSHD_IGNORE_DUPS + setopt LOCAL_OPTIONS NO_KSH_ARRAYS NO_SH_WORD_SPLIT EXTENDED_GLOB + (( ZSHZ_DEBUG )) && setopt LOCAL_OPTIONS WARN_CREATE_GLOBAL + + local REPLY + local -a lines + + # Allow the user to specify the datafile name in $ZSHZ_DATA (default: ~/.z) + # If the datafile is a symlink, it gets dereferenced + local datafile=${${ZSHZ_DATA:-${_Z_DATA:-${HOME}/.z}}:A} + + # If the datafile is a directory, print a warning and exit + if [[ -d $datafile ]]; then + print "ERROR: Zsh-z's datafile (${datafile}) is a directory." >&2 + exit + fi + + # Make sure that the datafile exists before attempting to read it or lock it + # for writing + [[ -f $datafile ]] || touch "$datafile" + + # Bail if we don't own the datafile and $ZSHZ_OWNER is not set + [[ -z ${ZSHZ_OWNER:-${_Z_OWNER}} && -f $datafile && ! -O $datafile ]] && + return + + # Load the datafile into an array and parse it + lines=( ${(f)"$(< $datafile)"} ) + # Discard entries that are incomplete or incorrectly formatted + lines=( ${(M)lines:#/*\|[[:digit:]]##[.,]#[[:digit:]]#\|[[:digit:]]##} ) + + ############################################################ + # Add a path to or remove one from the datafile + # + # Globals: + # ZSHZ + # ZSHZ_EXCLUDE_DIRS + # ZSHZ_OWNER + # + # Arguments: + # $1 Which action to perform (--add/--remove) + # $2 The path to add + ############################################################ + _zshz_add_or_remove_path() { + local action=${1} + shift + + if [[ $action == '--add' ]]; then + + # TODO: The following tasks are now handled by _agkozak_precmd. Dead code? + + # Don't add $HOME + [[ $* == $HOME ]] && return + + # Don't track directory trees excluded in ZSHZ_EXCLUDE_DIRS + local exclude + for exclude in ${(@)ZSHZ_EXCLUDE_DIRS:-${(@)_Z_EXCLUDE_DIRS}}; do + case $* in + ${exclude}|${exclude}/*) return ;; + esac + done + fi + + # A temporary file that gets copied over the datafile if all goes well + local tempfile="${datafile}.${RANDOM}" + + # See https://github.com/rupa/z/pull/199/commits/ed6eeed9b70d27c1582e3dd050e72ebfe246341c + if (( ZSHZ[USE_FLOCK] )); then + + local lockfd + + # Grab exclusive lock (released when function exits) + zsystem flock -f lockfd "$datafile" 2> /dev/null || return + + fi + + integer tmpfd + case $action in + --add) + exec {tmpfd}>|"$tempfile" # Open up tempfile for writing + _zshz_update_datafile $tmpfd "$*" + local ret=$? + ;; + --remove) + local xdir # Directory to be removed + + if (( ${ZSHZ_NO_RESOLVE_SYMLINKS:-${_Z_NO_RESOLVE_SYMLINKS}} )); then + [[ -d ${${*:-${PWD}}:a} ]] && xdir=${${*:-${PWD}}:a} + else + [[ -d ${${*:-${PWD}}:A} ]] && xdir=${${*:-${PWD}}:a} + fi + + local -a lines_to_keep + if (( ${+opts[-R]} )); then + # Prompt user before deleting entire database + if [[ $xdir == '/' ]] && ! read -q "?Delete entire Zsh-z database? "; then + print && return 1 + fi + # All of the lines that don't match the directory to be deleted + lines_to_keep=( ${lines:#${xdir}\|*} ) + # Or its subdirectories + lines_to_keep=( ${lines_to_keep:#${xdir%/}/**} ) + else + # All of the lines that don't match the directory to be deleted + lines_to_keep=( ${lines:#${xdir}\|*} ) + fi + if [[ $lines != "$lines_to_keep" ]]; then + lines=( $lines_to_keep ) + else + return 1 # The $PWD isn't in the datafile + fi + exec {tmpfd}>|"$tempfile" # Open up tempfile for writing + print -u $tmpfd -l -- $lines + local ret=$? + ;; + esac + + if (( tmpfd != 0 )); then + # Close tempfile + exec {tmpfd}>&- + fi + + if (( ret != 0 )); then + # Avoid clobbering the datafile if the write to tempfile failed + zf_rm -f "$tempfile" + return $ret + fi + + local owner + owner=${ZSHZ_OWNER:-${_Z_OWNER}} + + if (( ZSHZ[USE_FLOCK] )); then + zf_mv "$tempfile" "$datafile" 2> /dev/null || zf_rm -f "$tempfile" + + if [[ -n $owner ]]; then + zf_chown ${owner}:"$(id -ng ${owner})" "$datafile" + fi + else + if [[ -n $owner ]]; then + zf_chown "${owner}":"$(id -ng "${owner}")" "$tempfile" + fi + zf_mv -f "$tempfile" "$datafile" 2> /dev/null || zf_rm -f "$tempfile" + fi + + # In order to make z -x work, we have to disable zsh-z's adding + # to the database until the user changes directory and the + # chpwd_functions are run + if [[ $action == '--remove' ]]; then + ZSHZ[DIRECTORY_REMOVED]=1 + fi + } + + ############################################################ + # Read the curent datafile contents, update them, "age" them + # when the total rank gets high enough, and print the new + # contents to STDOUT. + # + # Globals: + # ZSHZ_KEEP_DIRS + # ZSHZ_MAX_SCORE + # + # Arguments: + # $1 File descriptor linked to tempfile + # $2 Path to be added to datafile + ############################################################ + _zshz_update_datafile() { + + integer fd=$1 + local -A rank time + + # Characters special to the shell (such as '[]') are quoted with backslashes + # See https://github.com/rupa/z/issues/246 + local add_path=${(q)2} + + local -a existing_paths + local now=$EPOCHSECONDS line dir + local path_field rank_field time_field count x + + rank[$add_path]=1 + time[$add_path]=$now + + # Remove paths from database if they no longer exist + for line in $lines; do + if [[ ! -d ${line%%\|*} ]]; then + for dir in ${(@)ZSHZ_KEEP_DIRS}; do + if [[ ${line%%\|*} == ${dir}/* || + ${line%%\|*} == $dir || + $dir == '/' ]]; then + existing_paths+=( $line ) + fi + done + else + existing_paths+=( $line ) + fi + done + lines=( $existing_paths ) + + for line in $lines; do + path_field=${(q)line%%\|*} + rank_field=${${line%\|*}#*\|} + time_field=${line##*\|} + + # When a rank drops below 1, drop the path from the database + (( rank_field < 1 )) && continue + + if [[ $path_field == $add_path ]]; then + rank[$path_field]=$rank_field + (( rank[$path_field]++ )) + time[$path_field]=$now + else + rank[$path_field]=$rank_field + time[$path_field]=$time_field + fi + (( count += rank_field )) + done + if (( count > ${ZSHZ_MAX_SCORE:-${_Z_MAX_SCORE:-9000}} )); then + # Aging + for x in ${(k)rank}; do + print -u $fd -- "$x|$(( 0.99 * rank[$x] ))|${time[$x]}" || return 1 + done + else + for x in ${(k)rank}; do + print -u $fd -- "$x|${rank[$x]}|${time[$x]}" || return 1 + done + fi + } + + ############################################################ + # The original tab completion method + # + # String processing is smartcase -- case-insensitive if the + # search string is lowercase, case-sensitive if there are + # any uppercase letters. Spaces in the search string are + # treated as *'s in globbing. Read the contents of the + # datafile and print matches to STDOUT. + # + # Arguments: + # $1 The string to be completed + ############################################################ + _zshz_legacy_complete() { + + local line path_field path_field_normalized + + # Replace spaces in the search string with asterisks for globbing + 1=${1//[[:space:]]/*} + + for line in $lines; do + + path_field=${line%%\|*} + + path_field_normalized=$path_field + if (( ZSHZ_TRAILING_SLASH )); then + path_field_normalized=${path_field%/}/ + fi + + # If the search string is all lowercase, the search will be case-insensitive + if [[ $1 == "${1:l}" && ${path_field_normalized:l} == *${~1}* ]]; then + print -- $path_field + # Otherwise, case-sensitive + elif [[ $path_field_normalized == *${~1}* ]]; then + print -- $path_field + fi + + done + # TODO: Search strings with spaces in them are currently treated case- + # insensitively. + } + + ############################################################ + # `print' or `printf' to REPLY + # + # Variable assignment through command substitution, of the + # form + # + # foo=$( bar ) + # + # requires forking a subshell; on Cygwin/MSYS2/WSL1 that can + # be surprisingly slow. Zsh-z avoids doing that by printing + # values to the variable REPLY. Since Zsh v5.3.0 that has + # been possible with `print -v'; for earlier versions of the + # shell, the values are placed on the editing buffer stack + # and then `read' into REPLY. + # + # Globals: + # ZSHZ + # + # Arguments: + # Options and parameters for `print' + ############################################################ + _zshz_printv() { + # NOTE: For a long time, ZSH's `print -v' had a tendency + # to mangle multibyte strings: + # + # https://www.zsh.org/mla/workers/2020/msg00307.html + # + # The bug was fixed in late 2020: + # + # https://github.com/zsh-users/zsh/commit/b6ba74cd4eaec2b6cb515748cf1b74a19133d4a4#diff-32bbef18e126b837c87b06f11bfc61fafdaa0ed99fcb009ec53f4767e246b129 + # + # In order to support shells with the bug, we must use a form of `printf`, + # which does not exhibit the undesired behavior. See + # + # https://www.zsh.org/mla/workers/2020/msg00308.html + + if (( ZSHZ[PRINTV] )); then + builtin print -v REPLY -f %s $@ + else + builtin print -z $@ + builtin read -rz REPLY + fi + } + + ############################################################ + # If matches share a common root, find it, and put it in + # REPLY for _zshz_output to use. + # + # Arguments: + # $1 Name of associative array of matches and ranks + ############################################################ + _zshz_find_common_root() { + local -a common_matches + local x short + + common_matches=( ${(@Pk)1} ) + + for x in ${(@)common_matches}; do + if [[ -z $short ]] || (( $#x < $#short )) || [[ $x != ${short}/* ]]; then + short=$x + fi + done + + [[ $short == '/' ]] && return + + for x in ${(@)common_matches}; do + [[ $x != $short* ]] && return + done + + _zshz_printv -- $short + } + + ############################################################ + # Calculate a common root, if there is one. Then do one of + # the following: + # + # 1) Print a list of completions in frecent order; + # 2) List them (z -l) to STDOUT; or + # 3) Put a common root or best match into REPLY + # + # Globals: + # ZSHZ_UNCOMMON + # + # Arguments: + # $1 Name of an associative array of matches and ranks + # $2 The best match or best case-insensitive match + # $3 Whether to produce a completion, a list, or a root or + # match + ############################################################ + _zshz_output() { + + local match_array=$1 match=$2 format=$3 + local common k x + local -a descending_list output + local -A output_matches + + output_matches=( ${(Pkv)match_array} ) + + _zshz_find_common_root $match_array + common=$REPLY + + case $format in + + completion) + for k in ${(@k)output_matches}; do + _zshz_printv -f "%.2f|%s" ${output_matches[$k]} $k + descending_list+=( ${(f)REPLY} ) + REPLY='' + done + descending_list=( ${${(@On)descending_list}#*\|} ) + print -l $descending_list + ;; + + list) + local path_to_display + for x in ${(k)output_matches}; do + if (( ${output_matches[$x]} )); then + path_to_display=$x + (( ZSHZ_TILDE )) && + path_to_display=${path_to_display/#${HOME}/\~} + _zshz_printv -f "%-10d %s\n" ${output_matches[$x]} $path_to_display + output+=( ${(f)REPLY} ) + REPLY='' + fi + done + if [[ -n $common ]]; then + (( ZSHZ_TILDE )) && common=${common/#${HOME}/\~} + (( $#output > 1 )) && printf "%-10s %s\n" 'common:' $common + fi + # -lt + if (( $+opts[-t] )); then + for x in ${(@On)output}; do + print -- $x + done + # -lr + elif (( $+opts[-r] )); then + for x in ${(@on)output}; do + print -- $x + done + # -l + else + for x in ${(@on)output}; do + print $x + done + fi + ;; + + *) + if (( ! ZSHZ_UNCOMMON )) && [[ -n $common ]]; then + _zshz_printv -- $common + else + _zshz_printv -- ${(P)match} + fi + ;; + esac + } + + ############################################################ + # Match a pattern by rank, time, or a combination of the + # two, and output the results as completions, a list, or a + # best match. + # + # Globals: + # ZSHZ + # ZSHZ_CASE + # ZSHZ_KEEP_DIRS + # ZSHZ_OWNER + # + # Arguments: + # #1 Pattern to match + # $2 Matching method (rank, time, or [default] frecency) + # $3 Output format (completion, list, or [default] store + # in REPLY + ############################################################ + _zshz_find_matches() { + setopt LOCAL_OPTIONS NO_EXTENDED_GLOB + + local fnd=$1 method=$2 format=$3 + + local -a existing_paths + local line dir path_field rank_field time_field rank dx escaped_path_field + local -A matches imatches + local best_match ibest_match hi_rank=-9999999999 ihi_rank=-9999999999 + + # Remove paths from database if they no longer exist + for line in $lines; do + if [[ ! -d ${line%%\|*} ]]; then + for dir in ${(@)ZSHZ_KEEP_DIRS}; do + if [[ ${line%%\|*} == ${dir}/* || + ${line%%\|*} == $dir || + $dir == '/' ]]; then + existing_paths+=( $line ) + fi + done + else + existing_paths+=( $line ) + fi + done + lines=( $existing_paths ) + + for line in $lines; do + path_field=${line%%\|*} + rank_field=${${line%\|*}#*\|} + time_field=${line##*\|} + + case $method in + rank) rank=$rank_field ;; + time) (( rank = time_field - EPOCHSECONDS )) ;; + *) + # Frecency routine + (( dx = EPOCHSECONDS - time_field )) + rank=$(( 10000 * rank_field * (3.75/((0.0001 * dx + 1) + 0.25)) )) + ;; + esac + + # Use spaces as wildcards + local q=${fnd//[[:space:]]/\*} + + # If $ZSHZ_TRAILING_SLASH is set, use path_field with a trailing slash for matching. + local path_field_normalized=$path_field + if (( ZSHZ_TRAILING_SLASH )); then + path_field_normalized=${path_field%/}/ + fi + + # If $ZSHZ_CASE is 'ignore', be case-insensitive. + # + # If it's 'smart', be case-insensitive unless the string to be matched + # includes capital letters. + # + # Otherwise, the default behavior of Zsh-z is to match case-sensitively if + # possible, then to fall back on a case-insensitive match if possible. + if [[ $ZSHZ_CASE == 'smart' && ${1:l} == $1 && + ${path_field_normalized:l} == ${~q:l} ]]; then + imatches[$path_field]=$rank + elif [[ $ZSHZ_CASE != 'ignore' && $path_field_normalized == ${~q} ]]; then + matches[$path_field]=$rank + elif [[ $ZSHZ_CASE != 'smart' && ${path_field_normalized:l} == ${~q:l} ]]; then + imatches[$path_field]=$rank + fi + + # Escape characters that would cause "invalid subscript" errors + # when accessing the associative array. + escaped_path_field=${path_field//'\'/'\\'} + escaped_path_field=${escaped_path_field//'`'/'\`'} + escaped_path_field=${escaped_path_field//'('/'\('} + escaped_path_field=${escaped_path_field//')'/'\)'} + escaped_path_field=${escaped_path_field//'['/'\['} + escaped_path_field=${escaped_path_field//']'/'\]'} + + if (( matches[$escaped_path_field] )) && + (( matches[$escaped_path_field] > hi_rank )); then + best_match=$path_field + hi_rank=${matches[$escaped_path_field]} + elif (( imatches[$escaped_path_field] )) && + (( imatches[$escaped_path_field] > ihi_rank )); then + ibest_match=$path_field + ihi_rank=${imatches[$escaped_path_field]} + ZSHZ[CASE_INSENSITIVE]=1 + fi + done + + # Return 1 when there are no matches + [[ -z $best_match && -z $ibest_match ]] && return 1 + + if [[ -n $best_match ]]; then + _zshz_output matches best_match $format + elif [[ -n $ibest_match ]]; then + _zshz_output imatches ibest_match $format + fi + } + + # THE MAIN ROUTINE + + local -A opts + + zparseopts -E -D -A opts -- \ + -add \ + -complete \ + c \ + e \ + h \ + -help \ + l \ + r \ + R \ + t \ + x + + if [[ $1 == '--' ]]; then + shift + elif [[ -n ${(M)@:#-*} && -z $compstate ]]; then + print "Improper option(s) given." + _zshz_usage + return 1 + fi + + local opt output_format method='frecency' fnd prefix req + + for opt in ${(k)opts}; do + case $opt in + --add) + [[ ! -d $* ]] && return 1 + local dir + # Cygwin and MSYS2 have a hard time with relative paths expressed from / + if [[ $OSTYPE == (cygwin|msys) && $PWD == '/' && $* != /* ]]; then + set -- "/$*" + fi + if (( ${ZSHZ_NO_RESOLVE_SYMLINKS:-${_Z_NO_RESOLVE_SYMLINKS}} )); then + dir=${*:a} + else + dir=${*:A} + fi + _zshz_add_or_remove_path --add "$dir" + return + ;; + --complete) + if [[ -s $datafile && ${ZSHZ_COMPLETION:-frecent} == 'legacy' ]]; then + _zshz_legacy_complete "$1" + return + fi + output_format='completion' + ;; + -c) [[ $* == ${PWD}/* || $PWD == '/' ]] || prefix="$PWD " ;; + -h|--help) + _zshz_usage + return + ;; + -l) output_format='list' ;; + -r) method='rank' ;; + -t) method='time' ;; + -x) + # Cygwin and MSYS2 have a hard time with relative paths expressed from / + if [[ $OSTYPE == (cygwin|msys) && $PWD == '/' && $* != /* ]]; then + set -- "/$*" + fi + _zshz_add_or_remove_path --remove $* + return + ;; + esac + done + req="$*" + fnd="$prefix$*" + + [[ -n $fnd && $fnd != "$PWD " ]] || { + [[ $output_format != 'completion' ]] && output_format='list' + } + + ######################################################### + # If $ZSHZ_ECHO == 1, display paths as you jump to them. + # If it is also the case that $ZSHZ_TILDE == 1, display + # the home directory as a tilde. + ######################################################### + _zshz_echo() { + if (( ZSHZ_ECHO )); then + if (( ZSHZ_TILDE )); then + print ${PWD/#${HOME}/\~} + else + print $PWD + fi + fi + } + + if [[ ${@: -1} == /* ]] && (( ! $+opts[-e] && ! $+opts[-l] )); then + # cd if possible; echo the new path if $ZSHZ_ECHO == 1 + [[ -d ${@: -1} ]] && builtin cd ${@: -1} && _zshz_echo && return + fi + + # With option -c, make sure query string matches beginning of matches; + # otherwise look for matches anywhere in paths + + # zpm-zsh/colors has a global $c, so we'll avoid math expressions here + if [[ ! -z ${(tP)opts[-c]} ]]; then + _zshz_find_matches "$fnd*" $method $output_format + else + _zshz_find_matches "*$fnd*" $method $output_format + fi + + local ret2=$? + + local cd + cd=$REPLY + + # New experimental "uncommon" behavior + # + # If the best choice at this point is something like /foo/bar/foo/bar, and the # search pattern is `bar', go to /foo/bar/foo/bar; but if the search pattern + # is `foo', go to /foo/bar/foo + if (( ZSHZ_UNCOMMON )) && [[ -n $cd ]]; then + if [[ -n $cd ]]; then + + # In the search pattern, replace spaces with * + local q=${fnd//[[:space:]]/\*} + q=${q%/} # Trailing slash has to be removed + + # As long as the best match is not case-insensitive + if (( ! ZSHZ[CASE_INSENSITIVE] )); then + # Count the number of characters in $cd that $q matches + local q_chars=$(( ${#cd} - ${#${cd//${~q}/}} )) + # Try dropping directory elements from the right; stop when it affects + # how many times the search pattern appears + until (( ( ${#cd:h} - ${#${${cd:h}//${~q}/}} ) != q_chars )); do + cd=${cd:h} + done + + # If the best match is case-insensitive + else + local q_chars=$(( ${#cd} - ${#${${cd:l}//${~${q:l}}/}} )) + until (( ( ${#cd:h} - ${#${${${cd:h}:l}//${~${q:l}}/}} ) != q_chars )); do + cd=${cd:h} + done + fi + + ZSHZ[CASE_INSENSITIVE]=0 + fi + fi + + if (( ret2 == 0 )) && [[ -n $cd ]]; then + if (( $+opts[-e] )); then # echo + (( ZSHZ_TILDE )) && cd=${cd/#${HOME}/\~} + print -- "$cd" + else + # cd if possible; echo the new path if $ZSHZ_ECHO == 1 + [[ -d $cd ]] && builtin cd "$cd" && _zshz_echo + fi + else + # if $req is a valid path, cd to it; echo the new path if $ZSHZ_ECHO == 1 + if ! (( $+opts[-e] || $+opts[-l] )) && [[ -d $req ]]; then + builtin cd "$req" && _zshz_echo + else + return $ret2 + fi + fi +} + +alias ${ZSHZ_CMD:-${_Z_CMD:-z}}='zshz 2>&1' + +############################################################ +# precmd - add path to datafile unless `z -x' has just been +# run +# +# Globals: +# ZSHZ +############################################################ +_zshz_precmd() { + # Do not add PWD to datafile when in HOME directory, or + # if `z -x' has just been run + [[ $PWD == "$HOME" ]] || (( ZSHZ[DIRECTORY_REMOVED] )) && return + + # Don't track directory trees excluded in ZSHZ_EXCLUDE_DIRS + local exclude + for exclude in ${(@)ZSHZ_EXCLUDE_DIRS:-${(@)_Z_EXCLUDE_DIRS}}; do + case $PWD in + ${exclude}|${exclude}/*) return ;; + esac + done + + # It appears that forking a subshell is so slow in Windows that it is better + # just to add the PWD to the datafile in the foreground + if [[ $OSTYPE == (cygwin|msys) ]]; then + zshz --add "$PWD" + else + (zshz --add "$PWD" &) + fi + + # See https://github.com/rupa/z/pull/247/commits/081406117ea42ccb8d159f7630cfc7658db054b6 + : $RANDOM +} + +############################################################ +# chpwd +# +# When the $PWD is removed from the datafile with `z -x', +# Zsh-z refrains from adding it again until the user has +# left the directory. +# +# Globals: +# ZSHZ +############################################################ +_zshz_chpwd() { + ZSHZ[DIRECTORY_REMOVED]=0 +} + +autoload -Uz add-zsh-hook + +add-zsh-hook precmd _zshz_precmd +add-zsh-hook chpwd _zshz_chpwd + +############################################################ +# Completion +############################################################ + +# Standarized $0 handling +# (See https://github.com/agkozak/Zsh-100-Commits-Club/blob/master/Zsh-Plugin-Standard.adoc) +0=${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}} +0=${${(M)0:#/*}:-$PWD/$0} + +(( ${fpath[(ie)${0:A:h}]} <= ${#fpath} )) || fpath=( "${0:A:h}" "${fpath[@]}" ) + +############################################################ +# zsh-z functions +############################################################ +ZSHZ[FUNCTIONS]='_zshz_usage + _zshz_add_or_remove_path + _zshz_update_datafile + _zshz_legacy_complete + _zshz_printv + _zshz_find_common_root + _zshz_output + _zshz_find_matches + zshz + _zshz_precmd + _zshz_chpwd + _zshz' + +############################################################ +# Enable WARN_NESTED_VAR for functions listed in +# ZSHZ[FUNCTIONS] +############################################################ +(( ZSHZ_DEBUG )) && () { + if is-at-least 5.4.0; then + local x + for x in ${=ZSHZ[FUNCTIONS]}; do + functions -W $x + done + fi +} + +############################################################ +# Unload function +# +# See https://github.com/agkozak/Zsh-100-Commits-Club/blob/master/Zsh-Plugin-Standard.adoc#unload-fun +# +# Globals: +# ZSHZ +# ZSHZ_CMD +############################################################ +zsh-z_plugin_unload() { + emulate -L zsh + + add-zsh-hook -D precmd _zshz_precmd + add-zsh-hook -d chpwd _zshz_chpwd + + local x + for x in ${=ZSHZ[FUNCTIONS]}; do + (( ${+functions[$x]} )) && unfunction $x + done + + unset ZSHZ + + fpath=( "${(@)fpath:#${0:A:h}}" ) + + (( ${+aliases[${ZSHZ_CMD:-${_Z_CMD:-z}}]} )) && + unalias ${ZSHZ_CMD:-${_Z_CMD:-z}} + + unfunction $0 +} + +# vim: fdm=indent:ts=2:et:sts=2:sw=2: diff --git a/plugins/z/z.sh b/plugins/z/z.sh deleted file mode 100644 index 67f504e27..000000000 --- a/plugins/z/z.sh +++ /dev/null @@ -1,267 +0,0 @@ -# Copyright (c) 2009 rupa deadwyler. Licensed under the WTFPL license, Version 2 - -# maintains a jump-list of the directories you actually use -# -# INSTALL: -# * put something like this in your .bashrc/.zshrc: -# . /path/to/z.sh -# * cd around for a while to build up the db -# * PROFIT!! -# * optionally: -# set $_Z_CMD in .bashrc/.zshrc to change the command (default z). -# set $_Z_DATA in .bashrc/.zshrc to change the datafile (default ~/.z). -# set $_Z_MAX_SCORE lower to age entries out faster (default 9000). -# set $_Z_NO_RESOLVE_SYMLINKS to prevent symlink resolution. -# set $_Z_NO_PROMPT_COMMAND if you're handling PROMPT_COMMAND yourself. -# set $_Z_EXCLUDE_DIRS to an array of directories to exclude. -# set $_Z_OWNER to your username if you want use z while sudo with $HOME kept -# -# USE: -# * z foo # cd to most frecent dir matching foo -# * z foo bar # cd to most frecent dir matching foo and bar -# * z -r foo # cd to highest ranked dir matching foo -# * z -t foo # cd to most recently accessed dir matching foo -# * z -l foo # list matches instead of cd -# * z -e foo # echo the best match, don't cd -# * z -c foo # restrict matches to subdirs of $PWD -# * z -x # remove the current directory from the datafile -# * z -h # show a brief help message - -[ -d "${_Z_DATA:-$HOME/.z}" ] && { - echo "ERROR: z.sh's datafile (${_Z_DATA:-$HOME/.z}) is a directory." -} - -_z() { - - local datafile="${_Z_DATA:-$HOME/.z}" - - # if symlink, dereference - [ -h "$datafile" ] && datafile=$(readlink "$datafile") - - # bail if we don't own ~/.z and $_Z_OWNER not set - [ -z "$_Z_OWNER" -a -f "$datafile" -a ! -O "$datafile" ] && return - - _z_dirs () { - [ -f "$datafile" ] || return - - local line - while read line; do - # only count directories - [ -d "${line%%\|*}" ] && echo "$line" - done < "$datafile" - return 0 - } - - # add entries - if [ "$1" = "--add" ]; then - shift - - # $HOME and / aren't worth matching - [ "$*" = "$HOME" -o "$*" = '/' ] && return - - # don't track excluded directory trees - if [ ${#_Z_EXCLUDE_DIRS[@]} -gt 0 ]; then - local exclude - for exclude in "${_Z_EXCLUDE_DIRS[@]}"; do - case "$*" in "$exclude"*) return;; esac - done - fi - - # maintain the data file - local tempfile="$datafile.$RANDOM" - local score=${_Z_MAX_SCORE:-9000} - _z_dirs | awk -v path="$*" -v now="$(date +%s)" -v score=$score -F"|" ' - BEGIN { - rank[path] = 1 - time[path] = now - } - $2 >= 1 { - # drop ranks below 1 - if( $1 == path ) { - rank[$1] = $2 + 1 - time[$1] = now - } else { - rank[$1] = $2 - time[$1] = $3 - } - count += $2 - } - END { - if( count > score ) { - # aging - for( x in rank ) print x "|" 0.99*rank[x] "|" time[x] - } else for( x in rank ) print x "|" rank[x] "|" time[x] - } - ' 2>/dev/null >| "$tempfile" - # do our best to avoid clobbering the datafile in a race condition. - if [ $? -ne 0 -a -f "$datafile" ]; then - env rm -f "$tempfile" - else - [ "$_Z_OWNER" ] && chown $_Z_OWNER:"$(id -ng $_Z_OWNER)" "$tempfile" - env mv -f "$tempfile" "$datafile" || env rm -f "$tempfile" - fi - - # tab completion - elif [ "$1" = "--complete" -a -s "$datafile" ]; then - _z_dirs | awk -v q="$2" -F"|" ' - BEGIN { - q = substr(q, 3) - if( q == tolower(q) ) imatch = 1 - gsub(/ /, ".*", q) - } - { - if( imatch ) { - if( tolower($1) ~ q ) print $1 - } else if( $1 ~ q ) print $1 - } - ' 2>/dev/null - - else - # list/go - local echo fnd last list opt typ - while [ "$1" ]; do case "$1" in - --) while [ "$1" ]; do shift; fnd="$fnd${fnd:+ }$1";done;; - -*) opt=${1:1}; while [ "$opt" ]; do case ${opt:0:1} in - c) fnd="^$PWD $fnd";; - e) echo=1;; - h) echo "${_Z_CMD:-z} [-cehlrtx] args" >&2; return;; - l) list=1;; - r) typ="rank";; - t) typ="recent";; - x) sed -i -e "\:^${PWD}|.*:d" "$datafile";; - esac; opt=${opt:1}; done;; - *) fnd="$fnd${fnd:+ }$1";; - esac; last=$1; [ "$#" -gt 0 ] && shift; done - [ "$fnd" -a "$fnd" != "^$PWD " ] || list=1 - - # if we hit enter on a completion just go there - case "$last" in - # completions will always start with / - /*) [ -z "$list" -a -d "$last" ] && builtin cd "$last" && return;; - esac - - # no file yet - [ -f "$datafile" ] || return - - local cd - cd="$( < <( _z_dirs ) awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -F"|" ' - function frecent(rank, time) { - # relate frequency and time - dx = t - time - return int(10000 * rank * (3.75/((0.0001 * dx + 1) + 0.25))) - } - function output(matches, best_match, common) { - # list or return the desired directory - if( list ) { - if( common ) { - printf "%-10s %s\n", "common:", common > "/dev/stderr" - } - cmd = "sort -n >&2" - for( x in matches ) { - if( matches[x] ) { - printf "%-10s %s\n", matches[x], x | cmd - } - } - } else { - if( common && !typ ) best_match = common - print best_match - } - } - function common(matches) { - # find the common root of a list of matches, if it exists - for( x in matches ) { - if( matches[x] && (!short || length(x) < length(short)) ) { - short = x - } - } - if( short == "/" ) return - for( x in matches ) if( matches[x] && index(x, short) != 1 ) { - return - } - return short - } - BEGIN { - gsub(" ", ".*", q) - hi_rank = ihi_rank = -9999999999 - } - { - if( typ == "rank" ) { - rank = $2 - } else if( typ == "recent" ) { - rank = $3 - t - } else rank = frecent($2, $3) - if( $1 ~ q ) { - matches[$1] = rank - } else if( tolower($1) ~ tolower(q) ) imatches[$1] = rank - if( matches[$1] && matches[$1] > hi_rank ) { - best_match = $1 - hi_rank = matches[$1] - } else if( imatches[$1] && imatches[$1] > ihi_rank ) { - ibest_match = $1 - ihi_rank = imatches[$1] - } - } - END { - # prefer case sensitive - if( best_match ) { - output(matches, best_match, common(matches)) - exit - } else if( ibest_match ) { - output(imatches, ibest_match, common(imatches)) - exit - } - exit(1) - } - ')" - - if [ "$?" -eq 0 ]; then - if [ "$cd" ]; then - if [ "$echo" ]; then echo "$cd"; else builtin cd "$cd"; fi - fi - else - return $? - fi - fi -} - -alias ${_Z_CMD:-z}='_z 2>&1' - -[ "$_Z_NO_RESOLVE_SYMLINKS" ] || _Z_RESOLVE_SYMLINKS="-P" - -if type compctl >/dev/null 2>&1; then - # zsh - [ "$_Z_NO_PROMPT_COMMAND" ] || { - # populate directory list, avoid clobbering any other precmds. - if [ "$_Z_NO_RESOLVE_SYMLINKS" ]; then - _z_precmd() { - (_z --add "${PWD:a}" &) - : $RANDOM - } - else - _z_precmd() { - (_z --add "${PWD:A}" &) - : $RANDOM - } - fi - [[ -n "${precmd_functions[(r)_z_precmd]}" ]] || { - precmd_functions[$(($#precmd_functions+1))]=_z_precmd - } - } - _z_zsh_tab_completion() { - # tab completion - local compl - read -l compl - reply=(${(f)"$(_z --complete "$compl")"}) - } - compctl -U -K _z_zsh_tab_completion _z -elif type complete >/dev/null 2>&1; then - # bash - # tab completion - complete -o filenames -C '_z --complete "$COMP_LINE"' ${_Z_CMD:-z} - [ "$_Z_NO_PROMPT_COMMAND" ] || { - # populate directory list. avoid clobbering other PROMPT_COMMANDs. - grep "_z --add" <<< "$PROMPT_COMMAND" >/dev/null || { - PROMPT_COMMAND="$PROMPT_COMMAND"$'\n''(_z --add "$(command pwd '$_Z_RESOLVE_SYMLINKS' 2>/dev/null)" 2>/dev/null &);' - } - } -fi From 8487a5536d247927216dd22041c1c32bcd100256 Mon Sep 17 00:00:00 2001 From: Carlo Date: Tue, 18 Oct 2022 19:38:47 +0200 Subject: [PATCH 057/253] fix(cli): avoid using `column` (#11271) --- lib/cli.zsh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/cli.zsh b/lib/cli.zsh index f15bd6d63..fed00d21d 100644 --- a/lib/cli.zsh +++ b/lib/cli.zsh @@ -416,14 +416,14 @@ function _omz::plugin::list { if (( ${#custom_plugins} )); then print -P "%U%BCustom plugins%b%u:" - print -l ${(q-)custom_plugins} | column -x + print -lac ${(q-)custom_plugins} fi if (( ${#builtin_plugins} )); then (( ${#custom_plugins} )) && echo # add a line of separation print -P "%U%BBuilt-in plugins%b%u:" - print -l ${(q-)builtin_plugins} | column -x + print -lac ${(q-)builtin_plugins} fi } @@ -674,13 +674,13 @@ function _omz::theme::list { # Print custom themes if there are any if (( ${#custom_themes} )); then print -P "%U%BCustom themes%b%u:" - print -l ${(q-)custom_themes} | column -x + print -lac ${(q-)custom_themes} echo fi # Print built-in themes print -P "%U%BBuilt-in themes%b%u:" - print -l ${(q-)builtin_themes} | column -x + print -lac ${(q-)builtin_themes} } function _omz::theme::set { From 4e4961e60c6e4bb6a3bd30bc70576f00ea519930 Mon Sep 17 00:00:00 2001 From: Yuval Date: Tue, 18 Oct 2022 19:40:02 +0200 Subject: [PATCH 058/253] feat(aliases): add basic argument parsing (#10710) --- plugins/aliases/README.md | 6 ++++++ plugins/aliases/cheatsheet.py | 25 +++++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/plugins/aliases/README.md b/plugins/aliases/README.md index bfb6ab8c4..66fd84584 100644 --- a/plugins/aliases/README.md +++ b/plugins/aliases/README.md @@ -17,6 +17,12 @@ Requirements: Python needs to be installed. - `acs`: show all aliases by group. +- `acs -h/--help`: print help mesage. + - `acs `: filter aliases by `` and highlight. +- `acs -g /--group `. Multiple uses of the flag show all groups, + +- `acs --groups-only`: show only group names + ![screenshot](https://cloud.githubusercontent.com/assets/3602957/11581913/cb54fb8a-9a82-11e5-846b-5a67f67ad9ad.png) diff --git a/plugins/aliases/cheatsheet.py b/plugins/aliases/cheatsheet.py index a7e3968b0..3362a6ab6 100644 --- a/plugins/aliases/cheatsheet.py +++ b/plugins/aliases/cheatsheet.py @@ -2,6 +2,7 @@ import sys import itertools import termcolor +import argparse def parse(line): left = line[0:line.find('=')].strip() @@ -26,7 +27,7 @@ def cheatsheet(lines): target_aliases.extend(group_list) return cheatsheet -def pretty_print_group(key, aliases, highlight=None): +def pretty_print_group(key, aliases, highlight=None, only_groupname=False): if len(aliases) == 0: return group_hl_formatter = lambda g, hl: termcolor.colored(hl, 'yellow').join([termcolor.colored(part, 'red') for part in ('[%s]' % g).split(hl)]) @@ -35,21 +36,33 @@ def pretty_print_group(key, aliases, highlight=None): alias_formatter = lambda alias: termcolor.colored('\t%s = %s' % alias[0:2], 'green') if highlight and len(highlight)>0: print (group_hl_formatter(key, highlight)) - print ('\n'.join([alias_hl_formatter(alias, highlight) for alias in aliases])) + if not only_groupname: + print ('\n'.join([alias_hl_formatter(alias, highlight) for alias in aliases])) else: print (group_formatter(key)) - print ('\n'.join([alias_formatter(alias) for alias in aliases])) + if not only_groupname: + print ('\n'.join([alias_formatter(alias) for alias in aliases])) print ('') -def pretty_print(cheatsheet, wfilter): +def pretty_print(cheatsheet, wfilter, group_list=None, groups_only=False): sorted_key = sorted(cheatsheet.keys()) for key in sorted_key: + if group_list and key not in group_list: + continue aliases = cheatsheet.get(key) if not wfilter: - pretty_print_group(key, aliases, wfilter) + pretty_print_group(key, aliases, wfilter, groups_only) else: pretty_print_group(key, [ alias for alias in aliases if alias[0].find(wfilter)>-1 or alias[1].find(wfilter)>-1], wfilter) if __name__ == '__main__': + parser = argparse.ArgumentParser(description="Pretty print aliases.") + parser.add_argument('filter', nargs="*", help="search aliases matching string") + parser.add_argument('-g', '--group', dest="group_list", action='append', help="only print aliases in given groups") + parser.add_argument('--groups', dest='groups_only', action='store_true', help="only print alias groups") + args = parser.parse_args() + lines = sys.stdin.readlines() - pretty_print(cheatsheet(lines), sys.argv[1] if len(sys.argv)>1 else None) + group_list = args.group_list or None + wfilter = " ".join(args.filter) or None + pretty_print(cheatsheet(lines), wfilter, group_list, args.groups_only) From a7d910c3a61d8599f748a8ddae59ecdd9424022a Mon Sep 17 00:00:00 2001 From: Shreem Asati <96364929+shreem-123@users.noreply.github.com> Date: Wed, 19 Oct 2022 11:57:54 +0530 Subject: [PATCH 059/253] chore: fix typo in CONTRIBUTING.md (#11273) --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 59cf96012..e78bd8192 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -233,7 +233,7 @@ type(scope)!: subject Try to keep the first commit line short. This is harder to do using this commit style but try to be concise and if you need more space, you can use the commit body. Try to make sure that the commit -subject is clear and precise enough that users will know what change by just looking at the changelog. +subject is clear and precise enough that users will know what changed by just looking at the changelog. ---- From 0066280c3e971e1e45a9037f6d0b993dabcc3576 Mon Sep 17 00:00:00 2001 From: pomatory Date: Sun, 23 Oct 2022 02:52:26 +0800 Subject: [PATCH 060/253] fix(pip): fix `pipupall` error with `freeze` format (#11280) --- plugins/pip/pip.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/pip/pip.plugin.zsh b/plugins/pip/pip.plugin.zsh index 7eb2d2a35..90e39e118 100644 --- a/plugins/pip/pip.plugin.zsh +++ b/plugins/pip/pip.plugin.zsh @@ -94,12 +94,12 @@ alias pipreq="pip freeze > requirements.txt" # Install packages from requirements file alias pipir="pip install -r requirements.txt" -# Update all installed packages +# Upgrade all installed packages function pipupall { # non-GNU xargs does not support nor need `--no-run-if-empty` local xargs="xargs --no-run-if-empty" xargs --version 2>/dev/null | grep -q GNU || xargs="xargs" - pip list --outdated --format freeze | cut -d= -f1 | ${=xargs} pip install --upgrade + pip list --outdated | awk 'NR > 2 { print $1 }' | ${=xargs} pip install --upgrade } # Uninstalled all installed packages From bb8a0aa2c1c54c3aeb3e703397ab050fd62e36e6 Mon Sep 17 00:00:00 2001 From: Zhong Ruoyu Date: Mon, 24 Oct 2022 18:07:12 +0800 Subject: [PATCH 061/253] fix(npm): ignore `rm` alias (#11222) --- plugins/npm/npm.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/npm/npm.plugin.zsh b/plugins/npm/npm.plugin.zsh index 6c768d614..e0dcbf142 100644 --- a/plugins/npm/npm.plugin.zsh +++ b/plugins/npm/npm.plugin.zsh @@ -1,5 +1,5 @@ (( $+commands[npm] )) && { - rm -f "${ZSH_CACHE_DIR:-$ZSH/cache}/npm_completion" + command rm -f "${ZSH_CACHE_DIR:-$ZSH/cache}/npm_completion" _npm_completion() { local si=$IFS From 820b8bd40f19867d7811766f967d66faa5e5a818 Mon Sep 17 00:00:00 2001 From: Eric Hsieh Date: Wed, 26 Oct 2022 03:35:30 +0800 Subject: [PATCH 062/253] docs(autojump): fix outdated links and update description (#11289) --- plugins/asdf/README.md | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/plugins/asdf/README.md b/plugins/asdf/README.md index e8aa976bc..f047860e2 100644 --- a/plugins/asdf/README.md +++ b/plugins/asdf/README.md @@ -6,22 +6,25 @@ Adds integration with [asdf](https://github.com/asdf-vm/asdf), the extendable ve ### Installation -1. Enable the plugin by adding it to your `plugins` definition in `~/.zshrc`. +1. [Download asdf](https://asdf-vm.com/guide/getting-started.html#_2-download-asdf) by running the following: + + ``` + git clone https://github.com/asdf-vm/asdf.git ~/.asdf + ``` + +2. [Enable asdf](https://asdf-vm.com/guide/getting-started.html#_3-install-asdf) by adding it to your `plugins` definition in `~/.zshrc`. ``` plugins=(asdf) ``` -2. [Install asdf](https://github.com/asdf-vm/asdf#setup) by running the following: - ``` - git clone https://github.com/asdf-vm/asdf.git ~/.asdf - ``` - ### Usage -See the [asdf usage documentation](https://github.com/asdf-vm/asdf#usage) for information on how to use asdf: +See the [asdf documentation](https://asdf-vm.com/guide/getting-started.html#_4-install-a-plugin) for information on how to use asdf: ``` -asdf plugin-add nodejs git@github.com:asdf-vm/asdf-nodejs.git -asdf install nodejs 5.9.1 +asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git +asdf install nodejs latest +asdf global nodejs latest +asdf local nodejs latest ``` From 49691b58b3c1fbe64b927ec88d5e9697f76e2a80 Mon Sep 17 00:00:00 2001 From: Paul S Date: Tue, 25 Oct 2022 20:39:58 +0100 Subject: [PATCH 063/253] feat(autojump): add support for macOS and nix (#11291) --- plugins/autojump/autojump.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/autojump/autojump.plugin.zsh b/plugins/autojump/autojump.plugin.zsh index 8593353b2..e11f231b6 100644 --- a/plugins/autojump/autojump.plugin.zsh +++ b/plugins/autojump/autojump.plugin.zsh @@ -12,6 +12,7 @@ autojump_paths=( /opt/local/etc/profile.d/autojump.sh # macOS with MacPorts /usr/local/etc/profile.d/autojump.sh # macOS with Homebrew (default) /opt/homebrew/etc/profile.d/autojump.sh # macOS with Homebrew (default on M1 macs) + /etc/profiles/per-user/$USER/bin/autojump # macOS Nix, Home Manager and flakes ) for file in $autojump_paths; do From 50a526f209a182add8a47e362e1c9a3bfd7c5af4 Mon Sep 17 00:00:00 2001 From: Pandey-utkarsh <91661580+Pandey-utkarsh@users.noreply.github.com> Date: Sun, 30 Oct 2022 17:51:35 +0530 Subject: [PATCH 064/253] chore: correct style in CONTRIBUTING.md (#11306) Corrected grammatically incorrect sentences, punctuations and typos for better readability. --- CONTRIBUTING.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e78bd8192..6c8b8446e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,13 +35,13 @@ you would make is not already covered. Please be so kind as to [search](#use-the-search-luke) for any open issue already covering your problem. -If you find one, comment on it so we can know there are more people experiencing it. +If you find one, comment on it, so we know more people are experiencing it. If not, look at the [Troubleshooting](https://github.com/ohmyzsh/ohmyzsh/wiki/Troubleshooting) page for instructions on how to gather data to better debug your problem. Then, you can go ahead and create an issue with as much detail as you can provide. -It should include the data gathered as indicated above, along with: +It should include the data gathered as indicated above, along with the following: 1. How to reproduce the problem 2. What the correct behavior should be @@ -57,7 +57,7 @@ We will do our very best to help you. Please be so kind as to [search](#use-the-search-luke) for any open issue already covering your suggestion. -If you find one, comment on it so we can know there are more people supporting it. +If you find one, comment on it, so we know more people are supporting it. If not, you can go ahead and create an issue. Please copy to anyone relevant (e.g. plugin maintainers) by mentioning their GitHub handle (starting with `@`) in your message. @@ -84,7 +84,7 @@ your [problem](#you-have-a-problem), and any pending/merged/rejected PR covering If the solution is already reported, try it out and +1 the pull request if the solution works ok. On the other hand, if you think your solution is better, post -it with a reference to the other one so we can have both solutions to compare. +it with reference to the other one so we can have both solutions to compare. If not, then go ahead and submit a PR. Please copy to anyone relevant (e.g. plugin maintainers) by mentioning their GitHub handle (starting with `@`) in your message. @@ -113,14 +113,14 @@ This has become an issue for two opposing reasons: - Some users want to have their personal aliases in Oh My Zsh. - Some users don't want any aliases at all and feel that there are too many. -Because of this, from now on we're requiring that new aliases follow these conditions: +Because of this, from now on, we require that new aliases follow these conditions: 1. They will be used by many people, not just a few. 2. The aliases will be used many times and for common tasks. 3. Prefer one generic alias over many specific ones. 4. When justifying the need for an alias, talk about workflows where you'll use it, preferably in combination with other aliases. -5. If there exists a command with the same name, look for a different alias name. +5. If a command with the same name exists, look for a different alias name. This list is not exhaustive! Please remember that your alias will be in the machines of many people, so it should be justified why they should have it. @@ -214,7 +214,7 @@ type(scope)!: subject ``` - `subject`: a brief description of the changes. This will be displayed in the changelog. If you need - to specify other details you can use the commit body but it won't be visible. + to specify other details, you can use the commit body, but it won't be visible. Formatting tricks: the commit subject may contain: @@ -231,8 +231,8 @@ type(scope)!: subject ### Style -Try to keep the first commit line short. This is harder to do using this commit style but try to be -concise and if you need more space, you can use the commit body. Try to make sure that the commit +Try to keep the first commit line short. It's harder to do using this commit style but try to be +concise, and if you need more space, you can use the commit body. Try to make sure that the commit subject is clear and precise enough that users will know what changed by just looking at the changelog. ---- From 239e2f9fcd3a3d469a2d6edfc33b57bf5c39c6a2 Mon Sep 17 00:00:00 2001 From: Lennart Ochel Date: Thu, 3 Nov 2022 18:30:30 +0100 Subject: [PATCH 065/253] ci: migrate to ProjectV2 GraphQL API (#11311) --- .github/workflows/project.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index 999cc08e2..1aa69c279 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -27,24 +27,25 @@ jobs: gh api graphql -f query=' query($org: String!, $number: Int!) { organization(login: $org){ - projectNext(number: $number) { + projectV2(number: $number) { id fields(first:20) { nodes { - id - name + ... on ProjectV2Field { + id + name + } } } } } - } - ' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json + }' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json # Parse project data cat >> $GITHUB_ENV <> $GITHUB_ENV @@ -108,23 +109,23 @@ jobs: $theme_field: ID! $theme_value: String! ) { - set_plugin: updateProjectNextItemField(input: { + set_plugin: updateProjectV2ItemFieldValue(input: { projectId: $project itemId: $item fieldId: $plugin_field value: $plugin_value }) { - projectNextItem { + projectV2Item { id } } - set_theme: updateProjectNextItemField(input: { + set_theme: updateProjectV2ItemFieldValue(input: { projectId: $project itemId: $item fieldId: $theme_field value: $theme_value }) { - projectNextItem { + projectV2Item { id } } @@ -133,4 +134,3 @@ jobs: -f plugin_field=$PLUGIN_FIELD_ID -f plugin_value=$PLUGIN \ -f theme_field=$THEME_FIELD_ID -f theme_value=$THEME \ --silent - From 5ddb5890118f577ac67bd9101ef66bcdd520c8d9 Mon Sep 17 00:00:00 2001 From: Qin Li <30631553+liblaf@users.noreply.github.com> Date: Fri, 4 Nov 2022 01:32:01 +0800 Subject: [PATCH 066/253] fix(brew): suppress error message of brew cask on Linux (#11302) --- plugins/brew/brew.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/brew/brew.plugin.zsh b/plugins/brew/brew.plugin.zsh index 41420b5b7..ea8900823 100644 --- a/plugins/brew/brew.plugin.zsh +++ b/plugins/brew/brew.plugin.zsh @@ -36,7 +36,7 @@ alias buf='brew upgrade --formula' function brews() { local formulae="$(brew leaves | xargs brew deps --installed --for-each)" - local casks="$(brew list --cask)" + local casks="$(brew list --cask 2>/dev/null)" local blue="$(tput setaf 4)" local bold="$(tput bold)" From 02972f801b4865c68a1045ce2455b3ac4a9d59ad Mon Sep 17 00:00:00 2001 From: Marco Eidinger Date: Thu, 3 Nov 2022 10:32:54 -0700 Subject: [PATCH 067/253] feat(swiftpm): update completion for Swift 5.7 (#11299) * feat(swiftpm): update completion for Swift 5.7 * chore(docs): fix typo --- plugins/swiftpm/README.md | 2 +- plugins/swiftpm/_swift | 1114 +++++++++++++++++++++++++------------ 2 files changed, 759 insertions(+), 357 deletions(-) diff --git a/plugins/swiftpm/README.md b/plugins/swiftpm/README.md index a722c03e4..223a607c1 100644 --- a/plugins/swiftpm/README.md +++ b/plugins/swiftpm/README.md @@ -2,7 +2,7 @@ ## Description -This plugin provides a few utilities that make you faster on your daily work with the [Swift Package Manager](https://github.com/apple/swift-package-manager), as well as autocompletion for Swift 5.1. +This plugin provides a few utilities that make you faster on your daily work with the [Swift Package Manager](https://github.com/apple/swift-package-manager), as well as autocompletion for Swift 5.7. To start using it, add the `swiftpm` plugin to your `plugins` array in `~/.zshrc`: diff --git a/plugins/swiftpm/_swift b/plugins/swiftpm/_swift index 3a923226d..51c9fffa0 100644 --- a/plugins/swiftpm/_swift +++ b/plugins/swiftpm/_swift @@ -1,474 +1,876 @@ #compdef swift local context state state_descr line +_swift_commandname=$words[1] typeset -A opt_args _swift() { - _arguments -C \ - '(- :)--help[prints the synopsis and a list of the most commonly used commands]: :->arg' \ - '(-): :->command' \ - '(-)*:: :->arg' && return - + integer ret=1 + local -a args + args+=( + '(-h --help)'{-h,--help}'[Show help information.]' + '(-): :->command' + '(-)*:: :->arg' + ) + _arguments -w -s -S $args[@] && ret=0 case $state in (command) - local tools - tools=( - 'build:build sources into binary products' - 'run:build and run an executable product' - 'package:perform operations on Swift packages' - 'test:build and run tests' + local subcommands + subcommands=( + 'run:Build and run an executable product' + 'build:Build sources into binary products' + 'test:Build and run tests' + 'package:Perform operations on Swift packages' + 'help:Show subcommand help information.' ) - _alternative \ - 'tools:common:{_describe "tool" tools }' \ - 'compiler: :_swift_compiler' && _ret=0 + _describe "subcommand" subcommands ;; (arg) case ${words[1]} in - (build) - _swift_build - ;; (run) _swift_run ;; - (package) - _swift_package + (build) + _swift_build ;; (test) _swift_test ;; - (*) - _swift_compiler + (package) + _swift_package + ;; + (help) + _swift_help ;; esac ;; esac + + return ret } -_swift_dependency() { - local dependencies - dependencies=( $(swift package completion-tool list-dependencies) ) - _describe '' dependencies -} - -_swift_executable() { - local executables - executables=( $(swift package completion-tool list-executables) ) - _describe '' executables -} - -# Generates completions for swift build -# -# In the final compdef file, set the following file header: -# -# #compdef _swift_build -# local context state state_descr line -# typeset -A opt_args -_swift_build() { - arguments=( - "-Xcc[Pass flag through to all C compiler invocations]:Pass flag through to all C compiler invocations: " - "-Xswiftc[Pass flag through to all Swift compiler invocations]:Pass flag through to all Swift compiler invocations: " - "-Xlinker[Pass flag through to all linker invocations]:Pass flag through to all linker invocations: " - "-Xcxx[Pass flag through to all C++ compiler invocations]:Pass flag through to all C++ compiler invocations: " - "(--configuration -c)"{--configuration,-c}"[Build with configuration (debug|release) ]: :{_values '' 'debug[build with DEBUG configuration]' 'release[build with RELEASE configuration]'}" - "--build-path[Specify build/cache directory ]:Specify build/cache directory :_files" - "(--chdir -C)"{--chdir,-C}"[]: :_files" - "--package-path[Change working directory before any other operation]:Change working directory before any other operation:_files" - "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}" - "--disable-prefetching[]" - "--skip-update[Skip updating dependencies from their remote during a resolution]" - "--disable-sandbox[Disable using the sandbox when executing subprocesses]" - "--disable-package-manifest-caching[Disable caching Package.swift manifests]" - "--version[]" - "--destination[]: :_files" - "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]" - "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]" - "--static-swift-stdlib[Link Swift stdlib statically]" - "--force-resolved-versions[]" - "--disable-automatic-resolution[Disable automatic resolution if Package.resolved file is out-of-date]" - "--enable-index-store[Enable indexing-while-building feature]" - "--disable-index-store[Disable indexing-while-building feature]" - "--enable-pubgrub-resolver[\[Experimental\] Enable the new Pubgrub dependency resolver]" - "--enable-parseable-module-interfaces[]" - "--trace-resolver[]" - "(--jobs -j)"{--jobs,-j}"[The number of jobs to spawn in parallel during the build process]:The number of jobs to spawn in parallel during the build process: " - "--enable-test-discovery[Enable test discovery on platforms without Objective-C runtime]" - "--build-tests[Build both source and test targets]" - "--product[Build the specified product]:Build the specified product: " - "--target[Build the specified target]:Build the specified target: " - "--show-bin-path[Print the binary output path]" - ) - _arguments $arguments && return -} - -# Generates completions for swift run -# -# In the final compdef file, set the following file header: -# -# #compdef _swift_run -# local context state state_descr line -# typeset -A opt_args _swift_run() { - arguments=( - ":The executable to run:_swift_executable" - "-Xcc[Pass flag through to all C compiler invocations]:Pass flag through to all C compiler invocations: " - "-Xswiftc[Pass flag through to all Swift compiler invocations]:Pass flag through to all Swift compiler invocations: " - "-Xlinker[Pass flag through to all linker invocations]:Pass flag through to all linker invocations: " - "-Xcxx[Pass flag through to all C++ compiler invocations]:Pass flag through to all C++ compiler invocations: " - "(--configuration -c)"{--configuration,-c}"[Build with configuration (debug|release) ]: :{_values '' 'debug[build with DEBUG configuration]' 'release[build with RELEASE configuration]'}" - "--build-path[Specify build/cache directory ]:Specify build/cache directory :_files" - "(--chdir -C)"{--chdir,-C}"[]: :_files" - "--package-path[Change working directory before any other operation]:Change working directory before any other operation:_files" - "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}" - "--disable-prefetching[]" - "--skip-update[Skip updating dependencies from their remote during a resolution]" - "--disable-sandbox[Disable using the sandbox when executing subprocesses]" - "--disable-package-manifest-caching[Disable caching Package.swift manifests]" - "--version[]" - "--destination[]: :_files" - "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]" - "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]" - "--static-swift-stdlib[Link Swift stdlib statically]" - "--force-resolved-versions[]" - "--disable-automatic-resolution[Disable automatic resolution if Package.resolved file is out-of-date]" - "--enable-index-store[Enable indexing-while-building feature]" - "--disable-index-store[Disable indexing-while-building feature]" - "--enable-pubgrub-resolver[\[Experimental\] Enable the new Pubgrub dependency resolver]" - "--enable-parseable-module-interfaces[]" - "--trace-resolver[]" - "(--jobs -j)"{--jobs,-j}"[The number of jobs to spawn in parallel during the build process]:The number of jobs to spawn in parallel during the build process: " - "--enable-test-discovery[Enable test discovery on platforms without Objective-C runtime]" - "--skip-build[Skip building the executable product]" - "--build-tests[Build both source and test targets]" - "--repl[Launch Swift REPL for the package]" + integer ret=1 + local -a args + args+=( + '--package-path[Specify the package path to operate on (default current directory). This changes the working directory before any other operation]:package-path:_files -/' + '--cache-path[Specify the shared cache directory path]:cache-path:_files -/' + '--config-path[Specify the shared configuration directory path]:config-path:_files -/' + '--security-path[Specify the shared security directory path]:security-path:_files -/' + '--scratch-path[Specify a custom scratch directory path (default .build)]:scratch-path:_files -/' + '--enable-dependency-cache[Use a shared cache when fetching dependencies]' + '--disable-dependency-cache[Use a shared cache when fetching dependencies]' + '--enable-build-manifest-caching' + '--disable-build-manifest-caching' + '--manifest-cache[Caching mode of Package.swift manifests (shared: shared cache, local: package'"'"'s build directory, none: disabled]:manifest-cache:' + '(--verbose -v)'{--verbose,-v}'[Increase verbosity to include informational output]' + '(--very-verbose --vv)'{--very-verbose,--vv}'[Increase verbosity to include debug output]' + '--disable-sandbox[Disable using the sandbox when executing subprocesses]' + '--enable-netrc[Load credentials from a .netrc file]' + '--disable-netrc[Load credentials from a .netrc file]' + '--netrc-file[Specify the .netrc file path.]:netrc-file:_files' + '--enable-keychain[Search credentials in macOS keychain]' + '--disable-keychain[Search credentials in macOS keychain]' + '--resolver-fingerprint-checking:resolver-fingerprint-checking:' + '--enable-prefetching' + '--disable-prefetching' + '(--force-resolved-versions --disable-automatic-resolution --only-use-versions-from-resolved-file)'{--force-resolved-versions,--disable-automatic-resolution,--only-use-versions-from-resolved-file}'[Only use versions from the Package.resolved file and fail resolution if it is out-of-date]' + '--skip-update[Skip updating dependencies from their remote during a resolution]' + '--disable-scm-to-registry-transformation[disable source control to registry transformation]' + '--use-registry-identity-for-scm[look up source control dependencies in the registry and use their registry identity when possible to help deduplicate across the two origins]' + '--replace-scm-with-registry[look up source control dependencies in the registry and use the registry to retrieve them instead of source control when possible]' + '(--configuration -c)'{--configuration,-c}'[Build with configuration]:configuration:(debug release)' + '-Xcc[Pass flag through to all C compiler invocations]:Xcc:' + '-Xswiftc[Pass flag through to all Swift compiler invocations]:Xswiftc:' + '-Xlinker[Pass flag through to all linker invocations]:Xlinker:' + '-Xcxx[Pass flag through to all C++ compiler invocations]:Xcxx:' + '--triple:triple:' + '--sdk:sdk:_files -/' + '--toolchain:toolchain:_files -/' + '--sanitize[Turn on runtime checks for erroneous behavior, possible values: address, thread, undefined, scudo]:sanitize:' + '--auto-index-store[Enable or disable indexing-while-building feature]' + '--enable-index-store[Enable or disable indexing-while-building feature]' + '--disable-index-store[Enable or disable indexing-while-building feature]' + '--enable-parseable-module-interfaces' + '(--jobs -j)'{--jobs,-j}'[The number of jobs to spawn in parallel during the build process]:jobs:' + '--emit-swift-module-separately' + '--use-integrated-swift-driver' + '--experimental-explicit-module-build' + '--print-manifest-job-graph[Write the command graph for the build manifest as a graphviz file]' + '--build-system:build-system:(native xcode)' + '--enable-dead-strip[Disable/enable dead code stripping by the linker]' + '--disable-dead-strip[Disable/enable dead code stripping by the linker]' + '--static-swift-stdlib[Link Swift stdlib statically]' + '--no-static-swift-stdlib[Link Swift stdlib statically]' + '--repl[Launch Swift REPL for the package]' + '--debugger[Launch the executable in a debugger session]' + '--run[Launch the executable with the provided arguments]' + '--skip-build[Skip building the executable product]' + '--build-tests[Build both source and test targets]' + ':executable:{local -a list; list=(${(f)"$(swift package completion-tool list-executables)"}); _describe '''' list}' + ':arguments:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' ) - _arguments $arguments && return + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_build() { + integer ret=1 + local -a args + args+=( + '--package-path[Specify the package path to operate on (default current directory). This changes the working directory before any other operation]:package-path:_files -/' + '--cache-path[Specify the shared cache directory path]:cache-path:_files -/' + '--config-path[Specify the shared configuration directory path]:config-path:_files -/' + '--security-path[Specify the shared security directory path]:security-path:_files -/' + '--scratch-path[Specify a custom scratch directory path (default .build)]:scratch-path:_files -/' + '--enable-dependency-cache[Use a shared cache when fetching dependencies]' + '--disable-dependency-cache[Use a shared cache when fetching dependencies]' + '--enable-build-manifest-caching' + '--disable-build-manifest-caching' + '--manifest-cache[Caching mode of Package.swift manifests (shared: shared cache, local: package'"'"'s build directory, none: disabled]:manifest-cache:' + '(--verbose -v)'{--verbose,-v}'[Increase verbosity to include informational output]' + '(--very-verbose --vv)'{--very-verbose,--vv}'[Increase verbosity to include debug output]' + '--disable-sandbox[Disable using the sandbox when executing subprocesses]' + '--enable-netrc[Load credentials from a .netrc file]' + '--disable-netrc[Load credentials from a .netrc file]' + '--netrc-file[Specify the .netrc file path.]:netrc-file:_files' + '--enable-keychain[Search credentials in macOS keychain]' + '--disable-keychain[Search credentials in macOS keychain]' + '--resolver-fingerprint-checking:resolver-fingerprint-checking:' + '--enable-prefetching' + '--disable-prefetching' + '(--force-resolved-versions --disable-automatic-resolution --only-use-versions-from-resolved-file)'{--force-resolved-versions,--disable-automatic-resolution,--only-use-versions-from-resolved-file}'[Only use versions from the Package.resolved file and fail resolution if it is out-of-date]' + '--skip-update[Skip updating dependencies from their remote during a resolution]' + '--disable-scm-to-registry-transformation[disable source control to registry transformation]' + '--use-registry-identity-for-scm[look up source control dependencies in the registry and use their registry identity when possible to help deduplicate across the two origins]' + '--replace-scm-with-registry[look up source control dependencies in the registry and use the registry to retrieve them instead of source control when possible]' + '(--configuration -c)'{--configuration,-c}'[Build with configuration]:configuration:(debug release)' + '-Xcc[Pass flag through to all C compiler invocations]:Xcc:' + '-Xswiftc[Pass flag through to all Swift compiler invocations]:Xswiftc:' + '-Xlinker[Pass flag through to all linker invocations]:Xlinker:' + '-Xcxx[Pass flag through to all C++ compiler invocations]:Xcxx:' + '--triple:triple:' + '--sdk:sdk:_files -/' + '--toolchain:toolchain:_files -/' + '--sanitize[Turn on runtime checks for erroneous behavior, possible values: address, thread, undefined, scudo]:sanitize:' + '--auto-index-store[Enable or disable indexing-while-building feature]' + '--enable-index-store[Enable or disable indexing-while-building feature]' + '--disable-index-store[Enable or disable indexing-while-building feature]' + '--enable-parseable-module-interfaces' + '(--jobs -j)'{--jobs,-j}'[The number of jobs to spawn in parallel during the build process]:jobs:' + '--emit-swift-module-separately' + '--use-integrated-swift-driver' + '--experimental-explicit-module-build' + '--print-manifest-job-graph[Write the command graph for the build manifest as a graphviz file]' + '--build-system:build-system:(native xcode)' + '--enable-dead-strip[Disable/enable dead code stripping by the linker]' + '--disable-dead-strip[Disable/enable dead code stripping by the linker]' + '--static-swift-stdlib[Link Swift stdlib statically]' + '--no-static-swift-stdlib[Link Swift stdlib statically]' + '--build-tests[Build both source and test targets]' + '--show-bin-path[Print the binary output path]' + '--target[Build the specified target]:target:' + '--product[Build the specified product]:product:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_test() { + integer ret=1 + local -a args + args+=( + '--package-path[Specify the package path to operate on (default current directory). This changes the working directory before any other operation]:package-path:_files -/' + '--cache-path[Specify the shared cache directory path]:cache-path:_files -/' + '--config-path[Specify the shared configuration directory path]:config-path:_files -/' + '--security-path[Specify the shared security directory path]:security-path:_files -/' + '--scratch-path[Specify a custom scratch directory path (default .build)]:scratch-path:_files -/' + '--enable-dependency-cache[Use a shared cache when fetching dependencies]' + '--disable-dependency-cache[Use a shared cache when fetching dependencies]' + '--enable-build-manifest-caching' + '--disable-build-manifest-caching' + '--manifest-cache[Caching mode of Package.swift manifests (shared: shared cache, local: package'"'"'s build directory, none: disabled]:manifest-cache:' + '(--verbose -v)'{--verbose,-v}'[Increase verbosity to include informational output]' + '(--very-verbose --vv)'{--very-verbose,--vv}'[Increase verbosity to include debug output]' + '--disable-sandbox[Disable using the sandbox when executing subprocesses]' + '--enable-netrc[Load credentials from a .netrc file]' + '--disable-netrc[Load credentials from a .netrc file]' + '--netrc-file[Specify the .netrc file path.]:netrc-file:_files' + '--enable-keychain[Search credentials in macOS keychain]' + '--disable-keychain[Search credentials in macOS keychain]' + '--resolver-fingerprint-checking:resolver-fingerprint-checking:' + '--enable-prefetching' + '--disable-prefetching' + '(--force-resolved-versions --disable-automatic-resolution --only-use-versions-from-resolved-file)'{--force-resolved-versions,--disable-automatic-resolution,--only-use-versions-from-resolved-file}'[Only use versions from the Package.resolved file and fail resolution if it is out-of-date]' + '--skip-update[Skip updating dependencies from their remote during a resolution]' + '--disable-scm-to-registry-transformation[disable source control to registry transformation]' + '--use-registry-identity-for-scm[look up source control dependencies in the registry and use their registry identity when possible to help deduplicate across the two origins]' + '--replace-scm-with-registry[look up source control dependencies in the registry and use the registry to retrieve them instead of source control when possible]' + '(--configuration -c)'{--configuration,-c}'[Build with configuration]:configuration:(debug release)' + '-Xcc[Pass flag through to all C compiler invocations]:Xcc:' + '-Xswiftc[Pass flag through to all Swift compiler invocations]:Xswiftc:' + '-Xlinker[Pass flag through to all linker invocations]:Xlinker:' + '-Xcxx[Pass flag through to all C++ compiler invocations]:Xcxx:' + '--triple:triple:' + '--sdk:sdk:_files -/' + '--toolchain:toolchain:_files -/' + '--sanitize[Turn on runtime checks for erroneous behavior, possible values: address, thread, undefined, scudo]:sanitize:' + '--auto-index-store[Enable or disable indexing-while-building feature]' + '--enable-index-store[Enable or disable indexing-while-building feature]' + '--disable-index-store[Enable or disable indexing-while-building feature]' + '--enable-parseable-module-interfaces' + '(--jobs -j)'{--jobs,-j}'[The number of jobs to spawn in parallel during the build process]:jobs:' + '--emit-swift-module-separately' + '--use-integrated-swift-driver' + '--experimental-explicit-module-build' + '--print-manifest-job-graph[Write the command graph for the build manifest as a graphviz file]' + '--build-system:build-system:(native xcode)' + '--enable-dead-strip[Disable/enable dead code stripping by the linker]' + '--disable-dead-strip[Disable/enable dead code stripping by the linker]' + '--static-swift-stdlib[Link Swift stdlib statically]' + '--no-static-swift-stdlib[Link Swift stdlib statically]' + '--skip-build[Skip building the test target]' + '--parallel[Run the tests in parallel.]' + '--num-workers[Number of tests to execute in parallel.]:num-workers:' + '(--list-tests -l)'{--list-tests,-l}'[Lists test methods in specifier format]' + '--show-codecov-path[Print the path of the exported code coverage JSON file]' + '(-s --specifier)'{-s,--specifier}':specifier:' + '--filter[Run test cases matching regular expression, Format: . or ./]:filter:' + '--skip[Skip test cases matching regular expression, Example: --skip PerformanceTests]:skip:' + '--xunit-output[Path where the xUnit xml file should be generated.]:xunit-output:_files -/' + '--test-product[Test the specified product.]:test-product:' + '--enable-testable-imports[Enable or disable testable imports. Enabled by default.]' + '--disable-testable-imports[Enable or disable testable imports. Enabled by default.]' + '--enable-code-coverage[Enable code coverage]' + '--disable-code-coverage[Enable code coverage]' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret } -# Generates completions for swift package -# -# In the final compdef file, set the following file header: -# -# #compdef _swift_package -# local context state state_descr line -# typeset -A opt_args _swift_package() { - arguments=( - "-Xcc[Pass flag through to all C compiler invocations]:Pass flag through to all C compiler invocations: " - "-Xswiftc[Pass flag through to all Swift compiler invocations]:Pass flag through to all Swift compiler invocations: " - "-Xlinker[Pass flag through to all linker invocations]:Pass flag through to all linker invocations: " - "-Xcxx[Pass flag through to all C++ compiler invocations]:Pass flag through to all C++ compiler invocations: " - "(--configuration -c)"{--configuration,-c}"[Build with configuration (debug|release) ]: :{_values '' 'debug[build with DEBUG configuration]' 'release[build with RELEASE configuration]'}" - "--build-path[Specify build/cache directory ]:Specify build/cache directory :_files" - "(--chdir -C)"{--chdir,-C}"[]: :_files" - "--package-path[Change working directory before any other operation]:Change working directory before any other operation:_files" - "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}" - "--disable-prefetching[]" - "--skip-update[Skip updating dependencies from their remote during a resolution]" - "--disable-sandbox[Disable using the sandbox when executing subprocesses]" - "--disable-package-manifest-caching[Disable caching Package.swift manifests]" - "--version[]" - "--destination[]: :_files" - "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]" - "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]" - "--static-swift-stdlib[Link Swift stdlib statically]" - "--force-resolved-versions[]" - "--disable-automatic-resolution[Disable automatic resolution if Package.resolved file is out-of-date]" - "--enable-index-store[Enable indexing-while-building feature]" - "--disable-index-store[Disable indexing-while-building feature]" - "--enable-pubgrub-resolver[\[Experimental\] Enable the new Pubgrub dependency resolver]" - "--enable-parseable-module-interfaces[]" - "--trace-resolver[]" - "(--jobs -j)"{--jobs,-j}"[The number of jobs to spawn in parallel during the build process]:The number of jobs to spawn in parallel during the build process: " - "--enable-test-discovery[Enable test discovery on platforms without Objective-C runtime]" + integer ret=1 + local -a args + args+=( + '--package-path[Specify the package path to operate on (default current directory). This changes the working directory before any other operation]:package-path:_files -/' + '--cache-path[Specify the shared cache directory path]:cache-path:_files -/' + '--config-path[Specify the shared configuration directory path]:config-path:_files -/' + '--security-path[Specify the shared security directory path]:security-path:_files -/' + '--scratch-path[Specify a custom scratch directory path (default .build)]:scratch-path:_files -/' + '--enable-dependency-cache[Use a shared cache when fetching dependencies]' + '--disable-dependency-cache[Use a shared cache when fetching dependencies]' + '--enable-build-manifest-caching' + '--disable-build-manifest-caching' + '--manifest-cache[Caching mode of Package.swift manifests (shared: shared cache, local: package'"'"'s build directory, none: disabled]:manifest-cache:' + '(--verbose -v)'{--verbose,-v}'[Increase verbosity to include informational output]' + '(--very-verbose --vv)'{--very-verbose,--vv}'[Increase verbosity to include debug output]' + '--disable-sandbox[Disable using the sandbox when executing subprocesses]' + '--enable-netrc[Load credentials from a .netrc file]' + '--disable-netrc[Load credentials from a .netrc file]' + '--netrc-file[Specify the .netrc file path.]:netrc-file:_files' + '--enable-keychain[Search credentials in macOS keychain]' + '--disable-keychain[Search credentials in macOS keychain]' + '--resolver-fingerprint-checking:resolver-fingerprint-checking:' + '--enable-prefetching' + '--disable-prefetching' + '(--force-resolved-versions --disable-automatic-resolution --only-use-versions-from-resolved-file)'{--force-resolved-versions,--disable-automatic-resolution,--only-use-versions-from-resolved-file}'[Only use versions from the Package.resolved file and fail resolution if it is out-of-date]' + '--skip-update[Skip updating dependencies from their remote during a resolution]' + '--disable-scm-to-registry-transformation[disable source control to registry transformation]' + '--use-registry-identity-for-scm[look up source control dependencies in the registry and use their registry identity when possible to help deduplicate across the two origins]' + '--replace-scm-with-registry[look up source control dependencies in the registry and use the registry to retrieve them instead of source control when possible]' + '(--configuration -c)'{--configuration,-c}'[Build with configuration]:configuration:(debug release)' + '-Xcc[Pass flag through to all C compiler invocations]:Xcc:' + '-Xswiftc[Pass flag through to all Swift compiler invocations]:Xswiftc:' + '-Xlinker[Pass flag through to all linker invocations]:Xlinker:' + '-Xcxx[Pass flag through to all C++ compiler invocations]:Xcxx:' + '--triple:triple:' + '--sdk:sdk:_files -/' + '--toolchain:toolchain:_files -/' + '--sanitize[Turn on runtime checks for erroneous behavior, possible values: address, thread, undefined, scudo]:sanitize:' + '--auto-index-store[Enable or disable indexing-while-building feature]' + '--enable-index-store[Enable or disable indexing-while-building feature]' + '--disable-index-store[Enable or disable indexing-while-building feature]' + '--enable-parseable-module-interfaces' + '(--jobs -j)'{--jobs,-j}'[The number of jobs to spawn in parallel during the build process]:jobs:' + '--emit-swift-module-separately' + '--use-integrated-swift-driver' + '--experimental-explicit-module-build' + '--print-manifest-job-graph[Write the command graph for the build manifest as a graphviz file]' + '--build-system:build-system:(native xcode)' + '--enable-dead-strip[Disable/enable dead code stripping by the linker]' + '--disable-dead-strip[Disable/enable dead code stripping by the linker]' + '--static-swift-stdlib[Link Swift stdlib statically]' + '--no-static-swift-stdlib[Link Swift stdlib statically]' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' '(-): :->command' '(-)*:: :->arg' ) - _arguments $arguments && return + _arguments -w -s -S $args[@] && ret=0 case $state in (command) - local modes - modes=( - 'completion-tool:Completion tool (for shell completions)' - 'dump-package:Print parsed Package.swift as JSON' - 'describe:Describe the current package' + local subcommands + subcommands=( 'clean:Delete build artifacts' - 'show-dependencies:Print the resolved dependency graph' - 'init:Initialize a new package' - 'unedit:Remove a package from editable mode' - 'tools-version:Manipulate tools version of the current package' - 'fetch:' - 'resolve:Resolve package dependencies' + 'purge-cache:Purge the global repository cache.' 'reset:Reset the complete cache/build directory' - 'generate-xcodeproj:Generates an Xcode project' - 'edit:Put a package in editable mode' - 'config:Manipulate configuration of the package' 'update:Update package dependencies' + 'describe:Describe the current package' + 'init:Initialize a new package' + '_format:' + 'diagnose-api-breaking-changes:Diagnose API-breaking changes to Swift modules in a package' + 'experimental-api-diff:Deprecated - use `swift package diagnose-api-breaking-changes` instead' + 'dump-symbol-graph:Dump Symbol Graph' + 'dump-pif:' + 'dump-package:Print parsed Package.swift as JSON' + 'edit:Put a package in editable mode' + 'unedit:Remove a package from editable mode' + 'config:Manipulate configuration of the package' + 'resolve:Resolve package dependencies' + 'fetch:' + 'show-dependencies:Print the resolved dependency graph' + 'tools-version:Manipulate tools version of the current package' + 'generate-xcodeproj:Generates an Xcode project. This command will be deprecated soon.' + 'compute-checksum:Compute the checksum for a binary artifact.' + 'archive-source:Create a source archive for the package' + 'completion-tool:Completion tool (for shell completions)' + 'plugin:Invoke a command plugin or perform other actions on command plugins' + 'default-command:' ) - _describe "mode" modes + _describe "subcommand" subcommands ;; (arg) case ${words[1]} in - (completion-tool) - _swift_package_completion-tool - ;; - (dump-package) - _swift_package_dump-package - ;; - (describe) - _swift_package_describe - ;; (clean) _swift_package_clean ;; - (show-dependencies) - _swift_package_show-dependencies - ;; - (init) - _swift_package_init - ;; - (unedit) - _swift_package_unedit - ;; - (tools-version) - _swift_package_tools-version - ;; - (fetch) - _swift_package_fetch - ;; - (resolve) - _swift_package_resolve + (purge-cache) + _swift_package_purge-cache ;; (reset) _swift_package_reset ;; - (generate-xcodeproj) - _swift_package_generate-xcodeproj + (update) + _swift_package_update + ;; + (describe) + _swift_package_describe + ;; + (init) + _swift_package_init + ;; + (_format) + _swift_package__format + ;; + (diagnose-api-breaking-changes) + _swift_package_diagnose-api-breaking-changes + ;; + (experimental-api-diff) + _swift_package_experimental-api-diff + ;; + (dump-symbol-graph) + _swift_package_dump-symbol-graph + ;; + (dump-pif) + _swift_package_dump-pif + ;; + (dump-package) + _swift_package_dump-package ;; (edit) _swift_package_edit ;; + (unedit) + _swift_package_unedit + ;; (config) _swift_package_config ;; - (update) - _swift_package_update + (resolve) + _swift_package_resolve + ;; + (fetch) + _swift_package_fetch + ;; + (show-dependencies) + _swift_package_show-dependencies + ;; + (tools-version) + _swift_package_tools-version + ;; + (generate-xcodeproj) + _swift_package_generate-xcodeproj + ;; + (compute-checksum) + _swift_package_compute-checksum + ;; + (archive-source) + _swift_package_archive-source + ;; + (completion-tool) + _swift_package_completion-tool + ;; + (plugin) + _swift_package_plugin + ;; + (default-command) + _swift_package_default-command ;; esac ;; esac -} -_swift_package_completion-tool() { - arguments=( - ": :{_values '' 'generate-bash-script[generate Bash completion script]' 'generate-zsh-script[generate Bash completion script]' 'list-dependencies[list all dependencies' names]' 'list-executables[list all executables' names]'}" - ) - _arguments $arguments && return -} - -_swift_package_dump-package() { - arguments=( - ) - _arguments $arguments && return -} - -_swift_package_describe() { - arguments=( - "--type[json|text]: :{_values '' 'text[describe using text format]' 'json[describe using JSON format]'}" - ) - _arguments $arguments && return + return ret } _swift_package_clean() { - arguments=( + integer ret=1 + local -a args + args+=( + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' ) - _arguments $arguments && return + _arguments -w -s -S $args[@] && ret=0 + + return ret } -_swift_package_show-dependencies() { - arguments=( - "--format[text|dot|json|flatlist]: :{_values '' 'text[list dependencies using text format]' 'dot[list dependencies using dot format]' 'json[list dependencies using JSON format]'}" +_swift_package_purge-cache() { + integer ret=1 + local -a args + args+=( + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' ) - _arguments $arguments && return -} + _arguments -w -s -S $args[@] && ret=0 -_swift_package_init() { - arguments=( - "--type[empty|library|executable|system-module|manifest]: :{_values '' 'empty[generates an empty project]' 'library[generates project for a dynamic library]' 'executable[generates a project for a cli executable]' 'system-module[generates a project for a system module]'}" - "--name[Provide custom package name]:Provide custom package name: " - ) - _arguments $arguments && return -} - -_swift_package_unedit() { - arguments=( - ":The name of the package to unedit:_swift_dependency" - "--force[Unedit the package even if it has uncommitted and unpushed changes.]" - ) - _arguments $arguments && return -} - -_swift_package_tools-version() { - arguments=( - "--set[Set tools version of package to the given value]:Set tools version of package to the given value: " - "--set-current[Set tools version of package to the current tools version in use]" - ) - _arguments $arguments && return -} - -_swift_package_fetch() { - arguments=( - ) - _arguments $arguments && return -} - -_swift_package_resolve() { - arguments=( - ":The name of the package to resolve:_swift_dependency" - "--version[The version to resolve at]:The version to resolve at: " - "--branch[The branch to resolve at]:The branch to resolve at: " - "--revision[The revision to resolve at]:The revision to resolve at: " - ) - _arguments $arguments && return + return ret } _swift_package_reset() { - arguments=( + integer ret=1 + local -a args + args+=( + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' ) - _arguments $arguments && return + _arguments -w -s -S $args[@] && ret=0 + + return ret } -_swift_package_generate-xcodeproj() { - arguments=( - "--xcconfig-overrides[Path to xcconfig file]:Path to xcconfig file:_files" - "--enable-code-coverage[Enable code coverage in the generated project]" - "--output[Path where the Xcode project should be generated]:Path where the Xcode project should be generated:_files" - "--legacy-scheme-generator[Use the legacy scheme generator]" - "--watch[Watch for changes to the Package manifest to regenerate the Xcode project]" - "--skip-extra-files[Do not add file references for extra files to the generated Xcode project]" +_swift_package_update() { + integer ret=1 + local -a args + args+=( + '(--dry-run -n)'{--dry-run,-n}'[Display the list of dependencies that can be updated]' + ':packages:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' ) - _arguments $arguments && return + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_describe() { + integer ret=1 + local -a args + args+=( + '--type[json | text]:type:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_init() { + integer ret=1 + local -a args + args+=( + '--type[Package type: empty | library | executable | system-module | manifest]:type:' + '--name[Provide custom package name]:name:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package__format() { + integer ret=1 + local -a args + args+=( + ':swift-format-flags:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_diagnose-api-breaking-changes() { + integer ret=1 + local -a args + args+=( + '--breakage-allowlist-path[The path to a text file containing breaking changes which should be ignored by the API comparison. Each ignored breaking change in the file should appear on its own line and contain the exact message to be ignored (e.g. '"'"'API breakage: func foo() has been removed'"'"').]:breakage-allowlist-path:_files -/' + ':treeish:' + '--products[One or more products to include in the API comparison. If present, only the specified products (and any targets specified using `--targets`) will be compared.]:products:' + '--targets[One or more targets to include in the API comparison. If present, only the specified targets (and any products specified using `--products`) will be compared.]:targets:' + '--baseline-dir[The path to a directory used to store API baseline files. If unspecified, a temporary directory will be used.]:baseline-dir:_files -/' + '--regenerate-baseline[Regenerate the API baseline, even if an existing one is available.]' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_experimental-api-diff() { + integer ret=1 + local -a args + args+=( + ':args:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_dump-symbol-graph() { + integer ret=1 + local -a args + args+=( + '--pretty-print[Pretty-print the output JSON.]' + '--skip-synthesized-members[Skip members inherited through classes or default implementations.]' + '--minimum-access-level[Include symbols with this access level or more. Possible values: private | fileprivate | internal | public | open]:minimum-access-level:(private fileprivate internal public open)' + '--skip-inherited-docs[Skip emitting doc comments for members inherited through classes or default implementations.]' + '--include-spi-symbols[Add symbols with SPI information to the symbol graph.]' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_dump-pif() { + integer ret=1 + local -a args + args+=( + '--preserve-structure[Preserve the internal structure of PIF]' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_dump-package() { + integer ret=1 + local -a args + args+=( + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret } _swift_package_edit() { - arguments=( - ":The name of the package to edit:_swift_dependency" - "--revision[The revision to edit]:The revision to edit: " - "--branch[The branch to create]:The branch to create: " - "--path[Create or use the checkout at this path]:Create or use the checkout at this path:_files" + integer ret=1 + local -a args + args+=( + '--revision[The revision to edit]:revision:' + '--branch[The branch to create]:branch:' + '--path[Create or use the checkout at this path]:path:_files -/' + ':package-name:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' ) - _arguments $arguments && return + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_unedit() { + integer ret=1 + local -a args + args+=( + '--force[Unedit the package even if it has uncommitted and unpushed changes]' + ':package-name:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret } _swift_package_config() { - arguments=( + integer ret=1 + local -a args + args+=( + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' '(-): :->command' '(-)*:: :->arg' ) - _arguments $arguments && return + _arguments -w -s -S $args[@] && ret=0 case $state in (command) - local modes - modes=( + local subcommands + subcommands=( + 'set-mirror:Set a mirror for a dependency' 'unset-mirror:Remove an existing mirror' 'get-mirror:Print mirror configuration for the given package dependency' - 'set-mirror:Set a mirror for a dependency' ) - _describe "mode" modes + _describe "subcommand" subcommands ;; (arg) case ${words[1]} in + (set-mirror) + _swift_package_config_set-mirror + ;; (unset-mirror) _swift_package_config_unset-mirror ;; (get-mirror) _swift_package_config_get-mirror ;; - (set-mirror) - _swift_package_config_set-mirror - ;; esac ;; esac -} -_swift_package_config_unset-mirror() { - arguments=( - "--package-url[The package dependency url]:The package dependency url: " - "--mirror-url[The mirror url]:The mirror url: " - ) - _arguments $arguments && return -} - -_swift_package_config_get-mirror() { - arguments=( - "--package-url[The package dependency url]:The package dependency url: " - ) - _arguments $arguments && return + return ret } _swift_package_config_set-mirror() { - arguments=( - "--package-url[The package dependency url]:The package dependency url: " - "--mirror-url[The mirror url]:The mirror url: " + integer ret=1 + local -a args + args+=( + '--package-url[The package dependency url]:package-url:' + '--original-url[The original url]:original-url:' + '--mirror-url[The mirror url]:mirror-url:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' ) - _arguments $arguments && return + _arguments -w -s -S $args[@] && ret=0 + + return ret } -_swift_package_update() { - arguments=( +_swift_package_config_unset-mirror() { + integer ret=1 + local -a args + args+=( + '--package-url[The package dependency url]:package-url:' + '--original-url[The original url]:original-url:' + '--mirror-url[The mirror url]:mirror-url:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' ) - _arguments $arguments && return + _arguments -w -s -S $args[@] && ret=0 + + return ret } -# Generates completions for swift test -# -# In the final compdef file, set the following file header: -# -# #compdef _swift_test -# local context state state_descr line -# typeset -A opt_args -_swift_test() { - arguments=( - "-Xcc[Pass flag through to all C compiler invocations]:Pass flag through to all C compiler invocations: " - "-Xswiftc[Pass flag through to all Swift compiler invocations]:Pass flag through to all Swift compiler invocations: " - "-Xlinker[Pass flag through to all linker invocations]:Pass flag through to all linker invocations: " - "-Xcxx[Pass flag through to all C++ compiler invocations]:Pass flag through to all C++ compiler invocations: " - "(--configuration -c)"{--configuration,-c}"[Build with configuration (debug|release) ]: :{_values '' 'debug[build with DEBUG configuration]' 'release[build with RELEASE configuration]'}" - "--build-path[Specify build/cache directory ]:Specify build/cache directory :_files" - "(--chdir -C)"{--chdir,-C}"[]: :_files" - "--package-path[Change working directory before any other operation]:Change working directory before any other operation:_files" - "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}" - "--disable-prefetching[]" - "--skip-update[Skip updating dependencies from their remote during a resolution]" - "--disable-sandbox[Disable using the sandbox when executing subprocesses]" - "--disable-package-manifest-caching[Disable caching Package.swift manifests]" - "--version[]" - "--destination[]: :_files" - "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]" - "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]" - "--static-swift-stdlib[Link Swift stdlib statically]" - "--force-resolved-versions[]" - "--disable-automatic-resolution[Disable automatic resolution if Package.resolved file is out-of-date]" - "--enable-index-store[Enable indexing-while-building feature]" - "--disable-index-store[Disable indexing-while-building feature]" - "--enable-pubgrub-resolver[\[Experimental\] Enable the new Pubgrub dependency resolver]" - "--enable-parseable-module-interfaces[]" - "--trace-resolver[]" - "(--jobs -j)"{--jobs,-j}"[The number of jobs to spawn in parallel during the build process]:The number of jobs to spawn in parallel during the build process: " - "--enable-test-discovery[Enable test discovery on platforms without Objective-C runtime]" - "--skip-build[Skip building the test target]" - "(--list-tests -l)"{--list-tests,-l}"[Lists test methods in specifier format]" - "--generate-linuxmain[Generate LinuxMain.swift entries for the package]" - "--parallel[Run the tests in parallel.]" - "--num-workers[Number of tests to execute in parallel.]:Number of tests to execute in parallel.: " - "(--specifier -s)"{--specifier,-s}"[]: : " - "--xunit-output[]: :_files" - "--filter[Run test cases matching regular expression, Format: . or ./]:Run test cases matching regular expression, Format: . or ./: " - "--enable-code-coverage[Test with code coverage enabled]" +_swift_package_config_get-mirror() { + integer ret=1 + local -a args + args+=( + '--package-url[The package dependency url]:package-url:' + '--original-url[The original url]:original-url:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' ) - _arguments $arguments && return + _arguments -w -s -S $args[@] && ret=0 + + return ret } -_swift_compiler() { +_swift_package_resolve() { + integer ret=1 + local -a args + args+=( + '--version[The version to resolve at]:version:' + '--branch[The branch to resolve at]:branch:' + '--revision[The revision to resolve at]:revision:' + ':package-name:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_fetch() { + integer ret=1 + local -a args + args+=( + '--version[The version to resolve at]:version:' + '--branch[The branch to resolve at]:branch:' + '--revision[The revision to resolve at]:revision:' + ':package-name:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_show-dependencies() { + integer ret=1 + local -a args + args+=( + '--format[text | dot | json | flatlist]:format:' + '(--output-path -o)'{--output-path,-o}'[The absolute or relative path to output the resolved dependency graph.]:output-path:_files -/' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_tools-version() { + integer ret=1 + local -a args + args+=( + '--set-current[Set tools version of package to the current tools version in use]' + '--set[Set tools version of package to the given value]:set:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_generate-xcodeproj() { + integer ret=1 + local -a args + args+=( + '--xcconfig-overrides[Path to xcconfig file]:xcconfig-overrides:_files' + '--output[Path where the Xcode project should be generated]:output:_files -/' + '--legacy-scheme-generator[Use the legacy scheme generator]' + '--watch[Watch for changes to the Package manifest to regenerate the Xcode project]' + '--skip-extra-files[Do not add file references for extra files to the generated Xcode project]' + '--enable-code-coverage[Enable code coverage]' + '--disable-code-coverage[Enable code coverage]' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_compute-checksum() { + integer ret=1 + local -a args + args+=( + ':path:_files -/' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_archive-source() { + integer ret=1 + local -a args + args+=( + '(-o --output)'{-o,--output}'[The absolute or relative path for the generated source archive]:output:_files -/' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_completion-tool() { + integer ret=1 + local -a args + args+=( + ':mode:(generate-bash-script generate-zsh-script generate-fish-script list-dependencies list-executables list-snippets)' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_plugin() { + integer ret=1 + local -a args + args+=( + '--list[List the available command plugins]' + '--allow-writing-to-package-directory[Allow the plugin to write to the package directory]' + '--allow-writing-to-directory[Allow the plugin to write to an additional directory]:allow-writing-to-directory:' + ':command:' + ':arguments:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_package_default-command() { + integer ret=1 + local -a args + args+=( + '--allow-writing-to-package-directory[Allow the plugin to write to the package directory]' + '--allow-writing-to-directory[Allow the plugin to write to an additional directory]:allow-writing-to-directory:' + ':remaining:' + '--version[Show the version.]' + '(-help -h --help)'{-help,-h,--help}'[Show help information.]' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + +_swift_help() { + integer ret=1 + local -a args + args+=( + ':subcommands:' + ) + _arguments -w -s -S $args[@] && ret=0 + + return ret +} + + +_custom_completion() { + local completions=("${(@f)$($*)}") + _describe '' completions } _swift From b3b336b0f95644ceda7758871191cdf040b897b2 Mon Sep 17 00:00:00 2001 From: Andrew Wu Date: Fri, 4 Nov 2022 01:34:28 +0800 Subject: [PATCH 068/253] feat(fzf): fix MacPorts auto-completion file location. (#11305) --- plugins/fzf/fzf.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/fzf/fzf.plugin.zsh b/plugins/fzf/fzf.plugin.zsh index a946cf762..60ae0c765 100644 --- a/plugins/fzf/fzf.plugin.zsh +++ b/plugins/fzf/fzf.plugin.zsh @@ -178,7 +178,7 @@ function fzf_setup_using_macports() { (( $+commands[fzf] )) || return 1 # The fzf-zsh-completion package installs the auto-completion in - local completions="/opt/local/share/zsh/site-functions/fzf" + local completions="/opt/local/share/fzf/shell/completion.zsh" # The fzf-zsh-completion package installs the key-bindings file in local key_bindings="/opt/local/share/fzf/shell/key-bindings.zsh" From 1342459b153576429382aed34ee5753f85bf3420 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 4 Nov 2022 19:16:54 +0100 Subject: [PATCH 069/253] ci: fix update of plugin or theme fields See [1] for the reference of value field (ProjectV2FieldValue type), and [2] for sample application code. [1] https://docs.github.com/en/graphql/reference/input-objects#projectv2fieldvalue [2] https://docs.github.com/en/enterprise-cloud@latest/issues/planning-and-tracking-with-projects/automating-your-project/automating-projects-using-actions#example-workflow-authenticating-with-a-github-app --- .github/workflows/project.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index 1aa69c279..1d961d8c0 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -113,7 +113,9 @@ jobs: projectId: $project itemId: $item fieldId: $plugin_field - value: $plugin_value + value: { + text: $plugin_value + } }) { projectV2Item { id @@ -123,7 +125,9 @@ jobs: projectId: $project itemId: $item fieldId: $theme_field - value: $theme_value + value: { + text: $theme_value + } }) { projectV2Item { id From 9f2bbebdf78322ab11a4cc57e2932fcbf6fb3fa8 Mon Sep 17 00:00:00 2001 From: Frieder Bluemle Date: Fri, 4 Nov 2022 11:34:02 -0700 Subject: [PATCH 070/253] docs: fix some capitalization typos(#11293) --- plugins/coffee/_coffee | 2 +- plugins/docker-machine/_docker-machine | 4 ++-- plugins/frontend-search/_frontend | 2 +- plugins/httpie/_httpie | 2 +- plugins/kitchen/_kitchen | 2 +- plugins/pod/_pod | 2 +- plugins/rails/_rails | 2 +- plugins/ripgrep/_ripgrep | 2 +- plugins/scala/_scala | 2 +- plugins/xcode/xcode.plugin.zsh | 2 +- themes/refined.zsh-theme | 4 ++-- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/plugins/coffee/_coffee b/plugins/coffee/_coffee index e2814f7ba..a771f5204 100644 --- a/plugins/coffee/_coffee +++ b/plugins/coffee/_coffee @@ -1,6 +1,6 @@ #compdef coffee # ------------------------------------------------------------------------------ -# Copyright (c) 2011 Github zsh-users - https://github.com/zsh-users +# Copyright (c) 2011 GitHub zsh-users - https://github.com/zsh-users # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/plugins/docker-machine/_docker-machine b/plugins/docker-machine/_docker-machine index fbd36d7c6..17bcd3598 100644 --- a/plugins/docker-machine/_docker-machine +++ b/plugins/docker-machine/_docker-machine @@ -335,9 +335,9 @@ _docker-machine() { '--tls-ca-key[Private key to generate certificates]:file:_files' \ '--tls-client-cert[Client cert to use for TLS]:file:_files' \ '--tls-client-key[Private key used in client TLS auth]:file:_files' \ - '--github-api-token[Token to use for requests to the Github API]' \ + '--github-api-token[Token to use for requests to the GitHub API]' \ '--native-ssh[Use the native (Go-based) SSH implementation.]' \ - '--bugsnag-api-token[BugSnag API token for crash reporting]' \ + '--bugsnag-api-token[Bugsnag API token for crash reporting]' \ '(- :)'{-v,--version}'[Print the version]' \ "(-): :->command" \ "(-)*:: :->option-or-argument" && ret=0 diff --git a/plugins/frontend-search/_frontend b/plugins/frontend-search/_frontend index 15f8d239d..aca4920d7 100644 --- a/plugins/frontend-search/_frontend +++ b/plugins/frontend-search/_frontend @@ -37,7 +37,7 @@ function _frontend() { 'lodash: Search in Lo-Dash website' 'mdn: Search in MDN website' 'nodejs: Search in NodeJS website' - 'npmjs: Search in NPMJS website' + 'npmjs: Search in npmjs website' 'packagephobia: Search in Packagephobia website' 'qunit: Search in Qunit website' 'reactjs: Search in React website' diff --git a/plugins/httpie/_httpie b/plugins/httpie/_httpie index 4d702ef60..11bc8e1f8 100644 --- a/plugins/httpie/_httpie +++ b/plugins/httpie/_httpie @@ -1,6 +1,6 @@ #compdef http # ------------------------------------------------------------------------------ -# Copyright (c) 2015 Github zsh-users - http://github.com/zsh-users +# Copyright (c) 2015 GitHub zsh-users - http://github.com/zsh-users # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/plugins/kitchen/_kitchen b/plugins/kitchen/_kitchen index d93d93d78..64c01e395 100644 --- a/plugins/kitchen/_kitchen +++ b/plugins/kitchen/_kitchen @@ -1,6 +1,6 @@ #compdef kitchen # ------------------------------------------------------------------------------ -# Copyright (c) 2014 Github zsh-users - https://github.com/zsh-users +# Copyright (c) 2014 GitHub zsh-users - https://github.com/zsh-users # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/plugins/pod/_pod b/plugins/pod/_pod index 80d23daad..d560129db 100644 --- a/plugins/pod/_pod +++ b/plugins/pod/_pod @@ -6,7 +6,7 @@ # ----------------------------------------------------------------------------- # FILE: _pod -# DESCRIPTION: Cocoapods (0.33.1) autocomplete plugin for Oh-My-Zsh +# DESCRIPTION: CocoaPods (0.33.1) autocomplete plugin for Oh-My-Zsh # https://cocoapods.org # Generated with `pod --completion-script # AUTHOR: Alexandre Joly (alexandre.joly@mekanics.ch) diff --git a/plugins/rails/_rails b/plugins/rails/_rails index 6dc85d458..ac90d45cc 100644 --- a/plugins/rails/_rails +++ b/plugins/rails/_rails @@ -1,6 +1,6 @@ #compdef rails # ------------------------------------------------------------------------------ -# Copyright (c) 2016 Github zsh-users - http://github.com/zsh-users +# Copyright (c) 2016 GitHub zsh-users - http://github.com/zsh-users # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/plugins/ripgrep/_ripgrep b/plugins/ripgrep/_ripgrep index 31bc697c7..a93a8b8eb 100644 --- a/plugins/ripgrep/_ripgrep +++ b/plugins/ripgrep/_ripgrep @@ -591,7 +591,7 @@ _rg "$@" ################################################################################ # ------------------------------------------------------------------------------ -# Copyright (c) 2011 Github zsh-users - http://github.com/zsh-users +# Copyright (c) 2011 GitHub zsh-users - http://github.com/zsh-users # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/plugins/scala/_scala b/plugins/scala/_scala index ba7ac3874..b4e834e2f 100644 --- a/plugins/scala/_scala +++ b/plugins/scala/_scala @@ -1,6 +1,6 @@ #compdef scala scalac # ------------------------------------------------------------------------------ -# Copyright (c) 2012 Github zsh-users - https://github.com/zsh-users +# Copyright (c) 2012 GitHub zsh-users - https://github.com/zsh-users # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/plugins/xcode/xcode.plugin.zsh b/plugins/xcode/xcode.plugin.zsh index 3bd12cdec..5d1f901a3 100644 --- a/plugins/xcode/xcode.plugin.zsh +++ b/plugins/xcode/xcode.plugin.zsh @@ -31,7 +31,7 @@ function xx { open -a "Xcode.app" "$@" } -# "XCode-SELect by Version" - select Xcode by just version number +# "Xcode-Select by Version" - select Xcode by just version number # Uses naming convention: # - different versions of Xcode are named Xcode-.app or stored # in a folder named Xcode- diff --git a/themes/refined.zsh-theme b/themes/refined.zsh-theme index 5e2de7a87..2b55cfb0c 100644 --- a/themes/refined.zsh-theme +++ b/themes/refined.zsh-theme @@ -11,11 +11,11 @@ # more about both of these fantastic two people here: # # Sindre Sorhus -# Github: https://github.com/sindresorhus +# GitHub: https://github.com/sindresorhus # Twitter: https://twitter.com/sindresorhus # # Julien Nicoulaud -# Github: https://github.com/nicoulaj +# GitHub: https://github.com/nicoulaj # Twitter: https://twitter.com/nicoulaj # # ------------------------------------------------------------------------------ From 15014db8d58892488f6a270148279e053a472bfb Mon Sep 17 00:00:00 2001 From: Tanmay Patil <92677342+TanmayPatil105@users.noreply.github.com> Date: Sat, 5 Nov 2022 00:12:05 +0530 Subject: [PATCH 071/253] feat(web-search): add ask.com (#11292) --- plugins/web-search/README.md | 1 + plugins/web-search/web-search.plugin.zsh | 2 ++ 2 files changed, 3 insertions(+) diff --git a/plugins/web-search/README.md b/plugins/web-search/README.md index 54232a910..0bf9f26ad 100644 --- a/plugins/web-search/README.md +++ b/plugins/web-search/README.md @@ -43,6 +43,7 @@ Available search contexts are: | `wolframalpha` | `https://wolframalpha.com/input?i=` | | `archive` | `https://web.archive.org/web/*/` | | `scholar` | `https://scholar.google.com/scholar?q=` | +| `ask` | `https://www.ask.com/web?q=` | Also there are aliases for bang-searching DuckDuckGo: diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh index d8b4a7f8b..ec176dd68 100644 --- a/plugins/web-search/web-search.plugin.zsh +++ b/plugins/web-search/web-search.plugin.zsh @@ -24,6 +24,7 @@ function web_search() { wolframalpha "https://www.wolframalpha.com/input/?i=" archive "https://web.archive.org/web/*/" scholar "https://scholar.google.com/scholar?q=" + ask "https://www.ask.com/web?q=" ) # check whether the search engine is supported @@ -64,6 +65,7 @@ alias stackoverflow='web_search stackoverflow' alias wolframalpha='web_search wolframalpha' alias archive='web_search archive' alias scholar='web_search scholar' +alias ask='web_search ask' #add your own !bang searches here alias wiki='web_search duckduckgo \!w' From 80fdbc9b91a9acca42fb90065b5e64a9722978a7 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Fri, 4 Nov 2022 19:45:17 +0100 Subject: [PATCH 072/253] fix(git): remove unused escape chars Closes #11176 --- plugins/git/git.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index f25453bc1..5c0e6db2c 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -302,7 +302,7 @@ alias gtv='git tag | sort -V' alias gtl='gtl(){ git tag --sort=-v:refname -n -l "${1}*" }; noglob gtl' alias gunignore='git update-index --no-assume-unchanged' -alias gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1' +alias gunwip='git log -n 1 | grep -q -c "--wip--" && git reset HEAD~1' alias gup='git pull --rebase' alias gupv='git pull --rebase -v' alias gupa='git pull --rebase --autostash' From 3eda3e5650c72c5f71336fcc2c8dfa5b861acb6d Mon Sep 17 00:00:00 2001 From: Jeremy Combs Date: Sun, 6 Nov 2022 14:50:39 -0500 Subject: [PATCH 073/253] feat(encode64): add `encodefile64` function (#10813) Co-authored-by: Jeremy Combs --- plugins/encode64/README.md | 23 +++++++++++++++++++---- plugins/encode64/encode64.plugin.zsh | 10 ++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/plugins/encode64/README.md b/plugins/encode64/README.md index 86320cffb..7cdf8c3f3 100644 --- a/plugins/encode64/README.md +++ b/plugins/encode64/README.md @@ -10,10 +10,11 @@ plugins=(... encode64) ## Functions and Aliases -| Function | Alias | Description | -| ---------- | ----- | ------------------------------ | -| `encode64` | `e64` | Encodes given data to base64 | -| `decode64` | `d64` | Decodes given data from base64 | +| Function | Alias | Description | +| -------------- | ------ | -------------------------------------- | +| `encode64` | `e64` | Encodes given data to base64 | +| `encodefile64` | `ef64` | Encodes given file's content to base64 | +| `decode64` | `d64` | Decodes given data from base64 | ## Usage and examples @@ -37,6 +38,20 @@ plugins=(... encode64) b2gtbXktenNo== ``` +### Encoding a file + +Encode a file's contents to base64 and save output to text file. +**NOTE:** Takes provided file and saves encoded content as new file with `.txt` extension + +- From parameter + + ```console + $ encodefile64 ohmyzsh.icn + ohmyzsh.icn's content encoded in base64 and saved as ohmyzsh.icn.txt + $ ef64 "oh-my-zsh" + ohmyzsh.icn's content encoded in base64 and saved as ohmyzsh.icn.txt + ``` + ### Decoding - From parameter diff --git a/plugins/encode64/encode64.plugin.zsh b/plugins/encode64/encode64.plugin.zsh index 979e06742..6927f5216 100644 --- a/plugins/encode64/encode64.plugin.zsh +++ b/plugins/encode64/encode64.plugin.zsh @@ -6,6 +6,15 @@ encode64() { fi } +encodefile64() { + if [[ $# -eq 0 ]]; then + echo "You must provide a filename" + else + base64 -i $1 -o $1.txt + echo "${1}'s content encoded in base64 and saved as ${1}.txt" + fi +} + decode64() { if [[ $# -eq 0 ]]; then cat | base64 --decode @@ -14,4 +23,5 @@ decode64() { fi } alias e64=encode64 +alias ef64=encodefile64 alias d64=decode64 From 4806f755694d160f20e3fb8ae0a1d009d56d966b Mon Sep 17 00:00:00 2001 From: Atk Date: Sun, 6 Nov 2022 19:52:53 +0000 Subject: [PATCH 074/253] feat(wd): update to latest upstream release (#11235) Based on https://github.com/mfaerevaag/wd/releases/tag/v0.5.2 --- plugins/wd/README.md | 8 ++++++-- plugins/wd/wd.sh | 18 +++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/plugins/wd/README.md b/plugins/wd/README.md index 8791f9f0e..1d1980632 100644 --- a/plugins/wd/README.md +++ b/plugins/wd/README.md @@ -1,12 +1,12 @@ # wd -[![Build Status](https://travis-ci.org/mfaerevaag/wd.png?branch=master)](https://travis-ci.org/mfaerevaag/wd) +[![Build Status](https://github.com/mfaerevaag/wd/actions/workflows/test.yml/badge.svg)](https://github.com/mfaerevaag/wd/actions) `wd` (*warp directory*) lets you jump to custom directories in zsh, without using `cd`. Why? Because `cd` seems inefficient when the folder is frequently visited or has a long path. -![tty.gif](https://raw.githubusercontent.com/mfaerevaag/wd/master/tty.gif) +![Demo](https://raw.githubusercontent.com/mfaerevaag/wd/master/tty.gif) ## Setup @@ -36,6 +36,10 @@ In your `.zshrc`: antibody bundle mfaerevaag/wd ``` +### [Fig](https://fig.io) + +Install `wd` here: [![Fig plugin store](https://fig.io/badges/install-with-fig.svg)](https://fig.io/plugins/other/wd_mfaerevaag) + ### Arch ([AUR](https://aur.archlinux.org/packages/zsh-plugin-wd-git/)) 1. Install from the AUR diff --git a/plugins/wd/wd.sh b/plugins/wd/wd.sh index 9085c5b7b..e51cf906a 100644 --- a/plugins/wd/wd.sh +++ b/plugins/wd/wd.sh @@ -163,6 +163,7 @@ wd_add() { local point=$1 local force=$2 + cmdnames=(add rm show list ls path clean help) if [[ $point == "" ]] then @@ -178,6 +179,9 @@ wd_add() elif [[ $point =~ : ]] || [[ $point =~ / ]] then wd_exit_fail "Warp point contains illegal character (:/)" + elif (($cmdnames[(Ie)$point])) + then + wd_exit_fail "Warp point name cannot be a wd command (see wd -h for a full list)" elif [[ ${points[$point]} == "" ]] || [ ! -z "$force" ] then wd_remove "$point" > /dev/null @@ -185,7 +189,7 @@ wd_add() if (whence sort >/dev/null); then local config_tmp=$(mktemp "${TMPDIR:-/tmp}/wd.XXXXXXXXXX") # use 'cat' below to ensure we respect $WD_CONFIG as a symlink - command sort -o "${config_tmp}" "$WD_CONFIG" && command cat "${config_tmp}" > "$WD_CONFIG" && command rm "${config_tmp}" + command sort -o "${config_tmp}" "$WD_CONFIG" && command cat "${config_tmp}" >| "$WD_CONFIG" && command rm "${config_tmp}" fi wd_export_static_named_directories @@ -214,7 +218,7 @@ wd_remove() then local config_tmp=$(mktemp "${TMPDIR:-/tmp}/wd.XXXXXXXXXX") # Copy and delete in two steps in order to preserve symlinks - if sed -n "/^${point_name}:.*$/!p" "$WD_CONFIG" > "$config_tmp" && command cp "$config_tmp" "$WD_CONFIG" && command rm "$config_tmp" + if sed -n "/^${point_name}:.*$/!p" "$WD_CONFIG" >| "$config_tmp" && command cp "$config_tmp" "$WD_CONFIG" && command rm "$config_tmp" then wd_print_msg "$WD_GREEN" "Warp point removed" else @@ -251,7 +255,7 @@ wd_list_all() then arr=(${(s,:,)line}) key=${arr[1]} - val=${arr[2]} + val=${line#"${arr[1]}:"} if [[ -z $wd_quiet_mode ]] then @@ -389,6 +393,11 @@ else wd_export_static_named_directories fi +# disable extendedglob for the complete wd execution time +setopt | grep -q extendedglob +wd_extglob_is_set=$? +[[ $wd_extglob_is_set ]] && setopt noextendedglob + # load warp points typeset -A points while read -r line @@ -475,6 +484,9 @@ fi # if not, next time warp will pick up variables from this run # remember, there's no sub shell +[[ $wd_extglob_is_set ]] && setopt extendedglob + +unset wd_extglob_is_set unset wd_warp unset wd_add unset wd_remove From 4e2317c757674af8264bbcc4edd79b2d42f6d781 Mon Sep 17 00:00:00 2001 From: Julian <62412964+julianadler@users.noreply.github.com> Date: Mon, 7 Nov 2022 21:46:48 +1300 Subject: [PATCH 075/253] fix(lol): use https for `yolo` calls (#11320) --- plugins/lol/README.md | 4 ++-- plugins/lol/lol.plugin.zsh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/lol/README.md b/plugins/lol/README.md index ea6b0c3b8..b45513b35 100644 --- a/plugins/lol/README.md +++ b/plugins/lol/README.md @@ -49,7 +49,7 @@ plugins=(... lol) | `violenz` | `git rebase` | | `visible` | `echo` | | `wtf` | `dmesg` | -| `yolo` | `git commit -m "$(curl -s http://whatthecommit.com/index.txt)"` | +| `yolo` | `git commit -m "$(curl -s https://whatthecommit.com/index.txt)"` | ## Usage Examples @@ -66,6 +66,6 @@ nowai u=r,go= some.file # ssh root@catserver.org pwned root@catserver.org -# git commit -m "$(curl -s http://whatthecommit.com/index.txt)" +# git commit -m "$(curl -s https://whatthecommit.com/index.txt)" yolo ``` diff --git a/plugins/lol/lol.plugin.zsh b/plugins/lol/lol.plugin.zsh index 3c30259a1..585f96e4f 100644 --- a/plugins/lol/lol.plugin.zsh +++ b/plugins/lol/lol.plugin.zsh @@ -45,7 +45,7 @@ alias bringz='git pull' alias chicken='git add' alias oanward='git commit -m' alias ooanward='git commit -am' -alias yolo='git commit -m "$(curl -s http://whatthecommit.com/index.txt)"' +alias yolo='git commit -m "$(curl -s https://whatthecommit.com/index.txt)"' alias letcat='git checkout' alias violenz='git rebase' From ac0924930d48217e127523809dc5d386fb3403a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ho=C3=A0ng?= <10150902+hoang-himself@users.noreply.github.com> Date: Mon, 7 Nov 2022 15:47:59 +0700 Subject: [PATCH 076/253] feat(git): add aliases for `worktree` (#10079) --- plugins/git/README.md | 11 ++++++++--- plugins/git/git.plugin.zsh | 6 ++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/plugins/git/README.md b/plugins/git/README.md index 050c13d81..f1c8b81c4 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -91,8 +91,8 @@ plugins=(... git) | gignore | git update-index --assume-unchanged | | gignored | git ls-files -v \| grep "^[[:lower:]]" | | git-svn-dcommit-push | git svn dcommit && git push github $(git_main_branch):svntrunk | -| gk | gitk --all --branches &! | -| gke | gitk --all $(git log -g --pretty=%h) &! | +| gk | gitk --all --branches &! | +| gke | gitk --all $(git log -g --pretty=%h) &! | | gl | git pull | | glg | git log --stat | | glgp | git log --stat -p | @@ -184,7 +184,7 @@ plugins=(... git) | gupom | git pull --rebase origin $(git_main_branch) | | gupomi | git pull --rebase=interactive origin $(git_main_branch) | | glum | git pull upstream $(git_main_branch) | -| gluc | git pull upstream $(git_current_branch) | +| gluc | git pull upstream $(git_current_branch) | | gwch | git whatchanged -p --abbrev-commit --pretty=medium | | gwip | git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]" | | gam | git am | @@ -192,6 +192,11 @@ plugins=(... git) | gams | git am --skip | | gama | git am --abort | | gamscp | git am --show-current-patch | +| gwt | git worktree | +| gwta | git worktree add | +| gwtls | git worktree list | +| gwtmv | git worktree move | +| gwtrm | git worktree remove | ### Main branch preference diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 5c0e6db2c..fc7699237 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -315,6 +315,12 @@ alias gluc='git pull upstream $(git_current_branch)' alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]"' +alias gwt='git worktree' +alias gwta='git worktree add' +alias gwtls='git worktree list' +alias gwtmv='git worktree move' +alias gwtrm='git worktree remove' + alias gam='git am' alias gamc='git am --continue' alias gams='git am --skip' From 0145d744a9c4c11f00992f7f3ad9555bc8ac6177 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Mon, 7 Nov 2022 12:59:12 +0100 Subject: [PATCH 077/253] fix(git): escape first hyphen in `gunwip` --- plugins/git/git.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index fc7699237..26f4beeb3 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -302,7 +302,7 @@ alias gtv='git tag | sort -V' alias gtl='gtl(){ git tag --sort=-v:refname -n -l "${1}*" }; noglob gtl' alias gunignore='git update-index --no-assume-unchanged' -alias gunwip='git log -n 1 | grep -q -c "--wip--" && git reset HEAD~1' +alias gunwip='git log -n 1 | grep -q -c "\--wip--" && git reset HEAD~1' alias gup='git pull --rebase' alias gupv='git pull --rebase -v' alias gupa='git pull --rebase --autostash' From 6df14641ac48b380c56e1c72aa86b57861fbfb70 Mon Sep 17 00:00:00 2001 From: Gheritarish Date: Mon, 7 Nov 2022 19:53:36 +0100 Subject: [PATCH 078/253] feat(1password): add username copy to `opswd` (#10812) --- plugins/1password/README.md | 16 +++++++++------- plugins/1password/opswd | 18 +++++++++++++++--- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/plugins/1password/README.md b/plugins/1password/README.md index f6854da53..ace6da8e1 100644 --- a/plugins/1password/README.md +++ b/plugins/1password/README.md @@ -14,16 +14,18 @@ clipboard. ## `opswd` The `opswd` command is a wrapper around the `op` command. It takes a service -name as an argument and copies the password for that service to the clipboard. +name as an argument and copies the username, then the password for that service +to the clipboard, after confirmation on the user part. -If the service also contains a TOTP, it is copied to the clipboard after 10 seconds. -Finally, after 20 seconds, the clipboard is cleared. +If the service also contains a TOTP, it is copied to the clipboard after confirmation +on the user part. Finally, after 20 seconds, the clipboard is cleared. -The function has completion support, so you can use tab completion to select -which service you want to get. +For example, `opswd github.com` will put your GitHub username into your clipboard. Then, +it will ask for confirmation to continue, and copy the password to your clipboard. Finally, +if a TOTP is available, it will be copied to the clipboard after your confirmation. -For example, `opswd github.com` will put your GitHub password into your clipboard, and if -a TOTP is available, it will be copied to the clipboard after 10 seconds. +This function has completion support, so you can use tab completion to select which +service you want to get. > NOTE: you need to be signed in for `opswd` to work. If you are using biometric unlock, > 1Password CLI will automatically prompt you to sign in. See: diff --git a/plugins/1password/opswd b/plugins/1password/opswd index 57672807e..0f667d2ff 100644 --- a/plugins/1password/opswd +++ b/plugins/1password/opswd @@ -14,6 +14,17 @@ function opswd() { # If not logged in, print error and return op user list > /dev/null || return + local username + # Copy the username to the clipboard + if ! username=$(op item get "$service" --fields username 2>/dev/null); then + echo "error: could not obtain username for $service" + return 1 + fi + + echo -n "$username" | clipcopy + echo "✔ username for service $service copied to the clipboard. Press Enter to continue" + read + local password # Copy the password to the clipboard if ! password=$(op item get "$service" --fields password 2>/dev/null); then @@ -22,12 +33,13 @@ function opswd() { fi echo -n "$password" | clipcopy - echo "✔ password for $service copied to clipboard" + echo "✔ password for $service copied to clipboard. Press Enter to continue" + read - # If there's a one time password, copy it to the clipboard after 10 seconds + # If there's a one time password, copy it to the clipboard local totp if totp=$(op item get --otp "$service" 2>/dev/null) && [[ -n "$totp" ]]; then - sleep 10 && echo -n "$totp" | clipcopy + echo -n "$totp" | clipcopy echo "✔ TOTP for $service copied to clipboard" fi From 6dfc9b960f023f30d6c55a22fa8402d91beb8d1f Mon Sep 17 00:00:00 2001 From: Banst Date: Tue, 8 Nov 2022 09:34:13 +0100 Subject: [PATCH 079/253] feat(git): display tag in git-prompt when possible (#11318) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Marc Cornellà --- lib/git.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/git.zsh b/lib/git.zsh index be9fa7e67..f049f73c2 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -19,6 +19,7 @@ function git_prompt_info() { local ref ref=$(__git_prompt_git symbolic-ref --short HEAD 2> /dev/null) \ + || ref=$(__git_prompt_git describe --tags --exact-match HEAD 2> /dev/null) \ || ref=$(__git_prompt_git rev-parse --short HEAD 2> /dev/null) \ || return 0 From 1f30c1a079cd10030578e38f8562dc5be53d0fd3 Mon Sep 17 00:00:00 2001 From: Sandeep Tailor Date: Tue, 8 Nov 2022 13:45:42 +0000 Subject: [PATCH 080/253] feat(hasura): add completion plugin (#11278) --- plugins/hasura/README.md | 9 +++++++++ plugins/hasura/hasura.plugin.zsh | 13 +++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 plugins/hasura/README.md create mode 100644 plugins/hasura/hasura.plugin.zsh diff --git a/plugins/hasura/README.md b/plugins/hasura/README.md new file mode 100644 index 000000000..d7db9ed92 --- /dev/null +++ b/plugins/hasura/README.md @@ -0,0 +1,9 @@ +# Hasura plugin + +This plugin adds completion for [the Hasura CLI](https://hasura.io/docs/latest/hasura-cli/index/). + +To use it, add `hasura` to the plugins array in your zshrc file: + +```zsh +plugins=(... hasura) +``` diff --git a/plugins/hasura/hasura.plugin.zsh b/plugins/hasura/hasura.plugin.zsh new file mode 100644 index 000000000..18254c43b --- /dev/null +++ b/plugins/hasura/hasura.plugin.zsh @@ -0,0 +1,13 @@ +if (( ! $+commands[hasura] )); then + return +fi + +# If the completion file does not exist, generate it and then source it +# Otherwise, source it and regenerate in the background +if [[ ! -f "$ZSH_CACHE_DIR/completions/_hasura" ]]; then + hasura completion zsh --file "$ZSH_CACHE_DIR/completions/_hasura" >/dev/null + source "$ZSH_CACHE_DIR/completions/_hasura" +else + source "$ZSH_CACHE_DIR/completions/_hasura" + hasura completion zsh --file "$ZSH_CACHE_DIR/completions/_hasura" >/dev/null &| +fi From 9f77cb29d7557ec6ce453a7372b053931a7d034d Mon Sep 17 00:00:00 2001 From: Marco Franssen Date: Fri, 15 Apr 2022 20:43:43 +0200 Subject: [PATCH 081/253] feat(sigstore): add completion plugin Closes #10862 Signed-off-by: Marco Franssen Co-authored-by: Carlo Sala --- plugins/sigstore/README.md | 13 +++++++++++++ plugins/sigstore/sigstore.plugin.zsh | 22 ++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 plugins/sigstore/README.md create mode 100644 plugins/sigstore/sigstore.plugin.zsh diff --git a/plugins/sigstore/README.md b/plugins/sigstore/README.md new file mode 100644 index 000000000..00e83c8c2 --- /dev/null +++ b/plugins/sigstore/README.md @@ -0,0 +1,13 @@ +# Sigstore plugin + +This plugin sets up completion for the following [Sigstore](https://sigstore.dev/) CLI tools. + +- [Cosign](https://docs.sigstore.dev/cosign/overview) +- [Sget](https://docs.sigstore.dev/cosign/installation#alpine-linux) +- [Rekor](https://docs.sigstore.dev/rekor/overview) + +To use it, add `sigstore` to the plugins array in your zshrc file: + +```zsh +plugins=(... sigstore) +``` diff --git a/plugins/sigstore/sigstore.plugin.zsh b/plugins/sigstore/sigstore.plugin.zsh new file mode 100644 index 000000000..1f9d77c11 --- /dev/null +++ b/plugins/sigstore/sigstore.plugin.zsh @@ -0,0 +1,22 @@ +function install_autocompletion { + if (( ! $+commands[$1] )); then + return + fi + + # If the completion file doesn't exist yet, we need to autoload it and + # bind it to `$1` (cosign, sget, rekor-cli). Otherwise, compinit will + # have already done that + if [[ ! -f "$ZSH_CACHE_DIR/completions/_$1" ]]; then + autoload -Uz _$1 + typeset -g -A _comps + _comps[$1]=_$1 + fi + + $1 completion zsh >| "$ZSH_CACHE_DIR/completions/_$1" &| +} + +install_autocompletion cosign +install_autocompletion sget +install_autocompletion rekor-cli + +unfunction install_autocompletion From 23de5d95285a6b119d7c99f777051d9c5ec69ef8 Mon Sep 17 00:00:00 2001 From: cxy004 Date: Thu, 10 Nov 2022 06:04:55 +0800 Subject: [PATCH 082/253] fix(colorize): check if $ZSH_COLORIZE_TOOL exists (#11325) --- plugins/colorize/colorize.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/colorize/colorize.plugin.zsh b/plugins/colorize/colorize.plugin.zsh index a9da6cf83..12841e0ee 100644 --- a/plugins/colorize/colorize.plugin.zsh +++ b/plugins/colorize/colorize.plugin.zsh @@ -23,7 +23,7 @@ colorize_check_requirements() { if [[ ${available_tools[(Ie)$ZSH_COLORIZE_TOOL]} -eq 0 ]]; then echo "ZSH_COLORIZE_TOOL '$ZSH_COLORIZE_TOOL' not recognized. Available options are 'pygmentize' and 'chroma'." >&2 return 1 - elif (( $+commands["$ZSH_COLORIZE_TOOL"] )); then + elif ! (( $+commands[$ZSH_COLORIZE_TOOL] )); then echo "Package '$ZSH_COLORIZE_TOOL' is not installed!" >&2 return 1 fi From fcbfdf42de702d55174fe2b19142ba232289671e Mon Sep 17 00:00:00 2001 From: Marcos Alano Date: Thu, 10 Nov 2022 18:36:51 +0100 Subject: [PATCH 083/253] feat(terraform): load completion from bash Closes #11328 Closes #11330 --- plugins/terraform/_terraform | 411 ------------------------- plugins/terraform/terraform.plugin.zsh | 5 + 2 files changed, 5 insertions(+), 411 deletions(-) delete mode 100644 plugins/terraform/_terraform diff --git a/plugins/terraform/_terraform b/plugins/terraform/_terraform deleted file mode 100644 index 625834563..000000000 --- a/plugins/terraform/_terraform +++ /dev/null @@ -1,411 +0,0 @@ -#compdef terraform - -local -a _terraform_cmds opt_args -_terraform_cmds=( - 'apply:Builds or changes infrastructure' - 'console:Interactive console for Terraform interpolations' - 'destroy:Destroy Terraform-managed infrastructure' - 'fmt:Rewrites config files to canonical format' - 'force-unlock:Manually unlock the terraform state' - 'get:Download and install modules for the configuration' - 'graph:Create a visual graph of Terraform resources' - 'import:Import existing infrastructure into Terraform' - 'init:Initialize a Terraform working directory' - 'login:Obtain and save credentials for a remote host' - 'logout:Remove locally-stored credentials for a remote host' - 'output:Read an output from a state file' - 'plan:Generate and show an execution plan' - 'providers:Prints a tree of the providers used in the configuration' - 'refresh:Update local state file against real resources' - 'show:Inspect Terraform state or plan' - 'state:Advanced state management' - 'taint:Manually mark a resource for recreation' - 'untaint:Manually unmark a resource as tainted' - 'validate:Validates the Terraform files' - 'version:Prints the Terraform version' - 'workspace:Workspace management' - '0.12upgrade:Rewrites pre-0.12 module source code for v0.12' - '0.13upgrade:Rewrites pre-0.13 module source code for v0.13' -) - -__012upgrade() { - _arguments \ - '-yes[Skip the initial introduction messages and interactive confirmation. This can be used to run this command in batch from a script.]' \ - '-force[ Override the heuristic that attempts to detect if a configuration is already written for v0.12 or later. Some of the transformations made by this command are not idempotent, so re-running against the same module may change the meanings expressions in the module.]' -} - -__013upgrade() { - _arguments \ - '-yes[Skip the initial introduction messages and interactive confirmation. This can be used to run this command in batch from a script.]' -} - -__apply() { - _arguments \ - '-auto-approve[Skip interactive approval of plan before applying.]' \ - '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \ - '-compact-warnings[If Terraform produces any warnings that are not accompanied by errors, show them in a more compact form that includes only the summary messages.]' \ - '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ - '-lock-timeout=[(0s) Duration to retry a state lock.]' \ - '-input=[(true) Ask for input for variables if not directly set.]' \ - '-no-color[If specified, output will be colorless.]' \ - '-parallelism=[(10) Limit the number of parallel resource operations.]' \ - '-refresh=[(true) Update state prior to checking for differences. This has no effect if a plan file is given to apply.]' \ - '-state=[(terraform.tfstate) Path to read and save state (unless state-out is specified).]:statefile:_files -g "*.tfstate"' \ - '-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]:statefile:_files -g "*.tfstate"' \ - '*-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \ - '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ - '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' -} - -__console() { - _arguments \ - '-state=[(terraform.tfstate) Path to read state.]' \ - '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ - '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' -} - -__destroy() { - _arguments \ - '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \ - '-auto-approve[Skip interactive approval before destroying.]' \ - '-force[Deprecated: same as auto-approve.]' \ - '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ - '-lock-timeout=[(0s) Duration to retry a state lock.]' \ - '-no-color[If specified, output will contain no color.]' \ - '-parallelism=[(10) Limit the number of concurrent operations.]' \ - '-refresh=[(true) Update state prior to checking for differences. This has no effect if a plan file is given to apply.]' \ - '-state=[(terraform.tfstate) Path to read and save state (unless state-out is specified).]:statefile:_files -g "*.tfstate"' \ - '-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]:statefile:_files -g "*.tfstate"' \ - '*-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \ - '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ - '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' -} - -__fmt() { - _arguments \ - '-list=[(true) List files whose formatting differs (always false if using STDIN)]' \ - '-write=[(true) Write result to source file instead of STDOUT (always false if using STDIN or -check)]' \ - '-diff=[(false) Display diffs of formatting changes]' \ - '-check=[(false) Check if the input is formatted. Exit status will be 0 if all input is properly formatted and non-zero otherwise.]' \ - '-recursive=[(false) Also process files in subdirectories. By default, only the given directory (or current directory) is processed.]' -} - -__force_unlock() { - _arguments \ - "-force[Don't ask for input for unlock confirmation.]" -} - -__get() { - _arguments \ - '-update=[(false) If true, modules already downloaded will be checked for updates and updated if necessary.]' \ - '-no-color[Disable text coloring in the output.]' -} - -__graph() { - _arguments \ - '-draw-cycles[Highlight any cycles in the graph with colored edges. This helps when diagnosing cycle errors.]' \ - '-type=[(plan) Type of graph to output. Can be: plan, plan-destroy, apply, validate, input, refresh.]' -} - -__import() { - _arguments \ - '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \ - '-config=[(path) Path to a directory of Terraform configuration files to use to configure the provider. Defaults to pwd. If no config files are present, they must be provided via the input prompts or env vars.]' \ - '-allow-missing-config[Allow import when no resource configuration block exists.]' \ - '-input=[(true) Ask for input for variables if not directly set.]' \ - '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ - '-lock-timeout=[(0s) Duration to retry a state lock.]' \ - '-no-color[If specified, output will contain no color.]' \ - '-state=[(PATH) Path to the source state file. Defaults to the configured backend, or "terraform.tfstate"]:statefile:_files -g "*.tfstate"' \ - '-state-out=[(PATH) Path to the destination state file to write to. If this is not specified, the source state file will be used. This can be a new or existing path.]:statefile:_files -g "*.tfstate"' \ - '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times. This is only useful with the "-config" flag.]' \ - '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' -} - -__init() { - _arguments \ - '-backend=[(true) Configure the backend for this configuration.]' \ - '-backend-config=[This can be either a path to an HCL file with key/value assignments (same format as terraform.tfvars) or a 'key=value' format. This is merged with what is in the configuration file. This can be specified multiple times. The backend type must be in the configuration itself.]' \ - '-force-copy[Suppress prompts about copying state data. This is equivalent to providing a "yes" to all confirmation prompts.]' \ - '-from-module=[(SOURCE) Copy the contents of the given module into the target directory before initialization.]' \ - '-get=[(true) Download any modules for this configuration.]' \ - '-get-plugins=[(true) Download any missing plugins for this configuration.]' \ - '-input=[(true) Ask for input if necessary. If false, will error if input was required.]' \ - '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ - '-lock-timeout=[(0s) Duration to retry a state lock.]' \ - '-no-color[If specified, output will contain no color.]' \ - '-plugin-dir[Directory containing plugin binaries. This overrides all default search paths for plugins, and prevents the automatic installation of plugins. This flag can be used multiple times.]:plugin_dir:_files -/' \ - '-reconfigure[Reconfigure the backend, ignoring any saved configuration.]' \ - '-upgrade=[(false) If installing modules (-get) or plugins (-get-plugins), ignore previously-downloaded objects and install the latest version allowed within configured constraints.]' \ - '-verify-plugins=[(true) Verify the authenticity and integrity of automatically downloaded plugins.]' -} - -__login() { - _arguments \ - -} - -__logout() { - _arguments \ - -} - -__output() { - _arguments \ - '-state=[(path) Path to the state file to read. Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \ - '-no-color[If specified, output will contain no color.]' \ - '-json[If specified, machine readable output will be printed in JSON format]' -} - -__plan() { - _arguments \ - '-compact-warnings[If Terraform produces any warnings that are not accompanied by errors, show them in a more compact form that includes only the summary messages.]' \ - '-destroy[If set, a plan will be generated to destroy all resources managed by the given configuration and state.]' \ - '-detailed-exitcode[() Return detailed exit codes when the command exits. This will change the meaning of exit codes to: 0 - Succeeded, diff is empty (no changes); 1 - Errored, 2 - Succeeded; there is a diff]' \ - '-input=[(true) Ask for input for variables if not directly set.]' \ - '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ - '-lock-timeout=[(0s) Duration to retry a state lock.]' \ - '-no-color[() If specified, output will contain no color.]' \ - '-out=[(path) Write a plan file to the given path. This can be used as input to the "apply" command.]' \ - '-parallelism=[(10) Limit the number of concurrent operations.]' \ - '-refresh=[(true) Update state prior to checking for differences.]' \ - '-state=[(statefile) Path to a Terraform state file to use to look up Terraform-managed resources. By default it will use the state "terraform.tfstate" if it exists.]:statefile:_files -g "*.tfstate"' \ - '*-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \ - '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ - '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' -} - -__providers() { - local -a __providers_cmds - __providers_cmds=( - 'mirror:Mirrors the provider plugins needed for the current configuration' - 'schema:Prints the schemas of the providers used in the configuration' - ) - _describe -t providers "providers commands" __providers_cmds - -} - -__providers_mirror() { - _arguments \ - '-platform=[(os_arch) Choose which target platform to build a mirror for.]' \ - "*:target_dir:_files -/" -} - -__providers_schema() { - _arguments \ - '-json[]' \ - '::' -} - -__refresh() { - _arguments \ - '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]::backupfile:_files -g "*.backup"' \ - '-compact-warnings[If Terraform produces any warnings that are not accompanied by errors, show them in a more compact form that includes only the summary messages.]' \ - '-input=[(true) Ask for input for variables if not directly set.]' \ - '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ - '-lock-timeout=[(0s) Duration to retry a state lock.]' \ - '-no-color[If specified, output will not contain any color.]' \ - '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \ - '-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]:statefile:_files -g "*.tfstate"' \ - '*-target=[(resource) A Resource Address to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \ - '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ - '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' -} - -__show() { - _arguments \ - '-json[If specified, output the Terraform plan or state in a machine-readable form.]' \ - '-no-color[If specified, output will not contain any color.]' -} - -__state() { - local -a __state_cmds - __state_cmds=( - 'list:List resources in the state' - 'mv:Move an item in the state' - 'pull:Pull current state and output to stdout' - 'push:Update remote state from a local state file' - 'replace-provider:Replace provider for resources in the Terraform state' - 'rm:Remove instances from the state' - 'show:Show a resource in the state' - ) - _describe -t state "state commands" __state_cmds -} - -__state_list() { - _arguments \ - '-state=[(statefile) Path to a Terraform state file to use to look up Terraform-managed resources. By default, Terraform will consult the state of the currently-selected workspace.]' \ - '-id=[(id) Filters the results to include only instances whose resource types have an attribute named id whose value equals the given id string.]' \ - "*:address:__statelist" -} - -__state_mv() { - _arguments \ - "-dry-run[If set, prints out what would've been moved but doesn't actually move anything.]" \ - '-backup=[(PATH) Path where Terraform should write the backup for the original state. This can"t be disabled. If not set, Terraform will write it to the same path as the statefile with a ".backup" extension.]:backupfile:_files -g "*.backup"' \ - '-backup-out=[(PATH) Path where Terraform should write the backup for the destination state. This can"t be disabled. If not set, Terraform will write it to the same path as the destination state file with a backup extension. This only needs to be specified if -state-out is set to a different path than -state.]:backupfile:_files -g "*.backup"' \ - "-lock=[(true) Lock the state files when locking is supported.]:lock:(true false)" \ - "-lock-timeout=[(0s) Duration to retry a state lock.]" \ - '-state=[(path) Path to the source state file. Defaults to the configured backend, or "terraform.tfstate"]:statefile:_files -g "*.tfstate"' \ - '-state-out=[(path) Path to the destination state file to write to. If this isn"t specified, the source state file will be used. This can be a new or existing path.]:statefile:_files -g "*.tfstate"' \ - "::" \ - ":source:__statelist" \ - ":destination: " -} - -__state_push() { - _arguments \ - "-force[Write the state even if lineages don't match or the remote serial is higher.]" \ - '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ - "-lock-timeout=[(0s) Duration to retry a state lock.]" \ - "::" \ - ":destination:_files" -} - -__state_replace_provider() { - _arguments \ - '-auto-approve[Skip interactive approval.]' \ - '-backup=[(PATH) Path where Terraform should write the backup for the state file. This can"t be disabled. If not set, Terraform will write it to the same path as the state file with a ".backup" extension.]:backupfile:_files -g "*.backup"' \ - "-lock=[(true) Lock the state files when locking is supported.]:lock:(true false)" \ - "-lock-timeout=[(0s) Duration to retry a state lock.]" \ - '-state=[(PATH) Path to the source state file. Defaults to the configured backend, or "terraform.tfstate"]:statefile:_files -g "*.tfstate"' \ - ":from_provider_fqn:" \ - ":to_provider_fqn:" -} - -__state_rm() { - _arguments \ - "-dry-run[If set, prints out what would've been removed but doesn't actually remove anything.]" \ - '-backup=[(PATH) Path where Terraform should write the backup for the original state.]::backupfile:_files -g "*.backup"' \ - "-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)" \ - "-lock-timeout=[(0s) Duration to retry a state lock.]" \ - '-state=[(PATH) Path to the state file to update. Defaults to the current workspace state.]:statefile:_files -g "*.tfstate"' \ - "*:address:__statelist" -} - - -__state_show() { - _arguments \ - '-state=[(statefile) Path to a Terraform state file to use to look up Terraform-managed resources. By default it will use the state "terraform.tfstate" if it exists.]:statefile:_files -g "*.tfstate"' \ - "*:address:__statelist" -} - -__statelist() { - compadd $(terraform state list $opt_args[-state]) -} - -__taint() { - _arguments \ - '-allow-missing[If specified, the command will succeed (exit code 0) even if the resource is missing.]' \ - '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \ - '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ - '-lock-timeout=[(0s) Duration to retry a state lock.]' \ - '-module=[(path) The module path where the resource lives. By default this will be root. Child modules can be specified by names. Ex. "consul" or "consul.vpc" (nested modules).]' \ - '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \ - '-state-out=[(path) Path to write updated state file. By default, the "-state" path will be used.]:statefile:_files -g "*.tfstate"' \ - "*:address:__statelist" -} - -__untaint() { - _arguments \ - '-allow-missing[If specified, the command will succeed (exit code 0) even if the resource is missing.]' \ - '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \ - '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ - '-lock-timeout=[(0s) Duration to retry a state lock.]' \ - '-module=[(path) The module path where the resource lives. By default this will be root. Child modules can be specified by names. Ex. "consul" or "consul.vpc" (nested modules).]' \ - '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \ - '-state-out=[(path) Path to write updated state file. By default, the "-state" path will be used.]:statefile:_files -g "*.tfstate"' -} - -__validate() { - _arguments \ - '-no-color[If specified, output will not contain any color.]' \ - '-json[Produce output in a machine-readable JSON format, suitable for use in text editor integrations and other automated systems.]' \ - ':dir:_files -/' -} - -__version() { - _arguments \ - '-json[Output the version information as a JSON object.]' -} - -__workspace() { - local -a __workspace_cmds - __workspace_cmds=( - 'delete:Delete a workspace' - 'list:List Workspaces' - 'new:Create a new workspace' - 'select:Select a workspace' - 'show:Show the name of the current workspace' - ) - _describe -t workspace "workspace commands" __workspace_cmds -} - -_arguments '*:: :->command' - -if (( CURRENT == 1 )); then - _describe -t commands "terraform command" _terraform_cmds - return -fi - -local -a _command_args -case "$words[1]" in - 0.12upgrade) - __012upgrade ;; - 0.13upgrade) - __013upgrade ;; - apply) - __apply ;; - console) - __console;; - destroy) - __destroy ;; - fmt) - __fmt;; - force-unlock) - __force_unlock;; - get) - __get ;; - graph) - __graph ;; - import) - __import;; - init) - __init ;; - login) - __login ;; - logout) - __logout ;; - output) - __output ;; - plan) - __plan ;; - providers) - test $CURRENT -lt 3 && __providers - [[ $words[2] = "mirror" ]] && __providers_mirror - [[ $words[2] = "schema" ]] && __providers_schema - ;; - refresh) - __refresh ;; - show) - __show ;; - state) - test $CURRENT -lt 3 && __state - [[ $words[2] = "list" ]] && __state_list - [[ $words[2] = "mv" ]] && __state_mv - [[ $words[2] = "push" ]] && __state_push - [[ $words[2] = "replace-provider" ]] && __state_replace_provider - [[ $words[2] = "rm" ]] && __state_rm - [[ $words[2] = "show" ]] && __state_show - ;; - taint) - __taint ;; - untaint) - __untaint ;; - validate) - __validate ;; - version) - __version ;; - workspace) - test $CURRENT -lt 3 && __workspace ;; -esac diff --git a/plugins/terraform/terraform.plugin.zsh b/plugins/terraform/terraform.plugin.zsh index d9e39e6ac..eaa1e2e81 100644 --- a/plugins/terraform/terraform.plugin.zsh +++ b/plugins/terraform/terraform.plugin.zsh @@ -16,3 +16,8 @@ alias tfi='terraform init' alias tfo='terraform output' alias tfp='terraform plan' alias tfv='terraform validate' + +if (( $+commands[terraform] )); then + autoload -U +X bashcompinit && bashcompinit + complete -o nospace -C terraform terraform +fi From 5bfdd0356b46dc711a8f0866eeb9b717c033d5b2 Mon Sep 17 00:00:00 2001 From: Haltarys <45515869+Haltarys@users.noreply.github.com> Date: Fri, 11 Nov 2022 09:49:41 +0100 Subject: [PATCH 084/253] fix(ubuntu)!: rename `acs` alias to `acse (#11334) BREAKING CHANGE: `acs` alias, present in both `ubuntu` and `debian` plugins conflicts with `acs` function in aliases plugin. Change it to prevent ghosting of one of them. --- plugins/debian/README.md | 2 +- plugins/debian/debian.plugin.zsh | 4 ++-- plugins/ubuntu/README.md | 2 +- plugins/ubuntu/ubuntu.plugin.zsh | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/debian/README.md b/plugins/debian/README.md index 1db534f13..c1ebe1c50 100644 --- a/plugins/debian/README.md +++ b/plugins/debian/README.md @@ -21,7 +21,7 @@ Set `$apt_pref` and `$apt_upgr` to whatever command you want (before sourcing Oh | ------ | ---------------------------------------------------------------------- | ---------------------------------------------------------- | | `age` | `apt-get` | Command line tool for handling packages | | `api` | `aptitude` | Same functionality as `apt-get`, provides extra options | -| `acs` | `apt-cache search` | Command line tool for searching apt software package cache | +| `acse` | `apt-cache search` | Command line tool for searching apt software package cache | | `aps` | `aptitude search` | Searches installed packages using aptitude | | `as` | `aptitude -F '* %p -> %d \n(%v/%V)' --no-gui --disable-columns search` | Print searched packages using a custom format | | `afs` | `apt-file search --regexp` | Search file in packages | diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh index 2d8c4666e..bab1ae1c6 100644 --- a/plugins/debian/debian.plugin.zsh +++ b/plugins/debian/debian.plugin.zsh @@ -26,7 +26,7 @@ alias age='apt-get' alias api='aptitude' # Some self-explanatory aliases -alias acs="apt-cache search" +alias acse="apt-cache search" alias aps='aptitude search' alias as="aptitude -F '* %p -> %d \n(%v/%V)' --no-gui --disable-columns search" @@ -51,7 +51,7 @@ if [[ $use_sudo -eq 1 ]]; then alias au="sudo $apt_pref $apt_upgr" alias ai="sudo $apt_pref install" # Install all packages given on the command line while using only the first word of each line: - # acs ... | ail + # acse ... | ail alias ail="sed -e 's/ */ /g' -e 's/ *//' | cut -s -d ' ' -f 1 | xargs sudo $apt_pref install" alias ap="sudo $apt_pref purge" diff --git a/plugins/ubuntu/README.md b/plugins/ubuntu/README.md index 20f5c65ee..2401c102b 100644 --- a/plugins/ubuntu/README.md +++ b/plugins/ubuntu/README.md @@ -15,7 +15,7 @@ Commands that use `$APT` will use `apt` if installed or defer to `apt-get` other | Alias | Command | Description | |---------|--------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------| | age | `sudo $APT` | Run apt-get with sudo | -| acs | `apt-cache search` | Search the apt-cache with the specified criteria | +| acse | `apt-cache search` | Search the apt-cache with the specified criteria | | acsp | `apt-cache showpkg` | Shows information about the listed packages | | acp | `apt-cache policy` | Display the package source priorities | | afs | `apt-file search --regexp` | Perform a regular expression apt-file search | diff --git a/plugins/ubuntu/ubuntu.plugin.zsh b/plugins/ubuntu/ubuntu.plugin.zsh index 7b765a406..4d35da2ac 100644 --- a/plugins/ubuntu/ubuntu.plugin.zsh +++ b/plugins/ubuntu/ubuntu.plugin.zsh @@ -1,6 +1,6 @@ (( $+commands[apt] )) && APT=apt || APT=apt-get -alias acs='apt-cache search' +alias acse='apt-cache search' alias afs='apt-file search --regexp' From 5b2d0a3f06a743cf9d33783276f29ea683db81c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 14 Oct 2022 18:07:18 +0200 Subject: [PATCH 085/253] perf(bgnotify): cache terminal app ID computation Fixes #10971 --- plugins/bgnotify/bgnotify.plugin.zsh | 30 +++++++++++++--------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/plugins/bgnotify/bgnotify.plugin.zsh b/plugins/bgnotify/bgnotify.plugin.zsh index 479796dbe..9c4a62cd7 100644 --- a/plugins/bgnotify/bgnotify.plugin.zsh +++ b/plugins/bgnotify/bgnotify.plugin.zsh @@ -20,25 +20,25 @@ if ! (type bgnotify_formatted | grep -q 'function'); then ## allow custom functi } fi -currentAppId () { - if (( $+commands[osascript] )); then - osascript -e 'tell application (path to frontmost application as text) to id' 2>/dev/null +} + +function currentAppId { + if (( ${+commands[osascript]} )); then + # output: com.googlecode.iterm2, 116 + osascript -e 'tell application (path to frontmost application as text) to get the {id, id of front window}' 2>/dev/null + elif (( ${+commands[notify-send]} || ${+commands[kdialog]} )); then + xprop -root 2> /dev/null | awk '/NET_ACTIVE_WINDOW/{print $5;exit} END{exit !$5}' || echo "0" + else + echo $EPOCHSECONDS fi } -currentWindowId () { - if hash osascript 2>/dev/null; then #osx - osascript -e 'tell application (path to frontmost application as text) to id of front window' 2&> /dev/null || echo "0" - elif (hash notify-send 2>/dev/null || hash kdialog 2>/dev/null); then #ubuntu! - xprop -root 2> /dev/null | awk '/NET_ACTIVE_WINDOW/{print $5;exit} END{exit !$5}' || echo "0" - else - echo $EPOCHSECONDS #fallback for windows - fi -} +# currentAppId is expensive (more on macOS!) and it will remain the same until the shell is close +bgnotify_termid=$(currentAppId) bgnotify () { ## args: (title, subtitle) if hash terminal-notifier 2>/dev/null; then #osx - local term_id="$bgnotify_appid" + local term_id="${bgnotify_termid%%,*}" # remove window id if [[ -z "$term_id" ]]; then case "$TERM_PROGRAM" in iTerm.app) term_id='com.googlecode.iterm2' ;; @@ -69,8 +69,6 @@ bgnotify () { ## args: (title, subtitle) bgnotify_begin() { bgnotify_timestamp=$EPOCHSECONDS bgnotify_lastcmd="${1:-$2}" - bgnotify_appid="$(currentAppId)" - bgnotify_windowid=$(currentWindowId) } bgnotify_end() { @@ -78,7 +76,7 @@ bgnotify_end() { elapsed=$(( EPOCHSECONDS - bgnotify_timestamp )) past_threshold=$(( elapsed >= bgnotify_threshold )) if (( bgnotify_timestamp > 0 )) && (( past_threshold )); then - if [[ $(currentAppId) != "$bgnotify_appid" || $(currentWindowId) != "$bgnotify_windowid" ]]; then + if [[ $(currentAppId) != "$bgnotify_termid" ]]; then print -n "\a" bgnotify_formatted "$didexit" "$bgnotify_lastcmd" "$elapsed" fi From a04cf078801db637c2ecdcc95c491fa9fb217ceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 14 Oct 2022 18:36:48 +0200 Subject: [PATCH 086/253] refactor(bgnotify): clean up and reorganize code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🗸 Standardize code style 🗸 Organize code sections 🗸 Optimize calls for window ID --- plugins/bgnotify/bgnotify.plugin.zsh | 125 +++++++++++++++------------ 1 file changed, 70 insertions(+), 55 deletions(-) diff --git a/plugins/bgnotify/bgnotify.plugin.zsh b/plugins/bgnotify/bgnotify.plugin.zsh index 9c4a62cd7..ed2653aa8 100644 --- a/plugins/bgnotify/bgnotify.plugin.zsh +++ b/plugins/bgnotify/bgnotify.plugin.zsh @@ -1,43 +1,78 @@ #!/usr/bin/env zsh -## setup ## +## Setup -[[ -o interactive ]] || return #interactive only! -zmodload zsh/datetime || { print "can't load zsh/datetime"; return } # faster than date() -autoload -Uz add-zsh-hook || { print "can't add zsh hook!"; return } +[[ -o interactive ]] || return # don't load on non-interactive shells +[[ -z "$SSH_CLIENT" && -z "$SSH_TTY" ]] || return # don't load on a SSH connection -(( ${+bgnotify_threshold} )) || bgnotify_threshold=5 #default 10 seconds +zmodload zsh/datetime # faster than `date` -## definitions ## - -if ! (type bgnotify_formatted | grep -q 'function'); then ## allow custom function override - function bgnotify_formatted { ## args: (exit_status, command, elapsed_seconds) - elapsed="$(( $3 % 60 ))s" - (( $3 >= 60 )) && elapsed="$((( $3 % 3600) / 60 ))m $elapsed" - (( $3 >= 3600 )) && elapsed="$(( $3 / 3600 ))h $elapsed" - [ $1 -eq 0 ] && bgnotify "#win (took $elapsed)" "$2" || bgnotify "#fail (took $elapsed)" "$2" - } -fi +## Zsh Hooks +function bgnotify_begin { + bgnotify_timestamp=$EPOCHSECONDS + bgnotify_lastcmd="${1:-$2}" } -function currentAppId { +function bgnotify_end { + { + local exit_status=$? + local elapsed=$(( EPOCHSECONDS - bgnotify_timestamp )) + + # check time elapsed + [[ $bgnotify_timestamp -gt 0 ]] || return + [[ $elapsed -ge $bgnotify_threshold ]] || return + + # check if Terminal app is not active + [[ $(bgnotify_appid) != "$bgnotify_termid" ]] || return + + printf '\a' # beep sound + bgnotify_formatted "$exit_status" "$bgnotify_lastcmd" "$elapsed" + } always { + bgnotify_timestamp=0 + } +} + +autoload -Uz add-zsh-hook +add-zsh-hook preexec bgnotify_begin +add-zsh-hook precmd bgnotify_end + + +## Functions + +# allow custom function override +(( ${+functions[bgnotify_formatted]} )) || \ +function bgnotify_formatted { + local exit_status=$1 + local cmd="$2" + + # humanly readable elapsed time + local elapsed="$(( $3 % 60 ))s" + (( $3 < 60 )) || elapsed="$((( $3 % 3600) / 60 ))m $elapsed" + (( $3 < 3600 )) || elapsed="$(( $3 / 3600 ))h $elapsed" + + if [[ $1 -eq 0 ]]; then + bgnotify "#win (took $elapsed)" "$2" + else + bgnotify "#fail (took $elapsed)" "$2" + fi +} + +# for macOS, output is "app ID, window ID" (com.googlecode.iterm2, 116) +function bgnotify_appid { if (( ${+commands[osascript]} )); then - # output: com.googlecode.iterm2, 116 osascript -e 'tell application (path to frontmost application as text) to get the {id, id of front window}' 2>/dev/null - elif (( ${+commands[notify-send]} || ${+commands[kdialog]} )); then - xprop -root 2> /dev/null | awk '/NET_ACTIVE_WINDOW/{print $5;exit} END{exit !$5}' || echo "0" + elif (( ${+commands[xprop]} )); then + xprop -root _NET_ACTIVE_WINDOW 2>/dev/null | cut -d' ' -f5 else echo $EPOCHSECONDS fi } -# currentAppId is expensive (more on macOS!) and it will remain the same until the shell is close -bgnotify_termid=$(currentAppId) - -bgnotify () { ## args: (title, subtitle) - if hash terminal-notifier 2>/dev/null; then #osx +function bgnotify { + # $1: title, $2: message + if (( ${+commands[terminal-notifier]} )); then # macOS local term_id="${bgnotify_termid%%,*}" # remove window id if [[ -z "$term_id" ]]; then case "$TERM_PROGRAM" in @@ -46,46 +81,26 @@ bgnotify () { ## args: (title, subtitle) esac fi - ## now call terminal-notifier, (hopefully with $term_id!) if [[ -z "$term_id" ]]; then - terminal-notifier -message "$2" -title "$1" >/dev/null + terminal-notifier -message "$2" -title "$1" &>/dev/null else - terminal-notifier -message "$2" -title "$1" -activate "$term_id" -sender "$term_id" >/dev/null + terminal-notifier -message "$2" -title "$1" -activate "$term_id" -sender "$term_id" &>/dev/null fi - elif hash growlnotify 2>/dev/null; then #osx growl + elif (( ${+commands[growlnotify]} )); then # macOS growl growlnotify -m "$1" "$2" - elif hash notify-send 2>/dev/null; then #ubuntu gnome! + elif (( ${+commands[notify-send]} )); then # GNOME notify-send "$1" "$2" - elif hash kdialog 2>/dev/null; then #ubuntu kde! + elif (( ${+commands[kdialog]} )); then # KDE kdialog --title "$1" --passivepopup "$2" 5 - elif hash notifu 2>/dev/null; then #cygwyn support! + elif (( ${+commands[notifu]} )); then # cygwin notifu /m "$2" /p "$1" fi } +## Defaults -## Zsh hooks ## +# notify if command took longer than 5s by default +bgnotify_threshold=${bgnotify_threshold:-5} -bgnotify_begin() { - bgnotify_timestamp=$EPOCHSECONDS - bgnotify_lastcmd="${1:-$2}" -} - -bgnotify_end() { - didexit=$? - elapsed=$(( EPOCHSECONDS - bgnotify_timestamp )) - past_threshold=$(( elapsed >= bgnotify_threshold )) - if (( bgnotify_timestamp > 0 )) && (( past_threshold )); then - if [[ $(currentAppId) != "$bgnotify_termid" ]]; then - print -n "\a" - bgnotify_formatted "$didexit" "$bgnotify_lastcmd" "$elapsed" - fi - fi - bgnotify_timestamp=0 #reset it to 0! -} - -## only enable if a local (non-ssh) connection -if [ -z "$SSH_CLIENT" ] && [ -z "$SSH_TTY" ]; then - add-zsh-hook preexec bgnotify_begin - add-zsh-hook precmd bgnotify_end -fi +# bgnotify_appid is slow in macOS and the terminal ID won't change, so cache it at startup +bgnotify_termid="$(bgnotify_appid)" From 62929263fafd9e3c1da043bc9b40fa97fccfa7a1 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Fri, 11 Feb 2022 15:20:03 +0100 Subject: [PATCH 087/253] fix(perms)!: change function name from `fixperms` to `resetperms` and document caution (#10686) BREAKING CHANGE: function `fixperms` has been renamed to the more accurate `resetperms`. Please read the README carefully before using it as it may badly reset the permissions. Fixes #10648 Closes #10686 --- plugins/perms/README.md | 16 +++++++++++++--- plugins/perms/perms.plugin.zsh | 27 ++++++++++++++++----------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/plugins/perms/README.md b/plugins/perms/README.md index ae7a36b9d..ae10fa659 100644 --- a/plugins/perms/README.md +++ b/plugins/perms/README.md @@ -10,6 +10,16 @@ plugins=(... perms) ## Usage -* `set755` recursively sets all given directories (default to .) to octal 755. -* `set644` recursively sets all given files (default to .) to octal 644. -* `fixperms` is a wrapper around `set755` and `set644` applied to a specified directory or the current directory otherwise. It also prompts prior to execution unlike the other two aliases. +> **CAUTION:** these functions are harmful if you don't know what they do. + +- `set755`: sets the permission to octal 755 for all given directories and their child directories (by default, starting from the current directory). + +- `set644`: sets the permission to octal 644 for all files of the given directory (by default, the current directory), recursively. It will only affect regular files (no symlinks). + +- `resetperms` is a wrapper around `set755` and `set644` applied to a specified directory or the current directory otherwise. + It will set the permissions to 755 for directories, and 644 for files. + +## Reference + +- octal 644: _read and write_ for the owner, _read_ for the group and others users. +- octal 755: _read, write and execute_ permissions for the owner, and _read and execute_ for the group and others users. diff --git a/plugins/perms/perms.plugin.zsh b/plugins/perms/perms.plugin.zsh index 1a7472c1c..353b58411 100644 --- a/plugins/perms/perms.plugin.zsh +++ b/plugins/perms/perms.plugin.zsh @@ -6,25 +6,25 @@ ### Aliases # Set all files' permissions to 644 recursively in a directory -set644() { +function set644 { find "${@:-.}" -type f ! -perm 644 -print0 | xargs -0 chmod 644 } # Set all directories' permissions to 755 recursively in a directory -set755() { +function set755 { find "${@:-.}" -type d ! -perm 755 -print0 | xargs -0 chmod 755 } ### Functions -# fixperms - fix permissions on files and directories, with confirmation +# resetperms - fix permissions on files and directories, with confirmation # Returns 0 on success, nonzero if any errors occurred -fixperms () { +function resetperms { local opts confirm target exit_status chmod_opts use_slow_mode zparseopts -E -D -a opts -help -slow v+=chmod_opts if [[ $# > 1 || -n "${opts[(r)--help]}" ]]; then cat < Date: Sat, 12 Nov 2022 11:46:06 +0100 Subject: [PATCH 088/253] feat(git-prompt): show deleted files (#11245) --- plugins/git-prompt/git-prompt.plugin.zsh | 5 +++++ plugins/git-prompt/gitstatus.py | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/plugins/git-prompt/git-prompt.plugin.zsh b/plugins/git-prompt/git-prompt.plugin.zsh index 0485e317c..dcda418cf 100644 --- a/plugins/git-prompt/git-prompt.plugin.zsh +++ b/plugins/git-prompt/git-prompt.plugin.zsh @@ -47,6 +47,7 @@ function update_current_git_vars() { GIT_UNTRACKED=$__CURRENT_GIT_STATUS[7] GIT_STASHED=$__CURRENT_GIT_STATUS[8] GIT_CLEAN=$__CURRENT_GIT_STATUS[9] + GIT_DELETED=$__CURRENT_GIT_STATUS[10] } git_super_status() { @@ -69,6 +70,9 @@ git_super_status() { if [ "$GIT_CHANGED" -ne "0" ]; then STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CHANGED$GIT_CHANGED%{${reset_color}%}" fi + if [ "$GIT_DELETED" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_DELETED$GIT_DELETED%{${reset_color}%}" + fi if [ "$GIT_UNTRACKED" -ne "0" ]; then STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED$GIT_UNTRACKED%{${reset_color}%}" fi @@ -91,6 +95,7 @@ ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_bold[magenta]%}" ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[red]%}%{●%G%}" ZSH_THEME_GIT_PROMPT_CONFLICTS="%{$fg[red]%}%{✖%G%}" ZSH_THEME_GIT_PROMPT_CHANGED="%{$fg[blue]%}%{✚%G%}" +ZSH_THEME_GIT_PROMPT_DELETED="%{$fg[blue]%}%{-%G%}" ZSH_THEME_GIT_PROMPT_BEHIND="%{↓%G%}" ZSH_THEME_GIT_PROMPT_AHEAD="%{↑%G%}" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%}%{…%G%}" diff --git a/plugins/git-prompt/gitstatus.py b/plugins/git-prompt/gitstatus.py index b5c3c9a0c..94774d828 100644 --- a/plugins/git-prompt/gitstatus.py +++ b/plugins/git-prompt/gitstatus.py @@ -44,7 +44,7 @@ if po.returncode != 0: sys.exit(0) # Not a git repository # collect git status information -untracked, staged, changed, conflicts = [], [], [], [] +untracked, staged, changed, deleted, conflicts = [], [], [], [], [] ahead, behind = 0, 0 status = [(line[0], line[1], line[2:]) for line in stdout.decode('utf-8').splitlines()] for st in status: @@ -75,13 +75,15 @@ for st in status: else: if st[1] == 'M': changed.append(st) + if st[1] == 'D': + deleted.append(st) if st[0] == 'U': conflicts.append(st) elif st[0] != ' ': staged.append(st) stashed = get_stash() -if not changed and not staged and not conflicts and not untracked: +if not changed and not deleted and not staged and not conflicts and not untracked: clean = 1 else: clean = 0 @@ -95,6 +97,7 @@ out = ' '.join([ str(len(changed)), str(len(untracked)), str(stashed), - str(clean) + str(clean), + str(len(deleted)) ]) print(out, end='') From b70977b25657c193a3a6c0445b63325a420da646 Mon Sep 17 00:00:00 2001 From: Isaac Levy Date: Mon, 14 Nov 2022 11:36:19 -0500 Subject: [PATCH 089/253] perf(pyenv): do not check if it's disabled (#11338) --- plugins/pyenv/pyenv.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/pyenv/pyenv.plugin.zsh b/plugins/pyenv/pyenv.plugin.zsh index 7fbd1589e..48c8ffaf5 100644 --- a/plugins/pyenv/pyenv.plugin.zsh +++ b/plugins/pyenv/pyenv.plugin.zsh @@ -78,7 +78,7 @@ if [[ $FOUND_PYENV -eq 1 ]]; then eval "$(pyenv init - --no-rehash zsh)" # If pyenv-virtualenv exists, load it - if [[ "$(pyenv commands)" =~ "virtualenv-init" && "$ZSH_PYENV_VIRTUALENV" != false ]]; then + if [[ "$ZSH_PYENV_VIRTUALENV" != false && "$(pyenv commands)" =~ "virtualenv-init" ]]; then eval "$(pyenv virtualenv-init - zsh)" fi From a482a02915f361e56669ee9884ebee0eb6f2d8d5 Mon Sep 17 00:00:00 2001 From: Lennart Ochel Date: Mon, 14 Nov 2022 17:38:44 +0100 Subject: [PATCH 090/253] feat(git-prompt): add option to show upstream branch (#11336) --- plugins/git-prompt/README.md | 2 ++ plugins/git-prompt/git-prompt.plugin.zsh | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/plugins/git-prompt/README.md b/plugins/git-prompt/README.md index 8775af893..05208d72f 100644 --- a/plugins/git-prompt/README.md +++ b/plugins/git-prompt/README.md @@ -45,6 +45,7 @@ The symbols are as follows: | ●n | there are `n` staged files | | ✖n | there are `n` unmerged files | | ✚n | there are `n` unstaged files | +| -n | there are `n` deleted files | | ⚑n | there are `n` stashed changes | | … | there are some untracked files | @@ -59,6 +60,7 @@ The symbols are as follows: ## Customisation - Set the variable `ZSH_THEME_GIT_PROMPT_CACHE` to any value in order to enable caching. +- Set the variable `ZSH_THEME_GIT_SHOW_UPSTREAM` to any value to display the upstream branch. - You may also change a number of variables (whose name start with `ZSH_THEME_GIT_PROMPT_`) to change the appearance of the prompt. Take a look at the bottom of the [plugin file](git-prompt.plugin.zsh)` to see what variables are available. diff --git a/plugins/git-prompt/git-prompt.plugin.zsh b/plugins/git-prompt/git-prompt.plugin.zsh index dcda418cf..487332028 100644 --- a/plugins/git-prompt/git-prompt.plugin.zsh +++ b/plugins/git-prompt/git-prompt.plugin.zsh @@ -48,12 +48,18 @@ function update_current_git_vars() { GIT_STASHED=$__CURRENT_GIT_STATUS[8] GIT_CLEAN=$__CURRENT_GIT_STATUS[9] GIT_DELETED=$__CURRENT_GIT_STATUS[10] + + if [ -z ${ZSH_THEME_GIT_SHOW_UPSTREAM+x} ]; then + GIT_UPSTREAM= + else + GIT_UPSTREAM=$(git rev-parse --abbrev-ref --symbolic-full-name "@{upstream}" 2>/dev/null) && GIT_UPSTREAM="${ZSH_THEME_GIT_PROMPT_UPSTREAM_SEPARATOR}${GIT_UPSTREAM}" + fi } git_super_status() { precmd_update_git_vars if [ -n "$__CURRENT_GIT_STATUS" ]; then - STATUS="$ZSH_THEME_GIT_PROMPT_PREFIX$ZSH_THEME_GIT_PROMPT_BRANCH$GIT_BRANCH%{${reset_color}%}" + STATUS="$ZSH_THEME_GIT_PROMPT_PREFIX$ZSH_THEME_GIT_PROMPT_BRANCH$GIT_BRANCH$GIT_UPSTREAM%{${reset_color}%}" if [ "$GIT_BEHIND" -ne "0" ]; then STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_BEHIND$GIT_BEHIND%{${reset_color}%}" fi @@ -101,6 +107,7 @@ ZSH_THEME_GIT_PROMPT_AHEAD="%{↑%G%}" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%}%{…%G%}" ZSH_THEME_GIT_PROMPT_STASHED="%{$fg_bold[blue]%}%{⚑%G%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}%{✔%G%}" +ZSH_THEME_GIT_PROMPT_UPSTREAM_SEPARATOR="->" # Set the prompt. RPROMPT='$(git_super_status)' From 37d9e1aee9289025373d3f840ead74897206d73f Mon Sep 17 00:00:00 2001 From: milinches Date: Sat, 7 May 2022 06:12:22 +0100 Subject: [PATCH 091/253] feat(golang): add `goe`, `gove` aliases Closes #10914 --- plugins/golang/README.md | 4 +++- plugins/golang/golang.plugin.zsh | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/golang/README.md b/plugins/golang/README.md index 3b7d1e19f..128cc7fbb 100644 --- a/plugins/golang/README.md +++ b/plugins/golang/README.md @@ -16,11 +16,12 @@ plugins=(... golang) | gob | `go build` | Build your code | | goc | `go clean` | Removes object files from package source directories | | god | `go doc` | Prints documentation comments | +| goe | `go env` | Prints Go environment information | | gof | `go fmt` | Gofmt formats (aligns and indents) Go programs. | | gofa | `go fmt ./...` | Run go fmt for all packages in current directory, recursively | | gofx | `go fix` | Update packages to use a new API | | gog | `go get` | Downloads packages and then installs them to $GOPATH | -| gog | `go get ./...` | Installs all dependencies in current directory, recursively | +| goga | `go get ./...` | Installs all dependencies in current directory, recursively | | goi | `go install` | Compiles and installs packages to $GOPATH | | gol | `go list` | Lists Go packages | | gom | `go mod` | Access to operations on modules | @@ -35,4 +36,5 @@ plugins=(... golang) | gotod | `go tool dist` | Utility to bootstrap, build and test go runtime | | gotofx | `go tool fix` | Fixes an application to use newer features | | gov | `go vet` | Vet examines Go source code and reports suspicious constructs | +| gove | `go version` | Prints Go version | | gow | `go work` | Work provides access to operations on workspaces | diff --git a/plugins/golang/golang.plugin.zsh b/plugins/golang/golang.plugin.zsh index 0dbaab069..45ccd3a1c 100644 --- a/plugins/golang/golang.plugin.zsh +++ b/plugins/golang/golang.plugin.zsh @@ -13,6 +13,7 @@ unset p alias gob='go build' alias goc='go clean' alias god='go doc' +alias goe='go env' alias gof='go fmt' alias gofa='go fmt ./...' alias gofx='go fix' @@ -32,4 +33,5 @@ alias gotoc='go tool compile' alias gotod='go tool dist' alias gotofx='go tool fix' alias gov='go vet' +alias gove='go version' alias gow='go work' From aafc7443f07b841b4c008951087bfad282f3341f Mon Sep 17 00:00:00 2001 From: Steven Conaway Date: Tue, 15 Nov 2022 10:19:37 -0800 Subject: [PATCH 092/253] feat(fzf): support macOS ARM brew install dir (#10944) --- plugins/fzf/fzf.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/fzf/fzf.plugin.zsh b/plugins/fzf/fzf.plugin.zsh index 60ae0c765..9c8dd8648 100644 --- a/plugins/fzf/fzf.plugin.zsh +++ b/plugins/fzf/fzf.plugin.zsh @@ -9,6 +9,7 @@ function fzf_setup_using_base_dir() { "${HOME}/.nix-profile/share/fzf" "${XDG_DATA_HOME:-$HOME/.local/share}/fzf" "/usr/local/opt/fzf" + "/opt/homebrew/bin/fzf" "/usr/share/fzf" "/usr/local/share/examples/fzf" ) From 94584e2a7337e0a7f5af45e2c97ca6d0770e67a1 Mon Sep 17 00:00:00 2001 From: Bill Haofei Gong Date: Wed, 16 Nov 2022 05:25:22 +1100 Subject: [PATCH 093/253] feat(cakephp3): add compatibility with CakePHP 3.7+ (#11080) --- plugins/cakephp3/cakephp3.plugin.zsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/cakephp3/cakephp3.plugin.zsh b/plugins/cakephp3/cakephp3.plugin.zsh index dbfbeba3b..a1a289fd0 100644 --- a/plugins/cakephp3/cakephp3.plugin.zsh +++ b/plugins/cakephp3/cakephp3.plugin.zsh @@ -1,10 +1,10 @@ # CakePHP 3 basic command completion _cakephp3_get_command_list () { - bin/cake Completion commands + bin/cake completion commands } _cakephp3_get_sub_command_list () { - bin/cake Completion subcommands ${words[2]} + bin/cake completion subcommands ${words[2]} } _cakephp3_get_3rd_argument () { @@ -34,5 +34,5 @@ compdef _cakephp3 cake #Alias alias c3='bin/cake' -alias c3cache='bin/cake orm_cache clear' +alias c3cache='bin/cake schema_cache clear' alias c3migrate='bin/cake migrations migrate' From 4392d3a923eddd4e9d0f9b17a1e995cc9aa5cc96 Mon Sep 17 00:00:00 2001 From: Ben Iofel Date: Tue, 15 Nov 2022 18:29:48 +0000 Subject: [PATCH 094/253] feat(systemadmin): color `ip` if shell is interactive (#11107) --- plugins/systemadmin/systemadmin.plugin.zsh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/systemadmin/systemadmin.plugin.zsh b/plugins/systemadmin/systemadmin.plugin.zsh index 8e5e0af71..9b5159ff1 100644 --- a/plugins/systemadmin/systemadmin.plugin.zsh +++ b/plugins/systemadmin/systemadmin.plugin.zsh @@ -33,6 +33,14 @@ alias pscpu10='ps -e -o pcpu,cpu,nice,state,cputime,args|sort -k1,1n -nr | head # top10 of the history alias hist10='print -l ${(o)history%% *} | uniq -c | sort -nr | head -n 10' +function ip() { + if [ -t 1 ]; then + command ip -color "$@" + else + command ip "$@" + fi +} + # directory LS function dls() { print -l *(/) From 6d5ba2d6c489d56fb34788ec128f98609e60b7be Mon Sep 17 00:00:00 2001 From: Carlo Date: Tue, 15 Nov 2022 20:23:09 +0100 Subject: [PATCH 095/253] feat(nvm)!: settings now are zstyle-based (#11335) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Marc Cornellà --- plugins/nvm/README.md | 40 +++++++++++++++++++++++--------- plugins/nvm/nvm.plugin.zsh | 47 ++++++++++++++++++++++++++++++-------- 2 files changed, 66 insertions(+), 21 deletions(-) diff --git a/plugins/nvm/README.md b/plugins/nvm/README.md index 1acf12050..4c6312e6e 100644 --- a/plugins/nvm/README.md +++ b/plugins/nvm/README.md @@ -1,7 +1,7 @@ # nvm plugin -This plugin adds autocompletions for [nvm](https://github.com/nvm-sh/nvm) — a Node.js version manager. -It also automatically sources nvm, so you don't need to do it manually in your `.zshrc`. +This plugin adds autocompletions for [nvm](https://github.com/nvm-sh/nvm) — a Node.js version manager. It also +automatically sources nvm, so you don't need to do it manually in your `.zshrc`. To use it, add `nvm` to the plugins array of your zshrc file: @@ -21,14 +21,32 @@ These settings should go in your zshrc file, before Oh My Zsh is sourced: [Homebrew is installed in `/opt/homebrew`](https://docs.brew.sh/Installation). To get the directory where nvm has been installed, regardless of chip architecture, use `NVM_HOMEBREW=$(brew --prefix nvm)`. -- **`NVM_LAZY`**: if you want the plugin to defer the load of nvm to speed-up the start of your zsh session, - set `NVM_LAZY` to `1`. This will source nvm script only when using it, and will create a function for `node`, - `npm`, `pnpm`, `yarn`, and the command(s) specified by `NVM_LAZY_CMD`, so when you call either of them, - nvm will be loaded and run with default version. +## Customization -- **`NVM_LAZY_CMD`**: if you want additional command(s) to trigger lazy loading of nvm, set `NVM_LAZY_CMD` to - the command or an array of the commands. +#### Lazy startup -- **`NVM_AUTOLOAD`**: if `NVM_AUTOLOAD` is set to `1`, the plugin will automatically load a node version when - if finds a [`.nvmrc` file](https://github.com/nvm-sh/nvm#nvmrc) in the current working directory indicating - which node version to load. +This option will help you to defer nvm's load until you use it to speed-up your zsh startup. This will source +nvm script only when using it, and will create a function for `node`, `npm`, `pnpm`, `yarn`, and the +command(s) specified by `lazy-cmd` option, so when you call either of them, nvm will be loaded and run with +default version. To enable it, you can add this snippet to your zshrc, before Oh My Zsh is sourced: + +```zsh +zstyle ':omz:plugins:nvm' lazy yes +``` + +Then, to define extra commands that will also trigger nvm load, you can use a similar syntax, adding as many +as you want: + +```zsh +zstyle ':omz:plugins:nvm' lazy-cmd eslint prettier typescript ... +``` + +#### `.nvmrc` autoload + +If set, the plugin will automatically load a node version when if finds a +[`.nvmrc` file](https://github.com/nvm-sh/nvm#nvmrc) in the current working directory indicating which node +version to load. This can be done, similar as previous options, adding: + +```zsh +zstyle ':omz:plugins:nvm' autoload true +``` diff --git a/plugins/nvm/nvm.plugin.zsh b/plugins/nvm/nvm.plugin.zsh index 1fb4d238b..ec583cc2d 100644 --- a/plugins/nvm/nvm.plugin.zsh +++ b/plugins/nvm/nvm.plugin.zsh @@ -16,14 +16,41 @@ fi # Note: nvm is a function so we need to use `which` which nvm &>/dev/null && return -if (( $+NVM_LAZY )); then - # Call nvm when first using nvm, node, npm, pnpm, yarn or $NVM_LAZY_CMD - function nvm node npm pnpm yarn $NVM_LAZY_CMD { - unfunction nvm node npm pnpm yarn $NVM_LAZY_CMD - # Load nvm if it exists in $NVM_DIR - [[ -f "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh" - "$0" "$@" - } +# TODO: 2022-11-11: Remove soft-deprecate options +if (( ${+NVM_LAZY} + ${+NVM_LAZY_CMD} + ${+NVM_AUTOLOAD} )); then + # Get list of NVM_* variable settings defined + local -a used_vars + used_vars=(${(o)parameters[(I)NVM_(AUTOLOAD|LAZY|LAZY_CMD)]}) + # Nicely print the list in the style `var1, var2 and var3` + echo "${fg[yellow]}[nvm plugin] Variable-style settings are deprecated. Instead of ${(j:, :)used_vars[1,-2]}${used_vars[-2]+ and }${used_vars[-1]}, use:\n" + if (( $+NVM_AUTOLOAD )); then + echo " zstyle ':omz:plugins:nvm' autoload true" + zstyle ':omz:plugins:nvm' autoload yes + fi + if (( $+NVM_LAZY )); then + echo " zstyle ':omz:plugins:nvm' lazy true" + zstyle ':omz:plugins:nvm' lazy yes + fi + if (( $+NVM_LAZY_CMD )); then + echo " zstyle ':omz:plugins:nvm' lazy-cmd $NVM_LAZY_CMD" + zstyle ':omz:plugins:nvm' lazy-cmd $NVM_LAZY_CMD + fi + echo "$reset_color" + unset used_vars NVM_AUTOLOAD NVM_LAZY NVM_LAZY_CMD +fi + +if zstyle -t ':omz:plugins:nvm' lazy; then + # Call nvm when first using nvm, node, npm, pnpm, yarn or other commands in lazy-cmd + zstyle -a ':omz:plugins:nvm' lazy-cmd nvm_lazy_cmd + eval " + function nvm node npm pnpm yarn $nvm_lazy_cmd { + unfunction nvm node npm pnpm yarn $nvm_lazy_cmd + # Load nvm if it exists in \$NVM_DIR + [[ -f \"\$NVM_DIR/nvm.sh\" ]] && source \"\$NVM_DIR/nvm.sh\" + \"\$0\" \"\$@\" + } + " + unset nvm_lazy_cmd elif [[ -f "$NVM_DIR/nvm.sh" ]]; then # Load nvm if it exists in $NVM_DIR source "$NVM_DIR/nvm.sh" @@ -33,7 +60,7 @@ fi # Autoload nvm when finding a .nvmrc file in the current directory # Adapted from: https://github.com/nvm-sh/nvm#zsh -if (( $+NVM_AUTOLOAD )); then +if zstyle -t ':omz:plugins:nvm' autoload; then load-nvmrc() { local node_version="$(nvm version)" local nvmrc_path="$(nvm_find_nvmrc)" @@ -70,4 +97,4 @@ for nvm_completion in "$NVM_DIR/bash_completion" "$NVM_HOMEBREW/etc/bash_complet fi done -unset NVM_HOMEBREW NVM_LAZY NVM_AUTOLOAD nvm_completion +unset NVM_HOMEBREW nvm_completion From 5bce72ef57255ab1c23d8fb753417859afe6e0f0 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 15 Nov 2022 20:27:12 +0100 Subject: [PATCH 096/253] docs(yarn): follow omz `zstyle` bools standard --- plugins/yarn/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/yarn/README.md b/plugins/yarn/README.md index 9c16ff2c3..cdda2026c 100644 --- a/plugins/yarn/README.md +++ b/plugins/yarn/README.md @@ -15,7 +15,7 @@ It also adds `yarn` global scripts dir (commonly `~/.yarn/bin`) to the `$PATH`. To disable this feature, set the following style in your `.zshrc`: ```zsh -zstyle ':omz:plugins:yarn' global-path false +zstyle ':omz:plugins:yarn' global-path no ``` ## Aliases From 5ab517361a4215d2f777023fc1e772fe79496713 Mon Sep 17 00:00:00 2001 From: Ruslan Tursunov Date: Thu, 17 Nov 2022 13:54:01 +0300 Subject: [PATCH 097/253] feat(git): add `gcn` alias (#10836) --- plugins/git/README.md | 1 + plugins/git/git.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/git/README.md b/plugins/git/README.md index f1c8b81c4..3beb0890a 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -35,6 +35,7 @@ plugins=(... git) | gbss | git bisect start | | gc | git commit -v | | gc! | git commit -v --amend | +| gcn | git commit -v --no-edit | | gcn! | git commit -v --no-edit --amend | | gca | git commit -v -a | | gca! | git commit -v -a --amend | diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 26f4beeb3..69745730c 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -84,6 +84,7 @@ alias gbss='git bisect start' alias gc='git commit -v' alias gc!='git commit -v --amend' +alias gcn='git commit -v --no-edit' alias gcn!='git commit -v --no-edit --amend' alias gca='git commit -v -a' alias gca!='git commit -v -a --amend' From d93f3174504f8a0c21aef6998714e3b67ba82606 Mon Sep 17 00:00:00 2001 From: Carlo Date: Sun, 20 Nov 2022 08:36:20 +0100 Subject: [PATCH 098/253] fix(init): prevent multiple compdump compilations (#11345) Closes #11341 --- oh-my-zsh.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index 29d39ca23..e94c2f417 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -143,7 +143,10 @@ fi unset zcompdump_revision zcompdump_fpath zcompdump_refresh # zcompile the completion dump file if the .zwc is older or missing. -zrecompile -q -p "$ZSH_COMPDUMP" && command rm -f "$ZSH_COMPDUMP.zwc.old" +if command mkdir "${ZSH_COMPDUMP}.lock" 2>/dev/null; then + zrecompile -q -p "$ZSH_COMPDUMP" + command rm -rf "$ZSH_COMPDUMP.zwc.old" "${ZSH_COMPDUMP}.lock" +fi # Load all of the config files in ~/oh-my-zsh that end in .zsh # TIP: Add files you don't want in git to .gitignore From 96976736166998a980cc3d9570db4c0b594460e3 Mon Sep 17 00:00:00 2001 From: Brenex Date: Mon, 21 Nov 2022 05:23:16 -0500 Subject: [PATCH 099/253] docs(aliases): fix typos (#11348) Co-authored-by: Carlo Sala --- plugins/aliases/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/aliases/README.md b/plugins/aliases/README.md index 66fd84584..4e77f67b3 100644 --- a/plugins/aliases/README.md +++ b/plugins/aliases/README.md @@ -15,14 +15,14 @@ Requirements: Python needs to be installed. ## Usage -- `acs`: show all aliases by group. +- `acs`: show all aliases by group -- `acs -h/--help`: print help mesage. +- `acs -h/--help`: print help mesage -- `acs `: filter aliases by `` and highlight. +- `acs `: filter aliases by `` and highlight -- `acs -g /--group `. Multiple uses of the flag show all groups, +- `acs -g /--group `: show only aliases for group ``. Multiple uses of the flag show all groups -- `acs --groups-only`: show only group names +- `acs --groups`: show only group names ![screenshot](https://cloud.githubusercontent.com/assets/3602957/11581913/cb54fb8a-9a82-11e5-846b-5a67f67ad9ad.png) From fe83581a20ab12010e9168977dc633c9da2924e1 Mon Sep 17 00:00:00 2001 From: Richard Mitchell Date: Mon, 21 Nov 2022 05:24:10 -0500 Subject: [PATCH 100/253] fix(last-working-dir): use builtin `pwd` (#11346) --- plugins/last-working-dir/last-working-dir.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/last-working-dir/last-working-dir.plugin.zsh b/plugins/last-working-dir/last-working-dir.plugin.zsh index 905a02a70..684972cc1 100644 --- a/plugins/last-working-dir/last-working-dir.plugin.zsh +++ b/plugins/last-working-dir/last-working-dir.plugin.zsh @@ -9,7 +9,7 @@ chpwd_last_working_dir() { [[ "$ZSH_SUBSHELL" -eq 0 ]] || return 0 # Add ".$SSH_USER" suffix to cache file if $SSH_USER is set and non-empty local cache_file="$ZSH_CACHE_DIR/last-working-dir${SSH_USER:+.$SSH_USER}" - pwd >| "$cache_file" + builtin pwd >| "$cache_file" } # Changes directory to the last working directory From 8ef9abc9621321c41e89c578bc6f12176696f36c Mon Sep 17 00:00:00 2001 From: Markus Hofbauer Date: Wed, 23 Nov 2022 10:23:11 +0100 Subject: [PATCH 101/253] feat(pre-commit) add aliases (#10707) --- plugins/pre-commit/README.md | 19 +++++++++++++++++++ plugins/pre-commit/pre-commit.plugin.zsh | 8 ++++++++ 2 files changed, 27 insertions(+) create mode 100644 plugins/pre-commit/README.md create mode 100644 plugins/pre-commit/pre-commit.plugin.zsh diff --git a/plugins/pre-commit/README.md b/plugins/pre-commit/README.md new file mode 100644 index 000000000..e6d80d369 --- /dev/null +++ b/plugins/pre-commit/README.md @@ -0,0 +1,19 @@ +# Pre-commit plugin + +This plugin adds aliases for common commands of [pre-commit](https://pre-commit.com/). + +To use this plugin, add it to the plugins array in your zshrc file: + +```zsh +plugins=(... pre-commit) +``` + +## Aliases + +| Alias | Command | Description | +| ------- | -------------------------------------- | ------------------------------------------------------ | +| prc | `pre-commit` | The `pre-commit` command | +| prcau | `pre-commit autoupdate` | Update hooks automatically | +| prcr | `pre-commit run` | The `pre-commit run` command | +| prcra | `pre-commit run --all-files` | Run pre-commit hooks on all files | +| prcrf | `pre-commit run --files` | Run pre-commit hooks on a given list of files | diff --git a/plugins/pre-commit/pre-commit.plugin.zsh b/plugins/pre-commit/pre-commit.plugin.zsh new file mode 100644 index 000000000..c3d0c6290 --- /dev/null +++ b/plugins/pre-commit/pre-commit.plugin.zsh @@ -0,0 +1,8 @@ +# Aliases for pre-commit +alias prc='pre-commit' + +alias prcau='pre-commit autoupdate' + +alias prcr='pre-commit run' +alias prcra='pre-commit run --all-files' +alias prcrf='pre-commit run --files' From 5485d70df2cefa9374c477425d2c1c84646a7d49 Mon Sep 17 00:00:00 2001 From: Luis Serra <74016165+serrovsky@users.noreply.github.com> Date: Wed, 23 Nov 2022 17:24:08 +0000 Subject: [PATCH 102/253] feat(fluxcd): add completion for flux (#11350) --- plugins/fluxcd/README.md | 9 +++++++++ plugins/fluxcd/fluxcd.plugin.zsh | 14 ++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 plugins/fluxcd/README.md create mode 100644 plugins/fluxcd/fluxcd.plugin.zsh diff --git a/plugins/fluxcd/README.md b/plugins/fluxcd/README.md new file mode 100644 index 000000000..9723fcc6b --- /dev/null +++ b/plugins/fluxcd/README.md @@ -0,0 +1,9 @@ +# FluxCD plugin + +This plugin adds completion for [FluxCD](https://fluxcd.io), an open and extensible continuous delivery solution for Kubernetes. Powered by GitOps Toolkit. + +To use it, add `fluxcd` to the plugins array in your zshrc file: + +```zsh +plugins=(... fluxcd) +``` diff --git a/plugins/fluxcd/fluxcd.plugin.zsh b/plugins/fluxcd/fluxcd.plugin.zsh new file mode 100644 index 000000000..d30866a06 --- /dev/null +++ b/plugins/fluxcd/fluxcd.plugin.zsh @@ -0,0 +1,14 @@ +# Autocompletion for the FluxCD CLI (flux). +if (( ! $+commands[flux] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `flux`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_flux" ]]; then + typeset -g -A _comps + autoload -Uz _flux + _comps[flux]=_flux +fi + +flux completion zsh >| "$ZSH_CACHE_DIR/completions/_flux" &| From a473c0cb4ad325de211f37388b0ff6ae435b6df4 Mon Sep 17 00:00:00 2001 From: Luis Serra <74016165+serrovsky@users.noreply.github.com> Date: Wed, 23 Nov 2022 17:24:46 +0000 Subject: [PATCH 103/253] feat(mongo-atlas): add completion for atlas (#11349) --- plugins/mongo-atlas/README.md | 10 ++++++++++ plugins/mongo-atlas/mongo-atlas.plugin.zsh | 14 ++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 plugins/mongo-atlas/README.md create mode 100644 plugins/mongo-atlas/mongo-atlas.plugin.zsh diff --git a/plugins/mongo-atlas/README.md b/plugins/mongo-atlas/README.md new file mode 100644 index 000000000..ef1b5e0d2 --- /dev/null +++ b/plugins/mongo-atlas/README.md @@ -0,0 +1,10 @@ +# MongoDB Atlas plugin + +This plugin adds completion for [Atlas](https://www.mongodb.com/docs/atlas/cli/stable/) a command line interface built specifically for +MongoDB Atlas. + +To use it, add `mongo-atlas` to the plugins array in your zshrc file: + +```zsh +plugins=(... mongo-atlas) +``` diff --git a/plugins/mongo-atlas/mongo-atlas.plugin.zsh b/plugins/mongo-atlas/mongo-atlas.plugin.zsh new file mode 100644 index 000000000..6762c909e --- /dev/null +++ b/plugins/mongo-atlas/mongo-atlas.plugin.zsh @@ -0,0 +1,14 @@ +# Autocompletion for the Mongo Atlas CLI (atlas). +if (( ! $+commands[atlas] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `atlas`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_atlas" ]]; then + typeset -g -A _comps + autoload -Uz _atlas + _comps[atlas]=_atlas +fi + +atlas completion zsh >| "$ZSH_CACHE_DIR/completions/atlas" &| From da7ea13ba928a36c0b41cb520b0cc192f6389143 Mon Sep 17 00:00:00 2001 From: Mathieu Fenniak Date: Wed, 23 Nov 2022 10:56:26 -0700 Subject: [PATCH 104/253] fix(avit): replace deprecated GREP_COLOR (#11168) --- themes/avit.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/avit.zsh-theme b/themes/avit.zsh-theme index f90ba331b..1279ea919 100644 --- a/themes/avit.zsh-theme +++ b/themes/avit.zsh-theme @@ -82,4 +82,4 @@ ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[white]%}" # LS colors, made with https://geoff.greer.fm/lscolors/ export LSCOLORS="exfxcxdxbxegedabagacad" export LS_COLORS='di=34;40:ln=35;40:so=32;40:pi=33;40:ex=31;40:bd=34;46:cd=34;43:su=0;41:sg=0;46:tw=0;42:ow=0;43:' -export GREP_COLOR='1;33' +export GREP_COLORS='mt=1;33' From a4392cfc16ce6f1ddf1fd085819913ee26dc6189 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 15 Nov 2022 19:40:06 +0100 Subject: [PATCH 105/253] feat(docker): update completion Taken from https://github.com/docker/cli/blob/79dca7a38e9969f9d0694d85adbaf13394d893ac/contrib/completion/zsh/_docker Closes #10826 --- plugins/docker/_docker | 54 +++++++++++++----------------------------- 1 file changed, 17 insertions(+), 37 deletions(-) diff --git a/plugins/docker/_docker b/plugins/docker/_docker index 8ee35abcf..e6a12d774 100644 --- a/plugins/docker/_docker +++ b/plugins/docker/_docker @@ -567,7 +567,7 @@ __docker_container_commands() { "cp:Copy files/folders between a container and the local filesystem" "create:Create a new container" "diff:Inspect changes on a container's filesystem" - "exec:Run a command in a running container" + "exec:Execute a command in a running container" "export:Export a container's filesystem as a tar archive" "inspect:Display detailed information on one or more containers" "kill:Kill one or more running containers" @@ -579,7 +579,7 @@ __docker_container_commands() { "rename:Rename a container" "restart:Restart one or more containers" "rm:Remove one or more containers" - "run:Run a command in a new container" + "run:Create and run a new container from an image" "start:Start one or more stopped containers" "stats:Display a live stream of container(s) resource usage statistics" "stop:Stop one or more running containers" @@ -650,6 +650,7 @@ __docker_container_subcommand() { "($help)*"{-p=,--publish=}"[Expose a container's port to the host]:port:_ports" "($help)--pid=[PID namespace to use]:PID namespace:__docker_complete_pid" "($help)--privileged[Give extended privileges to this container]" + "($help -q --quiet)"{-q,--quiet}"[Suppress the pull output]" "($help)--read-only[Mount the container's root filesystem as read only]" "($help)*--security-opt=[Security options]:security option: " "($help)*--shm-size=[Size of '/dev/shm' (format is '')]:shm size: " @@ -802,7 +803,7 @@ __docker_container_subcommand() { "($help -a --all)"{-a,--all}"[Show all containers]" \ "($help)--before=[Show only container created before...]:containers:__docker_complete_containers" \ "($help)*"{-f=,--filter=}"[Filter values]:filter:__docker_complete_ps_filters" \ - "($help)--format=[Pretty-print containers using a Go template]:template: " \ + "($help)--format=[Format the output using the given Go template]:template: " \ "($help -l --latest)"{-l,--latest}"[Show only the latest created container]" \ "($help -n --last)"{-n=,--last=}"[Show n last created containers (includes all states)]:n:(1 5 10 25 50)" \ "($help)--no-trunc[Do not truncate output]" \ @@ -907,7 +908,7 @@ __docker_container_subcommand() { _arguments $(__docker_arguments) \ $opts_help \ "($help -a --all)"{-a,--all}"[Show all containers (default shows just running)]" \ - "($help)--format=[Pretty-print images using a Go template]:template: " \ + "($help)--format=[Format the output using the given Go template]:template: " \ "($help)--no-stream[Disable streaming stats and only pull the first result]" \ "($help)--no-trunc[Do not truncate output]" \ "($help -)*:containers:__docker_complete_running_containers" && ret=0 @@ -973,8 +974,8 @@ __docker_image_commands() { "load:Load an image from a tar archive or STDIN" "ls:List images" "prune:Remove unused images" - "pull:Pull an image or a repository from a registry" - "push:Push an image or a repository to a registry" + "pull:Download an image from a registry" + "push:Upload an image to a registry" "rm:Remove one or more images" "save:Save one or more images to a tar archive (streamed to STDOUT by default)" "tag:Tag an image into a repository" @@ -1060,7 +1061,7 @@ __docker_image_subcommand() { "($help -a --all)"{-a,--all}"[Show all images]" \ "($help)--digests[Show digests]" \ "($help)*"{-f=,--filter=}"[Filter values]:filter:__docker_complete_images_filters" \ - "($help)--format=[Pretty-print images using a Go template]:template: " \ + "($help)--format=[Format the output using the given Go template]:template: " \ "($help)--no-trunc[Do not truncate output]" \ "($help -q --quiet)"{-q,--quiet}"[Only show image IDs]" \ "($help -): :__docker_complete_repositories" && ret=0 @@ -1082,7 +1083,7 @@ __docker_image_subcommand() { (push) _arguments $(__docker_arguments) \ $opts_help \ - "($help -a --all-tags)"{-a,--all-tags}"[Push all tagged images in the repository]" \ + "($help -a --all-tags)"{-a,--all-tags}"[Push all tags of an image to the repository]" \ "($help)--disable-content-trust[Skip image signing]" \ "($help -): :__docker_complete_images" && ret=0 ;; @@ -1292,7 +1293,7 @@ __docker_network_subcommand() { $opts_help \ "($help)--no-trunc[Do not truncate the output]" \ "($help)*"{-f=,--filter=}"[Provide filter values]:filter:__docker_network_complete_ls_filters" \ - "($help)--format=[Pretty-print networks using a Go template]:template: " \ + "($help)--format=[Format the output using the given Go template]:template: " \ "($help -q --quiet)"{-q,--quiet}"[Only display network IDs]" && ret=0 ;; (prune) @@ -2050,7 +2051,7 @@ __docker_service_subcommand() { _arguments $(__docker_arguments) \ $opts_help \ "($help)*"{-f=,--filter=}"[Filter output based on conditions provided]:filter:__docker_service_complete_ls_filters" \ - "($help)--format=[Pretty-print services using a Go template]:template: " \ + "($help)--format=[Format the output using the given Go template]:template: " \ "($help -q --quiet)"{-q,--quiet}"[Only display IDs]" && ret=0 ;; (rm|remove) @@ -2253,7 +2254,7 @@ __docker_stack_subcommand() { _arguments $(__docker_arguments) \ $opts_help \ "($help)*"{-f=,--filter=}"[Filter output based on conditions provided]:filter:__docker_stack_complete_services_filters" \ - "($help)--format=[Pretty-print services using a Go template]:template: " \ + "($help)--format=[Format the output using the given Go template]:template: " \ "($help -q --quiet)"{-q,--quiet}"[Only display IDs]" \ "($help -):stack:__docker_complete_stacks" && ret=0 ;; @@ -2520,7 +2521,7 @@ __docker_volume_subcommand() { _arguments $(__docker_arguments) \ $opts_help \ "($help)*"{-f=,--filter=}"[Provide filter values]:filter:__docker_volume_complete_ls_filters" \ - "($help)--format=[Pretty-print volumes using a Go template]:template: " \ + "($help)--format=[Format the output using the given Go template]:template: " \ "($help -q --quiet)"{-q,--quiet}"[Only display volume names]" && ret=0 ;; (prune) @@ -2582,10 +2583,8 @@ __docker_context_subcommand() { (create) _arguments $(__docker_arguments) \ $opts_help \ - "($help)--default-stack-orchestrator=[Default orchestrator for stack operations to use with this context]:default-stack-orchestrator:(swarm kubernetes all)" \ "($help)--description=[Description of the context]:description:" \ "($help)--docker=[Set the docker endpoint]:docker:" \ - "($help)--kubernetes=[Set the kubernetes endpoint]:kubernetes:" \ "($help)--from=[Create context from a named context]:from:__docker_complete_contexts" \ "($help -):name: " && ret=0 ;; @@ -2607,10 +2606,8 @@ __docker_context_subcommand() { (update) _arguments $(__docker_arguments) \ $opts_help \ - "($help)--default-stack-orchestrator=[Default orchestrator for stack operations to use with this context]:default-stack-orchestrator:(swarm kubernetes all)" \ "($help)--description=[Description of the context]:description:" \ "($help)--docker=[Set the docker endpoint]:docker:" \ - "($help)--kubernetes=[Set the kubernetes endpoint]:kubernetes:" \ "($help -):name:" && ret=0 ;; esac @@ -2734,9 +2731,6 @@ __docker_subcommand() { "($help -b --bridge)"{-b=,--bridge=}"[Attach containers to a network bridge]:bridge:_net_interfaces" \ "($help)--bip=[Network bridge IP]:IP address: " \ "($help)--cgroup-parent=[Parent cgroup for all containers]:cgroup: " \ - "($help)--cluster-advertise=[Address or interface name to advertise]:Instance to advertise (host\:port): " \ - "($help)--cluster-store=[URL of the distributed storage backend]:Cluster Store:->cluster-store" \ - "($help)*--cluster-store-opt=[Cluster store options]:Cluster options:->cluster-store-options" \ "($help)--config-file=[Path to daemon configuration file]:Config File:_files" \ "($help)--containerd=[Path to containerd socket]:socket:_files -g \"*.sock\"" \ "($help)--containerd-namespace=[Containerd namespace to use]:containerd namespace:" \ @@ -2778,7 +2772,7 @@ __docker_subcommand() { "($help)--oom-score-adjust=[Set the oom_score_adj for the daemon]:oom-score:(-500)" \ "($help -p --pidfile)"{-p=,--pidfile=}"[Path to use for daemon PID file]:PID file:_files" \ "($help)--raw-logs[Full timestamps without ANSI coloring]" \ - "($help)*--registry-mirror=[Preferred Docker registry mirror]:registry mirror: " \ + "($help)*--registry-mirror=[Preferred registry mirror]:registry mirror: " \ "($help)--seccomp-profile=[Path to seccomp profile]:path:_files -g \"*.json\"" \ "($help -s --storage-driver)"{-s=,--storage-driver=}"[Storage driver to use]:driver:(aufs btrfs devicemapper overlay overlay2 vfs zfs)" \ "($help)--selinux-enabled[Enable selinux support]" \ @@ -2795,22 +2789,6 @@ __docker_subcommand() { "($help)--validate[Validate daemon configuration and exit]" && ret=0 case $state in - (cluster-store) - if compset -P '*://'; then - _message 'host:port' && ret=0 - else - store=('consul' 'etcd' 'zk') - _describe -t cluster-store "Cluster Store" store -qS "://" && ret=0 - fi - ;; - (cluster-store-options) - if compset -P '*='; then - _files && ret=0 - else - opts=('discovery.heartbeat' 'discovery.ttl' 'kv.cacertfile' 'kv.certfile' 'kv.keyfile' 'kv.path') - _describe -t cluster-store-opts "Cluster Store Options" opts -qS "=" && ret=0 - fi - ;; (users-groups) if compset -P '*:'; then _groups && ret=0 @@ -3095,6 +3073,7 @@ _docker() { _arguments $(__docker_arguments) -C \ "(: -)"{-h,--help}"[Print usage]" \ "($help)--config[Location of client config files]:path:_directories" \ + "($help -c --context)"{-c=,--context=}"[Execute the command in a docker context]:context:__docker_complete_contexts" \ "($help -D --debug)"{-D,--debug}"[Enable debug mode]" \ "($help -H --host)"{-H=,--host=}"[tcp://host:port to bind/connect to]:host: " \ "($help -l --log-level)"{-l=,--log-level=}"[Logging level]:level:(debug info warn error fatal)" \ @@ -3110,7 +3089,8 @@ _docker() { local host=${opt_args[-H]}${opt_args[--host]} local config=${opt_args[--config]} - local docker_options="${host:+--host $host} ${config:+--config $config}" + local context=${opt_args[-c]}${opt_args[--context]} + local docker_options="${host:+--host $host} ${config:+--config $config} ${context:+--context $context} " case $state in (command) From 1c06ea24fb2176e28facf34b7c2ed2bfb3c79eaa Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 15 Nov 2022 20:05:13 +0100 Subject: [PATCH 106/253] chore(docker): sort and reorganize aliases --- plugins/docker/README.md | 86 +++++++++++++++----------------- plugins/docker/docker.plugin.zsh | 32 +++++------- 2 files changed, 52 insertions(+), 66 deletions(-) diff --git a/plugins/docker/README.md b/plugins/docker/README.md index 606690f14..b865d53ed 100644 --- a/plugins/docker/README.md +++ b/plugins/docker/README.md @@ -13,18 +13,15 @@ https://github.com/docker/cli/blob/master/contrib/completion/zsh/_docker ## Settings -By default, the completion doesn't allow option-stacking, meaning if you try to -complete `docker run -it ` it won't work, because you're _stacking_ the -`-i` and `-t` options. +By default, the completion doesn't allow option-stacking, meaning if you try to complete +`docker run -it ` it won't work, because you're _stacking_ the `-i` and `-t` options. -[You can enable it](https://github.com/docker/cli/commit/b10fb43048) by **adding -the lines below to your zshrc file**, but be aware of the side effects: +[You can enable it](https://github.com/docker/cli/commit/b10fb43048) by **adding the lines below to your zshrc +file**, but be aware of the side effects: -> This enables Zsh to understand commands like `docker run -it -> ubuntu`. However, by enabling this, this also makes Zsh complete -> `docker run -u` with `docker run -uapprox` which is not valid. The -> users have to put the space or the equal sign themselves before trying -> to complete. +> This enables Zsh to understand commands like `docker run -it ubuntu`. However, by enabling this, this also +> makes Zsh complete `docker run -u` with `docker run -uapprox` which is not valid. The users have to put +> the space or the equal sign themselves before trying to complete. > > Therefore, this behavior is disabled by default. To enable it: > @@ -35,39 +32,36 @@ the lines below to your zshrc file**, but be aware of the side effects: ## Aliases -| Alias | Command | Description | -| :------ | :-------------------------- | :--------------------------------------------------------------------------------------- | -| dbl | `docker build` | Build an image from a Dockerfile | -| dcin | `docker container inspect` | Display detailed information on one or more containers | -| dlo | `docker container logs` | Fetch the logs of a docker container | -| dcls | `docker container ls` | List all the running docker containers | -| dclsa | `docker container ls -a` | List all running and stopped containers | -| dpo | `docker container port` | List port mappings or a specific mapping for the container | -| dpu | `docker pull` | Pull an image or a repository from a registry | -| dr | `docker container run` | Create a new container and start it using the specified command | -| drit | `docker container run -it` | Create a new container and start it in an interactive shell | -| drm | `docker container rm` | Remove the specified container(s) | -| drm! | `docker container rm -f` | Force the removal of a running container (uses SIGKILL) | -| dst | `docker container start` | Start one or more stopped containers | -| dstp | `docker container stop` | Stop one or more running containers | -| dtop | `docker top` | Display the running processes of a container | -| dxc | `docker container exec` | Run a new command in a running container | -| dxcit | `docker container exec -it` | Run a new command in a running container in an interactive shell | -| | | **Docker Images** | -| dib | `docker image build` | Build an image from a Dockerfile (same as docker build) | -| dii | `docker image inspect` | Display detailed information on one or more images | -| dils | `docker image ls` | List docker images | -| dipu | `docker image push` | Push an image or repository to a remote registry | -| dirm | `docker image rm` | Remove one or more images | -| dit | `docker image tag` | Add a name and tag to a particular image | -| | | **Docker Network** | -| dnc | `docker network create` | Create a new network | -| dncn | `docker network connect` | Connect a container to a network | -| dndcn | `docker network disconnect` | Disconnect a container from a network | -| dni | `docker network inspect` | Return information about one or more networks | -| dnls | `docker network ls` | List all networks the engine daemon knows about, including those spanning multiple hosts | -| dnrm | `docker network rm` | Remove one or more networks | -| | | **Docker Volume** | -| dvi | `docker volume inspect` | Display detailed information about one or more volumes | -| dvls | `docker volume ls` | List all the volumes known to docker | -| dvprune | `docker volume prune` | Cleanup dangling volumes | +| Alias | Command | Description | +| :------ | :---------------------------- | :--------------------------------------------------------------------------------------- | +| dbl | `docker build` | Build an image from a Dockerfile | +| dcin | `docker container inspect` | Display detailed information on one or more containers | +| dcls | `docker container ls` | List all the running docker containers | +| dclsa | `docker container ls -a` | List all running and stopped containers | +| dib | `docker image build` | Build an image from a Dockerfile (same as docker build) | +| dii | `docker image inspect` | Display detailed information on one or more images | +| dils | `docker image ls` | List docker images | +| dipu | `docker image push` | Push an image or repository to a remote registry | +| dirm | `docker image rm` | Remove one or more images | +| dit | `docker image tag` | Add a name and tag to a particular image | +| dlo | `docker container logs` | Fetch the logs of a docker container | +| dnc | `docker network create` | Create a new network | +| dncn | `docker network connect` | Connect a container to a network | +| dndcn | `docker network disconnect` | Disconnect a container from a network | +| dni | `docker network inspect` | Return information about one or more networks | +| dnls | `docker network ls` | List all networks the engine daemon knows about, including those spanning multiple hosts | +| dnrm | `docker network rm` | Remove one or more networks | +| dpo | `docker container port` | List port mappings or a specific mapping for the container | +| dpu | `docker pull` | Pull an image or a repository from a registry | +| dr | `docker container run` | Create a new container and start it using the specified command | +| drit | `docker container run -it` | Create a new container and start it in an interactive shell | +| drm | `docker container rm` | Remove the specified container(s) | +| drm! | `docker container rm -f` | Force the removal of a running container (uses SIGKILL) | +| dst | `docker container start` | Start one or more stopped containers | +| dstp | `docker container stop` | Stop one or more running containers | +| dtop | `docker top` | Display the running processes of a container | +| dvi | `docker volume inspect` | Display detailed information about one or more volumes | +| dvls | `docker volume ls` | List all the volumes known to docker | +| dvprune | `docker volume prune` | Cleanup dangling volumes | +| dxc | `docker container exec` | Run a new command in a running container | +| dxcit | `docker container exec -it` | Run a new command in a running container in an interactive shell | diff --git a/plugins/docker/docker.plugin.zsh b/plugins/docker/docker.plugin.zsh index 9c8ad8a28..483b3b97e 100644 --- a/plugins/docker/docker.plugin.zsh +++ b/plugins/docker/docker.plugin.zsh @@ -1,39 +1,31 @@ alias dbl='docker build' -alias dpu='docker pull' -alias dtop='docker top' - -# docker containers alias dcin='docker container inspect' -alias dlo='docker container logs' alias dcls='docker container ls' alias dclsa='docker container ls -a' -alias dpo='docker container port' -alias dr='docker container run' -alias drit='docker container run -it' -alias drm='docker container rm' -alias 'drm!'='docker container rm -f' -alias dst='docker container start' -alias dstp='docker container stop' -alias dxc='docker container exec' -alias dxcit='docker container exec -it' - -# docker images alias dib='docker image build' alias dii='docker image inspect' alias dils='docker image ls' alias dipu='docker image push' alias dirm='docker image rm' alias dit='docker image tag' - -# docker network +alias dlo='docker container logs' alias dnc='docker network create' alias dncn='docker network connect' alias dndcn='docker network disconnect' alias dni='docker network inspect' alias dnls='docker network ls' alias dnrm='docker network rm' - -# docker volume +alias dpo='docker container port' +alias dpu='docker pull' +alias dr='docker container run' +alias drit='docker container run -it' +alias drm='docker container rm' +alias 'drm!'='docker container rm -f' +alias dst='docker container start' +alias dstp='docker container stop' +alias dtop='docker top' alias dvi='docker volume inspect' alias dvls='docker volume ls' alias dvprune='docker volume prune' +alias dxc='docker container exec' +alias dxcit='docker container exec -it' From c35ca17258dd870f1724eeb92e9077177d2e3bed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Bernard=20Ara=C3=BAjo?= Date: Tue, 15 Nov 2022 20:05:33 +0100 Subject: [PATCH 107/253] feat(docker): add `dsta` alias Closes #11089 --- plugins/docker/README.md | 1 + plugins/docker/docker.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/docker/README.md b/plugins/docker/README.md index b865d53ed..040a168d6 100644 --- a/plugins/docker/README.md +++ b/plugins/docker/README.md @@ -58,6 +58,7 @@ file**, but be aware of the side effects: | drm | `docker container rm` | Remove the specified container(s) | | drm! | `docker container rm -f` | Force the removal of a running container (uses SIGKILL) | | dst | `docker container start` | Start one or more stopped containers | +| dsta | `docker stop $(docker ps -q)` | Stop all running containers | | dstp | `docker container stop` | Stop one or more running containers | | dtop | `docker top` | Display the running processes of a container | | dvi | `docker volume inspect` | Display detailed information about one or more volumes | diff --git a/plugins/docker/docker.plugin.zsh b/plugins/docker/docker.plugin.zsh index 483b3b97e..737803651 100644 --- a/plugins/docker/docker.plugin.zsh +++ b/plugins/docker/docker.plugin.zsh @@ -22,6 +22,7 @@ alias drit='docker container run -it' alias drm='docker container rm' alias 'drm!'='docker container rm -f' alias dst='docker container start' +alias dsta='docker stop $(docker ps -q)' alias dstp='docker container stop' alias dtop='docker top' alias dvi='docker volume inspect' From 1aa58d42a52b8fa39f16ad169fc405f276c36ae5 Mon Sep 17 00:00:00 2001 From: jzhang046 <25826821+jzhang046@users.noreply.github.com> Date: Sun, 27 Nov 2022 17:54:24 +0800 Subject: [PATCH 108/253] fix(changelog): generate correct commit link in markdown (#11356) --- tools/changelog.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/changelog.sh b/tools/changelog.sh index 6489a3cb2..a5cc468f2 100755 --- a/tools/changelog.sh +++ b/tools/changelog.sh @@ -209,7 +209,7 @@ function display-release { case "$output" in raw) printf '%s' "$hash" ;; text) printf '\e[33m%s\e[0m' "$hash" ;; # red - md) printf '[`%s`](https://github.com/ohmyzsh/ohmyzsh/commit/%s)' "$hash" ;; + md) printf '[`%s`](https://github.com/ohmyzsh/ohmyzsh/commit/%s)' "$hash" "$hash" ;; esac } From 66addc8b45c93f7661a5d8bba93b7b4afcbc23de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Lopes?= <85288424+agnlopes@users.noreply.github.com> Date: Tue, 29 Nov 2022 13:35:57 +0100 Subject: [PATCH 109/253] feat(skaffold): add completion (#11357) --- plugins/skaffold/README.md | 9 +++++++++ plugins/skaffold/skaffold.plugin.zsh | 14 ++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 plugins/skaffold/README.md create mode 100644 plugins/skaffold/skaffold.plugin.zsh diff --git a/plugins/skaffold/README.md b/plugins/skaffold/README.md new file mode 100644 index 000000000..4ee12c666 --- /dev/null +++ b/plugins/skaffold/README.md @@ -0,0 +1,9 @@ +# Skaffold plugin (Autocompletion) + +This plugin adds completion for [Skaffold](https://skaffold.dev) + +To use it, add `skaffold` to the plugins array in your zshrc file: + +```zsh +plugins=(... skaffold) +``` diff --git a/plugins/skaffold/skaffold.plugin.zsh b/plugins/skaffold/skaffold.plugin.zsh new file mode 100644 index 000000000..8296c450c --- /dev/null +++ b/plugins/skaffold/skaffold.plugin.zsh @@ -0,0 +1,14 @@ +# Autocompletion for skaffold +if (( ! $+commands[skaffold] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `skaffold`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_skaffold" ]]; then + typeset -g -A _comps + autoload -Uz _skaffold + _comps[skaffold]=_skaffold +fi + +skaffold completion zsh >| "$ZSH_CACHE_DIR/completions/_skaffold" &| From a051eb04b88cb0a876d1f3d68559d228a14dccf0 Mon Sep 17 00:00:00 2001 From: Marco Collovati Date: Thu, 1 Dec 2022 12:34:38 +0100 Subject: [PATCH 110/253] feat(mvn): add completion for Vaadin (#11362) --- plugins/mvn/mvn.plugin.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/mvn/mvn.plugin.zsh b/plugins/mvn/mvn.plugin.zsh index 1b9141f21..151fbd2a6 100644 --- a/plugins/mvn/mvn.plugin.zsh +++ b/plugins/mvn/mvn.plugin.zsh @@ -283,6 +283,8 @@ function listMavenCompletions { toolchain:toolchain #liberty liberty:clean-server liberty:compile-jsp liberty:configure-arquillian liberty:create-server liberty:debug liberty:debug-server liberty:deploy liberty:dev liberty:display-url liberty:dump-server liberty:install-apps liberty:install-feature liberty:install-server liberty:java-dump-server liberty:package-server liberty:run liberty:run-server liberty:server-status liberty:start liberty:start-server liberty:status liberty:stop liberty:stop-server liberty:test-start-server liberty:test-stop-server liberty:undeploy liberty:uninstall-feature + # vaadin + vaadin:prepare-frontend vaadin:build-frontend vaadin:clean-frontend vaadin:dance # options "-Dmaven.test.skip=true" -DskipTests -DskipITs -Dmaven.surefire.debug -DenableCiProfile "-Dpmd.skip=true" "-Dcheckstyle.skip=true" "-Dtycho.mode=maven" "-Dmaven.test.failure.ignore=true" "-DgroupId=" "-DartifactId=" "-Dversion=" "-Dpackaging=jar" "-Dfile=" From 64bc22aee4d32eb64ee918fc9e63318b68979070 Mon Sep 17 00:00:00 2001 From: Carlo Date: Thu, 1 Dec 2022 19:44:48 +0100 Subject: [PATCH 111/253] feat(nvm): add `silent-autoload` setting (#11363) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Regulski Closes #10942 --- plugins/nvm/README.md | 10 +++++++++- plugins/nvm/nvm.plugin.zsh | 12 +++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/plugins/nvm/README.md b/plugins/nvm/README.md index 4c6312e6e..d3fd980be 100644 --- a/plugins/nvm/README.md +++ b/plugins/nvm/README.md @@ -48,5 +48,13 @@ If set, the plugin will automatically load a node version when if finds a version to load. This can be done, similar as previous options, adding: ```zsh -zstyle ':omz:plugins:nvm' autoload true +zstyle ':omz:plugins:nvm' autoload yes ``` + +To remove the output generated by NVM when autoloading, you can set the following option: + +```zsh +zstyle ':omz:plugins:nvm' silent-autoload yes +``` + +Note: _this will not remove regular `nvm` output_ diff --git a/plugins/nvm/nvm.plugin.zsh b/plugins/nvm/nvm.plugin.zsh index ec583cc2d..c5799c88e 100644 --- a/plugins/nvm/nvm.plugin.zsh +++ b/plugins/nvm/nvm.plugin.zsh @@ -24,11 +24,11 @@ if (( ${+NVM_LAZY} + ${+NVM_LAZY_CMD} + ${+NVM_AUTOLOAD} )); then # Nicely print the list in the style `var1, var2 and var3` echo "${fg[yellow]}[nvm plugin] Variable-style settings are deprecated. Instead of ${(j:, :)used_vars[1,-2]}${used_vars[-2]+ and }${used_vars[-1]}, use:\n" if (( $+NVM_AUTOLOAD )); then - echo " zstyle ':omz:plugins:nvm' autoload true" + echo " zstyle ':omz:plugins:nvm' autoload yes" zstyle ':omz:plugins:nvm' autoload yes fi if (( $+NVM_LAZY )); then - echo " zstyle ':omz:plugins:nvm' lazy true" + echo " zstyle ':omz:plugins:nvm' lazy yes" zstyle ':omz:plugins:nvm' lazy yes fi if (( $+NVM_LAZY_CMD )); then @@ -61,9 +61,11 @@ fi # Autoload nvm when finding a .nvmrc file in the current directory # Adapted from: https://github.com/nvm-sh/nvm#zsh if zstyle -t ':omz:plugins:nvm' autoload; then - load-nvmrc() { + function load-nvmrc { local node_version="$(nvm version)" local nvmrc_path="$(nvm_find_nvmrc)" + local nvm_silent="" + zstyle -t ':omz:plugins:nvm' silent-autoload && _nvm_silent="--silent" if [[ -n "$nvmrc_path" ]]; then local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")") @@ -71,11 +73,11 @@ if zstyle -t ':omz:plugins:nvm' autoload; then if [[ "$nvmrc_node_version" = "N/A" ]]; then nvm install elif [[ "$nvmrc_node_version" != "$node_version" ]]; then - nvm use + nvm use $nvm_silent fi elif [[ "$node_version" != "$(nvm version default)" ]]; then echo "Reverting to nvm default version" - nvm use default + nvm use default $nvm_silent fi } From fc44c49cca9d5e499097392d3f42b1375d0253ba Mon Sep 17 00:00:00 2001 From: Zeragamba Date: Thu, 1 Dec 2022 13:49:41 -0500 Subject: [PATCH 112/253] fix(nvm): trim non-printable chars from .nvmrc (#10997) --- plugins/nvm/nvm.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/nvm/nvm.plugin.zsh b/plugins/nvm/nvm.plugin.zsh index c5799c88e..a4ff29cf1 100644 --- a/plugins/nvm/nvm.plugin.zsh +++ b/plugins/nvm/nvm.plugin.zsh @@ -68,7 +68,7 @@ if zstyle -t ':omz:plugins:nvm' autoload; then zstyle -t ':omz:plugins:nvm' silent-autoload && _nvm_silent="--silent" if [[ -n "$nvmrc_path" ]]; then - local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")") + local nvmrc_node_version=$(nvm version $(cat "$nvmrc_path" | tr -dc '[:print:]')) if [[ "$nvmrc_node_version" = "N/A" ]]; then nvm install From 7ea8a93bb8fb04a070960048aa0b5dca639456a8 Mon Sep 17 00:00:00 2001 From: Mohammad Parvin Date: Fri, 2 Dec 2022 16:19:00 +0330 Subject: [PATCH 113/253] feat(helm): add aliases (#11361) Co-authored-by: Carlo Sala --- plugins/helm/README.md | 11 ++++++++++- plugins/helm/helm.plugin.zsh | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/plugins/helm/README.md b/plugins/helm/README.md index 49844c78f..8be024bfb 100644 --- a/plugins/helm/README.md +++ b/plugins/helm/README.md @@ -1,9 +1,18 @@ # Helm plugin -This plugin adds completion for [Helm](https://helm.sh/), the Kubernetes package manager. +This plugin adds completion and aliases for [Helm](https://helm.sh/), the Kubernetes package manager. To use it, add `helm` to the plugins array in your zshrc file: ```zsh plugins=(... helm) ``` + +## Aliases + +| Alias | Full command | +| ----- | ------------ | +| h | helm | +| hin | helm install | +| hse | helm search | +| hup | helm upgrade | diff --git a/plugins/helm/helm.plugin.zsh b/plugins/helm/helm.plugin.zsh index 151c43d88..7fc05be98 100644 --- a/plugins/helm/helm.plugin.zsh +++ b/plugins/helm/helm.plugin.zsh @@ -11,3 +11,8 @@ else source "$ZSH_CACHE_DIR/completions/_helm" helm completion zsh | tee "$ZSH_CACHE_DIR/completions/_helm" >/dev/null &| fi + +alias h='helm' +alias hin='helm install' +alias hse='helm search' +alias hup='helm upgrade' From 3a9322b9a0698a3861277890f791b43e727cccc5 Mon Sep 17 00:00:00 2001 From: Noam Okman Date: Mon, 5 Dec 2022 15:18:18 +0200 Subject: [PATCH 114/253] feat(yarn): add format alias (#11368) --- plugins/yarn/README.md | 1 + plugins/yarn/yarn.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/yarn/README.md b/plugins/yarn/README.md index cdda2026c..270bf6b7f 100644 --- a/plugins/yarn/README.md +++ b/plugins/yarn/README.md @@ -29,6 +29,7 @@ zstyle ':omz:plugins:yarn' global-path no | yb | `yarn build` | Run the build script defined in `package.json` | | ycc | `yarn cache clean` | Clean yarn's global cache of packages | | yd | `yarn dev` | Run the dev script defined in `package.json` | +| yf | `yarn format` | Run the dev script defined in `package.json` | | yga | `yarn global add` | Install packages globally on your operating system | | ygls | `yarn global list` | Lists global installed packages | | ygrm | `yarn global remove` | Remove global installed packages from your OS | diff --git a/plugins/yarn/yarn.plugin.zsh b/plugins/yarn/yarn.plugin.zsh index bcb8661cf..7ba710df7 100644 --- a/plugins/yarn/yarn.plugin.zsh +++ b/plugins/yarn/yarn.plugin.zsh @@ -17,6 +17,7 @@ alias yap="yarn add --peer" alias yb="yarn build" alias ycc="yarn cache clean" alias yd="yarn dev" +alias yf="yarn format" alias yga="yarn global add" alias ygls="yarn global list" alias ygrm="yarn global remove" From 585e7138b556db89715eb2a850f8959fdf527384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Regulski?= Date: Tue, 6 Dec 2022 18:22:13 +0100 Subject: [PATCH 115/253] fix(nvm): omit message when silent-autoload is enabled (#11371) --- plugins/nvm/nvm.plugin.zsh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/nvm/nvm.plugin.zsh b/plugins/nvm/nvm.plugin.zsh index a4ff29cf1..20697d67d 100644 --- a/plugins/nvm/nvm.plugin.zsh +++ b/plugins/nvm/nvm.plugin.zsh @@ -65,7 +65,7 @@ if zstyle -t ':omz:plugins:nvm' autoload; then local node_version="$(nvm version)" local nvmrc_path="$(nvm_find_nvmrc)" local nvm_silent="" - zstyle -t ':omz:plugins:nvm' silent-autoload && _nvm_silent="--silent" + zstyle -t ':omz:plugins:nvm' silent-autoload && nvm_silent="--silent" if [[ -n "$nvmrc_path" ]]; then local nvmrc_node_version=$(nvm version $(cat "$nvmrc_path" | tr -dc '[:print:]')) @@ -76,7 +76,10 @@ if zstyle -t ':omz:plugins:nvm' autoload; then nvm use $nvm_silent fi elif [[ "$node_version" != "$(nvm version default)" ]]; then - echo "Reverting to nvm default version" + if [[ -z $nvm_silent ]]; then + echo "Reverting to nvm default version" + fi + nvm use default $nvm_silent fi } From 658eb01d82c01d82b4263b3dc59e15232cb4cdaf Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 6 Dec 2022 22:51:52 +0100 Subject: [PATCH 116/253] refactor(kubectl): standarize completion generation --- plugins/kubectl/kubectl.plugin.zsh | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/plugins/kubectl/kubectl.plugin.zsh b/plugins/kubectl/kubectl.plugin.zsh index 095d2b328..b415d1ad8 100644 --- a/plugins/kubectl/kubectl.plugin.zsh +++ b/plugins/kubectl/kubectl.plugin.zsh @@ -1,15 +1,17 @@ -if (( $+commands[kubectl] )); then - # If the completion file does not exist, generate it and then source it - # Otherwise, source it and regenerate in the background - if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then - kubectl completion zsh | tee "$ZSH_CACHE_DIR/completions/_kubectl" >/dev/null - source "$ZSH_CACHE_DIR/completions/_kubectl" - else - source "$ZSH_CACHE_DIR/completions/_kubectl" - kubectl completion zsh | tee "$ZSH_CACHE_DIR/completions/_kubectl" >/dev/null &| - fi +if (( ! $+commands[kubectl] )); then + return fi +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `kubectl`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then + typeset -g -A _comps + autoload -Uz _kubectl + _comps[kubectl]=_kubectl +fi + +kubectl completion zsh >| "$ZSH_CACHE_DIR/completions/_kubectl" &| + # This command is used a LOT both below and in daily life alias k=kubectl From b692ff2e1597816563cbdaeeedf0966ad9babeca Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Wed, 7 Dec 2022 12:18:51 +0100 Subject: [PATCH 117/253] fix(kubectl): redirect stderr in completion generation Fixes #11364 --- plugins/kubectl/kubectl.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/kubectl/kubectl.plugin.zsh b/plugins/kubectl/kubectl.plugin.zsh index b415d1ad8..315d3ce93 100644 --- a/plugins/kubectl/kubectl.plugin.zsh +++ b/plugins/kubectl/kubectl.plugin.zsh @@ -10,7 +10,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then _comps[kubectl]=_kubectl fi -kubectl completion zsh >| "$ZSH_CACHE_DIR/completions/_kubectl" &| +kubectl completion zsh 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_kubectl" &| # This command is used a LOT both below and in daily life alias k=kubectl From f4dc8c5be365668810783ced01a86ff8f251bfd7 Mon Sep 17 00:00:00 2001 From: fedor <60283525+izumrudik@users.noreply.github.com> Date: Thu, 8 Dec 2022 14:38:13 +0300 Subject: [PATCH 118/253] fix(tmux): use `$...SESSION_NAME` while attaching (#10946) --- plugins/tmux/tmux.plugin.zsh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/tmux/tmux.plugin.zsh b/plugins/tmux/tmux.plugin.zsh index b9bb66d59..311c2e6a9 100644 --- a/plugins/tmux/tmux.plugin.zsh +++ b/plugins/tmux/tmux.plugin.zsh @@ -73,7 +73,11 @@ function _zsh_tmux_plugin_run() { [[ "$ZSH_TMUX_UNICODE" == "true" ]] && tmux_cmd+=(-u) # Try to connect to an existing session. - [[ "$ZSH_TMUX_AUTOCONNECT" == "true" ]] && $tmux_cmd attach + if [[ -n "$ZSH_TMUX_DEFAULT_SESSION_NAME" ]]; then + [[ "$ZSH_TMUX_AUTOCONNECT" == "true" ]] && $tmux_cmd attach -t $ZSH_TMUX_DEFAULT_SESSION_NAME + else + [[ "$ZSH_TMUX_AUTOCONNECT" == "true" ]] && $tmux_cmd attach + fi # If failed, just run tmux, fixing the TERM variable if requested. if [[ $? -ne 0 ]]; then @@ -83,9 +87,9 @@ function _zsh_tmux_plugin_run() { tmux_cmd+=(-f "$ZSH_TMUX_CONFIG") fi if [[ -n "$ZSH_TMUX_DEFAULT_SESSION_NAME" ]]; then - $tmux_cmd new-session -s $ZSH_TMUX_DEFAULT_SESSION_NAME + $tmux_cmd new-session -s $ZSH_TMUX_DEFAULT_SESSION_NAME else - $tmux_cmd new-session + $tmux_cmd new-session fi fi From cc5100d1e9e3d843ab93a12a5b0bac71ae0425f3 Mon Sep 17 00:00:00 2001 From: Neil Girdhar Date: Fri, 9 Dec 2022 04:07:52 -0500 Subject: [PATCH 119/253] feat(pip): add several aliases (#10647) --- plugins/pip/README.md | 8 ++++++++ plugins/pip/pip.plugin.zsh | 26 +++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/plugins/pip/README.md b/plugins/pip/README.md index 88d88227e..70d40c79f 100644 --- a/plugins/pip/README.md +++ b/plugins/pip/README.md @@ -22,6 +22,14 @@ the next time you autocomplete `pip install`. | Alias | Description | | :------- | :-------------------------------------------- | +| pipi | Install packages | +| pipig | Install package from GitHub repository | +| pipigb | Install package from GitHub branch | +| pipigp | Install package from GitHub pull request | +| pipu | Upgrade packages | +| pipun | Uninstall packages | +| pipgi | Grep through installed packages | +| piplo | List outdated packages | | pipreq | Create requirements file | | pipir | Install packages from `requirements.txt` file | | pipupall | Update all installed packages | diff --git a/plugins/pip/pip.plugin.zsh b/plugins/pip/pip.plugin.zsh index 90e39e118..bf1aafd4a 100644 --- a/plugins/pip/pip.plugin.zsh +++ b/plugins/pip/pip.plugin.zsh @@ -88,6 +88,12 @@ else alias pip="noglob pip" fi +alias pipi="pip install" +alias pipu="pip install --upgrade" +alias pipun="pip uninstall" +alias pipgi="pip freeze | grep" +alias piplo="pip list -o" + # Create requirements file alias pipreq="pip freeze > requirements.txt" @@ -102,10 +108,28 @@ function pipupall { pip list --outdated | awk 'NR > 2 { print $1 }' | ${=xargs} pip install --upgrade } -# Uninstalled all installed packages +# Uninstall all installed packages function pipunall { # non-GNU xargs does not support nor need `--no-run-if-empty` local xargs="xargs --no-run-if-empty" xargs --version 2>/dev/null | grep -q GNU || xargs="xargs" pip list --format freeze | cut -d= -f1 | ${=xargs} pip uninstall } + +# Install from GitHub repository +function pipig { + pip install "git+https://github.com/$1.git" +} +compdef _pip pipig + +# Install from GitHub branch +function pipigb { + pip install "git+https://github.com/$1.git@$2" +} +compdef _pip pipigb + +# Install from GitHub pull request +function pipigp { + pip install "git+https://github.com/$1.git@refs/pull/$2/head" +} +compdef _pip pipigp From c189e8b40c2a9ed15850d5bb5a68e6789be5fc70 Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Fri, 9 Dec 2022 18:10:04 +0000 Subject: [PATCH 120/253] feat(agnoster): add remote-tracking status to prompt (#7209) --- themes/agnoster.zsh-theme | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme index 5f4efe813..88854eccd 100644 --- a/themes/agnoster.zsh-theme +++ b/themes/agnoster.zsh-theme @@ -116,6 +116,17 @@ prompt_git() { prompt_segment green $CURRENT_FG fi + local ahead behind + ahead=$(git log --oneline @{upstream}.. 2>/dev/null) + behind=$(git log --oneline ..@{upstream} 2>/dev/null) + if [[ -n "$ahead" ]] && [[ -n "$behind" ]]; then + PL_BRANCH_CHAR=$'\u21c5' + elif [[ -n "$ahead" ]]; then + PL_BRANCH_CHAR=$'\u21b1' + elif [[ -n "$behind" ]]; then + PL_BRANCH_CHAR=$'\u21b0' + fi + if [[ -e "${repo_path}/BISECT_LOG" ]]; then mode=" " elif [[ -e "${repo_path}/MERGE_HEAD" ]]; then From 82c0db41bcfd3fd97d6170dcb7575f98e38fc68d Mon Sep 17 00:00:00 2001 From: Basil Sh Date: Sat, 10 Dec 2022 00:11:16 +0600 Subject: [PATCH 121/253] docs(term_tab): rewrite README in markdown (#11381) --- plugins/term_tab/README | 16 ---------------- plugins/term_tab/README.md | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 16 deletions(-) delete mode 100644 plugins/term_tab/README create mode 100644 plugins/term_tab/README.md diff --git a/plugins/term_tab/README b/plugins/term_tab/README deleted file mode 100644 index 316062e73..000000000 --- a/plugins/term_tab/README +++ /dev/null @@ -1,16 +0,0 @@ - -term_tab - 'cwd' for all open zsh sessions -****************************************** - -What it does: -************* -This plugin allows to complete the 'cwd' of other Zsh sessions. Sounds -complicated but is rather simple. E.g. if you have three zsh sessions open, in -each session you are in a different folder, you can hit Ctrl+v in one session -to show you the current working directory of the other open zsh sessions. - -How it works: -************* -* It uses 'pidof zsh' to determine all zsh PIDs -* It reads procfs to get the current working directory of this session -* Everything is fed into zsh's completion magic diff --git a/plugins/term_tab/README.md b/plugins/term_tab/README.md new file mode 100644 index 000000000..7548fe6a8 --- /dev/null +++ b/plugins/term_tab/README.md @@ -0,0 +1,16 @@ +# term_tab plugin + +term_tab - `cwd` for all open zsh sessions + +## What it does: + +This plugin allows to complete the `cwd` of other Zsh sessions. Sounds +complicated but is rather simple. E.g. if you have three zsh sessions open, in +each session you are in a different folder, you can hit `Ctrl+V` in one session +to show you the current working directory of the other open zsh sessions. + +## How it works: + +* It uses `pidof zsh` to determine all zsh PIDs +* It reads procfs to get the current working directory of this session +* Everything is fed into zsh's completion magic From 29cf199b5d84eb4897f2e0e421a344174568eb9f Mon Sep 17 00:00:00 2001 From: Richard Mitchell Date: Mon, 12 Dec 2022 03:18:29 -0500 Subject: [PATCH 122/253] docs(term_tab): plugin can only be used with linux and solaris (#11385) --- plugins/term_tab/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/term_tab/README.md b/plugins/term_tab/README.md index 7548fe6a8..59462a825 100644 --- a/plugins/term_tab/README.md +++ b/plugins/term_tab/README.md @@ -1,5 +1,7 @@ # term_tab plugin +This plugin only works for Solaris and linux. + term_tab - `cwd` for all open zsh sessions ## What it does: From 3705edf557922f286a5054523d6d7208e2ed6f5e Mon Sep 17 00:00:00 2001 From: kormosi <53222723+kormosi@users.noreply.github.com> Date: Thu, 15 Dec 2022 11:47:10 +0100 Subject: [PATCH 123/253] feat(docker): add `drs` alias (#11393) --- plugins/docker/README.md | 1 + plugins/docker/docker.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/docker/README.md b/plugins/docker/README.md index 040a168d6..512b5d17c 100644 --- a/plugins/docker/README.md +++ b/plugins/docker/README.md @@ -58,6 +58,7 @@ file**, but be aware of the side effects: | drm | `docker container rm` | Remove the specified container(s) | | drm! | `docker container rm -f` | Force the removal of a running container (uses SIGKILL) | | dst | `docker container start` | Start one or more stopped containers | +| drs | `docker container restart` | Restart one or more containers | dsta | `docker stop $(docker ps -q)` | Stop all running containers | | dstp | `docker container stop` | Stop one or more running containers | | dtop | `docker top` | Display the running processes of a container | diff --git a/plugins/docker/docker.plugin.zsh b/plugins/docker/docker.plugin.zsh index 737803651..8684a9785 100644 --- a/plugins/docker/docker.plugin.zsh +++ b/plugins/docker/docker.plugin.zsh @@ -22,6 +22,7 @@ alias drit='docker container run -it' alias drm='docker container rm' alias 'drm!'='docker container rm -f' alias dst='docker container start' +alias drs='docker container restart' alias dsta='docker stop $(docker ps -q)' alias dstp='docker container stop' alias dtop='docker top' From 13082bb159361d1c0807eb7e5577f4c670cb0f88 Mon Sep 17 00:00:00 2001 From: Till Backhaus Date: Fri, 16 Dec 2022 12:46:34 +0100 Subject: [PATCH 124/253] feat(watson): add completion (#10886) Co-authored-by: Carlo Sala --- plugins/watson/README.md | 9 +++++++++ plugins/watson/_watson | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 plugins/watson/README.md create mode 100644 plugins/watson/_watson diff --git a/plugins/watson/README.md b/plugins/watson/README.md new file mode 100644 index 000000000..ef734ec63 --- /dev/null +++ b/plugins/watson/README.md @@ -0,0 +1,9 @@ +# Watson + +This plugin provides completion for [Watson](https://tailordev.github.io/Watson/). + +To use it add `watson` to the plugins array in your zshrc file. + +```zsh +plugins=(... watson) +``` diff --git a/plugins/watson/_watson b/plugins/watson/_watson new file mode 100644 index 000000000..0f599bd66 --- /dev/null +++ b/plugins/watson/_watson @@ -0,0 +1,34 @@ +#compdef watson + +_watson_completion() { + local -a completions + local -a completions_with_descriptions + local -a response + (( ! $+commands[watson] )) && return 1 + + response=("${(@f)$(env COMP_WORDS="${words[*]}" COMP_CWORD=$((CURRENT-1)) _WATSON_COMPLETE=zsh_complete watson)}") + + for type key descr in ${response}; do + if [[ "$type" == "plain" ]]; then + if [[ "$descr" == "_" ]]; then + completions+=("$key") + else + completions_with_descriptions+=("$key":"$descr") + fi + elif [[ "$type" == "dir" ]]; then + _path_files -/ + elif [[ "$type" == "file" ]]; then + _path_files -f + fi + done + + if [ -n "$completions_with_descriptions" ]; then + _describe -V unsorted completions_with_descriptions -U + fi + + if [ -n "$completions" ]; then + compadd -U -V unsorted -a completions + fi +} + +compdef _watson_completion watson; From 2bc42d223cfe3e21aef06648fb971bd9fb00828e Mon Sep 17 00:00:00 2001 From: Renjith Date: Sat, 17 Dec 2022 22:23:48 +0530 Subject: [PATCH 125/253] feat(docker-compose): add `dcupdb` alias (#10235) --- plugins/docker-compose/README.md | 39 ++++++++++--------- .../docker-compose/docker-compose.plugin.zsh | 1 + 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/plugins/docker-compose/README.md b/plugins/docker-compose/README.md index 13f3c2cea..bbcff2e0c 100644 --- a/plugins/docker-compose/README.md +++ b/plugins/docker-compose/README.md @@ -11,22 +11,23 @@ plugins=(... docker-compose) ## Aliases -| Alias | Command | Description | -|-----------|--------------------------------|------------------------------------------------------------------| -| dco | `docker-compose` | Docker-compose main command | -| dcb | `docker-compose build` | Build containers | -| dce | `docker-compose exec` | Execute command inside a container | -| dcps | `docker-compose ps` | List containers | -| dcrestart | `docker-compose restart` | Restart container | -| dcrm | `docker-compose rm` | Remove container | -| dcr | `docker-compose run` | Run a command in container | -| dcstop | `docker-compose stop` | Stop a container | -| dcup | `docker-compose up` | Build, (re)create, start, and attach to containers for a service | -| dcupb | `docker-compose up --build` | Same as `dcup`, but build images before starting containers | -| dcupd | `docker-compose up -d` | Same as `dcup`, but starts as daemon | -| dcdn | `docker-compose down` | Stop and remove containers | -| dcl | `docker-compose logs` | Show logs of container | -| dclf | `docker-compose logs -f` | Show logs and follow output | -| dcpull | `docker-compose pull` | Pull image of a service | -| dcstart | `docker-compose start` | Start a container | -| dck | `docker-compose kill` | Kills containers | +| Alias | Command | Description | +|-----------|--------------------------------|----------------------------------------------------------------------------------| +| dco | `docker-compose` | Docker-compose main command | +| dcb | `docker-compose build` | Build containers | +| dce | `docker-compose exec` | Execute command inside a container | +| dcps | `docker-compose ps` | List containers | +| dcrestart | `docker-compose restart` | Restart container | +| dcrm | `docker-compose rm` | Remove container | +| dcr | `docker-compose run` | Run a command in container | +| dcstop | `docker-compose stop` | Stop a container | +| dcup | `docker-compose up` | Build, (re)create, start, and attach to containers for a service | +| dcupb | `docker-compose up --build` | Same as `dcup`, but build images before starting containers | +| dcupd | `docker-compose up -d` | Same as `dcup`, but starts as daemon | +| dcupdb | `docker-compose up -d --build` | Same as `dcup`, but build images before starting containers and starts as daemon | +| dcdn | `docker-compose down` | Stop and remove containers | +| dcl | `docker-compose logs` | Show logs of container | +| dclf | `docker-compose logs -f` | Show logs and follow output | +| dcpull | `docker-compose pull` | Pull image of a service | +| dcstart | `docker-compose start` | Start a container | +| dck | `docker-compose kill` | Kills containers | diff --git a/plugins/docker-compose/docker-compose.plugin.zsh b/plugins/docker-compose/docker-compose.plugin.zsh index b8a4b067d..7a8bf4a03 100644 --- a/plugins/docker-compose/docker-compose.plugin.zsh +++ b/plugins/docker-compose/docker-compose.plugin.zsh @@ -12,6 +12,7 @@ alias dcstop="$dccmd stop" alias dcup="$dccmd up" alias dcupb="$dccmd up --build" alias dcupd="$dccmd up -d" +alias dcupdb="$dccmd up -d --build" alias dcdn="$dccmd down" alias dcl="$dccmd logs" alias dclf="$dccmd logs -f" From 9c2d1af8afa02b5439e8ccc81a160e62e1e59617 Mon Sep 17 00:00:00 2001 From: Andrew Starr-Bochicchio Date: Tue, 20 Dec 2022 14:56:30 -0500 Subject: [PATCH 126/253] fix(doctl): actually load completions (#11402) --- plugins/doctl/doctl.plugin.zsh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/doctl/doctl.plugin.zsh b/plugins/doctl/doctl.plugin.zsh index d23ed085c..7b3a384a9 100644 --- a/plugins/doctl/doctl.plugin.zsh +++ b/plugins/doctl/doctl.plugin.zsh @@ -4,6 +4,14 @@ # # Author: https://github.com/HalisCz -if [ $commands[doctl] ]; then - source <(doctl completion zsh) +if (( ! $+commands[doctl] )); then + return fi + +if [[ ! -f "$ZSH_CACHE_DIR/completions/_doctl" ]]; then + typeset -g -A _comps + autoload -Uz _doctl + _comps[doctl]=_doctl +fi + +doctl completion zsh >| "$ZSH_CACHE_DIR/completions/_doctl" &| From a3c579bf27b34942d4c6ad64e7cfd75788b05ea3 Mon Sep 17 00:00:00 2001 From: Nur Rony <2513341+nurrony@users.noreply.github.com> Date: Mon, 26 Dec 2022 14:41:30 +0600 Subject: [PATCH 127/253] feat(maven): add `quarkus` command support (#11405) --- plugins/mvn/mvn.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/mvn/mvn.plugin.zsh b/plugins/mvn/mvn.plugin.zsh index 151fbd2a6..da51f74df 100644 --- a/plugins/mvn/mvn.plugin.zsh +++ b/plugins/mvn/mvn.plugin.zsh @@ -196,7 +196,7 @@ function listMavenCompletions { # spring-boot spring-boot:run spring-boot:repackage # quarkus - quarkus:dev quarkus:list-extensions quarkus:add-extension quarkus:add-extensions quarkus:generate-config quarkus:help + quarkus:dev quarkus:list-extensions quarkus:add-extension quarkus:add-extensions quarkus:remove-extension quarkus:remove-extensions quarkus:generate-config quarkus:help # exec exec:exec exec:java # versions @@ -287,7 +287,7 @@ function listMavenCompletions { vaadin:prepare-frontend vaadin:build-frontend vaadin:clean-frontend vaadin:dance # options - "-Dmaven.test.skip=true" -DskipTests -DskipITs -Dmaven.surefire.debug -DenableCiProfile "-Dpmd.skip=true" "-Dcheckstyle.skip=true" "-Dtycho.mode=maven" "-Dmaven.test.failure.ignore=true" "-DgroupId=" "-DartifactId=" "-Dversion=" "-Dpackaging=jar" "-Dfile=" + "-Dmaven.test.skip=true" -DskipTests -DskipITs -Dmaven.surefire.debug -DenableCiProfile "-Dpmd.skip=true" "-Dcheckstyle.skip=true" "-Dtycho.mode=maven" "-Dmaven.test.failure.ignore=true" "-DgroupId=" "-DartifactId=" "-Dversion=" "-Dpackaging=jar" "-Dfile=" "-Dextensions=" # arguments -am --also-make From 55e4e6c73b2bb067974c6d49ba9da2ba1ee3295c Mon Sep 17 00:00:00 2001 From: "the.brain.w" Date: Fri, 30 Dec 2022 11:52:18 +0100 Subject: [PATCH 128/253] feat(systemd): add support for user units in prompt (#11417) --- plugins/systemd/systemd.plugin.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/systemd/systemd.plugin.zsh b/plugins/systemd/systemd.plugin.zsh index 7afd2be58..1270bea0e 100644 --- a/plugins/systemd/systemd.plugin.zsh +++ b/plugins/systemd/systemd.plugin.zsh @@ -107,6 +107,8 @@ function systemd_prompt_info { if systemctl is-active "$unit" &>/dev/null; then echo -n "$ZSH_THEME_SYSTEMD_PROMPT_ACTIVE" + elif systemctl --user is-active "$unit" &>/dev/null; then + echo -n "$ZSH_THEME_SYSTEMD_PROMPT_ACTIVE" else echo -n "$ZSH_THEME_SYSTEMD_PROMPT_NOTACTIVE" fi From 6710fd588aec2c0cb90e70c02db0837c3646af99 Mon Sep 17 00:00:00 2001 From: Ennio Mara Date: Mon, 2 Jan 2023 21:32:45 +0100 Subject: [PATCH 129/253] fix(autojump): fix autojump sourcing in nix (-darwin) (#11422) * fix(autojump): fix autojump sourcing in nix (-darwin) This plugin expects to source an sh/zsh file which sets up autojump, but that is not done when running Nix on macos using nix-darwin. Looking at the old value (/etc/profiles/per-user/$USER/bin/autojump), it points to a binary file instead of the setup script. * Use zsh file instead of sh --- plugins/autojump/autojump.plugin.zsh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/plugins/autojump/autojump.plugin.zsh b/plugins/autojump/autojump.plugin.zsh index e11f231b6..9bc190bdc 100644 --- a/plugins/autojump/autojump.plugin.zsh +++ b/plugins/autojump/autojump.plugin.zsh @@ -1,18 +1,18 @@ declare -a autojump_paths autojump_paths=( - $HOME/.autojump/etc/profile.d/autojump.zsh # manual installation - $HOME/.autojump/share/autojump/autojump.zsh # manual installation - $HOME/.nix-profile/etc/profile.d/autojump.sh # NixOS installation - /run/current-system/sw/share/autojump/autojump.zsh # NixOS installation - /usr/share/autojump/autojump.zsh # Debian and Ubuntu package - /etc/profile.d/autojump.zsh # manual installation - /etc/profile.d/autojump.sh # Gentoo installation - /usr/local/share/autojump/autojump.zsh # FreeBSD installation - /usr/pkg/share/autojump/autojump.zsh # NetBSD installation - /opt/local/etc/profile.d/autojump.sh # macOS with MacPorts - /usr/local/etc/profile.d/autojump.sh # macOS with Homebrew (default) - /opt/homebrew/etc/profile.d/autojump.sh # macOS with Homebrew (default on M1 macs) - /etc/profiles/per-user/$USER/bin/autojump # macOS Nix, Home Manager and flakes + $HOME/.autojump/etc/profile.d/autojump.zsh # manual installation + $HOME/.autojump/share/autojump/autojump.zsh # manual installation + $HOME/.nix-profile/etc/profile.d/autojump.sh # NixOS installation + /run/current-system/sw/share/autojump/autojump.zsh # NixOS installation + /usr/share/autojump/autojump.zsh # Debian and Ubuntu package + /etc/profile.d/autojump.zsh # manual installation + /etc/profile.d/autojump.sh # Gentoo installation + /usr/local/share/autojump/autojump.zsh # FreeBSD installation + /usr/pkg/share/autojump/autojump.zsh # NetBSD installation + /opt/local/etc/profile.d/autojump.sh # macOS with MacPorts + /usr/local/etc/profile.d/autojump.sh # macOS with Homebrew (default) + /opt/homebrew/etc/profile.d/autojump.sh # macOS with Homebrew (default on M1 macs) + /etc/profiles/per-user/$USER/etc/profile.d/autojump.zsh # macOS Nix, Home Manager and flakes ) for file in $autojump_paths; do From 36f1055eeea0f455676381539fcb3e6e0a4da731 Mon Sep 17 00:00:00 2001 From: Ennio Mara Date: Mon, 2 Jan 2023 21:55:47 +0100 Subject: [PATCH 130/253] fix(autojump): use sh file instead of zsh in NixOS (#11425) --- plugins/autojump/autojump.plugin.zsh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/plugins/autojump/autojump.plugin.zsh b/plugins/autojump/autojump.plugin.zsh index 9bc190bdc..1b868ee8d 100644 --- a/plugins/autojump/autojump.plugin.zsh +++ b/plugins/autojump/autojump.plugin.zsh @@ -1,18 +1,18 @@ declare -a autojump_paths autojump_paths=( - $HOME/.autojump/etc/profile.d/autojump.zsh # manual installation - $HOME/.autojump/share/autojump/autojump.zsh # manual installation - $HOME/.nix-profile/etc/profile.d/autojump.sh # NixOS installation - /run/current-system/sw/share/autojump/autojump.zsh # NixOS installation - /usr/share/autojump/autojump.zsh # Debian and Ubuntu package - /etc/profile.d/autojump.zsh # manual installation - /etc/profile.d/autojump.sh # Gentoo installation - /usr/local/share/autojump/autojump.zsh # FreeBSD installation - /usr/pkg/share/autojump/autojump.zsh # NetBSD installation - /opt/local/etc/profile.d/autojump.sh # macOS with MacPorts - /usr/local/etc/profile.d/autojump.sh # macOS with Homebrew (default) - /opt/homebrew/etc/profile.d/autojump.sh # macOS with Homebrew (default on M1 macs) - /etc/profiles/per-user/$USER/etc/profile.d/autojump.zsh # macOS Nix, Home Manager and flakes + $HOME/.autojump/etc/profile.d/autojump.zsh # manual installation + $HOME/.autojump/share/autojump/autojump.zsh # manual installation + $HOME/.nix-profile/etc/profile.d/autojump.sh # NixOS installation + /run/current-system/sw/share/autojump/autojump.zsh # NixOS installation + /usr/share/autojump/autojump.zsh # Debian and Ubuntu package + /etc/profile.d/autojump.zsh # manual installation + /etc/profile.d/autojump.sh # Gentoo installation + /usr/local/share/autojump/autojump.zsh # FreeBSD installation + /usr/pkg/share/autojump/autojump.zsh # NetBSD installation + /opt/local/etc/profile.d/autojump.sh # macOS with MacPorts + /usr/local/etc/profile.d/autojump.sh # macOS with Homebrew (default) + /opt/homebrew/etc/profile.d/autojump.sh # macOS with Homebrew (default on M1 macs) + /etc/profiles/per-user/$USER/etc/profile.d/autojump.sh # macOS Nix, Home Manager and flakes ) for file in $autojump_paths; do From 00c37b6991895aac0398a24d7d8b78cda63dec05 Mon Sep 17 00:00:00 2001 From: Alastair Rankine Date: Tue, 3 Jan 2023 03:44:53 -0500 Subject: [PATCH 131/253] feat(pipenv): standarize completion generation (#11424) Co-authored-by: Carlo Sala Closes #11423 --- plugins/pipenv/pipenv.plugin.zsh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/plugins/pipenv/pipenv.plugin.zsh b/plugins/pipenv/pipenv.plugin.zsh index 4be61a920..244bd6b7c 100644 --- a/plugins/pipenv/pipenv.plugin.zsh +++ b/plugins/pipenv/pipenv.plugin.zsh @@ -1,8 +1,16 @@ -# Pipenv completion -_pipenv() { - eval $(env COMMANDLINE="${words[1,$CURRENT]}" _PIPENV_COMPLETE=complete-zsh pipenv) -} -compdef _pipenv pipenv +if (( ! $+commands[pipenv] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `pipenv`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_pipenv" ]]; then + typeset -g -A _comps + autoload -Uz _pipenv + _comps[pipenv]=_pipenv +fi + +_PIPENV_COMPLETE=zsh_source pipenv >| "$ZSH_CACHE_DIR/completions/_pipenv" &| # Automatic pipenv shell activation/deactivation _togglePipenvShell() { From 3fca9c8933afc5c118a73cedb171a3c7b8e92730 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 3 Jan 2023 10:02:03 +0100 Subject: [PATCH 132/253] fix(upgrade): check if git is available and working macOS seems to break dev tools when updating the system. This should prevent the previous issues. See #11309 Closes #11420 --- tools/check_for_upgrade.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh index cc527e72d..3a6bb6555 100644 --- a/tools/check_for_upgrade.sh +++ b/tools/check_for_upgrade.sh @@ -24,7 +24,7 @@ zstyle -s ':omz:update' mode update_mode || { # - git is unavailable on the system. if [[ "$update_mode" = disabled ]] \ || [[ ! -w "$ZSH" || ! -O "$ZSH" ]] \ - || ! command -v git &>/dev/null; then + || ! command git --version 2>&1 >/dev/null; then unset update_mode return fi From 280c99dae691e468d12c94f64c97964b88cdad4e Mon Sep 17 00:00:00 2001 From: ZigZagT Date: Thu, 5 Jan 2023 15:03:12 -0800 Subject: [PATCH 133/253] feat(git): accept `default` and `mainline` as main branches (#11431) --- plugins/git/git.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 69745730c..76e58a121 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -31,7 +31,7 @@ function work_in_progress() { function git_main_branch() { command git rev-parse --git-dir &>/dev/null || return local ref - for ref in refs/{heads,remotes/{origin,upstream}}/{main,trunk}; do + for ref in refs/{heads,remotes/{origin,upstream}}/{main,trunk,mainline,default}; do if command git show-ref -q --verify $ref; then echo ${ref:t} return From 71ca38652b039c41ef9b415d0fc05926c37a0bfb Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Fri, 6 Jan 2023 00:14:33 +0100 Subject: [PATCH 134/253] fix(git-extras): type properly `__gitex_command_successful` calls Closes #11430 --- plugins/git-extras/git-extras.plugin.zsh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/git-extras/git-extras.plugin.zsh b/plugins/git-extras/git-extras.plugin.zsh index b86d7c5b6..6b96e12af 100644 --- a/plugins/git-extras/git-extras.plugin.zsh +++ b/plugins/git-extras/git-extras.plugin.zsh @@ -51,7 +51,7 @@ __gitex_remote_names() { local expl declare -a remote_names remote_names=(${(f)"$(_call_program remotes git remote 2>/dev/null)"}) - __git_command_successful || return + __gitex_command_successful || return _wanted remote-names expl remote-name compadd $* - $remote_names } @@ -59,7 +59,7 @@ __gitex_tag_names() { local expl declare -a tag_names tag_names=(${${(f)"$(_call_program tags git for-each-ref --format='"%(refname)"' refs/tags 2>/dev/null)"}#refs/tags/}) - __git_command_successful || return + __gitex_command_successful || return _wanted tag-names expl tag-name compadd $* - $tag_names } @@ -68,7 +68,7 @@ __gitex_branch_names() { local expl declare -a branch_names branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/}) - __git_command_successful || return + __gitex_command_successful || return _wanted branch-names expl branch-name compadd $* - $branch_names } @@ -76,7 +76,7 @@ __gitex_specific_branch_names() { local expl declare -a branch_names branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads/"$1" 2>/dev/null)"}#refs/heads/$1/}) - __git_command_successful || return + __gitex_command_successful || return _wanted branch-names expl branch-name compadd - $branch_names } @@ -100,7 +100,7 @@ __gitex_submodule_names() { local expl declare -a submodule_names submodule_names=(${(f)"$(_call_program branchrefs git submodule status | awk '{print $2}')"}) # ' - __git_command_successful || return + __gitex_command_successful || return _wanted submodule-names expl submodule-name compadd $* - $submodule_names } @@ -109,7 +109,7 @@ __gitex_author_names() { local expl declare -a author_names author_names=(${(f)"$(_call_program branchrefs git log --format='%aN' | sort -u)"}) - __git_command_successful || return + __gitex_command_successful || return _wanted author-names expl author-name compadd $* - $author_names } From 69dfd7758033b3e771dcd184c1b143d166a85481 Mon Sep 17 00:00:00 2001 From: Maksym Date: Fri, 6 Jan 2023 14:39:45 +0000 Subject: [PATCH 135/253] chore: remove maksyms as maintainer of aws plugin (#11432) I'm afraid I no longer use `ohmyzsh` or even `zsh` in favour of `fish`. Hence, it doesn't make sense for me to continue being the code owner for the plugin. Good luck with an amazing tool! --- .github/CODEOWNERS | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c6b3e8ce9..6668cd7ce 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,6 +1,5 @@ # Plugin owners plugins/archlinux/ @ratijas -plugins/aws/ @maksyms plugins/genpass/ @atoponce plugins/git-lfs/ @hellovietduc plugins/gitfast/ @felipec From 08c3ce8882ea0bbbfb0a734f1f8870a72ba21f8a Mon Sep 17 00:00:00 2001 From: Lee Stetson Date: Mon, 9 Jan 2023 13:59:02 -0500 Subject: [PATCH 136/253] feat(bridgetown): Add plugin for Ruby bridgetown site generator (#10496) --- plugins/bridgetown/README.md | 26 ++++++++++++++++++++++++ plugins/bridgetown/bridgetown.plugin.zsh | 12 +++++++++++ 2 files changed, 38 insertions(+) create mode 100644 plugins/bridgetown/README.md create mode 100644 plugins/bridgetown/bridgetown.plugin.zsh diff --git a/plugins/bridgetown/README.md b/plugins/bridgetown/README.md new file mode 100644 index 000000000..0a41814ee --- /dev/null +++ b/plugins/bridgetown/README.md @@ -0,0 +1,26 @@ +# Bridgetown plugin + +This plugin adds some aliases and autocompletion for common [Bridgetown](https://bridgetownrb.com/) commands. + +To use it, add `bridgetown` to the plugins array in your zshrc file: + +```zsh +plugins=(... bridgetown) +``` + +## Aliases + +| Alias | Command | +|-------|----------------------------| +| br | `bridgetown` | +| bra | `bin/bridgetown apply` | +| brb | `bin/bridgetown build` | +| brc | `bin/bridgetown console` | +| brclean | `bin/bridgetown clean` | +| brd | `bin/bridgetown deploy` | +| brdoc | `bin/bridgetown doctor` | +| brh | `bin/bridgetown help` | +| brn | `bridgetown new` | +| brp | `bridgetown plugins` | +| brpl | `bridgetown plugins list` | +| brs | `bin/bridgetown start` | diff --git a/plugins/bridgetown/bridgetown.plugin.zsh b/plugins/bridgetown/bridgetown.plugin.zsh new file mode 100644 index 000000000..502e9dfe0 --- /dev/null +++ b/plugins/bridgetown/bridgetown.plugin.zsh @@ -0,0 +1,12 @@ +alias br='bridgetown' +alias bra='bin/bridgetown apply' +alias brb='bin/bridgetown build' +alias brc='bin/bridgetown console' +alias brclean='bin/bridgetown clean' +alias brd='bin/bridgetown deploy' +alias brdoc='bin/bridgetown doctor' +alias brh='bin/bridgetown help' +alias brn='bridgetown new' +alias brp='bridgetown plugins' +alias brpl='bridgetown plugins list' +alias brs='bin/bridgetown start' From 746424f1614a70a8c318979f5cf348babe603d54 Mon Sep 17 00:00:00 2001 From: Sung kyung Park <44727001+sungkpark@users.noreply.github.com> Date: Mon, 9 Jan 2023 20:02:44 +0100 Subject: [PATCH 137/253] feat(homebrew): Adding new alias for brew uninstall --zap as buz closes #10329 (#10331) * Adding new alias for brew uninstall --zap as buz * Closes #10329 * add buz * closes #10329 * Fix typo * Closes ohmyzsh#10329 * Closes ohmyzsh#10329 Co-authored-by: Sung Co-authored-by: Robby Russell --- plugins/brew/README.md | 3 +++ plugins/brew/brew.plugin.zsh | 2 ++ 2 files changed, 5 insertions(+) diff --git a/plugins/brew/README.md b/plugins/brew/README.md index 9ce2c5bb0..cfaedccd8 100644 --- a/plugins/brew/README.md +++ b/plugins/brew/README.md @@ -21,6 +21,7 @@ defined for convenience. | -------- | ------------------------------------- | ------------------------------------------------------------------- | | `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | | `bcubo` | `brew update && brew outdated --cask` | Update Homebrew data, then list outdated casks. | +| `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | | `brewp` | `brew pin` | Pin a specified formula so that it's not upgraded. | | `brews` | `brew list -1` | List installed formulae or the installed files for a given formula. | | `brewsp` | `brew list --pinned` | List pinned formulae, or show the version of a given formula. | @@ -28,6 +29,8 @@ defined for convenience. | `bubo` | `brew update && brew outdated` | Update Homebrew data, then list outdated formulae and casks. | | `bubu` | `bubo && bubc` | Do the last two operations above. | | `buf` | `brew upgrade --formula` | Upgrade only formulas (not casks). | +| `buz` | `brew uninstall --zap` | Remove all files associated with a cask. | + ## Completion diff --git a/plugins/brew/brew.plugin.zsh b/plugins/brew/brew.plugin.zsh index ea8900823..808c50907 100644 --- a/plugins/brew/brew.plugin.zsh +++ b/plugins/brew/brew.plugin.zsh @@ -27,12 +27,14 @@ fi alias bcubc='brew upgrade --cask && brew cleanup' alias bcubo='brew update && brew outdated --cask' +alias bcubc='brew upgrade --cask && brew cleanup' alias brewp='brew pin' alias brewsp='brew list --pinned' alias bubc='brew upgrade && brew cleanup' alias bubo='brew update && brew outdated' alias bubu='bubo && bubc' alias buf='brew upgrade --formula' +alias buz='brew uninstall --zap' function brews() { local formulae="$(brew leaves | xargs brew deps --installed --for-each)" From fc86a16255a92fad36882666e093750c1aba4b21 Mon Sep 17 00:00:00 2001 From: "F. Javier Campa L" Date: Mon, 9 Jan 2023 20:07:41 +0100 Subject: [PATCH 138/253] feat(homebrew): Brew greedy upgrade aliases (#9623) * Added 'greedy' brew upgrade aliases' * Added a description of the new 'greedy' upgrade aliases Co-authored-by: Robby Russell --- plugins/brew/README.md | 2 +- plugins/brew/brew.plugin.zsh | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/brew/README.md b/plugins/brew/README.md index cfaedccd8..4a42b3d74 100644 --- a/plugins/brew/README.md +++ b/plugins/brew/README.md @@ -26,12 +26,12 @@ defined for convenience. | `brews` | `brew list -1` | List installed formulae or the installed files for a given formula. | | `brewsp` | `brew list --pinned` | List pinned formulae, or show the version of a given formula. | | `bubc` | `brew upgrade && brew cleanup` | Upgrade outdated formulae and casks, then run cleanup. | +| `bugbc` | `brew upgrade --greedy && brew cleanup` | Upgrade outdated formulae and casks (greedy), then run cleanup. | | `bubo` | `brew update && brew outdated` | Update Homebrew data, then list outdated formulae and casks. | | `bubu` | `bubo && bubc` | Do the last two operations above. | | `buf` | `brew upgrade --formula` | Upgrade only formulas (not casks). | | `buz` | `brew uninstall --zap` | Remove all files associated with a cask. | - ## Completion With the release of Homebrew 1.0, they decided to bundle the zsh completion as part of the diff --git a/plugins/brew/brew.plugin.zsh b/plugins/brew/brew.plugin.zsh index 808c50907..8275454a4 100644 --- a/plugins/brew/brew.plugin.zsh +++ b/plugins/brew/brew.plugin.zsh @@ -31,8 +31,10 @@ alias bcubc='brew upgrade --cask && brew cleanup' alias brewp='brew pin' alias brewsp='brew list --pinned' alias bubc='brew upgrade && brew cleanup' +alias bugbc='brew upgrade --greedy && brew cleanup' alias bubo='brew update && brew outdated' alias bubu='bubo && bubc' +alias bubug='bubo && bugbc' alias buf='brew upgrade --formula' alias buz='brew uninstall --zap' From 6eefaf56afae27739c31e21be477688634a6b5fa Mon Sep 17 00:00:00 2001 From: Kenneth Tan Date: Tue, 10 Jan 2023 03:14:35 +0800 Subject: [PATCH 139/253] fix(brew): renamed buf alias to bfu (#11195) * chore(plugins/brew): rename buf alias to bfu The alias `buf` collides with the protobuf tooling (buf)[https://buf.build/]. This commit renames the `buf` alias to `bfu` (`brew upgrade --formula`) so its semantically more aligned with `bcu` (`brew upgrade --cask`) as well as to avoid command collision especially with existing scripts that refers to `buf` as the tool and not the alias. * chore(brew): updated README.md Updated README to reflect renamed alias (`buf` -> `bfu`) Co-authored-by: Robby Russell From bc36043e8f004e130df7dc2f4708e2313e400bff Mon Sep 17 00:00:00 2001 From: A2n Date: Mon, 9 Jan 2023 20:23:31 +0100 Subject: [PATCH 140/253] feature(heroku-cli): Add heroku cli alias (#9073) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ feat(alias): import alias from local repo * 📝 feat(alias): import doc form local repo --- plugins/heroku-alias/README.md | 127 +++++++++++++++++++++++++++ plugins/heroku-alias/heroku.alias.sh | 92 +++++++++++++++++++ 2 files changed, 219 insertions(+) create mode 100644 plugins/heroku-alias/README.md create mode 100644 plugins/heroku-alias/heroku.alias.sh diff --git a/plugins/heroku-alias/README.md b/plugins/heroku-alias/README.md new file mode 100644 index 000000000..4b7b953fd --- /dev/null +++ b/plugins/heroku-alias/README.md @@ -0,0 +1,127 @@ +# heroku-alias +🧬 Full alias for heroku cli + +|🚀 last maj|📡 source| +|---|---| +|02/06/2020|[heroku cli doc](https://devcenter.heroku.com/articles/heroku-cli-commands)| + +# Alias list + +## general +| Alias | Command | +| ------------- | ------------- | +| h | heroku | +| hauto | heroku autocomplete $(echo $SHELL) | +| hl | heroku local | + +## config +| Alias | Command | +| ------------- | ------------- | +| hc | heroku config | +| hca | heroku config -a | +| hcr | heroku config -r | +| hcs | heroku config:set | +| hcu | heroku config:unset | +| hcfile | function hcfile bellow | + +```sh +hcfile() { + echo " Which platform [-r/a name] ? " + read platform + echo " Which file ? " + read file + while read line; + do heroku config:set "$platform" "$line"; + done < "$file" +} +``` + +## apps and favorites +| Alias | Command | +| ------------- | ------------- | +| ha | heroku apps | +| hpop | heroku create | +| hkill | heroku apps:destroy | +| hlog | heroku apps:errors | +| hfav | heroku apps:favorites | +| hfava | heroku apps:favorites:add | +| hfavr | heroku apps:favorites:remove | +| hai | heroku apps:info | +| hair | heroku apps:info -r | +| haia | heroku apps:info -a | + +# auth +| Alias | Command | +| ------------- | ------------- | +| h2fa | heroku auth:2fa | +| h2far | heroku auth:2fa:disable | + +# access +| Alias | Command | +| ------------- | ------------- | +| hac | heroku access | +| hacr | heroku access -r | +| haca | heroku access -a | +| hadd | heroku access:add | +| hdel | heroku access:remove | +| hup | heroku access:update | + +## addons +| Alias | Command | +| ------------- | ------------- | +| hads | heroku addons -A | +| hada | heroku addons -a | +| hadr | heroku addons -r | +| hadat | heroku addons:attach | +| hadc | heroku addons:create | +| hadel | heroku addons:destroy | +| hadde | heroku addons:detach | +| hadoc | heroku addons:docs | + +## login +| Alias | Command | +| ------------- | ------------- | +| hin | heroku login | +| hout | heroku logout | +| hi | heroku login -i | +| hwho | heroku auth:whoami | + +## authorizations +| Alias | Command | +| ------------- | ------------- | +| hth | heroku authorizations | +| hthadd | heroku authorizations:create | +| hthif | heroku authorizations:info | +| hthdel | heroku authorizations:revoke | +| hthrot | heroku authorizations:rotate | +| hthup | heroku authorizations:update | + +## plugins +| Alias | Command | +| ------------- | ------------- | +| hp | heroku plugins | + +# log +| Alias | Command | +| ------------- | ------------- | +|hg | heroku logs| +| hgt | heroku log tail | + +# database +| Alias | Command | +| ------------- | ------------- | +| hpg | heroku pg | +| hpsql | heroku pg:psql | +| hpb | heroku pg:backups | +| hpbc | heroku pg:backups:capture | +| hpbd | heroku pg:backups:download | +| hpbr | heroku pg:backups:restore | + +# certs +| Alias | Command | +| ------------- | ------------- | +| hssl | heroku certs | +| hssli | heroku certs:info | +| hssla | heroku certs:add | +| hsslu | heroku certs:update | +| hsslr | heroku certs:remove | diff --git a/plugins/heroku-alias/heroku.alias.sh b/plugins/heroku-alias/heroku.alias.sh new file mode 100644 index 000000000..7daf715b5 --- /dev/null +++ b/plugins/heroku-alias/heroku.alias.sh @@ -0,0 +1,92 @@ +# general +alias h='heroku' +alias hauto='heroku autocomplete $(echo $SHELL)' +alias hl='heroku local' + +# log +alias hg='heroku logs' +alias hgt='heroku log tail' + +# database +alias hpg='heroku pg' +alias hpsql='heroku pg:psql' +alias hpb='heroku pg:backups' +alias hpbc='heroku pg:backups:capture' +alias hpbd='heroku pg:backups:download' +alias hpbr='heroku pg:backups:restore' + +# config +alias hc='heroku config' +alias hca='heroku config -a' +alias hcr='heroku config -r' +alias hcs='heroku config:set' +alias hcu='heroku config:unset' + +# this function allow to load multi env set in a file +hcfile() { + echo 'Which platform [-r/a name] ?' + read platform + echo 'Which file ?' + read file + while read line; + do heroku config:set "$platform" "$line"; + done < "$file" +} + +# apps and favorites +alias ha='heroku apps' +alias hpop='heroku create' +alias hkill='heroku apps:destroy' +alias hlog='heroku apps:errors' +alias hfav='heroku apps:favorites' +alias hfava='heroku apps:favorites:add' +alias hfavr='heroku apps:favorites:remove' +alias hai='heroku apps:info' +alias hair='heroku apps:info -r' +alias haia='heroku apps:info -a' + +# auth +alias h2fa='heroku auth:2fa' +alias h2far='heroku auth:2fa:disable' + +# access +alias hac='heroku access' +alias hacr='heroku access -r' +alias haca='heroku access -a' +alias hadd='heroku access:add' +alias hdel='heroku access:remove' +alias hup='heroku access:update' + +# addons +alias hads='heroku addons -A' +alias hada='heroku addons -a' +alias hadr='heroku addons -r' +alias hadat='heroku addons:attach' +alias hadc='heroku addons:create' +alias hadel='heroku addons:destroy' +alias hadde='heroku addons:detach' +alias hadoc='heroku addons:docs' + +# login +alias hin='heroku login' +alias hout='heroku logout' +alias hi='heroku login -i' +alias hwho='heroku auth:whoami' + +# authorizations +alias hth='heroku authorizations' +alias hthadd='heroku authorizations:create' +alias hthif='heroku authorizations:info' +alias hthdel='heroku authorizations:revoke' +alias hthrot='heroku authorizations:rotate' +alias hthup='heroku authorizations:update' + +# plugins +alias hp='heroku plugins' + +# cert +alias hssl='heroku certs' +alias hssli='heroku certs:info' +alias hssla='heroku certs:add' +alias hsslu='heroku certs:update' +alias hsslr='heroku certs:remove' From 9f31951019401449e057a236886d133f58c5cc64 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 9 Jan 2023 13:30:08 -0600 Subject: [PATCH 141/253] fix(jira): Make prefix check on "jira branch" command case-insensitive (#8799) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Make prefix check on "jira branch" command case-insensitive * Update plugins/jira/jira.plugin.zsh Co-authored-by: Marc Cornellà * Fixing tabs to spaces Co-authored-by: Robby Russell Co-authored-by: Marc Cornellà --- plugins/jira/README.md | 5 +++++ plugins/jira/jira.plugin.zsh | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/jira/README.md b/plugins/jira/README.md index a5633af77..f8751aaa2 100644 --- a/plugins/jira/README.md +++ b/plugins/jira/README.md @@ -27,6 +27,11 @@ jira branch # opens an existing issue matching the current branch name # The branch name may have prefixes ending in "/": "feature/MP-1234", # and also suffixes starting with "_": "MP-1234_fix_dashboard" # In both these cases, the issue opened will be "MP-1234" + # This is also checks if the prefix is in the name, and adds it if not, so: + # "MP-1234" opens the issue "MP-1234", + # "mp-1234" opens the issue "mp-1234", + # and "1234" opens the issue "MP-1234". +# NOTE: since jira is case insensitive, the first two examples open the same issue jira ABC-123 # opens an existing issue jira ABC-123 m # opens an existing issue for adding a comment ``` diff --git a/plugins/jira/jira.plugin.zsh b/plugins/jira/jira.plugin.zsh index 22807e0ae..37d7b6a27 100644 --- a/plugins/jira/jira.plugin.zsh +++ b/plugins/jira/jira.plugin.zsh @@ -75,7 +75,7 @@ function jira() { # Strip suffixes starting with _ issue_arg=(${(s:_:)issue_arg}) issue_arg=${issue_arg[1]} - if [[ "$issue_arg" = ${jira_prefix}* ]]; then + if [[ "${issue_arg:l}" = ${jira_prefix:l}* ]]; then issue="${issue_arg}" else issue="${jira_prefix}${issue_arg}" From fc722807f815bd170849f92d215ce2afa62e55b6 Mon Sep 17 00:00:00 2001 From: August Feng <46177585+augustfengd@users.noreply.github.com> Date: Mon, 9 Jan 2023 14:43:42 -0500 Subject: [PATCH 142/253] refactor(jira)!: rename myissues to mine and add completion (#10931) --- plugins/jira/README.md | 2 +- plugins/jira/_jira | 1 + plugins/jira/jira.plugin.zsh | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/jira/README.md b/plugins/jira/README.md index f8751aaa2..a7cfe6d9e 100644 --- a/plugins/jira/README.md +++ b/plugins/jira/README.md @@ -18,11 +18,11 @@ This plugin supplies one command, `jira`, through which all its features are exp jira # performs the default action jira new # opens a new issue +jira mine # queries for your own issues jira dashboard # opens your JIRA dashboard jira tempo # opens your JIRA Tempo jira reported [username] # queries for issues reported by a user jira assigned [username] # queries for issues assigned to a user -jira myissues # queries for you own issues jira branch # opens an existing issue matching the current branch name # The branch name may have prefixes ending in "/": "feature/MP-1234", # and also suffixes starting with "_": "MP-1234_fix_dashboard" diff --git a/plugins/jira/_jira b/plugins/jira/_jira index 1ac3eeda3..0e37b7e9d 100644 --- a/plugins/jira/_jira +++ b/plugins/jira/_jira @@ -4,6 +4,7 @@ local -a _1st_arguments _1st_arguments=( 'new:create a new issue' + 'mine:open my issues' 'dashboard:open the dashboard' 'tempo:open the tempo' 'reported:search for issues reported by a user' diff --git a/plugins/jira/jira.plugin.zsh b/plugins/jira/jira.plugin.zsh index 37d7b6a27..0add040d1 100644 --- a/plugins/jira/jira.plugin.zsh +++ b/plugins/jira/jira.plugin.zsh @@ -44,7 +44,7 @@ function jira() { open_command "${jira_url}/secure/CreateIssue!default.jspa" elif [[ "$action" == "assigned" || "$action" == "reported" ]]; then _jira_query ${@:-$action} - elif [[ "$action" == "myissues" ]]; then + elif [[ "$action" == "mine" ]]; then echo "Opening my issues" open_command "${jira_url}/issues/?filter=-1" elif [[ "$action" == "dashboard" ]]; then From 585084354e7ecf3b93c6eedb2ece70e914ee28b9 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Mon, 9 Jan 2023 21:45:20 +0200 Subject: [PATCH 143/253] feat(jira): add optional plugin "tempo" path (#11121) CHANGE: added new environment variable JIRA_TEMPO_PATH to allow set an optional path Co-authored-by: Vladimir Antoscenco --- plugins/jira/README.md | 1 + plugins/jira/jira.plugin.zsh | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/jira/README.md b/plugins/jira/README.md index a7cfe6d9e..3d6d323a4 100644 --- a/plugins/jira/README.md +++ b/plugins/jira/README.md @@ -68,6 +68,7 @@ echo "https://jira.atlassian.com" >> .jira-url * `$JIRA_PREFIX` - Prefix added to issue ID arguments * `$JIRA_RAPID_BOARD` - Set to `true` if you use Rapid Board * `$JIRA_DEFAULT_ACTION` - Action to do when `jira` is called with no arguments; defaults to "new" +* `$JIRA_TEMPO_PATH` - Your JIRA tempo url path; defaults to "/secure/Tempo.jspa" ### Browser ### diff --git a/plugins/jira/jira.plugin.zsh b/plugins/jira/jira.plugin.zsh index 0add040d1..71224bdfb 100644 --- a/plugins/jira/jira.plugin.zsh +++ b/plugins/jira/jira.plugin.zsh @@ -56,13 +56,18 @@ function jira() { fi elif [[ "$action" == "tempo" ]]; then echo "Opening tempo" - open_command "${jira_url}/secure/Tempo.jspa" + if [[ -n "$JIRA_TEMPO_PATH" ]]; then + open_command "${jira_url}${JIRA_TEMPO_PATH}" + else + open_command "${jira_url}/secure/Tempo.jspa" + fi elif [[ "$action" == "dumpconfig" ]]; then echo "JIRA_URL=$jira_url" echo "JIRA_PREFIX=$jira_prefix" echo "JIRA_NAME=$JIRA_NAME" echo "JIRA_RAPID_BOARD=$JIRA_RAPID_BOARD" echo "JIRA_DEFAULT_ACTION=$JIRA_DEFAULT_ACTION" + echo "JIRA_TEMPO_PATH=$JIRA_TEMPO_PATH" else # Anything that doesn't match a special action is considered an issue name # but `branch` is a special case that will parse the current git branch From e0d0dfb845a8f1eb35bce8ca5afcd76cb2ffbb35 Mon Sep 17 00:00:00 2001 From: Arnaud Zheng Date: Mon, 9 Jan 2023 20:53:32 +0100 Subject: [PATCH 144/253] feat(jira): support rapid view on rapid board mode (#9459) * feat(jira): support rapid view on rapid board mode * Update README to clarify how the rapid board/view works Co-authored-by: Robby Russell --- plugins/jira/README.md | 3 ++- plugins/jira/jira.plugin.zsh | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/plugins/jira/README.md b/plugins/jira/README.md index 3d6d323a4..5dc5bfc96 100644 --- a/plugins/jira/README.md +++ b/plugins/jira/README.md @@ -18,8 +18,8 @@ This plugin supplies one command, `jira`, through which all its features are exp jira # performs the default action jira new # opens a new issue +jira dashboard [rapid_view] # opens your JIRA dashboard jira mine # queries for your own issues -jira dashboard # opens your JIRA dashboard jira tempo # opens your JIRA Tempo jira reported [username] # queries for issues reported by a user jira assigned [username] # queries for issues assigned to a user @@ -67,6 +67,7 @@ echo "https://jira.atlassian.com" >> .jira-url * `$JIRA_NAME` - Your JIRA username; used as the default user for `assigned`/`reported` searches * `$JIRA_PREFIX` - Prefix added to issue ID arguments * `$JIRA_RAPID_BOARD` - Set to `true` if you use Rapid Board +* `$JIRA_RAPID_VIEW` - Set the default rapid view; it doesn't work if `$JIRA_RAPID_BOARD` is set to false * `$JIRA_DEFAULT_ACTION` - Action to do when `jira` is called with no arguments; defaults to "new" * `$JIRA_TEMPO_PATH` - Your JIRA tempo url path; defaults to "/secure/Tempo.jspa" diff --git a/plugins/jira/jira.plugin.zsh b/plugins/jira/jira.plugin.zsh index 71224bdfb..e789fce92 100644 --- a/plugins/jira/jira.plugin.zsh +++ b/plugins/jira/jira.plugin.zsh @@ -50,7 +50,7 @@ function jira() { elif [[ "$action" == "dashboard" ]]; then echo "Opening dashboard" if [[ "$JIRA_RAPID_BOARD" == "true" ]]; then - open_command "${jira_url}/secure/RapidBoard.jspa" + _jira_rapid_board ${@} else open_command "${jira_url}/secure/Dashboard.jspa" fi @@ -65,6 +65,7 @@ function jira() { echo "JIRA_URL=$jira_url" echo "JIRA_PREFIX=$jira_prefix" echo "JIRA_NAME=$JIRA_NAME" + echo "JIRA_RAPID_VIEW=$JIRA_RAPID_VIEW" echo "JIRA_RAPID_BOARD=$JIRA_RAPID_BOARD" echo "JIRA_DEFAULT_ACTION=$JIRA_DEFAULT_ACTION" echo "JIRA_TEMPO_PATH=$JIRA_TEMPO_PATH" @@ -112,6 +113,16 @@ Valid options, in order of precedence: EOF } +function _jira_rapid_board() { + rapid_view=${2:=$JIRA_RAPID_VIEW} + + if [[ -z $rapid_view ]]; then + open_command "${jira_url}/secure/RapidBoard.jspa" + else + open_command "${jira_url}/secure/RapidBoard.jspa?rapidView=$rapid_view" + fi +} + function _jira_query() { emulate -L zsh local verb="$1" From 2c2187b09d6dc488bb67968748ec07f7235a0238 Mon Sep 17 00:00:00 2001 From: cxy004 Date: Tue, 10 Jan 2023 04:02:51 +0800 Subject: [PATCH 145/253] fix(macos): fix `man-preview` for macOS Ventura (#11324) --- plugins/macos/macos.plugin.zsh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/macos/macos.plugin.zsh b/plugins/macos/macos.plugin.zsh index b540eecb5..e4d759dcf 100644 --- a/plugins/macos/macos.plugin.zsh +++ b/plugins/macos/macos.plugin.zsh @@ -224,8 +224,9 @@ function quick-look() { } function man-preview() { + local location # Don't let Preview.app steal focus if the man page doesn't exist - man -w "$@" &>/dev/null && man -t "$@" | open -f -a Preview || man "$@" + location=$(man -w "$@") && mandoc -Tpdf $location | open -f -a Preview } compdef _man man-preview From 046f0ca5571e28aa328566d5f81a338e074cf174 Mon Sep 17 00:00:00 2001 From: Robby Russell Date: Mon, 9 Jan 2023 20:25:08 +0000 Subject: [PATCH 146/253] fix(jira): Update README examples to a table format --- plugins/jira/README.md | 44 +++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/plugins/jira/README.md b/plugins/jira/README.md index 5dc5bfc96..d78ea15a4 100644 --- a/plugins/jira/README.md +++ b/plugins/jira/README.md @@ -14,27 +14,31 @@ In this document, "JIRA" refers to the JIRA issue tracking server, and `jira` re This plugin supplies one command, `jira`, through which all its features are exposed. Most forms of this command open a JIRA page in your web browser. -``` -jira # performs the default action +## Commands + +| Command | Description | +| :------------ | :-------------------------------------------------------- | +| `jira` | Performs the default action | +| `jira new` | Opens a new Jira issue dialogue | +| `jira ABC-123` | Opens an existing issue | +| `jira ABC-123 m` | Opens an existing issue for adding a comment | +| `jira dashboard [rapid_view]` | # opens your JIRA dashboard | +| `jira mine` | Queries for your own issues | +| `jira tempo` | Opens your JIRA Tempo | +| `jira reported [username]` | Queries for issues reported by a user | +| `jira assigned [username]` | Queries for issues assigned to a user | +| `jira branch` | Opens an existing issue matching the current branch name | + + +### Jira Branch usage notes + +The branch name may have prefixes ending in "/": "feature/MP-1234", and also suffixes +starting with "_": "MP-1234_fix_dashboard". In both these cases, the issue opened will be "MP-1234" + +This is also checks if the prefix is in the name, and adds it if not, so: "MP-1234" opens the issue "MP-1234", +"mp-1234" opens the issue "mp-1234", and "1234" opens the issue "MP-1234". + -jira new # opens a new issue -jira dashboard [rapid_view] # opens your JIRA dashboard -jira mine # queries for your own issues -jira tempo # opens your JIRA Tempo -jira reported [username] # queries for issues reported by a user -jira assigned [username] # queries for issues assigned to a user -jira branch # opens an existing issue matching the current branch name - # The branch name may have prefixes ending in "/": "feature/MP-1234", - # and also suffixes starting with "_": "MP-1234_fix_dashboard" - # In both these cases, the issue opened will be "MP-1234" - # This is also checks if the prefix is in the name, and adds it if not, so: - # "MP-1234" opens the issue "MP-1234", - # "mp-1234" opens the issue "mp-1234", - # and "1234" opens the issue "MP-1234". -# NOTE: since jira is case insensitive, the first two examples open the same issue -jira ABC-123 # opens an existing issue -jira ABC-123 m # opens an existing issue for adding a comment -``` #### Debugging usage #### From e583648195a33afb6ec4ebddb1926570a9a5e475 Mon Sep 17 00:00:00 2001 From: Celestino Gomes Date: Mon, 9 Jan 2023 17:46:54 -0300 Subject: [PATCH 147/253] feat(qrcode): new plugin to generate qrcode via https://qrcode.show (#10247) * feat(qrcode): new plugin to generate qrcode via https://qrcode.show * code fix suggested by @JuniorJPDJ * Update docs to clarify how to interact with it Co-authored-by: Robby Russell --- plugins/qrcode/README.md | 8 ++++++++ plugins/qrcode/qrcode.plugin.zsh | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 plugins/qrcode/README.md create mode 100644 plugins/qrcode/qrcode.plugin.zsh diff --git a/plugins/qrcode/README.md b/plugins/qrcode/README.md new file mode 100644 index 000000000..bcc870541 --- /dev/null +++ b/plugins/qrcode/README.md @@ -0,0 +1,8 @@ +# QRCode plugin + +Generate a QR Code from the command line. Uses [QRcode.show](https://qrcode.show) via curl. + +alias | command +--------------- | -------- +`qrcode [text]` | `curl -d "text" qrcode.show` +`qrsvg [text]` | `curl -d "text" qrcode.show -H "Accepct: image.svg"` diff --git a/plugins/qrcode/qrcode.plugin.zsh b/plugins/qrcode/qrcode.plugin.zsh new file mode 100644 index 000000000..d757e135e --- /dev/null +++ b/plugins/qrcode/qrcode.plugin.zsh @@ -0,0 +1,17 @@ +# Imported and improved from https://qrcode.show/, section SHELL FUNCTIONS + +_qrcode_show_message() { + echo "Type or paste your text, add a new blank line, and press ^d" +} + +qrcode () { + local input="$*" + [ -z "$input" ] && _qrcode_show_message && local input="@/dev/stdin" + curl -d "$input" https://qrcode.show +} + +qrsvg () { + local input="$*" + [ -z "$input" ] && _qrcode_show_message && local input="@/dev/stdin" + curl -d "$input" https://qrcode.show -H "Accept: image/svg+xml" +} From 4181e8a2cc936bc7b7a89d674bf261023159ed35 Mon Sep 17 00:00:00 2001 From: Dmndz <46868530+d14mndz@users.noreply.github.com> Date: Mon, 9 Jan 2023 21:51:50 +0100 Subject: [PATCH 148/253] feat(yarn): add alias for `yarn why` (#10773) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(yarn): add `yarn why` * docs(yarn): update readme Co-authored-by: Basia Józefowska Co-authored-by: Robby Russell --- plugins/yarn/README.md | 1 + plugins/yarn/yarn.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/yarn/README.md b/plugins/yarn/README.md index 270bf6b7f..5c7c7f323 100644 --- a/plugins/yarn/README.md +++ b/plugins/yarn/README.md @@ -55,3 +55,4 @@ zstyle ':omz:plugins:yarn' global-path no | yv | `yarn version` | Update the version of your package | | yw | `yarn workspace` | Run a command within a single workspace. | | yws | `yarn workspaces` | Run a command within all defined workspaces. | +| yy | `yarn why` | Show why a package has been installed, detailing which other packages depend on it | diff --git a/plugins/yarn/yarn.plugin.zsh b/plugins/yarn/yarn.plugin.zsh index 7ba710df7..157044d71 100644 --- a/plugins/yarn/yarn.plugin.zsh +++ b/plugins/yarn/yarn.plugin.zsh @@ -43,3 +43,4 @@ alias yup="yarn upgrade" alias yv="yarn version" alias yw="yarn workspace" alias yws="yarn workspaces" +alias yy="yarn why" From 3dd83a22a160249a71631a51490fd3b89d1b3975 Mon Sep 17 00:00:00 2001 From: Lawton Nichols Date: Wed, 11 Jan 2023 10:44:29 -0800 Subject: [PATCH 149/253] fix(lib): send carriage return after `title` to fix #11314 (#11315) Window and tab titles are changed by emitting an unprintable escape sequence to the terminal. These escape sequences do not play nicely with the TAB character on multiple terminal emulators--they create un-deletable characters on the first line after command execution. Sending "\r" after changing the window and tab titles allows all characters on the first line to be deleted. Fixes #11314 --- lib/termsupport.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh index 80ca7ef78..fc1cde55e 100644 --- a/lib/termsupport.zsh +++ b/lib/termsupport.zsh @@ -36,6 +36,8 @@ function title { fi ;; esac + + print -Pn "\r" # move the cursor to the beginning of the line } ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD From 0f71cfd3c1b82cbc6b2ddd8782e193f38cf343f9 Mon Sep 17 00:00:00 2001 From: Rafael Laurindo Date: Wed, 11 Jan 2023 15:54:53 -0300 Subject: [PATCH 150/253] docs(qrsvg): fix command example (#11436) --- plugins/qrcode/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/qrcode/README.md b/plugins/qrcode/README.md index bcc870541..442838947 100644 --- a/plugins/qrcode/README.md +++ b/plugins/qrcode/README.md @@ -5,4 +5,4 @@ Generate a QR Code from the command line. Uses [QRcode.show](https://qrcode.show alias | command --------------- | -------- `qrcode [text]` | `curl -d "text" qrcode.show` -`qrsvg [text]` | `curl -d "text" qrcode.show -H "Accepct: image.svg"` +`qrsvg [text]` | `curl -d "text" qrcode.show -H "Accept: image/svg+xml"` From 17ea97332b2f2285e3c2e1a00f6745fb1fe1cec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Thu, 12 Jan 2023 08:29:00 +0100 Subject: [PATCH 151/253] Revert "fix(lib): send carriage return after `title` to fix #11314 (#11315)" This reverts commit 3dd83a22a160249a71631a51490fd3b89d1b3975. See https://github.com/ohmyzsh/ohmyzsh/issues/11314#issuecomment-1379492472 --- lib/termsupport.zsh | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh index fc1cde55e..80ca7ef78 100644 --- a/lib/termsupport.zsh +++ b/lib/termsupport.zsh @@ -36,8 +36,6 @@ function title { fi ;; esac - - print -Pn "\r" # move the cursor to the beginning of the line } ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD From 35454190f6aeae9b9f16acdbdd0cf72c32610ee8 Mon Sep 17 00:00:00 2001 From: Jack DeVries Date: Thu, 12 Jan 2023 13:41:47 +0100 Subject: [PATCH 152/253] feat(git): use verbose flags in aliases Closes #11244 Closes #11246 Closes #10101 Closes #11380 --- plugins/git/README.md | 366 ++++++++++++++++++------------------- plugins/git/git.plugin.zsh | 75 ++++---- 2 files changed, 219 insertions(+), 222 deletions(-) diff --git a/plugins/git/README.md b/plugins/git/README.md index 3beb0890a..8cb4215a9 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -10,191 +10,189 @@ plugins=(... git) ## Aliases -| Alias | Command | -|:---------------------|:---------------------------------------------------------------------------------------------------------------------------------| -| g | git | -| ga | git add | -| gaa | git add --all | -| gapa | git add --patch | -| gau | git add --update | -| gav | git add --verbose | -| gap | git apply | -| gapt | git apply --3way | -| gb | git branch | -| gba | git branch -a | -| gbd | git branch -d | -| gbda | git branch --no-color --merged \| grep -vE "^([+*]\|\s*($(git_main_branch)\|$(git_develop_branch))\s*$)" \| xargs git branch -d 2>/dev/null | -| gbD | git branch -D | -| gbl | git blame -b -w | -| gbnm | git branch --no-merged | -| gbr | git branch --remote | -| gbs | git bisect | -| gbsb | git bisect bad | -| gbsg | git bisect good | -| gbsr | git bisect reset | -| gbss | git bisect start | -| gc | git commit -v | -| gc! | git commit -v --amend | -| gcn | git commit -v --no-edit | -| gcn! | git commit -v --no-edit --amend | -| gca | git commit -v -a | -| gca! | git commit -v -a --amend | -| gcan! | git commit -v -a --no-edit --amend | -| gcans! | git commit -v -a -s --no-edit --amend | -| gcam | git commit -a -m | -| gcas | git commit -a -s | -| gcasm | git commit -a -s -m | -| gcsm | git commit -s -m | -| gcb | git checkout -b | -| gcf | git config --list | -| gcl | git clone --recurse-submodules | -| gccd | git clone --recurse-submodules "$@" && cd "$(basename $_ .git)" | -| gclean | git clean -id | -| gpristine | git reset --hard && git clean -dffx | -| gcm | git checkout $(git_main_branch) | -| gcd | git checkout $(git_develop_branch) | -| gcmsg | git commit -m | -| gco | git checkout | -| gcor | git checkout --recurse-submodules | -| gcount | git shortlog -sn | -| gcp | git cherry-pick | -| gcpa | git cherry-pick --abort | -| gcpc | git cherry-pick --continue | -| gcs | git commit -S | -| gd | git diff | -| gdca | git diff --cached | -| gdcw | git diff --cached --word-diff | -| gdct | git describe --tags $(git rev-list --tags --max-count=1) | -| gds | git diff --staged | -| gdt | git diff-tree --no-commit-id --name-only -r | -| gdnolock | git diff $@ ":(exclude)package-lock.json" ":(exclude)*.lock" | -| gdup | git diff @{upstream} | -| gdv | git diff -w $@ \| view - | -| gdw | git diff --word-diff | -| gf | git fetch | -| gfa | git fetch --all --prune | -| gfg | git ls-files \| grep | -| gfo | git fetch origin | -| gg | git gui citool | -| gga | git gui citool --amend | -| ggf | git push --force origin $(current_branch) | -| ggfl | git push --force-with-lease origin $(current_branch) | -| ggl | git pull origin $(current_branch) | -| ggp | git push origin $(current_branch) | -| ggpnp | ggl && ggp | -| ggpull | git pull origin "$(git_current_branch)" | -| ggpur | ggu | -| ggpush | git push origin "$(git_current_branch)" | -| ggsup | git branch --set-upstream-to=origin/$(git_current_branch) | -| ggu | git pull --rebase origin $(current_branch) | -| gpsup | git push --set-upstream origin $(git_current_branch) | -| ghh | git help | -| gignore | git update-index --assume-unchanged | -| gignored | git ls-files -v \| grep "^[[:lower:]]" | -| git-svn-dcommit-push | git svn dcommit && git push github $(git_main_branch):svntrunk | -| gk | gitk --all --branches &! | -| gke | gitk --all $(git log -g --pretty=%h) &! | -| gl | git pull | -| glg | git log --stat | -| glgp | git log --stat -p | -| glgg | git log --graph | -| glgga | git log --graph --decorate --all | -| glgm | git log --graph --max-count=10 | -| glo | git log --oneline --decorate | -| glol | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' | -| glols | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --stat | -| glod | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' | -| glods | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short | -| glola | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --all | -| glog | git log --oneline --decorate --graph | -| gloga | git log --oneline --decorate --graph --all | -| glp | git log --pretty=\ | -| gm | git merge | -| gmom | git merge origin/$(git_main_branch) | -| gmtl | git mergetool --no-prompt | -| gmtlvim | git mergetool --no-prompt --tool=vimdiff | -| gmum | git merge upstream/$(git_main_branch) | -| gma | git merge --abort | -| gp | git push | -| gpd | git push --dry-run | -| gpf | git push --force-with-lease | -| gpf! | git push --force | -| gpoat | git push origin --all && git push origin --tags | -| gpr | git pull --rebase | -| gpu | git push upstream | -| gpv | git push -v | -| gr | git remote | -| gra | git remote add | -| grb | git rebase | -| grba | git rebase --abort | -| grbc | git rebase --continue | -| grbd | git rebase $(git_develop_branch) | -| grbi | git rebase -i | -| grbm | git rebase $(git_main_branch) | -| grbom | git rebase origin/$(git_main_branch) | -| grbo | git rebase --onto | -| grbs | git rebase --skip | -| grev | git revert | -| grh | git reset | -| grhh | git reset --hard | -| groh | git reset origin/$(git_current_branch) --hard | -| grm | git rm | -| grmc | git rm --cached | -| grmv | git remote rename | -| grrm | git remote remove | -| grs | git restore | -| grset | git remote set-url | -| grss | git restore --source | -| grst | git restore --staged | -| grt | cd "$(git rev-parse --show-toplevel \|\| echo .)" | -| gru | git reset -- | -| grup | git remote update | -| grv | git remote -v | -| gsb | git status -sb | -| gsd | git svn dcommit | -| gsh | git show | -| gsi | git submodule init | -| gsps | git show --pretty=short --show-signature | -| gsr | git svn rebase | -| gss | git status -s | -| gst | git status | -| gsta | git stash push | -| gsta | git stash save | -| gstaa | git stash apply | -| gstc | git stash clear | -| gstd | git stash drop | -| gstl | git stash list | -| gstp | git stash pop | -| gsts | git stash show --text | -| gstu | git stash --include-untracked | -| gstall | git stash --all | -| gsu | git submodule update | -| gsw | git switch | -| gswc | git switch -c | -| gswm | git switch $(git_main_branch) | -| gswd | git switch $(git_develop_branch) | -| gts | git tag -s | -| gtv | git tag \| sort -V | -| gtl | gtl(){ git tag --sort=-v:refname -n -l ${1}* }; noglob gtl | -| gunignore | git update-index --no-assume-unchanged | -| gunwip | git log -n 1 \| grep -q -c "\-\-wip\-\-" && git reset HEAD~1 | -| gup | git pull --rebase | -| gupv | git pull --rebase -v | -| gupa | git pull --rebase --autostash | -| gupav | git pull --rebase --autostash -v | -| gupom | git pull --rebase origin $(git_main_branch) | -| gupomi | git pull --rebase=interactive origin $(git_main_branch) | -| glum | git pull upstream $(git_main_branch) | -| gluc | git pull upstream $(git_current_branch) | -| gwch | git whatchanged -p --abbrev-commit --pretty=medium | -| gwip | git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]" | -| gam | git am | -| gamc | git am --continue | -| gams | git am --skip | -| gama | git am --abort | -| gamscp | git am --show-current-patch | +| Alias | Command | +| :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| g | git | +| ga | git add | +| gaa | git add --all | +| gapa | git add --patch | +| gau | git add --update | +| gav | git add --verbose | +| gap | git apply | +| gapt | git apply --3way | +| gb | git branch | +| gba | git branch --all | +| gbd | git branch --delete | +| gbda | git branch --no-color --merged \| grep -vE "^([+*]\|\s*($(git_main_branch)\|$(git_develop_branch))\s*$)" \| xargs git branch --delete 2>/dev/null | +| gbD | git branch --delete --force | +| gbl | git blame -b -w | +| gbnm | git branch --no-merged | +| gbr | git branch --remote | +| gbs | git bisect | +| gbsb | git bisect bad | +| gbsg | git bisect good | +| gbsr | git bisect reset | +| gbss | git bisect start | +| gc | git commit --verbose | +| gc! | git commit --verbose --amend | +| gcn! | git commit --verbose --no-edit --amend | +| gca | git commit --verbose --all | +| gca! | git commit --verbose --all --amend | +| gcan! | git commit --verbose --all --no-edit --amend | +| gcans! | git commit --verbose --all --signoff --no-edit --amend | +| gcam | git commit --all --message | +| gcas | git commit --all --signoff | +| gcasm | git commit --all --signoff --message | +| gcsm | git commit --signoff --message | +| gcb | git checkout -b | +| gcf | git config --list | +| gcl | git clone --recurse-submodules | +| gccd | git clone --recurse-submodules "$@" && cd "$(basename $\_ .git)" | +| gclean | git clean --interactive -d | +| gpristine | git reset --hard && git clean -dffx | +| gcm | git checkout $(git_main_branch) | +| gcd | git checkout $(git_develop_branch) | +| gcmsg | git commit --message | +| gco | git checkout | +| gcor | git checkout --recurse-submodules | +| gcount | git shortlog --summary -n | +| gcp | git cherry-pick | +| gcpa | git cherry-pick --abort | +| gcpc | git cherry-pick --continue | +| gcs | git commit -S | +| gd | git diff | +| gdca | git diff --cached | +| gdcw | git diff --cached --word-diff | +| gdct | git describe --tags $(git rev-list --tags --max-count=1) | +| gds | git diff --staged | +| gdt | git diff-tree --no-commit-id --name-only -r | +| gdnolock | git diff $@ ":(exclude)package-lock.json" ":(exclude)\*.lock" | +| gdup | git diff @{upstream} | +| gdv | git diff -w $@ \| view - | +| gdw | git diff --word-diff | +| gf | git fetch | +| gfa | git fetch --all --prune | +| gfg | git ls-files \| grep | +| gfo | git fetch origin | +| gg | git gui citool | +| gga | git gui citool --amend | +| ggf | git push --force origin $(current_branch) | +| ggfl | git push --force-with-lease origin $(current_branch) | +| ggl | git pull origin $(current_branch) | +| ggp | git push origin $(current_branch) | +| ggpnp | ggl && ggp | +| ggpull | git pull origin "$(git_current_branch)" | +| ggpur | ggu | +| ggpush | git push origin "$(git_current_branch)" | +| ggsup | git branch --set-upstream-to=origin/$(git_current_branch) | +| ggu | git pull --rebase origin $(current_branch) | +| gpsup | git push --set-upstream origin $(git_current_branch) | +| ghh | git help | +| gignore | git update-index --assume-unchanged | +| gignored | git ls-files -v \| grep "^[[:lower:]]" | +| git-svn-dcommit-push | git svn dcommit && git push github $(git_main_branch):svntrunk | +| gk | gitk --all --branches &! | +| gke | gitk --all $(git log --walk-reflogs --pretty=%h) &! | +| gl | git pull | +| glg | git log --stat | +| glgp | git log --stat --patch | +| glgg | git log --graph | +| glgga | git log --graph --decorate --all | +| glgm | git log --graph --max-count=10 | +| glo | git log --oneline --decorate | +| glol | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' | +| glols | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --stat | +| glod | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' | +| glods | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short | +| glola | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --all | +| glog | git log --oneline --decorate --graph | +| gloga | git log --oneline --decorate --graph --all | +| glp | git log --pretty=\ | +| gm | git merge | +| gmom | git merge origin/$(git_main_branch) | +| gmtl | git mergetool --no-prompt | +| gmtlvim | git mergetool --no-prompt --tool=vimdiff | +| gmum | git merge upstream/$(git_main_branch) | +| gma | git merge --abort | +| gp | git push | +| gpd | git push --dry-run | +| gpf | git push --force-with-lease | +| gpf! | git push --force | +| gpoat | git push origin --all && git push origin --tags | +| gpr | git pull --rebase | +| gpu | git push upstream | +| gpv | git push --verbose | +| gr | git remote | +| gra | git remote add | +| grb | git rebase | +| grba | git rebase --abort | +| grbc | git rebase --continue | +| grbd | git rebase $(git_develop_branch) | +| grbi | git rebase --interactive | +| grbm | git rebase $(git_main_branch) | +| grbom | git rebase origin/$(git_main_branch) | +| grbo | git rebase --onto | +| grbs | git rebase --skip | +| grev | git revert | +| grh | git reset | +| grhh | git reset --hard | +| groh | git reset origin/$(git_current_branch) --hard | +| grm | git rm | +| grmc | git rm --cached | +| grmv | git remote rename | +| grrm | git remote remove | +| grs | git restore | +| grset | git remote set-url | +| grss | git restore --source | +| grst | git restore --staged | +| grt | cd "$(git rev-parse --show-toplevel \|\| echo .)" | +| gru | git reset -- | +| grup | git remote update | +| grv | git remote --verbose | +| gsb | git status --short -b | +| gsd | git svn dcommit | +| gsh | git show | +| gsi | git submodule init | +| gsps | git show --pretty=short --show-signature | +| gsr | git svn rebase | +| gss | git status --short | +| gst | git status | +| gsta | git stash push | +| gsta | git stash save | +| gstaa | git stash apply | +| gstc | git stash clear | +| gstd | git stash drop | +| gstl | git stash list | +| gstp | git stash pop | +| gsts | git stash show --text | +| gstu | git stash --include-untracked | +| gstall | git stash --all | +| gsu | git submodule update | +| gsw | git switch | +| gswc | git switch -c | +| gswm | git switch $(git_main_branch) | +| gswd | git switch $(git_develop_branch) | +| gts | git tag -s | +| gtv | git tag \| sort -V | +| gtl | gtl(){ git tag --sort=-v:refname -n --list ${1}\* }; noglob gtl | +| gunignore | git update-index --no-assume-unchanged | +| gunwip | git log --max-count=1 \| grep -q -c "\-\-wip\-\-" && git reset HEAD~1 | +| gup | git pull --rebase | +| gupv | git pull --rebase --verbose | +| gupa | git pull --rebase --autostash | +| gupav | git pull --rebase --autostash --verbose | +| gupom | git pull --rebase origin $(git_main_branch) | +| gupomi | git pull --rebase=interactive origin $(git_main_branch) | +| glum | git pull upstream $(git_main_branch) | +| gluc | git pull upstream $(git_current_branch) | +| gwch | git whatchanged -p --abbrev-commit --pretty=medium | +| gwip | git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]" | +| gam | git am | +| gamc | git am --continue | +| gams | git am --skip | +| gama | git am --abort | +| gamscp | git am --show-current-patch | | gwt | git worktree | -| gwta | git worktree add | | gwtls | git worktree list | | gwtmv | git worktree move | | gwtrm | git worktree remove | diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 76e58a121..7544ca440 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -69,10 +69,10 @@ alias gap='git apply' alias gapt='git apply --3way' alias gb='git branch' -alias gba='git branch -a' -alias gbd='git branch -d' -alias gbda='git branch --no-color --merged | command grep -vE "^([+*]|\s*($(git_main_branch)|$(git_develop_branch))\s*$)" | command xargs git branch -d 2>/dev/null' -alias gbD='git branch -D' +alias gba='git branch --all' +alias gbd='git branch --delete' +alias gbda='git branch --no-color --merged | command grep -vE "^([+*]|\s*($(git_main_branch)|$(git_develop_branch))\s*$)" | command xargs git branch --delete 2>/dev/null' +alias gbD='git branch --delete --force' alias gbl='git blame -b -w' alias gbnm='git branch --no-merged' alias gbr='git branch --remote' @@ -82,18 +82,17 @@ alias gbsg='git bisect good' alias gbsr='git bisect reset' alias gbss='git bisect start' -alias gc='git commit -v' -alias gc!='git commit -v --amend' -alias gcn='git commit -v --no-edit' -alias gcn!='git commit -v --no-edit --amend' -alias gca='git commit -v -a' -alias gca!='git commit -v -a --amend' -alias gcan!='git commit -v -a --no-edit --amend' -alias gcans!='git commit -v -a -s --no-edit --amend' -alias gcam='git commit -a -m' -alias gcsm='git commit -s -m' -alias gcas='git commit -a -s' -alias gcasm='git commit -a -s -m' +alias gc='git commit --verbose' +alias gc!='git commit --verbose --amend' +alias gcn!='git commit --verbose --no-edit --amend' +alias gca='git commit --verbose --all' +alias gca!='git commit --verbose --all --amend' +alias gcan!='git commit --verbose --all --no-edit --amend' +alias gcans!='git commit --verbose --all --signoff --no-edit --amend' +alias gcam='git commit --all --message' +alias gcsm='git commit --signoff --message' +alias gcas='git commit --all --signoff' +alias gcasm='git commit --all --signoff --message' alias gcb='git checkout -b' alias gcf='git config --list' @@ -104,20 +103,20 @@ function gccd() { compdef _git gccd=git-clone alias gcl='git clone --recurse-submodules' -alias gclean='git clean -id' -alias gpristine='git reset --hard && git clean -dffx' +alias gclean='git clean --interactive -d' +alias gpristine='git reset --hard && git clean --force -dx' alias gcm='git checkout $(git_main_branch)' alias gcd='git checkout $(git_develop_branch)' -alias gcmsg='git commit -m' +alias gcmsg='git commit --message' alias gco='git checkout' alias gcor='git checkout --recurse-submodules' -alias gcount='git shortlog -sn' +alias gcount='git shortlog --summary --numbered' alias gcp='git cherry-pick' alias gcpa='git cherry-pick --abort' alias gcpc='git cherry-pick --continue' -alias gcs='git commit -S' -alias gcss='git commit -S -s' -alias gcssm='git commit -S -s -m' +alias gcs='git commit --gpg-sign' +alias gcss='git commit --gpg-sign --signoff' +alias gcssm='git commit --gpg-sign --signoff --message' alias gd='git diff' alias gdca='git diff --cached' @@ -208,11 +207,11 @@ alias gignored='git ls-files -v | grep "^[[:lower:]]"' alias git-svn-dcommit-push='git svn dcommit && git push github $(git_main_branch):svntrunk' alias gk='\gitk --all --branches &!' -alias gke='\gitk --all $(git log -g --pretty=%h) &!' +alias gke='\gitk --all $(git log --walk-reflogs --pretty=%h) &!' alias gl='git pull' alias glg='git log --stat' -alias glgp='git log --stat -p' +alias glgp='git log --stat --patch' alias glgg='git log --graph' alias glgga='git log --graph --decorate --all' alias glgm='git log --graph --max-count=10' @@ -240,7 +239,7 @@ alias gpf!='git push --force' alias gpoat='git push origin --all && git push origin --tags' alias gpr='git pull --rebase' alias gpu='git push upstream' -alias gpv='git push -v' +alias gpv='git push --verbose' alias gr='git remote' alias gra='git remote add' @@ -248,7 +247,7 @@ alias grb='git rebase' alias grba='git rebase --abort' alias grbc='git rebase --continue' alias grbd='git rebase $(git_develop_branch)' -alias grbi='git rebase -i' +alias grbi='git rebase --interactive' alias grbm='git rebase $(git_main_branch)' alias grbom='git rebase origin/$(git_main_branch)' alias grbo='git rebase --onto' @@ -268,15 +267,15 @@ alias grst='git restore --staged' alias grt='cd "$(git rev-parse --show-toplevel || echo .)"' alias gru='git reset --' alias grup='git remote update' -alias grv='git remote -v' +alias grv='git remote --verbose' -alias gsb='git status -sb' +alias gsb='git status --short --branch' alias gsd='git svn dcommit' alias gsh='git show' alias gsi='git submodule init' alias gsps='git show --pretty=short --show-signature' alias gsr='git svn rebase' -alias gss='git status -s' +alias gss='git status --short' alias gst='git status' # use the default stash push on git 2.13 and newer @@ -294,27 +293,27 @@ alias gstu='gsta --include-untracked' alias gstall='git stash --all' alias gsu='git submodule update' alias gsw='git switch' -alias gswc='git switch -c' +alias gswc='git switch --create' alias gswm='git switch $(git_main_branch)' alias gswd='git switch $(git_develop_branch)' -alias gts='git tag -s' +alias gts='git tag --sign' alias gtv='git tag | sort -V' -alias gtl='gtl(){ git tag --sort=-v:refname -n -l "${1}*" }; noglob gtl' +alias gtl='gtl(){ git tag --sort=-v:refname -n --list "${1}*" }; noglob gtl' alias gunignore='git update-index --no-assume-unchanged' -alias gunwip='git log -n 1 | grep -q -c "\--wip--" && git reset HEAD~1' +alias gunwip='git log --max-count=1 | grep -q -c "\--wip--" && git reset HEAD~1' alias gup='git pull --rebase' -alias gupv='git pull --rebase -v' +alias gupv='git pull --rebase --verbose' alias gupa='git pull --rebase --autostash' -alias gupav='git pull --rebase --autostash -v' +alias gupav='git pull --rebase --autostash --verbose' alias gupom='git pull --rebase origin $(git_main_branch)' alias gupomi='git pull --rebase=interactive origin $(git_main_branch)' alias glum='git pull upstream $(git_main_branch)' alias gluc='git pull upstream $(git_current_branch)' alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' -alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]"' +alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]"' alias gwt='git worktree' alias gwta='git worktree add' @@ -342,4 +341,4 @@ function grename() { fi } -unset git_version +unset git_version \ No newline at end of file From 6dc6646d529a7dc6a1d8e1a2c1507dff7e528c8d Mon Sep 17 00:00:00 2001 From: Romain Janvier Date: Thu, 12 Jan 2023 13:56:26 +0100 Subject: [PATCH 153/253] docs(git): add missing entries and run formatter --- plugins/git/README.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/plugins/git/README.md b/plugins/git/README.md index 8cb4215a9..d455e0eff 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -60,6 +60,8 @@ plugins=(... git) | gcpa | git cherry-pick --abort | | gcpc | git cherry-pick --continue | | gcs | git commit -S | +| gcss | git commit -S -s | +| gcssm | git commit -S -s -m | | gd | git diff | | gdca | git diff --cached | | gdcw | git diff --cached --word-diff | @@ -157,8 +159,8 @@ plugins=(... git) | gsr | git svn rebase | | gss | git status --short | | gst | git status | -| gsta | git stash push | -| gsta | git stash save | +| gsta | git stash push (git version >= 2.13) | +| gsta | git stash save (git version < 2.13) | | gstaa | git stash apply | | gstc | git stash clear | | gstd | git stash drop | @@ -176,7 +178,7 @@ plugins=(... git) | gtv | git tag \| sort -V | | gtl | gtl(){ git tag --sort=-v:refname -n --list ${1}\* }; noglob gtl | | gunignore | git update-index --no-assume-unchanged | -| gunwip | git log --max-count=1 \| grep -q -c "\-\-wip\-\-" && git reset HEAD~1 | +| gunwip | git log --max-count=1 \| grep -q -c "\-\-wip\-\-" && git reset HEAD~1 | | gup | git pull --rebase | | gupv | git pull --rebase --verbose | | gupa | git pull --rebase --autostash | @@ -192,10 +194,10 @@ plugins=(... git) | gams | git am --skip | | gama | git am --abort | | gamscp | git am --show-current-patch | -| gwt | git worktree | -| gwtls | git worktree list | -| gwtmv | git worktree move | -| gwtrm | git worktree remove | +| gwt | git worktree | +| gwtls | git worktree list | +| gwtmv | git worktree move | +| gwtrm | git worktree remove | ### Main branch preference @@ -227,7 +229,7 @@ These are aliases that have been removed, renamed, or otherwise modified in a wa ### Current | Command | Description | -|:-----------------------|:---------------------------------------------------------------------------------------------------------| +| :--------------------- | :------------------------------------------------------------------------------------------------------- | | `grename ` | Rename `old` branch to `new`, including in origin remote | | current_branch | Return the name of the current branch | | git_current_user_name | Returns the `user.name` config value | @@ -240,13 +242,13 @@ These are aliases that have been removed, renamed, or otherwise modified in a wa These features allow to pause a branch development and switch to another one (_"Work in Progress"_, or wip). When you want to go back to work, just unwip it. | Command | Description | -|:-----------------|:------------------------------------------------| +| :--------------- | :---------------------------------------------- | | work_in_progress | Echoes a warning if the current branch is a wip | | gwip | Commit wip branch | | gunwip | Uncommit wip branch | ### Deprecated functions -| Command | Description | Reason | -|:-----------------------|:----------------------------------------|:----------------------------------------------------------------| -| current_repository | Return the names of the current remotes | Didn't work properly. Use `git remote -v` instead (`grv` alias) | +| Command | Description | Reason | +| :----------------- | :-------------------------------------- | :-------------------------------------------------------------- | +| current_repository | Return the names of the current remotes | Didn't work properly. Use `git remote -v` instead (`grv` alias) | From ec0003f2faaf45e8e11660c5b66e98d10d462ee5 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Fri, 13 Jan 2023 12:40:47 +0100 Subject: [PATCH 154/253] ci: update to `checkout@v3` to avoid warnings --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 57a1e3833..8ee2df3d8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,7 +7,7 @@ on: branches: - master push: - branches: + branches: - master concurrency: @@ -27,7 +27,7 @@ jobs: os: [ubuntu-latest, macos-latest] steps: - name: Set up git repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install zsh if: runner.os == 'Linux' run: sudo apt-get update; sudo apt-get install zsh From eb2147c7159cf1ed14b1e5b6784d7d07c3662b52 Mon Sep 17 00:00:00 2001 From: Noam Cohen Date: Fri, 13 Jan 2023 15:35:30 +0200 Subject: [PATCH 155/253] feat(aws): load profiles from credentials file (#11196) Fixes #8472 --- plugins/aws/aws.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/aws/aws.plugin.zsh b/plugins/aws/aws.plugin.zsh index 2167f552c..865e82f19 100644 --- a/plugins/aws/aws.plugin.zsh +++ b/plugins/aws/aws.plugin.zsh @@ -146,6 +146,7 @@ function aws_change_access_key() { } function aws_profiles() { + aws --no-cli-pager configure list-profiles 2> /dev/null && return [[ -r "${AWS_CONFIG_FILE:-$HOME/.aws/config}" ]] || return 1 grep --color=never -Eo '\[.*\]' "${AWS_CONFIG_FILE:-$HOME/.aws/config}" | sed -E 's/^[[:space:]]*\[(profile)?[[:space:]]*([^[:space:]]+)\][[:space:]]*$/\2/g' } From ca0acf31ef163fd2a6bf562c9b9d6077975b41f8 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Fri, 13 Jan 2023 14:42:11 +0100 Subject: [PATCH 156/253] fix(emacs): make `alternate-editor` work for emacs >28 Closes #11441 --- plugins/emacs/README.md | 2 +- plugins/emacs/emacs.plugin.zsh | 2 +- plugins/emacs/emacsclient.sh | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/emacs/README.md b/plugins/emacs/README.md index c8e33b5ab..8ed4a1473 100644 --- a/plugins/emacs/README.md +++ b/plugins/emacs/README.md @@ -25,6 +25,6 @@ The plugin uses a custom launcher (which we'll call here `$EMACS_LAUNCHER`) that | e | `emacs` | Same as emacs alias | | te | `$EMACS_LAUNCHER -nw` | Open terminal emacsclient | | eeval | `$EMACS_LAUNCHER --eval` | Same as `M-x eval` but from outside Emacs | -| eframe | `emacsclient --alternate-editor "" --create-frame` | Create new X frame | +| eframe | `emacsclient --alternate-editor="" --create-frame` | Create new X frame | | efile | - | Print the path to the file open in the current buffer | | ecd | - | Print the directory of the file open in the the current buffer | diff --git a/plugins/emacs/emacs.plugin.zsh b/plugins/emacs/emacs.plugin.zsh index fede5b0c4..4747f035b 100644 --- a/plugins/emacs/emacs.plugin.zsh +++ b/plugins/emacs/emacs.plugin.zsh @@ -32,7 +32,7 @@ alias te="$EMACS_PLUGIN_LAUNCHER -nw" # same than M-x eval but from outside Emacs. alias eeval="$EMACS_PLUGIN_LAUNCHER --eval" # create a new X frame -alias eframe='emacsclient --alternate-editor "" --create-frame' +alias eframe='emacsclient --alternate-editor="" --create-frame' # Emacs ANSI Term tracking if [[ -n "$INSIDE_EMACS" ]]; then diff --git a/plugins/emacs/emacsclient.sh b/plugins/emacs/emacsclient.sh index 96893c932..172c0ae96 100755 --- a/plugins/emacs/emacsclient.sh +++ b/plugins/emacs/emacsclient.sh @@ -15,11 +15,11 @@ emacsfun() { # Only create another X frame if there isn't one present if [ -z "$frames" -o "$frames" = nil ]; then - emacsclient --alternate-editor "" --create-frame "$@" + emacsclient --alternate-editor="" --create-frame "$@" return $? fi - emacsclient --alternate-editor "" "$@" + emacsclient --alternate-editor="" "$@" } # Adapted from https://github.com/davidshepherd7/emacs-read-stdin/blob/master/emacs-read-stdin.sh From df658350a38aa73920fdefa5b255f8d7a58d31dc Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Sun, 15 Jan 2023 17:11:29 +0100 Subject: [PATCH 157/253] fix(clipboard): move wsl detection to higher priority (#11440) Closes #8827 --- lib/clipboard.zsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/clipboard.zsh b/lib/clipboard.zsh index ad83fc4b2..2f3b6bcad 100644 --- a/lib/clipboard.zsh +++ b/lib/clipboard.zsh @@ -57,6 +57,9 @@ function detect-clipboard() { elif [[ "${OSTYPE}" == (cygwin|msys)* ]]; then function clipcopy() { cat "${1:-/dev/stdin}" > /dev/clipboard; } function clippaste() { cat /dev/clipboard; } + elif (( $+commands[clip.exe] )) && (( $+commands[powershell.exe] )); then + function clipcopy() { cat "${1:-/dev/stdin}" | clip.exe; } + function clippaste() { powershell.exe -noprofile -command Get-Clipboard; } elif [ -n "${WAYLAND_DISPLAY:-}" ] && (( ${+commands[wl-copy]} )) && (( ${+commands[wl-paste]} )); then function clipcopy() { cat "${1:-/dev/stdin}" | wl-copy &>/dev/null &|; } function clippaste() { wl-paste; } @@ -81,9 +84,6 @@ function detect-clipboard() { elif [ -n "${TMUX:-}" ] && (( ${+commands[tmux]} )); then function clipcopy() { tmux load-buffer "${1:--}"; } function clippaste() { tmux save-buffer -; } - elif [[ $(uname -r) = *icrosoft* ]]; then - function clipcopy() { cat "${1:-/dev/stdin}" | clip.exe; } - function clippaste() { powershell.exe -noprofile -command Get-Clipboard; } else function _retry_clipboard_detection_or_fail() { local clipcmd="${1}"; shift From 4b5076b5ec450d30270f31a68d0299392ada042d Mon Sep 17 00:00:00 2001 From: xiagw Date: Mon, 16 Jan 2023 20:19:01 +0800 Subject: [PATCH 158/253] feat(extract): add `pbzip2` and `pixz` (#11435) --- plugins/extract/extract.plugin.zsh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index 1112dd52f..563d88c72 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -30,12 +30,15 @@ EOF local extract_dir="${1:t:r}" local file="$1" full_path="${1:A}" case "${file:l}" in - (*.tar.gz|*.tgz) (( $+commands[pigz] )) && { pigz -dc "$file" | tar xv } || tar zxvf "$file" ;; - (*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$file" ;; + (*.tar.gz|*.tgz) + (( $+commands[pigz] )) && { tar -I pigz -xvf "$file" } || tar zxvf "$file" ;; + (*.tar.bz2|*.tbz|*.tbz2) + (( $+commands[pbzip2] )) && { tar -I pbzip2 -xvf "$file" } || tar xvjf "$file" ;; (*.tar.xz|*.txz) + (( $+commands[pixz] )) && { tar -I pixz -xvf "$file" } || { tar --xz --help &> /dev/null \ && tar --xz -xvf "$file" \ - || xzcat "$file" | tar xvf - ;; + || xzcat "$file" | tar xvf - } ;; (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ && tar --lzma -xvf "$file" \ From 8f0e296dbf27026ea0515ebae0d3cc41f236ecdc Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Mon, 16 Jan 2023 20:16:00 +0100 Subject: [PATCH 159/253] feat(nsc): add completion plugin --- plugins/nsc/README.md | 11 +++++++++++ plugins/nsc/nsc.plugin.zsh | 13 +++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 plugins/nsc/README.md create mode 100644 plugins/nsc/nsc.plugin.zsh diff --git a/plugins/nsc/README.md b/plugins/nsc/README.md new file mode 100644 index 000000000..ce0d2c15c --- /dev/null +++ b/plugins/nsc/README.md @@ -0,0 +1,11 @@ +# NSC plugin + +This plugin adds completion for the [NSC](https://github.com/nats-io/nsc). + +To use it, add `nsc` to the plugins array in your zshrc file: + +```zsh +plugins=(... nsc) +``` + +This plugin does not add any aliases. diff --git a/plugins/nsc/nsc.plugin.zsh b/plugins/nsc/nsc.plugin.zsh new file mode 100644 index 000000000..daa599e8f --- /dev/null +++ b/plugins/nsc/nsc.plugin.zsh @@ -0,0 +1,13 @@ +if (( ! $+commands[nsc] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `nsc`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_nsc" ]]; then + typeset -g -A _comps + autoload -Uz _nsc + _comps[nsc]=_nsc +fi + +nsc completion zsh >| "$ZSH_CACHE_DIR/completions/_nsc" &| From 5b9de6a5304ad5f74ccb5862122a23b9ba06f6e3 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Mon, 19 Dec 2022 23:32:24 +0100 Subject: [PATCH 160/253] fix(init): remove duplicated check It was added due to #9039. See https://github.com/ohmyzsh/ohmyzsh/pull/11400#pullrequestreview-1223587420 --- oh-my-zsh.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index e94c2f417..98bda8c8b 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -57,9 +57,7 @@ mkdir -p "$ZSH_CACHE_DIR/completions" (( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath) # Check for updates on initial load... -if [[ "$DISABLE_AUTO_UPDATE" != true ]]; then - source "$ZSH/tools/check_for_upgrade.sh" -fi +source "$ZSH/tools/check_for_upgrade.sh" # Initializes Oh My Zsh From fe0dd8226d6f58ea98f9f84b279e6c3859993fb9 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Mon, 19 Dec 2022 23:33:55 +0100 Subject: [PATCH 161/253] fix(upgrade): do not upgrade if not called from tty Fixes #11390 --- .prettierrc | 4 ++++ tools/check_for_upgrade.sh | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 .prettierrc diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..a8f5a14b0 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "printWidth": 110, + "proseWrap": "always" +} diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh index 3a6bb6555..734714c94 100644 --- a/tools/check_for_upgrade.sh +++ b/tools/check_for_upgrade.sh @@ -21,9 +21,11 @@ zstyle -s ':omz:update' mode update_mode || { # Cancel update if: # - the automatic update is disabled. # - the current user doesn't have write permissions nor owns the $ZSH directory. +# - is not run from a tty # - git is unavailable on the system. if [[ "$update_mode" = disabled ]] \ || [[ ! -w "$ZSH" || ! -O "$ZSH" ]] \ + || [[ ! -t 1 ]] \ || ! command git --version 2>&1 >/dev/null; then unset update_mode return From 61dd3682e69aa990a8a3589c5c61ea2e1edf8312 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 17 Jan 2023 13:18:43 +0100 Subject: [PATCH 162/253] feat(nats)!: rename `nsc` plugin to `nats` --- plugins/nats/README.md | 14 ++++++++++++++ plugins/nats/nats.plugin.zsh | 23 +++++++++++++++++++++++ plugins/nsc/README.md | 11 ----------- plugins/nsc/nsc.plugin.zsh | 13 ------------- 4 files changed, 37 insertions(+), 24 deletions(-) create mode 100644 plugins/nats/README.md create mode 100644 plugins/nats/nats.plugin.zsh delete mode 100644 plugins/nsc/README.md delete mode 100644 plugins/nsc/nsc.plugin.zsh diff --git a/plugins/nats/README.md b/plugins/nats/README.md new file mode 100644 index 000000000..0ea26fca1 --- /dev/null +++ b/plugins/nats/README.md @@ -0,0 +1,14 @@ +# NATS plugin + +This plugin adds completion for several tools from [NATS](https://nats.io/). + +- [`nsc`](https://github.com/nats-io/nsc) +- [`natscli`](https://github.com/nats-io/natscli) + +To use it, add `nats` to the plugins array in your zshrc file: + +```zsh +plugins=(... nats) +``` + +This plugin does not add any aliases. diff --git a/plugins/nats/nats.plugin.zsh b/plugins/nats/nats.plugin.zsh new file mode 100644 index 000000000..8b95b07c6 --- /dev/null +++ b/plugins/nats/nats.plugin.zsh @@ -0,0 +1,23 @@ +if (( $+commands[nsc] )); then + # If the completion file doesn't exist yet, we need to autoload it and + # bind it to `nsc`. Otherwise, compinit will have already done that. + if [[ ! -f "$ZSH_CACHE_DIR/completions/_nsc" ]]; then + typeset -g -A _comps + autoload -Uz _nsc + _comps[nsc]=_nsc + fi + + nsc completion zsh >| "$ZSH_CACHE_DIR/completions/_nsc" &| +fi + +if (( $+commands[nats] )); then + # If the completion file doesn't exist yet, we need to autoload it and + # bind it to `nats`. Otherwise, compinit will have already done that. + if [[ ! -f "$ZSH_CACHE_DIR/completions/_nats" ]]; then + typeset -g -A _comps + autoload -Uz _nats + _comps[nats]=_nats + fi + + nats --completion-script-zsh >| "$ZSH_CACHE_DIR/completions/_nats" &| +fi diff --git a/plugins/nsc/README.md b/plugins/nsc/README.md deleted file mode 100644 index ce0d2c15c..000000000 --- a/plugins/nsc/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# NSC plugin - -This plugin adds completion for the [NSC](https://github.com/nats-io/nsc). - -To use it, add `nsc` to the plugins array in your zshrc file: - -```zsh -plugins=(... nsc) -``` - -This plugin does not add any aliases. diff --git a/plugins/nsc/nsc.plugin.zsh b/plugins/nsc/nsc.plugin.zsh deleted file mode 100644 index daa599e8f..000000000 --- a/plugins/nsc/nsc.plugin.zsh +++ /dev/null @@ -1,13 +0,0 @@ -if (( ! $+commands[nsc] )); then - return -fi - -# If the completion file doesn't exist yet, we need to autoload it and -# bind it to `nsc`. Otherwise, compinit will have already done that. -if [[ ! -f "$ZSH_CACHE_DIR/completions/_nsc" ]]; then - typeset -g -A _comps - autoload -Uz _nsc - _comps[nsc]=_nsc -fi - -nsc completion zsh >| "$ZSH_CACHE_DIR/completions/_nsc" &| From f1a800067f46fa990a11ea0055459560ce63a7ae Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Thu, 19 Jan 2023 12:20:44 +0100 Subject: [PATCH 163/253] fix(brew)!: rename `buf` alias to `bfu` BREAKING CHANGE: rename `buf` alias to `bfu` to avoid conflicts with protobuf tool --- plugins/brew/README.md | 28 ++++++++++++++-------------- plugins/brew/brew.plugin.zsh | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/plugins/brew/README.md b/plugins/brew/README.md index 4a42b3d74..d0c150237 100644 --- a/plugins/brew/README.md +++ b/plugins/brew/README.md @@ -17,20 +17,20 @@ defined for convenience. ## Aliases -| Alias | Command | Description | -| -------- | ------------------------------------- | ------------------------------------------------------------------- | -| `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | -| `bcubo` | `brew update && brew outdated --cask` | Update Homebrew data, then list outdated casks. | -| `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | -| `brewp` | `brew pin` | Pin a specified formula so that it's not upgraded. | -| `brews` | `brew list -1` | List installed formulae or the installed files for a given formula. | -| `brewsp` | `brew list --pinned` | List pinned formulae, or show the version of a given formula. | -| `bubc` | `brew upgrade && brew cleanup` | Upgrade outdated formulae and casks, then run cleanup. | -| `bugbc` | `brew upgrade --greedy && brew cleanup` | Upgrade outdated formulae and casks (greedy), then run cleanup. | -| `bubo` | `brew update && brew outdated` | Update Homebrew data, then list outdated formulae and casks. | -| `bubu` | `bubo && bubc` | Do the last two operations above. | -| `buf` | `brew upgrade --formula` | Upgrade only formulas (not casks). | -| `buz` | `brew uninstall --zap` | Remove all files associated with a cask. | +| Alias | Command | Description | +| -------- | --------------------------------------- | ------------------------------------------------------------------- | +| `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | +| `bcubo` | `brew update && brew outdated --cask` | Update Homebrew data, then list outdated casks. | +| `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | +| `brewp` | `brew pin` | Pin a specified formula so that it's not upgraded. | +| `brews` | `brew list -1` | List installed formulae or the installed files for a given formula. | +| `brewsp` | `brew list --pinned` | List pinned formulae, or show the version of a given formula. | +| `bubc` | `brew upgrade && brew cleanup` | Upgrade outdated formulae and casks, then run cleanup. | +| `bugbc` | `brew upgrade --greedy && brew cleanup` | Upgrade outdated formulae and casks (greedy), then run cleanup. | +| `bubo` | `brew update && brew outdated` | Update Homebrew data, then list outdated formulae and casks. | +| `bubu` | `bubo && bubc` | Do the last two operations above. | +| `bfu` | `brew upgrade --formula` | Upgrade only formulas (not casks). | +| `buz` | `brew uninstall --zap` | Remove all files associated with a cask. | ## Completion diff --git a/plugins/brew/brew.plugin.zsh b/plugins/brew/brew.plugin.zsh index 8275454a4..f6abe0875 100644 --- a/plugins/brew/brew.plugin.zsh +++ b/plugins/brew/brew.plugin.zsh @@ -35,7 +35,7 @@ alias bugbc='brew upgrade --greedy && brew cleanup' alias bubo='brew update && brew outdated' alias bubu='bubo && bubc' alias bubug='bubo && bugbc' -alias buf='brew upgrade --formula' +alias bfu='brew upgrade --formula' alias buz='brew uninstall --zap' function brews() { From bf57b4ff3d53726a1317459b0f48853e90d7a6e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Marc=C3=A8=20i=20Igual?= Date: Fri, 20 Jan 2023 19:45:14 +0100 Subject: [PATCH 164/253] feat(functions/take): make `.tgz` behave as `.tar.gz` (#11446) --- lib/functions.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/functions.zsh b/lib/functions.zsh index dfcc4d961..6e1faa6aa 100644 --- a/lib/functions.zsh +++ b/lib/functions.zsh @@ -56,7 +56,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" From ba8777fc3013a3c682d8144586e16457cbe12586 Mon Sep 17 00:00:00 2001 From: Yuxin Wu Date: Sat, 21 Jan 2023 02:36:07 -0800 Subject: [PATCH 165/253] perf(fzf): speed up startup on debian (#11122) --- plugins/fzf/fzf.plugin.zsh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/fzf/fzf.plugin.zsh b/plugins/fzf/fzf.plugin.zsh index 9c8dd8648..85a0bf270 100644 --- a/plugins/fzf/fzf.plugin.zsh +++ b/plugins/fzf/fzf.plugin.zsh @@ -60,8 +60,8 @@ function fzf_setup_using_base_dir() { function fzf_setup_using_debian() { - if (( ! $+commands[dpkg] )) || ! dpkg -s fzf &>/dev/null; then - # Either not a debian based distro, or no fzf installed + if (( ! $+commands[dpkg] )); then + # Not a debian based distro return 1 fi @@ -72,11 +72,19 @@ function fzf_setup_using_debian() { case $PREFIX in *com.termux*) + if [[ ! -f "${PREFIX}/bin/fzf" ]]; then + # fzf not installed + return 1 + fi # Support Termux package completions="${PREFIX}/share/fzf/completion.zsh" key_bindings="${PREFIX}/share/fzf/key-bindings.zsh" ;; *) + if [[ ! -f /usr/bin/fzf ]]; then + # fzf not installed + return 1 + fi # Determine completion file path: first bullseye/sid, then buster/stretch completions="/usr/share/doc/fzf/examples/completion.zsh" [[ -f "$completions" ]] || completions="/usr/share/zsh/vendor-completions/_fzf" From a1c54e03f98b594a6fcc368c2c113d469ffaa368 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Sun, 22 Jan 2023 23:36:57 +0100 Subject: [PATCH 166/253] feat(fzf): add `skip-dpkg` flag to avoid some regressions See https://github.com/ohmyzsh/ohmyzsh/pull/11122#issuecomment-1399607430 --- plugins/fzf/README.md | 9 +++++++++ plugins/fzf/fzf.plugin.zsh | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/plugins/fzf/README.md b/plugins/fzf/README.md index beedf4690..7e3e3e5b0 100644 --- a/plugins/fzf/README.md +++ b/plugins/fzf/README.md @@ -50,3 +50,12 @@ Set whether to disable key bindings (CTRL-T, CTRL-R, ALT-C): ```zsh DISABLE_FZF_KEY_BINDINGS="true" ``` + +### Skip `dpkg` loading + +If you have `dpkg` available in your `$PATH` but you don't want to load `fzf` from there, and facing some +issues, you can define this option before loading `oh-my-zsh` in order to skip that loading: + +```zsh +zstyle ':omz:plugins:fzf' skip-dpkg yes +``` diff --git a/plugins/fzf/fzf.plugin.zsh b/plugins/fzf/fzf.plugin.zsh index 85a0bf270..c07d38493 100644 --- a/plugins/fzf/fzf.plugin.zsh +++ b/plugins/fzf/fzf.plugin.zsh @@ -60,8 +60,8 @@ function fzf_setup_using_base_dir() { function fzf_setup_using_debian() { - if (( ! $+commands[dpkg] )); then - # Not a debian based distro + if (( ! $+commands[dpkg] )) || zstyle -t ':omz:plugins:fzf' skip-dpkg; then + # Not a debian based distro return 1 fi From 7de55844b26394688221b1cd12ef4053b3c7f6c7 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Mon, 23 Jan 2023 19:40:42 +0100 Subject: [PATCH 167/253] feat(mlh): add separate prompt symbol for root user (#11451) --- themes/mlh.zsh-theme | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/themes/mlh.zsh-theme b/themes/mlh.zsh-theme index baff3fb63..c059bf850 100644 --- a/themes/mlh.zsh-theme +++ b/themes/mlh.zsh-theme @@ -47,6 +47,10 @@ if [ -z "$MLH_SHELL_SYMBOL" ]; then MLH_SHELL_SYMBOL="$ " fi +if [ -z "$MLH_SHELL_SYMBOL_ROOT" ]; then + MLH_SHELL_SYMBOL_ROOT="# " +fi + # colors USER_COLOR="%F{001}" DEVICE_COLOR="%F{033}" @@ -83,7 +87,11 @@ exit_code() { } prompt_end() { - printf "\n$MLH_SHELL_SYMBOL" + if [ "$UID" -eq 0 ]; then + printf "\n$MLH_SHELL_SYMBOL_ROOT" + else + printf "\n$MLH_SHELL_SYMBOL" + fi } # Set git_prompt_info text From 657ad0523d5a29e0bdc8af0cd63c23ac597406e8 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Wed, 25 Jan 2023 08:50:06 +0100 Subject: [PATCH 168/253] fix(theme-and-appearance): fix `diff` completion in macOS Closes #11416 Closes #11454 --- lib/theme-and-appearance.zsh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh index 00947f72d..9b908bef0 100644 --- a/lib/theme-and-appearance.zsh +++ b/lib/theme-and-appearance.zsh @@ -41,7 +41,11 @@ fi # enable diff color if possible. if command diff --color /dev/null /dev/null &>/dev/null; then - alias diff='diff --color' + function color-diff { + diff --color $@ + } + alias diff="color-diff" + compdef _diff color-diff # compdef is already loaded by this point fi setopt auto_cd From e55e3f0f56ab4df21eb33e19569c295e7e5e71a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Thu, 26 Jan 2023 20:45:48 +0100 Subject: [PATCH 169/253] fix(systemadmin): handle error for no IPv6 route in `geteip` (#11458) --- plugins/systemadmin/systemadmin.plugin.zsh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/systemadmin/systemadmin.plugin.zsh b/plugins/systemadmin/systemadmin.plugin.zsh index 9b5159ff1..7ce62bac1 100644 --- a/plugins/systemadmin/systemadmin.plugin.zsh +++ b/plugins/systemadmin/systemadmin.plugin.zsh @@ -140,7 +140,13 @@ function d0() { # gather external ip address function geteip() { curl -s -S -4 https://icanhazip.com - curl -s -S -6 https://icanhazip.com + + # handle case when there is no IPv6 external IP, which shows error + # curl: (7) Couldn't connect to server + curl -s -S -6 https://icanhazip.com 2>/dev/null + local ret=$? + (( ret == 7 )) && print -P -u2 "%F{red}error: no IPv6 route to host%f" + return $ret } # determine local IP address(es) From b0bffcaf865434711d98b63eddd0aa52be0fbeb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 27 Jan 2023 16:22:27 +0100 Subject: [PATCH 170/253] fix(fzf): fix check for true Debian-like in debian setup function (#11460) Check for `apt` and `apt-get` in debian setup function. Look for exact directory in debian-like setup function. Fixes #11459 --- plugins/fzf/README.md | 9 --------- plugins/fzf/fzf.plugin.zsh | 4 ++-- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/plugins/fzf/README.md b/plugins/fzf/README.md index 7e3e3e5b0..beedf4690 100644 --- a/plugins/fzf/README.md +++ b/plugins/fzf/README.md @@ -50,12 +50,3 @@ Set whether to disable key bindings (CTRL-T, CTRL-R, ALT-C): ```zsh DISABLE_FZF_KEY_BINDINGS="true" ``` - -### Skip `dpkg` loading - -If you have `dpkg` available in your `$PATH` but you don't want to load `fzf` from there, and facing some -issues, you can define this option before loading `oh-my-zsh` in order to skip that loading: - -```zsh -zstyle ':omz:plugins:fzf' skip-dpkg yes -``` diff --git a/plugins/fzf/fzf.plugin.zsh b/plugins/fzf/fzf.plugin.zsh index c07d38493..7bb6667d0 100644 --- a/plugins/fzf/fzf.plugin.zsh +++ b/plugins/fzf/fzf.plugin.zsh @@ -60,7 +60,7 @@ function fzf_setup_using_base_dir() { function fzf_setup_using_debian() { - if (( ! $+commands[dpkg] )) || zstyle -t ':omz:plugins:fzf' skip-dpkg; then + if (( ! $+commands[apt] && ! $+commands[apt-get] )); then # Not a debian based distro return 1 fi @@ -81,7 +81,7 @@ function fzf_setup_using_debian() { key_bindings="${PREFIX}/share/fzf/key-bindings.zsh" ;; *) - if [[ ! -f /usr/bin/fzf ]]; then + if [[ ! -d /usr/share/doc/fzf/examples ]]; then # fzf not installed return 1 fi From 39525e5ec36052a83fadd47f377a26d33df851bd Mon Sep 17 00:00:00 2001 From: Taehyun Hwang Date: Sun, 29 Jan 2023 02:45:23 +0900 Subject: [PATCH 171/253] feat(git): add `gpsupf` alias (#11268) --- plugins/git/README.md | 1 + plugins/git/git.plugin.zsh | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/git/README.md b/plugins/git/README.md index d455e0eff..d5eaaa53f 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -89,6 +89,7 @@ plugins=(... git) | ggsup | git branch --set-upstream-to=origin/$(git_current_branch) | | ggu | git pull --rebase origin $(current_branch) | | gpsup | git push --set-upstream origin $(git_current_branch) | +| gpsupf | git push --set-upstream origin $(git_current_branch) --force-with-lease | | ghh | git help | | gignore | git update-index --assume-unchanged | | gignored | git ls-files -v \| grep "^[[:lower:]]" | diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 7544ca440..fc2c08ccd 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -199,6 +199,7 @@ alias ggpush='git push origin "$(git_current_branch)"' alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)' alias gpsup='git push --set-upstream origin $(git_current_branch)' +alias gpsupf='git push --set-upstream origin $(git_current_branch) --force-with-lease' alias ghh='git help' @@ -341,4 +342,4 @@ function grename() { fi } -unset git_version \ No newline at end of file +unset git_version From b2313ec7493dc127c9712f20654579221d0bcce6 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 22 Oct 2020 21:57:23 -0400 Subject: [PATCH 172/253] feat(installer): respect and install in `$ZDOTDIR` if set (#9376) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #9001 Fixes #10479 Closes #9376 Co-authored-by: Marc Cornellà --- tools/install.sh | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index a6538f9d7..4582ed03e 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -16,6 +16,9 @@ # ZSH=~/.zsh sh install.sh # # Respects the following environment variables: +# ZDOTDIR - path to Zsh dotfiles directory (default: unset). See [1][2] +# [1] https://zsh.sourceforge.io/Doc/Release/Parameters.html#index-ZDOTDIR +# [2] https://zsh.sourceforge.io/Doc/Release/Files.html#index-ZDOTDIR_002c-use-of # ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh) # REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh) # REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS) @@ -53,8 +56,17 @@ HOME="${HOME:-$(eval echo ~$USER)}" # Track if $ZSH was provided custom_zsh=${ZSH:+yes} -# Default settings +# Use $zdot to keep track of where the directory is for zsh dotfiles +# To check if $ZDOTDIR was provided, explicitly check for $ZDOTDIR +zdot="${ZDOTDIR:-$HOME}" + +# Default value for $ZSH +# a) if $ZDOTDIR is supplied: $ZDOTDIR/ohmyzsh +# b) otherwise, $HOME/.oh-my-zsh +ZSH="${ZSH:-${ZDOTDIR:+$ZDOTDIR/ohmyzsh}}" ZSH="${ZSH:-$HOME/.oh-my-zsh}" + +# Default settings REPO=${REPO:-ohmyzsh/ohmyzsh} REMOTE=${REMOTE:-https://github.com/${REPO}.git} BRANCH=${BRANCH:-master} @@ -311,11 +323,11 @@ setup_zshrc() { echo "${FMT_BLUE}Looking for an existing zsh config...${FMT_RESET}" # Must use this exact name so uninstall.sh can find it - OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh - if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then + OLD_ZSHRC="$zdot/.zshrc.pre-oh-my-zsh" + if [ -f "$zdot/.zshrc" ] || [ -h "$zdot/.zshrc" ]; then # Skip this if the user doesn't want to replace an existing .zshrc if [ "$KEEP_ZSHRC" = yes ]; then - echo "${FMT_YELLOW}Found ~/.zshrc.${FMT_RESET} ${FMT_GREEN}Keeping...${FMT_RESET}" + echo "${FMT_YELLOW}Found ${zdot}/.zshrc.${FMT_RESET} ${FMT_GREEN}Keeping...${FMT_RESET}" return fi if [ -e "$OLD_ZSHRC" ]; then @@ -327,19 +339,22 @@ setup_zshrc() { fi mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}" - echo "${FMT_YELLOW}Found old ~/.zshrc.pre-oh-my-zsh." \ + echo "${FMT_YELLOW}Found old .zshrc.pre-oh-my-zsh." \ "${FMT_GREEN}Backing up to ${OLD_OLD_ZSHRC}${FMT_RESET}" fi - echo "${FMT_YELLOW}Found ~/.zshrc.${FMT_RESET} ${FMT_GREEN}Backing up to ${OLD_ZSHRC}${FMT_RESET}" - mv ~/.zshrc "$OLD_ZSHRC" + echo "${FMT_YELLOW}Found ${zdot}/.zshrc.${FMT_RESET} ${FMT_GREEN}Backing up to ${OLD_ZSHRC}${FMT_RESET}" + mv "$zdot/.zshrc" "$OLD_ZSHRC" fi - echo "${FMT_GREEN}Using the Oh My Zsh template file and adding it to ~/.zshrc.${FMT_RESET}" + echo "${FMT_GREEN}Using the Oh My Zsh template file and adding it to $zdot/.zshrc.${FMT_RESET}" - # Replace $HOME path with '$HOME' in $ZSH variable in .zshrc file - omz=$(echo "$ZSH" | sed "s|^$HOME/|\$HOME/|") - sed "s|^export ZSH=.*$|export ZSH=\"${omz}\"|" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp - mv -f ~/.zshrc-omztemp ~/.zshrc + # Modify $ZSH variable in .zshrc directory to use the literal $ZDOTDIR or $HOME + omz="$ZSH" + [ -z "$ZDOTDIR" ] || omz=$(echo "$omz" | sed "s|^$ZDOTDIR/|\$ZDOTDIR/|") + omz=$(echo "$omz" | sed "s|^$HOME/|\$HOME/|") + + sed "s|^export ZSH=.*$|export ZSH=\"${omz}\"|" "$ZSH/templates/zshrc.zsh-template" > "$zdot/.zshrc-omztemp" + mv -f "$zdot/.zshrc-omztemp" "$zdot/.zshrc" echo } @@ -407,9 +422,9 @@ EOF # We're going to change the default shell, so back up the current one if [ -n "$SHELL" ]; then - echo "$SHELL" > ~/.shell.pre-oh-my-zsh + echo "$SHELL" > "$zdot/.shell.pre-oh-my-zsh" else - grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh + grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > "$zdot/.shell.pre-oh-my-zsh" fi echo "Changing your shell to $zsh..." @@ -451,7 +466,7 @@ print_success() { printf '\n' printf '\n' printf "%s %s %s\n" "Before you scream ${FMT_BOLD}${FMT_YELLOW}Oh My Zsh!${FMT_RESET} look over the" \ - "$(fmt_code "$(fmt_link ".zshrc" "file://$HOME/.zshrc" --text)")" \ + "$(fmt_code "$(fmt_link ".zshrc" "file://$zdot/.zshrc" --text)")" \ "file to select plugins, themes, and options." printf '\n' printf '%s\n' "• Follow us on Twitter: $(fmt_link @ohmyzsh https://twitter.com/ohmyzsh)" From 27f31799df369ffdd825014bbbb853ad6a1ee520 Mon Sep 17 00:00:00 2001 From: Stoyan Dimov Date: Wed, 1 Feb 2023 10:51:31 +0100 Subject: [PATCH 173/253] feat(dotnet): add `dwt` alias (#11470) --- plugins/dotnet/README.md | 1 + plugins/dotnet/dotnet.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/dotnet/README.md b/plugins/dotnet/README.md index 87dfd8f8d..a15e80577 100644 --- a/plugins/dotnet/README.md +++ b/plugins/dotnet/README.md @@ -17,6 +17,7 @@ plugins=(... dotnet) | dt | dotnet test | Run unit tests using the test runner specified in a .NET project. | | dw | dotnet watch | Watch for source file changes and restart the dotnet command. | | dwr | dotnet watch run | Watch for source file changes and restart the `run` command. | +| dwt | dotnet watch test| Watch for source file changes and restart the `test` command. | | ds | dotnet sln | Modify Visual Studio solution files. | | da | dotnet add | Add a package or reference to a .NET project. | | dp | dotnet pack | Create a NuGet package. | diff --git a/plugins/dotnet/dotnet.plugin.zsh b/plugins/dotnet/dotnet.plugin.zsh index 8ea31cdbd..89d464670 100644 --- a/plugins/dotnet/dotnet.plugin.zsh +++ b/plugins/dotnet/dotnet.plugin.zsh @@ -26,6 +26,7 @@ alias dr='dotnet run' alias dt='dotnet test' alias dw='dotnet watch' alias dwr='dotnet watch run' +alias dwt='dotnet watch test' alias ds='dotnet sln' alias da='dotnet add' alias dp='dotnet pack' From 5c9a3d2f4f5cecc019b49d8fa3c151e547f8b139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Wed, 1 Feb 2023 21:19:55 +0100 Subject: [PATCH 174/253] fix(installer): don't use `$ZDOTDIR` in zshrc file if same as `$HOME` Fixes #11471 --- tools/install.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index 4582ed03e..3ea12f8d4 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -61,9 +61,9 @@ custom_zsh=${ZSH:+yes} zdot="${ZDOTDIR:-$HOME}" # Default value for $ZSH -# a) if $ZDOTDIR is supplied: $ZDOTDIR/ohmyzsh +# a) if $ZDOTDIR is supplied and not $HOME: $ZDOTDIR/ohmyzsh # b) otherwise, $HOME/.oh-my-zsh -ZSH="${ZSH:-${ZDOTDIR:+$ZDOTDIR/ohmyzsh}}" +[ "$ZDOTDIR" = "$HOME" ] || ZSH="${ZSH:-${ZDOTDIR:+$ZDOTDIR/ohmyzsh}}" ZSH="${ZSH:-$HOME/.oh-my-zsh}" # Default settings @@ -350,7 +350,9 @@ setup_zshrc() { # Modify $ZSH variable in .zshrc directory to use the literal $ZDOTDIR or $HOME omz="$ZSH" - [ -z "$ZDOTDIR" ] || omz=$(echo "$omz" | sed "s|^$ZDOTDIR/|\$ZDOTDIR/|") + if [ -n "$ZDOTDIR" ] && [ "$ZDOTDIR" != "$HOME" ]; then + omz=$(echo "$omz" | sed "s|^$ZDOTDIR/|\$ZDOTDIR/|") + fi omz=$(echo "$omz" | sed "s|^$HOME/|\$HOME/|") sed "s|^export ZSH=.*$|export ZSH=\"${omz}\"|" "$ZSH/templates/zshrc.zsh-template" > "$zdot/.zshrc-omztemp" From 6c3cf658f6f341f7c716d6ff16714465cb651725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Thu, 2 Feb 2023 08:49:08 +0100 Subject: [PATCH 175/253] fix(installer): automatically create ZDOTDIR path if it doesn't exist --- tools/install.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/install.sh b/tools/install.sh index 3ea12f8d4..f4ef16a0c 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -523,6 +523,11 @@ EOF exit 1 fi + # Create ZDOTDIR folder structure if it doesn't exist + if [ -n "$ZDOTDIR" ]; then + mkdir -p "$ZDOTDIR" + fi + setup_ohmyzsh setup_zshrc setup_shell From b256c12d2e96d0fbe63910df82b9709cca4b38df Mon Sep 17 00:00:00 2001 From: David Yang Date: Thu, 2 Feb 2023 16:03:41 +0800 Subject: [PATCH 176/253] docs(fasd): recommend fork over original fasd (#11474) --- plugins/fasd/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/fasd/README.md b/plugins/fasd/README.md index a5c74e5b8..7c44ac84d 100644 --- a/plugins/fasd/README.md +++ b/plugins/fasd/README.md @@ -10,7 +10,7 @@ plugins=(... fasd) ## Installation -Please find detailed installation guide [`here`](https://github.com/clvv/fasd#install) +Please find detailed installation guide [`here`](https://github.com/whjvenyl/fasd#install) ## Aliases From ea4854dba3ef72e18df2c7cc79db2806d92322eb Mon Sep 17 00:00:00 2001 From: Hazael Sanchez Date: Thu, 2 Feb 2023 02:30:34 -0800 Subject: [PATCH 177/253] feat(directories): add config to skip aliases (#11469) Co-authored-by: Carlo Sala --- README.md | 10 ++++++++++ lib/directories.zsh | 2 ++ 2 files changed, 12 insertions(+) diff --git a/README.md b/README.md index 1e4b7ff70..7f4a26cab 100644 --- a/README.md +++ b/README.md @@ -276,6 +276,16 @@ If you have many functions that go well together, you can put them as a `XYZ.plu If you would like to override the functionality of a plugin distributed with Oh My Zsh, create a plugin of the same name in the `custom/plugins/` directory and it will be loaded instead of the one in `plugins/`. +### Remove directories aliases + +If you want to skip ohmyzsh default +[directories aliases](https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/directories.zsh) you can add the +following snippet to your `zshrc`, before loading `oh-my-zsh.sh` script: + +```zsh +zstyle ':omz:directories' aliases no +``` + ## Getting Updates By default, you will be prompted to check for updates every 2 weeks. You can choose other update modes by adding a line to your `~/.zshrc` file, **before Oh My Zsh is loaded**: diff --git a/lib/directories.zsh b/lib/directories.zsh index c62f56468..5aa1b3d5b 100644 --- a/lib/directories.zsh +++ b/lib/directories.zsh @@ -3,6 +3,8 @@ setopt auto_pushd setopt pushd_ignore_dups setopt pushdminus +zstyle -T ':omz:directories' aliases || return + alias -g ...='../..' alias -g ....='../../..' alias -g .....='../../../..' From f8bf8f0029a475831ebfba0799975ede20e08742 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Thu, 15 Dec 2022 23:06:06 +0100 Subject: [PATCH 178/253] fix(sudo): only call redisplay if zle is enabled Fixes #11322 --- plugins/sudo/sudo.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/sudo/sudo.plugin.zsh b/plugins/sudo/sudo.plugin.zsh index 2a0b3bfc4..66b253fe7 100644 --- a/plugins/sudo/sudo.plugin.zsh +++ b/plugins/sudo/sudo.plugin.zsh @@ -96,7 +96,7 @@ sudo-command-line() { LBUFFER="${WHITESPACE}${LBUFFER}" # Redisplay edit buffer (compatibility with zsh-syntax-highlighting) - zle redisplay + zle && zle redisplay # only run redisplay if zle is enabled } } From 9b91e8256011240cbf65ba65fbe55c5fd9dbae07 Mon Sep 17 00:00:00 2001 From: david Date: Sun, 5 Feb 2023 11:32:49 +0400 Subject: [PATCH 179/253] feat(extract): add `zpaq` support (#11478) --- plugins/extract/README.md | 1 + plugins/extract/_extract | 2 +- plugins/extract/extract.plugin.zsh | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/extract/README.md b/plugins/extract/README.md index 44f0b05a1..f67b53618 100644 --- a/plugins/extract/README.md +++ b/plugins/extract/README.md @@ -55,6 +55,7 @@ plugins=(... extract) | `xz` | LZMA2 archive | | `zip` | Zip archive | | `zst` | Zstandard file (zstd) | +| `zpaq` | Zpaq file | See [list of archive formats](https://en.wikipedia.org/wiki/List_of_archive_formats) for more information regarding archive formats. diff --git a/plugins/extract/_extract b/plugins/extract/_extract index 27b099c9e..64678fede 100644 --- a/plugins/extract/_extract +++ b/plugins/extract/_extract @@ -3,5 +3,5 @@ _arguments \ '(-r --remove)'{-r,--remove}'[Remove archive.]' \ - "*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|cab|cpio|deb|ear|gz|ipa|ipsw|jar|lrz|lz4|lzma|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.lrz|tar.lz|tar.lz4|tar.xz|tar.zma|tar.zst|tbz|tbz2|tgz|tlz|txz|tzst|war|whl|xpi|xz|zip|zst)(-.)'" \ + "*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|cab|cpio|deb|ear|gz|ipa|ipsw|jar|lrz|lz4|lzma|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.lrz|tar.lz|tar.lz4|tar.xz|tar.zma|tar.zst|tbz|tbz2|tgz|tlz|txz|tzst|war|whl|xpi|xz|zip|zst|zpaq)(-.)'" \ && return 0 diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index 563d88c72..4c84ef883 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -73,6 +73,7 @@ EOF (*.zst) unzstd "$file" ;; (*.cab) cabextract -d "$extract_dir" "$file" ;; (*.cpio) cpio -idmvF "$file" ;; + (*.zpaq) zpaq x "$file" ;; (*) echo "extract: '$file' cannot be extracted" >&2 success=1 ;; From d48cbb82b1a44d646c6b12b6bfb13c5fd366e1ae Mon Sep 17 00:00:00 2001 From: Unnit Metaliya Date: Mon, 6 Feb 2023 06:07:40 -0500 Subject: [PATCH 180/253] feat(git)!: add `force-if-includes` flag (#11481) Co-authored-by: Carlo Sala Closes #11388 BREAKING CHANGE: `gpf` and `gpsupf` now have the `--force-if-includes` flag if git version is greater than 2.30. It will make force pushes more safer. See https://stackoverflow.com/questions/65837109/when-should-i-use-git-push-force-if-includes --- plugins/git/README.md | 5 ++++- plugins/git/git.plugin.zsh | 8 ++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/plugins/git/README.md b/plugins/git/README.md index d5eaaa53f..cd018d435 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -89,7 +89,8 @@ plugins=(... git) | ggsup | git branch --set-upstream-to=origin/$(git_current_branch) | | ggu | git pull --rebase origin $(current_branch) | | gpsup | git push --set-upstream origin $(git_current_branch) | -| gpsupf | git push --set-upstream origin $(git_current_branch) --force-with-lease | +| gpsupf | git push --set-upstream origin $(git_current_branch) --force-with-lease --force-if-includes (git version >= 2.30) | +| gpsupf | git push --set-upstream origin $(git_current_branch) --force-with-lease (git version < 2.30) | | ghh | git help | | gignore | git update-index --assume-unchanged | | gignored | git ls-files -v \| grep "^[[:lower:]]" | @@ -120,6 +121,8 @@ plugins=(... git) | gp | git push | | gpd | git push --dry-run | | gpf | git push --force-with-lease | +| gpf | git push --force-with-lease --force-if-includes (git version >= 2.30) | +| gpf | git push --force-with-lease (git version < 2.30) | | gpf! | git push --force | | gpoat | git push origin --all && git push origin --tags | | gpr | git pull --rebase | diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index fc2c08ccd..7541ccff2 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -199,7 +199,9 @@ alias ggpush='git push origin "$(git_current_branch)"' alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)' alias gpsup='git push --set-upstream origin $(git_current_branch)' -alias gpsupf='git push --set-upstream origin $(git_current_branch) --force-with-lease' +is-at-least 2.30 "$git_version" \ + && alias gpsupf='git push --set-upstream origin $(git_current_branch) --force-with-lease --force-if-includes' \ + || alias gpsupf='git push --set-upstream origin $(git_current_branch) --force-with-lease' alias ghh='git help' @@ -235,7 +237,9 @@ alias gma='git merge --abort' alias gp='git push' alias gpd='git push --dry-run' -alias gpf='git push --force-with-lease' +is-at-least 2.30 "$git_version" \ + && alias gpf='git push --force-with-lease --force-if-includes' \ + || alias gpf='git push --force-with-lease' alias gpf!='git push --force' alias gpoat='git push origin --all && git push origin --tags' alias gpr='git pull --rebase' From 3fd63fdf01344bb5f5f13a9c33eb0b7a72fe4771 Mon Sep 17 00:00:00 2001 From: Andrew Stone <61954919+adrwstone@users.noreply.github.com> Date: Mon, 6 Feb 2023 07:39:37 -0330 Subject: [PATCH 181/253] feat(zsh-interactive-cd): sync version with upstream (#11024) --- plugins/zsh-interactive-cd/LICENSE | 375 ++++++++++++++++++ plugins/zsh-interactive-cd/README.md | 22 +- plugins/zsh-interactive-cd/demo.gif | Bin 0 -> 1497944 bytes .../zsh-interactive-cd.plugin.zsh | 54 ++- 4 files changed, 425 insertions(+), 26 deletions(-) create mode 100644 plugins/zsh-interactive-cd/LICENSE create mode 100644 plugins/zsh-interactive-cd/demo.gif diff --git a/plugins/zsh-interactive-cd/LICENSE b/plugins/zsh-interactive-cd/LICENSE new file mode 100644 index 000000000..40b3f8d7a --- /dev/null +++ b/plugins/zsh-interactive-cd/LICENSE @@ -0,0 +1,375 @@ +Copyright 2017-2018 Henry Chang + +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/plugins/zsh-interactive-cd/README.md b/plugins/zsh-interactive-cd/README.md index c8337fbc8..4bffbf04a 100644 --- a/plugins/zsh-interactive-cd/README.md +++ b/plugins/zsh-interactive-cd/README.md @@ -1,23 +1,15 @@ # zsh-interactive-cd -This plugin adds a fish-like interactive tab completion for the `cd` command. +## Demo -To use it, add `zsh-interactive-cd` to the plugins array of your zshrc file: -```zsh -plugins=(... zsh-interactive-cd) -``` +![demo](demo.gif) -![demo](https://user-images.githubusercontent.com/1441704/74360670-cb202900-4dc5-11ea-9734-f60caf726e85.gif) +## Installation + +1. Install [fzf](https://github.com/junegunn/fzf) by following its [installation instruction](https://github.com/junegunn/fzf#installation). + +2. Source `zsh-interactive-cd.plugin.zsh` in `.zshrc`. ## Usage Press tab for completion as usual, it'll launch fzf automatically. Check fzf’s [readme](https://github.com/junegunn/fzf#search-syntax) for more search syntax usage. - -## Requirements - -This plugin requires [fzf](https://github.com/junegunn/fzf). Install it by following -its [installation instructions](https://github.com/junegunn/fzf#installation). - -## Author - -[Henry Chang](https://github.com/changyuheng) diff --git a/plugins/zsh-interactive-cd/demo.gif b/plugins/zsh-interactive-cd/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..3568ecf954a3c2049908e97d355f6f187236be2e GIT binary patch literal 1497944 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±y+xcT>g~?;_hZnD&Uc{0w&iYDF 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 z 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

Y+KJy2nqQS;i?%+cjP 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

i0k$BB$>_gyLEY%Y~#XLH>(dW`jK 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�xJBbE%mkT;Q4|X>WML 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 literal 0 HcmV?d00001 diff --git a/plugins/zsh-interactive-cd/zsh-interactive-cd.plugin.zsh b/plugins/zsh-interactive-cd/zsh-interactive-cd.plugin.zsh index b0520c239..0ae9d50a7 100644 --- a/plugins/zsh-interactive-cd/zsh-interactive-cd.plugin.zsh +++ b/plugins/zsh-interactive-cd/zsh-interactive-cd.plugin.zsh @@ -1,4 +1,10 @@ -# Copyright (c) 2017 Henry Chang +#!/usr/bin/env zsh +# +# Copyright 2017-2018 Henry Chang +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. __zic_fzf_prog() { [ -n "$TMUX_PANE" ] && [ "${FZF_TMUX:-0}" != 0 ] && [ ${LINES:-40} -gt 15 ] \ @@ -17,7 +23,7 @@ __zic_matched_subdir_list() { length=0 fi find -L "$dir" -mindepth 1 -maxdepth 1 -type d 2>/dev/null \ - | cut -b $(( ${length} + 2 ))- | sed '/^$/d' | while read -r line; do + | cut -b $(( ${length} + 2 ))- | command sed '/^$/d' | while read -r line; do if [[ "${line[1]}" == "." ]]; then continue fi @@ -32,13 +38,19 @@ __zic_matched_subdir_list() { seg=$(basename -- "$1") starts_with_dir=$( \ find -L "$dir" -mindepth 1 -maxdepth 1 -type d \ - 2>/dev/null | cut -b $(( ${length} + 2 ))- | sed '/^$/d' \ + 2>/dev/null | cut -b $(( ${length} + 2 ))- | command sed '/^$/d' \ | while read -r line; do if [[ "${seg[1]}" != "." && "${line[1]}" == "." ]]; then continue fi - if [[ "$line" == "$seg"* ]]; then - echo "$line" + if [ "$zic_case_insensitive" = "true" ]; then + if [[ "$line:u" == "$seg:u"* ]]; then + echo "$line" + fi + else + if [[ "$line" == "$seg"* ]]; then + echo "$line" + fi fi done ) @@ -46,19 +58,36 @@ __zic_matched_subdir_list() { echo "$starts_with_dir" else find -L "$dir" -mindepth 1 -maxdepth 1 -type d \ - 2>/dev/null | cut -b $(( ${length} + 2 ))- | sed '/^$/d' \ + 2>/dev/null | cut -b $(( ${length} + 2 ))- | command sed '/^$/d' \ | while read -r line; do if [[ "${seg[1]}" != "." && "${line[1]}" == "." ]]; then continue fi - if [[ "$line" == *"$seg"* ]]; then - echo "$line" + if [ "$zic_case_insensitive" = "true" ]; then + if [[ "$line:u" == *"$seg:u"* ]]; then + echo "$line" + fi + else + if [[ "$line" == *"$seg"* ]]; then + echo "$line" + fi fi done fi fi } +__zic_fzf_bindings() { + autoload is-at-least + fzf=$(__zic_fzf_prog) + + if $(is-at-least '0.21.0' $(${=fzf} --version)); then + echo 'shift-tab:up,tab:down,bspace:backward-delete-char/eof' + else + echo 'shift-tab:up,tab:down' + fi +} + _zic_list_generator() { __zic_matched_subdir_list "${(Q)@[-1]}" | sort } @@ -75,6 +104,7 @@ _zic_complete() { fi fzf=$(__zic_fzf_prog) + fzf_bindings=$(__zic_fzf_bindings) if [ $(echo $l | wc -l) -eq 1 ]; then matches=${(q)l} @@ -82,7 +112,7 @@ _zic_complete() { matches=$(echo $l \ | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} \ --reverse $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS \ - --bind 'shift-tab:up,tab:down'" ${=fzf} \ + --bind '${fzf_bindings}'" ${=fzf} \ | while read -r item; do echo -n "${(q)item} " done) @@ -144,5 +174,7 @@ zic-completion() { } zle -N zic-completion -bindkey -M emacs '^I' zic-completion -bindkey -M viins '^I' zic-completion +if [ -z $zic_custom_binding ]; then + zic_custom_binding='^I' +fi +bindkey "${zic_custom_binding}" zic-completion From 379fe0fe131cff7a480f7975b32b0ea6fc7c2370 Mon Sep 17 00:00:00 2001 From: Julien Rottenberg Date: Tue, 7 Feb 2023 03:33:59 -0800 Subject: [PATCH 182/253] feat(azure): add `azure` plugin (#8848) Co-authored-by: hagridaaron Co-authored-by: Terry Closes #8847 --- lib/prompt_info_functions.zsh | 1 + plugins/azure/README.md | 49 +++++++++++++++++++++++++++ plugins/azure/azure.plugin.zsh | 60 ++++++++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 plugins/azure/README.md create mode 100644 plugins/azure/azure.plugin.zsh 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/plugins/azure/README.md b/plugins/azure/README.md new file mode 100644 index 000000000..f39930851 --- /dev/null +++ b/plugins/azure/README.md @@ -0,0 +1,49 @@ +# azure + +This plugin provides completion support for [azure cli](https://docs.microsoft.com/en-us/cli/azure/) +and a few utilities to manage azure subscriptions and display them in the prompt. + +To use it, add `azure` to the plugins array in your zshrc file. + +```zsh +plugins=(... azure) +``` + +## Plugin commands + + +* `az_subscriptions`: lists the available subscriptions in the `AZURE_CONFIG_DIR` (default: `~/.azure/`). + Used to provide completion for the `azss` function. + +* `azgs`: gets the current value of `$azure_subscription`. + +* `azss []`: sets the `$azure_subscription`. + + +NOTE : because azure keeps the state of active subscription in ${AZURE_CONFIG_DIR:-$HOME/.azure/azureProfile.json}, the prompt command requires `jq` to be enabled to parse the file. If jq is not in the path the prompt will show nothing + +## Theme + +The plugin creates an `azure_prompt_info` function that you can use in your theme, which displays +the current `$azure_subscription`. It uses two variables to control how that is shown: + +- ZSH_THEME_AZURE_PREFIX: sets the prefix of the azure_subscription. Defaults to ``. + + +``` +RPROMPT='$(azure_prompt_info)' +``` + +## Develop + +On ubuntu get a working environment with : + +` docker run -it -v $(pwd):/mnt -w /mnt ubuntu bash` + +``` +apt install -y curl jq zsh git vim +sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" +curl -sL https://aka.ms/InstallAzureCLIDeb | bash +``` \ No newline at end of file diff --git a/plugins/azure/azure.plugin.zsh b/plugins/azure/azure.plugin.zsh new file mode 100644 index 000000000..7bb173a5c --- /dev/null +++ b/plugins/azure/azure.plugin.zsh @@ -0,0 +1,60 @@ +# AZ Get Subscritions +function azgs() { + az account show --output tsv --query 'name' 2>/dev/null +} + +# AZ Subscription Selection +alias azss="az account set --subscription" + + +function az_subscriptions() { + az account list --all --output tsv --query '[*].name' 2> /dev/null +} + +function _az_subscriptions() { + reply=($(az_subscriptions)) +} +compctl -K _az_subscriptions azss + +# Azure prompt +function azure_prompt_info() { + [[ ! -f "${AZURE_CONFIG_DIR:-$HOME/.azure/azureProfile.json}" ]] && return + # azgs is too expensive, if we have jq, we enable the prompt + (( $+commands[jq] )) || return 1 + azgs=$(jq -r '.subscriptions[] | select(.isDefault==true) .name' ${AZURE_CONFIG_DIR:-$HOME/.azure/azureProfile.json}) + echo "${ZSH_THEME_AZURE_PREFIX:=}" +} + + +# Load az completions +function _az-homebrew-installed() { + # check if Homebrew is installed + (( $+commands[brew] )) || return 1 + + # speculatively check default brew prefix + if [ -h /usr/local/opt/az ]; then + _brew_prefix=/usr/local/opt/az + else + # ok, it is not in the default prefix + # this call to brew is expensive (about 400 ms), so at least let's make it only once + _brew_prefix=$(brew --prefix azure-cli) + fi +} + + +# get az.completion.sh location from $PATH +_az_zsh_completer_path="$commands[az_zsh_completer.sh]" + +# otherwise check common locations +if [[ -z $_az_zsh_completer_path ]]; then + # Homebrew + if _az-homebrew-installed; then + _az_zsh_completer_path=$_brew_prefix/libexec/bin/az.completion.sh + # Linux + else + _az_zsh_completer_path=/etc/bash_completion.d/azure-cli + fi +fi + +[[ -r $_az_zsh_completer_path ]] && source $_az_zsh_completer_path +unset _az_zsh_completer_path _brew_prefix From 87f1941d27df2e9a3390e5d1cddf6c264ba7311d Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 7 Feb 2023 16:17:07 +0100 Subject: [PATCH 183/253] docs(git): remove duplicated line --- plugins/git/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/git/README.md b/plugins/git/README.md index cd018d435..1c3f8acf0 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -120,7 +120,6 @@ plugins=(... git) | gma | git merge --abort | | gp | git push | | gpd | git push --dry-run | -| gpf | git push --force-with-lease | | gpf | git push --force-with-lease --force-if-includes (git version >= 2.30) | | gpf | git push --force-with-lease (git version < 2.30) | | gpf! | git push --force | From 45571bfa03934359a49f7043cbcf50abccdf448c Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Wed, 8 Feb 2023 11:35:48 +0100 Subject: [PATCH 184/253] fix(git): `gpristine` requires two `--force` flags Fixes #11483 --- plugins/git/git.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 7541ccff2..70e6b4439 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -104,7 +104,7 @@ compdef _git gccd=git-clone alias gcl='git clone --recurse-submodules' alias gclean='git clean --interactive -d' -alias gpristine='git reset --hard && git clean --force -dx' +alias gpristine='git reset --hard && git clean --force -dfx' alias gcm='git checkout $(git_main_branch)' alias gcd='git checkout $(git_develop_branch)' alias gcmsg='git commit --message' From 0e9e5360c400cda5a80c9394583b9acbf7cfe711 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Thu, 9 Feb 2023 12:24:39 +0100 Subject: [PATCH 185/253] feat(gradle): update completion from upstream (#11485) --- plugins/gradle/_gradle | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/plugins/gradle/_gradle b/plugins/gradle/_gradle index 770723d85..1da5aebee 100644 --- a/plugins/gradle/_gradle +++ b/plugins/gradle/_gradle @@ -1,4 +1,3 @@ -#compdef gradle gradlew gw # # Taken from https://github.com/gradle/gradle-completion # Copyright (c) 2017 Eric Wendelin @@ -22,6 +21,8 @@ # SOFTWARE. # Terms +#compdef gradle gradlew gw + __gradle-set-project-root-dir() { local dir=`pwd` project_root_dir=`pwd` @@ -96,7 +97,7 @@ __gradle-generate-script-cache() { zle -R "Generating Gradle build script cache" # Cache all Gradle scripts local -a gradle_build_scripts - gradle_build_scripts=( $(find $project_root_dir -type f -name "*.gradle" -o -name "*.gradle.kts" 2>/dev/null | grep -E -v "$script_exclude_pattern") ) + gradle_build_scripts=( $(find $project_root_dir -type f -name "*.gradle" -o -name "*.gradle.kts" 2>/dev/null | egrep -v "$script_exclude_pattern") ) printf "%s\n" "${gradle_build_scripts[@]}" >| $cache_dir/$cache_name fi } @@ -116,9 +117,9 @@ __gradle-generate-tasks-cache() { # Reuse Gradle Daemon if IDLE but don't start a new one. local gradle_tasks_output if [[ ! -z "$($gradle_cmd --status 2>/dev/null | grep IDLE)" ]]; then - gradle_tasks_output="$($gradle_cmd --daemon --build-file $gradle_build_file --console plain -q tasks --all 2>/dev/null)" + gradle_tasks_output="$($gradle_cmd --daemon --no-scan --build-file $gradle_build_file --console=plain -q tasks --all 2>/dev/null)" else - gradle_tasks_output="$($gradle_cmd --no-daemon --build-file $gradle_build_file --console plain -q tasks --all 2>/dev/null)" + gradle_tasks_output="$($gradle_cmd --no-daemon --no-scan --build-file $gradle_build_file --console=plain -q tasks --all 2>/dev/null)" fi local gradle_all_tasks="" root_tasks="" subproject_tasks="" output_line local -a match @@ -180,7 +181,7 @@ __gradle_tasks() { local cached_checksum="$(cat $cache_dir/$cache_name.md5)" local -a cached_tasks if [[ -z $cur ]]; then - cached_tasks=(${(f)"$(cat $cache_dir/$cached_checksum)"}) + cached_tasks=(${(f)"$(grep -v "^\\\:" $cache_dir/$cached_checksum)"}) else cached_tasks=(${(f)"$(grep "^${cur//:/\\\\:}" $cache_dir/$cached_checksum)"}) fi @@ -191,7 +192,7 @@ __gradle_tasks() { # Regenerate tasks cache in the background if [[ $gradle_files_checksum != "$(cat $cache_dir/$cache_name.md5)" || ! -f $cache_dir/$gradle_files_checksum || $(wc -c < $cache_dir/$gradle_files_checksum) -le 1 ]]; then - $(__gradle-generate-tasks-cache 1>&2 2>/dev/null &) + $(__gradle-generate-tasks-cache &> /dev/null &) fi else _describe 'built-in tasks' '( @@ -262,7 +263,10 @@ __gradle_subcommand() { {-b,--build-file}'[Specifies the build file.]:build script:_files -g \*.gradle' \ {-C,--cache}'[Specifies how compiled build scripts should be cached.]:cache policy:(on rebuild)' \ {-c,--settings-file}'[Specifies the settings file.]:settings file:_files -g \*.gradle' \ + '(--configuration-cache)--no-configuration-cache[Disables the configuration cache. Gradle will not reuse the build configuration from previous builds.]' \ + '--configuration-cache-problems=[Configures how the configuration cache handles problems]:problem handling:(fail warn)' \ '(--no-configure-on-demand)--configure-on-demand[Only relevant projects are configured in this build run.]' \ + '(--no-configuration-cache)--configuration-cache[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]' \ '--console=[Specifies which type of console output to generate.]:console output type:(plain auto rich verbose)' \ '--continue[Continues task execution after a task failure.]' \ '-Dorg.gradle.cache.reserved.mb=[Reserve Gradle Daemon memory for operations.]' \ @@ -276,6 +280,7 @@ __gradle_subcommand() { '-Dorg.gradle.logging.level=[Set default Gradle log level.]:log level:(quiet warn lifecycle info debug)' \ '-Dorg.gradle.parallel=[Set true to enable parallel project builds.]:enable parallel build:(true false)' \ '-Dorg.gradle.priority=[Set priority for Gradle worker processes.]:priority:(low normal)' \ + '-Dorg.gradle.unsafe.watch-fs=[Set true to enable Gradle file watcher.]:enable watcher:(true false)' \ '-Dorg.gradle.warning.mode=[Set types of warnings to log.]:warning level:(all summary none)' \ '-Dorg.gradle.workers.max=[Set the number of workers Gradle is allowed to use.]' \ '(-i --info -w --warn -q --quiet)'{-d,--debug}'[Log in debug mode (includes normal stacktrace).]' \ @@ -314,6 +319,7 @@ __gradle_subcommand() { '(--write-locks)--update-locks[Perform a partial update of the dependency lock.]' \ '(-d --debug -q --quiet -i --info)'{-w,--warn}'[Log warnings and errors only.]' \ '--warning-mode=[Set types of warnings to log.]:warning mode:(all summary none)' \ + '(--no-watch-fs)--watch-fs[Gradle watches filesystem for incremental builds.]' \ '(--update-locks)--write-locks[Persists dependency resolution for locked configurations.]' \ {-x,--exclude-task}'[Specify a task to be excluded from execution.]' && ret=0 ;; @@ -347,6 +353,9 @@ _gradle() { {-b,--build-file}'[Specifies the build file.]:build script:_files -g \*.gradle' \ {-C,--cache}'[Specifies how compiled build scripts should be cached.]:cache policy:(on rebuild)' \ {-c,--settings-file}'[Specifies the settings file.]:settings file:_files -g \*.gradle:->argument-expected' \ + '(--no-configuration-cache)--configuration-cache[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]' \ + '(--configuration-cache)--no-configuration-cache[Disables the configuration cache. Gradle will not reuse the build configuration from previous builds.]' \ + '--configuration-cache-problems=[Configures how the configuration cache handles problems]:problem handling:(fail warn)' \ '(--no-configure-on-demand)--configure-on-demand[Only relevant projects are configured in this build run.]' \ '--console=[Specifies which type of console output to generate.]:console output type:(plain auto rich verbose)' \ '--continue[Continues task execution after a task failure.]' \ @@ -361,6 +370,7 @@ _gradle() { '-Dorg.gradle.logging.level=[Set default Gradle log level.]:log level:(quiet warn lifecycle info debug)' \ '-Dorg.gradle.parallel=[Set true to enable parallel project builds.]:(true false)' \ '-Dorg.gradle.priority=[Set priority for Gradle worker processes.]:priority:(low normal)' \ + '-Dorg.gradle.unsafe.watch-fs=[Set true to enable Gradle file watcher.]:enable watcher:(true false)' \ '-Dorg.gradle.warning.mode=[Set types of warnings to log.]:warning level:(all summary none)' \ '-Dorg.gradle.workers.max=[Set the number of workers Gradle is allowed to use.]' \ '(-i --info -w --warn -q --quiet)'{-d,--debug}'[Log in debug mode (includes normal stacktrace).]' \ @@ -404,6 +414,7 @@ _gradle() { '(-d --debug -q --quiet -i --info)'{-w,--warn}'[Log warnings and errors only.]' \ '--warning-mode=[Set types of warnings to log.]:warning mode:(all summary none)' \ '(--update-locks)--write-locks[Persists dependency resolution for locked configurations.]' \ + '(--no-watch-fs)--watch-fs[Gradle watches filesystem for incremental builds.]' \ {-x,--exclude-task}'[Specify a task to be excluded from execution.]' \ '(-)*:: :->task-or-option' && ret=0 From 041c35ffc8cd97dd6327f44e35fa777af6f8e845 Mon Sep 17 00:00:00 2001 From: Samyak Sarnayak Date: Thu, 9 Feb 2023 16:57:41 +0530 Subject: [PATCH 186/253] feat(amuse): add virtualenv support (#8987) Fixes #7766 Closes #8814 --- themes/amuse.zsh-theme | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/themes/amuse.zsh-theme b/themes/amuse.zsh-theme index 3f7ec0bc5..d787fdaa4 100644 --- a/themes/amuse.zsh-theme +++ b/themes/amuse.zsh-theme @@ -11,8 +11,14 @@ ZSH_THEME_RUBY_PROMPT_PREFIX="%{$fg_bold[red]%}‹" ZSH_THEME_RUBY_PROMPT_SUFFIX="›%{$reset_color%}" PROMPT=' -%{$fg_bold[green]%}%~%{$reset_color%}$(git_prompt_info) ⌚ %{$fg_bold[red]%}%*%{$reset_color%} +%{$fg_bold[green]%}%~%{$reset_color%}$(git_prompt_info)$(virtualenv_prompt_info) ⌚ %{$fg_bold[red]%}%*%{$reset_color%} $ ' RPROMPT='$(ruby_prompt_info)' +VIRTUAL_ENV_DISABLE_PROMPT=0 +ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX=" %{$fg[green]%}🐍" +ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX="%{$reset_color%}" +ZSH_THEME_VIRTUALENV_PREFIX=$ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX +ZSH_THEME_VIRTUALENV_SUFFIX=$ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX + From f9104d155f618f2d6f5e13af648c81a5d036a592 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Sat, 11 Feb 2023 20:54:20 +0100 Subject: [PATCH 187/253] fix(gradle): move compdef line (#11488) --- plugins/gradle/_gradle | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/gradle/_gradle b/plugins/gradle/_gradle index 1da5aebee..f8df928b4 100644 --- a/plugins/gradle/_gradle +++ b/plugins/gradle/_gradle @@ -1,3 +1,6 @@ +#compdef gradle gradlew gw +# THE LINE ABOVE MUST BE THE FIRST LINE OF THIS FILE IN ORDER FOR COMPLETION TO WORK + # # Taken from https://github.com/gradle/gradle-completion # Copyright (c) 2017 Eric Wendelin @@ -21,8 +24,6 @@ # SOFTWARE. # Terms -#compdef gradle gradlew gw - __gradle-set-project-root-dir() { local dir=`pwd` project_root_dir=`pwd` From 3e1c0d51cb66cf02357b25f514d55a3de8197647 Mon Sep 17 00:00:00 2001 From: GrandZhuo Date: Sun, 12 Feb 2023 16:53:04 +0800 Subject: [PATCH 188/253] fix(fzf): installation dir for brew M1 (#11490) --- plugins/fzf/fzf.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/fzf/fzf.plugin.zsh b/plugins/fzf/fzf.plugin.zsh index 7bb6667d0..b253a23d2 100644 --- a/plugins/fzf/fzf.plugin.zsh +++ b/plugins/fzf/fzf.plugin.zsh @@ -9,7 +9,7 @@ function fzf_setup_using_base_dir() { "${HOME}/.nix-profile/share/fzf" "${XDG_DATA_HOME:-$HOME/.local/share}/fzf" "/usr/local/opt/fzf" - "/opt/homebrew/bin/fzf" + "/opt/homebrew/opt/fzf" "/usr/share/fzf" "/usr/local/share/examples/fzf" ) From ed407466b8ae3c12c2f03da004d721618e64fd49 Mon Sep 17 00:00:00 2001 From: Ruben van Erk Date: Sun, 12 Feb 2023 16:05:06 +0100 Subject: [PATCH 189/253] docs(lando): php support (#11491) --- plugins/lando/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/lando/README.md b/plugins/lando/README.md index 928a42bca..6daeae4e4 100644 --- a/plugins/lando/README.md +++ b/plugins/lando/README.md @@ -17,6 +17,7 @@ plugins=(... lando) | `drush` | `lando drush` | | `gulp` | `lando gulp` | | `npm` | `lando npm` | +| `php` | `lando php` | | `wp` | `lando wp` | | `yarn` | `lando yarn` | From 416560c9bf0c03afe6f576ab9e420256843bfb8b Mon Sep 17 00:00:00 2001 From: Richard Mitchell Date: Sun, 12 Feb 2023 11:46:25 -0500 Subject: [PATCH 190/253] docs(lib/directories): comment how to disable alias (#11489) --- lib/directories.zsh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/directories.zsh b/lib/directories.zsh index 5aa1b3d5b..091140626 100644 --- a/lib/directories.zsh +++ b/lib/directories.zsh @@ -3,6 +3,11 @@ 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 alias -g ...='../..' From 69b5737daf0448ad7e6686174638be74f86afdec Mon Sep 17 00:00:00 2001 From: shelfofclub Date: Tue, 14 Feb 2023 20:44:23 +0800 Subject: [PATCH 191/253] fix(af-magic): fix python venv checking logic (#11495) --- themes/af-magic.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/af-magic.zsh-theme b/themes/af-magic.zsh-theme index 2ef9b02d7..1b629e43a 100644 --- a/themes/af-magic.zsh-theme +++ b/themes/af-magic.zsh-theme @@ -10,7 +10,7 @@ function afmagic_dashes { # if there is a python virtual environment and it is displayed in # the prompt, account for it when returning the number of dashes - if [[ -n "$python_env" && "$PS1" = \(* ]]; then + if [[ -n "$python_env" && "$PS1" = *\(${python_env}\)* ]]; then echo $(( COLUMNS - ${#python_env} - 3 )) else echo $COLUMNS From 574669da6b71462c1f92c75ad75f66476b92974c Mon Sep 17 00:00:00 2001 From: Richard Mitchell Date: Sat, 11 Feb 2023 10:46:31 -0500 Subject: [PATCH 192/253] fix(correction)!: remove aliases for non standard commands BREAKING CHANGE: This commit removes aliases for some commands that previously were not being autocorrected. If you are using autocorrection, please check it. --- lib/correction.zsh | 5 ----- 1 file changed, 5 deletions(-) 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' From 8a68bf67720a6a5442ae947d10d74b1dd3558d91 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Thu, 16 Feb 2023 12:54:23 +0100 Subject: [PATCH 193/253] fix(theme-and-appearance): test color ls with $ZSH directory Fixes #11500 --- lib/theme-and-appearance.zsh | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh index 9b908bef0..c83f58c7b 100644 --- a/lib/theme-and-appearance.zsh +++ b/lib/theme-and-appearance.zsh @@ -7,32 +7,37 @@ export LSCOLORS="Gxfxcxdxbxegedabagacad" # TODO organise this chaotic logic if [[ "$DISABLE_LS_COLORS" != "true" ]]; then + if [[ -d "$ZSH" ]]; then + _test_dir="$ZSH" + else + _test_dir="." + fi # 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' + gls --color -d "$_test_dir" &>/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' + gls --color -d "$_test_dir" &>/dev/null && alias ls='gls --color=tty' + colorls -G -d "$_test_dir" &>/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' + ls -G "$_test_dir" &>/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' + [[ -n "$LS_COLORS" || -f "$HOME/.dircolors" ]] && gls --color -d "$_test_dir" &>/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 - ls --color -d . &>/dev/null && alias ls='ls --color=tty' || { ls -G . &>/dev/null && alias ls='ls -G' } + ls --color -d "$_test_dir" &>/dev/null && alias ls='ls --color=tty' || { ls -G "$_test_dir" &>/dev/null && alias ls='ls -G' } # Take advantage of $LS_COLORS for completion as well. zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" From 25368f9a65e805a961884ce70206c907218fc741 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Antonio=20Ram=C3=ADrez?= Date: Fri, 17 Feb 2023 03:09:00 -0400 Subject: [PATCH 194/253] fix(gcloud): add location of latest snap install (#11502) Latest snap installs gcloud at /snap/google-cloud-cli, so add that to the list of possible locations. --- plugins/gcloud/gcloud.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/gcloud/gcloud.plugin.zsh b/plugins/gcloud/gcloud.plugin.zsh index 9be9d68aa..30f1dba8f 100644 --- a/plugins/gcloud/gcloud.plugin.zsh +++ b/plugins/gcloud/gcloud.plugin.zsh @@ -10,6 +10,7 @@ if [[ -z "${CLOUDSDK_HOME}" ]]; then "/opt/homebrew/Caskroom/google-cloud-sdk/latest/google-cloud-sdk" "/usr/share/google-cloud-sdk" "/snap/google-cloud-sdk/current" + "/snap/google-cloud-cli/current" "/usr/lib/google-cloud-sdk" "/usr/lib64/google-cloud-sdk" "/opt/google-cloud-sdk" From aace3a6144a859d877927746a865de820e5af838 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Fri, 17 Feb 2023 16:42:59 +0100 Subject: [PATCH 195/253] chore: add `.idea` directory to `.gitignore` --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 71ae444e5..10bd4bebc 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ log/ .DS_Store # editor configs -.vscode \ No newline at end of file +.vscode +.idea From cc73a929f637899407d7a17648f89c63b71cc1ff Mon Sep 17 00:00:00 2001 From: guenthgr Date: Fri, 17 Feb 2023 17:29:10 +0100 Subject: [PATCH 196/253] feat(git): add `gpod` alias Closes #11501 --- plugins/git/README.md | 1 + plugins/git/git.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/git/README.md b/plugins/git/README.md index 1c3f8acf0..9972a6d8d 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -124,6 +124,7 @@ plugins=(... git) | gpf | git push --force-with-lease (git version < 2.30) | | gpf! | git push --force | | gpoat | git push origin --all && git push origin --tags | +| gpod | git push origin --delete | | gpr | git pull --rebase | | gpu | git push upstream | | gpv | git push --verbose | diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 70e6b4439..b016d80db 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -242,6 +242,7 @@ is-at-least 2.30 "$git_version" \ || alias gpf='git push --force-with-lease' alias gpf!='git push --force' alias gpoat='git push origin --all && git push origin --tags' +alias gpod='git push origin --delete' alias gpr='git pull --rebase' alias gpu='git push upstream' alias gpv='git push --verbose' From 8c808da23c9bafdc9d4b7b73934d6621d3a1f83e Mon Sep 17 00:00:00 2001 From: Francesco Ilario Date: Mon, 20 Feb 2023 15:35:58 +0100 Subject: [PATCH 197/253] feat(git): add aliases for gone branches (#9250) Closes #8457 Closes #9973 --- plugins/git/README.md | 3 +++ plugins/git/git.plugin.zsh | 3 +++ 2 files changed, 6 insertions(+) diff --git a/plugins/git/README.md b/plugins/git/README.md index 9972a6d8d..0895ce39c 100644 --- a/plugins/git/README.md +++ b/plugins/git/README.md @@ -25,6 +25,9 @@ plugins=(... git) | gbd | git branch --delete | | gbda | git branch --no-color --merged \| grep -vE "^([+*]\|\s*($(git_main_branch)\|$(git_develop_branch))\s*$)" \| xargs git branch --delete 2>/dev/null | | gbD | git branch --delete --force | +| gbg | git branch -vv | grep ": gone\]" | +| gbgd | local res=$(git branch -vv | grep ": gone\]" | awk '{print $1}') && [[ $res ]] && echo $res | xargs git branch -d | +| gbgD | local res=$(git branch -vv | grep ": gone\]" | awk '{print $1}') && [[ $res ]] && echo $res | xargs git branch -D | | gbl | git blame -b -w | | gbnm | git branch --no-merged | | gbr | git branch --remote | diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index b016d80db..ed17436e8 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -73,6 +73,9 @@ alias gba='git branch --all' alias gbd='git branch --delete' alias gbda='git branch --no-color --merged | command grep -vE "^([+*]|\s*($(git_main_branch)|$(git_develop_branch))\s*$)" | command xargs git branch --delete 2>/dev/null' alias gbD='git branch --delete --force' +alias gbg='git branch -vv | grep ": gone\]"' +alias gbgd='local res=$(gbg | awk '"'"'{print $1}'"'"') && [[ $res ]] && echo $res | xargs git branch -d' +alias gbgD='local res=$(gbg | awk '"'"'{print $1}'"'"') && [[ $res ]] && echo $res | xargs git branch -D' alias gbl='git blame -b -w' alias gbnm='git branch --no-merged' alias gbr='git branch --remote' From c50bac7b42e7d24dd9ef314fa9bf17859e4218ed Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 21 Feb 2023 11:19:56 +0100 Subject: [PATCH 198/253] fix(terraform): go back to zsh custom completion Revert fcbfdf42de702d55174fe2b19142ba232289671e --- plugins/terraform/_terraform | 411 +++++++++++++++++++++++++ plugins/terraform/terraform.plugin.zsh | 5 - 2 files changed, 411 insertions(+), 5 deletions(-) create mode 100644 plugins/terraform/_terraform diff --git a/plugins/terraform/_terraform b/plugins/terraform/_terraform new file mode 100644 index 000000000..625834563 --- /dev/null +++ b/plugins/terraform/_terraform @@ -0,0 +1,411 @@ +#compdef terraform + +local -a _terraform_cmds opt_args +_terraform_cmds=( + 'apply:Builds or changes infrastructure' + 'console:Interactive console for Terraform interpolations' + 'destroy:Destroy Terraform-managed infrastructure' + 'fmt:Rewrites config files to canonical format' + 'force-unlock:Manually unlock the terraform state' + 'get:Download and install modules for the configuration' + 'graph:Create a visual graph of Terraform resources' + 'import:Import existing infrastructure into Terraform' + 'init:Initialize a Terraform working directory' + 'login:Obtain and save credentials for a remote host' + 'logout:Remove locally-stored credentials for a remote host' + 'output:Read an output from a state file' + 'plan:Generate and show an execution plan' + 'providers:Prints a tree of the providers used in the configuration' + 'refresh:Update local state file against real resources' + 'show:Inspect Terraform state or plan' + 'state:Advanced state management' + 'taint:Manually mark a resource for recreation' + 'untaint:Manually unmark a resource as tainted' + 'validate:Validates the Terraform files' + 'version:Prints the Terraform version' + 'workspace:Workspace management' + '0.12upgrade:Rewrites pre-0.12 module source code for v0.12' + '0.13upgrade:Rewrites pre-0.13 module source code for v0.13' +) + +__012upgrade() { + _arguments \ + '-yes[Skip the initial introduction messages and interactive confirmation. This can be used to run this command in batch from a script.]' \ + '-force[ Override the heuristic that attempts to detect if a configuration is already written for v0.12 or later. Some of the transformations made by this command are not idempotent, so re-running against the same module may change the meanings expressions in the module.]' +} + +__013upgrade() { + _arguments \ + '-yes[Skip the initial introduction messages and interactive confirmation. This can be used to run this command in batch from a script.]' +} + +__apply() { + _arguments \ + '-auto-approve[Skip interactive approval of plan before applying.]' \ + '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \ + '-compact-warnings[If Terraform produces any warnings that are not accompanied by errors, show them in a more compact form that includes only the summary messages.]' \ + '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-input=[(true) Ask for input for variables if not directly set.]' \ + '-no-color[If specified, output will be colorless.]' \ + '-parallelism=[(10) Limit the number of parallel resource operations.]' \ + '-refresh=[(true) Update state prior to checking for differences. This has no effect if a plan file is given to apply.]' \ + '-state=[(terraform.tfstate) Path to read and save state (unless state-out is specified).]:statefile:_files -g "*.tfstate"' \ + '-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]:statefile:_files -g "*.tfstate"' \ + '*-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \ + '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ + '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' +} + +__console() { + _arguments \ + '-state=[(terraform.tfstate) Path to read state.]' \ + '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ + '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' +} + +__destroy() { + _arguments \ + '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \ + '-auto-approve[Skip interactive approval before destroying.]' \ + '-force[Deprecated: same as auto-approve.]' \ + '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-no-color[If specified, output will contain no color.]' \ + '-parallelism=[(10) Limit the number of concurrent operations.]' \ + '-refresh=[(true) Update state prior to checking for differences. This has no effect if a plan file is given to apply.]' \ + '-state=[(terraform.tfstate) Path to read and save state (unless state-out is specified).]:statefile:_files -g "*.tfstate"' \ + '-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]:statefile:_files -g "*.tfstate"' \ + '*-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \ + '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ + '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' +} + +__fmt() { + _arguments \ + '-list=[(true) List files whose formatting differs (always false if using STDIN)]' \ + '-write=[(true) Write result to source file instead of STDOUT (always false if using STDIN or -check)]' \ + '-diff=[(false) Display diffs of formatting changes]' \ + '-check=[(false) Check if the input is formatted. Exit status will be 0 if all input is properly formatted and non-zero otherwise.]' \ + '-recursive=[(false) Also process files in subdirectories. By default, only the given directory (or current directory) is processed.]' +} + +__force_unlock() { + _arguments \ + "-force[Don't ask for input for unlock confirmation.]" +} + +__get() { + _arguments \ + '-update=[(false) If true, modules already downloaded will be checked for updates and updated if necessary.]' \ + '-no-color[Disable text coloring in the output.]' +} + +__graph() { + _arguments \ + '-draw-cycles[Highlight any cycles in the graph with colored edges. This helps when diagnosing cycle errors.]' \ + '-type=[(plan) Type of graph to output. Can be: plan, plan-destroy, apply, validate, input, refresh.]' +} + +__import() { + _arguments \ + '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \ + '-config=[(path) Path to a directory of Terraform configuration files to use to configure the provider. Defaults to pwd. If no config files are present, they must be provided via the input prompts or env vars.]' \ + '-allow-missing-config[Allow import when no resource configuration block exists.]' \ + '-input=[(true) Ask for input for variables if not directly set.]' \ + '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-no-color[If specified, output will contain no color.]' \ + '-state=[(PATH) Path to the source state file. Defaults to the configured backend, or "terraform.tfstate"]:statefile:_files -g "*.tfstate"' \ + '-state-out=[(PATH) Path to the destination state file to write to. If this is not specified, the source state file will be used. This can be a new or existing path.]:statefile:_files -g "*.tfstate"' \ + '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times. This is only useful with the "-config" flag.]' \ + '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' +} + +__init() { + _arguments \ + '-backend=[(true) Configure the backend for this configuration.]' \ + '-backend-config=[This can be either a path to an HCL file with key/value assignments (same format as terraform.tfvars) or a 'key=value' format. This is merged with what is in the configuration file. This can be specified multiple times. The backend type must be in the configuration itself.]' \ + '-force-copy[Suppress prompts about copying state data. This is equivalent to providing a "yes" to all confirmation prompts.]' \ + '-from-module=[(SOURCE) Copy the contents of the given module into the target directory before initialization.]' \ + '-get=[(true) Download any modules for this configuration.]' \ + '-get-plugins=[(true) Download any missing plugins for this configuration.]' \ + '-input=[(true) Ask for input if necessary. If false, will error if input was required.]' \ + '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-no-color[If specified, output will contain no color.]' \ + '-plugin-dir[Directory containing plugin binaries. This overrides all default search paths for plugins, and prevents the automatic installation of plugins. This flag can be used multiple times.]:plugin_dir:_files -/' \ + '-reconfigure[Reconfigure the backend, ignoring any saved configuration.]' \ + '-upgrade=[(false) If installing modules (-get) or plugins (-get-plugins), ignore previously-downloaded objects and install the latest version allowed within configured constraints.]' \ + '-verify-plugins=[(true) Verify the authenticity and integrity of automatically downloaded plugins.]' +} + +__login() { + _arguments \ + +} + +__logout() { + _arguments \ + +} + +__output() { + _arguments \ + '-state=[(path) Path to the state file to read. Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \ + '-no-color[If specified, output will contain no color.]' \ + '-json[If specified, machine readable output will be printed in JSON format]' +} + +__plan() { + _arguments \ + '-compact-warnings[If Terraform produces any warnings that are not accompanied by errors, show them in a more compact form that includes only the summary messages.]' \ + '-destroy[If set, a plan will be generated to destroy all resources managed by the given configuration and state.]' \ + '-detailed-exitcode[() Return detailed exit codes when the command exits. This will change the meaning of exit codes to: 0 - Succeeded, diff is empty (no changes); 1 - Errored, 2 - Succeeded; there is a diff]' \ + '-input=[(true) Ask for input for variables if not directly set.]' \ + '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-no-color[() If specified, output will contain no color.]' \ + '-out=[(path) Write a plan file to the given path. This can be used as input to the "apply" command.]' \ + '-parallelism=[(10) Limit the number of concurrent operations.]' \ + '-refresh=[(true) Update state prior to checking for differences.]' \ + '-state=[(statefile) Path to a Terraform state file to use to look up Terraform-managed resources. By default it will use the state "terraform.tfstate" if it exists.]:statefile:_files -g "*.tfstate"' \ + '*-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \ + '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ + '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' +} + +__providers() { + local -a __providers_cmds + __providers_cmds=( + 'mirror:Mirrors the provider plugins needed for the current configuration' + 'schema:Prints the schemas of the providers used in the configuration' + ) + _describe -t providers "providers commands" __providers_cmds + +} + +__providers_mirror() { + _arguments \ + '-platform=[(os_arch) Choose which target platform to build a mirror for.]' \ + "*:target_dir:_files -/" +} + +__providers_schema() { + _arguments \ + '-json[]' \ + '::' +} + +__refresh() { + _arguments \ + '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]::backupfile:_files -g "*.backup"' \ + '-compact-warnings[If Terraform produces any warnings that are not accompanied by errors, show them in a more compact form that includes only the summary messages.]' \ + '-input=[(true) Ask for input for variables if not directly set.]' \ + '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-no-color[If specified, output will not contain any color.]' \ + '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \ + '-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]:statefile:_files -g "*.tfstate"' \ + '*-target=[(resource) A Resource Address to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \ + '*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \ + '*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"' +} + +__show() { + _arguments \ + '-json[If specified, output the Terraform plan or state in a machine-readable form.]' \ + '-no-color[If specified, output will not contain any color.]' +} + +__state() { + local -a __state_cmds + __state_cmds=( + 'list:List resources in the state' + 'mv:Move an item in the state' + 'pull:Pull current state and output to stdout' + 'push:Update remote state from a local state file' + 'replace-provider:Replace provider for resources in the Terraform state' + 'rm:Remove instances from the state' + 'show:Show a resource in the state' + ) + _describe -t state "state commands" __state_cmds +} + +__state_list() { + _arguments \ + '-state=[(statefile) Path to a Terraform state file to use to look up Terraform-managed resources. By default, Terraform will consult the state of the currently-selected workspace.]' \ + '-id=[(id) Filters the results to include only instances whose resource types have an attribute named id whose value equals the given id string.]' \ + "*:address:__statelist" +} + +__state_mv() { + _arguments \ + "-dry-run[If set, prints out what would've been moved but doesn't actually move anything.]" \ + '-backup=[(PATH) Path where Terraform should write the backup for the original state. This can"t be disabled. If not set, Terraform will write it to the same path as the statefile with a ".backup" extension.]:backupfile:_files -g "*.backup"' \ + '-backup-out=[(PATH) Path where Terraform should write the backup for the destination state. This can"t be disabled. If not set, Terraform will write it to the same path as the destination state file with a backup extension. This only needs to be specified if -state-out is set to a different path than -state.]:backupfile:_files -g "*.backup"' \ + "-lock=[(true) Lock the state files when locking is supported.]:lock:(true false)" \ + "-lock-timeout=[(0s) Duration to retry a state lock.]" \ + '-state=[(path) Path to the source state file. Defaults to the configured backend, or "terraform.tfstate"]:statefile:_files -g "*.tfstate"' \ + '-state-out=[(path) Path to the destination state file to write to. If this isn"t specified, the source state file will be used. This can be a new or existing path.]:statefile:_files -g "*.tfstate"' \ + "::" \ + ":source:__statelist" \ + ":destination: " +} + +__state_push() { + _arguments \ + "-force[Write the state even if lineages don't match or the remote serial is higher.]" \ + '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ + "-lock-timeout=[(0s) Duration to retry a state lock.]" \ + "::" \ + ":destination:_files" +} + +__state_replace_provider() { + _arguments \ + '-auto-approve[Skip interactive approval.]' \ + '-backup=[(PATH) Path where Terraform should write the backup for the state file. This can"t be disabled. If not set, Terraform will write it to the same path as the state file with a ".backup" extension.]:backupfile:_files -g "*.backup"' \ + "-lock=[(true) Lock the state files when locking is supported.]:lock:(true false)" \ + "-lock-timeout=[(0s) Duration to retry a state lock.]" \ + '-state=[(PATH) Path to the source state file. Defaults to the configured backend, or "terraform.tfstate"]:statefile:_files -g "*.tfstate"' \ + ":from_provider_fqn:" \ + ":to_provider_fqn:" +} + +__state_rm() { + _arguments \ + "-dry-run[If set, prints out what would've been removed but doesn't actually remove anything.]" \ + '-backup=[(PATH) Path where Terraform should write the backup for the original state.]::backupfile:_files -g "*.backup"' \ + "-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)" \ + "-lock-timeout=[(0s) Duration to retry a state lock.]" \ + '-state=[(PATH) Path to the state file to update. Defaults to the current workspace state.]:statefile:_files -g "*.tfstate"' \ + "*:address:__statelist" +} + + +__state_show() { + _arguments \ + '-state=[(statefile) Path to a Terraform state file to use to look up Terraform-managed resources. By default it will use the state "terraform.tfstate" if it exists.]:statefile:_files -g "*.tfstate"' \ + "*:address:__statelist" +} + +__statelist() { + compadd $(terraform state list $opt_args[-state]) +} + +__taint() { + _arguments \ + '-allow-missing[If specified, the command will succeed (exit code 0) even if the resource is missing.]' \ + '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \ + '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-module=[(path) The module path where the resource lives. By default this will be root. Child modules can be specified by names. Ex. "consul" or "consul.vpc" (nested modules).]' \ + '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \ + '-state-out=[(path) Path to write updated state file. By default, the "-state" path will be used.]:statefile:_files -g "*.tfstate"' \ + "*:address:__statelist" +} + +__untaint() { + _arguments \ + '-allow-missing[If specified, the command will succeed (exit code 0) even if the resource is missing.]' \ + '-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \ + '-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \ + '-lock-timeout=[(0s) Duration to retry a state lock.]' \ + '-module=[(path) The module path where the resource lives. By default this will be root. Child modules can be specified by names. Ex. "consul" or "consul.vpc" (nested modules).]' \ + '-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \ + '-state-out=[(path) Path to write updated state file. By default, the "-state" path will be used.]:statefile:_files -g "*.tfstate"' +} + +__validate() { + _arguments \ + '-no-color[If specified, output will not contain any color.]' \ + '-json[Produce output in a machine-readable JSON format, suitable for use in text editor integrations and other automated systems.]' \ + ':dir:_files -/' +} + +__version() { + _arguments \ + '-json[Output the version information as a JSON object.]' +} + +__workspace() { + local -a __workspace_cmds + __workspace_cmds=( + 'delete:Delete a workspace' + 'list:List Workspaces' + 'new:Create a new workspace' + 'select:Select a workspace' + 'show:Show the name of the current workspace' + ) + _describe -t workspace "workspace commands" __workspace_cmds +} + +_arguments '*:: :->command' + +if (( CURRENT == 1 )); then + _describe -t commands "terraform command" _terraform_cmds + return +fi + +local -a _command_args +case "$words[1]" in + 0.12upgrade) + __012upgrade ;; + 0.13upgrade) + __013upgrade ;; + apply) + __apply ;; + console) + __console;; + destroy) + __destroy ;; + fmt) + __fmt;; + force-unlock) + __force_unlock;; + get) + __get ;; + graph) + __graph ;; + import) + __import;; + init) + __init ;; + login) + __login ;; + logout) + __logout ;; + output) + __output ;; + plan) + __plan ;; + providers) + test $CURRENT -lt 3 && __providers + [[ $words[2] = "mirror" ]] && __providers_mirror + [[ $words[2] = "schema" ]] && __providers_schema + ;; + refresh) + __refresh ;; + show) + __show ;; + state) + test $CURRENT -lt 3 && __state + [[ $words[2] = "list" ]] && __state_list + [[ $words[2] = "mv" ]] && __state_mv + [[ $words[2] = "push" ]] && __state_push + [[ $words[2] = "replace-provider" ]] && __state_replace_provider + [[ $words[2] = "rm" ]] && __state_rm + [[ $words[2] = "show" ]] && __state_show + ;; + taint) + __taint ;; + untaint) + __untaint ;; + validate) + __validate ;; + version) + __version ;; + workspace) + test $CURRENT -lt 3 && __workspace ;; +esac diff --git a/plugins/terraform/terraform.plugin.zsh b/plugins/terraform/terraform.plugin.zsh index eaa1e2e81..d9e39e6ac 100644 --- a/plugins/terraform/terraform.plugin.zsh +++ b/plugins/terraform/terraform.plugin.zsh @@ -16,8 +16,3 @@ alias tfi='terraform init' alias tfo='terraform output' alias tfp='terraform plan' alias tfv='terraform validate' - -if (( $+commands[terraform] )); then - autoload -U +X bashcompinit && bashcompinit - complete -o nospace -C terraform terraform -fi From 9f9d3b7d247b3c3e21542abaaf107e3d15aac1a5 Mon Sep 17 00:00:00 2001 From: rohitbahekar <57762527+rohitbahekar@users.noreply.github.com> Date: Tue, 21 Feb 2023 15:53:04 +0530 Subject: [PATCH 199/253] feat(terraform): add `tfc` alias (#10815) --- plugins/terraform/README.md | 1 + plugins/terraform/terraform.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/terraform/README.md b/plugins/terraform/README.md index 59c6e7f2a..c19f2ad1c 100644 --- a/plugins/terraform/README.md +++ b/plugins/terraform/README.md @@ -19,6 +19,7 @@ plugins=(... terraform) | ----- | -------------------- | | `tf` | `terraform` | | `tfa` | `terraform apply` | +| `tfc` | `terraform console` | | `tfd` | `terraform destroy` | | `tff` | `terraform fmt` | | `tfi` | `terraform init` | diff --git a/plugins/terraform/terraform.plugin.zsh b/plugins/terraform/terraform.plugin.zsh index d9e39e6ac..7006f204b 100644 --- a/plugins/terraform/terraform.plugin.zsh +++ b/plugins/terraform/terraform.plugin.zsh @@ -10,6 +10,7 @@ function tf_prompt_info() { alias tf='terraform' alias tfa='terraform apply' +alias tfc='terraform console' alias tfd='terraform destroy' alias tff='terraform fmt' alias tfi='terraform init' From a4f08ad238dba23a68df2a89b8fd47b8a9d26b0e Mon Sep 17 00:00:00 2001 From: Filippo Bonazzi Date: Wed, 22 Feb 2023 10:16:28 +0100 Subject: [PATCH 200/253] feat(extract): support `obscpio` format (#11511) Co-authored-by: Carlo Sala --- plugins/extract/README.md | 15 ++++++++------- plugins/extract/_extract | 2 +- plugins/extract/extract.plugin.zsh | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/plugins/extract/README.md b/plugins/extract/README.md index f67b53618..ac4a8e197 100644 --- a/plugins/extract/README.md +++ b/plugins/extract/README.md @@ -1,10 +1,10 @@ # extract plugin -This plugin defines a function called `extract` that extracts the archive file -you pass it, and it supports a wide variety of archive filetypes. +This plugin defines a function called `extract` that extracts the archive file you pass it, and it supports a +wide variety of archive filetypes. -This way you don't have to know what specific command extracts a file, you just -do `extract ` and the function takes care of the rest. +This way you don't have to know what specific command extracts a file, you just do `extract ` and +the function takes care of the rest. To use it, add `extract` to the plugins array in your zshrc file: @@ -15,7 +15,7 @@ plugins=(... extract) ## Supported file extensions | Extension | Description | -|:------------------|:-------------------------------------| +| :---------------- | :----------------------------------- | | `7z` | 7zip file | | `Z` | Z archive (LZW) | | `apk` | Android app file | @@ -32,6 +32,7 @@ plugins=(... extract) | `lrz` | LRZ archive | | `lz4` | LZ4 archive | | `lzma` | LZMA archive | +| `obscpio` | cpio archive used on OBS | | `rar` | WinRAR archive | | `rpm` | RPM package | | `sublime-package` | Sublime Text package | @@ -57,5 +58,5 @@ plugins=(... extract) | `zst` | Zstandard file (zstd) | | `zpaq` | Zpaq file | -See [list of archive formats](https://en.wikipedia.org/wiki/List_of_archive_formats) for -more information regarding archive formats. +See [list of archive formats](https://en.wikipedia.org/wiki/List_of_archive_formats) for more information +regarding archive formats. diff --git a/plugins/extract/_extract b/plugins/extract/_extract index 64678fede..56b17058f 100644 --- a/plugins/extract/_extract +++ b/plugins/extract/_extract @@ -3,5 +3,5 @@ _arguments \ '(-r --remove)'{-r,--remove}'[Remove archive.]' \ - "*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|cab|cpio|deb|ear|gz|ipa|ipsw|jar|lrz|lz4|lzma|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.lrz|tar.lz|tar.lz4|tar.xz|tar.zma|tar.zst|tbz|tbz2|tgz|tlz|txz|tzst|war|whl|xpi|xz|zip|zst|zpaq)(-.)'" \ + "*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|cab|cpio|deb|ear|gz|ipa|ipsw|jar|lrz|lz4|lzma|obscpio|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.lrz|tar.lz|tar.lz4|tar.xz|tar.zma|tar.zst|tbz|tbz2|tgz|tlz|txz|tzst|war|whl|xpi|xz|zip|zst|zpaq)(-.)'" \ && return 0 diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index 4c84ef883..7b7a2fa4f 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -72,7 +72,7 @@ EOF builtin cd -q ..; command rm *.tar.* debian-binary ;; (*.zst) unzstd "$file" ;; (*.cab) cabextract -d "$extract_dir" "$file" ;; - (*.cpio) cpio -idmvF "$file" ;; + (*.cpio|*.obscpio) cpio -idmvF "$file" ;; (*.zpaq) zpaq x "$file" ;; (*) echo "extract: '$file' cannot be extracted" >&2 From 221eb9b90ab4d03b6f00e62f31e979459e08e7ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E4=B8=8D=E6=B8=B8?= <71683364+mefengl@users.noreply.github.com> Date: Tue, 21 Feb 2023 03:07:45 +0800 Subject: [PATCH 201/253] feat(marktext): add plugin Closes #11507 --- plugins/marktext/README.md | 17 +++++++++++++++++ plugins/marktext/marktext.plugin.zsh | 7 +++++++ 2 files changed, 24 insertions(+) create mode 100644 plugins/marktext/README.md create mode 100644 plugins/marktext/marktext.plugin.zsh diff --git a/plugins/marktext/README.md b/plugins/marktext/README.md new file mode 100644 index 000000000..71d287451 --- /dev/null +++ b/plugins/marktext/README.md @@ -0,0 +1,17 @@ +## marktext + +Plugin for MarkText, a previewer for Markdown files on Mac OS X + +### Requirements + + * [MarkText](https://github.com/marktext/marktext) + +### Usage + + * If `marktext` is called without an argument, open MarkText + + * If `marktext` is passed a file, open it in MarkText + +### Credits + + * just copied from plugins/marked2, all credits to marked2 plugin author diff --git a/plugins/marktext/marktext.plugin.zsh b/plugins/marktext/marktext.plugin.zsh new file mode 100644 index 000000000..1da85bcca --- /dev/null +++ b/plugins/marktext/marktext.plugin.zsh @@ -0,0 +1,7 @@ +# +# If marktext is called without an argument, open MarkText +# If marktext is passed a file, open it in MarkText +# +function marktext() { + open -a "MarkText.app" "$1" +} From a24e91908adb25dfc222e6a6f6431e2fbc890545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E4=B8=8D=E6=B8=B8?= <71683364+mefengl@users.noreply.github.com> Date: Wed, 22 Feb 2023 18:26:30 +0800 Subject: [PATCH 202/253] feat(marked): remove unnecessary code --- plugins/marked2/marked2.plugin.zsh | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/plugins/marked2/marked2.plugin.zsh b/plugins/marked2/marked2.plugin.zsh index 56863ade5..45f4b65c1 100644 --- a/plugins/marked2/marked2.plugin.zsh +++ b/plugins/marked2/marked2.plugin.zsh @@ -3,10 +3,5 @@ # If marked is passed a file, open it in Marked # function marked() { - if [ "$1" ] - then - open -a "marked 2.app" "$1" - else - open -a "marked 2.app" - fi + open -a "marked 2.app" "$1" } From aca048814b2462501ab82938ff2473661182fffb Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Wed, 22 Feb 2023 15:35:12 +0100 Subject: [PATCH 203/253] fix(theme-and-appearance): avoid infinite recursion --- lib/theme-and-appearance.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh index c83f58c7b..1b64b51d4 100644 --- a/lib/theme-and-appearance.zsh +++ b/lib/theme-and-appearance.zsh @@ -47,7 +47,7 @@ fi # enable diff color if possible. if command diff --color /dev/null /dev/null &>/dev/null; then function color-diff { - diff --color $@ + command diff --color $@ } alias diff="color-diff" compdef _diff color-diff # compdef is already loaded by this point From b54ef89fab89eaa62ece588f96d8cbd7c222d854 Mon Sep 17 00:00:00 2001 From: WaferJay <17383312+WaferJay@users.noreply.github.com> Date: Fri, 24 Feb 2023 05:32:40 +0800 Subject: [PATCH 204/253] fix(af-magic): fix logic for separator with virtualenv (#11518) --- themes/af-magic.zsh-theme | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/themes/af-magic.zsh-theme b/themes/af-magic.zsh-theme index 1b629e43a..70549d01f 100644 --- a/themes/af-magic.zsh-theme +++ b/themes/af-magic.zsh-theme @@ -6,7 +6,8 @@ # dashed separator size function afmagic_dashes { # check either virtualenv or condaenv variables - local python_env="${VIRTUAL_ENV:-$CONDA_DEFAULT_ENV}" + local python_env_dir="${VIRTUAL_ENV:-$CONDA_DEFAULT_ENV}" + local python_env="${python_env_dir##*/}" # if there is a python virtual environment and it is displayed in # the prompt, account for it when returning the number of dashes From 8a008e1f51d451db21232edd6f1709e6c5ea334e Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Thu, 23 Feb 2023 23:00:31 +0100 Subject: [PATCH 205/253] fix(azure): load completion properly for brew (#11499) Closes #11497 --- plugins/azure/azure.plugin.zsh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/plugins/azure/azure.plugin.zsh b/plugins/azure/azure.plugin.zsh index 7bb173a5c..51b54dbc1 100644 --- a/plugins/azure/azure.plugin.zsh +++ b/plugins/azure/azure.plugin.zsh @@ -32,12 +32,14 @@ function _az-homebrew-installed() { (( $+commands[brew] )) || return 1 # speculatively check default brew prefix - if [ -h /usr/local/opt/az ]; then - _brew_prefix=/usr/local/opt/az + if [[ -d /usr/local ]]; then + _brew_prefix=/usr/local + elif [[ -d /opt/homebrew ]]; then + _brew_prefix=/opt/homebrew else # ok, it is not in the default prefix # this call to brew is expensive (about 400 ms), so at least let's make it only once - _brew_prefix=$(brew --prefix azure-cli) + _brew_prefix=$(brew --prefix) fi } @@ -49,12 +51,12 @@ _az_zsh_completer_path="$commands[az_zsh_completer.sh]" if [[ -z $_az_zsh_completer_path ]]; then # Homebrew if _az-homebrew-installed; then - _az_zsh_completer_path=$_brew_prefix/libexec/bin/az.completion.sh + _az_zsh_completer_path=$_brew_prefix/etc/bash_completion.d/az # Linux else _az_zsh_completer_path=/etc/bash_completion.d/azure-cli fi fi -[[ -r $_az_zsh_completer_path ]] && source $_az_zsh_completer_path +[[ -r $_az_zsh_completer_path ]] && autoload -U +X bashcompinit && bashcompinit && source $_az_zsh_completer_path unset _az_zsh_completer_path _brew_prefix From bd9c216fe04a1542913f524cad1719797ce39ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Reegn?= Date: Fri, 24 Feb 2023 17:27:15 +0100 Subject: [PATCH 206/253] feat(iterm2): add shell integration script (#11509) --- plugins/iterm2/README.md | 12 ++ plugins/iterm2/iterm2.plugin.zsh | 11 ++ plugins/iterm2/iterm2_shell_integration.zsh | 178 ++++++++++++++++++++ plugins/iterm2/update | 4 + 4 files changed, 205 insertions(+) create mode 100644 plugins/iterm2/iterm2_shell_integration.zsh create mode 100755 plugins/iterm2/update diff --git a/plugins/iterm2/README.md b/plugins/iterm2/README.md index 50cdebf5e..3d11622df 100644 --- a/plugins/iterm2/README.md +++ b/plugins/iterm2/README.md @@ -2,11 +2,20 @@ This plugin adds a few functions that are useful when using [iTerm2](https://www.iterm2.com/). + To use it, add _iterm2_ to the plugins array of your zshrc file: ``` plugins=(... iterm2) ``` +Optionally, the plugin also applies the [Shell Integration Script for iTerm2](https://iterm2.com/documentation-shell-integration.html). +You can enable the integration with zstyle. It's important to add this line +before the line sourcing oh-my-zsh: + +``` +zstyle :omz:plugins:iterm2 shell-integration yes +``` + ## Plugin commands * `_iterm2_command ` @@ -24,6 +33,9 @@ plugins=(... iterm2) * `iterm2_tab_color_reset` resets the color of iTerm2's current tab back to default. + +For shell integration features see the [official documentation](https://iterm2.com/documentation-shell-integration.html). + ## Contributors - [Aviv Rosenberg](https://github.com/avivrosenberg) diff --git a/plugins/iterm2/iterm2.plugin.zsh b/plugins/iterm2/iterm2.plugin.zsh index 9d8e40bf6..d00232a30 100644 --- a/plugins/iterm2/iterm2.plugin.zsh +++ b/plugins/iterm2/iterm2.plugin.zsh @@ -7,6 +7,17 @@ # This plugin is only relevant if the terminal is iTerm2 on OSX. if [[ "$OSTYPE" == darwin* ]] && [[ -n "$ITERM_SESSION_ID" ]] ; then + # maybe make it the default in the future and allow opting out? + if zstyle -t ':omz:plugins:iterm2' shell-integration; then + # Handle $0 according to the standard: + # https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html + 0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" + 0="${${(M)0:#/*}:-$PWD/$0}" + + # See official docs: https://iterm2.com/documentation-shell-integration.html + source "${0:A:h}/iterm2_shell_integration.zsh" + fi + ### # Executes an arbitrary iTerm2 command via an escape code sequence. # See https://iterm2.com/documentation-escape-codes.html for all supported commands. diff --git a/plugins/iterm2/iterm2_shell_integration.zsh b/plugins/iterm2/iterm2_shell_integration.zsh new file mode 100644 index 000000000..7871ddded --- /dev/null +++ b/plugins/iterm2/iterm2_shell_integration.zsh @@ -0,0 +1,178 @@ +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +if [[ -o interactive ]]; then + if [ "${ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX-}""$TERM" != "tmux-256color" -a "${ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX-}""$TERM" != "screen" -a "${ITERM_SHELL_INTEGRATION_INSTALLED-}" = "" -a "$TERM" != linux -a "$TERM" != dumb ]; then + ITERM_SHELL_INTEGRATION_INSTALLED=Yes + ITERM2_SHOULD_DECORATE_PROMPT="1" + # Indicates start of command output. Runs just before command executes. + iterm2_before_cmd_executes() { + if [ "$TERM_PROGRAM" = "iTerm.app" ]; then + printf "\033]133;C;\r\007" + else + printf "\033]133;C;\007" + fi + } + + iterm2_set_user_var() { + printf "\033]1337;SetUserVar=%s=%s\007" "$1" $(printf "%s" "$2" | base64 | tr -d '\n') + } + + # Users can write their own version of this method. It should call + # iterm2_set_user_var but not produce any other output. + # e.g., iterm2_set_user_var currentDirectory $PWD + # Accessible in iTerm2 (in a badge now, elsewhere in the future) as + # \(user.currentDirectory). + whence -v iterm2_print_user_vars > /dev/null 2>&1 + if [ $? -ne 0 ]; then + iterm2_print_user_vars() { + true + } + fi + + iterm2_print_state_data() { + local _iterm2_hostname="${iterm2_hostname-}" + if [ -z "${iterm2_hostname:-}" ]; then + _iterm2_hostname=$(hostname -f 2>/dev/null) + fi + printf "\033]1337;RemoteHost=%s@%s\007" "$USER" "${_iterm2_hostname-}" + printf "\033]1337;CurrentDir=%s\007" "$PWD" + iterm2_print_user_vars + } + + # Report return code of command; runs after command finishes but before prompt + iterm2_after_cmd_executes() { + printf "\033]133;D;%s\007" "$STATUS" + iterm2_print_state_data + } + + # Mark start of prompt + iterm2_prompt_mark() { + printf "\033]133;A\007" + } + + # Mark end of prompt + iterm2_prompt_end() { + printf "\033]133;B\007" + } + + # There are three possible paths in life. + # + # 1) A command is entered at the prompt and you press return. + # The following steps happen: + # * iterm2_preexec is invoked + # * PS1 is set to ITERM2_PRECMD_PS1 + # * ITERM2_SHOULD_DECORATE_PROMPT is set to 1 + # * The command executes (possibly reading or modifying PS1) + # * iterm2_precmd is invoked + # * ITERM2_PRECMD_PS1 is set to PS1 (as modified by command execution) + # * PS1 gets our escape sequences added to it + # * zsh displays your prompt + # * You start entering a command + # + # 2) You press ^C while entering a command at the prompt. + # The following steps happen: + # * (iterm2_preexec is NOT invoked) + # * iterm2_precmd is invoked + # * iterm2_before_cmd_executes is called since we detected that iterm2_preexec was not run + # * (ITERM2_PRECMD_PS1 and PS1 are not messed with, since PS1 already has our escape + # sequences and ITERM2_PRECMD_PS1 already has PS1's original value) + # * zsh displays your prompt + # * You start entering a command + # + # 3) A new shell is born. + # * PS1 has some initial value, either zsh's default or a value set before this script is sourced. + # * iterm2_precmd is invoked + # * ITERM2_SHOULD_DECORATE_PROMPT is initialized to 1 + # * ITERM2_PRECMD_PS1 is set to the initial value of PS1 + # * PS1 gets our escape sequences added to it + # * Your prompt is shown and you may begin entering a command. + # + # Invariants: + # * ITERM2_SHOULD_DECORATE_PROMPT is 1 during and just after command execution, and "" while the prompt is + # shown and until you enter a command and press return. + # * PS1 does not have our escape sequences during command execution + # * After the command executes but before a new one begins, PS1 has escape sequences and + # ITERM2_PRECMD_PS1 has PS1's original value. + iterm2_decorate_prompt() { + # This should be a raw PS1 without iTerm2's stuff. It could be changed during command + # execution. + ITERM2_PRECMD_PS1="$PS1" + ITERM2_SHOULD_DECORATE_PROMPT="" + + # Add our escape sequences just before the prompt is shown. + # Use ITERM2_SQUELCH_MARK for people who can't mdoify PS1 directly, like powerlevel9k users. + # This is gross but I had a heck of a time writing a correct if statetment for zsh 5.0.2. + local PREFIX="" + if [[ $PS1 == *"$(iterm2_prompt_mark)"* ]]; then + PREFIX="" + elif [[ "${ITERM2_SQUELCH_MARK-}" != "" ]]; then + PREFIX="" + else + PREFIX="%{$(iterm2_prompt_mark)%}" + fi + PS1="$PREFIX$PS1%{$(iterm2_prompt_end)%}" + ITERM2_DECORATED_PS1="$PS1" + } + + iterm2_precmd() { + local STATUS="$?" + if [ -z "${ITERM2_SHOULD_DECORATE_PROMPT-}" ]; then + # You pressed ^C while entering a command (iterm2_preexec did not run) + iterm2_before_cmd_executes + if [ "$PS1" != "${ITERM2_DECORATED_PS1-}" ]; then + # PS1 changed, perhaps in another precmd. See issue 9938. + ITERM2_SHOULD_DECORATE_PROMPT="1" + fi + fi + + iterm2_after_cmd_executes "$STATUS" + + if [ -n "$ITERM2_SHOULD_DECORATE_PROMPT" ]; then + iterm2_decorate_prompt + fi + } + + # This is not run if you press ^C while entering a command. + iterm2_preexec() { + # Set PS1 back to its raw value prior to executing the command. + PS1="$ITERM2_PRECMD_PS1" + ITERM2_SHOULD_DECORATE_PROMPT="1" + iterm2_before_cmd_executes + } + + # If hostname -f is slow on your system set iterm2_hostname prior to + # sourcing this script. We know it is fast on macOS so we don't cache + # it. That lets us handle the hostname changing like when you attach + # to a VPN. + if [ -z "${iterm2_hostname-}" ]; then + if [ "$(uname)" != "Darwin" ]; then + iterm2_hostname=`hostname -f 2>/dev/null` + # Some flavors of BSD (i.e. NetBSD and OpenBSD) don't have the -f option. + if [ $? -ne 0 ]; then + iterm2_hostname=`hostname` + fi + fi + fi + + [[ -z ${precmd_functions-} ]] && precmd_functions=() + precmd_functions=($precmd_functions iterm2_precmd) + + [[ -z ${preexec_functions-} ]] && preexec_functions=() + preexec_functions=($preexec_functions iterm2_preexec) + + iterm2_print_state_data + printf "\033]1337;ShellIntegrationVersion=14;shell=zsh\007" + fi +fi diff --git a/plugins/iterm2/update b/plugins/iterm2/update new file mode 100755 index 000000000..da8dae690 --- /dev/null +++ b/plugins/iterm2/update @@ -0,0 +1,4 @@ +#!/bin/sh + +curl -s -L https://iterm2.com/shell_integration/zsh \ + -o iterm2_shell_integration.zsh From 5cb943eea46d322542c5c2a9f54b201eddc2aa67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 24 Feb 2023 17:27:23 +0100 Subject: [PATCH 207/253] fix(lib): fix return code after expected non-zero exit code (#11524) Fixes #11524 --- lib/directories.zsh | 2 +- lib/vcs_info.zsh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/directories.zsh b/lib/directories.zsh index 091140626..9274b5f5f 100644 --- a/lib/directories.zsh +++ b/lib/directories.zsh @@ -8,7 +8,7 @@ setopt pushdminus # to your `zshrc` before loading `oh-my-zsh.sh` # to disable the following aliases and functions -zstyle -T ':omz:directories' aliases || return +zstyle -T ':omz:directories' aliases || return 0 alias -g ...='../..' alias -g ....='../../..' 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]//\%/%%}"' From 277f38212aef31a6baba2cf1a0a355af611be5e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 24 Feb 2023 20:55:31 +0100 Subject: [PATCH 208/253] refactor: reorganize setopts in lib folder --- lib/directories.zsh | 1 + lib/misc.zsh | 8 +++----- lib/theme-and-appearance.zsh | 2 -- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/directories.zsh b/lib/directories.zsh index 9274b5f5f..13b680c19 100644 --- a/lib/directories.zsh +++ b/lib/directories.zsh @@ -1,4 +1,5 @@ # Changing/making/removing directory +setopt auto_cd setopt auto_pushd setopt pushd_ignore_dups setopt pushdminus 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/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh index 1b64b51d4..208ab9ce5 100644 --- a/lib/theme-and-appearance.zsh +++ b/lib/theme-and-appearance.zsh @@ -53,8 +53,6 @@ if command diff --color /dev/null /dev/null &>/dev/null; then compdef _diff color-diff # compdef is already loaded by this point fi -setopt auto_cd -setopt multios setopt prompt_subst [[ -n "$WINDOW" ]] && SCREEN_NO="%B$WINDOW%b " || SCREEN_NO="" From cd647b6dc6779a1aafa2bcc3a81ec10b65c783ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sun, 26 Feb 2023 15:44:18 +0100 Subject: [PATCH 209/253] fix(gnu-utils): reset ls alias to use GNU-based --color argument (#11527) Fixes #11503 --- plugins/gnu-utils/gnu-utils.plugin.zsh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugins/gnu-utils/gnu-utils.plugin.zsh b/plugins/gnu-utils/gnu-utils.plugin.zsh index 9419127d8..6bd3e8463 100644 --- a/plugins/gnu-utils/gnu-utils.plugin.zsh +++ b/plugins/gnu-utils/gnu-utils.plugin.zsh @@ -61,3 +61,14 @@ __gnu_utils_preexec() { autoload -Uz add-zsh-hook add-zsh-hook preexec __gnu_utils_preexec + +# lib/theme-and-appearance.zsh sets the alias for ls not knowing that +# we'll be using GNU ls. We'll reset this to use GNU ls --color. +# See https://github.com/ohmyzsh/ohmyzsh/issues/11503 +# +# The ls alias might look like: +# - ls='ls -G' +# - ls='gls --color=tty' +if [[ -x "${commands[gls]}" && "${aliases[ls]}" = (*-G*|gls*) ]]; then + alias ls='ls --color=tty' +fi From 0ca8907f0e6185545c5e38f77ae2f09ca2a44e77 Mon Sep 17 00:00:00 2001 From: Jannik Date: Sun, 26 Feb 2023 20:37:03 +0100 Subject: [PATCH 210/253] fix(lib): fix case-insensitive completion for zsh 5.9 (#11526) --- lib/completion.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 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 From 16050ab80e63f8e53c07777b4c2ae16ad085e5ad Mon Sep 17 00:00:00 2001 From: Richard Mitchell Date: Sun, 26 Feb 2023 16:40:44 -0500 Subject: [PATCH 211/253] feat(macos): allow multiple man pages in `man-preview` (#11365) --- plugins/macos/README.md | 2 +- plugins/macos/macos.plugin.zsh | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/macos/README.md b/plugins/macos/README.md index 1bc4244a4..1cb9b395d 100644 --- a/plugins/macos/README.md +++ b/plugins/macos/README.md @@ -25,7 +25,7 @@ Original author: [Sorin Ionescu](https://github.com/sorin-ionescu) | `pxd` | Return the current Xcode project directory | | `cdx` | `cd` to the current Xcode project directory | | `quick-look` | Quick-Look a specified file | -| `man-preview` | Open a specified man page in Preview app | +| `man-preview` | Open man pages in Preview app | | `showfiles` | Show hidden files in Finder | | `hidefiles` | Hide the hidden files in Finder | | `itunes` | _DEPRECATED_. Use `music` from macOS Catalina on | diff --git a/plugins/macos/macos.plugin.zsh b/plugins/macos/macos.plugin.zsh index e4d759dcf..e27d412c8 100644 --- a/plugins/macos/macos.plugin.zsh +++ b/plugins/macos/macos.plugin.zsh @@ -224,9 +224,10 @@ function quick-look() { } function man-preview() { - local location - # Don't let Preview.app steal focus if the man page doesn't exist - location=$(man -w "$@") && mandoc -Tpdf $location | open -f -a Preview + local page + for page in "${(@f)"$(man -w $@)"}"; do + command mandoc -Tpdf $page | open -f -a Preview + done } compdef _man man-preview From 21bdb18b2d1fe8b547a42da7ac7b58fb28563a2c Mon Sep 17 00:00:00 2001 From: Carlos Eduardo Monti Date: Mon, 27 Feb 2023 20:22:39 +0100 Subject: [PATCH 212/253] feat(nodenv): add plugin for `nodenv` (#9880) Co-authored-by: Matthew Boston --- plugins/nodenv/README.md | 20 +++++++++++++++ plugins/nodenv/nodenv.plugin.zsh | 43 ++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 plugins/nodenv/README.md create mode 100644 plugins/nodenv/nodenv.plugin.zsh diff --git a/plugins/nodenv/README.md b/plugins/nodenv/README.md new file mode 100644 index 000000000..550597025 --- /dev/null +++ b/plugins/nodenv/README.md @@ -0,0 +1,20 @@ +# nodenv plugin + +The primary job of this plugin is to provide `nodenv_prompt_info` which can be added to your theme to include Node +version information into your prompt. + +To use it, add `nodenv` to the plugins array in your zshrc file: + +```zsh +plugins=(... nodenv) +``` + +## Functions + +* `nodenv_prompt_info`: displays the Node version in use by nodenv; or the global Node + version, if nodenv wasn't found. You can use this function in your prompt by adding + `$(nodenv_prompt_info)` to PROMPT or RPROMPT: + + ```zsh + RPROMPT='$(nodenv_prompt_info)' + ``` diff --git a/plugins/nodenv/nodenv.plugin.zsh b/plugins/nodenv/nodenv.plugin.zsh new file mode 100644 index 000000000..79a4ffbb5 --- /dev/null +++ b/plugins/nodenv/nodenv.plugin.zsh @@ -0,0 +1,43 @@ +# This plugin loads nodenv into the current shell and provides prompt info via +# the 'nodenv_prompt_info' function. + +FOUND_NODENV=${+commands[nodenv]} + +if [[ $FOUND_NODENV -ne 1 ]]; then + nodenvdirs=( + "$HOME/.nodenv" + "/usr/local/nodenv" + "/opt/nodenv" + "/usr/local/opt/nodenv" + ) + for dir in $nodenvdirs; do + if [[ -d "${dir}/bin" ]]; then + export PATH="$PATH:${dir}/bin" + FOUND_NODENV=1 + break + fi + done + + if [[ $FOUND_NODENV -ne 1 ]]; then + if (( $+commands[brew] )) && dir=$(brew --prefix nodenv 2>/dev/null); then + if [[ -d "${dir}/bin" ]]; then + export PATH="$PATH:${dir}/bin" + FOUND_NODENV=1 + fi + fi + fi +fi + +if [[ $FOUND_NODENV -eq 1 ]]; then + eval "$(nodenv init --no-rehash - zsh)" + function nodenv_prompt_info() { + nodenv version-name 2>/dev/null + } +else + # fallback to system node + function nodenv_prompt_info() { + echo "system: $(node -v 2>&1 | cut -c 2-)" + } +fi + +unset FOUND_NODENV nodenvdirs dir From f42c965da44be6940134b805edb54c5eca37d9ae Mon Sep 17 00:00:00 2001 From: ZYX Date: Mon, 27 Feb 2023 14:39:38 -0500 Subject: [PATCH 213/253] fix(aliases): clarify how to pass in keywords to `acs` (#11521) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Marc Cornellà --- plugins/aliases/README.md | 2 +- plugins/aliases/cheatsheet.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/aliases/README.md b/plugins/aliases/README.md index 4e77f67b3..6a2da3d74 100644 --- a/plugins/aliases/README.md +++ b/plugins/aliases/README.md @@ -19,7 +19,7 @@ Requirements: Python needs to be installed. - `acs -h/--help`: print help mesage -- `acs `: filter aliases by `` and highlight +- `acs `: filter and highlight aliases by `` - `acs -g /--group `: show only aliases for group ``. Multiple uses of the flag show all groups diff --git a/plugins/aliases/cheatsheet.py b/plugins/aliases/cheatsheet.py index 3362a6ab6..fb8c74aa4 100644 --- a/plugins/aliases/cheatsheet.py +++ b/plugins/aliases/cheatsheet.py @@ -51,18 +51,18 @@ def pretty_print(cheatsheet, wfilter, group_list=None, groups_only=False): continue aliases = cheatsheet.get(key) if not wfilter: - pretty_print_group(key, aliases, wfilter, groups_only) + pretty_print_group(key, aliases, only_groupname=groups_only) else: - pretty_print_group(key, [ alias for alias in aliases if alias[0].find(wfilter)>-1 or alias[1].find(wfilter)>-1], wfilter) + pretty_print_group(key, [ alias for alias in aliases if wfilter in alias[0] or wfilter in alias[1] ], wfilter) if __name__ == '__main__': - parser = argparse.ArgumentParser(description="Pretty print aliases.") - parser.add_argument('filter', nargs="*", help="search aliases matching string") + parser = argparse.ArgumentParser(description="Pretty print aliases.", prog="acs") + parser.add_argument('filter', nargs="*", metavar="", help="search aliases matching keywords") parser.add_argument('-g', '--group', dest="group_list", action='append', help="only print aliases in given groups") parser.add_argument('--groups', dest='groups_only', action='store_true', help="only print alias groups") args = parser.parse_args() lines = sys.stdin.readlines() group_list = args.group_list or None - wfilter = " ".join(args.filter) or None + wfilter = " ".join(args.filter[1:]) if args.filter else None pretty_print(cheatsheet(lines), wfilter, group_list, args.groups_only) From b602e0a066d8c98e8c02201ad16c764447fd8531 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 27 Feb 2023 20:46:42 +0100 Subject: [PATCH 214/253] fix(aliases): fix regression in filter argument --- plugins/aliases/cheatsheet.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/aliases/cheatsheet.py b/plugins/aliases/cheatsheet.py index fb8c74aa4..7505d304b 100644 --- a/plugins/aliases/cheatsheet.py +++ b/plugins/aliases/cheatsheet.py @@ -51,9 +51,9 @@ def pretty_print(cheatsheet, wfilter, group_list=None, groups_only=False): continue aliases = cheatsheet.get(key) if not wfilter: - pretty_print_group(key, aliases, only_groupname=groups_only) + pretty_print_group(key, aliases, wfilter, groups_only) else: - pretty_print_group(key, [ alias for alias in aliases if wfilter in alias[0] or wfilter in alias[1] ], wfilter) + pretty_print_group(key, [ alias for alias in aliases if alias[0].find(wfilter)>-1 or alias[1].find(wfilter)>-1], wfilter) if __name__ == '__main__': parser = argparse.ArgumentParser(description="Pretty print aliases.", prog="acs") @@ -64,5 +64,5 @@ if __name__ == '__main__': lines = sys.stdin.readlines() group_list = args.group_list or None - wfilter = " ".join(args.filter[1:]) if args.filter else None + wfilter = " ".join(args.filter) or None pretty_print(cheatsheet(lines), wfilter, group_list, args.groups_only) From a4a9a8cd8ccb4240a7c5df5f6766bd5340646e63 Mon Sep 17 00:00:00 2001 From: Julian Suarez <49501306+jsred@users.noreply.github.com> Date: Wed, 1 Mar 2023 07:23:32 -0300 Subject: [PATCH 215/253] feat(rvm): add `rb32` alias (#11533) --- plugins/rvm/README.md | 1 + plugins/rvm/rvm.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/rvm/README.md b/plugins/rvm/README.md index 576b037b0..410bd60c0 100644 --- a/plugins/rvm/README.md +++ b/plugins/rvm/README.md @@ -24,6 +24,7 @@ plugins=(... rvm) | `rb27` | `rvm use ruby-2.7` | | `rb30` | `rvm use ruby-3.0` | | `rb31` | `rvm use ruby-3.1` | +| `rb32` | `rvm use ruby-3.2` | | `rvm-update` | `rvm get head` | | `gems` | `gem list` | | `rvms` | `rvm gemset` | diff --git a/plugins/rvm/rvm.plugin.zsh b/plugins/rvm/rvm.plugin.zsh index 2a091d019..3ddf04176 100644 --- a/plugins/rvm/rvm.plugin.zsh +++ b/plugins/rvm/rvm.plugin.zsh @@ -27,6 +27,7 @@ rubies=( 27 'ruby-2.7' 30 'ruby-3.0' 31 'ruby-3.1' + 32 'ruby-3.2' ) for v in ${(k)rubies}; do From 14978859c5b8d9385c9b836cd09c97cc08b6035b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Batuhan=20=C5=9Eanl=C4=B1?= <32306925+batuhan0sanli@users.noreply.github.com> Date: Thu, 2 Mar 2023 12:03:50 +0300 Subject: [PATCH 216/253] docs(brew): remove duplication (#11535) --- plugins/brew/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/brew/README.md b/plugins/brew/README.md index d0c150237..412daae63 100644 --- a/plugins/brew/README.md +++ b/plugins/brew/README.md @@ -21,7 +21,6 @@ defined for convenience. | -------- | --------------------------------------- | ------------------------------------------------------------------- | | `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | | `bcubo` | `brew update && brew outdated --cask` | Update Homebrew data, then list outdated casks. | -| `bcubc` | `brew upgrade --cask && brew cleanup` | Update outdated casks, then run cleanup. | | `brewp` | `brew pin` | Pin a specified formula so that it's not upgraded. | | `brews` | `brew list -1` | List installed formulae or the installed files for a given formula. | | `brewsp` | `brew list --pinned` | List pinned formulae, or show the version of a given formula. | From 5bf7f9c83325a6cb2752e14ca01a574dbeef206e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 3 Mar 2023 12:34:31 +0100 Subject: [PATCH 217/253] fix(lib): use `$BROWSER` in `open_command` if set (#11532) Fixes #11098 --- lib/functions.zsh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/functions.zsh b/lib/functions.zsh index 6e1faa6aa..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 } From 95d0c4b603e0c880bcf20bc9211b2162e94ed925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 3 Mar 2023 14:38:50 +0100 Subject: [PATCH 218/253] refactor(theme-and-appearance): reorganize and clean up logic (#11529) Co-authored-by: Andrew Janke Co-authored-by: Marcelo Parada Co-authored-by: Uy Ha Co-authored-by: Valentin Uveges --- lib/theme-and-appearance.zsh | 147 +++++++++++++++++++++-------------- 1 file changed, 87 insertions(+), 60 deletions(-) diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh index 208ab9ce5..985d3bc11 100644 --- a/lib/theme-and-appearance.zsh +++ b/lib/theme-and-appearance.zsh @@ -1,66 +1,93 @@ -# 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 - -if [[ "$DISABLE_LS_COLORS" != "true" ]]; then - if [[ -d "$ZSH" ]]; then - _test_dir="$ZSH" - else - _test_dir="." - fi - # 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 "$_test_dir" &>/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 "$_test_dir" &>/dev/null && alias ls='gls --color=tty' - colorls -G -d "$_test_dir" &>/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 "$_test_dir" &>/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 "$_test_dir" &>/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 - - ls --color -d "$_test_dir" &>/dev/null && alias ls='ls --color=tty' || { ls -G "$_test_dir" &>/dev/null && alias ls='ls -G' } - - # Take advantage of $LS_COLORS for completion as well. - zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" - fi -fi - -# enable diff color if possible. -if command diff --color /dev/null /dev/null &>/dev/null; then - function color-diff { - command diff --color $@ - } - alias diff="color-diff" - compdef _diff color-diff # compdef is already loaded by this point -fi - +# Expand variables and commands in PROMPT variables setopt prompt_subst -[[ -n "$WINDOW" ]] && SCREEN_NO="%B$WINDOW%b " || SCREEN_NO="" - -# 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 +# 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=")" + + +# Use diff --color if available +if command diff --color /dev/null{,} &>/dev/null; then + function diff { + command diff --color "$@" + } +fi + + +# Don't set ls coloring if disabled +[[ "$DISABLE_LS_COLORS" != true ]] || return 0 + +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 +} + +# 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=34:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=37;41:sg=30;43:tw=30;42:ow=34;42:" + fi +fi + +# Take advantage of $LS_COLORS for completion as well. +function omz_set_completion_colors { + zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" + add-zsh-hook -d precmd omz_set_completion_colors + unfunction omz_set_completion_colors +} + +autoload -Uz add-zsh-hook +add-zsh-hook precmd omz_set_completion_colors From 6f3304f442afde6e1cf3e7e8641a405d29d2e73d Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Sat, 4 Mar 2023 09:25:01 +0100 Subject: [PATCH 219/253] feat(argocd): add completion plugin Co-authored-by: Sumudu Lansakara Closes #9900 --- plugins/argocd/README.md | 20 ++++++++++++++++++++ plugins/argocd/gh.plugin.zsh | 14 ++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 plugins/argocd/README.md create mode 100644 plugins/argocd/gh.plugin.zsh diff --git a/plugins/argocd/README.md b/plugins/argocd/README.md new file mode 100644 index 000000000..0f900ff22 --- /dev/null +++ b/plugins/argocd/README.md @@ -0,0 +1,20 @@ +# Argo CD plugin + +This plugin adds completion for the [Argo CD](https://argoproj.github.io/cd/) CLI. + +To use it, add `argocd` to the plugins array in your zshrc file: + +```zsh +plugins=(... argocd) +``` + +This plugin does not add any aliases. + +## Cache + +This plugin caches the completion script and is automatically updated asynchronously when the plugin is +loaded, which is usually when you start up a new terminal emulator. + +The cache is stored at: + +- `$ZSH_CACHE/completions/_argocd` completions script diff --git a/plugins/argocd/gh.plugin.zsh b/plugins/argocd/gh.plugin.zsh new file mode 100644 index 000000000..8de7b0238 --- /dev/null +++ b/plugins/argocd/gh.plugin.zsh @@ -0,0 +1,14 @@ +# Autocompletion for argocd. +if (( ! $+commands[argocd] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `argocd`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_argocd" ]]; then + typeset -g -A _comps + autoload -Uz _argocd + _comps[argocd]=_argocd +fi + +argocd completion zsh >| "$ZSH_CACHE_DIR/completions/_argocd" &| From 3b759c5dc926d0973d82fa1b8ffed45d770d20e8 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Mon, 6 Mar 2023 11:25:47 +0100 Subject: [PATCH 220/253] fix(argocd): typo in filename --- plugins/argocd/{gh.plugin.zsh => argocd.plugin.zsh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename plugins/argocd/{gh.plugin.zsh => argocd.plugin.zsh} (100%) diff --git a/plugins/argocd/gh.plugin.zsh b/plugins/argocd/argocd.plugin.zsh similarity index 100% rename from plugins/argocd/gh.plugin.zsh rename to plugins/argocd/argocd.plugin.zsh From 06c16175ea4aa81d4b64c0772f44c11e505a0eb7 Mon Sep 17 00:00:00 2001 From: Karim Benbourenane Date: Tue, 7 Mar 2023 03:25:34 -0500 Subject: [PATCH 221/253] fix(aliases): group properly aliases (#11546) --- plugins/aliases/cheatsheet.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/aliases/cheatsheet.py b/plugins/aliases/cheatsheet.py index 7505d304b..f742fba9e 100644 --- a/plugins/aliases/cheatsheet.py +++ b/plugins/aliases/cheatsheet.py @@ -15,6 +15,7 @@ def parse(line): def cheatsheet(lines): exps = [ parse(line) for line in lines ] + exps.sort(key=lambda exp:exp[2]) cheatsheet = {'_default': []} for key, group in itertools.groupby(exps, lambda exp:exp[2]): group_list = [ item for item in group ] From 46fd7972a2170388c9b8e9f6e58d6c8408ad4904 Mon Sep 17 00:00:00 2001 From: potato <851951875@qq.com> Date: Tue, 7 Mar 2023 20:33:16 +0800 Subject: [PATCH 222/253] feat(aws): add AWS_REGION to aws_prompt_info (#10062) --- plugins/aws/README.md | 22 +++++++++++++++----- plugins/aws/aws.plugin.zsh | 41 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 7 deletions(-) diff --git a/plugins/aws/README.md b/plugins/aws/README.md index d6f4f4600..e1e355741 100644 --- a/plugins/aws/README.md +++ b/plugins/aws/README.md @@ -1,7 +1,7 @@ # aws This plugin provides completion support for [awscli](https://docs.aws.amazon.com/cli/latest/reference/index.html) -and a few utilities to manage AWS profiles and display them in the prompt. +and a few utilities to manage AWS profiles/regions and display them in the prompt. To use it, add `aws` to the plugins array in your zshrc file. @@ -16,6 +16,9 @@ plugins=(... aws) Run `asp` without arguments to clear the profile. * `asp [] login`: If AWS SSO has been configured in your aws profile, it will run the `aws sso login` command following profile selection. +* `asr []`: sets `$AWS_REGION` and `$AWS_DEFAULT_REGION` (legacy) to ``. + Run `asr` without arguments to clear the profile. + * `acp [] []`: in addition to `asp` functionality, it actually changes the profile by assuming the role specified in the `` configuration. It supports MFA and sets `$AWS_ACCESS_KEY_ID`, `$AWS_SECRET_ACCESS_KEY` and `$AWS_SESSION_TOKEN`, if @@ -25,25 +28,34 @@ plugins=(... aws) * `agp`: gets the current value of `$AWS_PROFILE`. +* `agr`: gets the current value of `$AWS_REGION`. + * `aws_change_access_key`: changes the AWS access key of a profile. * `aws_profiles`: lists the available profiles in the `$AWS_CONFIG_FILE` (default: `~/.aws/config`). Used to provide completion for the `asp` function. +* `aws_regions`: lists the available regions. + Used to provide completion for the `asr` function. + ## Plugin options * Set `SHOW_AWS_PROMPT=false` in your zshrc file if you want to prevent the plugin from modifying your RPROMPT. Some themes might overwrite the value of RPROMPT instead of appending to it, so they'll need to be fixed to - see the AWS profile prompt. + see the AWS profile/region prompt. ## Theme The plugin creates an `aws_prompt_info` function that you can use in your theme, which displays -the current `$AWS_PROFILE`. It uses two variables to control how that is shown: +the current `$AWS_PROFILE` and `$AWS_REGION`. It uses four variables to control how that is shown: -* ZSH_THEME_AWS_PREFIX: sets the prefix of the AWS_PROFILE. Defaults to ``. +* ZSH_THEME_AWS_PROFILE_SUFFIX: sets the suffix of the AWS_PROFILE. Defaults to `>`. + +* ZSH_THEME_AWS_REGION_PREFIX: sets the prefix of the AWS_REGION. Defaults to ``. ## Configuration diff --git a/plugins/aws/aws.plugin.zsh b/plugins/aws/aws.plugin.zsh index 865e82f19..1c386a3e1 100644 --- a/plugins/aws/aws.plugin.zsh +++ b/plugins/aws/aws.plugin.zsh @@ -2,6 +2,10 @@ function agp() { echo $AWS_PROFILE } +function agr() { + echo $AWS_REGION +} + # AWS profile selection function asp() { if [[ -z "$1" ]]; then @@ -27,6 +31,25 @@ function asp() { fi } +# AWS region selection +function asr() { + if [[ -z "$1" ]]; then + unset AWS_DEFAULT_REGION AWS_REGION + echo AWS region cleared. + return + fi + + local -a available_regions + available_regions=($(aws_regions)) + if [[ -z "${available_regions[(r)$1]}" ]]; then + echo "${fg[red]}Available regions: \n$(aws_regions)" + return 1 + fi + + export AWS_REGION=$1 + export AWS_DEFAULT_REGION=$1 +} + # AWS profile switch function acp() { if [[ -z "$1" ]]; then @@ -145,12 +168,25 @@ function aws_change_access_key() { AWS_PAGER="" aws iam list-access-keys } +function aws_regions() { + if [[ $AWS_DEFAULT_PROFILE || $AWS_PROFILE ]];then + aws ec2 describe-regions |grep RegionName | awk -F ':' '{gsub(/"/, "", $2);gsub(/,/, "", $2);gsub(/ /, "", $2); print $2}' + else + echo "You must specify a AWS profile." + fi +} + function aws_profiles() { aws --no-cli-pager configure list-profiles 2> /dev/null && return [[ -r "${AWS_CONFIG_FILE:-$HOME/.aws/config}" ]] || return 1 grep --color=never -Eo '\[.*\]' "${AWS_CONFIG_FILE:-$HOME/.aws/config}" | sed -E 's/^[[:space:]]*\[(profile)?[[:space:]]*([^[:space:]]+)\][[:space:]]*$/\2/g' } +function _aws_regions() { + reply=($(aws_regions)) +} +compctl -K _aws_regions asr + function _aws_profiles() { reply=($(aws_profiles)) } @@ -158,8 +194,8 @@ compctl -K _aws_profiles asp acp aws_change_access_key # AWS prompt function aws_prompt_info() { - [[ -n "$AWS_PROFILE" ]] || return - echo "${ZSH_THEME_AWS_PREFIX=}" + if [[ -z $AWS_REGION && -z $AWS_PROFILE ]];then return; fi + echo "${ZSH_THEME_AWS_PROFILE_PREFIX:=} ${ZSH_THEME_AWS_REGION_PREFIX:=}" } if [[ "$SHOW_AWS_PROMPT" != false && "$RPROMPT" != *'$(aws_prompt_info)'* ]]; then @@ -211,3 +247,4 @@ else [[ -r $_aws_zsh_completer_path ]] && source $_aws_zsh_completer_path unset _aws_zsh_completer_path _brew_prefix fi + From d342b353e32091ef7384b86fd86b1a88dbd44609 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Tue, 7 Mar 2023 18:49:17 +0100 Subject: [PATCH 223/253] fix(init): set completion colors on theme load, not with `precmd` This fixes an edge case where the user actually sets zstyle ':completion:*' list-colors in their zshrc, but the previous code used a precmd hook, which would override the user changes. With this change our modifications will be set in the init script, after the theme loads, so that later changes can affect our defaults. Note that this will not be run for users on plugin managers, as these don't generally run our init script. --- lib/theme-and-appearance.zsh | 10 ---------- oh-my-zsh.sh | 3 +++ 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh index 985d3bc11..e245570e3 100644 --- a/lib/theme-and-appearance.zsh +++ b/lib/theme-and-appearance.zsh @@ -81,13 +81,3 @@ if [[ -z "$LS_COLORS" ]]; then export LS_COLORS="di=34:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=37;41:sg=30;43:tw=30;42:ow=34;42:" fi fi - -# Take advantage of $LS_COLORS for completion as well. -function omz_set_completion_colors { - zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" - add-zsh-hook -d precmd omz_set_completion_colors - unfunction omz_set_completion_colors -} - -autoload -Uz add-zsh-hook -add-zsh-hook precmd omz_set_completion_colors diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index 98bda8c8b..363cfca8b 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -189,3 +189,6 @@ if [[ -n "$ZSH_THEME" ]]; then echo "[oh-my-zsh] theme '$ZSH_THEME' not found" fi fi + +# set completion colors to be the same as `ls`, after theme has been loaded +[[ -z "$LS_COLORS" ]] || zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" From e0f92c8df52335c266f73e3cc3384b277f3e9a34 Mon Sep 17 00:00:00 2001 From: Julien Vincent Date: Tue, 7 Mar 2023 21:46:21 +0200 Subject: [PATCH 224/253] feat(vi-mode): add settings for vi-mode cursor styles (#10860) --- plugins/vi-mode/README.md | 21 +++++++++++++++++++++ plugins/vi-mode/vi-mode.plugin.zsh | 23 ++++++++++++++++------- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/plugins/vi-mode/README.md b/plugins/vi-mode/README.md index 476666bf6..3b819c7cb 100644 --- a/plugins/vi-mode/README.md +++ b/plugins/vi-mode/README.md @@ -29,6 +29,8 @@ plugins=(... vi-mode) VI_MODE_SET_CURSOR=true ``` + See [Cursor Styles](#cursor-styles) for controlling how the cursor looks in different modes + - `MODE_INDICATOR`: controls the string displayed when the shell is in normal mode. See [Mode indicators](#mode-indicators) for details. @@ -52,6 +54,25 @@ INSERT_MODE_INDICATOR="%F{yellow}+%f" You can also use the `vi_mode_prompt_info` function in your prompt, which will display this mode indicator. +## Cursor Styles + +You can control the cursor style used in each active vim mode by changing the values of the following variables. + +```zsh +# defaults +VI_MODE_CURSOR_NORMAL=2 +VI_MODE_CURSOR_VISUAL=6 +VI_MODE_CURSOR_INSERT=6 +VI_MODE_CURSOR_OPPEND=0 +``` + +- 0, 1 - Blinking block +- 2 - Solid block +- 3 - Blinking underline +- 4 - Solid underline +- 5 - Blinking line +- 6 - Solid line + ## Key bindings Use `ESC` or `CTRL-[` to enter `Normal mode`. diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh index 149d6bbd5..9a410c1fb 100644 --- a/plugins/vi-mode/vi-mode.plugin.zsh +++ b/plugins/vi-mode/vi-mode.plugin.zsh @@ -14,6 +14,15 @@ typeset -g VI_MODE_RESET_PROMPT_ON_MODE_CHANGE # Unset or set to any other value to do the opposite. typeset -g VI_MODE_SET_CURSOR +# Control how the cursor appears in the various vim modes. This only applies +# if $VI_MODE_SET_CURSOR=true. +# +# See https://vt100.net/docs/vt510-rm/DECSCUSR for cursor styles +typeset -g VI_MODE_CURSOR_NORMAL=2 +typeset -g VI_MODE_CURSOR_VISUAL=6 +typeset -g VI_MODE_CURSOR_INSERT=6 +typeset -g VI_MODE_CURSOR_OPPEND=0 + typeset -g VI_KEYMAP=main function _vi-mode-set-cursor-shape-for-keymap() { @@ -22,13 +31,13 @@ function _vi-mode-set-cursor-shape-for-keymap() { # https://vt100.net/docs/vt510-rm/DECSCUSR local _shape=0 case "${1:-${VI_KEYMAP:-main}}" in - main) _shape=6 ;; # vi insert: line - viins) _shape=6 ;; # vi insert: line - isearch) _shape=6 ;; # inc search: line - command) _shape=6 ;; # read a command name - vicmd) _shape=2 ;; # vi cmd: block - visual) _shape=2 ;; # vi visual mode: block - viopp) _shape=0 ;; # vi operation pending: blinking block + main) _shape=$VI_MODE_CURSOR_INSERT ;; # vi insert: line + viins) _shape=$VI_MODE_CURSOR_INSERT ;; # vi insert: line + isearch) _shape=$VI_MODE_CURSOR_INSERT ;; # inc search: line + command) _shape=$VI_MODE_CURSOR_INSERT ;; # read a command name + vicmd) _shape=$VI_MODE_CURSOR_NORMAL ;; # vi cmd: block + visual) _shape=$VI_MODE_CURSOR_VISUAL ;; # vi visual mode: block + viopp) _shape=$VI_MODE_CURSOR_OPPEND ;; # vi operation pending: blinking block *) _shape=0 ;; esac printf $'\e[%d q' "${_shape}" From 1c325de464117aa058d5f810b96ed54d65e5d0d5 Mon Sep 17 00:00:00 2001 From: Robby Russell Date: Tue, 7 Mar 2023 11:52:38 -0800 Subject: [PATCH 225/253] Fixing link to PA website in README Was linking to an old URL --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7f4a26cab..4042c8c26 100644 --- a/README.md +++ b/README.md @@ -374,4 +374,4 @@ Oh My Zsh is released under the [MIT license](LICENSE.txt). ![Planet Argon](https://pa-github-assets.s3.amazonaws.com/PARGON_logo_digital_COL-small.jpg) -Oh My Zsh was started by the team at [Planet Argon](https://www.planetargon.com/?utm_source=github), a [Ruby on Rails development agency](https://www.planetargon.com/skills/ruby-on-rails-development?utm_source=github). Check out our [other open source projects](https://www.planetargon.com/open-source?utm_source=github). +Oh My Zsh was started by the team at [Planet Argon](https://www.planetargon.com/?utm_source=github), a [Ruby on Rails development agency](http://www.planetargon.com/services/ruby-on-rails-development?utm_source=github). Check out our [other open source projects](https://www.planetargon.com/open-source?utm_source=github). From 3ea0e0d2343a2e79be0c2c6ace030a595d5cec2f Mon Sep 17 00:00:00 2001 From: Benjamin Lieb Date: Wed, 8 Mar 2023 03:29:21 -0500 Subject: [PATCH 226/253] docs(vi-mode): document how to add vi-mode info on the prompt (#11548) --- plugins/vi-mode/README.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/plugins/vi-mode/README.md b/plugins/vi-mode/README.md index 3b819c7cb..0cb516751 100644 --- a/plugins/vi-mode/README.md +++ b/plugins/vi-mode/README.md @@ -51,8 +51,23 @@ MODE_INDICATOR="%F{white}+%f" INSERT_MODE_INDICATOR="%F{yellow}+%f" ``` -You can also use the `vi_mode_prompt_info` function in your prompt, which will display -this mode indicator. +### Adding mode indicators to your prompt + +`Vi-mode` by default will add mode indicators to `RPROMPT` **unless** that is defined by +a preceding plugin. + +If `PROMPT` or `RPROMPT` is not defined to your liking, you can add mode info manually. The `vi_mode_prompt_info` function is available to insert mode indicator information. + +Here are some examples: + +```bash +source $ZSH/oh-my-zsh.sh + +PROMPT="$PROMPT\$(vi_mode_prompt_info)" +RPROMPT="\$(vi_mode_prompt_info)$RPROMPT" +``` + +Note the `\$` here, which importantly prevents interpolation at the time of defining, but allows it to be executed for each prompt update event. ## Cursor Styles From 92387d9fff83934a8628697a4397a65030f0301e Mon Sep 17 00:00:00 2001 From: Zhong Zheng Date: Sat, 11 Mar 2023 01:52:44 +1100 Subject: [PATCH 227/253] feat(rails): add `rta` alias (#11553) --- plugins/rails/README.md | 1 + plugins/rails/rails.plugin.zsh | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/rails/README.md b/plugins/rails/README.md index fa66750f0..b2425aabc 100644 --- a/plugins/rails/README.md +++ b/plugins/rails/README.md @@ -47,6 +47,7 @@ plugins=(... rails) | `rsp` | `rails server --port` | Launch a web server and specify the listening port | | `rsts` | `rails stats` | Print code statistics | | `rt` | `rails test` | Run Rails tests | +| `rta` | `rails test:all` | Runs all Rails tests, including system tests | | `ru` | `rails runner` | Run Ruby code in the context of Rails | ### Foreman diff --git a/plugins/rails/rails.plugin.zsh b/plugins/rails/rails.plugin.zsh index b11cbb5c7..015dc9ecb 100644 --- a/plugins/rails/rails.plugin.zsh +++ b/plugins/rails/rails.plugin.zsh @@ -75,6 +75,7 @@ alias rsd='rails server --debugger' alias rsp='rails server --port' alias rsts='rails stats' alias rt='rails test' +alias rta='rails test:all' alias ru='rails runner' # Foreman aliases From 72732a224e886933df6b64a49ec6f5e94c884612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sun, 12 Mar 2023 15:47:58 +0100 Subject: [PATCH 228/253] fix(lib): set equivalent LS_COLORS and LSCOLORS variables As reported by https://geoff.greer.fm/lscolors Fixes #11554 --- lib/theme-and-appearance.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh index e245570e3..d8859b04c 100644 --- a/lib/theme-and-appearance.zsh +++ b/lib/theme-and-appearance.zsh @@ -78,6 +78,6 @@ if [[ -z "$LS_COLORS" ]]; then && source <(dircolors -b "$HOME/.dircolors") \ || source <(dircolors -b) else - export LS_COLORS="di=34:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=37;41:sg=30;43:tw=30;42:ow=34;42:" + 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 From 82d261603d968dfe5e86a44464c38fd88dda802c Mon Sep 17 00:00:00 2001 From: vladislav doster <10052309+vladdoster@users.noreply.github.com> Date: Mon, 20 Mar 2023 02:11:03 -0500 Subject: [PATCH 229/253] feat(gnu-utils): add `gindent` (#11569) --- plugins/gnu-utils/gnu-utils.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/gnu-utils/gnu-utils.plugin.zsh b/plugins/gnu-utils/gnu-utils.plugin.zsh index 6bd3e8463..6023bf2b4 100644 --- a/plugins/gnu-utils/gnu-utils.plugin.zsh +++ b/plugins/gnu-utils/gnu-utils.plugin.zsh @@ -19,7 +19,7 @@ __gnu_utils() { 'gchown' 'gchroot' 'gcksum' 'gcomm' 'gcp' 'gcsplit' 'gcut' 'gdate' 'gdd' 'gdf' 'gdir' 'gdircolors' 'gdirname' 'gdu' 'gecho' 'genv' 'gexpand' 'gexpr' 'gfactor' 'gfalse' 'gfmt' 'gfold' 'ggroups' 'ghead' 'ghostid' - 'gid' 'ginstall' 'gjoin' 'gkill' 'glink' 'gln' 'glogname' 'gls' 'gmd5sum' + 'gid' 'gindent' 'ginstall' 'gjoin' 'gkill' 'glink' 'gln' 'glogname' 'gls' 'gmd5sum' 'gmkdir' 'gmkfifo' 'gmknod' 'gmktemp' 'gmv' 'gnice' 'gnl' 'gnohup' 'gnproc' 'god' 'gpaste' 'gpathchk' 'gpinky' 'gpr' 'gprintenv' 'gprintf' 'gptx' 'gpwd' 'greadlink' 'grm' 'grmdir' 'gruncon' 'gseq' 'gsha1sum' 'gsha224sum' From 4a39779067eda369152bfd6b653f843286c930c0 Mon Sep 17 00:00:00 2001 From: Yu Xiang Zhang Date: Tue, 14 Mar 2023 19:02:54 +0000 Subject: [PATCH 230/253] feat(aws): set region when AWS_REGION is not set --- plugins/aws/README.md | 2 +- plugins/aws/aws.plugin.zsh | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/aws/README.md b/plugins/aws/README.md index e1e355741..846bf1414 100644 --- a/plugins/aws/README.md +++ b/plugins/aws/README.md @@ -12,7 +12,7 @@ plugins=(... aws) ## Plugin commands * `asp []`: sets `$AWS_PROFILE` and `$AWS_DEFAULT_PROFILE` (legacy) to ``. - It also sets `$AWS_EB_PROFILE` to `` for the Elastic Beanstalk CLI. + It also sets `$AWS_EB_PROFILE` to `` for the Elastic Beanstalk CLI. It sets `$AWS_PROFILE_REGION` for display in `aws_prompt_info`. Run `asp` without arguments to clear the profile. * `asp [] login`: If AWS SSO has been configured in your aws profile, it will run the `aws sso login` command following profile selection. diff --git a/plugins/aws/aws.plugin.zsh b/plugins/aws/aws.plugin.zsh index 1c386a3e1..39c47d572 100644 --- a/plugins/aws/aws.plugin.zsh +++ b/plugins/aws/aws.plugin.zsh @@ -9,7 +9,7 @@ function agr() { # AWS profile selection function asp() { if [[ -z "$1" ]]; then - unset AWS_DEFAULT_PROFILE AWS_PROFILE AWS_EB_PROFILE + unset AWS_DEFAULT_PROFILE AWS_PROFILE AWS_EB_PROFILE AWS_PROFILE_REGION echo AWS profile cleared. return fi @@ -26,6 +26,8 @@ function asp() { export AWS_PROFILE=$1 export AWS_EB_PROFILE=$1 + export AWS_PROFILE_REGION=$(aws configure get region) + if [[ "$2" == "login" ]]; then aws sso login fi @@ -195,7 +197,8 @@ compctl -K _aws_profiles asp acp aws_change_access_key # AWS prompt function aws_prompt_info() { if [[ -z $AWS_REGION && -z $AWS_PROFILE ]];then return; fi - echo "${ZSH_THEME_AWS_PROFILE_PREFIX:=} ${ZSH_THEME_AWS_REGION_PREFIX:=}" + region=${AWS_REGION:-${AWS_DEFAULT_REGION:-$AWS_PROFILE_REGION}} + echo "${ZSH_THEME_AWS_PROFILE_PREFIX:=} ${ZSH_THEME_AWS_REGION_PREFIX:=}" } if [[ "$SHOW_AWS_PROMPT" != false && "$RPROMPT" != *'$(aws_prompt_info)'* ]]; then From f9f01e48a890ad4359a6973d1b8a7039f57b2d08 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 21 Mar 2023 15:29:48 +0100 Subject: [PATCH 231/253] fix(aws): do not print region if it's not defined Closes #11568 Closes #11570 --- plugins/aws/aws.plugin.zsh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/aws/aws.plugin.zsh b/plugins/aws/aws.plugin.zsh index 39c47d572..0242be97e 100644 --- a/plugins/aws/aws.plugin.zsh +++ b/plugins/aws/aws.plugin.zsh @@ -196,9 +196,15 @@ compctl -K _aws_profiles asp acp aws_change_access_key # AWS prompt function aws_prompt_info() { - if [[ -z $AWS_REGION && -z $AWS_PROFILE ]];then return; fi - region=${AWS_REGION:-${AWS_DEFAULT_REGION:-$AWS_PROFILE_REGION}} - echo "${ZSH_THEME_AWS_PROFILE_PREFIX:=} ${ZSH_THEME_AWS_REGION_PREFIX:=}" + local _aws_to_show + if [[ -n $AWS_PROFILE ]];then + _aws_to_show+="${ZSH_THEME_AWS_PROFILE_PREFIX:=}" + fi + if [[ -n $AWS_REGION ]]; then + [[ -n $AWS_PROFILE ]] && _aws_to_show+=" " + _aws_to_show+="${ZSH_THEME_AWS_REGION_PREFIX:=}" + fi + echo "$_aws_to_show" } if [[ "$SHOW_AWS_PROMPT" != false && "$RPROMPT" != *'$(aws_prompt_info)'* ]]; then From 5efcfc39735c818a9778172356f82ec0eb3e5916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20C=2E=20Mass=C3=B3n?= <939888+Abuelodelanada@users.noreply.github.com> Date: Thu, 23 Mar 2023 05:42:20 -0300 Subject: [PATCH 232/253] feat(juju): add functions to get current controller and model (#11572) --- plugins/juju/README.md | 2 ++ plugins/juju/juju.plugin.zsh | 32 +++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/plugins/juju/README.md b/plugins/juju/README.md index f0c65309c..6ee333f50 100644 --- a/plugins/juju/README.md +++ b/plugins/juju/README.md @@ -126,5 +126,7 @@ Naming convention: - `jaddr [unit_num]`: display app or unit IP address. - `jreld `: display app and unit relation data. - `jclean`: destroy all controllers +- `jcontroller`: display the controller your are connected to. +- `jmodel`: display the model your are connected to. - `wjst [interval_secs] [args_for_watch]`: watch juju status, with optional interval (default: 5s); you may pass additional arguments to `watch`. diff --git a/plugins/juju/juju.plugin.zsh b/plugins/juju/juju.plugin.zsh index be8a2c7ae..0c60e35ce 100644 --- a/plugins/juju/juju.plugin.zsh +++ b/plugins/juju/juju.plugin.zsh @@ -163,10 +163,40 @@ jreld() { juju run "relation-get -r $relid - $2" --unit $2/$3 } +# Return Juju current controller +jcontroller() { + local controller="$(awk '/current-controller/ {print $2}' ~/.local/share/juju/controllers.yaml)" + if [[ -z "$controller" ]]; then + return 1 + fi + + echo $controller + return 0 +} + +# Return Juju current model +jmodel() { + local yqbin="$(whereis yq | awk '{print $2}')" + + if [[ -z "$yqbin" ]]; then + echo "--" + return 1 + fi + + local model="$(yq e ".controllers.$(jcontroller).current-model" < ~/.local/share/juju/models.yaml | cut -d/ -f2)" + + if [[ -z "$model" ]]; then + echo "--" + return 1 + fi + + echo $model + return 0 +} + # Watch juju status, with optional interval (default: 5 sec) wjst() { local interval="${1:-5}" shift $(( $# > 0 )) watch -n "$interval" --color juju status --relations --color "$@" } - From c08b925d282e35ea7bd9a8f4c29de2ece0debb49 Mon Sep 17 00:00:00 2001 From: Michele Bologna Date: Thu, 23 Mar 2023 14:34:43 +0100 Subject: [PATCH 233/253] fix(uninstall): abort uninstall if unable to change shell (#10357) --- tools/uninstall.sh | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/tools/uninstall.sh b/tools/uninstall.sh index 6a0e7b4c7..6e3df7aca 100644 --- a/tools/uninstall.sh +++ b/tools/uninstall.sh @@ -1,3 +1,15 @@ +if hash chsh >/dev/null 2>&1 && [ -f ~/.shell.pre-oh-my-zsh ]; then + old_shell=$(cat ~/.shell.pre-oh-my-zsh) + echo "Switching your shell back to '$old_shell':" + if chsh -s "$old_shell"; then + rm -f ~/.shell.pre-oh-my-zsh + else + echo "Could not change default shell. Change it manually by running chsh" + echo "or editing the /etc/passwd file." + exit + fi +fi + read -r -p "Are you sure you want to remove Oh My Zsh? [y/N] " confirmation if [ "$confirmation" != y ] && [ "$confirmation" != Y ]; then echo "Uninstall cancelled" @@ -25,16 +37,5 @@ else echo "No original zsh config found" fi -if hash chsh >/dev/null 2>&1 && [ -f ~/.shell.pre-oh-my-zsh ]; then - old_shell=$(cat ~/.shell.pre-oh-my-zsh) - echo "Switching your shell back to '$old_shell':" - if chsh -s "$old_shell"; then - rm -f ~/.shell.pre-oh-my-zsh - else - echo "Could not change default shell. Change it manually by running chsh" - echo "or editing the /etc/passwd file." - fi -fi - echo "Thanks for trying out Oh My Zsh. It's been uninstalled." echo "Don't forget to restart your terminal!" From 8f6fbe238969ecb22fbdae75450a9f8705c9f979 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Bartnes?= Date: Tue, 28 Mar 2023 12:50:05 +0200 Subject: [PATCH 234/253] feat(upgrade): add verbosity settings Co-authored-by: Carlo Sala Closes #11574 Closes #11579 --- README.md | 12 +++++++++ lib/cli.zsh | 5 ++-- tools/check_for_upgrade.sh | 3 ++- tools/upgrade.sh | 53 ++++++++++++++++++++++++++++---------- 4 files changed, 56 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 4042c8c26..4f0aeb7b4 100644 --- a/README.md +++ b/README.md @@ -317,6 +317,18 @@ zstyle ':omz:update' frequency 7 zstyle ':omz:update' frequency 0 ``` +### Updates verbosity + +You can also limit the update verbosity with the following settings: + +```sh +zstyle ':omz:update' verbose default # default update prompt + +zstyle ':omz:update' verbose minimal # only few lines + +zstyle ':omz:update' verbose silent # only errors +``` + ### Manual Updates If you'd like to update at any point in time (maybe someone just released a new plugin and you don't want to wait a week?) you just need to run: diff --git a/lib/cli.zsh b/lib/cli.zsh index fed00d21d..ba3e39eb5 100644 --- a/lib/cli.zsh +++ b/lib/cli.zsh @@ -776,10 +776,11 @@ function _omz::update { local last_commit=$(builtin cd -q "$ZSH"; git rev-parse HEAD) # Run update script + zstyle -s ':omz:update' verbose verbose_mode || verbose_mode=default if [[ "$1" != --unattended ]]; then - ZSH="$ZSH" command zsh -f "$ZSH/tools/upgrade.sh" --interactive || return $? + ZSH="$ZSH" command zsh -f "$ZSH/tools/upgrade.sh" -i -v $verbose_mode || return $? else - ZSH="$ZSH" command zsh -f "$ZSH/tools/upgrade.sh" || return $? + ZSH="$ZSH" command zsh -f "$ZSH/tools/upgrade.sh" -v $verbose_mode || return $? fi # Update last updated file diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh index 734714c94..81c371b3f 100644 --- a/tools/check_for_upgrade.sh +++ b/tools/check_for_upgrade.sh @@ -95,7 +95,8 @@ function update_last_updated_file() { } function update_ohmyzsh() { - if ZSH="$ZSH" zsh -f "$ZSH/tools/upgrade.sh" --interactive; then + zstyle -s ':omz:update' verbose verbose_mode || verbose_mode=default + if ZSH="$ZSH" zsh -f "$ZSH/tools/upgrade.sh" -i -v $verbose_mode; then update_last_updated_file fi } diff --git a/tools/upgrade.sh b/tools/upgrade.sh index 596a59302..684ad894a 100755 --- a/tools/upgrade.sh +++ b/tools/upgrade.sh @@ -12,6 +12,23 @@ esac cd "$ZSH" +verbose_mode="default" +interactive=false + +while getopts "v:i" opt; do + case $opt in + v) + if [[ $OPTARG == default || $OPTARG == minimal || $OPTARG == silent ]]; then + verbose_mode=$OPTARG + else + echo "[oh-my-zsh] update verbosity '$OPTARG' is not valid" + echo "[oh-my-zsh] valid options are 'default', 'minimal' and 'silent'" + fi + ;; + i) interactive=true ;; + esac +done + # Use colors, but only if connected to a terminal # and that terminal supports them. @@ -203,7 +220,9 @@ git checkout -q "$branch" -- || exit 1 last_commit=$(git rev-parse "$branch") # Update Oh My Zsh -printf "${BLUE}%s${RESET}\n" "Updating Oh My Zsh" +if [[ $verbose_mode != silent ]]; then + printf "${BLUE}%s${RESET}\n" "Updating Oh My Zsh" +fi if LANG= git pull --quiet --rebase $remote $branch; then # Check if it was really updated or not if [[ "$(git rev-parse HEAD)" = "$last_commit" ]]; then @@ -215,24 +234,30 @@ if LANG= git pull --quiet --rebase $remote $branch; then git config oh-my-zsh.lastVersion "$last_commit" # Print changelog to the terminal - if [[ "$1" = --interactive ]]; then + if [[ interactive == true && $verbose_mode == default ]] ; then "$ZSH/tools/changelog.sh" HEAD "$last_commit" fi - printf "${BLUE}%s \`${BOLD}%s${RESET}${BLUE}\`${RESET}\n" "You can see the changelog with" "omz changelog" + if [[ $verbose_mode != silent ]]; then + printf "${BLUE}%s \`${BOLD}%s${RESET}${BLUE}\`${RESET}\n" "You can see the changelog with" "omz changelog" + fi fi - printf '%s %s__ %s %s %s %s %s__ %s\n' $RAINBOW $RESET - printf '%s ____ %s/ /_ %s ____ ___ %s__ __ %s ____ %s_____%s/ /_ %s\n' $RAINBOW $RESET - printf '%s / __ \\%s/ __ \\ %s / __ `__ \\%s/ / / / %s /_ / %s/ ___/%s __ \\ %s\n' $RAINBOW $RESET - printf '%s/ /_/ /%s / / / %s / / / / / /%s /_/ / %s / /_%s(__ )%s / / / %s\n' $RAINBOW $RESET - printf '%s\\____/%s_/ /_/ %s /_/ /_/ /_/%s\\__, / %s /___/%s____/%s_/ /_/ %s\n' $RAINBOW $RESET - printf '%s %s %s %s /____/ %s %s %s %s\n' $RAINBOW $RESET - printf '\n' - printf "${BLUE}%s${RESET}\n\n" "$message" - printf "${BLUE}${BOLD}%s %s${RESET}\n" "To keep up with the latest news and updates, follow us on Twitter:" "$(fmt_link @ohmyzsh https://twitter.com/ohmyzsh)" - printf "${BLUE}${BOLD}%s %s${RESET}\n" "Want to get involved in the community? Join our Discord:" "$(fmt_link "Discord server" https://discord.gg/ohmyzsh)" - printf "${BLUE}${BOLD}%s %s${RESET}\n" "Get your Oh My Zsh swag at:" "$(fmt_link "Planet Argon Shop" https://shop.planetargon.com/collections/oh-my-zsh)" + if [[ $verbose_mode == default ]]; then + printf '%s %s__ %s %s %s %s %s__ %s\n' $RAINBOW $RESET + printf '%s ____ %s/ /_ %s ____ ___ %s__ __ %s ____ %s_____%s/ /_ %s\n' $RAINBOW $RESET + printf '%s / __ \\%s/ __ \\ %s / __ `__ \\%s/ / / / %s /_ / %s/ ___/%s __ \\ %s\n' $RAINBOW $RESET + printf '%s/ /_/ /%s / / / %s / / / / / /%s /_/ / %s / /_%s(__ )%s / / / %s\n' $RAINBOW $RESET + printf '%s\\____/%s_/ /_/ %s /_/ /_/ /_/%s\\__, / %s /___/%s____/%s_/ /_/ %s\n' $RAINBOW $RESET + printf '%s %s %s %s /____/ %s %s %s %s\n' $RAINBOW $RESET + printf '\n' + printf "${BLUE}%s${RESET}\n\n" "$message" + printf "${BLUE}${BOLD}%s %s${RESET}\n" "To keep up with the latest news and updates, follow us on Twitter:" "$(fmt_link @ohmyzsh https://twitter.com/ohmyzsh)" + printf "${BLUE}${BOLD}%s %s${RESET}\n" "Want to get involved in the community? Join our Discord:" "$(fmt_link "Discord server" https://discord.gg/ohmyzsh)" + printf "${BLUE}${BOLD}%s %s${RESET}\n" "Get your Oh My Zsh swag at:" "$(fmt_link "Planet Argon Shop" https://shop.planetargon.com/collections/oh-my-zsh)" + elif [[ $verbose_mode == minimal ]]; then + printf "${BLUE}%s${RESET}\n" "$message" + fi else ret=$? printf "${RED}%s${RESET}\n" 'There was an error updating. Try again later?' From fcbdc330ff50617c8b84d39ce069cc75df41108f Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 28 Mar 2023 16:55:53 +0200 Subject: [PATCH 235/253] fix(aws): restore accidentally deleted variable Closes #11589 --- plugins/aws/aws.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/aws/aws.plugin.zsh b/plugins/aws/aws.plugin.zsh index 0242be97e..a379eaa18 100644 --- a/plugins/aws/aws.plugin.zsh +++ b/plugins/aws/aws.plugin.zsh @@ -197,6 +197,7 @@ compctl -K _aws_profiles asp acp aws_change_access_key # AWS prompt function aws_prompt_info() { local _aws_to_show + local region="${AWS_REGION:-${AWS_DEFAULT_REGION:-$AWS_PROFILE_REGION}}" if [[ -n $AWS_PROFILE ]];then _aws_to_show+="${ZSH_THEME_AWS_PROFILE_PREFIX:=}" fi @@ -211,7 +212,6 @@ if [[ "$SHOW_AWS_PROMPT" != false && "$RPROMPT" != *'$(aws_prompt_info)'* ]]; th RPROMPT='$(aws_prompt_info)'"$RPROMPT" fi - # Load awscli completions # AWS CLI v2 comes with its own autocompletion. Check if that is there, otherwise fall back From 7837ba6a993fb2243b3e69fdbd63b437a8674b4c Mon Sep 17 00:00:00 2001 From: Webpage-gh <70434775+Webpage-gh@users.noreply.github.com> Date: Fri, 31 Mar 2023 13:37:01 +0800 Subject: [PATCH 236/253] fix(installer): don't use `sudo` when user is in Termux (#11591) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Marc Cornellà --- tools/install.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/install.sh b/tools/install.sh index f4ef16a0c..efdb7d482 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -84,6 +84,11 @@ command_exists() { user_can_sudo() { # Check if sudo is installed command_exists sudo || return 1 + # Termux can't run sudo unless the device is rooted. Either way, `chsh` works + # without sudo, so we can detect it and exit the function early. + case "$PREFIX" in + *com.termux*) return 1 ;; + esac # The following command has 3 parts: # # 1. Run `sudo` with `-v`. Does the following: From b9c4e2e82337594c2899db1f9ca005bb02fe20cd Mon Sep 17 00:00:00 2001 From: Guy Sartorelli <36352093+GuySartorelli@users.noreply.github.com> Date: Fri, 31 Mar 2023 18:49:59 +1300 Subject: [PATCH 237/253] feat(changelog): provide links in changelog (#11578) --- tools/changelog.sh | 98 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 96 insertions(+), 2 deletions(-) diff --git a/tools/changelog.sh b/tools/changelog.sh index a5cc468f2..5f7a14d03 100755 --- a/tools/changelog.sh +++ b/tools/changelog.sh @@ -157,6 +157,89 @@ function parse-commit { fi } +################################ +# SUPPORTS HYPERLINKS FUNCTION # +################################ + +# The code for checking if a terminal supports hyperlinks is copied from install.sh + +# The [ -t 1 ] check only works when the function is not called from +# a subshell (like in `$(...)` or `(...)`, so this hack redefines the +# function at the top level to always return false when stdout is not +# a tty. +if [ -t 1 ]; then + is_tty() { + true + } +else + is_tty() { + false + } +fi + +# This function uses the logic from supports-hyperlinks[1][2], which is +# made by Kat Marchán (@zkat) and licensed under the Apache License 2.0. +# [1] https://github.com/zkat/supports-hyperlinks +# [2] https://crates.io/crates/supports-hyperlinks +# +# Copyright (c) 2021 Kat Marchán +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +supports_hyperlinks() { + # $FORCE_HYPERLINK must be set and be non-zero (this acts as a logic bypass) + if [ -n "$FORCE_HYPERLINK" ]; then + [ "$FORCE_HYPERLINK" != 0 ] + return $? + fi + + # If stdout is not a tty, it doesn't support hyperlinks + is_tty || return 1 + + # DomTerm terminal emulator (domterm.org) + if [ -n "$DOMTERM" ]; then + return 0 + fi + + # VTE-based terminals above v0.50 (Gnome Terminal, Guake, ROXTerm, etc) + if [ -n "$VTE_VERSION" ]; then + [ $VTE_VERSION -ge 5000 ] + return $? + fi + + # If $TERM_PROGRAM is set, these terminals support hyperlinks + case "$TERM_PROGRAM" in + Hyper|iTerm.app|terminology|WezTerm) return 0 ;; + esac + + # kitty supports hyperlinks + if [ "$TERM" = xterm-kitty ]; then + return 0 + fi + + # Windows Terminal also supports hyperlinks + if [ -n "$WT_SESSION" ]; then + return 0 + fi + + # Konsole supports hyperlinks, but it's an opt-in setting that can't be detected + # https://github.com/ohmyzsh/ohmyzsh/issues/10964 + # if [ -n "$KONSOLE_VERSION" ]; then + # return 0 + # fi + + return 1 +} + ############################# # RELEASE CHANGELOG DISPLAY # ############################# @@ -208,7 +291,13 @@ function display-release { local hash="${1:-$hash}" case "$output" in raw) printf '%s' "$hash" ;; - text) printf '\e[33m%s\e[0m' "$hash" ;; # red + text) + local text="\e[33m$hash\e[0m"; # red + if supports_hyperlinks; then + printf "\e]8;;%s\a%s\e]8;;\a" "https://github.com/ohmyzsh/ohmyzsh/commit/$hash" $text; + else + echo $text; + fi ;; md) printf '[`%s`](https://github.com/ohmyzsh/ohmyzsh/commit/%s)' "$hash" "$hash" ;; esac } @@ -272,7 +361,12 @@ function display-release { case "$output" in raw) printf '%s' "$subject" ;; # In text mode, highlight (#) and dim text between `backticks` - text) sed -E $'s|#([0-9]+)|\e[32m#\\1\e[0m|g;s|`([^`]+)`|`\e[2m\\1\e[0m`|g' <<< "$subject" ;; + text) + if supports_hyperlinks; then + sed -E $'s|#([0-9]+)|\e]8;;https://github.com/ohmyzsh/ohmyzsh/issues/\\1\a\e[32m#\\1\e[0m\e]8;;\a|g' <<< "$subject" + else + sed -E $'s|#([0-9]+)|\e[32m#\\1\e[0m|g;s|`([^`]+)`|`\e[2m\\1\e[0m`|g' <<< "$subject" + fi ;; # In markdown mode, link to (#) issues md) sed -E 's|#([0-9]+)|[#\1](https://github.com/ohmyzsh/ohmyzsh/issues/\1)|g' <<< "$subject" ;; esac From cc9913210498e2d527486310f1e8a53b93f55ca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 31 Mar 2023 07:51:10 +0200 Subject: [PATCH 238/253] fix(vi-mode): fix check for prompt redisplay on mode change (#11547) --- plugins/vi-mode/vi-mode.plugin.zsh | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh index 9a410c1fb..d44be69d4 100644 --- a/plugins/vi-mode/vi-mode.plugin.zsh +++ b/plugins/vi-mode/vi-mode.plugin.zsh @@ -43,12 +43,25 @@ function _vi-mode-set-cursor-shape-for-keymap() { printf $'\e[%d q' "${_shape}" } +function _vi-mode-should-reset-prompt() { + # If $VI_MODE_RESET_PROMPT_ON_MODE_CHANGE is unset (default), dynamically + # check whether we're using the prompt to display vi-mode info + if [[ -z "${VI_MODE_RESET_PROMPT_ON_MODE_CHANGE:-}" ]]; then + [[ "${PS1} ${RPS1}" = *'$(vi_mode_prompt_info)'* ]] + return $? + fi + + # If $VI_MODE_RESET_PROMPT_ON_MODE_CHANGE was manually set, let's check + # if it was specifically set to true or it was disabled with any other value + [[ "${VI_MODE_RESET_PROMPT_ON_MODE_CHANGE}" = true ]] +} + # Updates editor information when the keymap changes. function zle-keymap-select() { # update keymap variable for the prompt typeset -g VI_KEYMAP=$KEYMAP - if [[ "${VI_MODE_RESET_PROMPT_ON_MODE_CHANGE:-}" = true ]]; then + if _vi-mode-should-reset-prompt; then zle reset-prompt zle -R fi @@ -59,10 +72,9 @@ zle -N zle-keymap-select # These "echoti" statements were originally set in lib/key-bindings.zsh # Not sure the best way to extend without overriding. function zle-line-init() { - local prev_vi_keymap - prev_vi_keymap="${VI_KEYMAP:-}" + local prev_vi_keymap="${VI_KEYMAP:-}" typeset -g VI_KEYMAP=main - [[ "$prev_vi_keymap" != 'main' ]] && [[ "${VI_MODE_RESET_PROMPT_ON_MODE_CHANGE:-}" = true ]] && zle reset-prompt + [[ "$prev_vi_keymap" != 'main' ]] && _vi-mode-should-reset-prompt && zle reset-prompt (( ! ${+terminfo[smkx]} )) || echoti smkx _vi-mode-set-cursor-shape-for-keymap "${VI_KEYMAP}" } @@ -138,13 +150,6 @@ if [[ -z "$MODE_INDICATOR" ]]; then fi function vi_mode_prompt_info() { - # If we're using the prompt to display mode info, and we haven't explicitly - # disabled "reset prompt on mode change", then set it here. - # - # We do that here instead of the `if` statement below because the user may - # set RPS1/RPROMPT to something else in their custom config. - : "${VI_MODE_RESET_PROMPT_ON_MODE_CHANGE:=true}" - echo "${${VI_KEYMAP/vicmd/$MODE_INDICATOR}/(main|viins)/$INSERT_MODE_INDICATOR}" } From 029a6d2de8681d52142129eb8b6ff0f20be9f0a6 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Fri, 31 Mar 2023 15:30:19 +0200 Subject: [PATCH 239/253] fix(upgrade): typo in variable check --- tools/upgrade.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/upgrade.sh b/tools/upgrade.sh index 684ad894a..d9a372d13 100755 --- a/tools/upgrade.sh +++ b/tools/upgrade.sh @@ -234,7 +234,7 @@ if LANG= git pull --quiet --rebase $remote $branch; then git config oh-my-zsh.lastVersion "$last_commit" # Print changelog to the terminal - if [[ interactive == true && $verbose_mode == default ]] ; then + if [[ $interactive == true && $verbose_mode == default ]]; then "$ZSH/tools/changelog.sh" HEAD "$last_commit" fi From 6ef236dd99f2090b54911f9135d00ac37d6757ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sat, 1 Apr 2023 10:14:18 +0200 Subject: [PATCH 240/253] fix(updater): search for upstream remote if using non-conventional name (#11135) Fixes #11135 --- tools/upgrade.sh | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/tools/upgrade.sh b/tools/upgrade.sh index d9a372d13..34ff3f027 100755 --- a/tools/upgrade.sh +++ b/tools/upgrade.sh @@ -1,5 +1,7 @@ #!/usr/bin/env zsh +local ret=0 # exit code + # Protect against running with shells other than zsh if [ -z "$ZSH_VERSION" ]; then exec zsh "$0" "$@" @@ -181,17 +183,23 @@ fi # Update upstream remote to ohmyzsh org git remote -v | while read remote url extra; do case "$url" in - https://github.com/robbyrussell/oh-my-zsh(|.git)) - git remote set-url "$remote" "https://github.com/ohmyzsh/ohmyzsh.git" - break ;; - git@github.com:robbyrussell/oh-my-zsh(|.git)) - git remote set-url "$remote" "git@github.com:ohmyzsh/ohmyzsh.git" - break ;; - # Update out-of-date "unauthenticated git protocol on port 9418" to https git://github.com/robbyrussell/oh-my-zsh(|.git)) - git remote set-url "$remote" "https://github.com/ohmyzsh/ohmyzsh.git" - break ;; + # Update out-of-date "unauthenticated git protocol on port 9418" to https + git remote set-url "$remote" "https://github.com/ohmyzsh/ohmyzsh.git" ;; + https://github.com/robbyrussell/oh-my-zsh(|.git)) + git remote set-url "$remote" "https://github.com/ohmyzsh/ohmyzsh.git" ;; + git@github.com:robbyrussell/oh-my-zsh(|.git)) + git remote set-url "$remote" "git@github.com:ohmyzsh/ohmyzsh.git" ;; + https://github.com/ohmyzsh/ohmyzsh(|.git)) ;; + git@github.com:ohmyzsh/ohmyzsh(|.git)) ;; + *) continue ;; esac + + # If we reach this point we have found the proper ohmyzsh upstream remote. If we don't, + # we'll only update from the set remote if `oh-my-zsh.remote` has been set to a remote, + # as when installing from a fork. + git config --local oh-my-zsh.remote "$remote" + break done # Set git-config values known to fix git errors From 68005b887055ddd1c6d3fd1381b6eb7b786a0a38 Mon Sep 17 00:00:00 2001 From: Saverio Guzzo Date: Sun, 2 Apr 2023 12:54:55 +0200 Subject: [PATCH 241/253] docs(spotify): fix link (#11593) --- plugins/macos/spotify | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/macos/spotify b/plugins/macos/spotify index 491a60686..5fb40517c 100644 --- a/plugins/macos/spotify +++ b/plugins/macos/spotify @@ -43,7 +43,7 @@ showAPIHelp() { echo " find music by name. It is very likely you want this feature!"; echo; echo " To get this to work, you need to sign up (or in) and create an 'Application' at:"; - echo " https://developer.spotify.com/my-applications/#!/applications/create"; + echo " https://developer.spotify.com/dashboard/create"; echo; echo " Once you've created an application, find the 'Client ID' and 'Client Secret'"; echo " values, and enter them into your shpotify config file at '${USER_CONFIG_FILE}'"; From f7d903f3a31567f326d0f8ec2414722d0e3b992a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sun, 2 Apr 2023 13:40:49 +0200 Subject: [PATCH 242/253] fix(vi-mode): fix cursor change on visual mode (#11586) Fixes #11586 --- plugins/vi-mode/vi-mode.plugin.zsh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh index d44be69d4..cc9817a74 100644 --- a/plugins/vi-mode/vi-mode.plugin.zsh +++ b/plugins/vi-mode/vi-mode.plugin.zsh @@ -43,6 +43,13 @@ function _vi-mode-set-cursor-shape-for-keymap() { printf $'\e[%d q' "${_shape}" } +function _visual-mode { + typeset -g VI_KEYMAP=visual + _vi-mode-set-cursor-shape-for-keymap "$VI_KEYMAP" + zle .visual-mode +} +zle -N visual-mode _visual-mode + function _vi-mode-should-reset-prompt() { # If $VI_MODE_RESET_PROMPT_ON_MODE_CHANGE is unset (default), dynamically # check whether we're using the prompt to display vi-mode info From 75405b7b0ae03a1fdf2fdb172d2a50cd5f570162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sun, 2 Apr 2023 14:28:01 +0200 Subject: [PATCH 243/253] feat(extract): always extract files into its own folder (#11596) --- plugins/extract/extract.plugin.zsh | 84 ++++++++++++++++++------------ 1 file changed, 51 insertions(+), 33 deletions(-) diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index 7b7a2fa4f..c416f49ce 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -29,61 +29,79 @@ EOF local success=0 local extract_dir="${1:t:r}" local file="$1" full_path="${1:A}" + + # Create an extraction directory based on the file name + command mkdir -p "$extract_dir" + builtin cd -q "$extract_dir" + case "${file:l}" in (*.tar.gz|*.tgz) - (( $+commands[pigz] )) && { tar -I pigz -xvf "$file" } || tar zxvf "$file" ;; + (( $+commands[pigz] )) && { tar -I pigz -xvf "$full_path" } || tar zxvf "$full_path" ;; (*.tar.bz2|*.tbz|*.tbz2) - (( $+commands[pbzip2] )) && { tar -I pbzip2 -xvf "$file" } || tar xvjf "$file" ;; + (( $+commands[pbzip2] )) && { tar -I pbzip2 -xvf "$full_path" } || tar xvjf "$full_path" ;; (*.tar.xz|*.txz) - (( $+commands[pixz] )) && { tar -I pixz -xvf "$file" } || { + (( $+commands[pixz] )) && { tar -I pixz -xvf "$full_path" } || { tar --xz --help &> /dev/null \ - && tar --xz -xvf "$file" \ - || xzcat "$file" | tar xvf - } ;; + && tar --xz -xvf "$full_path" \ + || xzcat "$full_path" | tar xvf - } ;; (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \ - && tar --lzma -xvf "$file" \ - || lzcat "$file" | tar xvf - ;; + && tar --lzma -xvf "$full_path" \ + || lzcat "$full_path" | tar xvf - ;; (*.tar.zst|*.tzst) tar --zstd --help &> /dev/null \ - && tar --zstd -xvf "$file" \ - || zstdcat "$file" | tar xvf - ;; - (*.tar) tar xvf "$file" ;; - (*.tar.lz) (( $+commands[lzip] )) && tar xvf "$file" ;; - (*.tar.lz4) lz4 -c -d "$file" | tar xvf - ;; - (*.tar.lrz) (( $+commands[lrzuntar] )) && lrzuntar "$file" ;; - (*.gz) (( $+commands[pigz] )) && pigz -dk "$file" || gunzip -k "$file" ;; - (*.bz2) bunzip2 "$file" ;; - (*.xz) unxz "$file" ;; - (*.lrz) (( $+commands[lrunzip] )) && lrunzip "$file" ;; - (*.lz4) lz4 -d "$file" ;; - (*.lzma) unlzma "$file" ;; - (*.z) uncompress "$file" ;; - (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$file" -d "$extract_dir" ;; - (*.rar) unrar x -ad "$file" ;; + && tar --zstd -xvf "$full_path" \ + || zstdcat "$full_path" | tar xvf - ;; + (*.tar) tar xvf "$full_path" ;; + (*.tar.lz) (( $+commands[lzip] )) && tar xvf "$full_path" ;; + (*.tar.lz4) lz4 -c -d "$full_path" | tar xvf - ;; + (*.tar.lrz) (( $+commands[lrzuntar] )) && lrzuntar "$full_path" ;; + (*.gz) (( $+commands[pigz] )) && pigz -dk "$full_path" || gunzip -k "$full_path" ;; + (*.bz2) bunzip2 "$full_path" ;; + (*.xz) unxz "$full_path" ;; + (*.lrz) (( $+commands[lrunzip] )) && lrunzip "$full_path" ;; + (*.lz4) lz4 -d "$full_path" ;; + (*.lzma) unlzma "$full_path" ;; + (*.z) uncompress "$full_path" ;; + (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$full_path" ;; + (*.rar) unrar x -ad "$full_path" ;; (*.rpm) - command mkdir -p "$extract_dir" && builtin cd -q "$extract_dir" \ - && rpm2cpio "$full_path" | cpio --quiet -id ;; - (*.7z) 7za x "$file" ;; + rpm2cpio "$full_path" | cpio --quiet -id ;; + (*.7z) 7za x "$full_path" ;; (*.deb) - command mkdir -p "$extract_dir/control" "$extract_dir/data" - builtin cd -q "$extract_dir"; ar vx "$full_path" > /dev/null + command mkdir -p "control" "data" + ar vx "$full_path" > /dev/null builtin cd -q control; extract ../control.tar.* builtin cd -q ../data; extract ../data.tar.* builtin cd -q ..; command rm *.tar.* debian-binary ;; - (*.zst) unzstd "$file" ;; - (*.cab) cabextract -d "$extract_dir" "$file" ;; - (*.cpio|*.obscpio) cpio -idmvF "$file" ;; - (*.zpaq) zpaq x "$file" ;; + (*.zst) unzstd "$full_path" ;; + (*.cab) cabextract "$full_path" ;; + (*.cpio|*.obscpio) cpio -idmvF "$full_path" ;; + (*.zpaq) zpaq x "$full_path" ;; (*) echo "extract: '$file' cannot be extracted" >&2 success=1 ;; esac (( success = success > 0 ? success : $? )) - (( success == 0 && remove_archive == 0 )) && rm "$full_path" + (( success == 0 && remove_archive == 0 )) && command rm "$full_path" shift - # Go back to original working directory in case we ran cd previously + # Go back to original working directory + # and remove extraction directory if there was an error builtin cd -q "$pwd" + (( success > 0 )) && command rm -r "$extract_dir" + + # If content of extract dir is a single directory, move its contents up + # Glob flags: + # - D: include files starting with . + # - N: no error if directory is empty + # - Y2: at most give 2 files + local -a content + content=("${extract_dir}"/*(DNY2)) + if [[ ${#content} -eq 1 && -d "${content[1]}" ]]; then + command mv -f "${content[1]}" . + command rmdir "$extract_dir" + fi done } From d47e1d65f66f9bb2e7a96ba58797b33f0e91a623 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sun, 2 Apr 2023 16:33:54 +0200 Subject: [PATCH 244/253] fix(extract): safely remove extract directory The previous code would remove the extract directory if the command failed. This could be bad because we're not checking if the extract directory already existed (since we're using `mkdir -p`), so it could be possible that the extract operation failed, and we'd be removing a directory that already existed and had files in it. This change only removes the directory if there are no files in it, regardless of whether the extract operation was successful or not. This is much safer. --- plugins/extract/extract.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index c416f49ce..40e67575f 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -88,9 +88,7 @@ EOF shift # Go back to original working directory - # and remove extraction directory if there was an error builtin cd -q "$pwd" - (( success > 0 )) && command rm -r "$extract_dir" # If content of extract dir is a single directory, move its contents up # Glob flags: @@ -102,6 +100,8 @@ EOF if [[ ${#content} -eq 1 && -d "${content[1]}" ]]; then command mv -f "${content[1]}" . command rmdir "$extract_dir" + elif [[ ${#content} -eq 0 ]]; then + command rmdir "$extract_dir" fi done } From f8bf88edca7a3246e065f13cefac2c5f1ab396e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 3 Apr 2023 22:21:49 +0200 Subject: [PATCH 245/253] chore(installer): remove words triggering false positives in antiviruses --- tools/install.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index efdb7d482..fcfbcf778 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -84,8 +84,7 @@ command_exists() { user_can_sudo() { # Check if sudo is installed command_exists sudo || return 1 - # Termux can't run sudo unless the device is rooted. Either way, `chsh` works - # without sudo, so we can detect it and exit the function early. + # Termux can't run sudo, so we can detect it and exit the function early. case "$PREFIX" in *com.termux*) return 1 ;; esac From 1ad167dfac325a9f92e0693c70d0ab3f7c4c574b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 3 Apr 2023 23:14:36 +0200 Subject: [PATCH 246/253] feat(init)!: allow turning off aliases for libs and plugins (#11550) BREAKING CHANGE: the previous zstyle setting to disable `lib/directories.zsh` aliases has been changed to the new syntax: `zstyle ':omz:lib:directories' aliases no`. See https://github.com/ohmyzsh/ohmyzsh#skip-aliases to see other ways you can use this setting. Co-authored-by: Carlo Sala --- README.md | 54 ++++++++++++++++++++++++++++++++++++++++----- lib/directories.zsh | 6 ----- oh-my-zsh.sh | 45 ++++++++++++++++++++++++++++++------- 3 files changed, 86 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 4f0aeb7b4..556d4c8c5 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,9 @@ To learn more, visit [ohmyz.sh](https://ohmyz.sh), follow [@ohmyzsh](https://twi - [Manual Installation](#manual-installation) - [Installation Problems](#installation-problems) - [Custom Plugins and Themes](#custom-plugins-and-themes) + - [Skip aliases](#skip-aliases) - [Getting Updates](#getting-updates) + - [Updates verbosity](#updates-verbosity) - [Manual Updates](#manual-updates) - [Uninstalling Oh My Zsh](#uninstalling-oh-my-zsh) - [How do I contribute to Oh My Zsh?](#how-do-i-contribute-to-oh-my-zsh) @@ -276,16 +278,58 @@ If you have many functions that go well together, you can put them as a `XYZ.plu If you would like to override the functionality of a plugin distributed with Oh My Zsh, create a plugin of the same name in the `custom/plugins/` directory and it will be loaded instead of the one in `plugins/`. -### Remove directories aliases +### Skip aliases -If you want to skip ohmyzsh default -[directories aliases](https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/directories.zsh) you can add the -following snippet to your `zshrc`, before loading `oh-my-zsh.sh` script: + -```zsh +If you want to skip default Oh My Zsh aliases (those defined in `lib/*` files) or plugin aliases, +you can use the settings below in your `~/.zshrc` file, **before Oh My Zsh is loaded**. Note that +there are many different ways to skip aliases, depending on your needs. + +```sh +# Skip all aliases, in lib files and enabled plugins +zstyle ':omz:*' aliases no + +# Skip all aliases in lib files +zstyle ':omz:lib:*' aliases no +# Skip only aliases defined in the directories.zsh lib file +zstyle ':omz:lib:directories' aliases no + +# Skip all plugin aliases +zstyle ':omz:plugins:*' aliases no +# Skip only the aliases from the git plugin +zstyle ':omz:plugins:git' aliases no +``` + +You can combine these in other ways taking into account that more specific scopes takes precedence: + +```sh +# Skip all plugin aliases, except for the git plugin +zstyle ':omz:plugins:*' aliases no +zstyle ':omz:plugins:git' aliases yes +``` + +A previous version of this feature was using the setting below, which has been removed: + +```sh zstyle ':omz:directories' aliases no ``` +Instead, you can now use the following: + +```sh +zstyle ':omz:lib:directories' aliases no +``` + +#### Notice + +> This feature is currently in a testing phase and it may be subject to change in the future. +> It is also not currently compatible with plugin managers such as zpm or zinit, which don't +> source the init script (`oh-my-zsh.sh`) where this feature is implemented in. + +> It is also not currently aware of "aliases" that are defined as functions. Example of such +> are `gccd`, `ggf`, or `ggl` functions from the git plugin. + ## Getting Updates By default, you will be prompted to check for updates every 2 weeks. You can choose other update modes by adding a line to your `~/.zshrc` file, **before Oh My Zsh is loaded**: diff --git a/lib/directories.zsh b/lib/directories.zsh index 13b680c19..8927a56ad 100644 --- a/lib/directories.zsh +++ b/lib/directories.zsh @@ -4,12 +4,6 @@ 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 ....='../../..' diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index 363cfca8b..20d2e354c 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -146,22 +146,51 @@ if command mkdir "${ZSH_COMPDUMP}.lock" 2>/dev/null; then command rm -rf "$ZSH_COMPDUMP.zwc.old" "${ZSH_COMPDUMP}.lock" fi +_omz_source() { + local context filepath="$1" + + # Construct zstyle context based on path + case "$filepath" in + lib/*) context="lib:${filepath:t:r}" ;; # :t = lib_name.zsh, :r = lib_name + plugins/*) context="plugins:${filepath:h2:t}" ;; # :h2 = plugins/plugin_name, :t = plugin_name + esac + + local disable_aliases=0 + zstyle -T ":omz:${context}" aliases || disable_aliases=1 + + # Back up alias names prior to sourcing + local -a aliases_pre galiases_pre + if (( disable_aliases )); then + aliases_pre=("${(@k)aliases}") + galiases_pre=("${(@k)galiases}") + fi + + # Source file from $ZSH_CUSTOM if it exists, otherwise from $ZSH + if [[ -f "$ZSH_CUSTOM/$filepath" ]]; then + source "$ZSH_CUSTOM/$filepath" + elif [[ -f "$ZSH/$filepath" ]]; then + source "$ZSH/$filepath" + fi + + # Unset all aliases that don't appear in the backed up list of aliases + if (( disable_aliases )); then + local -a disabled + # ${var:|array} gets the list of items in var not in array + disabled=("${(@k)aliases:|aliases_pre}" "${(@k)galiases:|galiases_pre}") + (( $#disabled == 0 )) || unalias "${(@)disabled}" + fi +} + # Load all of the config files in ~/oh-my-zsh that end in .zsh # TIP: Add files you don't want in git to .gitignore for config_file ("$ZSH"/lib/*.zsh); do - custom_config_file="$ZSH_CUSTOM/lib/${config_file:t}" - [[ -f "$custom_config_file" ]] && config_file="$custom_config_file" - source "$config_file" + _omz_source "${config_file:t2}" done unset custom_config_file # Load all of the plugins that were defined in ~/.zshrc for plugin ($plugins); do - if [[ -f "$ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh" ]]; then - source "$ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh" - elif [[ -f "$ZSH/plugins/$plugin/$plugin.plugin.zsh" ]]; then - source "$ZSH/plugins/$plugin/$plugin.plugin.zsh" - fi + _omz_source "plugins/$plugin/$plugin.plugin.zsh" done unset plugin From c7bb88f9ad3eb742aecca2e36b615819cead10f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 3 Apr 2023 23:27:14 +0200 Subject: [PATCH 247/253] fix(changelog): ignore lines containing whitespace in breaking change commits --- tools/changelog.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/changelog.sh b/tools/changelog.sh index 5f7a14d03..1af74e42d 100755 --- a/tools/changelog.sh +++ b/tools/changelog.sh @@ -106,6 +106,9 @@ function parse-commit { message="${match[1]}" # remove CR characters (might be inserted in GitHub UI commit description form) message="${message//$'\r'/}" + # remove lines containing only whitespace + local nlnl=$'\n\n' + message="${message//$'\n'[[:space:]]##$'\n'/$nlnl}" # skip next paragraphs (separated by two newlines or more) message="${message%%$'\n\n'*}" # ... and replace newlines with spaces From 9233ef75f28423d147a2f9f64a45a77b1886ee5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 3 Apr 2023 23:36:44 +0200 Subject: [PATCH 248/253] fix(init): don't use digits in parameter modifiers for compatibility (#11598) Digit modifiers were introduced in zsh 5.7.1 [1]. This commit uses readily available alternatives for backwards compatibility. [1] https://github.com/zsh-users/zsh/commit/b8dc5a7f6d Fixes #11598 --- oh-my-zsh.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index 20d2e354c..e047d4834 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -151,8 +151,8 @@ _omz_source() { # Construct zstyle context based on path case "$filepath" in - lib/*) context="lib:${filepath:t:r}" ;; # :t = lib_name.zsh, :r = lib_name - plugins/*) context="plugins:${filepath:h2:t}" ;; # :h2 = plugins/plugin_name, :t = plugin_name + lib/*) context="lib:${filepath:t:r}" ;; # :t = lib_name.zsh, :r = lib_name + plugins/*) context="plugins:${filepath:h:t}" ;; # :h = plugins/plugin_name, :t = plugin_name esac local disable_aliases=0 @@ -184,7 +184,7 @@ _omz_source() { # Load all of the config files in ~/oh-my-zsh that end in .zsh # TIP: Add files you don't want in git to .gitignore for config_file ("$ZSH"/lib/*.zsh); do - _omz_source "${config_file:t2}" + _omz_source "lib/${config_file:t}" done unset custom_config_file From 8d23fbd6964b8446bbc73ff04507362d1fd49eb5 Mon Sep 17 00:00:00 2001 From: Christian Parpart Date: Tue, 4 Apr 2023 16:47:13 +0200 Subject: [PATCH 249/253] feat(termsupport): add contour terminal (#11599) Signed-off-by: Christian Parpart --- lib/termsupport.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh index 80ca7ef78..5bc418761 100644 --- a/lib/termsupport.zsh +++ b/lib/termsupport.zsh @@ -17,7 +17,7 @@ function title { : ${2=$1} case "$TERM" in - cygwin|xterm*|putty*|rxvt*|konsole*|ansi|mlterm*|alacritty|st*|foot) + cygwin|xterm*|putty*|rxvt*|konsole*|ansi|mlterm*|alacritty|st*|foot|contour*) print -Pn "\e]2;${2:q}\a" # set window name print -Pn "\e]1;${1:q}\a" # set tab name ;; From 33aadeced0bf17b8abc7d680b424de7c5e71dd45 Mon Sep 17 00:00:00 2001 From: Richard Mitchell Date: Tue, 4 Apr 2023 17:52:16 -0400 Subject: [PATCH 250/253] feat(term_tab): add support for macOS (#11391) --- plugins/term_tab/term_tab.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/term_tab/term_tab.plugin.zsh b/plugins/term_tab/term_tab.plugin.zsh index 1b612df68..89acd9103 100644 --- a/plugins/term_tab/term_tab.plugin.zsh +++ b/plugins/term_tab/term_tab.plugin.zsh @@ -28,6 +28,7 @@ function _term_list(){ case $OSTYPE in solaris*) dirs=( ${(M)${${(f)"$(pgrep -U $UID -x zsh|xargs pwdx)"}:#$$:*}%%/*} ) ;; linux*) dirs=( /proc/${^$(pidof zsh):#$$}/cwd(N:A) ) ;; + darwin*) dirs=( $( lsof -d cwd -c zsh -a -w -Fn | sed -n 's/^n//p' ) ) ;; esac dirs=( ${(D)dirs} ) From 25c2c3a4683be60c3526858be960ee6ce1249245 Mon Sep 17 00:00:00 2001 From: Alexander Schlarb Date: Sun, 16 May 2021 18:58:38 +0200 Subject: [PATCH 251/253] feat(lib): send OSC 7 on directory change for more supported terminals (#9914) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously this was only emitted on macOS with Apple's Terminal.app (and compatible clones like iTerm2), but it is used by other terminal emulators as well to obtain the actual current working directory wiht symlinks intact. All non-supporting terminal emulators tested gracefully ignored this value, so emit this on these as well in case they (or some other app masquarading as them) add future support for this value. Closes #9914 Co-authored-by: Marc Cornellà --- lib/termsupport.zsh | 70 ++++++++++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh index 5bc418761..cf8f08741 100644 --- a/lib/termsupport.zsh +++ b/lib/termsupport.zsh @@ -109,28 +109,52 @@ if [[ -z "$INSIDE_EMACS" || "$INSIDE_EMACS" = vterm ]]; then add-zsh-hook preexec omz_termsupport_preexec fi -# Keep Apple Terminal.app's current working directory updated -# Based on this answer: https://superuser.com/a/315029 -# With extra fixes to handle multibyte chars and non-UTF-8 locales +# Keep terminal emulator's current working directory correct, +# even if the current working directory path contains symbolic links +# +# References: +# - Apple's Terminal.app: https://superuser.com/a/315029 +# - iTerm2: https://iterm2.com/documentation-escape-codes.html (iTerm2 Extension / CurrentDir+RemoteHost) +# - Konsole: https://bugs.kde.org/show_bug.cgi?id=327720#c1 +# - libvte (gnome-terminal, mate-terminal, …): https://bugzilla.gnome.org/show_bug.cgi?id=675987#c14 +# Apparently it had a bug before ~2012 were it would display the unknown OSC 7 code +# +# As of May 2021 mlterm, PuTTY, rxvt, screen, termux & xterm simply ignore the unknown OSC. -if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then - # Emits the control sequence to notify Terminal.app of the cwd - # Identifies the directory using a file: URI scheme, including - # the host name to disambiguate local vs. remote paths. - function update_terminalapp_cwd() { - emulate -L zsh - - # Percent-encode the host and path names. - local URL_HOST URL_PATH - URL_HOST="$(omz_urlencode -P $HOST)" || return 1 - URL_PATH="$(omz_urlencode -P $PWD)" || return 1 - - # Undocumented Terminal.app-specific control sequence - printf '\e]7;%s\a' "file://$URL_HOST$URL_PATH" - } - - # Use a precmd hook instead of a chpwd hook to avoid contaminating output - add-zsh-hook precmd update_terminalapp_cwd - # Run once to get initial cwd set - update_terminalapp_cwd +# Don't define the function if we're inside Emacs +if [[ -n "$INSIDE_EMACS" ]]; then + return fi + +# Don't define the function if we're in an unsupported terminal +case "$TERM" in + # all of these either process OSC 7 correctly or ignore entirely + xterm*|putty*|rxvt*|konsole*|mlterm*|alacritty|screen*|tmux*) ;; + contour*|foot*) ;; + *) + # Terminal.app and iTerm2 process OSC 7 correctly + case "$TERM_PROGRAM" in + Apple_Terminal|iTerm.app) ;; + *) return ;; + esac ;; +esac + +# Emits the control sequence to notify many terminal emulators +# of the cwd +# +# Identifies the directory using a file: URI scheme, including +# the host name to disambiguate local vs. remote paths. +function omz_termsupport_cwd { + # Percent-encode the host and path names. + local URL_HOST URL_PATH + URL_HOST="$(omz_urlencode -P $HOST)" || return 1 + URL_PATH="$(omz_urlencode -P $PWD)" || return 1 + + # common control sequence (OSC 7) to set current host and path + printf "\e]7;%s\a" "file://${URL_HOST}${URL_PATH}" +} + +# Use a precmd hook instead of a chpwd hook to avoid contaminating output +# i.e. when a script or function changes directory without `cd -q`, chpwd +# will be called the output may be swallowed by the script or function. +add-zsh-hook precmd omz_termsupport_cwd From cf0c80049288d1029aee824bf975016c4201a3ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20M?= Date: Thu, 6 Apr 2023 15:11:52 +0200 Subject: [PATCH 252/253] feat(toolbox)!: rename and add aliases (#11580) --- plugins/toolbox/README.md | 3 ++- plugins/toolbox/toolbox.plugin.zsh | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/toolbox/README.md b/plugins/toolbox/README.md index abaca31f4..bc04a906b 100644 --- a/plugins/toolbox/README.md +++ b/plugins/toolbox/README.md @@ -22,4 +22,5 @@ RPROMPT='$(toolbox_prompt_info)' | Alias | Command | Description | |-------|----------------------|----------------------------------------| -| tb | `toolbox enter` | Enters the toolbox environment | +| tbe | `toolbox enter` | Enters the toolbox environment | +| tbr | `toolbox run` | Run a command in an existing toolbox | diff --git a/plugins/toolbox/toolbox.plugin.zsh b/plugins/toolbox/toolbox.plugin.zsh index d24d6d396..377e498cd 100644 --- a/plugins/toolbox/toolbox.plugin.zsh +++ b/plugins/toolbox/toolbox.plugin.zsh @@ -2,4 +2,5 @@ function toolbox_prompt_info() { [[ -f /run/.toolboxenv ]] && echo "⬢" } -alias tb="toolbox enter" +alias tbe="toolbox enter" +alias tbr="toolbox run" From 49d34d00cdaf132f318700398bf42120ff1af8e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Thu, 6 Apr 2023 21:06:16 +0200 Subject: [PATCH 253/253] fix(extract): fix conflict if compressed file has a folder of the same name This change fixes the case where the compressed file (e.g. tools.tgz) only contains a folder with the same name (e.g. tools) in its root folder. tools.tgz: |- tools |- fileA.txt |- fileB.txt \- fileC.txt In that case, the "smart" folder creation mechanism will extract the files in a folder "tools", and this extraction folder will contain a single folder with the same name. Before this fix, the tool would try to move out the inside folder to the parent one, but there would already be a folder named "tools", so it would generate a conflict. This change first renames the inside folder to a random string, and only then it is moved outside and the old extraction folder is deleted. --- plugins/extract/extract.plugin.zsh | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh index 40e67575f..34c080653 100644 --- a/plugins/extract/extract.plugin.zsh +++ b/plugins/extract/extract.plugin.zsh @@ -98,8 +98,22 @@ EOF local -a content content=("${extract_dir}"/*(DNY2)) if [[ ${#content} -eq 1 && -d "${content[1]}" ]]; then - command mv -f "${content[1]}" . - command rmdir "$extract_dir" + # The extracted folder (${content[1]}) may have the same name as $extract_dir + # If so, we need to rename it to avoid conflicts in a 3-step process + # + # 1. Move and rename the extracted folder to a temporary random name + # 2. Delete the empty folder + # 3. Rename the extracted folder to the original name + if [[ "${content[1]:t}" == "$extract_dir" ]]; then + # =(:) gives /tmp/zsh, with :t it gives zsh + local tmp_dir==(:); tmp_dir="${tmp_dir:t}" + command mv -f "${content[1]}" "$tmp_dir" \ + && command rmdir "$extract_dir" \ + && command mv -f "$tmp_dir" "$extract_dir" + else + command mv -f "${content[1]}" . \ + && command rmdir "$extract_dir" + fi elif [[ ${#content} -eq 0 ]]; then command rmdir "$extract_dir" fi

f=CWdPA=9AaOYMPj`A?N47g{?n)P??- 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%0D5oZ=+P}y>x1~(3fWb_GQQk3k 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