Merge branch 'ohmyzsh:master' into tmux_sessiongroup

This commit is contained in:
kjelderg 2023-11-08 23:19:50 -05:00 committed by GitHub
commit f2a2816629
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 435 additions and 280 deletions

View file

@ -3,9 +3,9 @@ on:
workflow_dispatch: {} workflow_dispatch: {}
push: push:
paths: paths:
- tools/install.sh - 'tools/install.sh'
- .github/workflows/installer - '.github/workflows/installer/**'
- .github/workflows/installer.yml - '.github/workflows/installer.yml'
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}

View file

@ -2,7 +2,16 @@
"headers": [ "headers": [
{ {
"source": "/((?!favicon.ico).*)", "source": "/((?!favicon.ico).*)",
"headers": [{ "key": "Content-Type", "value": "text/plain" }] "headers": [
{
"key": "Content-Type",
"value": "text/plain"
},
{
"key": "Content-Disposition",
"value": "inline; filename=\"install.sh\""
}
]
} }
], ],
"rewrites": [ "rewrites": [

View file

@ -17,7 +17,6 @@ To learn more, visit [ohmyz.sh](https://ohmyz.sh), follow [@ohmyzsh](https://twi
[![Mastodon Follow](https://img.shields.io/mastodon/follow/111169632522566717?label=%40ohmyzsh&domain=https%3A%2F%2Fmstdn.social&logo=mastodon&style=flat)](https://mstdn.social/@ohmyzsh) [![Mastodon Follow](https://img.shields.io/mastodon/follow/111169632522566717?label=%40ohmyzsh&domain=https%3A%2F%2Fmstdn.social&logo=mastodon&style=flat)](https://mstdn.social/@ohmyzsh)
[![Discord server](https://img.shields.io/discord/642496866407284746)](https://discord.gg/ohmyzsh) [![Discord server](https://img.shields.io/discord/642496866407284746)](https://discord.gg/ohmyzsh)
[![Gitpod ready](https://img.shields.io/badge/Gitpod-ready-blue?logo=gitpod)](https://gitpod.io/#https://github.com/ohmyzsh/ohmyzsh) [![Gitpod ready](https://img.shields.io/badge/Gitpod-ready-blue?logo=gitpod)](https://gitpod.io/#https://github.com/ohmyzsh/ohmyzsh)
[![huntr.dev](https://cdn.huntr.dev/huntr_security_badge_mono.svg)](https://huntr.dev/bounties/disclose/?utm_campaign=ohmyzsh%2Fohmyzsh&utm_medium=social&utm_source=github&target=https%3A%2F%2Fgithub.com%2Fohmyzsh%2Fohmyzsh)
<details> <details>
<summary>Table of Contents</summary> <summary>Table of Contents</summary>

View file

@ -17,8 +17,7 @@ In the near future we will introduce versioning, so expect this section to chang
**Do not submit an issue or pull request**: this might reveal the vulnerability. **Do not submit an issue or pull request**: this might reveal the vulnerability.
Instead, you should email the maintainers directly at: [**security@ohmyz.sh**](mailto:security@ohmyz.sh). Instead, you should email the maintainers directly at: [**security@ohmyz.sh**](mailto:security@ohmyz.sh),
or using the link to [privately report a vulnerability with GitHub](https://github.com/ohmyzsh/ohmyzsh/security/advisories/new).
We will deal with the vulnerability privately and submit a patch as soon as possible. We will deal with the vulnerability privately and submit a patch as soon as possible.
You can also submit your vulnerability report to [huntr.dev](https://huntr.dev/bounties/disclose/?utm_campaign=ohmyzsh%2Fohmyzsh&utm_medium=social&utm_source=github&target=https%3A%2F%2Fgithub.com%2Fohmyzsh%2Fohmyzsh) and see if you can get a bounty reward.

View file

@ -151,7 +151,7 @@ function omz_termsupport_cwd {
URL_PATH="$(omz_urlencode -P $PWD)" || return 1 URL_PATH="$(omz_urlencode -P $PWD)" || return 1
# Konsole errors if the HOST is provided # Konsole errors if the HOST is provided
[[ -z "$KONSOLE_VERSION" ]] || URL_HOST="" [[ -z "$KONSOLE_PROFILE_NAME" && -z "$KONSOLE_DBUS_SESSION" ]] || URL_HOST=""
# common control sequence (OSC 7) to set current host and path # common control sequence (OSC 7) to set current host and path
printf "\e]7;file://%s%s\e\\" "${URL_HOST}" "${URL_PATH}" printf "\e]7;file://%s%s\e\\" "${URL_HOST}" "${URL_PATH}"

View file

@ -1,4 +1,4 @@
#compdef bazel #compdef bazel bazelisk
# Copyright 2015 The Bazel Authors. All rights reserved. # Copyright 2015 The Bazel Authors. All rights reserved.
# #

View file

@ -3,9 +3,10 @@
for file ( for file (
# Arch Linux. Must have pkgfile installed: https://wiki.archlinux.org/index.php/Pkgfile#Command_not_found # Arch Linux. Must have pkgfile installed: https://wiki.archlinux.org/index.php/Pkgfile#Command_not_found
/usr/share/doc/pkgfile/command-not-found.zsh /usr/share/doc/pkgfile/command-not-found.zsh
# macOS (M1 and classic Homebrew): https://github.com/Homebrew/homebrew-command-not-found # Homebrew: https://github.com/Homebrew/homebrew-command-not-found
/opt/homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh /opt/homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh /usr/local/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh
/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh
); do ); do
if [[ -r "$file" ]]; then if [[ -r "$file" ]]; then
source "$file" source "$file"

View file

@ -3,7 +3,7 @@ command -v direnv &>/dev/null || return
_direnv_hook() { _direnv_hook() {
trap -- '' SIGINT; trap -- '' SIGINT;
eval "$(direnv export zsh)"; eval "$(direnv hook zsh)";
trap - SIGINT; trap - SIGINT;
} }
typeset -ag precmd_functions; typeset -ag precmd_functions;

View file

@ -9,7 +9,7 @@ function fwl () {
zones=("${(@f)$(sudo firewall-cmd --get-active-zones | grep -v 'interfaces\|sources')}") zones=("${(@f)$(sudo firewall-cmd --get-active-zones | grep -v 'interfaces\|sources')}")
for i in $zones; do for i in $zones; do
sudo firewall-cmd --zone $i --list-all sudo firewall-cmd --zone ${i/ \(default\)} --list-all
done done
echo 'Direct Rules:' echo 'Direct Rules:'

View file

@ -29,7 +29,7 @@ function git-fetch-all {
date -R &>! "$gitdir/FETCH_LOG" date -R &>! "$gitdir/FETCH_LOG"
GIT_SSH_COMMAND="command ssh -o BatchMode=yes" \ GIT_SSH_COMMAND="command ssh -o BatchMode=yes" \
GIT_TERMINAL_PROMPT=0 \ GIT_TERMINAL_PROMPT=0 \
command git fetch --all 2>/dev/null &>> "$gitdir/FETCH_LOG" command git fetch --all --recurse-submodules=yes 2>/dev/null &>> "$gitdir/FETCH_LOG"
) &| ) &|
} }

View file

@ -10,7 +10,7 @@ plugins=(... git-commit)
## Syntax ## Syntax
```zshrc ```zsh
git <type> [(-s, --scope) "<scope>"] "<message>" git <type> [(-s, --scope) "<scope>"] "<message>"
``` ```
@ -26,11 +26,17 @@ Where `type` is one of the following:
- `fix` - `fix`
- `perf` - `perf`
- `refactor` - `refactor`
- `revert` - `rev`
- `style` - `style`
- `test` - `test`
> NOTE: the alias for `revert` type is `rev`, as otherwise it conflicts with the git command of the same name.
> It will still generate a commit message in the format `revert: <message>`
## Examples ## Examples
`git style "remove trailing whitespace"` -> `git commit -m "style: remove trailing whitespace"` | Git alias | Command |
`git fix -s "router" "correct redirect link"` -> `git commit -m "fix(router): correct redirect link"` | --------------------------------------------- | ---------------------------------------------------- |
| `git style "remove trailing whitespace"` | `git commit -m "style: remove trailing whitespace"` |
| `git fix -s "router" "correct redirect link"` | `git commit -m "fix(router): correct redirect link"` |
| `git rev -s "api" "rollback v2"` | `git commit -m "revert(api): rollback v2"` |

View file

@ -1,9 +1,3 @@
function _git_commit_register {
if ! git config --global --get-all alias.$1 >/dev/null 2>&1; then
git config --global alias.$1 '!a() { if [ "$1" = "-s" ] || [ "$1" = "--scope" ]; then local scope="$2"; shift 2; git commit -m "'$1'(${scope}): ${@}"; else git commit -m "'$1': ${@}"; fi }; a'
fi
}
local -a _git_commit_aliases local -a _git_commit_aliases
_git_commit_aliases=( _git_commit_aliases=(
'build' 'build'
@ -19,9 +13,19 @@ _git_commit_aliases=(
'test' 'test'
) )
for _alias in "${_git_commit_aliases[@]}"; do local alias type
_git_commit_register $_alias for type in "${_git_commit_aliases[@]}"; do
# an alias can't be named "revert" because the git command takes precedence
# https://stackoverflow.com/a/3538791
case "$type" in
revert) alias=rev ;;
*) alias=$type ;;
esac
local func='!a() { if [ "$1" = "-s" ] || [ "$1" = "--scope" ]; then local scope="$2"; shift 2; git commit -m "'$type'(${scope}): ${@}"; else git commit -m "'$type': ${@}"; fi }; a'
if ! git config --global --get-all alias.${alias} >/dev/null 2>&1; then
git config --global alias.${alias} "$func"
fi
done done
unfunction _git_commit_register unset _git_commit_aliases alias type func
unset _alias

View file

@ -10,207 +10,205 @@ plugins=(... git)
## Aliases ## Aliases
| Alias | Command | | Alias | Command |
| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | :--------------------- | :------------------------------------------------------------------------------------------------------------------------------ |
| `grt` | `cd "$(git rev-parse --show-toplevel \|\| echo .)"` | | `grt` | `cd "$(git rev-parse --show-toplevel \|\| echo .)"` |
| `ggpnp` | `ggl && ggp` | | `ggpnp` | `ggl && ggp` |
| `ggpur` | `ggu` | | `ggpur` | `ggu` |
| `g` | `git` | | `g` | `git` |
| `ga` | `git add` | | `ga` | `git add` |
| `gaa` | `git add --all` | | `gaa` | `git add --all` |
| `gapa` | `git add --patch` | | `gapa` | `git add --patch` |
| `gau` | `git add --update` | | `gau` | `git add --update` |
| `gav` | `git add --verbose` | | `gav` | `git add --verbose` |
| `gwip` | `git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]"` | | `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` | | `gam` | `git am` |
| `gama` | `git am --abort` | | `gama` | `git am --abort` |
| `gamc` | `git am --continue` | | `gamc` | `git am --continue` |
| `gamscp` | `git am --show-current-patch` | | `gamscp` | `git am --show-current-patch` |
| `gams` | `git am --skip` | | `gams` | `git am --skip` |
| `gap` | `git apply` | | `gap` | `git apply` |
| `gapt` | `git apply --3way` | | `gapt` | `git apply --3way` |
| `gbs` | `git bisect` | | `gbs` | `git bisect` |
| `gbsb` | `git bisect bad` | | `gbsb` | `git bisect bad` |
| `gbsg` | `git bisect good` | | `gbsg` | `git bisect good` |
| `gbsn` | `git bisect new` | | `gbsn` | `git bisect new` |
| `gbso` | `git bisect old` | | `gbso` | `git bisect old` |
| `gbsr` | `git bisect reset` | | `gbsr` | `git bisect reset` |
| `gbss` | `git bisect start` | | `gbss` | `git bisect start` |
| `gbl` | `git blame -w` | | `gbl` | `git blame -w` |
| `gb` | `git branch` | | `gb` | `git branch` |
| `gba` | `git branch --all` | | `gba` | `git branch --all` |
| `gbd` | `git branch --delete` | | `gbd` | `git branch --delete` |
| `gbD` | `git branch --delete --force` | | `gbD` | `git branch --delete --force` |
| `gbgd` | `LANG=C git branch --no-color -vv \| grep ": gone\]" \| awk '"'"'{print $1}'"'"' \| xargs git branch -d` | | `gbgd` | `LANG=C git branch --no-color -vv \| grep ": gone\]" \| awk '"'"'{print $1}'"'"' \| xargs git branch -d` |
| `gbgD` | `LANG=C git branch --no-color -vv \| grep ": gone\]" \| awk '"'"'{print $1}'"'"' \| xargs git branch -D` | | `gbgD` | `LANG=C git branch --no-color -vv \| grep ": gone\]" \| awk '"'"'{print $1}'"'"' \| xargs git branch -D` |
| `gbm` | `git branch --move` | | `gbm` | `git branch --move` |
| `gbnm` | `git branch --no-merged` | | `gbnm` | `git branch --no-merged` |
| `gbr` | `git branch --remote` | | `gbr` | `git branch --remote` |
| `ggsup` | `git branch --set-upstream-to=origin/$(git_current_branch)` | | `ggsup` | `git branch --set-upstream-to=origin/$(git_current_branch)` |
| `gbg` | `LANG=C git branch -vv \| grep ": gone\]"` | | `gbg` | `LANG=C git branch -vv \| grep ": gone\]"` |
| `gco` | `git checkout` | | `gco` | `git checkout` |
| `gcor` | `git checkout --recurse-submodules` | | `gcor` | `git checkout --recurse-submodules` |
| `gcb` | `git checkout -b` | | `gcb` | `git checkout -b` |
| `gcd` | `git checkout $(git_develop_branch)` | | `gcd` | `git checkout $(git_develop_branch)` |
| `gcm` | `git checkout $(git_main_branch)` | | `gcm` | `git checkout $(git_main_branch)` |
| `gcp` | `git cherry-pick` | | `gcp` | `git cherry-pick` |
| `gcpa` | `git cherry-pick --abort` | | `gcpa` | `git cherry-pick --abort` |
| `gcpc` | `git cherry-pick --continue` | | `gcpc` | `git cherry-pick --continue` |
| `gclean` | `git clean --interactive -d` | | `gclean` | `git clean --interactive -d` |
| `gcl` | `git clone --recurse-submodules` | | `gcl` | `git clone --recurse-submodules` |
| `gccd` | `git clone --recurse-submodules "$@" && cd "$(basename $\_ .git)"` | | `gccd` | `git clone --recurse-submodules "$@" && cd "$(basename $\_ .git)"` |
| `gcam` | `git commit --all --message` | | `gcam` | `git commit --all --message` |
| `gcas` | `git commit --all --signoff` | | `gcas` | `git commit --all --signoff` |
| `gcasm` | `git commit --all --signoff --message` | | `gcasm` | `git commit --all --signoff --message` |
| `gcmsg` | `git commit --message` | | `gcmsg` | `git commit --message` |
| `gcsm` | `git commit --signoff --message` | | `gcsm` | `git commit --signoff --message` |
| `gc` | `git commit --verbose` | | `gc` | `git commit --verbose` |
| `gca` | `git commit --verbose --all` | | `gca` | `git commit --verbose --all` |
| `gca!` | `git commit --verbose --all --amend` | | `gca!` | `git commit --verbose --all --amend` |
| `gcan!` | `git commit --verbose --all --no-edit --amend` | | `gcan!` | `git commit --verbose --all --no-edit --amend` |
| `gcans!` | `git commit --verbose --all --signoff --no-edit --amend` | | `gcans!` | `git commit --verbose --all --signoff --no-edit --amend` |
| `gc!` | `git commit --verbose --amend` | | `gc!` | `git commit --verbose --amend` |
| `gcn!` | `git commit --verbose --no-edit --amend` | | `gcn!` | `git commit --verbose --no-edit --amend` |
| `gcs` | `git commit -S` | | `gcs` | `git commit -S` |
| `gcss` | `git commit -S -s` | | `gcss` | `git commit -S -s` |
| `gcssm` | `git commit -S -s -m` | | `gcssm` | `git commit -S -s -m` |
| `gcf` | `git config --list` | | `gcf` | `git config --list` |
| `gdct` | `git describe --tags $(git rev-list --tags --max-count=1)` | | `gdct` | `git describe --tags $(git rev-list --tags --max-count=1)` |
| `gd` | `git diff` | | `gd` | `git diff` |
| `gdca` | `git diff --cached` | | `gdca` | `git diff --cached` |
| `gdcw` | `git diff --cached --word-diff` | | `gdcw` | `git diff --cached --word-diff` |
| `gds` | `git diff --staged` | | `gds` | `git diff --staged` |
| `gdw` | `git diff --word-diff` | | `gdw` | `git diff --word-diff` |
| `gdv` | `git diff -w "$@" \| view -` | | `gdv` | `git diff -w "$@" \| view -` |
| `gdup` | `git diff @{upstream}` | | `gdup` | `git diff @{upstream}` |
| `gdnolock` | `git diff $@ ":(exclude)package-lock.json" ":(exclude)\*.lock"` | | `gdnolock` | `git diff $@ ":(exclude)package-lock.json" ":(exclude)\*.lock"` |
| `gdt` | `git diff-tree --no-commit-id --name-only -r` | | `gdt` | `git diff-tree --no-commit-id --name-only -r` |
| `gf` | `git fetch` | | `gf` | `git fetch` |
| `gfa` | `git fetch --all --prune` | | `gfa` | `git fetch --all --prune` |
| `gfo` | `git fetch origin` | | `gfo` | `git fetch origin` |
| `gg` | `git gui citool` | | `gg` | `git gui citool` |
| `gga` | `git gui citool --amend` | | `gga` | `git gui citool --amend` |
| `ghh` | `git help` | | `ghh` | `git help` |
| `glgg` | `git log --graph` | | `glgg` | `git log --graph` |
| `glgga` | `git log --graph --decorate --all` | | `glgga` | `git log --graph --decorate --all` |
| `glgm` | `git log --graph --max-count=10` | | `glgm` | `git log --graph --max-count=10` |
| `glod` | `git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset'` | | `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` | | `glods` | `git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short` |
| `glol` | `git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'` | | `glol` | `git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'` |
| `glola` | `git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --all` | | `glola` | `git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --all` |
| `glols` | `git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --stat` | | `glols` | `git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --stat` |
| `glo` | `git log --oneline --decorate` | | `glo` | `git log --oneline --decorate` |
| `glog` | `git log --oneline --decorate --graph` | | `glog` | `git log --oneline --decorate --graph` |
| `gloga` | `git log --oneline --decorate --graph --all` | | `gloga` | `git log --oneline --decorate --graph --all` |
| `glp` | `git log --pretty=<format>` | | `glp` | `git log --pretty=<format>` |
| `glg` | `git log --stat` | | `glg` | `git log --stat` |
| `glgp` | `git log --stat --patch` | | `glgp` | `git log --stat --patch` |
| `gignored` | `git ls-files -v \| grep "^[[:lower:]]"` | | `gignored` | `git ls-files -v \| grep "^[[:lower:]]"` |
| `gfg` | `git ls-files \| grep` | | `gfg` | `git ls-files \| grep` |
| `gm` | `git merge` | | `gm` | `git merge` |
| `gma` | `git merge --abort` | | `gma` | `git merge --abort` |
| `gms` | `git merge --squash` | | `gms` | `git merge --squash` |
| `gmom` | `git merge origin/$(git_main_branch)` | | `gmom` | `git merge origin/$(git_main_branch)` |
| `gmum` | `git merge upstream/$(git_main_branch)` | | `gmum` | `git merge upstream/$(git_main_branch)` |
| `gmtl` | `git mergetool --no-prompt` | | `gmtl` | `git mergetool --no-prompt` |
| `gmtlvim` | `git mergetool --no-prompt --tool=vimdiff` | | `gmtlvim` | `git mergetool --no-prompt --tool=vimdiff` |
| `gl` | `git pull` | | `gl` | `git pull` |
| `gpr` | `git pull --rebase` | | `gpr` | `git pull --rebase` |
| `gup` | `git pull --rebase` | | `gprv` | `git pull --rebase -v` |
| `gupa` | `git pull --rebase --autostash` | | `gpra` | `git pull --rebase --autostash` |
| `gupav` | `git pull --rebase --autostash --verbose` | | `gprav` | `git pull --rebase --autostash -v` |
| `gupv` | `git pull --rebase --verbose` | | `gprom` | `git pull --rebase origin $(git_main_branch)` |
| `ggu` | `git pull --rebase origin $(current_branch)` | | `gpromi` | `git pull --rebase=interactive origin $(git_main_branch)` |
| `gupom` | `git pull --rebase origin $(git_main_branch)` | | `ggpull` | `git pull origin "$(git_current_branch)"` |
| `gupomi` | `git pull --rebase=interactive origin $(git_main_branch)` | | `ggl` | `git pull origin $(current_branch)` |
| `ggpull` | `git pull origin "$(git_current_branch)"` | | `gluc` | `git pull upstream $(git_current_branch)` |
| `ggl` | `git pull origin $(current_branch)` | | `glum` | `git pull upstream $(git_main_branch)` |
| `gluc` | `git pull upstream $(git_current_branch)` | | `gp` | `git push` |
| `glum` | `git pull upstream $(git_main_branch)` | | `gpd` | `git push --dry-run` |
| `gp` | `git push` | | `gpf!` | `git push --force` |
| `gpd` | `git push --dry-run` | | `ggf` | `git push --force origin $(current_branch)` |
| `gpf!` | `git push --force` | | `gpf` | On Git >= 2.30: `git push --force-with-lease --force-if-includes` |
| `ggf` | `git push --force origin $(current_branch)` | | `gpf` | On Git < 2.30: `git push --force-with-lease` |
| `gpf` | On Git >= 2.30: `git push --force-with-lease --force-if-includes` | | `ggfl` | `git push --force-with-lease origin $(current_branch)` |
| `gpf` | On Git < 2.30: `git push --force-with-lease` | | `gpsup` | `git push --set-upstream origin $(git_current_branch)` |
| `ggfl` | `git push --force-with-lease origin $(current_branch)` | | `gpsupf` | On Git >= 2.30: `git push --set-upstream origin $(git_current_branch) --force-with-lease --force-if-includes` |
| `gpsup` | `git push --set-upstream origin $(git_current_branch)` | | `gpsupf` | On Git < 2.30: `git push --set-upstream origin $(git_current_branch) --force-with-lease` |
| `gpsupf` | On Git >= 2.30: `git push --set-upstream origin $(git_current_branch) --force-with-lease --force-if-includes` | | `gpv` | `git push --verbose` |
| `gpsupf` | On Git < 2.30: `git push --set-upstream origin $(git_current_branch) --force-with-lease` | | `gpoat` | `git push origin --all && git push origin --tags` |
| `gpv` | `git push --verbose` | | `gpod` | `git push origin --delete` |
| `gpoat` | `git push origin --all && git push origin --tags` | | `ggpush` | `git push origin "$(git_current_branch)"` |
| `gpod` | `git push origin --delete` | | `ggp` | `git push origin $(current_branch)` |
| `ggpush` | `git push origin "$(git_current_branch)"` | | `gpu` | `git push upstream` |
| `ggp` | `git push origin $(current_branch)` | | `grb` | `git rebase` |
| `gpu` | `git push upstream` | | `grba` | `git rebase --abort` |
| `grb` | `git rebase` | | `grbc` | `git rebase --continue` |
| `grba` | `git rebase --abort` | | `grbi` | `git rebase --interactive` |
| `grbc` | `git rebase --continue` | | `grbo` | `git rebase --onto` |
| `grbi` | `git rebase --interactive` | | `grbs` | `git rebase --skip` |
| `grbo` | `git rebase --onto` | | `grbd` | `git rebase $(git_develop_branch)` |
| `grbs` | `git rebase --skip` | | `grbm` | `git rebase $(git_main_branch)` |
| `grbd` | `git rebase $(git_develop_branch)` | | `grbom` | `git rebase origin/$(git_main_branch)` |
| `grbm` | `git rebase $(git_main_branch)` | | `gr` | `git remote` |
| `grbom` | `git rebase origin/$(git_main_branch)` | | `grv` | `git remote --verbose` |
| `gr` | `git remote` | | `gra` | `git remote add` |
| `grv` | `git remote --verbose` | | `grrm` | `git remote remove` |
| `gra` | `git remote add` | | `grmv` | `git remote rename` |
| `grrm` | `git remote remove` | | `grset` | `git remote set-url` |
| `grmv` | `git remote rename` | | `grup` | `git remote update` |
| `grset` | `git remote set-url` | | `grh` | `git reset` |
| `grup` | `git remote update` | | `gru` | `git reset --` |
| `grh` | `git reset` | | `grhh` | `git reset --hard` |
| `gru` | `git reset --` | | `grhk` | `git reset --keep` |
| `grhh` | `git reset --hard` | | `grhs` | `git reset --soft` |
| `grhk` | `git reset --keep` | | `gpristine` | `git reset --hard && git clean -dffx` |
| `grhs` | `git reset --soft` | | `groh` | `git reset origin/$(git_current_branch) --hard` |
| `gpristine` | `git reset --hard && git clean -dffx` | | `grs` | `git restore` |
| `groh` | `git reset origin/$(git_current_branch) --hard` | | `grss` | `git restore --source` |
| `grs` | `git restore` | | `grst` | `git restore --staged` |
| `grss` | `git restore --source` | | `gunwip` | `git rev-list --max-count=1 --format="%s" HEAD \| grep -q "--wip--" && git reset HEAD~1` |
| `grst` | `git restore --staged` | | `grev` | `git revert` |
| `gunwip` | `git rev-list --max-count=1 --format="%s" HEAD \| grep -q "--wip--" && git reset HEAD~1` | | `grm` | `git rm` |
| `grev` | `git revert` | | `grmc` | `git rm --cached` |
| `grm` | `git rm` | | `gcount` | `git shortlog --summary -n` |
| `grmc` | `git rm --cached` | | `gsh` | `git show` |
| `gcount` | `git shortlog --summary -n` | | `gsps` | `git show --pretty=short --show-signature` |
| `gsh` | `git show` | | `gstall` | `git stash --all` |
| `gsps` | `git show --pretty=short --show-signature` | | `gstu` | `git stash --include-untracked` |
| `gstall` | `git stash --all` | | `gstaa` | `git stash apply` |
| `gstu` | `git stash --include-untracked` | | `gstc` | `git stash clear` |
| `gstaa` | `git stash apply` | | `gstd` | `git stash drop` |
| `gstc` | `git stash clear` | | `gstl` | `git stash list` |
| `gstd` | `git stash drop` | | `gstp` | `git stash pop` |
| `gstl` | `git stash list` | | `gsta` | On Git >= 2.13: `git stash push` |
| `gstp` | `git stash pop` | | `gsta` | On Git < 2.13: `git stash save` |
| `gsta` | On Git >= 2.13: `git stash push` | | `gsts` | `git stash show --patch` |
| `gsta` | On Git < 2.13: `git stash save` | | `gst` | `git status` |
| `gsts` | `git stash show --patch` | | `gss` | `git status --short` |
| `gst` | `git status` | | `gsb` | `git status --short -b` |
| `gss` | `git status --short` | | `gsi` | `git submodule init` |
| `gsb` | `git status --short -b` | | `gsu` | `git submodule update` |
| `gsi` | `git submodule init` | | `gsd` | `git svn dcommit` |
| `gsu` | `git submodule update` | | `git-svn-dcommit-push` | `git svn dcommit && git push github $(git_main_branch):svntrunk` |
| `gsd` | `git svn dcommit` | | `gsr` | `git svn rebase` |
| `git-svn-dcommit-push` | `git svn dcommit && git push github $(git_main_branch):svntrunk` | | `gsw` | `git switch` |
| `gsr` | `git svn rebase` | | `gswc` | `git switch -c` |
| `gsw` | `git switch` | | `gswd` | `git switch $(git_develop_branch)` |
| `gswc` | `git switch -c` | | `gswm` | `git switch $(git_main_branch)` |
| `gswd` | `git switch $(git_develop_branch)` | | `gta` | `git tag --annotate` |
| `gswm` | `git switch $(git_main_branch)` | | `gts` | `git tag -s` |
| `gta` | `git tag --annotate` | | `gtv` | `git tag \| sort -V` |
| `gts` | `git tag -s` | | `gignore` | `git update-index --assume-unchanged` |
| `gtv` | `git tag \| sort -V` | | `gunignore` | `git update-index --no-assume-unchanged` |
| `gignore` | `git update-index --assume-unchanged` | | `gwch` | `git whatchanged -p --abbrev-commit --pretty=medium` |
| `gunignore` | `git update-index --no-assume-unchanged` | | `gwt` | `git worktree` |
| `gwch` | `git whatchanged -p --abbrev-commit --pretty=medium` | | `gwtls` | `git worktree list` |
| `gwt` | `git worktree` | | `gwtmv` | `git worktree move` |
| `gwtls` | `git worktree list` | | `gwtrm` | `git worktree remove` |
| `gwtmv` | `git worktree move` | | `gk` | `gitk --all --branches &!` |
| `gwtrm` | `git worktree remove` | | `gke` | `gitk --all $(git log --walk-reflogs --pretty=%h) &!` |
| `gk` | `gitk --all --branches &!` | | `gtl` | `gtl(){ git tag --sort=-v:refname -n --list ${1}\* }; noglob gtl` |
| `gke` | `gitk --all $(git log --walk-reflogs --pretty=%h) &!` |
| `gtl` | `gtl(){ git tag --sort=-v:refname -n --list ${1}\* }; noglob gtl` |
### Main branch preference ### Main branch preference
@ -224,19 +222,25 @@ branch exists. We do this via the function `git_main_branch`.
These are aliases that have been removed, renamed, or otherwise modified in a way that may, or may not, These are aliases that have been removed, renamed, or otherwise modified in a way that may, or may not,
receive further support. receive further support.
| Alias | Command | Modification | | Alias | Command | Modification |
| :------- | :----------------------------------------------------- | :-------------------------------------------------------- | | :------- | :-------------------------------------------------------- | :-------------------------------------------------------- |
| `gap` | `git add --patch` | New alias: `gapa`. | | `gap` | `git add --patch` | New alias: `gapa`. |
| `gcl` | `git config --list` | New alias: `gcf`. | | `gcl` | `git config --list` | New alias: `gcf`. |
| `gdc` | `git diff --cached` | New alias: `gdca`. | | `gdc` | `git diff --cached` | New alias: `gdca`. |
| `gdt` | `git difftool` | No replacement. | | `gdt` | `git difftool` | No replacement. |
| `ggpull` | `git pull origin $(current_branch)` | New alias: `ggl`. (`ggpull` still exists for now though.) | | `ggpull` | `git pull origin $(current_branch)` | New alias: `ggl`. (`ggpull` still exists for now though.) |
| `ggpur` | `git pull --rebase origin $(current_branch)` | New alias: `ggu`. (`ggpur` still exists for now though.) | | `ggpur` | `git pull --rebase origin $(current_branch)` | New alias: `ggu`. (`ggpur` still exists for now though.) |
| `ggpush` | `git push origin $(current_branch)` | New alias: `ggp`. (`ggpush` still exists for now though.) | | `ggpush` | `git push origin $(current_branch)` | New alias: `ggp`. (`ggpush` still exists for now though.) |
| `gk` | `gitk --all --branches` | Now aliased to `gitk --all --branches`. | | `gk` | `gitk --all --branches` | Now aliased to `gitk --all --branches`. |
| `glg` | `git log --stat --max-count=10` | Now aliased to `git log --stat --color`. | | `glg` | `git log --stat --max-count=10` | Now aliased to `git log --stat --color`. |
| `glgg` | `git log --graph --max-count=10` | Now aliased to `git log --graph --color`. | | `glgg` | `git log --graph --max-count=10` | Now aliased to `git log --graph --color`. |
| `gwc` | `git whatchanged -p --abbrev-commit --pretty = medium` | New alias: `gwch`. | | `gwc` | `git whatchanged -p --abbrev-commit --pretty = medium` | New alias: `gwch`. |
| `gup` | `git pull --rebase` | now alias `gpr` |
| `gupv` | `git pull --rebase -v` | now alias `gprv` |
| `gupa` | `git pull --rebase --autostash` | now alias `gpra` |
| `gupav` | `git pull --rebase --autostash -v` | now alias `gprav` |
| `gupom` | `git pull --rebase origin $(git_main_branch)` | now alias `gprom` |
| `gupomi` | `git pull --rebase=interactive origin $(git_main_branch)` | now alias `gpromi` |
## Functions ## Functions
@ -250,7 +254,8 @@ receive further support.
| `git_develop_branch` | Returns the name of the “development” branch: `dev`, `devel`, `development` if they exist, `develop` otherwise. | | `git_develop_branch` | Returns the name of the “development” branch: `dev`, `devel`, `development` if they exist, `develop` otherwise. |
| `git_main_branch` | Returns the name of the main branch: `main` if it exists, `master` otherwise. | | `git_main_branch` | Returns the name of the main branch: `main` if it exists, `master` otherwise. |
| `grename <old> <new>` | Renames branch `<old>` to `<new>`, including on the origin remote. | | `grename <old> <new>` | Renames branch `<old>` to `<new>`, including on the origin remote. |
| `gbda` | Deletes all merged and squash-merged branches | | `gbda` | Deletes all merged branches |
| `gbds` | Deletes all squash-merged branches (**Note: performance degrades with number of branches**) |
### Work in Progress (WIP) ### Work in Progress (WIP)

View file

@ -20,26 +20,31 @@ function current_branch() {
function git_develop_branch() { function git_develop_branch() {
command git rev-parse --git-dir &>/dev/null || return command git rev-parse --git-dir &>/dev/null || return
local branch local branch
for branch in dev devel development; do for branch in dev devel develop development; do
if command git show-ref -q --verify refs/heads/$branch; then if command git show-ref -q --verify refs/heads/$branch; then
echo $branch echo $branch
return return 0
fi fi
done done
echo develop echo develop
return 1
} }
# Check if main exists and use instead of master # Check if main exists and use instead of master
function git_main_branch() { function git_main_branch() {
command git rev-parse --git-dir &>/dev/null || return command git rev-parse --git-dir &>/dev/null || return
local ref local ref
for ref in refs/{heads,remotes/{origin,upstream}}/{main,trunk,mainline,default}; do for ref in refs/{heads,remotes/{origin,upstream}}/{main,trunk,mainline,default,master}; do
if command git show-ref -q --verify $ref; then if command git show-ref -q --verify $ref; then
echo ${ref:t} echo ${ref:t}
return return 0
fi fi
done done
# If no main branch was found, fall back to master but return error
echo master echo master
return 1
} }
function grename() { function grename() {
@ -123,16 +128,20 @@ alias gba='git branch --all'
alias gbd='git branch --delete' alias gbd='git branch --delete'
alias gbD='git branch --delete --force' alias gbD='git branch --delete --force'
# Copied and modified from James Roeder (jmaroeder) under MIT License
# https://github.com/jmaroeder/plugin-git/blob/216723ef4f9e8dde399661c39c80bdf73f4076c4/functions/gbda.fish
function gbda() { function 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 git branch --no-color --merged | command grep -vE "^([+*]|\s*($(git_main_branch)|$(git_develop_branch))\s*$)" | command xargs git branch --delete 2>/dev/null
}
# Copied and modified from James Roeder (jmaroeder) under MIT License
# https://github.com/jmaroeder/plugin-git/blob/216723ef4f9e8dde399661c39c80bdf73f4076c4/functions/gbda.fish
function gbds() {
local default_branch=$(git_main_branch) local default_branch=$(git_main_branch)
(( ! $? )) || default_branch=$(git_develop_branch)
git for-each-ref refs/heads/ "--format=%(refname:short)" | \ git for-each-ref refs/heads/ "--format=%(refname:short)" | \
while read branch; do while read branch; do
local merge_base=$(git merge-base $default_branch $branch) local merge_base=$(git merge-base $default_branch $branch)
if [[ '-*' == $(git cherry $default_branch $(git commit-tree $(git rev-parse $branch\^{tree}) -p $merge_base -m _)) ]]; then if [[ $(git cherry $default_branch $(git commit-tree $(git rev-parse $branch\^{tree}) -p $merge_base -m _)) = -* ]]; then
git branch -D $branch git branch -D $branch
fi fi
done done
@ -157,8 +166,17 @@ alias gclean='git clean --interactive -d'
alias gcl='git clone --recurse-submodules' alias gcl='git clone --recurse-submodules'
function gccd() { function gccd() {
command git clone --recurse-submodules "$@" setopt localoptions extendedglob
[[ -d "$_" ]] && cd "$_" || cd "${${_:t}%.git}"
# get repo URI from args based on valid formats: https://git-scm.com/docs/git-clone#URLS
local repo="${${@[(r)(ssh://*|git://*|ftp(s)#://*|http(s)#://*|*@*)(.git/#)#]}:-$_}"
# clone repository and exit if it fails
command git clone --recurse-submodules "$@" || return
# if last arg passed was a directory, that's where the repo was cloned
# otherwise parse the repo URI and use the last part as the directory
[[ -d "$_" ]] && cd "$_" || cd "${${repo:t}%.git/#}"
} }
compdef _git gccd=git-clone compdef _git gccd=git-clone
@ -237,12 +255,12 @@ alias gmom='git merge origin/$(git_main_branch)'
alias gmum='git merge upstream/$(git_main_branch)' alias gmum='git merge upstream/$(git_main_branch)'
alias gmtl='git mergetool --no-prompt' alias gmtl='git mergetool --no-prompt'
alias gmtlvim='git mergetool --no-prompt --tool=vimdiff' alias gmtlvim='git mergetool --no-prompt --tool=vimdiff'
alias gl='git pull' alias gl='git pull'
alias gpr='git pull --rebase' alias gpr='git pull --rebase'
alias gup='git pull --rebase' alias gprv='git pull --rebase -v'
alias gupa='git pull --rebase --autostash' alias gpra='git pull --rebase --autostash'
alias gupav='git pull --rebase --autostash --verbose' alias gprav='git pull --rebase --autostash -v'
alias gupv='git pull --rebase --verbose'
function ggu() { function ggu() {
[[ "$#" != 1 ]] && local b="$(git_current_branch)" [[ "$#" != 1 ]] && local b="$(git_current_branch)"
@ -250,8 +268,8 @@ function ggu() {
} }
compdef _git ggu=git-checkout compdef _git ggu=git-checkout
alias gupom='git pull --rebase origin $(git_main_branch)' alias gprom='git pull --rebase origin $(git_main_branch)'
alias gupomi='git pull --rebase=interactive origin $(git_main_branch)' alias gpromi='git pull --rebase=interactive origin $(git_main_branch)'
alias ggpull='git pull origin "$(git_current_branch)"' alias ggpull='git pull origin "$(git_current_branch)"'
function ggl() { function ggl() {
@ -379,3 +397,20 @@ alias gk='\gitk --all --branches &!'
alias gke='\gitk --all $(git log --walk-reflogs --pretty=%h) &!' alias gke='\gitk --all $(git log --walk-reflogs --pretty=%h) &!'
unset git_version unset git_version
# Logic for adding warnings on deprecated aliases
local old_alias new_alias
for old_alias new_alias (
# TODO(2023-10-19): remove deprecated `git pull --rebase` aliases
gup gpr
gupv gprv
gupa gpra
gupav gprav
gupom gprom
gupomi gpromi
); do
aliases[$old_alias]="
print -Pu2 \"%F{yellow}[oh-my-zsh] '%F{red}${old_alias}%F{yellow}' is a deprecated alias, using '%F{green}${new_alias}%F{yellow}' instead.%f\"
$new_alias"
done
unset old_alias new_alias

View file

@ -13,5 +13,6 @@ plugins=(... history)
| Alias | Command | Description | | Alias | Command | Description |
|-------|----------------------|------------------------------------------------------------------| |-------|----------------------|------------------------------------------------------------------|
| `h` | `history` | Prints your command history | | `h` | `history` | Prints your command history |
| `hl` | `history \| less` | Pipe history output to less to search and navigate it easily |
| `hs` | `history \| grep` | Use grep to search your command history | | `hs` | `history \| grep` | Use grep to search your command history |
| `hsi` | `history \| grep -i` | Use grep to do a case-insensitive search of your command history | | `hsi` | `history \| grep -i` | Use grep to do a case-insensitive search of your command history |

View file

@ -1,3 +1,4 @@
alias h='history' alias h='history'
alias hl='history | less'
alias hs='history | grep' alias hs='history | grep'
alias hsi='history | grep -i' alias hsi='history | grep -i'

View file

@ -162,6 +162,7 @@ alias kdelsa="kubectl delete sa"
# DaemonSet management. # DaemonSet management.
alias kgds='kubectl get daemonset' alias kgds='kubectl get daemonset'
alias kgdsa='kubectl get daemonset --all-namespaces'
alias kgdsw='kgds --watch' alias kgdsw='kgds --watch'
alias keds='kubectl edit daemonset' alias keds='kubectl edit daemonset'
alias kdds='kubectl describe daemonset' alias kdds='kubectl describe daemonset'

View file

@ -8,7 +8,7 @@ To use it, add `lando` to the plugins array in your zshrc file:
plugins=(... lando) plugins=(... lando)
``` ```
## ALIASES: ## Wrapped Commands
| Alias | Description | | Alias | Description |
|:----------:|:----------------:| |:----------:|:----------------:|
@ -21,16 +21,34 @@ plugins=(... lando)
| `wp` | `lando wp` | | `wp` | `lando wp` |
| `yarn` | `lando yarn` | | `yarn` | `lando yarn` |
More or different commands can be wrapped by setting the `LANDO_ZSH_WRAPPED_COMMANDS` setting, see [Settings](#settings) below.
## How It Works: ## How It Works:
This plugin removes the requirement to type `lando` before a command. It utilizes the lando version of supported commands run within directories with the following criteria: This plugin removes the requirement to type `lando` before a command. It utilizes the lando version of supported commands run within directories with the following criteria:
- The `.lando.yml` file is found in the current directory or any parent directory within `$LANDO_ZSH_SITES_DIRECTORY`. - The `.lando.yml` file is found in the current directory or any parent directory within `$LANDO_ZSH_SITES_DIRECTORY`.
- The current directory is within `$LANDO_ZSH_SITES_DIRECTORY` but is not `$LANDO_ZSH_SITES_DIRECTORY` itself. - The current directory is within `$LANDO_ZSH_SITES_DIRECTORY` but is not `$LANDO_ZSH_SITES_DIRECTORY` itself.
- If the command is not a part of the commands available in the lando environment, it will run the command without `lando`.
## Settings: ## Settings:
- `LANDO_ZSH_SITES_DIRECTORY`: The plugin will stop searching through parents for `CONFIG_FILE` once it hits this directory. > NOTE: these settings must be set *before* the plugin is loaded, and any changes require a restart of the shell to be applied.
- `LANDO_ZSH_CONFIG_FILE`: The plugin will check to see if this provided file exists to check for presence of Lando.
- `LANDO_ZSH_SITES_DIRECTORY`: The plugin will stop searching through parents for `CONFIG_FILE` once it hits this directory:
```sh
LANDO_ZSH_SITES_DIRECTORY="$HOME/Code"
```
- `LANDO_ZSH_CONFIG_FILE`: The plugin will check to see if this provided file exists to check for presence of Lando:
```sh
LANDO_ZSH_CONFIG_FILE=".lando.dev.yml"
```
- `LANDO_ZSH_WRAPPED_COMMANDS`: The list of commands to wrap, as a string of commands separated by whitespace:
```sh
LANDO_ZSH_WRAPPED_COMMANDS="mysql php composer test artisan"
```
## Author: ## Author:

View file

@ -1,25 +1,36 @@
# Settings # Settings
: ${LANDO_ZSH_SITES_DIRECTORY:="$HOME/Sites"} : ${LANDO_ZSH_SITES_DIRECTORY:="$HOME/Sites"}
: ${LANDO_ZSH_CONFIG_FILE:=.lando.yml} : ${LANDO_ZSH_CONFIG_FILE:=.lando.yml}
: ${LANDO_ZSH_WRAPPED_COMMANDS:="
artisan
composer
drush
gulp
npm
php
wp
yarn
"}
# Enable multiple commands with lando. # Enable multiple commands with lando.
function artisan \ function ${=LANDO_ZSH_WRAPPED_COMMANDS} {
composer \ # If the lando task is available in `lando --help`, then it means:
drush \ #
gulp \ # 1. `lando` is in a project with a `.lando.yml` file.
npm \ # 2. The lando task is available for lando, based on the .lando.yml config file.
php \ #
wp \ # This has a penalty of about 250ms, so we still want to check if the lando file
yarn { # exists before, which is the fast path. If it exists, checking help output is
if checkForLandoFile; then # still faster than running the command and failing.
lando "$0" "$@" if _lando_file_exists && lando --help 2>&1 | command grep -Eq "^ +lando $0 "; then
command lando "$0" "$@"
else else
command "$0" "$@" command "$0" "$@"
fi fi
} }
# Check for the file in the current and parent directories. # Check for the file in the current and parent directories.
checkForLandoFile() { _lando_file_exists() {
# Only bother checking for lando within the Sites directory. # Only bother checking for lando within the Sites directory.
if [[ "$PWD/" != "$LANDO_ZSH_SITES_DIRECTORY"/* ]]; then if [[ "$PWD/" != "$LANDO_ZSH_SITES_DIRECTORY"/* ]]; then
# Not within $LANDO_ZSH_SITES_DIRECTORY # Not within $LANDO_ZSH_SITES_DIRECTORY
@ -38,4 +49,4 @@ checkForLandoFile() {
# Could not find $LANDO_ZSH_CONFIG_FILE in the current directory # Could not find $LANDO_ZSH_CONFIG_FILE in the current directory
# or in any of its parents up to $LANDO_ZSH_SITES_DIRECTORY. # or in any of its parents up to $LANDO_ZSH_SITES_DIRECTORY.
return 1 return 1
} }

View file

@ -30,6 +30,7 @@ plugins=(... npm)
| `npmi` | `npm info` | Run npm info | | `npmi` | `npm info` | Run npm info |
| `npmSe` | `npm search` | Run npm search | | `npmSe` | `npm search` | Run npm search |
| `npmrd` | `npm run dev` | Run npm run dev | | `npmrd` | `npm run dev` | Run npm run dev |
| `npmrb` | `npm run build` | Run npm run build |
## `npm install` / `npm uninstall` toggle ## `npm install` / `npm uninstall` toggle

View file

@ -73,6 +73,9 @@ alias npmSe="npm search"
# Run npm run dev # Run npm run dev
alias npmrd="npm run dev" alias npmrd="npm run dev"
# Run npm run build
alias npmrb="npm run build"
npm_toggle_install_uninstall() { npm_toggle_install_uninstall() {
# Look up to the previous 2 history commands # Look up to the previous 2 history commands
local line local line

18
plugins/snap/README.md Normal file
View file

@ -0,0 +1,18 @@
# snap plugin
This plugin sets up aliases for the common [snap](https://snapcraft.io/docs/getting-started) commands
## Aliases
| Alias | Full command |
| --- | ---|
| sv | snap version |
| sf | snap find |
| si | snap install |
| sin | snap info |
| sr | snap remove |
| sref | snap refresh |
| srev | snap revert |
| sl | snap list |
| sd | snap disable |
| se | snap enable |

View file

@ -0,0 +1,10 @@
alias sv="snap version"
alias sf="snap find"
alias si="snap install"
alias sin="snap info"
alias sr="snap remove"
alias sref="snap refresh"
alias srev="snap revert"
alias sl="snap list"
alias sd="snap disable"
alias se="snap enable"

View file

@ -13,6 +13,11 @@ function _start_agent() {
fi fi
fi fi
if [[ ! -d "$HOME/.ssh" ]]; then
echo "[oh-my-zsh] ssh-agent plugin requires ~/.ssh directory"
return 1
fi
# Set a maximum lifetime for identities added to ssh-agent # Set a maximum lifetime for identities added to ssh-agent
local lifetime local lifetime
zstyle -s :omz:plugins:ssh-agent lifetime lifetime zstyle -s :omz:plugins:ssh-agent lifetime lifetime

View file

@ -25,6 +25,7 @@ The plugin also supports the following:
| `tkss` | tmux kill-session -t | Terminate named running tmux session | | `tkss` | tmux kill-session -t | Terminate named running tmux session |
| `tmux` | `_zsh_tmux_plugin_run` | Start a new tmux session | | `tmux` | `_zsh_tmux_plugin_run` | Start a new tmux session |
| `tmuxconf` | `$EDITOR $ZSH_TMUX_CONFIG` | Open .tmux.conf file with an editor | | `tmuxconf` | `$EDITOR $ZSH_TMUX_CONFIG` | Open .tmux.conf file with an editor |
| `tds` | `_tmux_directory_session` | Creates or attaches to a session for the current path |
## Configuration Variables ## Configuration Variables

View file

@ -127,6 +127,19 @@ compdef _tmux _zsh_tmux_plugin_run
# Alias tmux to our wrapper function. # Alias tmux to our wrapper function.
alias tmux=_zsh_tmux_plugin_run alias tmux=_zsh_tmux_plugin_run
function _tmux_directory_session() {
# current directory without leading path
local dir=${PWD##*/}
# md5 hash for the full working directory path
local md5=$(printf '%s' "$PWD" | md5sum | cut -d ' ' -f 1)
# human friendly unique session name for this directory
local session_name="${dir}-${md5:0:6}"
# create or attach to the session
tmux new -As "$session_name"
}
alias tds=_tmux_directory_session
# Autostart if not already in tmux and enabled. # Autostart if not already in tmux and enabled.
if [[ -z "$TMUX" && "$ZSH_TMUX_AUTOSTART" == "true" && -z "$INSIDE_EMACS" && -z "$EMACS" && -z "$VIM" && -z "$INTELLIJ_ENVIRONMENT_READER" ]]; then if [[ -z "$TMUX" && "$ZSH_TMUX_AUTOSTART" == "true" && -z "$INSIDE_EMACS" && -z "$EMACS" && -z "$VIM" && -z "$INTELLIJ_ENVIRONMENT_READER" ]]; then
# Actually don't autostart if we already did and multiple autostarts are disabled. # Actually don't autostart if we already did and multiple autostarts are disabled.

View file

@ -154,7 +154,8 @@ wrap_clipboard_widgets copy \
vi-delete vi-delete-char vi-backward-delete-char vi-delete vi-delete-char vi-backward-delete-char
wrap_clipboard_widgets paste \ wrap_clipboard_widgets paste \
vi-put-{before,after} vi-put-{before,after} \
put-replace-selection
unfunction wrap_clipboard_widgets unfunction wrap_clipboard_widgets

View file

@ -31,7 +31,7 @@ the Command Palette via (F1 or ⇧⌘P) and type shell command to find the Shell
## Using multiple flavours ## Using multiple flavours
If for any reason, you ever require to use multiple flavours of VS Code i.e. VS Code (stable) and VS Code Insiders, you can If for any reason, you ever require to use multiple flavours of VS Code i.e. VS Code (stable) and VS Code Insiders, you can
manually specify the flavour's executable. Add the following line to the .zshrc file (between the `ZSH_THEME` and the `plugins=()` lines). manually specify the flavour's executable. Add the following line to the .zshrc file (between the `ZSH_THEME` and the `plugins=()` lines).
This will make the plugin use your manually defined executable. This will make the plugin use your manually defined executable.
@ -53,6 +53,7 @@ source $ZSH/oh-my-zsh.sh
| Alias | Command | Description | | Alias | Command | Description |
| ----------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------- | | ----------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------- |
| vsc | code . | Open the current folder in VS code | | vsc | code . | Open the current folder in VS code |
| vsc `dir` | code `dir` | Open passed folder in VS code |
| vsca `dir` | code --add `dir` | Add folder(s) to the last active window | | vsca `dir` | code --add `dir` | Add folder(s) to the last active window |
| vscd `file` `file` | code --diff `file` `file` | Compare two files with each other. | | vscd `file` `file` | code --diff `file` `file` | Compare two files with each other. |
| vscg `file:line[:char]` | code --goto `file:line[:char]` | Open a file at the path on the specified line and character position. | | vscg `file:line[:char]` | code --goto `file:line[:char]` | Open a file at the path on the specified line and character position. |

View file

@ -23,7 +23,14 @@ if [[ -z "$VSCODE" ]]; then
fi fi
fi fi
alias vsc="$VSCODE ." function vsc {
if (( $# )); then
$VSCODE $@
else
$VSCODE .
fi
}
alias vsca="$VSCODE --add" alias vsca="$VSCODE --add"
alias vscd="$VSCODE --diff" alias vscd="$VSCODE --diff"
alias vscg="$VSCODE --goto" alias vscg="$VSCODE --goto"

View file

@ -396,7 +396,7 @@ fi
# disable extendedglob for the complete wd execution time # disable extendedglob for the complete wd execution time
setopt | grep -q extendedglob setopt | grep -q extendedglob
wd_extglob_is_set=$? wd_extglob_is_set=$?
[[ $wd_extglob_is_set ]] && setopt noextendedglob (( ! $wd_extglob_is_set )) && setopt noextendedglob
# load warp points # load warp points
typeset -A points typeset -A points
@ -484,7 +484,7 @@ fi
# if not, next time warp will pick up variables from this run # if not, next time warp will pick up variables from this run
# remember, there's no sub shell # remember, there's no sub shell
[[ $wd_extglob_is_set ]] && setopt extendedglob (( ! $wd_extglob_is_set )) && setopt extendedglob
unset wd_extglob_is_set unset wd_extglob_is_set
unset wd_warp unset wd_warp

View file

@ -11,7 +11,12 @@ $(_user_host)${_current_dir} $(git_prompt_info) $(ruby_prompt_info)
PROMPT2='%{%(!.${fg[red]}.${fg[white]})%}◀%{$reset_color%} ' PROMPT2='%{%(!.${fg[red]}.${fg[white]})%}◀%{$reset_color%} '
RPROMPT='$(vi_mode_prompt_info)%{$(echotc UP 1)%}$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%{$(echotc DO 1)%}' __RPROMPT='$(vi_mode_prompt_info)%{$(echotc UP 1)%}$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%{$(echotc DO 1)%}'
if [[ -z $RPROMPT ]]; then
RPROMPT=$__RPROMPT
else
RPROMPT="${RPROMPT} ${__RPROMPT}"
fi
function _user_host() { function _user_host() {
local me local me

View file

@ -21,7 +21,7 @@ fi
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
PR_HOST='%F{red}%M%f' # SSH PR_HOST='%F{red}%M%f' # SSH
else else
PR_HOST='%F{green}%M%f' # no SSH PR_HOST='%F{green}%m%f' # no SSH
fi fi