mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-02-12 05:49:47 +08:00
Compare commits
8 Commits
0da416986a
...
8428442ff0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8428442ff0 | ||
|
|
ff6dac56a2 | ||
|
|
f79647dba5 | ||
|
|
207d29b716 | ||
|
|
9f84ba0854 | ||
|
|
d082d87580 | ||
|
|
a8dee63ffe | ||
|
|
104041a018 |
@ -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}"
|
||||||
|
|||||||
@ -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"
|
||||||
|
|||||||
@ -11,7 +11,7 @@ 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` |
|
||||||
@ -116,13 +116,11 @@ plugins=(... git)
|
|||||||
| `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)` |
|
|
||||||
| `gupomi` | `git pull --rebase=interactive origin $(git_main_branch)` |
|
|
||||||
| `ggpull` | `git pull origin "$(git_current_branch)"` |
|
| `ggpull` | `git pull origin "$(git_current_branch)"` |
|
||||||
| `ggl` | `git pull origin $(current_branch)` |
|
| `ggl` | `git pull origin $(current_branch)` |
|
||||||
| `gluc` | `git pull upstream $(git_current_branch)` |
|
| `gluc` | `git pull upstream $(git_current_branch)` |
|
||||||
@ -225,7 +223,7 @@ These are aliases that have been removed, renamed, or otherwise modified in a wa
|
|||||||
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`. |
|
||||||
@ -237,6 +235,12 @@ receive further support.
|
|||||||
| `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
|
||||||
|
|
||||||
|
|||||||
@ -141,7 +141,7 @@ function gbds() {
|
|||||||
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
|
||||||
@ -166,8 +166,15 @@ 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 "$@"
|
# get repo URI from args based on valid formats: https://git-scm.com/docs/git-clone#URLS
|
||||||
[[ -d "$_" ]] && cd "$_" || cd "${${_:t}%.git}"
|
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
|
||||||
|
|
||||||
@ -246,12 +253,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)"
|
||||||
@ -259,8 +266,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() {
|
||||||
@ -388,3 +395,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
|
||||||
|
|||||||
@ -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:
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -108,6 +108,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.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user