update oh my zsh
This commit is contained in:
parent
543addd2fb
commit
662ea60ee0
2
zsh/.oh-my-zsh/.gitignore
vendored
2
zsh/.oh-my-zsh/.gitignore
vendored
@ -1,7 +1,5 @@
|
|||||||
# custom files
|
# custom files
|
||||||
custom/
|
custom/
|
||||||
!custom/plugins/example
|
|
||||||
!custom/example.zsh
|
|
||||||
|
|
||||||
# temp files directories
|
# temp files directories
|
||||||
cache/
|
cache/
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
# CONTRIBUTING GUIDELINES
|
# CONTRIBUTING GUIDELINES
|
||||||
|
|
||||||
Oh-My-Zsh is a community-driven project. Contribution is welcome, encouraged and appreciated.
|
Oh-My-Zsh is a community-driven project. Contribution is welcome, encouraged, and appreciated.
|
||||||
It is also essential for the development of the project.
|
It is also essential for the development of the project.
|
||||||
|
|
||||||
|
First, please take a moment to review our [code of conduct](CODE_OF_CONDUCT.md).
|
||||||
|
|
||||||
These guidelines are an attempt at better addressing the huge amount of pending
|
These guidelines are an attempt at better addressing the huge amount of pending
|
||||||
issues and pull requests. Please read them closely.
|
issues and pull requests. Please read them closely.
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2009-2018 Robby Russell and contributors
|
Copyright (c) 2009-2019 Robby Russell and contributors
|
||||||
See the full list at https://github.com/robbyrussell/oh-my-zsh/contributors
|
See the full list at https://github.com/robbyrussell/oh-my-zsh/contributors
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
@ -6,7 +6,7 @@ Oh My Zsh is an open source, community-driven framework for managing your [zsh](
|
|||||||
|
|
||||||
Sounds boring. Let's try again.
|
Sounds boring. Let's try again.
|
||||||
|
|
||||||
__Oh My Zsh will not make you a 10x developer...but you might feel like one.__
|
__Oh My Zsh will not make you a 10x developer...but you may feel like one.__
|
||||||
|
|
||||||
Once installed, your terminal shell will become the talk of the town _or your money back!_ With each keystroke in your command prompt, you'll take advantage of the hundreds of powerful plugins and beautiful themes. Strangers will come up to you in cafés and ask you, _"that is amazing! are you some sort of genius?"_
|
Once installed, your terminal shell will become the talk of the town _or your money back!_ With each keystroke in your command prompt, you'll take advantage of the hundreds of powerful plugins and beautiful themes. Strangers will come up to you in cafés and ask you, _"that is amazing! are you some sort of genius?"_
|
||||||
|
|
||||||
@ -18,10 +18,8 @@ To learn more, visit [ohmyz.sh](https://ohmyz.sh) and follow [@ohmyzsh](https://
|
|||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
__Disclaimer:__ _Oh My Zsh works best on macOS and Linux._
|
* A Unix-like operating system: macOS, Linux, BSD. On Windows: WSL is preferred, but cygwin or msys also mostly work.
|
||||||
|
* [Zsh](https://www.zsh.org) should be installed (v4.3.9 or more recent). If not pre-installed (run `zsh --version` to confirm), check the following instructions here: [Installing ZSH](https://github.com/robbyrussell/oh-my-zsh/wiki/Installing-ZSH)
|
||||||
* Unix-like operating system (macOS or Linux)
|
|
||||||
* [Zsh](https://www.zsh.org) should be installed (v4.3.9 or more recent). If not pre-installed (`zsh --version` to confirm), check the following instruction here: [Installing ZSH](https://github.com/robbyrussell/oh-my-zsh/wiki/Installing-ZSH)
|
|
||||||
* `curl` or `wget` should be installed
|
* `curl` or `wget` should be installed
|
||||||
* `git` should be installed
|
* `git` should be installed
|
||||||
|
|
||||||
@ -38,7 +36,18 @@ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/mas
|
|||||||
#### via wget
|
#### via wget
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
|
sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Manual inspection
|
||||||
|
|
||||||
|
It's a good idea to inspect the install script from projects you don't yet know. You can do
|
||||||
|
that by downloading the install script first, looking through it so everything looks normal,
|
||||||
|
then running it:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
curl -Lo install.sh https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh
|
||||||
|
sh install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
## Using Oh My Zsh
|
## Using Oh My Zsh
|
||||||
@ -69,13 +78,15 @@ plugins=(
|
|||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
_Note that the plugins are separated by whitespace. **Do not** use commas between them._
|
||||||
|
|
||||||
#### Using Plugins
|
#### Using Plugins
|
||||||
|
|
||||||
Most plugins (should! we're working on this) include a __README__, which documents how to use them.
|
Most plugins (should! we're working on this) include a __README__, which documents how to use them.
|
||||||
|
|
||||||
### Themes
|
### Themes
|
||||||
|
|
||||||
We'll admit it. Early in the Oh My Zsh world, we may have gotten a bit too theme happy. We have over one hundred themes now bundled. Most of them have [screenshots](https://wiki.github.com/robbyrussell/oh-my-zsh/themes) on the wiki. Check them out!
|
We'll admit it. Early in the Oh My Zsh world, we may have gotten a bit too theme happy. We have over one hundred themes now bundled. Most of them have [screenshots](https://github.com/robbyrussell/oh-my-zsh/wiki/Themes) on the wiki. Check them out!
|
||||||
|
|
||||||
#### Selecting a Theme
|
#### Selecting a Theme
|
||||||
|
|
||||||
@ -124,16 +135,52 @@ If you're the type that likes to get their hands dirty, these sections might res
|
|||||||
|
|
||||||
### Advanced Installation
|
### Advanced Installation
|
||||||
|
|
||||||
Some users may want to change the default path, or manually install Oh My Zsh.
|
Some users may want to manually install Oh My Zsh, or change the default path or other settings that
|
||||||
|
the installer accepts (these settings are also documented at the top of the install script).
|
||||||
|
|
||||||
#### Custom Directory
|
#### Custom Directory
|
||||||
|
|
||||||
The default location is `~/.oh-my-zsh` (hidden in your home directory)
|
The default location is `~/.oh-my-zsh` (hidden in your home directory)
|
||||||
|
|
||||||
If you'd like to change the install directory with the `ZSH` environment variable, either by running `export ZSH=/your/path` before installing, or by setting it before the end of the install pipeline like this:
|
If you'd like to change the install directory with the `ZSH` environment variable, either by running
|
||||||
|
`export ZSH=/your/path` before installing, or by setting it before the end of the install pipeline
|
||||||
|
like this:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
export ZSH="$HOME/.dotfiles/oh-my-zsh"; sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
|
ZSH="$HOME/.dotfiles/oh-my-zsh" sh install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Unattended install
|
||||||
|
|
||||||
|
If you're running the Oh My Zsh install script as part of an automated install, you can pass the
|
||||||
|
flag `--unattended` to the `install.sh` script. This will have the effect of not trying to change
|
||||||
|
the default shell, and also won't run `zsh` when the installation has finished.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" "" --unattended
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Installing from a forked repository
|
||||||
|
|
||||||
|
The install script also accepts these variables to allow installation of a different repository:
|
||||||
|
|
||||||
|
- `REPO` (default: `robbyrussell/oh-my-zsh`): this takes the form of `owner/repository`. If you set
|
||||||
|
this variable, the installer will look for a repository at `https://github.com/{owner}/{repository}`.
|
||||||
|
|
||||||
|
- `REMOTE` (default: `https://github.com/${REPO}.git`): this is the full URL of the git repository
|
||||||
|
clone. You can use this setting if you want to install from a fork that is not on GitHub (GitLab,
|
||||||
|
Bitbucket...) or if you want to clone with SSH instead of HTTPS (`git@github.com:user/project.git`).
|
||||||
|
|
||||||
|
_NOTE: it's incompatible with setting the `REPO` variable. This setting will take precedence._
|
||||||
|
|
||||||
|
- `BRANCH` (default: `master`): you can use this setting if you want to change the default branch to be
|
||||||
|
checked out when cloning the repository. This might be useful for testing a Pull Request, or if you
|
||||||
|
want to use a branch other than `master`.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
REPO=apjanke/oh-my-zsh BRANCH=edge sh install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Manual Installation
|
#### Manual Installation
|
||||||
@ -161,9 +208,11 @@ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
|
|||||||
##### 4. Change your default shell
|
##### 4. Change your default shell
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
chsh -s /bin/zsh
|
chsh -s $(which zsh)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You must log out from your user session and log back in to see this change.
|
||||||
|
|
||||||
##### 5. Initialize your new zsh configuration
|
##### 5. Initialize your new zsh configuration
|
||||||
|
|
||||||
Once you open up a new terminal window, it should load zsh with Oh My Zsh's configuration.
|
Once you open up a new terminal window, it should load zsh with Oh My Zsh's configuration.
|
||||||
@ -172,8 +221,10 @@ Once you open up a new terminal window, it should load zsh with Oh My Zsh's conf
|
|||||||
|
|
||||||
If you have any hiccups installing, here are a few common fixes.
|
If you have any hiccups installing, here are a few common fixes.
|
||||||
|
|
||||||
* You _might_ need to modify your `PATH` in `~/.zshrc` if you're not able to find some commands after switching to `oh-my-zsh`.
|
* You _might_ need to modify your `PATH` in `~/.zshrc` if you're not able to find some commands after
|
||||||
* If you installed manually or changed the install location, check the `ZSH` environment variable in `~/.zshrc`.
|
switching to `oh-my-zsh`.
|
||||||
|
* If you installed manually or changed the install location, check the `ZSH` environment variable in
|
||||||
|
`~/.zshrc`.
|
||||||
|
|
||||||
### Custom Plugins and Themes
|
### Custom Plugins and Themes
|
||||||
|
|
||||||
@ -213,12 +264,16 @@ Oh My Zsh isn't for everyone. We'll miss you, but we want to make this an easy b
|
|||||||
|
|
||||||
If you want to uninstall `oh-my-zsh`, just run `uninstall_oh_my_zsh` from the command-line. It will remove itself and revert your previous `bash` or `zsh` configuration.
|
If you want to uninstall `oh-my-zsh`, just run `uninstall_oh_my_zsh` from the command-line. It will remove itself and revert your previous `bash` or `zsh` configuration.
|
||||||
|
|
||||||
## Contributing
|
## How do I contribute to Oh My Zsh?
|
||||||
|
|
||||||
|
Before you participate in our delightful community, please read the [code of conduct](CODE_OF_CONDUCT.md).
|
||||||
|
|
||||||
I'm far from being a [Zsh](https://www.zsh.org/) expert and suspect there are many ways to improve – if you have ideas on how to make the configuration easier to maintain (and faster), don't hesitate to fork and send pull requests!
|
I'm far from being a [Zsh](https://www.zsh.org/) expert and suspect there are many ways to improve – if you have ideas on how to make the configuration easier to maintain (and faster), don't hesitate to fork and send pull requests!
|
||||||
|
|
||||||
We also need people to test out pull-requests. So take a look through [the open issues](https://github.com/robbyrussell/oh-my-zsh/issues) and help where you can.
|
We also need people to test out pull-requests. So take a look through [the open issues](https://github.com/robbyrussell/oh-my-zsh/issues) and help where you can.
|
||||||
|
|
||||||
|
See [Contributing](CONTRIBUTING.md) for more details.
|
||||||
|
|
||||||
### Do NOT send us themes
|
### Do NOT send us themes
|
||||||
|
|
||||||
We have (more than) enough themes for the time being. Please add your theme to the [external themes](https://github.com/robbyrussell/oh-my-zsh/wiki/External-themes) wiki page.
|
We have (more than) enough themes for the time being. Please add your theme to the [external themes](https://github.com/robbyrussell/oh-my-zsh/wiki/External-themes) wiki page.
|
||||||
@ -238,7 +293,7 @@ We're on the social media.
|
|||||||
|
|
||||||
## Merchandise
|
## Merchandise
|
||||||
|
|
||||||
We have [stickers](https://shop.planetargon.com/products/ohmyzsh-stickers-set-of-3-stickers) and [shirts](https://shop.planetargon.com/products/ohmyzsh-t-shirts) for you to show off your love of Oh My Zsh. Again, this will help you become the talk of the town!
|
We have [stickers, shirts, and coffee mugs available](https://shop.planetargon.com/collections/oh-my-zsh?utm_source=github) for you to show off your love of Oh My Zsh. Again, you will become the talk of the town!
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2014 Christian Ludwig
|
Copyright (c) 2014-2019 Christian Ludwig
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -30,6 +30,14 @@ If you're using [Zgen](https://github.com/tarjoilija/zgen), add
|
|||||||
|
|
||||||
to your `.zshrc` with your other zgen plugin load commands.
|
to your `.zshrc` with your other zgen plugin load commands.
|
||||||
|
|
||||||
|
### Zplugin
|
||||||
|
|
||||||
|
If you're using [Zplugin](https://github.com/zdharma/zplugin), add
|
||||||
|
|
||||||
|
`zplugin light "chrissicool/zsh-256color"`
|
||||||
|
|
||||||
|
to your `.zshrc` with your other zplugin load commands.
|
||||||
|
|
||||||
## Debugging
|
## Debugging
|
||||||
|
|
||||||
If the environment variable `$ZSH_256COLOR_DEBUG` is set to any value when the
|
If the environment variable `$ZSH_256COLOR_DEBUG` is set to any value when the
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014, Christian Ludwig
|
# Copyright (c) 2014-2019, Christian Ludwig
|
||||||
#
|
#
|
||||||
# Set 256color terminal mode if available.
|
# Set 256color terminal mode if available.
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ _zsh_terminal_set_256color()
|
|||||||
|
|
||||||
# Use (n-)curses binaries, if installed.
|
# Use (n-)curses binaries, if installed.
|
||||||
if [[ -x "$( which toe )" ]] ; then
|
if [[ -x "$( which toe )" ]] ; then
|
||||||
if toe -a | egrep -q "^$TERM256" ; then
|
if toe -a | egrep "^$TERM256" >/dev/null ; then
|
||||||
_zsh_256color_debug "Found $TERM256 from (n-)curses binaries."
|
_zsh_256color_debug "Found $TERM256 from (n-)curses binaries."
|
||||||
export TERM="$TERM256"
|
export TERM="$TERM256"
|
||||||
return
|
return
|
||||||
|
@ -3,6 +3,8 @@ sudo: required
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
- ZSH=master
|
- ZSH=master
|
||||||
|
- ZSH=5.7.1
|
||||||
|
- ZSH=5.7
|
||||||
- ZSH=5.6.2
|
- ZSH=5.6.2
|
||||||
- ZSH=5.6.1
|
- ZSH=5.6.1
|
||||||
- ZSH=5.6
|
- ZSH=5.6
|
||||||
@ -33,7 +35,7 @@ env:
|
|||||||
- ZSH=4.3.12
|
- ZSH=4.3.12
|
||||||
- ZSH=4.3.11
|
- ZSH=4.3.11
|
||||||
|
|
||||||
script: docker run -v $PWD:/work -w /work zshusers/zsh-${ZSH} /bin/sh -c 'install_packages make procps && make test'
|
script: docker run -v $PWD:/work -w /work zshusers/zsh:${ZSH} /bin/sh -c 'install_packages make procps && make test'
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
webhooks:
|
webhooks:
|
||||||
|
@ -11,16 +11,18 @@ The `main` highlighter
|
|||||||
|
|
||||||
The following function `pz` is useful when working on the `main` highlighting:
|
The following function `pz` is useful when working on the `main` highlighting:
|
||||||
|
|
||||||
pq() {
|
```zsh
|
||||||
(( $#argv )) || return 0
|
pq() {
|
||||||
print -r -l -- ${(qqqq)argv}
|
(( $#argv )) || return 0
|
||||||
}
|
print -r -l -- ${(qqqq)argv}
|
||||||
pz() {
|
}
|
||||||
local arg
|
pz() {
|
||||||
for arg; do
|
local arg
|
||||||
pq ${(z)arg}
|
for arg; do
|
||||||
done
|
pq ${(z)arg}
|
||||||
}
|
done
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
It prints, for each argument, its token breakdown, similar to how the main
|
It prints, for each argument, its token breakdown, similar to how the main
|
||||||
loop of the `main` highlighter sees it.
|
loop of the `main` highlighter sees it.
|
||||||
@ -32,17 +34,19 @@ Since the test harness empties `ZSH_HIGHLIGHT_STYLES` and the `brackets`
|
|||||||
highlighter interrogates `ZSH_HIGHLIGHT_STYLES` to determine how to highlight,
|
highlighter interrogates `ZSH_HIGHLIGHT_STYLES` to determine how to highlight,
|
||||||
tests must set the `bracket-level-#` keys themselves. For example:
|
tests must set the `bracket-level-#` keys themselves. For example:
|
||||||
|
|
||||||
ZSH_HIGHLIGHT_STYLES[bracket-level-1]=
|
```zsh
|
||||||
ZSH_HIGHLIGHT_STYLES[bracket-level-2]=
|
ZSH_HIGHLIGHT_STYLES[bracket-level-1]=
|
||||||
|
ZSH_HIGHLIGHT_STYLES[bracket-level-2]=
|
||||||
|
|
||||||
BUFFER='echo ({x})'
|
BUFFER='echo ({x})'
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
"6 6 bracket-level-1" # (
|
"6 6 bracket-level-1" # (
|
||||||
"7 7 bracket-level-2" # {
|
"7 7 bracket-level-2" # {
|
||||||
"9 9 bracket-level-2" # }
|
"9 9 bracket-level-2" # }
|
||||||
"10 10 bracket-level-1" # )
|
"10 10 bracket-level-1" # )
|
||||||
)
|
)
|
||||||
|
```
|
||||||
|
|
||||||
Testing the `pattern` and `regexp` highlighters
|
Testing the `pattern` and `regexp` highlighters
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
@ -53,20 +57,24 @@ cannot get the `ZSH_HIGHLIGHT_STYLES` keys. Therefore, when writing tests, use
|
|||||||
the style itself as third word (cf. the
|
the style itself as third word (cf. the
|
||||||
[documentation for `expected_region_highlight`](docs/highlighters.md)). For example:
|
[documentation for `expected_region_highlight`](docs/highlighters.md)). For example:
|
||||||
|
|
||||||
ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
|
```zsh
|
||||||
|
ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
|
||||||
|
|
||||||
BUFFER='rm -rf /'
|
BUFFER='rm -rf /'
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
"1 8 fg=white,bold,bg=red" # rm -rf /
|
"1 8 fg=white,bold,bg=red" # rm -rf /
|
||||||
)
|
)
|
||||||
|
```
|
||||||
|
|
||||||
Miscellany
|
Miscellany
|
||||||
----------
|
----------
|
||||||
|
|
||||||
If you work on the driver (`zsh-syntax-highlighting.zsh`), you may find the following zstyle useful:
|
If you work on the driver (`zsh-syntax-highlighting.zsh`), you may find the following zstyle useful:
|
||||||
|
|
||||||
zstyle ':completion:*:*:*:*:globbed-files' ignored-patterns {'*/',}zsh-syntax-highlighting.plugin.zsh
|
```zsh
|
||||||
|
zstyle ':completion:*:*:*:*:globbed-files' ignored-patterns {'*/',}zsh-syntax-highlighting.plugin.zsh
|
||||||
|
```
|
||||||
|
|
||||||
IRC channel
|
IRC channel
|
||||||
-----------
|
-----------
|
||||||
|
@ -24,7 +24,7 @@ How to install
|
|||||||
[fedora-package]: https://apps.fedoraproject.org/packages/zsh-syntax-highlighting
|
[fedora-package]: https://apps.fedoraproject.org/packages/zsh-syntax-highlighting
|
||||||
[fedora-package-alt]: https://bodhi.fedoraproject.org/updates/?packages=zsh-syntax-highlighting
|
[fedora-package-alt]: https://bodhi.fedoraproject.org/updates/?packages=zsh-syntax-highlighting
|
||||||
[obs-repository]: https://software.opensuse.org//download.html?project=shells%3Azsh-users%3Azsh-syntax-highlighting&package=zsh-syntax-highlighting
|
[obs-repository]: https://software.opensuse.org//download.html?project=shells%3Azsh-users%3Azsh-syntax-highlighting&package=zsh-syntax-highlighting
|
||||||
[void-package]: https://github.com/voidlinux/void-packages/tree/master/srcpkgs/zsh-syntax-highlighting
|
[void-package]: https://github.com/void-linux/void-packages/tree/master/srcpkgs/zsh-syntax-highlighting
|
||||||
|
|
||||||
See also [repology's cross-distro index](https://repology.org/metapackage/zsh-syntax-highlighting/versions)
|
See also [repology's cross-distro index](https://repology.org/metapackage/zsh-syntax-highlighting/versions)
|
||||||
|
|
||||||
@ -33,17 +33,23 @@ See also [repology's cross-distro index](https://repology.org/metapackage/zsh-sy
|
|||||||
|
|
||||||
Simply clone this repository and source the script:
|
Simply clone this repository and source the script:
|
||||||
|
|
||||||
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
|
```zsh
|
||||||
echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
|
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
|
||||||
|
echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
|
||||||
|
```
|
||||||
|
|
||||||
Then, enable syntax highlighting in the current interactive shell:
|
Then, enable syntax highlighting in the current interactive shell:
|
||||||
|
|
||||||
source ./zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
```zsh
|
||||||
|
source ./zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||||
|
```
|
||||||
|
|
||||||
If `git` is not installed, download and extract a snapshot of the latest
|
If `git` is not installed, download and extract a snapshot of the latest
|
||||||
development tree from:
|
development tree from:
|
||||||
|
|
||||||
https://github.com/zsh-users/zsh-syntax-highlighting/archive/master.tar.gz
|
```
|
||||||
|
https://github.com/zsh-users/zsh-syntax-highlighting/archive/master.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
Note the `source` command must be **at the end** of `~/.zshrc`.
|
Note the `source` command must be **at the end** of `~/.zshrc`.
|
||||||
|
|
||||||
@ -69,11 +75,15 @@ your `.zshrc`.
|
|||||||
|
|
||||||
1. Clone this repository in oh-my-zsh's plugins directory:
|
1. Clone this repository in oh-my-zsh's plugins directory:
|
||||||
|
|
||||||
% git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
|
```zsh
|
||||||
|
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
|
||||||
|
```
|
||||||
|
|
||||||
2. Activate the plugin in `~/.zshrc`:
|
2. Activate the plugin in `~/.zshrc`:
|
||||||
|
|
||||||
plugins=( [plugins...] zsh-syntax-highlighting)
|
```zsh
|
||||||
|
plugins=( [plugins...] zsh-syntax-highlighting)
|
||||||
|
```
|
||||||
|
|
||||||
3. Restart zsh (such as by opening a new instance of your terminal emulator).
|
3. Restart zsh (such as by opening a new instance of your terminal emulator).
|
||||||
|
|
||||||
@ -104,10 +114,14 @@ Any of the above methods is suitable for a single-user installation,
|
|||||||
which requires no special privileges. If, however, you desire to install
|
which requires no special privileges. If, however, you desire to install
|
||||||
zsh-syntax-highlighting system-wide, you may do so by running
|
zsh-syntax-highlighting system-wide, you may do so by running
|
||||||
|
|
||||||
make install
|
```zsh
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
and directing your users to add
|
and directing your users to add
|
||||||
|
|
||||||
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
```zsh
|
||||||
|
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||||
|
```
|
||||||
|
|
||||||
to their `.zshrc`s.
|
to their `.zshrc`s.
|
||||||
|
@ -309,50 +309,66 @@ in this area.
|
|||||||
- incomplete sudo commands
|
- incomplete sudo commands
|
||||||
(a3047a912100, 2f05620b19ae)
|
(a3047a912100, 2f05620b19ae)
|
||||||
|
|
||||||
sudo;
|
```zsh
|
||||||
sudo -u;
|
sudo;
|
||||||
|
sudo -u;
|
||||||
|
```
|
||||||
|
|
||||||
- command words following reserved words
|
- command words following reserved words
|
||||||
(#207, #222, b397b12ac139 et seq, 6fbd2aa9579b et seq, 8b4adbd991b0)
|
(#207, #222, b397b12ac139 et seq, 6fbd2aa9579b et seq, 8b4adbd991b0)
|
||||||
|
|
||||||
if ls; then ls; else ls; fi
|
```zsh
|
||||||
repeat 10 do ls; done
|
if ls; then ls; else ls; fi
|
||||||
|
repeat 10 do ls; done
|
||||||
|
```
|
||||||
|
|
||||||
(The `ls` are now highlighted as a command.)
|
(The `ls` are now highlighted as a command.)
|
||||||
|
|
||||||
- comments (when `INTERACTIVE_COMMENTS` is set)
|
- comments (when `INTERACTIVE_COMMENTS` is set)
|
||||||
(#163, #167, 693de99a9030)
|
(#163, #167, 693de99a9030)
|
||||||
|
|
||||||
echo Hello # comment
|
```zsh
|
||||||
|
echo Hello # comment
|
||||||
|
```
|
||||||
|
|
||||||
- closing brackets of arithmetic expansion, subshells, and blocks
|
- closing brackets of arithmetic expansion, subshells, and blocks
|
||||||
(#226, a59f442d2d34, et seq)
|
(#226, a59f442d2d34, et seq)
|
||||||
|
|
||||||
(( foo ))
|
```zsh
|
||||||
( foo )
|
(( foo ))
|
||||||
{ foo }
|
( foo )
|
||||||
|
{ foo }
|
||||||
|
```
|
||||||
|
|
||||||
- command names enabled by the `PATH_DIRS` option
|
- command names enabled by the `PATH_DIRS` option
|
||||||
(#228, 96ee5116b182)
|
(#228, 96ee5116b182)
|
||||||
|
|
||||||
# When ~/bin/foo/bar exists, is executable, ~/bin is in $PATH,
|
```zsh
|
||||||
# and 'setopt PATH_DIRS' is in effect
|
# When ~/bin/foo/bar exists, is executable, ~/bin is in $PATH,
|
||||||
foo/bar
|
# and 'setopt PATH_DIRS' is in effect
|
||||||
|
foo/bar
|
||||||
|
```
|
||||||
|
|
||||||
- parameter expansions with braces inside double quotes
|
- parameter expansions with braces inside double quotes
|
||||||
(#186, 6e3720f39d84)
|
(#186, 6e3720f39d84)
|
||||||
|
|
||||||
echo "${foo}"
|
```zsh
|
||||||
|
echo "${foo}"
|
||||||
|
```
|
||||||
|
|
||||||
- parameter expansions in command word
|
- parameter expansions in command word
|
||||||
(#101, 4fcfb15913a2)
|
(#101, 4fcfb15913a2)
|
||||||
|
|
||||||
x=/bin/ls
|
```zsh
|
||||||
$x -l
|
x=/bin/ls
|
||||||
|
$x -l
|
||||||
|
```
|
||||||
|
|
||||||
- the command separators '|&', '&!', '&|'
|
- the command separators '\|&', '&!', '&\|'
|
||||||
|
|
||||||
view file.pdf &! ls
|
```zsh
|
||||||
|
view file.pdf &! ls
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Fixed highlighting of:
|
## Fixed highlighting of:
|
||||||
@ -360,23 +376,31 @@ in this area.
|
|||||||
- precommand modifiers at non-command-word position
|
- precommand modifiers at non-command-word position
|
||||||
(#209, 2c9f8c8c95fa)
|
(#209, 2c9f8c8c95fa)
|
||||||
|
|
||||||
ls command foo
|
```zsh
|
||||||
|
ls command foo
|
||||||
|
```
|
||||||
|
|
||||||
- sudo commands with infix redirections
|
- sudo commands with infix redirections
|
||||||
(#221, be006aded590, 86e924970911)
|
(#221, be006aded590, 86e924970911)
|
||||||
|
|
||||||
sudo -u >/tmp/foo.out user ls
|
```zsh
|
||||||
|
sudo -u >/tmp/foo.out user ls
|
||||||
|
```
|
||||||
|
|
||||||
- subshells; anonymous functions
|
- subshells; anonymous functions
|
||||||
(#166, #194, 0d1bfbcbfa67, 9e178f9f3948)
|
(#166, #194, 0d1bfbcbfa67, 9e178f9f3948)
|
||||||
|
|
||||||
(true)
|
```zsh
|
||||||
() { true }
|
(true)
|
||||||
|
() { true }
|
||||||
|
```
|
||||||
|
|
||||||
- parameter assignment statements with no command
|
- parameter assignment statements with no command
|
||||||
(#205, 01d7eeb3c713)
|
(#205, 01d7eeb3c713)
|
||||||
|
|
||||||
A=1;
|
```zsh
|
||||||
|
A=1;
|
||||||
|
```
|
||||||
|
|
||||||
(The semicolon used to be highlighted as a mistake)
|
(The semicolon used to be highlighted as a mistake)
|
||||||
|
|
||||||
@ -467,69 +491,95 @@ in this area.
|
|||||||
|
|
||||||
- suffix aliases (requires zsh 5.1.1 or newer):
|
- suffix aliases (requires zsh 5.1.1 or newer):
|
||||||
|
|
||||||
alias -s png=display
|
```zsh
|
||||||
foo.png
|
alias -s png=display
|
||||||
|
foo.png
|
||||||
|
```
|
||||||
|
|
||||||
- prefix redirections:
|
- prefix redirections:
|
||||||
|
|
||||||
<foo.txt cat
|
```zsh
|
||||||
|
<foo.txt cat
|
||||||
|
```
|
||||||
|
|
||||||
- redirection operators:
|
- redirection operators:
|
||||||
|
|
||||||
echo > foo.txt
|
```zsh
|
||||||
|
echo > foo.txt
|
||||||
|
```
|
||||||
|
|
||||||
- arithmetic evaluations:
|
- arithmetic evaluations:
|
||||||
|
|
||||||
(( 42 ))
|
```zsh
|
||||||
|
(( 42 ))
|
||||||
|
```
|
||||||
|
|
||||||
- $'' strings, including \x/\octal/\u/\U escapes
|
- $'' strings, including \x/\octal/\u/\U escapes
|
||||||
|
|
||||||
: $'foo\u0040bar'
|
```zsh
|
||||||
|
: $'foo\u0040bar'
|
||||||
|
```
|
||||||
|
|
||||||
- multiline strings:
|
- multiline strings:
|
||||||
|
|
||||||
% echo "line 1
|
```zsh
|
||||||
line 2"
|
% echo "line 1
|
||||||
|
line 2"
|
||||||
|
```
|
||||||
|
|
||||||
- string literals that haven't been finished:
|
- string literals that haven't been finished:
|
||||||
|
|
||||||
% echo "Hello, world
|
```zsh
|
||||||
|
% echo "Hello, world
|
||||||
|
```
|
||||||
- command words that involve tilde expansion:
|
- command words that involve tilde expansion:
|
||||||
|
|
||||||
% ~/bin/foo
|
```zsh
|
||||||
|
% ~/bin/foo
|
||||||
|
```
|
||||||
|
|
||||||
## Fixed highlighting of:
|
## Fixed highlighting of:
|
||||||
|
|
||||||
- quoted command words:
|
- quoted command words:
|
||||||
|
|
||||||
% \ls
|
```zsh
|
||||||
|
% \ls
|
||||||
|
```
|
||||||
|
|
||||||
- backslash escapes in "" strings:
|
- backslash escapes in "" strings:
|
||||||
|
|
||||||
% echo "\x41"
|
```zsh
|
||||||
|
% echo "\x41"
|
||||||
|
```
|
||||||
|
|
||||||
- noglob after command separator:
|
- noglob after command separator:
|
||||||
|
|
||||||
% :; noglob echo *
|
```zsh
|
||||||
|
% :; noglob echo *
|
||||||
|
```
|
||||||
|
|
||||||
- glob after command separator, when the first command starts with 'noglob':
|
- glob after command separator, when the first command starts with 'noglob':
|
||||||
|
|
||||||
% noglob true; echo *
|
```zsh
|
||||||
|
% noglob true; echo *
|
||||||
|
```
|
||||||
|
|
||||||
- the region (vi visual mode / set-mark-command) (issue #165)
|
- the region (vi visual mode / set-mark-command) (issue #165)
|
||||||
|
|
||||||
- redirection and command separators that would be highlighted as `path_approx`
|
- redirection and command separators that would be highlighted as `path_approx`
|
||||||
|
|
||||||
% echo foo;‸
|
```zsh
|
||||||
% echo <‸
|
% echo foo;‸
|
||||||
|
% echo <‸
|
||||||
|
```
|
||||||
|
|
||||||
(where `‸` represents the cursor location)
|
(where `‸` represents the cursor location)
|
||||||
|
|
||||||
- escaped globbing (outside quotes)
|
- escaped globbing (outside quotes)
|
||||||
|
|
||||||
% echo \*
|
```zsh
|
||||||
|
% echo \*
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Other changes:
|
## Other changes:
|
||||||
|
@ -24,7 +24,9 @@ How to activate highlighters
|
|||||||
To activate an highlighter, add it to the `ZSH_HIGHLIGHT_HIGHLIGHTERS` array in
|
To activate an highlighter, add it to the `ZSH_HIGHLIGHT_HIGHLIGHTERS` array in
|
||||||
`~/.zshrc`, for example:
|
`~/.zshrc`, for example:
|
||||||
|
|
||||||
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor)
|
```zsh
|
||||||
|
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor)
|
||||||
|
```
|
||||||
|
|
||||||
By default, `$ZSH_HIGHLIGHT_HIGHLIGHTERS` is unset and only the `main`
|
By default, `$ZSH_HIGHLIGHT_HIGHLIGHTERS` is unset and only the `main`
|
||||||
highlighter is active.
|
highlighter is active.
|
||||||
@ -58,10 +60,12 @@ To create your own `acme` highlighter:
|
|||||||
This function must return 0 when the highlighter needs to be called and
|
This function must return 0 when the highlighter needs to be called and
|
||||||
non-zero otherwise, for example:
|
non-zero otherwise, for example:
|
||||||
|
|
||||||
_zsh_highlight_highlighter_acme_predicate() {
|
```zsh
|
||||||
# Call this highlighter in SVN working copies
|
_zsh_highlight_highlighter_acme_predicate() {
|
||||||
[[ -d .svn ]]
|
# Call this highlighter in SVN working copies
|
||||||
}
|
[[ -d .svn ]]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
* Implement the `_zsh_highlight_highlighter_acme_paint` function.
|
* Implement the `_zsh_highlight_highlighter_acme_paint` function.
|
||||||
This function does the actual syntax highlighting, by calling
|
This function does the actual syntax highlighting, by calling
|
||||||
@ -71,18 +75,22 @@ To create your own `acme` highlighter:
|
|||||||
`: ${ZSH_HIGHLIGHT_STYLES[key]:=value}`, being sure to prefix
|
`: ${ZSH_HIGHLIGHT_STYLES[key]:=value}`, being sure to prefix
|
||||||
the key with your highlighter name and a colon. For example:
|
the key with your highlighter name and a colon. For example:
|
||||||
|
|
||||||
: ${ZSH_HIGHLIGHT_STYLES[acme:aurora]:=fg=green}
|
```zsh
|
||||||
|
: ${ZSH_HIGHLIGHT_STYLES[acme:aurora]:=fg=green}
|
||||||
|
|
||||||
_zsh_highlight_highlighter_acme_paint() {
|
_zsh_highlight_highlighter_acme_paint() {
|
||||||
# Colorize the whole buffer with the 'aurora' style
|
# Colorize the whole buffer with the 'aurora' style
|
||||||
_zsh_highlight_add_highlight 0 $#BUFFER acme:aurora
|
_zsh_highlight_add_highlight 0 $#BUFFER acme:aurora
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
If you need to test which options the user has set, test `zsyh_user_options`
|
If you need to test which options the user has set, test `zsyh_user_options`
|
||||||
with a sensible default if the option is not present in supported zsh
|
with a sensible default if the option is not present in supported zsh
|
||||||
versions. For example:
|
versions. For example:
|
||||||
|
|
||||||
[[ ${zsyh_user_options[ignoreclosebraces]:-off} == on ]]
|
```zsh
|
||||||
|
[[ ${zsyh_user_options[ignoreclosebraces]:-off} == on ]]
|
||||||
|
```
|
||||||
|
|
||||||
The option name must be all lowercase with no underscores and not an alias.
|
The option name must be all lowercase with no underscores and not an alias.
|
||||||
|
|
||||||
@ -100,6 +108,8 @@ To create your own `acme` highlighter:
|
|||||||
|
|
||||||
* Activate your highlighter in `~/.zshrc`:
|
* Activate your highlighter in `~/.zshrc`:
|
||||||
|
|
||||||
ZSH_HIGHLIGHT_HIGHLIGHTERS+=(acme)
|
```zsh
|
||||||
|
ZSH_HIGHLIGHT_HIGHLIGHTERS+=(acme)
|
||||||
|
```
|
||||||
|
|
||||||
* [Write tests](../tests/README.md).
|
* [Write tests](../tests/README.md).
|
||||||
|
@ -16,11 +16,13 @@ This highlighter defines the following styles:
|
|||||||
To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,
|
To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,
|
||||||
for example in `~/.zshrc`:
|
for example in `~/.zshrc`:
|
||||||
|
|
||||||
# To define styles for nested brackets up to level 4
|
```zsh
|
||||||
ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=blue,bold'
|
# To define styles for nested brackets up to level 4
|
||||||
ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=red,bold'
|
ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=blue,bold'
|
||||||
ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=yellow,bold'
|
ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=red,bold'
|
||||||
ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=magenta,bold'
|
ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=yellow,bold'
|
||||||
|
ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=magenta,bold'
|
||||||
|
```
|
||||||
|
|
||||||
The syntax for values is the same as the syntax of "types of highlighting" of
|
The syntax for values is the same as the syntax of "types of highlighting" of
|
||||||
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
||||||
|
@ -13,7 +13,9 @@ This highlighter defines the following styles:
|
|||||||
To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,
|
To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,
|
||||||
for example in `~/.zshrc`:
|
for example in `~/.zshrc`:
|
||||||
|
|
||||||
ZSH_HIGHLIGHT_STYLES[cursor]='bg=blue'
|
```zsh
|
||||||
|
ZSH_HIGHLIGHT_STYLES[cursor]='bg=blue'
|
||||||
|
```
|
||||||
|
|
||||||
The syntax for values is the same as the syntax of "types of highlighting" of
|
The syntax for values is the same as the syntax of "types of highlighting" of
|
||||||
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
||||||
|
@ -13,7 +13,9 @@ This highlighter defines the following styles:
|
|||||||
To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,
|
To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,
|
||||||
for example in `~/.zshrc`:
|
for example in `~/.zshrc`:
|
||||||
|
|
||||||
ZSH_HIGHLIGHT_STYLES[line]='bold'
|
```zsh
|
||||||
|
ZSH_HIGHLIGHT_STYLES[line]='bold'
|
||||||
|
```
|
||||||
|
|
||||||
The syntax for values is the same as the syntax of "types of highlighting" of
|
The syntax for values is the same as the syntax of "types of highlighting" of
|
||||||
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
||||||
|
@ -65,17 +65,19 @@ This highlighter defines the following styles:
|
|||||||
To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,
|
To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,
|
||||||
for example in `~/.zshrc`:
|
for example in `~/.zshrc`:
|
||||||
|
|
||||||
# Declare the variable
|
```zsh
|
||||||
typeset -A ZSH_HIGHLIGHT_STYLES
|
# Declare the variable
|
||||||
|
typeset -A ZSH_HIGHLIGHT_STYLES
|
||||||
|
|
||||||
# To differentiate aliases from other command types
|
# To differentiate aliases from other command types
|
||||||
ZSH_HIGHLIGHT_STYLES[alias]='fg=magenta,bold'
|
ZSH_HIGHLIGHT_STYLES[alias]='fg=magenta,bold'
|
||||||
|
|
||||||
# To have paths colored instead of underlined
|
# To have paths colored instead of underlined
|
||||||
ZSH_HIGHLIGHT_STYLES[path]='fg=cyan'
|
ZSH_HIGHLIGHT_STYLES[path]='fg=cyan'
|
||||||
|
|
||||||
# To disable highlighting of globbing expressions
|
# To disable highlighting of globbing expressions
|
||||||
ZSH_HIGHLIGHT_STYLES[globbing]='none'
|
ZSH_HIGHLIGHT_STYLES[globbing]='none'
|
||||||
|
```
|
||||||
|
|
||||||
The syntax for values is the same as the syntax of "types of highlighting" of
|
The syntax for values is the same as the syntax of "types of highlighting" of
|
||||||
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
||||||
@ -83,10 +85,12 @@ manual page][zshzle-Character-Highlighting].
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
To avoid partial path lookups on a path, add the path to the `X_ZSH_HIGHLIGHT_DIRS_BLACKLIST` array.
|
To avoid partial path lookups on a path, add the path to the `ZSH_HIGHLIGHT_DIRS_BLACKLIST` array.
|
||||||
This interface is still experimental.
|
This interface is still experimental.
|
||||||
|
|
||||||
X_ZSH_HIGHLIGHT_DIRS_BLACKLIST+=(/mnt/slow_share)
|
```zsh
|
||||||
|
ZSH_HIGHLIGHT_DIRS_BLACKLIST+=(/mnt/slow_share)
|
||||||
|
```
|
||||||
|
|
||||||
### Useless trivia
|
### Useless trivia
|
||||||
|
|
||||||
|
@ -9,11 +9,13 @@ This is the `pattern` highlighter, that highlights user-defined patterns.
|
|||||||
To use this highlighter, associate patterns with styles in the
|
To use this highlighter, associate patterns with styles in the
|
||||||
`ZSH_HIGHLIGHT_PATTERNS` associative array, for example in `~/.zshrc`:
|
`ZSH_HIGHLIGHT_PATTERNS` associative array, for example in `~/.zshrc`:
|
||||||
|
|
||||||
# Declare the variable
|
```zsh
|
||||||
typeset -A ZSH_HIGHLIGHT_PATTERNS
|
# Declare the variable
|
||||||
|
typeset -A ZSH_HIGHLIGHT_PATTERNS
|
||||||
|
|
||||||
# To have commands starting with `rm -rf` in red:
|
# To have commands starting with `rm -rf` in red:
|
||||||
ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
|
ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
|
||||||
|
```
|
||||||
|
|
||||||
The syntax for values is the same as the syntax of "types of highlighting" of
|
The syntax for values is the same as the syntax of "types of highlighting" of
|
||||||
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
||||||
|
@ -10,8 +10,10 @@ patterns.
|
|||||||
To use this highlighter, associate regular expressions with styles in the
|
To use this highlighter, associate regular expressions with styles in the
|
||||||
`ZSH_HIGHLIGHT_REGEXP` associative array, for example in `~/.zshrc`:
|
`ZSH_HIGHLIGHT_REGEXP` associative array, for example in `~/.zshrc`:
|
||||||
|
|
||||||
typeset -A ZSH_HIGHLIGHT_PATTERNS
|
```zsh
|
||||||
ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' fg=123,bold)
|
typeset -A ZSH_HIGHLIGHT_PATTERNS
|
||||||
|
ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' fg=123,bold)
|
||||||
|
```
|
||||||
|
|
||||||
This will highlight "sudo" only as a complete word, i.e., "sudo cmd", but not
|
This will highlight "sudo" only as a complete word, i.e., "sudo cmd", but not
|
||||||
"sudoedit"
|
"sudoedit"
|
||||||
|
@ -14,7 +14,9 @@ This highlighter defines the following styles:
|
|||||||
To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,
|
To override one of those styles, change its entry in `ZSH_HIGHLIGHT_STYLES`,
|
||||||
for example in `~/.zshrc`:
|
for example in `~/.zshrc`:
|
||||||
|
|
||||||
ZSH_HIGHLIGHT_STYLES[root]='bg=red'
|
```zsh
|
||||||
|
ZSH_HIGHLIGHT_STYLES[root]='bg=red'
|
||||||
|
```
|
||||||
|
|
||||||
The syntax for values is the same as the syntax of "types of highlighting" of
|
The syntax for values is the same as the syntax of "types of highlighting" of
|
||||||
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
|
||||||
|
@ -73,8 +73,10 @@ _zsh_highlight_main_add_region_highlight() {
|
|||||||
integer start=$1 end=$2
|
integer start=$1 end=$2
|
||||||
shift 2
|
shift 2
|
||||||
|
|
||||||
(( highlighted_alias )) && return
|
if (( in_alias )); then
|
||||||
(( in_alias )) && highlighted_alias=1
|
[[ $1 == unknown-token ]] && alias_style=unknown-token
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
# The calculation was relative to $buf but region_highlight is relative to $BUFFER.
|
# The calculation was relative to $buf but region_highlight is relative to $BUFFER.
|
||||||
(( start += buf_offset ))
|
(( start += buf_offset ))
|
||||||
@ -173,6 +175,10 @@ _zsh_highlight_main__type() {
|
|||||||
REPLY=builtin
|
REPLY=builtin
|
||||||
elif (( $+commands[(e)$1] )); then
|
elif (( $+commands[(e)$1] )); then
|
||||||
REPLY=command
|
REPLY=command
|
||||||
|
# None of the special hashes had a match, so fall back to 'type -w', for
|
||||||
|
# forward compatibility with future versions of zsh that may add new command
|
||||||
|
# types.
|
||||||
|
#
|
||||||
# zsh 5.2 and older have a bug whereby running 'type -w ./sudo' implicitly
|
# zsh 5.2 and older have a bug whereby running 'type -w ./sudo' implicitly
|
||||||
# runs 'hash ./sudo=/usr/local/bin/./sudo' (assuming /usr/local/bin/sudo
|
# runs 'hash ./sudo=/usr/local/bin/./sudo' (assuming /usr/local/bin/sudo
|
||||||
# exists and is in $PATH). Avoid triggering the bug, at the expense of
|
# exists and is in $PATH). Avoid triggering the bug, at the expense of
|
||||||
@ -180,11 +186,15 @@ _zsh_highlight_main__type() {
|
|||||||
#
|
#
|
||||||
# The first disjunct mimics the isrelative() C call from the zsh bug.
|
# The first disjunct mimics the isrelative() C call from the zsh bug.
|
||||||
elif { [[ $1 != */* ]] || is-at-least 5.3 } &&
|
elif { [[ $1 != */* ]] || is-at-least 5.3 } &&
|
||||||
! builtin type -w -- $1 >/dev/null 2>&1; then
|
# Add a subshell to avoid a zsh upstream bug; see issue #606.
|
||||||
|
# ### Remove the subshell when we stop supporting zsh 5.7.1 (I assume 5.8 will have the bugfix).
|
||||||
|
! (builtin type -w -- $1) >/dev/null 2>&1; then
|
||||||
REPLY=none
|
REPLY=none
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if ! (( $+REPLY )); then
|
if ! (( $+REPLY )); then
|
||||||
|
# zsh/parameter not available or had no matches.
|
||||||
|
#
|
||||||
# Note that 'type -w' will run 'rehash' implicitly.
|
# Note that 'type -w' will run 'rehash' implicitly.
|
||||||
#
|
#
|
||||||
# We 'unalias' in a subshell, so the parent shell is not affected.
|
# We 'unalias' in a subshell, so the parent shell is not affected.
|
||||||
@ -287,7 +297,8 @@ _zsh_highlight_highlighter_main_paint()
|
|||||||
# that wouldn't be followed by a colon in a getopts specification.
|
# that wouldn't be followed by a colon in a getopts specification.
|
||||||
local flags_sans_argument
|
local flags_sans_argument
|
||||||
# $precommand_options maps precommand name to values of $flags_with_argument and
|
# $precommand_options maps precommand name to values of $flags_with_argument and
|
||||||
# $flags_sans_argument for that precommand, joined by a colon.
|
# $flags_sans_argument for that precommand, joined by a colon. (The value is NOT
|
||||||
|
# a getopt(3) spec, although it resembles one.)
|
||||||
#
|
#
|
||||||
# Currently, setting $flags_sans_argument is only important for commands that
|
# Currently, setting $flags_sans_argument is only important for commands that
|
||||||
# have a non-empty $flags_with_argument; see test-data/precommand4.zsh.
|
# have a non-empty $flags_with_argument; see test-data/precommand4.zsh.
|
||||||
@ -305,6 +316,7 @@ _zsh_highlight_highlighter_main_paint()
|
|||||||
'nice' n: # as of current POSIX spec
|
'nice' n: # as of current POSIX spec
|
||||||
'pkexec' '' # doesn't take short options; immune to #121 because it's usually not passed --option flags
|
'pkexec' '' # doesn't take short options; immune to #121 because it's usually not passed --option flags
|
||||||
'sudo' Cgprtu:AEHKPSVbhiklnsv # as of sudo 1.8.21p2
|
'sudo' Cgprtu:AEHKPSVbhiklnsv # as of sudo 1.8.21p2
|
||||||
|
'stdbuf' ioe:
|
||||||
)
|
)
|
||||||
|
|
||||||
if [[ $zsyh_user_options[ignorebraces] == on || ${zsyh_user_options[ignoreclosebraces]:-off} == on ]]; then
|
if [[ $zsyh_user_options[ignorebraces] == on || ${zsyh_user_options[ignoreclosebraces]:-off} == on ]]; then
|
||||||
@ -343,6 +355,12 @@ _zsh_highlight_highlighter_main_paint()
|
|||||||
'!' # reserved word; unrelated to $histchars[1]
|
'!' # reserved word; unrelated to $histchars[1]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (( $+X_ZSH_HIGHLIGHT_DIRS_BLACKLIST )); then
|
||||||
|
print >&2 'zsh-syntax-highlighting: X_ZSH_HIGHLIGHT_DIRS_BLACKLIST is deprecated. Please use ZSH_HIGHLIGHT_DIRS_BLACKLIST.'
|
||||||
|
ZSH_HIGHLIGHT_DIRS_BLACKLIST=($X_ZSH_HIGHLIGHT_DIRS_BLACKLIST)
|
||||||
|
unset X_ZSH_HIGHLIGHT_DIRS_BLACKLIST
|
||||||
|
fi
|
||||||
|
|
||||||
_zsh_highlight_main_highlighter_highlight_list -$#PREBUFFER '' 1 "$PREBUFFER$BUFFER"
|
_zsh_highlight_main_highlighter_highlight_list -$#PREBUFFER '' 1 "$PREBUFFER$BUFFER"
|
||||||
|
|
||||||
# end is a reserved word
|
# end is a reserved word
|
||||||
@ -367,15 +385,16 @@ _zsh_highlight_highlighter_main_paint()
|
|||||||
_zsh_highlight_main_highlighter_highlight_list()
|
_zsh_highlight_main_highlighter_highlight_list()
|
||||||
{
|
{
|
||||||
integer start_pos end_pos=0 buf_offset=$1 has_end=$3
|
integer start_pos end_pos=0 buf_offset=$1 has_end=$3
|
||||||
|
# alias_style is the style to apply to an alias once in_alias=0
|
||||||
|
# Usually 'alias' but set to 'unknown-token' if any word expanded from
|
||||||
|
# the alias would be highlighted as unknown-token
|
||||||
# last_alias is the last alias arg (lhs) expanded (if in an alias).
|
# last_alias is the last alias arg (lhs) expanded (if in an alias).
|
||||||
# This allows for expanding alias ls='ls -l' while avoiding loops.
|
# This allows for expanding alias ls='ls -l' while avoiding loops.
|
||||||
local arg buf=$4 highlight_glob=true last_alias style
|
local alias_style arg buf=$4 highlight_glob=true last_alias style
|
||||||
local in_array_assignment=false # true between 'a=(' and the matching ')'
|
local in_array_assignment=false # true between 'a=(' and the matching ')'
|
||||||
# highlighted_alias is 1 when the alias arg has been highlighted with a non-alias style.
|
|
||||||
# E.g. alias x=ls; x has been highlighted as alias AND command.
|
|
||||||
# in_alias is equal to the number of shifts needed until arg=args[1] pops an
|
# in_alias is equal to the number of shifts needed until arg=args[1] pops an
|
||||||
# arg from BUFFER and not added by an alias.
|
# arg from BUFFER and not added by an alias.
|
||||||
integer highlighted_alias=0 in_alias=0 len=$#buf
|
integer in_alias=0 len=$#buf
|
||||||
local -a match mbegin mend list_highlights
|
local -a match mbegin mend list_highlights
|
||||||
# seen_alias is a map of aliases already seen to avoid loops like alias a=b b=a
|
# seen_alias is a map of aliases already seen to avoid loops like alias a=b b=a
|
||||||
local -A seen_alias
|
local -A seen_alias
|
||||||
@ -448,7 +467,11 @@ _zsh_highlight_main_highlighter_highlight_list()
|
|||||||
shift args
|
shift args
|
||||||
if (( in_alias )); then
|
if (( in_alias )); then
|
||||||
(( in_alias-- ))
|
(( in_alias-- ))
|
||||||
(( in_alias == 0 )) && highlighted_alias=0 last_alias= seen_alias=()
|
if (( in_alias == 0 )); then
|
||||||
|
last_alias= seen_alias=()
|
||||||
|
# start_pos and end_pos are of the alias (previous $arg) here
|
||||||
|
_zsh_highlight_main_add_region_highlight $start_pos $end_pos $alias_style
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Initialize this_word and next_word.
|
# Initialize this_word and next_word.
|
||||||
@ -525,6 +548,7 @@ _zsh_highlight_main_highlighter_highlight_list()
|
|||||||
# Avoid looping forever on alias a=b b=c c=b, but allow alias foo='foo bar'
|
# Avoid looping forever on alias a=b b=c c=b, but allow alias foo='foo bar'
|
||||||
# Also mark insane aliases as unknown-token (cf. #263).
|
# Also mark insane aliases as unknown-token (cf. #263).
|
||||||
if (( $+seen_alias[$arg] )) || [[ $arg == ?*=* ]]; then
|
if (( $+seen_alias[$arg] )) || [[ $arg == ?*=* ]]; then
|
||||||
|
(( in_alias == 0 )) && in_alias=1
|
||||||
_zsh_highlight_main_add_region_highlight $start_pos $end_pos unknown-token
|
_zsh_highlight_main_add_region_highlight $start_pos $end_pos unknown-token
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
@ -533,11 +557,14 @@ _zsh_highlight_main_highlighter_highlight_list()
|
|||||||
_zsh_highlight_main__resolve_alias $arg
|
_zsh_highlight_main__resolve_alias $arg
|
||||||
local -a alias_args
|
local -a alias_args
|
||||||
# Elision is desired in case alias x=''
|
# Elision is desired in case alias x=''
|
||||||
alias_args=( ${interactive_comments-${(z)REPLY}}
|
if [[ $zsyh_user_options[interactivecomments] == on ]]; then
|
||||||
${interactive_comments+${(zZ+c+)REPLY}} )
|
alias_args=(${(zZ+c+)REPLY})
|
||||||
|
else
|
||||||
|
alias_args=(${(z)REPLY})
|
||||||
|
fi
|
||||||
args=( $alias_args $args )
|
args=( $alias_args $args )
|
||||||
if (( in_alias == 0 )); then
|
if (( in_alias == 0 )); then
|
||||||
_zsh_highlight_main_add_region_highlight $start_pos $end_pos alias
|
alias_style=alias
|
||||||
# Add one because we will in_alias-- on the next loop iteration so
|
# Add one because we will in_alias-- on the next loop iteration so
|
||||||
# this iteration should be considered in in_alias as well
|
# this iteration should be considered in in_alias as well
|
||||||
(( in_alias += $#alias_args + 1 ))
|
(( in_alias += $#alias_args + 1 ))
|
||||||
@ -896,6 +923,7 @@ _zsh_highlight_main_highlighter_highlight_list()
|
|||||||
fi
|
fi
|
||||||
_zsh_highlight_main_add_region_highlight $start_pos $end_pos $style
|
_zsh_highlight_main_add_region_highlight $start_pos $end_pos $style
|
||||||
done
|
done
|
||||||
|
(( in_alias == 1 )) && in_alias=0 _zsh_highlight_main_add_region_highlight $start_pos $end_pos $alias_style
|
||||||
[[ "$proc_buf" = (#b)(#s)(([[:space:]]|\\$'\n')#) ]]
|
[[ "$proc_buf" = (#b)(#s)(([[:space:]]|\\$'\n')#) ]]
|
||||||
REPLY=$(( end_pos + ${#match[1]} - 1 ))
|
REPLY=$(( end_pos + ${#match[1]} - 1 ))
|
||||||
reply=($list_highlights)
|
reply=($list_highlights)
|
||||||
@ -944,7 +972,7 @@ _zsh_highlight_main_highlighter_check_path()
|
|||||||
tmp_path=$tmp_path:a
|
tmp_path=$tmp_path:a
|
||||||
|
|
||||||
while [[ $tmp_path != / ]]; do
|
while [[ $tmp_path != / ]]; do
|
||||||
[[ -n ${(M)X_ZSH_HIGHLIGHT_DIRS_BLACKLIST:#$tmp_path} ]] && return 1
|
[[ -n ${(M)ZSH_HIGHLIGHT_DIRS_BLACKLIST:#$tmp_path} ]] && return 1
|
||||||
tmp_path=$tmp_path:h
|
tmp_path=$tmp_path:h
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -1035,9 +1063,10 @@ _zsh_highlight_main_highlighter_highlight_argument()
|
|||||||
highlights+=($reply)
|
highlights+=($reply)
|
||||||
;;
|
;;
|
||||||
'$')
|
'$')
|
||||||
path_eligible=0
|
if [[ $arg[i+1] != "'" ]]; then
|
||||||
|
path_eligible=0
|
||||||
|
fi
|
||||||
if [[ $arg[i+1] == "'" ]]; then
|
if [[ $arg[i+1] == "'" ]]; then
|
||||||
path_eligible=1
|
|
||||||
_zsh_highlight_main_highlighter_highlight_dollar_quote $i
|
_zsh_highlight_main_highlighter_highlight_dollar_quote $i
|
||||||
(( i = REPLY ))
|
(( i = REPLY ))
|
||||||
highlights+=($reply)
|
highlights+=($reply)
|
||||||
@ -1227,7 +1256,7 @@ _zsh_highlight_main_highlighter_highlight_double_quote()
|
|||||||
saved_reply=($reply)
|
saved_reply=($reply)
|
||||||
reply=()
|
reply=()
|
||||||
for 1 2 in $breaks; do
|
for 1 2 in $breaks; do
|
||||||
reply+=($1 $2 $style)
|
(( $1 != $2 )) && reply+=($1 $2 $style)
|
||||||
done
|
done
|
||||||
reply+=($saved_reply)
|
reply+=($saved_reply)
|
||||||
REPLY=$i
|
REPLY=$i
|
||||||
@ -1388,4 +1417,4 @@ else
|
|||||||
# Make sure the cache is unset
|
# Make sure the cache is unset
|
||||||
unset _zsh_highlight_main__command_type_cache
|
unset _zsh_highlight_main__command_type_cache
|
||||||
fi
|
fi
|
||||||
typeset -ga X_ZSH_HIGHLIGHT_DIRS_BLACKLIST
|
typeset -ga ZSH_HIGHLIGHT_DIRS_BLACKLIST
|
||||||
|
@ -33,6 +33,5 @@ alias x=$'# foo\npwd'
|
|||||||
BUFFER='x'
|
BUFFER='x'
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 1 alias' # x
|
'1 1 alias "issue #616"' # x
|
||||||
'1 1 comment' # x (#)
|
|
||||||
)
|
)
|
||||||
|
@ -33,6 +33,5 @@ alias x=$'# foo\npwd'
|
|||||||
BUFFER='x'
|
BUFFER='x'
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 1 alias' # x
|
|
||||||
'1 1 unknown-token' # x (#)
|
'1 1 unknown-token' # x (#)
|
||||||
)
|
)
|
||||||
|
@ -33,7 +33,6 @@ BUFFER='x file echo'
|
|||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 1 alias' # x
|
'1 1 alias' # x
|
||||||
'1 1 builtin' # x (echo)
|
|
||||||
'3 6 default' # file
|
'3 6 default' # file
|
||||||
'8 11 builtin' # echo
|
'8 11 builtin' # echo
|
||||||
)
|
)
|
||||||
|
@ -33,7 +33,6 @@ alias a=b b=c c=b
|
|||||||
BUFFER='a foo; :'
|
BUFFER='a foo; :'
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 1 alias' # a
|
|
||||||
'1 1 unknown-token' # a (invalid alias loop)
|
'1 1 unknown-token' # a (invalid alias loop)
|
||||||
'3 5 default' # foo
|
'3 5 default' # foo
|
||||||
'6 6 commandseparator' # ;
|
'6 6 commandseparator' # ;
|
||||||
|
@ -35,7 +35,6 @@ BUFFER='a -u phy1729 echo; :'
|
|||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 1 alias' # a
|
'1 1 alias' # a
|
||||||
'1 1 precommand' # a (sudo)
|
|
||||||
'3 4 single-hyphen-option' # -u
|
'3 4 single-hyphen-option' # -u
|
||||||
'6 12 default' # phy1729
|
'6 12 default' # phy1729
|
||||||
'14 17 builtin' # echo
|
'14 17 builtin' # echo
|
||||||
|
@ -34,7 +34,6 @@ BUFFER='a foo; :'
|
|||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 1 alias' # a
|
'1 1 alias' # a
|
||||||
'1 1 builtin' # a (:)
|
|
||||||
'3 5 default' # foo
|
'3 5 default' # foo
|
||||||
'6 6 commandseparator' # ;
|
'6 6 commandseparator' # ;
|
||||||
'8 8 builtin' # :
|
'8 8 builtin' # :
|
||||||
|
@ -28,15 +28,14 @@
|
|||||||
# vim: ft=zsh sw=2 ts=2 et
|
# vim: ft=zsh sw=2 ts=2 et
|
||||||
# -------------------------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
alias sdu='sudo -u'
|
alias sudo_u='sudo -u'
|
||||||
sudo(){}
|
sudo(){}
|
||||||
|
|
||||||
BUFFER='sdu phy1729 echo foo'
|
BUFFER='sudo_u phy1729 echo foo'
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 3 alias' # sdu
|
'1 6 alias' # sudo_u
|
||||||
'1 3 precommand' # sdu (sudo)
|
'8 14 default' # phy1729
|
||||||
'5 11 default' # phy1729
|
'17 19 command "issue #540"' # echo (not builtin)
|
||||||
'13 16 commmand "issue #540"' # echo (not builtin)
|
'21 23 default' # foo
|
||||||
'18 20 default' # foo
|
|
||||||
)
|
)
|
||||||
|
@ -28,16 +28,15 @@
|
|||||||
# vim: ft=zsh sw=2 ts=2 et
|
# vim: ft=zsh sw=2 ts=2 et
|
||||||
# -------------------------------------------------------------------------------------------------
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
alias sde='sudo -e'
|
alias sudo_b='sudo -b'
|
||||||
alias seu='sde -u'
|
alias sudo_b_u='sudo_b -u'
|
||||||
sudo(){}
|
sudo(){}
|
||||||
|
|
||||||
BUFFER='seu phy1729 echo foo'
|
BUFFER='sudo_b_u phy1729 echo foo'
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 3 alias' # seu
|
'1 8 alias' # sudo_b_u
|
||||||
'1 3 precommand' # seu (sudo)
|
'10 16 default' # phy1729
|
||||||
'5 11 default' # phy1729
|
'18 21 command "issue #540"' # echo (not builtin)
|
||||||
'13 16 commmand "issue #540"' # echo (not builtin)
|
'23 25 default' # foo
|
||||||
'18 20 default' # foo
|
|
||||||
)
|
)
|
||||||
|
@ -32,7 +32,6 @@ BUFFER='x foo echo bar'
|
|||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 1 alias' # x
|
'1 1 alias' # x
|
||||||
'1 1 redirection' # x (>)
|
|
||||||
'3 5 default' # foo
|
'3 5 default' # foo
|
||||||
'7 10 builtin' # echo
|
'7 10 builtin' # echo
|
||||||
'12 14 default' # bar
|
'12 14 default' # bar
|
||||||
|
@ -34,6 +34,5 @@ BUFFER='echo bar'
|
|||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 4 alias' # echo
|
'1 4 alias' # echo
|
||||||
'1 4 builtin' # echo
|
|
||||||
'6 8 default' # bar
|
'6 8 default' # bar
|
||||||
)
|
)
|
||||||
|
@ -32,6 +32,5 @@ alias x=/
|
|||||||
BUFFER=$'x'
|
BUFFER=$'x'
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 1 alias' # x
|
|
||||||
'1 1 unknown-token "issue #202"' # x (/)
|
'1 1 unknown-token "issue #202"' # x (/)
|
||||||
)
|
)
|
||||||
|
@ -48,7 +48,6 @@ fi
|
|||||||
expected_region_highlight+=(
|
expected_region_highlight+=(
|
||||||
"9 9 commandseparator" # ;
|
"9 9 commandseparator" # ;
|
||||||
"11 16 alias" # alias1
|
"11 16 alias" # alias1
|
||||||
"11 16 command" # alias1 (ls)
|
|
||||||
"17 17 commandseparator" # ;
|
"17 17 commandseparator" # ;
|
||||||
"19 24 unknown-token" # alias2
|
"19 24 unknown-token" # alias2
|
||||||
)
|
)
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
mkdir foo
|
mkdir foo
|
||||||
touch foo/bar
|
touch foo/bar
|
||||||
BUFFER=": foo/bar $PWD/foo foo/b"
|
BUFFER=": foo/bar $PWD/foo foo/b"
|
||||||
X_ZSH_HIGHLIGHT_DIRS_BLACKLIST=($PWD/foo $PWD/bar)
|
ZSH_HIGHLIGHT_DIRS_BLACKLIST=($PWD/foo $PWD/bar)
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
'1 1 builtin' # :
|
'1 1 builtin' # :
|
||||||
|
@ -32,6 +32,5 @@ BUFFER='x ls'
|
|||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
"1 1 alias" # x
|
"1 1 alias" # x
|
||||||
"1 1 precommand" # x (command)
|
|
||||||
"3 4 command" # ls
|
"3 4 command" # ls
|
||||||
)
|
)
|
||||||
|
@ -34,7 +34,6 @@ BUFFER='a;f;'
|
|||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
"1 1 alias" # a
|
"1 1 alias" # a
|
||||||
"1 1 builtin" # a (:)
|
|
||||||
"2 2 commandseparator" # ;
|
"2 2 commandseparator" # ;
|
||||||
"3 3 function" # f
|
"3 3 function" # f
|
||||||
"4 4 commandseparator" # ;
|
"4 4 commandseparator" # ;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
`tig --abbrev=12 --abbrev-commit 0.4.1..upstream/master`
|
`tig --abbrev=12 --abbrev-commit 0.4.1..upstream/master`
|
||||||
- Remove `-dev` suffix from `./.version`;
|
- Remove `-dev` suffix from `./.version`;
|
||||||
Commit that using `git commit -m "Tag version $(<.version)." .version`;
|
Commit that using `git commit -m "Tag version $(<.version)." .version`;
|
||||||
Tag it using `git tag -m "Tag version $(<.version)"`;
|
Tag it using `git tag -s -m "Tag version $(<.version)"`;
|
||||||
Increment `./.version` and restore the `-dev` suffix;
|
Increment `./.version` and restore the `-dev` suffix;
|
||||||
Commit that using `git commit -C b5c30ae52638e81a38fe5329081c5613d7bd6ca5 .version`.
|
Commit that using `git commit -C b5c30ae52638e81a38fe5329081c5613d7bd6ca5 .version`.
|
||||||
- Push with `git push && git push --tags`
|
- Push with `git push && git push --tags`
|
||||||
|
@ -38,17 +38,19 @@ computes `$region_highlight`), but will not affect subsequent tests. The
|
|||||||
current working directory of tests is set to a newly-created empty directory,
|
current working directory of tests is set to a newly-created empty directory,
|
||||||
which is automatically cleaned up after the test exits. For example:
|
which is automatically cleaned up after the test exits. For example:
|
||||||
|
|
||||||
setopt PATH_DIRS
|
```zsh
|
||||||
mkdir -p foo/bar
|
setopt PATH_DIRS
|
||||||
touch foo/bar/testing-issue-228
|
mkdir -p foo/bar
|
||||||
chmod +x foo/bar/testing-issue-228
|
touch foo/bar/testing-issue-228
|
||||||
path+=( "$PWD"/foo )
|
chmod +x foo/bar/testing-issue-228
|
||||||
|
path+=( "$PWD"/foo )
|
||||||
|
|
||||||
BUFFER='bar/testing-issue-228'
|
BUFFER='bar/testing-issue-228'
|
||||||
|
|
||||||
expected_region_highlight=(
|
expected_region_highlight=(
|
||||||
"1 21 command" # bar/testing-issue-228
|
"1 21 command" # bar/testing-issue-228
|
||||||
)
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
Writing new tests
|
Writing new tests
|
||||||
@ -56,7 +58,9 @@ Writing new tests
|
|||||||
|
|
||||||
An experimental tool is available to generate test files:
|
An experimental tool is available to generate test files:
|
||||||
|
|
||||||
zsh -f tests/generate.zsh 'ls -x' acme newfile
|
```zsh
|
||||||
|
zsh -f tests/generate.zsh 'ls -x' acme newfile
|
||||||
|
```
|
||||||
|
|
||||||
This generates a `highlighters/acme/test-data/newfile.zsh` test file based on
|
This generates a `highlighters/acme/test-data/newfile.zsh` test file based on
|
||||||
the current highlighting of the given `$BUFFER` (in this case, `ls -x`).
|
the current highlighting of the given `$BUFFER` (in this case, `ls -x`).
|
||||||
@ -71,11 +75,15 @@ Highlighting test
|
|||||||
[`test-highlighting.zsh`](tests/test-highlighting.zsh) tests the correctness of
|
[`test-highlighting.zsh`](tests/test-highlighting.zsh) tests the correctness of
|
||||||
the highlighting. Usage:
|
the highlighting. Usage:
|
||||||
|
|
||||||
zsh test-highlighting.zsh <HIGHLIGHTER NAME>
|
```zsh
|
||||||
|
zsh test-highlighting.zsh <HIGHLIGHTER NAME>
|
||||||
|
```
|
||||||
|
|
||||||
All tests may be run with
|
All tests may be run with
|
||||||
|
|
||||||
make test
|
```zsh
|
||||||
|
make test
|
||||||
|
```
|
||||||
|
|
||||||
which will run all highlighting tests and report results in [TAP format][TAP].
|
which will run all highlighting tests and report results in [TAP format][TAP].
|
||||||
By default, the results of all tests will be printed; to show only "interesting"
|
By default, the results of all tests will be printed; to show only "interesting"
|
||||||
@ -91,8 +99,12 @@ Performance test
|
|||||||
[`test-perfs.zsh`](tests/test-perfs.zsh) measures the time spent doing the
|
[`test-perfs.zsh`](tests/test-perfs.zsh) measures the time spent doing the
|
||||||
highlighting. Usage:
|
highlighting. Usage:
|
||||||
|
|
||||||
zsh test-perfs.zsh <HIGHLIGHTER NAME>
|
```zsh
|
||||||
|
zsh test-perfs.zsh <HIGHLIGHTER NAME>
|
||||||
|
```
|
||||||
|
|
||||||
All tests may be run with
|
All tests may be run with
|
||||||
|
|
||||||
make perf
|
```zsh
|
||||||
|
make perf
|
||||||
|
```
|
||||||
|
@ -101,7 +101,7 @@ _zsh_highlight()
|
|||||||
typeset -r zsyh_user_options
|
typeset -r zsyh_user_options
|
||||||
|
|
||||||
emulate -L zsh
|
emulate -L zsh
|
||||||
setopt localoptions warncreateglobal
|
setopt localoptions warncreateglobal nobashrematch
|
||||||
local REPLY # don't leak $REPLY into global scope
|
local REPLY # don't leak $REPLY into global scope
|
||||||
|
|
||||||
# Do not highlight if there are more than 300 chars in the buffer. It's most
|
# Do not highlight if there are more than 300 chars in the buffer. It's most
|
||||||
@ -157,24 +157,25 @@ _zsh_highlight()
|
|||||||
# Re-apply zle_highlight settings
|
# Re-apply zle_highlight settings
|
||||||
|
|
||||||
# region
|
# region
|
||||||
if (( REGION_ACTIVE == 1 )); then
|
() {
|
||||||
_zsh_highlight_apply_zle_highlight region standout "$MARK" "$CURSOR"
|
(( REGION_ACTIVE )) || return
|
||||||
elif (( REGION_ACTIVE == 2 )); then
|
integer min max
|
||||||
() {
|
if (( MARK > CURSOR )) ; then
|
||||||
|
min=$CURSOR max=$MARK
|
||||||
|
else
|
||||||
|
min=$MARK max=$CURSOR
|
||||||
|
fi
|
||||||
|
if (( REGION_ACTIVE == 1 )); then
|
||||||
|
[[ $KEYMAP = vicmd ]] && (( max++ ))
|
||||||
|
elif (( REGION_ACTIVE == 2 )); then
|
||||||
local needle=$'\n'
|
local needle=$'\n'
|
||||||
integer min max
|
|
||||||
if (( MARK > CURSOR )) ; then
|
|
||||||
min=$CURSOR max=$MARK
|
|
||||||
else
|
|
||||||
min=$MARK max=$CURSOR
|
|
||||||
fi
|
|
||||||
# CURSOR and MARK are 0 indexed between letters like region_highlight
|
# CURSOR and MARK are 0 indexed between letters like region_highlight
|
||||||
# Do not include the newline in the highlight
|
# Do not include the newline in the highlight
|
||||||
(( min = ${BUFFER[(Ib:min:)$needle]} ))
|
(( min = ${BUFFER[(Ib:min:)$needle]} ))
|
||||||
(( max = ${BUFFER[(ib:max:)$needle]} - 1 ))
|
(( max = ${BUFFER[(ib:max:)$needle]} - 1 ))
|
||||||
_zsh_highlight_apply_zle_highlight region standout "$min" "$max"
|
fi
|
||||||
}
|
_zsh_highlight_apply_zle_highlight region standout "$min" "$max"
|
||||||
fi
|
}
|
||||||
|
|
||||||
# yank / paste (zsh-5.1.1 and newer)
|
# yank / paste (zsh-5.1.1 and newer)
|
||||||
(( $+YANK_ACTIVE )) && (( YANK_ACTIVE )) && _zsh_highlight_apply_zle_highlight paste standout "$YANK_START" "$YANK_END"
|
(( $+YANK_ACTIVE )) && (( YANK_ACTIVE )) && _zsh_highlight_apply_zle_highlight paste standout "$YANK_START" "$YANK_END"
|
||||||
@ -432,6 +433,12 @@ zmodload zsh/parameter 2>/dev/null || true
|
|||||||
# Initialize the array of active highlighters if needed.
|
# Initialize the array of active highlighters if needed.
|
||||||
[[ $#ZSH_HIGHLIGHT_HIGHLIGHTERS -eq 0 ]] && ZSH_HIGHLIGHT_HIGHLIGHTERS=(main)
|
[[ $#ZSH_HIGHLIGHT_HIGHLIGHTERS -eq 0 ]] && ZSH_HIGHLIGHT_HIGHLIGHTERS=(main)
|
||||||
|
|
||||||
|
if (( $+X_ZSH_HIGHLIGHT_DIRS_BLACKLIST )); then
|
||||||
|
print >&2 'zsh-syntax-highlighting: X_ZSH_HIGHLIGHT_DIRS_BLACKLIST is deprecated. Please use ZSH_HIGHLIGHT_DIRS_BLACKLIST.'
|
||||||
|
ZSH_HIGHLIGHT_DIRS_BLACKLIST=($X_ZSH_HIGHLIGHT_DIRS_BLACKLIST)
|
||||||
|
unset X_ZSH_HIGHLIGHT_DIRS_BLACKLIST
|
||||||
|
fi
|
||||||
|
|
||||||
# Restore the aliases we unned
|
# Restore the aliases we unned
|
||||||
eval "$zsh_highlight__aliases"
|
eval "$zsh_highlight__aliases"
|
||||||
builtin unset zsh_highlight__aliases
|
builtin unset zsh_highlight__aliases
|
||||||
|
@ -18,7 +18,7 @@ function handle_completion_insecurities() {
|
|||||||
insecure_dirs=( ${(f@):-"$(compaudit 2>/dev/null)"} )
|
insecure_dirs=( ${(f@):-"$(compaudit 2>/dev/null)"} )
|
||||||
|
|
||||||
# If no such directories exist, get us out of here.
|
# If no such directories exist, get us out of here.
|
||||||
(( ! ${#insecure_dirs} )) && return
|
[[ -z "${insecure_dirs}" ]] && return
|
||||||
|
|
||||||
# List ownership and permissions of all insecure directories.
|
# List ownership and permissions of all insecure directories.
|
||||||
print "[oh-my-zsh] Insecure completion-dependent directories detected:"
|
print "[oh-my-zsh] Insecure completion-dependent directories detected:"
|
||||||
|
@ -21,7 +21,15 @@ alias 9='cd -9'
|
|||||||
|
|
||||||
alias md='mkdir -p'
|
alias md='mkdir -p'
|
||||||
alias rd=rmdir
|
alias rd=rmdir
|
||||||
alias d='dirs -v | head -10'
|
|
||||||
|
function d () {
|
||||||
|
if [[ -n $1 ]]; then
|
||||||
|
dirs "$@"
|
||||||
|
else
|
||||||
|
dirs -v | head -10
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
compdef _dirs d
|
||||||
|
|
||||||
# List directory contents
|
# List directory contents
|
||||||
alias lsa='ls -lah'
|
alias lsa='ls -lah'
|
||||||
|
@ -21,7 +21,7 @@ function open_command() {
|
|||||||
case "$OSTYPE" in
|
case "$OSTYPE" in
|
||||||
darwin*) open_cmd='open' ;;
|
darwin*) open_cmd='open' ;;
|
||||||
cygwin*) open_cmd='cygstart' ;;
|
cygwin*) open_cmd='cygstart' ;;
|
||||||
linux*) ! [[ $(uname -a) =~ "Microsoft" ]] && open_cmd='xdg-open' || {
|
linux*) [[ "$(uname -r)" != *icrosoft* ]] && open_cmd='nohup xdg-open' || {
|
||||||
open_cmd='cmd.exe /c start ""'
|
open_cmd='cmd.exe /c start ""'
|
||||||
[[ -e "$1" ]] && { 1="$(wslpath -w "${1:a}")" || return 1 }
|
[[ -e "$1" ]] && { 1="$(wslpath -w "${1:a}")" || return 1 }
|
||||||
} ;;
|
} ;;
|
||||||
@ -31,12 +31,7 @@ function open_command() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# don't use nohup on OSX
|
${=open_cmd} "$@" &>/dev/null
|
||||||
if [[ "$OSTYPE" == darwin* ]]; then
|
|
||||||
${=open_cmd} "$@" &>/dev/null
|
|
||||||
else
|
|
||||||
nohup ${=open_cmd} "$@" &>/dev/null
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -79,7 +74,7 @@ function try_alias_value() {
|
|||||||
# 0 if the variable exists, 3 if it was set
|
# 0 if the variable exists, 3 if it was set
|
||||||
#
|
#
|
||||||
function default() {
|
function default() {
|
||||||
test `typeset +m "$1"` && return 0
|
(( $+parameters[$1] )) && return 0
|
||||||
typeset -g "$1"="$2" && return 3
|
typeset -g "$1"="$2" && return 3
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,8 +88,8 @@ function default() {
|
|||||||
# 0 if the env variable exists, 3 if it was set
|
# 0 if the env variable exists, 3 if it was set
|
||||||
#
|
#
|
||||||
function env_default() {
|
function env_default() {
|
||||||
env | grep -q "^$1=" && return 0
|
(( ${${(@f):-$(typeset +xg)}[(I)$1]} )) && return 0
|
||||||
export "$1=$2" && return 3
|
export "$1=$2" && return 3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,13 +10,10 @@ function git_prompt_info() {
|
|||||||
|
|
||||||
# Checks if working tree is dirty
|
# Checks if working tree is dirty
|
||||||
function parse_git_dirty() {
|
function parse_git_dirty() {
|
||||||
local STATUS=''
|
local STATUS
|
||||||
local -a FLAGS
|
local -a FLAGS
|
||||||
FLAGS=('--porcelain')
|
FLAGS=('--porcelain' '--ignore-submodules=dirty')
|
||||||
if [[ "$(command git config --get oh-my-zsh.hide-dirty)" != "1" ]]; then
|
if [[ "$(command git config --get oh-my-zsh.hide-dirty)" != "1" ]]; then
|
||||||
if [[ $POST_1_7_2_GIT -gt 0 ]]; then
|
|
||||||
FLAGS+='--ignore-submodules=dirty'
|
|
||||||
fi
|
|
||||||
if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then
|
if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then
|
||||||
FLAGS+='--untracked-files=no'
|
FLAGS+='--untracked-files=no'
|
||||||
fi
|
fi
|
||||||
@ -181,28 +178,6 @@ function git_prompt_status() {
|
|||||||
echo $STATUS
|
echo $STATUS
|
||||||
}
|
}
|
||||||
|
|
||||||
# Compares the provided version of git to the version installed and on path
|
|
||||||
# Outputs -1, 0, or 1 if the installed version is less than, equal to, or
|
|
||||||
# greater than the input version, respectively.
|
|
||||||
function git_compare_version() {
|
|
||||||
local INPUT_GIT_VERSION INSTALLED_GIT_VERSION i
|
|
||||||
INPUT_GIT_VERSION=(${(s/./)1})
|
|
||||||
INSTALLED_GIT_VERSION=($(command git --version 2>/dev/null))
|
|
||||||
INSTALLED_GIT_VERSION=(${(s/./)INSTALLED_GIT_VERSION[3]})
|
|
||||||
|
|
||||||
for i in {1..3}; do
|
|
||||||
if [[ $INSTALLED_GIT_VERSION[$i] -gt $INPUT_GIT_VERSION[$i] ]]; then
|
|
||||||
echo 1
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
if [[ $INSTALLED_GIT_VERSION[$i] -lt $INPUT_GIT_VERSION[$i] ]]; then
|
|
||||||
echo -1
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Outputs the name of the current user
|
# Outputs the name of the current user
|
||||||
# Usage example: $(git_current_user_name)
|
# Usage example: $(git_current_user_name)
|
||||||
function git_current_user_name() {
|
function git_current_user_name() {
|
||||||
@ -214,8 +189,3 @@ function git_current_user_name() {
|
|||||||
function git_current_user_email() {
|
function git_current_user_email() {
|
||||||
command git config user.email 2>/dev/null
|
command git config user.email 2>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
# This is unlikely to change so make it all statically assigned
|
|
||||||
POST_1_7_2_GIT=$(git_compare_version "1.7.2")
|
|
||||||
# Clean up the namespace slightly by removing the checker function
|
|
||||||
unfunction git_compare_version
|
|
||||||
|
@ -12,12 +12,12 @@ function omz_history {
|
|||||||
builtin fc "$@"
|
builtin fc "$@"
|
||||||
else
|
else
|
||||||
# unless a number is provided, show all history events (starting from 1)
|
# unless a number is provided, show all history events (starting from 1)
|
||||||
[[ ${@[-1]} = *[0-9]* ]] && builtin fc -l "$@" || builtin fc -l "$@" 1
|
[[ ${@[-1]-} = *[0-9]* ]] && builtin fc -l "$@" || builtin fc -l "$@" 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Timestamp format
|
# Timestamp format
|
||||||
case $HIST_STAMPS in
|
case ${HIST_STAMPS-} in
|
||||||
"mm/dd/yyyy") alias history='omz_history -f' ;;
|
"mm/dd/yyyy") alias history='omz_history -f' ;;
|
||||||
"dd.mm.yyyy") alias history='omz_history -E' ;;
|
"dd.mm.yyyy") alias history='omz_history -E' ;;
|
||||||
"yyyy-mm-dd") alias history='omz_history -i' ;;
|
"yyyy-mm-dd") alias history='omz_history -i' ;;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
## Load smart urls if available
|
|
||||||
# bracketed-paste-magic is known buggy in zsh 5.1.1 (only), so skip it there; see #4434
|
|
||||||
autoload -Uz is-at-least
|
autoload -Uz is-at-least
|
||||||
if [[ $ZSH_VERSION != 5.1.1 ]]; then
|
|
||||||
|
# *-magic is known buggy in some versions; disable if so
|
||||||
|
if [[ $DISABLE_MAGIC_FUNCTIONS != true ]]; then
|
||||||
for d in $fpath; do
|
for d in $fpath; do
|
||||||
if [[ -e "$d/url-quote-magic" ]]; then
|
if [[ -e "$d/url-quote-magic" ]]; then
|
||||||
if is-at-least 5.1; then
|
if is-at-least 5.1; then
|
||||||
@ -22,8 +22,7 @@ env_default 'PAGER' 'less'
|
|||||||
env_default 'LESS' '-R'
|
env_default 'LESS' '-R'
|
||||||
|
|
||||||
## super user alias
|
## super user alias
|
||||||
alias _='sudo'
|
alias _='sudo '
|
||||||
alias please='sudo'
|
|
||||||
|
|
||||||
## more intelligent acking for ubuntu users
|
## more intelligent acking for ubuntu users
|
||||||
if which ack-grep &> /dev/null; then
|
if which ack-grep &> /dev/null; then
|
||||||
@ -32,10 +31,5 @@ else
|
|||||||
alias afind='ack -il'
|
alias afind='ack -il'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# only define LC_CTYPE if undefined
|
|
||||||
if [[ -z "$LC_CTYPE" && -z "$LC_ALL" ]]; then
|
|
||||||
export LC_CTYPE=${LANG%%:*} # pick the first entry from LANG
|
|
||||||
fi
|
|
||||||
|
|
||||||
# recognize comments
|
# recognize comments
|
||||||
setopt interactivecomments
|
setopt interactivecomments
|
||||||
|
@ -10,9 +10,15 @@
|
|||||||
# Dummy implementations that return false to prevent command_not_found
|
# Dummy implementations that return false to prevent command_not_found
|
||||||
# errors with themes, that implement these functions
|
# errors with themes, that implement these functions
|
||||||
# Real implementations will be used when the respective plugins are loaded
|
# Real implementations will be used when the respective plugins are loaded
|
||||||
function chruby_prompt_info hg_prompt_info pyenv_prompt_info \
|
function chruby_prompt_info \
|
||||||
rbenv_prompt_info svn_prompt_info vi_mode_prompt_info \
|
rbenv_prompt_info \
|
||||||
virtualenv_prompt_info jenv_prompt_info {
|
hg_prompt_info \
|
||||||
|
pyenv_prompt_info \
|
||||||
|
svn_prompt_info \
|
||||||
|
vi_mode_prompt_info \
|
||||||
|
virtualenv_prompt_info \
|
||||||
|
jenv_prompt_info \
|
||||||
|
{
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,10 +28,13 @@ function rvm_prompt_info() {
|
|||||||
[ -f $HOME/.rvm/bin/rvm-prompt ] || return 1
|
[ -f $HOME/.rvm/bin/rvm-prompt ] || return 1
|
||||||
local rvm_prompt
|
local rvm_prompt
|
||||||
rvm_prompt=$($HOME/.rvm/bin/rvm-prompt ${=ZSH_THEME_RVM_PROMPT_OPTIONS} 2>/dev/null)
|
rvm_prompt=$($HOME/.rvm/bin/rvm-prompt ${=ZSH_THEME_RVM_PROMPT_OPTIONS} 2>/dev/null)
|
||||||
[[ "${rvm_prompt}x" == "x" ]] && return 1
|
[[ -z "${rvm_prompt}" ]] && return 1
|
||||||
echo "${ZSH_THEME_RVM_PROMPT_PREFIX:=(}${rvm_prompt}${ZSH_THEME_RVM_PROMPT_SUFFIX:=)}"
|
echo "${ZSH_THEME_RUBY_PROMPT_PREFIX}${rvm_prompt}${ZSH_THEME_RUBY_PROMPT_SUFFIX}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ZSH_THEME_RVM_PROMPT_OPTIONS="i v g"
|
||||||
|
|
||||||
|
|
||||||
# use this to enable users to see their ruby version, no matter which
|
# use this to enable users to see their ruby version, no matter which
|
||||||
# version management system they use
|
# version management system they use
|
||||||
function ruby_prompt_info() {
|
function ruby_prompt_info() {
|
||||||
|
@ -21,7 +21,7 @@ function title {
|
|||||||
print -Pn "\e]2;$2:q\a" # set window name
|
print -Pn "\e]2;$2:q\a" # set window name
|
||||||
print -Pn "\e]1;$1:q\a" # set tab name
|
print -Pn "\e]1;$1:q\a" # set tab name
|
||||||
;;
|
;;
|
||||||
screen*)
|
screen*|tmux*)
|
||||||
print -Pn "\ek$1:q\e\\" # set screen hardstatus
|
print -Pn "\ek$1:q\e\\" # set screen hardstatus
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -19,7 +19,7 @@ if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
|
|||||||
# coreutils, so prefer it to "gls".
|
# coreutils, so prefer it to "gls".
|
||||||
gls --color -d . &>/dev/null && alias ls='gls --color=tty'
|
gls --color -d . &>/dev/null && alias ls='gls --color=tty'
|
||||||
colorls -G -d . &>/dev/null && alias ls='colorls -G'
|
colorls -G -d . &>/dev/null && alias ls='colorls -G'
|
||||||
elif [[ "$OSTYPE" == darwin* ]]; then
|
elif [[ "$OSTYPE" == (darwin|freebsd)* ]]; then
|
||||||
# this is a good alias, it works by default just using $LSCOLORS
|
# this is a good alias, it works by default just using $LSCOLORS
|
||||||
ls -G . &>/dev/null && alias ls='ls -G'
|
ls -G . &>/dev/null && alias ls='ls -G'
|
||||||
|
|
||||||
@ -45,11 +45,10 @@ setopt prompt_subst
|
|||||||
|
|
||||||
[[ -n "$WINDOW" ]] && SCREEN_NO="%B$WINDOW%b " || SCREEN_NO=""
|
[[ -n "$WINDOW" ]] && SCREEN_NO="%B$WINDOW%b " || SCREEN_NO=""
|
||||||
|
|
||||||
# Apply theming defaults
|
|
||||||
PS1="%n@%m:%~%# "
|
|
||||||
|
|
||||||
# git theming default: Variables for theming the git info prompt
|
# 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_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_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_DIRTY="*" # Text to display if the branch is dirty
|
||||||
ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is clean
|
ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is clean
|
||||||
|
ZSH_THEME_RUBY_PROMPT_PREFIX="("
|
||||||
|
ZSH_THEME_RUBY_PROMPT_SUFFIX=")"
|
||||||
|
@ -29,21 +29,13 @@ if [[ -z "$ZSH_CUSTOM" ]]; then
|
|||||||
fi
|
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
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
is_plugin() {
|
is_plugin() {
|
||||||
local base_dir=$1
|
local base_dir=$1
|
||||||
local name=$2
|
local name=$2
|
||||||
test -f $base_dir/plugins/$name/$name.plugin.zsh \
|
test -f $base_dir/plugins/$name/$name.plugin.zsh \
|
||||||
|| test -f $base_dir/plugins/$name/_$name
|
|| test -f $base_dir/plugins/$name/_$name
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add all defined plugins to fpath. This must be done
|
# Add all defined plugins to fpath. This must be done
|
||||||
# before running compinit.
|
# before running compinit.
|
||||||
for plugin ($plugins); do
|
for plugin ($plugins); do
|
||||||
@ -51,6 +43,8 @@ for plugin ($plugins); do
|
|||||||
fpath=($ZSH_CUSTOM/plugins/$plugin $fpath)
|
fpath=($ZSH_CUSTOM/plugins/$plugin $fpath)
|
||||||
elif is_plugin $ZSH $plugin; then
|
elif is_plugin $ZSH $plugin; then
|
||||||
fpath=($ZSH/plugins/$plugin $fpath)
|
fpath=($ZSH/plugins/$plugin $fpath)
|
||||||
|
else
|
||||||
|
echo "[oh-my-zsh] plugin '$plugin' not found"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -68,17 +62,25 @@ if [ -z "$ZSH_COMPDUMP" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $ZSH_DISABLE_COMPFIX != true ]]; then
|
if [[ $ZSH_DISABLE_COMPFIX != true ]]; then
|
||||||
|
source $ZSH/lib/compfix.zsh
|
||||||
# If completion insecurities exist, warn the user
|
# If completion insecurities exist, warn the user
|
||||||
if ! compaudit &>/dev/null; then
|
handle_completion_insecurities
|
||||||
handle_completion_insecurities
|
|
||||||
fi
|
|
||||||
# Load only from secure directories
|
# Load only from secure directories
|
||||||
compinit -i -d "${ZSH_COMPDUMP}"
|
compinit -i -C -d "${ZSH_COMPDUMP}"
|
||||||
else
|
else
|
||||||
# If the user wants it, load from all found directories
|
# If the user wants it, load from all found directories
|
||||||
compinit -u -d "${ZSH_COMPDUMP}"
|
compinit -u -C -d "${ZSH_COMPDUMP}"
|
||||||
fi
|
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
|
||||||
|
done
|
||||||
|
|
||||||
# Load all of the plugins that were defined in ~/.zshrc
|
# Load all of the plugins that were defined in ~/.zshrc
|
||||||
for plugin ($plugins); do
|
for plugin ($plugins); do
|
||||||
if [ -f $ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh ]; then
|
if [ -f $ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh ]; then
|
||||||
|
@ -49,7 +49,12 @@ _arguments \
|
|||||||
case "$state" in
|
case "$state" in
|
||||||
specify_device)
|
specify_device)
|
||||||
_values -C 'devices' ${$(adb devices -l|awk 'NR>1&& $1 \
|
_values -C 'devices' ${$(adb devices -l|awk 'NR>1&& $1 \
|
||||||
{sub(/ +/," ",$0);gsub(":","\\:",$1); printf "%s[%s] ",$1, $NF}'):-""}
|
{sub(/ +/," ",$0); \
|
||||||
|
gsub(":","\\:",$1); \
|
||||||
|
for(i=1;i<=NF;i++) {
|
||||||
|
if($i ~ /model:/) { split($i,m,":") } \
|
||||||
|
else if($i ~ /product:/) { split($i,p,":") } } \
|
||||||
|
printf "%s[%s(%s)] ",$1, p[2], m[2]}'):-""}
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -59,4 +64,4 @@ if (( CURRENT == 1 )); then
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_files
|
_files
|
||||||
|
@ -19,9 +19,8 @@ plugins=(... ansible)
|
|||||||
| `a` | command `ansible` |
|
| `a` | command `ansible` |
|
||||||
| `aconf` | command `ansible-config` |
|
| `aconf` | command `ansible-config` |
|
||||||
| `acon` | command `ansible-console` |
|
| `acon` | command `ansible-console` |
|
||||||
| `aconn` | command `ansible-connection` |
|
|
||||||
| `ainv` | command `ansible-inventory` |
|
| `ainv` | command `ansible-inventory` |
|
||||||
| `aplay` | command `ansible-playbook` |
|
| `aplaybook` | command `ansible-playbook` |
|
||||||
| `ainv` | command `ansible-inventory` |
|
| `ainv` | command `ansible-inventory` |
|
||||||
| `adoc` | command `ansible-doc` |
|
| `adoc` | command `ansible-doc` |
|
||||||
| `agal` | command `ansible-galaxy` |
|
| `agal` | command `ansible-galaxy` |
|
||||||
|
@ -18,10 +18,9 @@ function ansible-role-init(){
|
|||||||
alias a='ansible '
|
alias a='ansible '
|
||||||
alias aconf='ansible-config '
|
alias aconf='ansible-config '
|
||||||
alias acon='ansible-console '
|
alias acon='ansible-console '
|
||||||
alias aconn='ansible-connection '
|
|
||||||
alias aver='ansible-version'
|
alias aver='ansible-version'
|
||||||
alias arinit='ansible-role-init'
|
alias arinit='ansible-role-init'
|
||||||
alias aplay='ansible-playbook '
|
alias aplaybook='ansible-playbook '
|
||||||
alias ainv='ansible-inventory '
|
alias ainv='ansible-inventory '
|
||||||
alias adoc='ansible-doc '
|
alias adoc='ansible-doc '
|
||||||
alias agal='ansible-galaxy '
|
alias agal='ansible-galaxy '
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
| yalocs | yay -Qs | Search for packages in the local database |
|
| yalocs | yay -Qs | Search for packages in the local database |
|
||||||
| yalst | yay -Qe | List installed packages including from AUR (tagged as "local") |
|
| yalst | yay -Qe | List installed packages including from AUR (tagged as "local") |
|
||||||
| yamir | yay -Syy | Force refresh of all package lists after updating mirrorlist |
|
| yamir | yay -Syy | Force refresh of all package lists after updating mirrorlist |
|
||||||
| yaorph | yay -Qtd | Remove orphans using yaourt |
|
| yaorph | yay -Qtd | Remove orphans using yay |
|
||||||
| yare | yay -R | Remove packages, keeping its settings and dependencies |
|
| yare | yay -R | Remove packages, keeping its settings and dependencies |
|
||||||
| yarem | yay -Rns | Remove packages, including its settings and unneeded dependencies |
|
| yarem | yay -Rns | Remove packages, including its settings and unneeded dependencies |
|
||||||
| yarep | yay -Si | Display information about a package in the repositories |
|
| yarep | yay -Si | Display information about a package in the repositories |
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
# Find where asdf should be installed
|
# Find where asdf should be installed
|
||||||
ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}"
|
ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}"
|
||||||
|
ASDF_COMPLETIONS="$ASDF_DIR/completions"
|
||||||
|
|
||||||
# If not found, check for Homebrew package
|
# If not found, check for Homebrew package
|
||||||
if [[ ! -d $ASDF_DIR ]] && (( $+commands[brew] )); then
|
if [[ ! -f "$ASDF_DIR/asdf.sh" ]] && (( $+commands[brew] )); then
|
||||||
ASDF_DIR="$(brew --prefix asdf)"
|
ASDF_DIR="$(brew --prefix asdf)"
|
||||||
|
ASDF_COMPLETIONS="$ASDF_DIR/etc/bash_completion.d"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Load command
|
# Load command
|
||||||
@ -11,7 +13,7 @@ if [[ -f "$ASDF_DIR/asdf.sh" ]]; then
|
|||||||
. "$ASDF_DIR/asdf.sh"
|
. "$ASDF_DIR/asdf.sh"
|
||||||
|
|
||||||
# Load completions
|
# Load completions
|
||||||
if [[ -f "$ASDF_DIR/completions/asdf.bash" ]]; then
|
if [[ -f "$ASDF_COMPLETIONS/asdf.bash" ]]; then
|
||||||
. "$ASDF_DIR/completions/asdf.bash"
|
. "$ASDF_COMPLETIONS/asdf.bash"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -1,23 +1,34 @@
|
|||||||
if [ $commands[autojump] ]; then # check if autojump is installed
|
declare -a autojump_paths
|
||||||
if [ -f $HOME/.autojump/etc/profile.d/autojump.zsh ]; then # manual user-local installation
|
autojump_paths=(
|
||||||
. $HOME/.autojump/etc/profile.d/autojump.zsh
|
$HOME/.autojump/etc/profile.d/autojump.zsh # manual installation
|
||||||
elif [ -f $HOME/.autojump/share/autojump/autojump.zsh ]; then # another manual user-local installation
|
$HOME/.autojump/share/autojump/autojump.zsh # manual installation
|
||||||
. $HOME/.autojump/share/autojump/autojump.zsh
|
$HOME/.nix-profile/etc/profile.d/autojump.sh # NixOS installation
|
||||||
elif [ -f $HOME/.nix-profile/etc/profile.d/autojump.zsh ]; then # nix installation
|
/run/current-system/sw/share/autojump/autojump.zsh # NixOS installation
|
||||||
. $HOME/.nix-profile/etc/profile.d/autojump.zsh
|
/usr/share/autojump/autojump.zsh # Debian and Ubuntu package
|
||||||
elif [ -f /run/current-system/sw/share/autojump/autojump.zsh ]; then # nixos installation
|
/etc/profile.d/autojump.zsh # manual installation
|
||||||
. /run/current-system/sw/share/autojump/autojump.zsh
|
/etc/profile.d/autojump.sh # Gentoo installation
|
||||||
elif [ -f /usr/share/autojump/autojump.zsh ]; then # debian and ubuntu package
|
/usr/local/share/autojump/autojump.zsh # FreeBSD installation
|
||||||
. /usr/share/autojump/autojump.zsh
|
/opt/local/etc/profile.d/autojump.sh # macOS with MacPorts
|
||||||
elif [ -f /etc/profile.d/autojump.zsh ]; then # manual installation
|
/usr/local/etc/profile.d/autojump.sh # macOS with Homebrew (default)
|
||||||
. /etc/profile.d/autojump.zsh
|
)
|
||||||
elif [ -f /etc/profile.d/autojump.sh ]; then # gentoo installation
|
|
||||||
. /etc/profile.d/autojump.sh
|
for file in $autojump_paths; do
|
||||||
elif [ -f /usr/local/share/autojump/autojump.zsh ]; then # freebsd installation
|
if [[ -f "$file" ]]; then
|
||||||
. /usr/local/share/autojump/autojump.zsh
|
source "$file"
|
||||||
elif [ -f /opt/local/etc/profile.d/autojump.sh ]; then # mac os x with ports
|
found=1
|
||||||
. /opt/local/etc/profile.d/autojump.sh
|
break
|
||||||
elif [ $commands[brew] -a -f `brew --prefix`/etc/autojump.sh ]; then # mac os x with brew
|
fi
|
||||||
. `brew --prefix`/etc/autojump.sh
|
done
|
||||||
|
|
||||||
|
# if no path found, try Homebrew
|
||||||
|
if (( ! found && $+commands[brew] )); then
|
||||||
|
file=$(brew --prefix)/etc/profile.d/autojump.sh
|
||||||
|
if [[ -f "$file" ]]; then
|
||||||
|
source "$file"
|
||||||
|
found=1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
(( ! found )) && echo '[oh-my-zsh] autojump script not found'
|
||||||
|
|
||||||
|
unset autojump_paths file found
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
# aws
|
# aws
|
||||||
|
|
||||||
This plugin provides completion support for [awscli](https://docs.aws.amazon.com/cli/latest/reference/index.html)
|
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: a function to change profiles with autocompletion support
|
and a few utilities to manage AWS profiles and display them in the prompt.
|
||||||
and a function to get the current AWS profile. The current AWS profile is also displayed in `RPROMPT`.
|
|
||||||
|
|
||||||
To use it, add `aws` to the plugins array in your zshrc file.
|
To use it, add `aws` to the plugins array in your zshrc file.
|
||||||
|
|
||||||
@ -12,9 +11,28 @@ plugins=(... aws)
|
|||||||
|
|
||||||
## Plugin commands
|
## Plugin commands
|
||||||
|
|
||||||
* `asp <profile>`: Sets `AWS_PROFILE` and `AWS_DEFAULT_PROFILE` (legacy) to `<profile>`.
|
* `asp [<profile>]`: sets `$AWS_PROFILE` and `$AWS_DEFAULT_PROFILE` (legacy) to `<profile>`.
|
||||||
It also adds it to your RPROMPT.
|
It also sets `$AWS_EB_PROFILE` to `<profile>` for the Elastic Beanstalk CLI.
|
||||||
|
Run `asp` without arguments to clear the profile.
|
||||||
|
|
||||||
* `agp`: Gets the current value of `AWS_PROFILE`.
|
* `agp`: gets the current value of `$AWS_PROFILE`.
|
||||||
|
|
||||||
* `aws_profiles`: Lists the available profiles in the file referenced in `AWS_CONFIG_FILE` (default: ~/.aws/config). Used to provide completion for the `asp` function.
|
* `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.
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
## 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:
|
||||||
|
|
||||||
|
- ZSH_THEME_AWS_PREFIX: sets the prefix of the AWS_PROFILE. Defaults to `<aws:`.
|
||||||
|
|
||||||
|
- ZSH_THEME_AWS_SUFFIX: sets the suffix of the AWS_PROFILE. Defaults to `>`.
|
||||||
|
@ -1,49 +1,96 @@
|
|||||||
_homebrew-installed() {
|
function agp() {
|
||||||
type brew &> /dev/null
|
|
||||||
_xit=$?
|
|
||||||
if [ $_xit -eq 0 ];then
|
|
||||||
# ok , we have brew installed
|
|
||||||
# speculatively we check default brew prefix
|
|
||||||
if [ -h /usr/local/opt/awscli ];then
|
|
||||||
_brew_prefix="/usr/local/opt/awscli"
|
|
||||||
else
|
|
||||||
# ok , it is not default prefix
|
|
||||||
# this call to brew is expensive ( about 400 ms ), so at least let's make it only once
|
|
||||||
_brew_prefix=$(brew --prefix awscli)
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return $_xit
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
_awscli-homebrew-installed() {
|
|
||||||
[ -r $_brew_prefix/libexec/bin/aws_zsh_completer.sh ] &> /dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
function agp {
|
|
||||||
echo $AWS_PROFILE
|
echo $AWS_PROFILE
|
||||||
}
|
}
|
||||||
|
|
||||||
function asp {
|
# AWS profile selection
|
||||||
local rprompt=${RPROMPT/<aws:$(agp)>/}
|
function asp() {
|
||||||
|
if [[ -z "$1" ]]; then
|
||||||
|
unset AWS_DEFAULT_PROFILE AWS_PROFILE AWS_EB_PROFILE
|
||||||
|
echo AWS profile cleared.
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local available_profiles=($(aws_profiles))
|
||||||
|
if [[ -z "${available_profiles[(r)$1]}" ]]; then
|
||||||
|
echo "${fg[red]}Profile '$1' not found in '${AWS_CONFIG_FILE:-$HOME/.aws/config}'" >&2
|
||||||
|
echo "Available profiles: ${(j:, :)available_profiles:-no profiles found}${reset_color}" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
export AWS_DEFAULT_PROFILE=$1
|
export AWS_DEFAULT_PROFILE=$1
|
||||||
export AWS_PROFILE=$1
|
export AWS_PROFILE=$1
|
||||||
|
export AWS_EB_PROFILE=$1
|
||||||
export RPROMPT="<aws:$AWS_PROFILE>$rprompt"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function aws_profiles {
|
function aws_change_access_key() {
|
||||||
reply=($(grep '\[profile' "${AWS_CONFIG_FILE:-$HOME/.aws/config}"|sed -e 's/.*profile \([a-zA-Z0-9_\.-]*\).*/\1/'))
|
if [[ -z "$1" ]]; then
|
||||||
}
|
echo "usage: $0 <profile>"
|
||||||
compctl -K aws_profiles asp
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
if which aws_zsh_completer.sh &>/dev/null; then
|
echo Insert the credentials when asked.
|
||||||
_aws_zsh_completer_path=$(which aws_zsh_completer.sh 2>/dev/null)
|
asp "$1" || return 1
|
||||||
elif _homebrew-installed && _awscli-homebrew-installed; then
|
aws iam create-access-key
|
||||||
_aws_zsh_completer_path=$_brew_prefix/libexec/bin/aws_zsh_completer.sh
|
aws configure --profile "$1"
|
||||||
|
|
||||||
|
echo You can now safely delete the old access key running \`aws iam delete-access-key --access-key-id ID\`
|
||||||
|
echo Your current keys are:
|
||||||
|
aws iam list-access-keys
|
||||||
|
}
|
||||||
|
|
||||||
|
function aws_profiles() {
|
||||||
|
[[ -r "${AWS_CONFIG_FILE:-$HOME/.aws/config}" ]] || return 1
|
||||||
|
grep '\[profile' "${AWS_CONFIG_FILE:-$HOME/.aws/config}"|sed -e 's/.*profile \([a-zA-Z0-9_\.-]*\).*/\1/'
|
||||||
|
}
|
||||||
|
|
||||||
|
function _aws_profiles() {
|
||||||
|
reply=($(aws_profiles))
|
||||||
|
}
|
||||||
|
compctl -K _aws_profiles asp aws_change_access_key
|
||||||
|
|
||||||
|
# AWS prompt
|
||||||
|
function aws_prompt_info() {
|
||||||
|
[[ -z $AWS_PROFILE ]] && return
|
||||||
|
echo "${ZSH_THEME_AWS_PREFIX:=<aws:}${AWS_PROFILE}${ZSH_THEME_AWS_SUFFIX:=>}"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$SHOW_AWS_PROMPT" != false ]; then
|
||||||
|
RPROMPT='$(aws_prompt_info)'"$RPROMPT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$_aws_zsh_completer_path" ] && [ -x $_aws_zsh_completer_path ] && source $_aws_zsh_completer_path
|
|
||||||
unset _aws_zsh_completer_path
|
# Load awscli completions
|
||||||
|
|
||||||
|
function _awscli-homebrew-installed() {
|
||||||
|
# check if Homebrew is installed
|
||||||
|
(( $+commands[brew] )) || return 1
|
||||||
|
|
||||||
|
# speculatively check default brew prefix
|
||||||
|
if [ -h /usr/local/opt/awscli ]; then
|
||||||
|
_brew_prefix=/usr/local/opt/awscli
|
||||||
|
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 awscli)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# get aws_zsh_completer.sh location from $PATH
|
||||||
|
_aws_zsh_completer_path="$commands[aws_zsh_completer.sh]"
|
||||||
|
|
||||||
|
# otherwise check common locations
|
||||||
|
if [[ -z $_aws_zsh_completer_path ]]; then
|
||||||
|
# Homebrew
|
||||||
|
if _awscli-homebrew-installed; then
|
||||||
|
_aws_zsh_completer_path=$_brew_prefix/libexec/bin/aws_zsh_completer.sh
|
||||||
|
# Ubuntu
|
||||||
|
elif [[ -e /usr/share/zsh/vendor-completions/_awscli ]]; then
|
||||||
|
_aws_zsh_completer_path=/usr/share/zsh/vendor-completions/_awscli
|
||||||
|
# RPM
|
||||||
|
else
|
||||||
|
_aws_zsh_completer_path=/usr/share/zsh/site-functions/aws_zsh_completer.sh
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -r $_aws_zsh_completer_path ]] && source $_aws_zsh_completer_path
|
||||||
|
unset _aws_zsh_completer_path _brew_prefix
|
||||||
|
@ -7,6 +7,9 @@
|
|||||||
# Email: neuralsandwich@gmail.com #
|
# Email: neuralsandwich@gmail.com #
|
||||||
# Modified to add support for Apple Mac #
|
# Modified to add support for Apple Mac #
|
||||||
###########################################
|
###########################################
|
||||||
|
# Author: J (927589452) #
|
||||||
|
# Modified to add support for FreeBSD #
|
||||||
|
###########################################
|
||||||
|
|
||||||
if [[ "$OSTYPE" = darwin* ]] ; then
|
if [[ "$OSTYPE" = darwin* ]] ; then
|
||||||
|
|
||||||
@ -64,6 +67,52 @@ if [[ "$OSTYPE" = darwin* ]] ; then
|
|||||||
[[ $(ioreg -rc "AppleSmartBattery"| grep '^.*"IsCharging"\ =\ ' | sed -e 's/^.*"IsCharging"\ =\ //') == "Yes" ]]
|
[[ $(ioreg -rc "AppleSmartBattery"| grep '^.*"IsCharging"\ =\ ' | sed -e 's/^.*"IsCharging"\ =\ //') == "Yes" ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
elif [[ "$OSTYPE" = freebsd* ]] ; then
|
||||||
|
|
||||||
|
function battery_is_charging() {
|
||||||
|
[[ $(sysctl -n hw.acpi.battery.state) -eq 2 ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
function battery_pct() {
|
||||||
|
if (( $+commands[sysctl] )) ; then
|
||||||
|
echo "$(sysctl -n hw.acpi.battery.life)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function battery_pct_remaining() {
|
||||||
|
if [ ! $(battery_is_charging) ] ; then
|
||||||
|
battery_pct
|
||||||
|
else
|
||||||
|
echo "External Power"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function battery_time_remaining() {
|
||||||
|
remaining_time=$(sysctl -n hw.acpi.battery.time)
|
||||||
|
if [[ $remaining_time -ge 0 ]] ; then
|
||||||
|
# calculation from https://www.unix.com/shell-programming-and-scripting/23695-convert-minutes-hours-minutes-seconds.html
|
||||||
|
((hour=$remaining_time/60))
|
||||||
|
((minute=$remaining_time-$hour*60))
|
||||||
|
echo $hour:$minute
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function battery_pct_prompt() {
|
||||||
|
b=$(battery_pct_remaining)
|
||||||
|
if [ ! $(battery_is_charging) ] ; then
|
||||||
|
if [ $b -gt 50 ] ; then
|
||||||
|
color='green'
|
||||||
|
elif [ $b -gt 20 ] ; then
|
||||||
|
color='yellow'
|
||||||
|
else
|
||||||
|
color='red'
|
||||||
|
fi
|
||||||
|
echo "%{$fg[$color]%}$(battery_pct_remaining)%%%{$reset_color%}"
|
||||||
|
else
|
||||||
|
echo "∞"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
elif [[ "$OSTYPE" = linux* ]] ; then
|
elif [[ "$OSTYPE" = linux* ]] ; then
|
||||||
|
|
||||||
function battery_is_charging() {
|
function battery_is_charging() {
|
||||||
|
@ -17,3 +17,5 @@ plugins=(... brew)
|
|||||||
| bubo | `brew update && brew outdated` | Fetch the newest version of Homebrew and all formulae, then list outdated formulae. |
|
| bubo | `brew update && brew outdated` | Fetch the newest version of Homebrew and all formulae, then list outdated formulae. |
|
||||||
| bubc | `brew upgrade && brew cleanup` | Upgrade outdated, unpinned brews (with existing install options), then removes stale lock files and outdated downloads for formulae and casks, and removes old versions of installed formulae. |
|
| bubc | `brew upgrade && brew cleanup` | Upgrade outdated, unpinned brews (with existing install options), then removes stale lock files and outdated downloads for formulae and casks, and removes old versions of installed formulae. |
|
||||||
| bubu | `bubo && bubc` | Updates Homebrew, lists outdated formulae, upgrades oudated and unpinned formulae, and removes stale and outdated downloads and versions. |
|
| bubu | `bubo && bubc` | Updates Homebrew, lists outdated formulae, upgrades oudated and unpinned formulae, and removes stale and outdated downloads and versions. |
|
||||||
|
| bcubo | `brew update && brew cask outdated` | Fetch the newest version of Homebrew and all formulae, then list outdated casks. |
|
||||||
|
| bcubc | `brew cask reinstall $(brew cask outdated) && brew cleanup` | Updates outdated casks, then runs cleanup. |
|
@ -4,6 +4,8 @@ alias brewsp='brew list --pinned'
|
|||||||
alias bubo='brew update && brew outdated'
|
alias bubo='brew update && brew outdated'
|
||||||
alias bubc='brew upgrade && brew cleanup'
|
alias bubc='brew upgrade && brew cleanup'
|
||||||
alias bubu='bubo && bubc'
|
alias bubu='bubo && bubc'
|
||||||
|
alias bcubo='brew update && brew cask outdated'
|
||||||
|
alias bcubc='brew cask reinstall $(brew cask outdated) && brew cleanup'
|
||||||
|
|
||||||
if command mkdir "$ZSH_CACHE_DIR/.brew-completion-message" 2>/dev/null; then
|
if command mkdir "$ZSH_CACHE_DIR/.brew-completion-message" 2>/dev/null; then
|
||||||
print -P '%F{yellow}'Oh My Zsh brew plugin:
|
print -P '%F{yellow}'Oh My Zsh brew plugin:
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
- adds completion for basic bundler commands
|
- adds completion for basic bundler commands
|
||||||
- adds short aliases for common bundler commands
|
- adds short aliases for common bundler commands
|
||||||
- `be` aliased to `bundle exec`.
|
- `be` aliased to `bundle exec`.
|
||||||
It also supports aliases (if `rs` is `rails server`, `be rs` will bundle-exec `rails server`).
|
It also supports aliases (if `rs` is `rails server`, `be rs` will bundle-exec `rails server`).
|
||||||
- `bl` aliased to `bundle list`
|
- `bl` aliased to `bundle list`
|
||||||
- `bp` aliased to `bundle package`
|
- `bp` aliased to `bundle package`
|
||||||
@ -15,7 +15,7 @@
|
|||||||
- calls `bundle exec <gem executable>` otherwise
|
- calls `bundle exec <gem executable>` otherwise
|
||||||
|
|
||||||
Common gems wrapped by default (by name of the executable):
|
Common gems wrapped by default (by name of the executable):
|
||||||
`annotate`, `cap`, `capify`, `cucumber`, `foodcritic`, `guard`, `hanami`, `irb`, `jekyll`, `kitchen`, `knife`, `middleman`, `nanoc`, `pry`, `puma`, `rackup`, `rainbows`, `rake`, `rspec`, `shotgun`, `sidekiq`, `spec`, `spork`, `spring`, `strainer`, `tailor`, `taps`, `thin`, `thor`, `unicorn` and `unicorn_rails`.
|
`annotate`, `cap`, `capify`, `cucumber`, `foodcritic`, `guard`, `hanami`, `irb`, `jekyll`, `kitchen`, `knife`, `middleman`, `nanoc`, `pry`, `puma`, `rackup`, `rainbows`, `rake`, `rspec`, `rubocop`, `shotgun`, `sidekiq`, `spec`, `spork`, `spring`, `strainer`, `tailor`, `taps`, `thin`, `thor`, `unicorn` and `unicorn_rails`.
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ bundled_commands=(
|
|||||||
rainbows
|
rainbows
|
||||||
rake
|
rake
|
||||||
rspec
|
rspec
|
||||||
|
rubocop
|
||||||
shotgun
|
shotgun
|
||||||
sidekiq
|
sidekiq
|
||||||
spec
|
spec
|
||||||
@ -81,7 +82,7 @@ _bundler-installed() {
|
|||||||
_within-bundled-project() {
|
_within-bundled-project() {
|
||||||
local check_dir="$PWD"
|
local check_dir="$PWD"
|
||||||
while [ "$check_dir" != "/" ]; do
|
while [ "$check_dir" != "/" ]; do
|
||||||
[ -f "$check_dir/Gemfile" ] && return
|
[ -f "$check_dir/Gemfile" -o -f "$check_dir/gems.rb" ] && return
|
||||||
check_dir="$(dirname $check_dir)"
|
check_dir="$(dirname $check_dir)"
|
||||||
done
|
done
|
||||||
false
|
false
|
||||||
@ -94,7 +95,7 @@ _binstubbed() {
|
|||||||
_run-with-bundler() {
|
_run-with-bundler() {
|
||||||
if _bundler-installed && _within-bundled-project; then
|
if _bundler-installed && _within-bundled-project; then
|
||||||
if _binstubbed $1; then
|
if _binstubbed $1; then
|
||||||
./bin/$@
|
./bin/${^^@}
|
||||||
else
|
else
|
||||||
bundle exec $@
|
bundle exec $@
|
||||||
fi
|
fi
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
# Bwana
|
|
||||||
|
|
||||||
This plugin provides a function to open `man` pages directly with [Bwana](https://www.bruji.com/bwana/).
|
|
||||||
|
|
||||||
To use it add bwana to the plugins array in your zshrc file.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
plugins=(... bwana)
|
|
||||||
```
|
|
@ -1,13 +0,0 @@
|
|||||||
#
|
|
||||||
# Requires https://www.bruji.com/bwana/
|
|
||||||
#
|
|
||||||
if [[ -e /Applications/Bwana.app ]] ||
|
|
||||||
( system_profiler -detailLevel mini SPApplicationsDataType | grep -q Bwana )
|
|
||||||
then
|
|
||||||
function man() {
|
|
||||||
open "man:$1"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
echo "Bwana lets you read man files in Safari through a man: URI scheme"
|
|
||||||
echo "To use it within Zsh, install it from https://www.bruji.com/bwana/"
|
|
||||||
fi
|
|
@ -1,6 +1,6 @@
|
|||||||
# cargo
|
# cargo
|
||||||
|
|
||||||
This plugin adds completion for the Rust build tool [`cargo`](https://github.com/rust-lang/cargo).
|
This plugin adds completion for the Rust build tool [`Cargo`](https://github.com/rust-lang/cargo).
|
||||||
|
|
||||||
To use it, add `cargo` to the plugins array in your zshrc file:
|
To use it, add `cargo` to the plugins array in your zshrc file:
|
||||||
|
|
||||||
@ -8,4 +8,4 @@ To use it, add `cargo` to the plugins array in your zshrc file:
|
|||||||
plugins=(... cargo)
|
plugins=(... cargo)
|
||||||
```
|
```
|
||||||
|
|
||||||
Updated on October 4th, 2016.
|
Updated on March 3rd, 2019, from [Cargo 0.34.0](https://github.com/rust-lang/cargo/releases/tag/0.34.0).
|
||||||
|
@ -1,445 +1,368 @@
|
|||||||
#compdef cargo
|
#compdef cargo
|
||||||
|
|
||||||
typeset -A opt_args
|
|
||||||
autoload -U regexp-replace
|
autoload -U regexp-replace
|
||||||
|
|
||||||
_cargo() {
|
_cargo() {
|
||||||
|
local curcontext="$curcontext" ret=1
|
||||||
|
local -a command_scope_spec common parallel features msgfmt triple target registry
|
||||||
|
local -a state line state_descr # These are set by _arguments
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
_arguments \
|
common=(
|
||||||
'(- 1 *)'{-h,--help}'[show help message]' \
|
'(-q --quiet)*'{-v,--verbose}'[use verbose output]'
|
||||||
'(- 1 *)'{-V,--version}'[show version information]' \
|
'(-q --quiet -v --verbose)'{-q,--quiet}'[no output printed to stdout]'
|
||||||
'(- 1 *)'--list'[list installed commands]' \
|
'-Z+[pass unstable (nightly-only) flags to cargo]: :_cargo_unstable_flags'
|
||||||
'(- 1 *)'--explain'[Run `rustc --explain CODE`]' \
|
'--frozen[require that Cargo.lock and cache are up-to-date]'
|
||||||
'(- 1 *)'{-v,--verbose}'[use verbose output]' \
|
'--locked[require that Cargo.lock is up-to-date]'
|
||||||
'(- 1 *)'--color'[colorization option]' \
|
'--color=[specify colorization option]:coloring:(auto always never)'
|
||||||
'(- 1 *)'--frozen'[Require Cargo.lock and cache are up to date]' \
|
'(- 1 *)'{-h,--help}'[show help message]'
|
||||||
'(- 1 *)'--locked'[Require Cargo.lock is up to date]' \
|
)
|
||||||
'1: :_cargo_cmds' \
|
|
||||||
'*:: :->args'
|
|
||||||
|
|
||||||
case $state in
|
# leading items in parentheses are an exclusion list for the arguments following that arg
|
||||||
args)
|
# See: http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Completion-Functions
|
||||||
case $words[1] in
|
# - => exclude all other options
|
||||||
bench)
|
# 1 => exclude positional arg 1
|
||||||
_arguments \
|
# * => exclude all other args
|
||||||
'--features=[space separated feature list]' \
|
# +blah => exclude +blah
|
||||||
'--all-features[enable all available features]' \
|
_arguments -s -S -C $common \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'(- 1 *)--list[list installed commands]' \
|
||||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
'(- 1 *)--explain=[provide a detailed explanation of an error message]:error code' \
|
||||||
"${command_scope_spec[@]}" \
|
'(- 1 *)'{-V,--version}'[show version information]' \
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
'(+beta +nightly)+stable[use the stable toolchain]' \
|
||||||
'--no-default-features[do not build the default features]' \
|
'(+stable +nightly)+beta[use the beta toolchain]' \
|
||||||
'--no-run[compile but do not run]' \
|
'(+stable +beta)+nightly[use the nightly toolchain]' \
|
||||||
'(-p,--package)'{-p=,--package=}'[package to run benchmarks for]:packages:_get_package_names' \
|
'1: :_cargo_cmds' \
|
||||||
'--target=[target triple]' \
|
'*:: :->args'
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
build)
|
# These flags are mutually exclusive specifiers for the scope of a command; as
|
||||||
_arguments \
|
# they are used in multiple places without change, they are expanded into the
|
||||||
'--features=[space separated feature list]' \
|
# appropriate command's `_arguments` where appropriate.
|
||||||
'--all-features[enable all available features]' \
|
command_scope_spec=(
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'(--bin --example --test --lib)--bench=[specify benchmark name]: :_cargo_benchmark_names'
|
||||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
'(--bench --bin --test --lib)--example=[specify example name]:example name'
|
||||||
"${command_scope_spec[@]}" \
|
'(--bench --example --test --lib)--bin=[specify binary name]:binary name'
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
'(--bench --bin --example --test)--lib=[specify library name]:library name'
|
||||||
'--no-default-features[do not build the default features]' \
|
'(--bench --bin --example --lib)--test=[specify test name]:test name'
|
||||||
'(-p,--package)'{-p=,--package=}'[package to build]:packages:_get_package_names' \
|
)
|
||||||
'--release=[build in release mode]' \
|
|
||||||
'--target=[target triple]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
clean)
|
parallel=(
|
||||||
_arguments \
|
'(-j --jobs)'{-j+,--jobs=}'[specify number of parallel jobs]:jobs [# of CPUs]'
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
)
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
|
||||||
'(-p,--package)'{-p=,--package=}'[package to clean]:packages:_get_package_names' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'--release[whether or not to clean release artifacts]' \
|
|
||||||
'--target=[target triple(default:all)]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
doc)
|
features=(
|
||||||
_arguments \
|
'(--all-features)--features=[specify features to activate]:feature'
|
||||||
'--features=[space separated feature list]' \
|
'(--features)--all-features[activate all available features]'
|
||||||
'--all-features[enable all available features]' \
|
"--no-default-features[don't build the default features]"
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
)
|
||||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
|
||||||
'--no-deps[do not build docs for dependencies]' \
|
|
||||||
'--no-default-features[do not build the default features]' \
|
|
||||||
'--open[open docs in browser after the build]' \
|
|
||||||
'(-p, --package)'{-p,--package}'=[package to document]' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'--release[build artifacts in release mode, with optimizations]' \
|
|
||||||
'--target=[build for the target triple]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
fetch)
|
msgfmt='--message-format=[specify error format]:error format [human]:(human json short)'
|
||||||
_arguments \
|
triple='--target=[specify target triple]:target triple'
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
target='--target-dir=[specify directory for all generated artifacts]:directory:_directories'
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
manifest='--manifest-path=[specify path to manifest]:path:_directories'
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
registry='--registry=[specify registry to use]:registry'
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
generate-lockfile)
|
case $state in
|
||||||
_arguments \
|
args)
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
curcontext="${curcontext%:*}-${words[1]}:"
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
case ${words[1]} in
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
bench)
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
_arguments -s -A "^--" $common $parallel $features $msgfmt $triple $target $manifest \
|
||||||
'--color=:colorization option:(auto always never)' \
|
"${command_scope_spec[@]}" \
|
||||||
;;
|
'--all-targets[benchmark all targets]' \
|
||||||
|
"--no-run[compile but don't run]" \
|
||||||
|
'(-p --package)'{-p+,--package=}'[specify package to run benchmarks for]:package:_cargo_package_names' \
|
||||||
|
'--exclude=[exclude packages from the benchmark]:spec' \
|
||||||
|
'--no-fail-fast[run all benchmarks regardless of failure]' \
|
||||||
|
'1: :_guard "^-*" "bench name"' \
|
||||||
|
'*:args:_default'
|
||||||
|
;;
|
||||||
|
|
||||||
git-checkout)
|
build)
|
||||||
_arguments \
|
_arguments -s -S $common $parallel $features $msgfmt $triple $target $manifest \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'--all-targets[equivalent to specifying --lib --bins --tests --benches --examples]' \
|
||||||
'q(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
"${command_scope_spec[@]}" \
|
||||||
'--reference=[REF]' \
|
'(-p --package)'{-p+,--package=}'[specify package to build]:package:_cargo_package_names' \
|
||||||
'--url=[URL]' \
|
'--release[build in release mode]' \
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
'--build-plan[output the build plan in JSON]' \
|
||||||
'--color=:colorization option:(auto always never)' \
|
;;
|
||||||
;;
|
|
||||||
|
|
||||||
help)
|
check)
|
||||||
_arguments \
|
_arguments -s -S $common $parallel $features $msgfmt $triple $target $manifest \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'--all-targets[equivalent to specifying --lib --bins --tests --benches --examples]' \
|
||||||
'*: :_cargo_cmds' \
|
"${command_scope_spec[@]}" \
|
||||||
;;
|
'(-p --package)'{-p+,--package=}'[specify package to check]:package:_cargo_package_names' \
|
||||||
|
'--release[check in release mode]' \
|
||||||
|
;;
|
||||||
|
|
||||||
init)
|
clean)
|
||||||
_arguments \
|
_arguments -s -S $common $triple $target $manifest \
|
||||||
'--bin[use binary template]' \
|
'(-p --package)'{-p+,--package=}'[specify package to clean]:package:_cargo_package_names' \
|
||||||
'--vcs:initialize a new repo with a given VCS:(git hg none)' \
|
'--release[clean release artifacts]' \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'--doc[clean just the documentation directory]'
|
||||||
'--name=[set the resulting package name]' \
|
;;
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
install)
|
doc)
|
||||||
_arguments \
|
_arguments -s -S $common $parallel $features $msgfmt $triple $target $manifest \
|
||||||
'--bin=[only install the specified binary]' \
|
'--no-deps[do not build docs for dependencies]' \
|
||||||
'--branch=[branch to use when installing from git]' \
|
'--document-private-items[include non-public items in the documentation]' \
|
||||||
'--color=:colorization option:(auto always never)' \
|
'--open[open docs in browser after the build]' \
|
||||||
'--debug[build in debug mode instead of release mode]' \
|
'(-p --package)'{-p+,--package=}'[specify package to document]:package:_cargo_package_names' \
|
||||||
'--example[install the specified example instead of binaries]' \
|
'--release[build artifacts in release mode, with optimizations]' \
|
||||||
'--features=[space separated feature list]' \
|
;;
|
||||||
'--all-features[enable all available features]' \
|
|
||||||
'--git=[URL from which to install the crate]' \
|
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
|
||||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
|
||||||
'--no-default-features[do not build the default features]' \
|
|
||||||
'--path=[local filesystem path to crate to install]' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'--rev=[specific commit to use when installing from git]' \
|
|
||||||
'--root=[directory to install packages into]' \
|
|
||||||
'--tag=[tag to use when installing from git]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--vers=[version to install from crates.io]' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
locate-project)
|
fetch)
|
||||||
_arguments \
|
_arguments -s -S $common $triple $manifest
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
;;
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
login)
|
fix)
|
||||||
_arguments \
|
_arguments -s -S $common $parallel $features $msgfmt $triple $target $manifest \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
"${command_scope_spec[@]}" \
|
||||||
'--host=[Host to set the token for]' \
|
'--broken-code[fix code even if it already has compiler errors]' \
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
'--edition[fix in preparation for the next edition]' \
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
'--edition-idioms[fix warnings to migrate to the idioms of an edition]' \
|
||||||
'--color=:colorization option:(auto always never)' \
|
'--allow-no-vcs[fix code even if a VCS was not detected]' \
|
||||||
;;
|
'--allow-dirty[fix code even if the working directory is dirty]' \
|
||||||
|
'--allow-staged[fix code even if the working directory has staged changes]'
|
||||||
|
;;
|
||||||
|
|
||||||
metadata)
|
generate-lockfile)
|
||||||
_arguments \
|
_arguments -s -S $common $manifest
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
;;
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
"--no-deps[output information only about the root package and don't fetch dependencies]" \
|
|
||||||
'--no-default-features[do not include the default feature]' \
|
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
|
||||||
'--features=[space separated feature list]' \
|
|
||||||
'--all-features[enable all available features]' \
|
|
||||||
'--format-version=[format version(default: 1)]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
new)
|
git-checkout)
|
||||||
_arguments \
|
_arguments -s -S $common \
|
||||||
'--bin[use binary template]' \
|
'--reference=:reference' \
|
||||||
'--vcs:initialize a new repo with a given VCS:(git hg none)' \
|
'--url=:url:_urls'
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
;;
|
||||||
'--name=[set the resulting package name]' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
owner)
|
help)
|
||||||
_arguments \
|
_cargo_cmds
|
||||||
'(-a, --add)'{-a,--add}'[add owner LOGIN]' \
|
;;
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
|
||||||
'--index[registry index]' \
|
|
||||||
'(-l, --list)'{-l,--list}'[list owners of a crate]' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'(-r, --remove)'{-r,--remove}'[remove owner LOGIN]' \
|
|
||||||
'--token[API token to use when authenticating]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
package)
|
init)
|
||||||
_arguments \
|
_arguments -s -S $common $registry \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'--lib[use library template]' \
|
||||||
'(-l, --list)'{-l,--list}'[print files included in a package without making one]' \
|
'--edition=[specify edition to set for the crate generated]:edition:(2015 2018)' \
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
'--vcs=[initialize a new repo with a given VCS]:vcs:(git hg pijul fossil none)' \
|
||||||
'--no-metadata[ignore warnings about a lack of human-usable metadata]' \
|
'--name=[set the resulting package name]:name' \
|
||||||
'--no-verify[do not build to verify contents]' \
|
'1:path:_directories'
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
;;
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
pkgid)
|
install)
|
||||||
_arguments \
|
_arguments -s -S $common $parallel $features $triple $registry \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'(-f --force)'{-f,--force}'[force overwriting of existing crates or binaries]' \
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
'--bin=[only install the specified binary]:binary' \
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
'--branch=[branch to use when installing from git]:branch' \
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
'--debug[build in debug mode instead of release mode]' \
|
||||||
'--color=:colorization option:(auto always never)' \
|
'--example=[install the specified example instead of binaries]:example' \
|
||||||
;;
|
'--git=[specify URL from which to install the crate]:url:_urls' \
|
||||||
|
'--path=[local filesystem path to crate to install]: :_directories' \
|
||||||
|
'--rev=[specific commit to use when installing from git]:commit' \
|
||||||
|
'--root=[directory to install packages into]: :_directories' \
|
||||||
|
'--tag=[tag to use when installing from git]:tag' \
|
||||||
|
'--vers=[version to install from crates.io]:version' \
|
||||||
|
'--list[list all installed packages and their versions]' \
|
||||||
|
'*: :_guard "^-*" "crate"'
|
||||||
|
;;
|
||||||
|
|
||||||
publish)
|
locate-project)
|
||||||
_arguments \
|
_arguments -s -S $common $manifest
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
;;
|
||||||
'--host=[Host to set the token for]' \
|
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
|
||||||
'--no-verify[Do not verify tarball until before publish]' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'--token[token to use when uploading]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
read-manifest)
|
login)
|
||||||
_arguments \
|
_arguments -s -S $common $registry \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'*: :_guard "^-*" "token"'
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
;;
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
run)
|
metadata)
|
||||||
_arguments \
|
_arguments -s -S $common $features $manifest \
|
||||||
'--example=[name of the bin target]' \
|
"--no-deps[output information only about the root package and don't fetch dependencies]" \
|
||||||
'--features=[space separated feature list]' \
|
'--format-version=[specify format version]:version [1]:(1)'
|
||||||
'--all-features[enable all available features]' \
|
;;
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
|
||||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
|
||||||
'--bin=[name of the bin target]' \
|
|
||||||
'--no-default-features[do not build the default features]' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'--release=[build in release mode]' \
|
|
||||||
'--target=[target triple]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
'*: :_normal' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
rustc)
|
new)
|
||||||
_arguments \
|
_arguments -s -S $common $registry \
|
||||||
'--color=:colorization option:(auto always never)' \
|
'--lib[use library template]' \
|
||||||
'--features=[features to compile for the package]' \
|
'--vcs:initialize a new repo with a given VCS:(git hg none)' \
|
||||||
'--all-features[enable all available features]' \
|
'--name=[set the resulting package name]'
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
;;
|
||||||
'(-j, --jobs)'{-j,--jobs}'=[number of parallel jobs, defaults to # of CPUs]' \
|
|
||||||
'--manifest-path=[path to the manifest to fetch dependencies for]' \
|
|
||||||
'--no-default-features[do not compile default features for the package]' \
|
|
||||||
'(-p, --package)'{-p,--package}'=[profile to compile for]' \
|
|
||||||
'--profile=[profile to build the selected target for]' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'--release[build artifacts in release mode, with optimizations]' \
|
|
||||||
'--target=[target triple which compiles will be for]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
"${command_scope_spec[@]}" \
|
|
||||||
;;
|
|
||||||
|
|
||||||
rustdoc)
|
owner)
|
||||||
_arguments \
|
_arguments -s -S $common $registry \
|
||||||
'--color=:colorization option:(auto always never)' \
|
'(-a --add)'{-a,--add}'[specify name of a user or team to invite as an owner]:name' \
|
||||||
'--features=[space-separated list of features to also build]' \
|
'--index=[specify registry index]:index' \
|
||||||
'--all-features[enable all available features]' \
|
'(-l --list)'{-l,--list}'[list owners of a crate]' \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'(-r --remove)'{-r,--remove}'[specify name of a user or team to remove as an owner]:name' \
|
||||||
'(-j, --jobs)'{-j,--jobs}'=[number of parallel jobs, defaults to # of CPUs]' \
|
'--token=[specify API token to use when authenticating]:token' \
|
||||||
'--manifest-path=[path to the manifest to document]' \
|
'*: :_guard "^-*" "crate"'
|
||||||
'--no-default-features[do not build the `default` feature]' \
|
;;
|
||||||
'--open[open the docs in a browser after the operation]' \
|
|
||||||
'(-p, --package)'{-p,--package}'=[package to document]' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'--release[build artifacts in release mode, with optimizations]' \
|
|
||||||
'--target=[build for the target triple]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
"${command_scope_spec[@]}" \
|
|
||||||
;;
|
|
||||||
|
|
||||||
search)
|
package)
|
||||||
_arguments \
|
_arguments -s -S $common $parallel $features $triple $target $manifest \
|
||||||
'--color=:colorization option:(auto always never)' \
|
'(-l --list)'{-l,--list}'[print files included in a package without making one]' \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'--no-metadata[ignore warnings about a lack of human-usable metadata]' \
|
||||||
'--host=[host of a registry to search in]' \
|
'--allow-dirty[allow dirty working directories to be packaged]' \
|
||||||
'--limit=[limit the number of results]' \
|
"--no-verify[don't build to verify contents]"
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
;;
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
test)
|
pkgid)
|
||||||
_arguments \
|
_arguments -s -S $common $manifest \
|
||||||
'--features=[space separated feature list]' \
|
'(-p --package)'{-p+,--package=}'[specify package to get ID specifier for]:package:_cargo_package_names' \
|
||||||
'--all-features[enable all available features]' \
|
'*: :_guard "^-*" "spec"'
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
;;
|
||||||
'(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
|
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
|
||||||
'--test=[test name]: :_test_names' \
|
|
||||||
'--no-default-features[do not build the default features]' \
|
|
||||||
'--no-fail-fast[run all tests regardless of failure]' \
|
|
||||||
'--no-run[compile but do not run]' \
|
|
||||||
'(-p,--package)'{-p=,--package=}'[package to run tests for]:packages:_get_package_names' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'--release[build artifacts in release mode, with optimizations]' \
|
|
||||||
'--target=[target triple]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
'1: :_test_names' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
uninstall)
|
publish)
|
||||||
_arguments \
|
_arguments -s -S $common $parallel $features $triple $target $manifest $registry \
|
||||||
'--bin=[only uninstall the binary NAME]' \
|
'--index=[specify registry index]:index' \
|
||||||
'--color=:colorization option:(auto always never)' \
|
'--allow-dirty[allow dirty working directories to be packaged]' \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
"--no-verify[don't verify the contents by building them]" \
|
||||||
'(-q, --quiet)'{-q,--quiet}'[less output printed to stdout]' \
|
'--token=[specify token to use when uploading]:token' \
|
||||||
'--root=[directory to uninstall packages from]' \
|
'--dry-run[perform all checks without uploading]'
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
;;
|
||||||
;;
|
|
||||||
|
|
||||||
update)
|
read-manifest)
|
||||||
_arguments \
|
_arguments -s -S $common $manifest
|
||||||
'--aggressive=[force dependency update]' \
|
;;
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
|
||||||
'(-p,--package)'{-p=,--package=}'[package to update]:packages:__get_package_names' \
|
|
||||||
'--precise=[update single dependency to PRECISE]: :' \
|
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
|
||||||
'--color=:colorization option:(auto always never)' \
|
|
||||||
;;
|
|
||||||
|
|
||||||
verify-project)
|
run)
|
||||||
_arguments \
|
_arguments -s -S $common $parallel $features $msgfmt $triple $target $manifest \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'--example=[name of the bin target]:name' \
|
||||||
'--manifest-path=[path to manifest]: :_files -/' \
|
'--bin=[name of the bin target]:name' \
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
'(-p --package)'{-p+,--package=}'[specify package with the target to run]:package:_cargo_package_names' \
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
'--release[build in release mode]' \
|
||||||
'--color=:colorization option:(auto always never)' \
|
'*: :_default'
|
||||||
;;
|
;;
|
||||||
|
|
||||||
version)
|
rustc)
|
||||||
_arguments \
|
_arguments -s -S $common $parallel $features $msgfmt $triple $target $manifest \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'(-p --package)'{-p+,--package=}'[specify package to build]:package:_cargo_package_names' \
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
'--profile=[specify profile to build the selected target for]:profile' \
|
||||||
'--color=:colorization option:(auto always never)' \
|
'--release[build artifacts in release mode, with optimizations]' \
|
||||||
;;
|
"${command_scope_spec[@]}" \
|
||||||
|
'*: : _dispatch rustc rustc -default-'
|
||||||
|
;;
|
||||||
|
|
||||||
yank)
|
rustdoc)
|
||||||
_arguments \
|
_arguments -s -S $common $parallel $features $msgfmt $triple $target $manifest \
|
||||||
'(-h, --help)'{-h,--help}'[show help message]' \
|
'--document-private-items[include non-public items in the documentation]' \
|
||||||
'--index[registry index]' \
|
'--open[open the docs in a browser after the operation]' \
|
||||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
|
'(-p --package)'{-p+,--package=}'[specify package to document]:package:_cargo_package_names' \
|
||||||
'--token[API token to use when authenticating]' \
|
'--release[build artifacts in release mode, with optimizations]' \
|
||||||
'--undo[undo a yank, putting a version back into the index]' \
|
"${command_scope_spec[@]}" \
|
||||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
|
'*: : _dispatch rustdoc rustdoc -default-'
|
||||||
'--color=:colorization option:(auto always never)' \
|
;;
|
||||||
'--vers[yank version]' \
|
|
||||||
;;
|
search)
|
||||||
esac
|
_arguments -s -S $common $registry \
|
||||||
;;
|
'--index=[specify registry index]:index' \
|
||||||
esac
|
'--limit=[limit the number of results]:results [10]' \
|
||||||
|
'*: :_guard "^-*" "query"'
|
||||||
|
;;
|
||||||
|
|
||||||
|
test)
|
||||||
|
_arguments -s -S $common $parallel $features $msgfmt $triple $target $manifest \
|
||||||
|
'--test=[test name]: :_cargo_test_names' \
|
||||||
|
'--no-fail-fast[run all tests regardless of failure]' \
|
||||||
|
'--no-run[compile but do not run]' \
|
||||||
|
'(-p --package)'{-p+,--package=}'[package to run tests for]:package:_cargo_package_names' \
|
||||||
|
'--all[test all packages in the workspace]' \
|
||||||
|
'--release[build artifacts in release mode, with optimizations]' \
|
||||||
|
'1: :_cargo_test_names' \
|
||||||
|
'(--doc --bin --example --test --bench)--lib[only test library]' \
|
||||||
|
'(--lib --bin --example --test --bench)--doc[only test documentation]' \
|
||||||
|
'(--lib --doc --example --test --bench)--bin=[binary name]' \
|
||||||
|
'(--lib --doc --bin --test --bench)--example=[example name]' \
|
||||||
|
'(--lib --doc --bin --example --bench)--test=[test name]' \
|
||||||
|
'(--lib --doc --bin --example --test)--bench=[benchmark name]' \
|
||||||
|
'*: :_default'
|
||||||
|
;;
|
||||||
|
|
||||||
|
uninstall)
|
||||||
|
_arguments -s -S $common \
|
||||||
|
'(-p --package)'{-p+,--package=}'[specify package to uninstall]:package:_cargo_package_names' \
|
||||||
|
'--bin=[only uninstall the specified binary]:name' \
|
||||||
|
'--root=[directory to uninstall packages from]: :_files -/' \
|
||||||
|
'*:crate:_cargo_installed_crates -F line'
|
||||||
|
;;
|
||||||
|
|
||||||
|
update)
|
||||||
|
_arguments -s -S $common $manifest \
|
||||||
|
'--aggressive=[force dependency update]' \
|
||||||
|
"--dry-run[don't actually write the lockfile]" \
|
||||||
|
'(-p --package)'{-p+,--package=}'[specify package to update]:package:_cargo_package_names' \
|
||||||
|
'--precise=[update single dependency to precise release]:release'
|
||||||
|
;;
|
||||||
|
|
||||||
|
verify-project)
|
||||||
|
_arguments -s -S $common $manifest
|
||||||
|
;;
|
||||||
|
|
||||||
|
version)
|
||||||
|
_arguments -s -S $common
|
||||||
|
;;
|
||||||
|
|
||||||
|
yank)
|
||||||
|
_arguments -s -S $common $registry \
|
||||||
|
'--vers=[specify yank version]:version' \
|
||||||
|
'--undo[undo a yank, putting a version back into the index]' \
|
||||||
|
'--index=[specify registry index to yank from]:registry index' \
|
||||||
|
'--token=[specify API token to use when authenticating]:token' \
|
||||||
|
'*: :_guard "^-*" "crate"'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# allow plugins to define their own functions
|
||||||
|
if ! _call_function ret _cargo-${words[1]}; then
|
||||||
|
# fallback on default completion for unknown commands
|
||||||
|
_default && ret=0
|
||||||
|
fi
|
||||||
|
(( ! ret ))
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
_cargo_cmds(){
|
_cargo_unstable_flags() {
|
||||||
local -a commands;commands=(
|
local flags
|
||||||
'bench:execute all benchmarks of a local package'
|
flags=( help ${${${(M)${(f)"$(_call_program flags cargo -Z help)"}:#*--*}/ #-- #/:}##*-Z } )
|
||||||
'build:compile the current project'
|
_describe -t flags 'unstable flag' flags
|
||||||
'clean:remove generated artifacts'
|
}
|
||||||
'doc:build package documentation'
|
|
||||||
'fetch:fetch package dependencies'
|
|
||||||
'generate-lockfile:create lockfile'
|
|
||||||
'git-checkout:git checkout'
|
|
||||||
'help:get help for commands'
|
|
||||||
'init:create new project in current directory'
|
|
||||||
'install:install a Rust binary'
|
|
||||||
'locate-project:print "Cargo.toml" location'
|
|
||||||
'login:login to remote server'
|
|
||||||
'metadata:the metadata for a project in json'
|
|
||||||
'new:create a new project'
|
|
||||||
'owner:manage the owners of a crate on the registry'
|
|
||||||
'package:assemble local package into a distributable tarball'
|
|
||||||
'pkgid:print a fully qualified package specification'
|
|
||||||
'publish:upload package to the registry'
|
|
||||||
'read-manifest:print manifest in JSON format'
|
|
||||||
'run:run the main binary of the local package'
|
|
||||||
'rustc:compile a package and all of its dependencies'
|
|
||||||
'rustdoc:build documentation for a package'
|
|
||||||
'search:search packages on crates.io'
|
|
||||||
'test:execute all unit and tests of a local package'
|
|
||||||
'uninstall:remove a Rust binary'
|
|
||||||
'update:update dependencies'
|
|
||||||
'verify-project:check Cargo.toml'
|
|
||||||
'version:show version information'
|
|
||||||
'yank:remove pushed file from index'
|
|
||||||
)
|
|
||||||
_describe 'command' commands
|
|
||||||
|
|
||||||
|
_cargo_installed_crates() {
|
||||||
|
local expl
|
||||||
|
_description crates expl 'crate'
|
||||||
|
compadd "$@" "$expl[@]" - ${${${(f)"$(cargo install --list)"}:# *}%% *}
|
||||||
|
}
|
||||||
|
|
||||||
|
_cargo_cmds() {
|
||||||
|
local -a commands
|
||||||
|
# This uses Parameter Expansion Flags, which are a built-in Zsh feature.
|
||||||
|
# See more: http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion-Flags
|
||||||
|
# and http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion
|
||||||
|
#
|
||||||
|
# # How this work?
|
||||||
|
#
|
||||||
|
# First it splits the result of `cargo --list` at newline, then it removes the first line.
|
||||||
|
# Then it removes indentation (4 whitespaces) before each items. (Note the x## pattern [1]).
|
||||||
|
# Then it replaces those spaces between item and description with a `:`
|
||||||
|
#
|
||||||
|
# [1]: https://github.com/zsh-users/zsh-completions/blob/master/zsh-completions-howto.org#patterns
|
||||||
|
commands=( ${${${(M)"${(f)$(_call_program commands cargo --list)}":# *}/ ##/}/ ##/:} )
|
||||||
|
_describe -t commands 'command' commands
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#FIXME: Disabled until fixed
|
#FIXME: Disabled until fixed
|
||||||
#gets package names from the manifest file
|
#gets package names from the manifest file
|
||||||
_get_package_names()
|
_cargo_package_names() {
|
||||||
{
|
_message -e packages package
|
||||||
}
|
|
||||||
|
|
||||||
#TODO:see if it makes sense to have 'locate-project' to have non-json output.
|
|
||||||
#strips package name from json stuff
|
|
||||||
_locate_manifest(){
|
|
||||||
local manifest=`cargo locate-project 2>/dev/null`
|
|
||||||
regexp-replace manifest '\{"root":"|"\}' ''
|
|
||||||
echo $manifest
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Extracts the values of "name" from the array given in $1 and shows them as
|
# Extracts the values of "name" from the array given in $1 and shows them as
|
||||||
# command line options for completion
|
# command line options for completion
|
||||||
_get_names_from_array()
|
_cargo_names_from_array() {
|
||||||
{
|
# strip json from the path
|
||||||
local -a filelist;
|
local manifest=${${${"$(cargo locate-project)"}%\"\}}##*\"}
|
||||||
local manifest=$(_locate_manifest)
|
|
||||||
if [[ -z $manifest ]]; then
|
if [[ -z $manifest ]]; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
@ -449,52 +372,36 @@ _get_names_from_array()
|
|||||||
local in_block=false
|
local in_block=false
|
||||||
local block_name=$1
|
local block_name=$1
|
||||||
names=()
|
names=()
|
||||||
while read line
|
while read -r line; do
|
||||||
do
|
|
||||||
if [[ $last_line == "[[$block_name]]" ]]; then
|
if [[ $last_line == "[[$block_name]]" ]]; then
|
||||||
in_block=true
|
in_block=true
|
||||||
else
|
else
|
||||||
if [[ $last_line =~ '.*\[\[.*' ]]; then
|
if [[ $last_line =~ '\s*\[\[.*' ]]; then
|
||||||
in_block=false
|
in_block=false
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $in_block == true ]]; then
|
if [[ $in_block == true ]]; then
|
||||||
if [[ $line =~ '.*name.*=' ]]; then
|
if [[ $line =~ '\s*name\s*=' ]]; then
|
||||||
regexp-replace line '^.*name *= *|"' ""
|
regexp-replace line '^\s*name\s*=\s*|"' ''
|
||||||
names+=$line
|
names+=( "$line" )
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
last_line=$line
|
last_line=$line
|
||||||
done < $manifest
|
done < "$manifest"
|
||||||
_describe $block_name names
|
_describe "$block_name" names
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#Gets the test names from the manifest file
|
#Gets the test names from the manifest file
|
||||||
_test_names()
|
_cargo_test_names() {
|
||||||
{
|
_cargo_names_from_array "test"
|
||||||
_get_names_from_array "test"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#Gets the bench names from the manifest file
|
#Gets the bench names from the manifest file
|
||||||
_benchmark_names()
|
_cargo_benchmark_names() {
|
||||||
{
|
_cargo_names_from_array "bench"
|
||||||
_get_names_from_array "bench"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# These flags are mutally exclusive specifiers for the scope of a command; as
|
|
||||||
# they are used in multiple places without change, they are expanded into the
|
|
||||||
# appropriate command's `_arguments` where appropriate.
|
|
||||||
set command_scope_spec
|
|
||||||
command_scope_spec=(
|
|
||||||
'(--bin --example --test --lib)--bench=[benchmark name]: :_benchmark_names'
|
|
||||||
'(--bench --bin --test --lib)--example=[example name]'
|
|
||||||
'(--bench --example --test --lib)--bin=[binary name]'
|
|
||||||
'(--bench --bin --example --test)--lib=[library name]'
|
|
||||||
'(--bench --bin --example --lib)--test=[test name]'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_cargo
|
_cargo
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# #
|
# #
|
||||||
# Ouput the content of an image to the stdout using the 256 colors of the #
|
# Ouput the content of an image to the stdout using the 256 colors of the #
|
||||||
# terminal. #
|
# terminal. #
|
||||||
# Github: https://github.com/posva/catimg #
|
# GitHub: https://github.com/posva/catimg #
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# #
|
# #
|
||||||
# Ouput the content of an image to the stdout using the 256 colors of the #
|
# Ouput the content of an image to the stdout using the 256 colors of the #
|
||||||
# terminal. #
|
# terminal. #
|
||||||
# Github: https://github.com/posva/catimg #
|
# GitHub: https://github.com/posva/catimg #
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
function help() {
|
function help() {
|
||||||
|
@ -1,2 +1,6 @@
|
|||||||
#!/bin/zsh
|
alias cloudapp="${0:a:h}/cloudapp.rb"
|
||||||
alias cloudapp=$ZSH/plugins/cloudapp/cloudapp.rb
|
|
||||||
|
# Ensure only the owner can access the credentials file
|
||||||
|
if [[ -f ~/.cloudapp ]]; then
|
||||||
|
chmod 600 ~/.cloudapp
|
||||||
|
fi
|
||||||
|
@ -16,7 +16,7 @@ EOF
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
function man() {
|
function colored() {
|
||||||
env \
|
env \
|
||||||
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
|
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
|
||||||
LESS_TERMCAP_md=$(printf "\e[1;31m") \
|
LESS_TERMCAP_md=$(printf "\e[1;31m") \
|
||||||
@ -28,5 +28,9 @@ function man() {
|
|||||||
PAGER="${commands[less]:-$PAGER}" \
|
PAGER="${commands[less]:-$PAGER}" \
|
||||||
_NROFF_U=1 \
|
_NROFF_U=1 \
|
||||||
PATH="$HOME/bin:$PATH" \
|
PATH="$HOME/bin:$PATH" \
|
||||||
man "$@"
|
"$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
function man() {
|
||||||
|
colored man "$@"
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,33 @@
|
|||||||
|
|
||||||
With this plugin you can syntax-highlight file contents of over 300 supported languages and other text formats.
|
With this plugin you can syntax-highlight file contents of over 300 supported languages and other text formats.
|
||||||
|
|
||||||
|
Colorize will highlight the content based on the filename extension. If it can't find a syntax-highlighting
|
||||||
|
method for a given extension, it will try to find one by looking at the file contents. If no highlight method
|
||||||
|
is found it will just cat the file normally, without syntax highlighting.
|
||||||
|
|
||||||
To use it, add colorize to the plugins array of your zshrc file:
|
To use it, add colorize to the plugins array of your zshrc file:
|
||||||
```
|
```
|
||||||
plugins=(... colorize)
|
plugins=(... colorize)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Styles
|
||||||
|
|
||||||
|
Pygments offers multiple styles. By default, the `default` style is used, but you can choose another theme by setting the `ZSH_COLORIZE_STYLE` environment variable:
|
||||||
|
|
||||||
|
`ZSH_COLORIZE_STYLE="colorful"`
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
* `ccat <file> [files]`: colorize the contents of the file (or files, if more than one are provided). If no arguments are passed it will colorize the standard input or stdin.
|
* `ccat <file> [files]`: colorize the contents of the file (or files, if more than one are provided).
|
||||||
|
If no arguments are passed it will colorize the standard input or stdin.
|
||||||
|
|
||||||
Colorize will highlight the content based on the filename extension. If it can't find a syntax-highlighting method for a given extension, it will try to find one by looking at the file contents. If no highlight method is found it will just cat the file normally, without syntax highlighting.
|
* `cless <file> [files]`: colorize the contents of the file (or files, if more than one are provided) and
|
||||||
|
open less. If no arguments are passed it will colorize the standard input or stdin.
|
||||||
|
|
||||||
|
Note that `cless` will behave as less when provided more than one file: you have to navigate files with
|
||||||
|
the commands `:n` for next and `:p` for previous. The downside is that less options are not supported.
|
||||||
|
But you can circumvent this by either using the LESS environment variable, or by running `ccat file1 file2|less --opts`.
|
||||||
|
In the latter form, the file contents will be concatenated and presented by less as a single file.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# easier alias to use the plugin
|
# easier alias to use the plugin
|
||||||
alias ccat='colorize_via_pygmentize'
|
alias ccat='colorize_via_pygmentize'
|
||||||
|
alias cless='colorize_via_pygmentize_less'
|
||||||
|
|
||||||
colorize_via_pygmentize() {
|
colorize_via_pygmentize() {
|
||||||
if ! (( $+commands[pygmentize] )); then
|
if ! (( $+commands[pygmentize] )); then
|
||||||
@ -7,22 +8,50 @@ colorize_via_pygmentize() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# If the environment varianle ZSH_COLORIZE_STYLE
|
||||||
|
# is set, use that theme instead. Otherwise,
|
||||||
|
# use the default.
|
||||||
|
if [ -z $ZSH_COLORIZE_STYLE ]; then
|
||||||
|
ZSH_COLORIZE_STYLE="default"
|
||||||
|
fi
|
||||||
|
|
||||||
# pygmentize stdin if no arguments passed
|
# pygmentize stdin if no arguments passed
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
pygmentize -g
|
pygmentize -O style="$ZSH_COLORIZE_STYLE" -g
|
||||||
return $?
|
return $?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# guess lexer from file extension, or
|
# guess lexer from file extension, or
|
||||||
# guess it from file contents if unsuccessful
|
# guess it from file contents if unsuccessful
|
||||||
|
|
||||||
local FNAME lexer
|
local FNAME lexer
|
||||||
for FNAME in $@
|
for FNAME in "$@"
|
||||||
do
|
do
|
||||||
lexer=$(pygmentize -N "$FNAME")
|
lexer=$(pygmentize -N "$FNAME")
|
||||||
if [[ $lexer != text ]]; then
|
if [[ $lexer != text ]]; then
|
||||||
pygmentize -l "$lexer" "$FNAME"
|
pygmentize -O style="$ZSH_COLORIZE_STYLE" -l "$lexer" "$FNAME"
|
||||||
else
|
else
|
||||||
pygmentize -g "$FNAME"
|
pygmentize -O style="$ZSH_COLORIZE_STYLE" -g "$FNAME"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
colorize_via_pygmentize_less() (
|
||||||
|
# this function is a subshell so tmp_files can be shared to cleanup function
|
||||||
|
declare -a tmp_files
|
||||||
|
|
||||||
|
cleanup () {
|
||||||
|
[[ ${#tmp_files} -gt 0 ]] && rm -f "${tmp_files[@]}"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
trap 'cleanup' EXIT HUP TERM INT
|
||||||
|
|
||||||
|
while (( $# != 0 )); do #TODO: filter out less opts
|
||||||
|
tmp_file="$(mktemp -t "tmp.colorize.XXXX.$(sed 's/\//./g' <<< "$1")")"
|
||||||
|
tmp_files+=("$tmp_file")
|
||||||
|
colorize_via_pygmentize "$1" > "$tmp_file"
|
||||||
|
shift 1
|
||||||
|
done
|
||||||
|
|
||||||
|
less -f "${tmp_files[@]}"
|
||||||
|
)
|
||||||
|
@ -27,5 +27,6 @@ It works out of the box with the command-not-found packages for:
|
|||||||
- [Arch Linux](https://wiki.archlinux.org/index.php/Pkgfile#Command_not_found)
|
- [Arch Linux](https://wiki.archlinux.org/index.php/Pkgfile#Command_not_found)
|
||||||
- [macOS (Homebrew)](https://github.com/Homebrew/homebrew-command-not-found)
|
- [macOS (Homebrew)](https://github.com/Homebrew/homebrew-command-not-found)
|
||||||
- [Fedora](https://fedoraproject.org/wiki/Features/PackageKitCommandNotFound)
|
- [Fedora](https://fedoraproject.org/wiki/Features/PackageKitCommandNotFound)
|
||||||
|
- [NixOS](https://github.com/NixOS/nixpkgs/tree/master/nixos/modules/programs/command-not-found)
|
||||||
|
|
||||||
You can add support for other platforms by submitting a Pull Request.
|
You can add support for other platforms by submitting a Pull Request.
|
||||||
|
@ -31,3 +31,10 @@ if type brew &> /dev/null; then
|
|||||||
eval "$(brew command-not-found-init)";
|
eval "$(brew command-not-found-init)";
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# NixOS command-not-found support
|
||||||
|
if [ -x /run/current-system/sw/bin/command-not-found ]; then
|
||||||
|
command_not_found_handler () {
|
||||||
|
/run/current-system/sw/bin/command-not-found $@
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
@ -35,36 +35,30 @@ _dash() {
|
|||||||
if [[ "$locator" == "platform" ]]; then
|
if [[ "$locator" == "platform" ]]; then
|
||||||
# Since these are the only special cases right now, let's not do the
|
# Since these are the only special cases right now, let's not do the
|
||||||
# expensive processing unless we have to
|
# expensive processing unless we have to
|
||||||
if [[ "$keyword" == "python" || "$keyword" == "java" || \
|
if [[ "$keyword" = (python|java|qt|cocos2d) ]]; then
|
||||||
"$keyword" == "qt" || "$keyword" == "cocs2d" ]]; then
|
|
||||||
docsetName=`echo $doc | grep -Eo "docsetName = .*?;" | sed -e "s/docsetName = \(.*\);/\1/" -e "s/[\":]//g"`
|
docsetName=`echo $doc | grep -Eo "docsetName = .*?;" | sed -e "s/docsetName = \(.*\);/\1/" -e "s/[\":]//g"`
|
||||||
if [[ "$keyword" == "python" ]]; then
|
case "$keyword" in
|
||||||
if [[ "$docsetName" == "Python 2" ]]; then
|
python)
|
||||||
keyword="python2"
|
case "$docsetName" in
|
||||||
elif [[ "$docsetName" == "Python 3" ]]; then
|
"Python 2") keyword="python2" ;;
|
||||||
keyword="python3"
|
"Python 3") keyword="python3" ;;
|
||||||
fi
|
esac ;;
|
||||||
elif [[ "$keyword" == "java" ]]; then
|
java)
|
||||||
if [[ "$docsetName" == "Java SE7" ]]; then
|
case "$docsetName" in
|
||||||
keyword="java7"
|
"Java SE7") keyword="java7" ;;
|
||||||
elif [[ "$docsetName" == "Java SE6" ]]; then
|
"Java SE6") keyword="java6" ;;
|
||||||
keyword="java6"
|
"Java SE8") keyword="java8" ;;
|
||||||
elif [[ "$docsetName" == "Java SE8" ]]; then
|
esac ;;
|
||||||
keyword="java8"
|
qt)
|
||||||
fi
|
case "$docsetName" in
|
||||||
elif [[ "$keyword" == "qt" ]]; then
|
"Qt 5") keyword="qt5" ;;
|
||||||
if [[ "$docsetName" == "Qt 5" ]]; then
|
"Qt 4"|Qt) keyword="qt4" ;;
|
||||||
keyword="qt5"
|
esac ;;
|
||||||
elif [[ "$docsetName" == "Qt 4" ]]; then
|
cocos2d)
|
||||||
keyword="qt4"
|
case "$docsetName" in
|
||||||
elif [[ "$docsetName" == "Qt" ]]; then
|
Cocos3D) keyword="cocos3d" ;;
|
||||||
keyword="qt4"
|
esac ;;
|
||||||
fi
|
esac
|
||||||
elif [[ "$keyword" == "cocos2d" ]]; then
|
|
||||||
if [[ "$docsetName" == "Cocos3D" ]]; then
|
|
||||||
keyword="cocos3d"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1,75 +1,85 @@
|
|||||||
# debian
|
# debian
|
||||||
|
|
||||||
This plugin provides debian related zsh aliases.
|
This plugin provides Debian-related aliases and functions for zsh.
|
||||||
|
|
||||||
To use it add `debian` to the plugins array in your zshrc file.
|
To use it add `debian` to the plugins array in your zshrc file.
|
||||||
|
|
||||||
```zsh
|
```zsh
|
||||||
plugins=(... debian)
|
plugins=(... debian)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
|
||||||
|
- `$apt_pref`: use apt or aptitude if installed, fallback is apt-get.
|
||||||
|
- `$apt_upgr`: use upgrade or safe-upgrade (for aptitude).
|
||||||
|
|
||||||
|
Set `$apt_pref` and `$apt_upgr` to whatever command you want (before sourcing Oh My Zsh) to override this behavior.
|
||||||
|
|
||||||
## Common Aliases
|
## Common Aliases
|
||||||
|
|
||||||
| Alias | Command | Description |
|
| Alias | Command | Description |
|
||||||
| -------- | ------------------------------------------------------------------------------|--------------------------------------------------------------------------- |
|
| ------ | ---------------------------------------------------------------------- | ---------------------------------------------------------- |
|
||||||
| `age` | apt-get | Command line tool for handling packages |
|
| `age` | `apt-get` | Command line tool for handling packages |
|
||||||
| `api` | aptitude | Same functionality as `apt-get`, provides extra options while installation |
|
| `api` | `aptitude` | Same functionality as `apt-get`, provides extra options |
|
||||||
| `acs` | apt-cache search | Command line tool for searching apt software package cache |
|
| `acs` | `apt-cache search` | Command line tool for searching apt software package cache |
|
||||||
| `aps` | aptitude search | Searches installed packages using aptitude |
|
| `aps` | `aptitude search` | Searches installed packages using aptitude |
|
||||||
| `as` | aptitude -F \"* %p -> %d \n(%v/%V)\" \ -no-gui --disable-columns search | - |
|
| `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 |
|
| `afs` | `apt-file search --regexp` | Search file in packages |
|
||||||
| `asrc` | apt-get source | Fetch source packages through `apt-get` |
|
| `asrc` | `apt-get source` | Fetch source packages through `apt-get` |
|
||||||
| `app` | apt-cache policy | Displays priority of package sources |
|
| `app` | `apt-cache policy` | Displays priority of package sources |
|
||||||
|
|
||||||
## Superuser Operations Aliases
|
## Superuser Operations Aliases
|
||||||
|
|
||||||
| Alias | Command | Description |
|
| Alias | Command | Description |
|
||||||
| -------- | -------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------- |
|
| -------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
|
||||||
| `aac` | sudo $apt_pref autoclean | Clears out the local repository of retrieved package files |
|
| `aac` | `sudo $apt_pref autoclean` | Clears out the local repository of retrieved package files |
|
||||||
| `abd` | sudo $apt_pref build-dep | Installs all dependencies for building packages |
|
| `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 |
|
| `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 |
|
| `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 |
|
| `adg` | `sudo $apt_pref update && sudo $apt_pref $apt_upgr` | Update and upgrade packages |
|
||||||
| `adu` | sudo $apt_pref update && sudo $apt_pref dist-upgrade | Smart upgrade that handles dependencies |
|
| `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 |
|
| `afu` | `sudo apt-file update` | Update the files in packages |
|
||||||
| `au` | sudo $apt_pref $apt_upgr | - |
|
| `au` | `sudo $apt_pref $apt_upgr` | Install package upgrades |
|
||||||
| `ai` | sudo $apt_pref install | Command-line tool to install package |
|
| `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 |
|
| `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 |
|
||||||
| `ap` | sudo $apt_pref purge | Removes packages along with configuration files |
|
| `ap` | `sudo $apt_pref purge` | Removes packages along with configuration files |
|
||||||
| `ar` | sudo $apt_pref remove | Removes packages, keeps the configuration files |
|
| `ar` | `sudo $apt_pref remove` | Removes packages, keeps the configuration files |
|
||||||
| `ads` | sudo apt-get dselect-upgrade | Installs packages from list and removes all not in the list |
|
| `ads` | `sudo apt-get dselect-upgrade` | Installs packages from list and removes all not in the list |
|
||||||
| `dia` | sudo dpkg -i ./*.deb | Install all .deb files in the current directory |
|
| `dia` | `sudo dpkg -i ./*.deb` | Install all .deb files in the current directory |
|
||||||
| `di` | sudo dpkg -i | Install all .deb files in the current directory |
|
| `di` | `sudo dpkg -i` | 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 |
|
| `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 |
|
||||||
|
|
||||||
- `$apt_pref` - Use apt or aptitude if installed, fallback is apt-get.
|
|
||||||
- `$apt_upgr` - Use upgrade.
|
|
||||||
|
|
||||||
## Aliases - Commands using `su`
|
## Aliases - Commands using `su`
|
||||||
|
|
||||||
| Alias | Command |
|
| Alias | Command |
|
||||||
| -------- | ------------------------------------------------------------------------------|
|
| ----- | --------------------------------------------------------- |
|
||||||
| `aac` | su -ls \'$apt_pref autoclean\' root |
|
| `aac` | `su -ls "$apt_pref autoclean" root` |
|
||||||
| `ac` | su -ls \'$apt_pref clean\' root |
|
| `ac` | `su -ls "$apt_pref clean" root` |
|
||||||
| `ad` | su -lc \'$apt_pref update\' root |
|
| `ad` | `su -lc "$apt_pref update" root` |
|
||||||
| `adg` | su -lc \'$apt_pref update && aptitude $apt_upgr\' root |
|
| `adg` | `su -lc "$apt_pref update && aptitude $apt_upgr" root` |
|
||||||
| `adu` | su -lc \'$apt_pref update && aptitude dist-upgrade\' root |
|
| `adu` | `su -lc "$apt_pref update && aptitude dist-upgrade" root` |
|
||||||
| `afu` | su -lc "apt-file update |
|
| `afu` | `su -lc "apt-file update"` |
|
||||||
| `ag` | su -lc \'$apt_pref $apt_upgr\' root |
|
| `au` | `su -lc "$apt_pref $apt_upgr" root` |
|
||||||
| `dia` | su -lc "dpkg -i ./*.deb" root |
|
| `dia` | `su -lc "dpkg -i ./*.deb" root` |
|
||||||
|
|
||||||
## Miscellaneous Aliases
|
## Miscellaneous Aliases
|
||||||
|
|
||||||
| Alias | Command | Description |
|
| Alias | Command | Description |
|
||||||
| -------- | -------------------------------------------------|---------------------------------------- |
|
| --------- | ---------------------------------------------- | ------------------------------ |
|
||||||
| `allpkgs`| aptitude search -F "%p" --disable-columns ~i | Display all installed packages |
|
| `allpkgs` | `aptitude search -F "%p" --disable-columns ~i` | Display all installed packages |
|
||||||
| `mydeb` | time dpkg-buildpackage -rfakeroot -us -uc | Create a basic .deb package |
|
| `mydeb` | `time dpkg-buildpackage -rfakeroot -us -uc` | Create a basic .deb package |
|
||||||
|
|
||||||
## Functions
|
## Functions
|
||||||
|
|
||||||
| Fucntion | Description |
|
| Function | Description |
|
||||||
|-----------------------|-------------------------------------------------------------------------------|
|
| ------------------- | --------------------------------------------------------------- |
|
||||||
| `apt-copy` | Create a simple script that can be used to 'duplicate' a system |
|
| `apt-copy` | Create a simple script that can be used to 'duplicate' a system |
|
||||||
| `apt-history` | Displays apt history for a command |
|
| `apt-history` | Displays apt history for a command |
|
||||||
| `kerndeb` | Builds kernel packages |
|
| `kerndeb` | Builds kernel packages |
|
||||||
| `apt-list-packages` | List packages by size |
|
| `apt-list-packages` | List packages by size |
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
- [@AlexBio](https://github.com/AlexBio)
|
||||||
|
- [@dbb](https://github.com/dbb)
|
||||||
|
- [@Mappleconfusers](https://github.com/Mappleconfusers)
|
||||||
|
@ -1,25 +1,21 @@
|
|||||||
# Authors:
|
|
||||||
# https://github.com/AlexBio
|
|
||||||
# https://github.com/dbb
|
|
||||||
# https://github.com/Mappleconfusers
|
|
||||||
#
|
|
||||||
# Debian-related zsh aliases and functions for zsh
|
|
||||||
|
|
||||||
# Use apt or aptitude if installed, fallback is apt-get
|
# Use apt or aptitude if installed, fallback is apt-get
|
||||||
# You can just set apt_pref='apt-get' to override it.
|
# You can just set apt_pref='apt-get' to override it.
|
||||||
if [[ -e $( which -p apt 2>&1 ) ]]; then
|
|
||||||
apt_pref='apt'
|
if [[ -z $apt_pref || -z $apt_upgr ]]; then
|
||||||
apt_upgr='upgrade'
|
if [[ -e $commands[apt] ]]; then
|
||||||
elif [[ -e $( which -p aptitude 2>&1 ) ]]; then
|
apt_pref='apt'
|
||||||
apt_pref='aptitude'
|
apt_upgr='upgrade'
|
||||||
apt_upgr='safe-upgrade'
|
elif [[ -e $commands[aptitude] ]]; then
|
||||||
else
|
apt_pref='aptitude'
|
||||||
apt_pref='apt-get'
|
apt_upgr='safe-upgrade'
|
||||||
apt_upgr='upgrade'
|
else
|
||||||
|
apt_pref='apt-get'
|
||||||
|
apt_upgr='upgrade'
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Use sudo by default if it's installed
|
# Use sudo by default if it's installed
|
||||||
if [[ -e $( which -p sudo 2>&1 ) ]]; then
|
if [[ -e $commands[sudo] ]]; then
|
||||||
use_sudo=1
|
use_sudo=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -32,8 +28,7 @@ alias api='aptitude'
|
|||||||
# Some self-explanatory aliases
|
# Some self-explanatory aliases
|
||||||
alias acs="apt-cache search"
|
alias acs="apt-cache search"
|
||||||
alias aps='aptitude search'
|
alias aps='aptitude search'
|
||||||
alias as="aptitude -F \"* %p -> %d \n(%v/%V)\" \
|
alias as="aptitude -F '* %p -> %d \n(%v/%V)' --no-gui --disable-columns search"
|
||||||
--no-gui --disable-columns search" # search package
|
|
||||||
|
|
||||||
# apt-file
|
# apt-file
|
||||||
alias afs='apt-file search --regexp'
|
alias afs='apt-file search --regexp'
|
||||||
@ -46,60 +41,59 @@ alias app='apt-cache policy'
|
|||||||
# superuser operations ######################################################
|
# superuser operations ######################################################
|
||||||
if [[ $use_sudo -eq 1 ]]; then
|
if [[ $use_sudo -eq 1 ]]; then
|
||||||
# commands using sudo #######
|
# commands using sudo #######
|
||||||
alias aac='sudo $apt_pref autoclean'
|
alias aac="sudo $apt_pref autoclean"
|
||||||
alias abd='sudo $apt_pref build-dep'
|
alias abd="sudo $apt_pref build-dep"
|
||||||
alias ac='sudo $apt_pref clean'
|
alias ac="sudo $apt_pref clean"
|
||||||
alias ad='sudo $apt_pref update'
|
alias ad="sudo $apt_pref update"
|
||||||
alias adg='sudo $apt_pref update && sudo $apt_pref $apt_upgr'
|
alias adg="sudo $apt_pref update && sudo $apt_pref $apt_upgr"
|
||||||
alias adu='sudo $apt_pref update && sudo $apt_pref dist-upgrade'
|
alias adu="sudo $apt_pref update && sudo $apt_pref dist-upgrade"
|
||||||
alias afu='sudo apt-file update'
|
alias afu="sudo apt-file update"
|
||||||
alias au='sudo $apt_pref $apt_upgr'
|
alias au="sudo $apt_pref $apt_upgr"
|
||||||
alias ai='sudo $apt_pref install'
|
alias ai="sudo $apt_pref install"
|
||||||
# Install all packages given on the command line while using only the first word of each line:
|
# Install all packages given on the command line while using only the first word of each line:
|
||||||
# acs ... | ail
|
# acs ... | ail
|
||||||
alias ail="sed -e 's/ */ /g' -e 's/ *//' | cut -s -d ' ' -f 1 | "' xargs sudo $apt_pref install'
|
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 ap="sudo $apt_pref purge"
|
||||||
alias ar='sudo $apt_pref remove'
|
alias ar="sudo $apt_pref remove"
|
||||||
|
|
||||||
# apt-get only
|
# apt-get only
|
||||||
alias ads='sudo apt-get dselect-upgrade'
|
alias ads="sudo apt-get dselect-upgrade"
|
||||||
|
|
||||||
# Install all .deb files in the current directory.
|
# Install all .deb files in the current directory.
|
||||||
# Warning: you will need to put the glob in single quotes if you use:
|
# Warning: you will need to put the glob in single quotes if you use:
|
||||||
# glob_subst
|
# glob_subst
|
||||||
alias dia='sudo dpkg -i ./*.deb'
|
alias dia="sudo dpkg -i ./*.deb"
|
||||||
alias di='sudo dpkg -i'
|
alias di="sudo dpkg -i"
|
||||||
|
|
||||||
# Remove ALL kernel images and headers EXCEPT the one in use
|
# Remove ALL kernel images and headers EXCEPT the one in use
|
||||||
alias kclean='sudo aptitude remove -P ?and(~i~nlinux-(ima|hea) \
|
alias kclean='sudo aptitude remove -P ?and(~i~nlinux-(ima|hea) ?not(~n$(uname -r)))'
|
||||||
?not(~n`uname -r`))'
|
|
||||||
|
|
||||||
|
|
||||||
# commands using su #########
|
# commands using su #########
|
||||||
else
|
else
|
||||||
alias aac='su -ls \'$apt_pref autoclean\' root'
|
alias aac="su -ls '$apt_pref autoclean' root"
|
||||||
abd() {
|
function abd() {
|
||||||
cmd="su -lc '$apt_pref build-dep $@' root"
|
cmd="su -lc '$apt_pref build-dep $@' root"
|
||||||
print "$cmd"
|
print "$cmd"
|
||||||
eval "$cmd"
|
eval "$cmd"
|
||||||
}
|
}
|
||||||
alias ac='su -ls \'$apt_pref clean\' root'
|
alias ac="su -ls '$apt_pref clean' root"
|
||||||
alias ad='su -lc \'$apt_pref update\' root'
|
alias ad="su -lc '$apt_pref update' root"
|
||||||
alias adg='su -lc \'$apt_pref update && aptitude $apt_upgr\' root'
|
alias adg="su -lc '$apt_pref update && aptitude $apt_upgr' root"
|
||||||
alias adu='su -lc \'$apt_pref update && aptitude dist-upgrade\' root'
|
alias adu="su -lc '$apt_pref update && aptitude dist-upgrade' root"
|
||||||
alias afu='su -lc "apt-file update"'
|
alias afu="su -lc '$apt-file update'"
|
||||||
alias ag='su -lc \'$apt_pref $apt_upgr\' root'
|
alias au="su -lc '$apt_pref $apt_upgr' root"
|
||||||
ai() {
|
function ai() {
|
||||||
cmd="su -lc 'aptitude -P install $@' root"
|
cmd="su -lc 'aptitude -P install $@' root"
|
||||||
print "$cmd"
|
print "$cmd"
|
||||||
eval "$cmd"
|
eval "$cmd"
|
||||||
}
|
}
|
||||||
ap() {
|
function ap() {
|
||||||
cmd="su -lc '$apt_pref -P purge $@' root"
|
cmd="su -lc '$apt_pref -P purge $@' root"
|
||||||
print "$cmd"
|
print "$cmd"
|
||||||
eval "$cmd"
|
eval "$cmd"
|
||||||
}
|
}
|
||||||
ar() {
|
function ar() {
|
||||||
cmd="su -lc '$apt_pref -P remove $@' root"
|
cmd="su -lc '$apt_pref -P remove $@' root"
|
||||||
print "$cmd"
|
print "$cmd"
|
||||||
eval "$cmd"
|
eval "$cmd"
|
||||||
@ -111,8 +105,7 @@ else
|
|||||||
alias di='su -lc "dpkg -i" root'
|
alias di='su -lc "dpkg -i" root'
|
||||||
|
|
||||||
# Remove ALL kernel images and headers EXCEPT the one in use
|
# Remove ALL kernel images and headers EXCEPT the one in use
|
||||||
alias kclean='su -lc '\''aptitude remove -P ?and(~i~nlinux-(ima|hea) \
|
alias kclean='su -lc "aptitude remove -P ?and(~i~nlinux-(ima|hea) ?not(~n$(uname -r)))" root'
|
||||||
?not(~n`uname -r`))'\'' root'
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Completion ################################################################
|
# Completion ################################################################
|
||||||
@ -121,16 +114,16 @@ fi
|
|||||||
# Registers a compdef for $1 that calls $apt_pref with the commands $2
|
# Registers a compdef for $1 that calls $apt_pref with the commands $2
|
||||||
# To do that it creates a new completion function called _apt_pref_$2
|
# To do that it creates a new completion function called _apt_pref_$2
|
||||||
#
|
#
|
||||||
apt_pref_compdef() {
|
function apt_pref_compdef() {
|
||||||
local f fb
|
local f fb
|
||||||
f="_apt_pref_${2}"
|
f="_apt_pref_${2}"
|
||||||
|
|
||||||
eval "function ${f}() {
|
eval "function ${f}() {
|
||||||
shift words;
|
shift words;
|
||||||
service=\"\$apt_pref\";
|
service=\"\$apt_pref\";
|
||||||
words=(\"\$apt_pref\" '$2' \$words);
|
words=(\"\$apt_pref\" '$2' \$words);
|
||||||
((CURRENT++))
|
((CURRENT++))
|
||||||
test \"\${apt_pref}\" = 'aptitude' && _aptitude || _apt
|
test \"\${apt_pref}\" = 'aptitude' && _aptitude || _apt
|
||||||
}"
|
}"
|
||||||
|
|
||||||
compdef "$f" "$1"
|
compdef "$f" "$1"
|
||||||
@ -141,7 +134,7 @@ apt_pref_compdef abd "build-dep"
|
|||||||
apt_pref_compdef ac "clean"
|
apt_pref_compdef ac "clean"
|
||||||
apt_pref_compdef ad "update"
|
apt_pref_compdef ad "update"
|
||||||
apt_pref_compdef afu "update"
|
apt_pref_compdef afu "update"
|
||||||
apt_pref_compdef ag "$apt_upgr"
|
apt_pref_compdef au "$apt_upgr"
|
||||||
apt_pref_compdef ai "install"
|
apt_pref_compdef ai "install"
|
||||||
apt_pref_compdef ail "install"
|
apt_pref_compdef ail "install"
|
||||||
apt_pref_compdef ap "purge"
|
apt_pref_compdef ap "purge"
|
||||||
@ -158,7 +151,7 @@ alias mydeb='time dpkg-buildpackage -rfakeroot -us -uc'
|
|||||||
|
|
||||||
# Functions #################################################################
|
# Functions #################################################################
|
||||||
# create a simple script that can be used to 'duplicate' a system
|
# create a simple script that can be used to 'duplicate' a system
|
||||||
apt-copy() {
|
function apt-copy() {
|
||||||
print '#!/bin/sh'"\n" > apt-copy.sh
|
print '#!/bin/sh'"\n" > apt-copy.sh
|
||||||
|
|
||||||
cmd='$apt_pref install'
|
cmd='$apt_pref install'
|
||||||
@ -180,7 +173,7 @@ apt-copy() {
|
|||||||
# apt-history rollback
|
# apt-history rollback
|
||||||
# apt-history list
|
# apt-history list
|
||||||
# Based On: https://linuxcommando.blogspot.com/2008/08/how-to-show-apt-log-history.html
|
# Based On: https://linuxcommando.blogspot.com/2008/08/how-to-show-apt-log-history.html
|
||||||
apt-history () {
|
function apt-history() {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
install)
|
install)
|
||||||
zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*)
|
zgrep --no-filename 'install ' $(ls -rt /var/log/dpkg*)
|
||||||
@ -209,11 +202,11 @@ apt-history () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Kernel-package building shortcut
|
# Kernel-package building shortcut
|
||||||
kerndeb () {
|
function kerndeb() {
|
||||||
# temporarily unset MAKEFLAGS ( '-j3' will fail )
|
# temporarily unset MAKEFLAGS ( '-j3' will fail )
|
||||||
MAKEFLAGS=$( print - $MAKEFLAGS | perl -pe 's/-j\s*[\d]+//g' )
|
MAKEFLAGS=$( print - $MAKEFLAGS | perl -pe 's/-j\s*[\d]+//g' )
|
||||||
print '$MAKEFLAGS set to '"'$MAKEFLAGS'"
|
print '$MAKEFLAGS set to '"'$MAKEFLAGS'"
|
||||||
appendage='-custom' # this shows up in $ (uname -r )
|
appendage='-custom' # this shows up in $(uname -r )
|
||||||
revision=$(date +"%Y%m%d") # this shows up in the .deb file name
|
revision=$(date +"%Y%m%d") # this shows up in the .deb file name
|
||||||
|
|
||||||
make-kpkg clean
|
make-kpkg clean
|
||||||
@ -223,10 +216,9 @@ kerndeb () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# List packages by size
|
# List packages by size
|
||||||
function apt-list-packages {
|
function apt-list-packages() {
|
||||||
dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | \
|
dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | \
|
||||||
grep -v deinstall | \
|
grep -v deinstall | \
|
||||||
sort -n | \
|
sort -n | \
|
||||||
awk '{print $1" "$2}'
|
awk '{print $1" "$2}'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@ _managepy-makemessages(){
|
|||||||
"--no-default-ignore[Don't ignore the common glob-style patterns 'CVS', '.*', '*~' and '*.pyc'.]" \
|
"--no-default-ignore[Don't ignore the common glob-style patterns 'CVS', '.*', '*~' and '*.pyc'.]" \
|
||||||
"--no-wrap[Don't break long message lines into several lines.]" \
|
"--no-wrap[Don't break long message lines into several lines.]" \
|
||||||
"--no-location[Don't write '#: filename:line' lines.]" \
|
"--no-location[Don't write '#: filename:line' lines.]" \
|
||||||
'--no-obsolete[emove obsolete message strings.]' \
|
'--no-obsolete[Remove obsolete message strings.]' \
|
||||||
'--keep-pot[Keep .pot file after making messages.]' \
|
'--keep-pot[Keep .pot file after making messages.]' \
|
||||||
$nul_args && ret=0
|
$nul_args && ret=0
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ __docker-compose_all_services_in_compose_file() {
|
|||||||
local already_selected
|
local already_selected
|
||||||
local -a services
|
local -a services
|
||||||
already_selected=$(echo $words | tr " " "|")
|
already_selected=$(echo $words | tr " " "|")
|
||||||
__docker-compose_q config --services \
|
__docker-compose_q ps --services "$@" \
|
||||||
| grep -Ev "^(${already_selected})$"
|
| grep -Ev "^(${already_selected})$"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,125 +31,42 @@ __docker-compose_all_services_in_compose_file() {
|
|||||||
__docker-compose_services_all() {
|
__docker-compose_services_all() {
|
||||||
[[ $PREFIX = -* ]] && return 1
|
[[ $PREFIX = -* ]] && return 1
|
||||||
integer ret=1
|
integer ret=1
|
||||||
services=$(__docker-compose_all_services_in_compose_file)
|
services=$(__docker-compose_all_services_in_compose_file "$@")
|
||||||
_alternative "args:services:($services)" && ret=0
|
_alternative "args:services:($services)" && ret=0
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
# All services that have an entry with the given key in their docker-compose.yml section
|
|
||||||
__docker-compose_services_with_key() {
|
|
||||||
local already_selected
|
|
||||||
local -a buildable
|
|
||||||
already_selected=$(echo $words | tr " " "|")
|
|
||||||
# flatten sections to one line, then filter lines containing the key and return section name.
|
|
||||||
__docker-compose_q config \
|
|
||||||
| sed -n -e '/^services:/,/^[^ ]/p' \
|
|
||||||
| sed -n 's/^ //p' \
|
|
||||||
| awk '/^[a-zA-Z0-9]/{printf "\n"};{printf $0;next;}' \
|
|
||||||
| grep " \+$1:" \
|
|
||||||
| cut -d: -f1 \
|
|
||||||
| grep -Ev "^(${already_selected})$"
|
|
||||||
}
|
|
||||||
|
|
||||||
# All services that are defined by a Dockerfile reference
|
# All services that are defined by a Dockerfile reference
|
||||||
__docker-compose_services_from_build() {
|
__docker-compose_services_from_build() {
|
||||||
[[ $PREFIX = -* ]] && return 1
|
[[ $PREFIX = -* ]] && return 1
|
||||||
integer ret=1
|
__docker-compose_services_all --filter source=build
|
||||||
buildable=$(__docker-compose_services_with_key build)
|
|
||||||
_alternative "args:buildable services:($buildable)" && ret=0
|
|
||||||
|
|
||||||
return ret
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# All services that are defined by an image
|
# All services that are defined by an image
|
||||||
__docker-compose_services_from_image() {
|
__docker-compose_services_from_image() {
|
||||||
[[ $PREFIX = -* ]] && return 1
|
[[ $PREFIX = -* ]] && return 1
|
||||||
integer ret=1
|
__docker-compose_services_all --filter source=image
|
||||||
pullable=$(__docker-compose_services_with_key image)
|
|
||||||
_alternative "args:pullable services:($pullable)" && ret=0
|
|
||||||
|
|
||||||
return ret
|
|
||||||
}
|
|
||||||
|
|
||||||
__docker-compose_get_services() {
|
|
||||||
[[ $PREFIX = -* ]] && return 1
|
|
||||||
integer ret=1
|
|
||||||
local kind
|
|
||||||
declare -a running paused stopped lines args services
|
|
||||||
|
|
||||||
docker_status=$(docker ps > /dev/null 2>&1)
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
_message "Error! Docker is not running."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
kind=$1
|
|
||||||
shift
|
|
||||||
[[ $kind =~ (stopped|all) ]] && args=($args -a)
|
|
||||||
|
|
||||||
lines=(${(f)"$(_call_program commands docker $docker_options ps $args)"})
|
|
||||||
services=(${(f)"$(_call_program commands docker-compose 2>/dev/null $compose_options ps -q)"})
|
|
||||||
|
|
||||||
# Parse header line to find columns
|
|
||||||
local i=1 j=1 k header=${lines[1]}
|
|
||||||
declare -A begin end
|
|
||||||
while (( j < ${#header} - 1 )); do
|
|
||||||
i=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 1 ))
|
|
||||||
j=$(( i + ${${header[$i,-1]}[(i) ]} - 1 ))
|
|
||||||
k=$(( j + ${${header[$j,-1]}[(i)[^ ]]} - 2 ))
|
|
||||||
begin[${header[$i,$((j-1))]}]=$i
|
|
||||||
end[${header[$i,$((j-1))]}]=$k
|
|
||||||
done
|
|
||||||
lines=(${lines[2,-1]})
|
|
||||||
|
|
||||||
# Container ID
|
|
||||||
local line s name
|
|
||||||
local -a names
|
|
||||||
for line in $lines; do
|
|
||||||
if [[ ${services[@]} == *"${line[${begin[CONTAINER ID]},${end[CONTAINER ID]}]%% ##}"* ]]; then
|
|
||||||
names=(${(ps:,:)${${line[${begin[NAMES]},-1]}%% *}})
|
|
||||||
for name in $names; do
|
|
||||||
s="${${name%_*}#*_}:${(l:15:: :::)${${line[${begin[CREATED]},${end[CREATED]}]/ ago/}%% ##}}"
|
|
||||||
s="$s, ${line[${begin[CONTAINER ID]},${end[CONTAINER ID]}]%% ##}"
|
|
||||||
s="$s, ${${${line[${begin[IMAGE]},${end[IMAGE]}]}/:/\\:}%% ##}"
|
|
||||||
if [[ ${line[${begin[STATUS]},${end[STATUS]}]} = Exit* ]]; then
|
|
||||||
stopped=($stopped $s)
|
|
||||||
else
|
|
||||||
if [[ ${line[${begin[STATUS]},${end[STATUS]}]} = *\(Paused\)* ]]; then
|
|
||||||
paused=($paused $s)
|
|
||||||
fi
|
|
||||||
running=($running $s)
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
[[ $kind =~ (running|all) ]] && _describe -t services-running "running services" running "$@" && ret=0
|
|
||||||
[[ $kind =~ (paused|all) ]] && _describe -t services-paused "paused services" paused "$@" && ret=0
|
|
||||||
[[ $kind =~ (stopped|all) ]] && _describe -t services-stopped "stopped services" stopped "$@" && ret=0
|
|
||||||
|
|
||||||
return ret
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__docker-compose_pausedservices() {
|
__docker-compose_pausedservices() {
|
||||||
[[ $PREFIX = -* ]] && return 1
|
[[ $PREFIX = -* ]] && return 1
|
||||||
__docker-compose_get_services paused "$@"
|
__docker-compose_services_all --filter status=paused
|
||||||
}
|
}
|
||||||
|
|
||||||
__docker-compose_stoppedservices() {
|
__docker-compose_stoppedservices() {
|
||||||
[[ $PREFIX = -* ]] && return 1
|
[[ $PREFIX = -* ]] && return 1
|
||||||
__docker-compose_get_services stopped "$@"
|
__docker-compose_services_all --filter status=stopped
|
||||||
}
|
}
|
||||||
|
|
||||||
__docker-compose_runningservices() {
|
__docker-compose_runningservices() {
|
||||||
[[ $PREFIX = -* ]] && return 1
|
[[ $PREFIX = -* ]] && return 1
|
||||||
__docker-compose_get_services running "$@"
|
__docker-compose_services_all --filter status=running
|
||||||
}
|
}
|
||||||
|
|
||||||
__docker-compose_services() {
|
__docker-compose_services() {
|
||||||
[[ $PREFIX = -* ]] && return 1
|
[[ $PREFIX = -* ]] && return 1
|
||||||
__docker-compose_get_services all "$@"
|
__docker-compose_services_all
|
||||||
}
|
}
|
||||||
|
|
||||||
__docker-compose_caching_policy() {
|
__docker-compose_caching_policy() {
|
||||||
@ -196,9 +113,12 @@ __docker-compose_subcommand() {
|
|||||||
$opts_help \
|
$opts_help \
|
||||||
"*--build-arg=[Set build-time variables for one service.]:<varname>=<value>: " \
|
"*--build-arg=[Set build-time variables for one service.]:<varname>=<value>: " \
|
||||||
'--force-rm[Always remove intermediate containers.]' \
|
'--force-rm[Always remove intermediate containers.]' \
|
||||||
'--memory[Memory limit for the build container.]' \
|
'(--quiet -q)'{--quiet,-q}'[Curb build output]' \
|
||||||
|
'(--memory -m)'{--memory,-m}'[Memory limit for the build container.]' \
|
||||||
'--no-cache[Do not use cache when building the image.]' \
|
'--no-cache[Do not use cache when building the image.]' \
|
||||||
'--pull[Always attempt to pull a newer version of the image.]' \
|
'--pull[Always attempt to pull a newer version of the image.]' \
|
||||||
|
'--compress[Compress the build context using gzip.]' \
|
||||||
|
'--parallel[Build images in parallel.]' \
|
||||||
'*:services:__docker-compose_services_from_build' && ret=0
|
'*:services:__docker-compose_services_from_build' && ret=0
|
||||||
;;
|
;;
|
||||||
(bundle)
|
(bundle)
|
||||||
@ -213,7 +133,8 @@ __docker-compose_subcommand() {
|
|||||||
'(--quiet -q)'{--quiet,-q}"[Only validate the configuration, don't print anything.]" \
|
'(--quiet -q)'{--quiet,-q}"[Only validate the configuration, don't print anything.]" \
|
||||||
'--resolve-image-digests[Pin image tags to digests.]' \
|
'--resolve-image-digests[Pin image tags to digests.]' \
|
||||||
'--services[Print the service names, one per line.]' \
|
'--services[Print the service names, one per line.]' \
|
||||||
'--volumes[Print the volume names, one per line.]' && ret=0
|
'--volumes[Print the volume names, one per line.]' \
|
||||||
|
'--hash[Print the service config hash, one per line. Set "service1,service2" for a list of specified services.]' \ && ret=0
|
||||||
;;
|
;;
|
||||||
(create)
|
(create)
|
||||||
_arguments \
|
_arguments \
|
||||||
@ -222,11 +143,12 @@ __docker-compose_subcommand() {
|
|||||||
$opts_no_recreate \
|
$opts_no_recreate \
|
||||||
$opts_no_build \
|
$opts_no_build \
|
||||||
"(--no-build)--build[Build images before creating containers.]" \
|
"(--no-build)--build[Build images before creating containers.]" \
|
||||||
'*:services:__docker-compose_services_all' && ret=0
|
'*:services:__docker-compose_services' && ret=0
|
||||||
;;
|
;;
|
||||||
(down)
|
(down)
|
||||||
_arguments \
|
_arguments \
|
||||||
$opts_help \
|
$opts_help \
|
||||||
|
$opts_timeout \
|
||||||
"--rmi[Remove images. Type must be one of: 'all': Remove all images used by any service. 'local': Remove only images that don't have a custom tag set by the \`image\` field.]:type:(all local)" \
|
"--rmi[Remove images. Type must be one of: 'all': Remove all images used by any service. 'local': Remove only images that don't have a custom tag set by the \`image\` field.]:type:(all local)" \
|
||||||
'(-v --volumes)'{-v,--volumes}"[Remove named volumes declared in the \`volumes\` section of the Compose file and anonymous volumes attached to containers.]" \
|
'(-v --volumes)'{-v,--volumes}"[Remove named volumes declared in the \`volumes\` section of the Compose file and anonymous volumes attached to containers.]" \
|
||||||
$opts_remove_orphans && ret=0
|
$opts_remove_orphans && ret=0
|
||||||
@ -235,16 +157,18 @@ __docker-compose_subcommand() {
|
|||||||
_arguments \
|
_arguments \
|
||||||
$opts_help \
|
$opts_help \
|
||||||
'--json[Output events as a stream of json objects]' \
|
'--json[Output events as a stream of json objects]' \
|
||||||
'*:services:__docker-compose_services_all' && ret=0
|
'*:services:__docker-compose_services' && ret=0
|
||||||
;;
|
;;
|
||||||
(exec)
|
(exec)
|
||||||
_arguments \
|
_arguments \
|
||||||
$opts_help \
|
$opts_help \
|
||||||
'-d[Detached mode: Run command in the background.]' \
|
'-d[Detached mode: Run command in the background.]' \
|
||||||
'--privileged[Give extended privileges to the process.]' \
|
'--privileged[Give extended privileges to the process.]' \
|
||||||
'(-u --user)'{-u,--user=}'[Run the command as this user.]:username:_users' \
|
'(-u --user)'{-u,--user=}'[Run the command as this user.]:username:_users' \
|
||||||
'-T[Disable pseudo-tty allocation. By default `docker-compose exec` allocates a TTY.]' \
|
'-T[Disable pseudo-tty allocation. By default `docker-compose exec` allocates a TTY.]' \
|
||||||
'--index=[Index of the container if there are multiple instances of a service \[default: 1\]]:index: ' \
|
'--index=[Index of the container if there are multiple instances of a service \[default: 1\]]:index: ' \
|
||||||
|
'*'{-e,--env}'[KEY=VAL Set an environment variable (can be used multiple times)]:environment variable KEY=VAL: ' \
|
||||||
|
'(-w --workdir)'{-w,--workdir=}'[Working directory inside the container]:workdir: ' \
|
||||||
'(-):running services:__docker-compose_runningservices' \
|
'(-):running services:__docker-compose_runningservices' \
|
||||||
'(-):command: _command_names -e' \
|
'(-):command: _command_names -e' \
|
||||||
'*::arguments: _normal' && ret=0
|
'*::arguments: _normal' && ret=0
|
||||||
@ -252,12 +176,12 @@ __docker-compose_subcommand() {
|
|||||||
(help)
|
(help)
|
||||||
_arguments ':subcommand:__docker-compose_commands' && ret=0
|
_arguments ':subcommand:__docker-compose_commands' && ret=0
|
||||||
;;
|
;;
|
||||||
(images)
|
(images)
|
||||||
_arguments \
|
_arguments \
|
||||||
$opts_help \
|
$opts_help \
|
||||||
'-q[Only display IDs]' \
|
'-q[Only display IDs]' \
|
||||||
'*:services:__docker-compose_services_all' && ret=0
|
'*:services:__docker-compose_services' && ret=0
|
||||||
;;
|
;;
|
||||||
(kill)
|
(kill)
|
||||||
_arguments \
|
_arguments \
|
||||||
$opts_help \
|
$opts_help \
|
||||||
@ -271,7 +195,7 @@ __docker-compose_subcommand() {
|
|||||||
$opts_no_color \
|
$opts_no_color \
|
||||||
'--tail=[Number of lines to show from the end of the logs for each container.]:number of lines: ' \
|
'--tail=[Number of lines to show from the end of the logs for each container.]:number of lines: ' \
|
||||||
'(-t --timestamps)'{-t,--timestamps}'[Show timestamps]' \
|
'(-t --timestamps)'{-t,--timestamps}'[Show timestamps]' \
|
||||||
'*:services:__docker-compose_services_all' && ret=0
|
'*:services:__docker-compose_services' && ret=0
|
||||||
;;
|
;;
|
||||||
(pause)
|
(pause)
|
||||||
_arguments \
|
_arguments \
|
||||||
@ -290,12 +214,16 @@ __docker-compose_subcommand() {
|
|||||||
_arguments \
|
_arguments \
|
||||||
$opts_help \
|
$opts_help \
|
||||||
'-q[Only display IDs]' \
|
'-q[Only display IDs]' \
|
||||||
'*:services:__docker-compose_services_all' && ret=0
|
'--filter KEY=VAL[Filter services by a property]:<filtername>=<value>:' \
|
||||||
|
'*:services:__docker-compose_services' && ret=0
|
||||||
;;
|
;;
|
||||||
(pull)
|
(pull)
|
||||||
_arguments \
|
_arguments \
|
||||||
$opts_help \
|
$opts_help \
|
||||||
'--ignore-pull-failures[Pull what it can and ignores images with pull failures.]' \
|
'--ignore-pull-failures[Pull what it can and ignores images with pull failures.]' \
|
||||||
|
'--no-parallel[Disable parallel pulling]' \
|
||||||
|
'(-q --quiet)'{-q,--quiet}'[Pull without printing progress information]' \
|
||||||
|
'--include-deps[Also pull services declared as dependencies]' \
|
||||||
'*:services:__docker-compose_services_from_image' && ret=0
|
'*:services:__docker-compose_services_from_image' && ret=0
|
||||||
;;
|
;;
|
||||||
(push)
|
(push)
|
||||||
@ -317,6 +245,7 @@ __docker-compose_subcommand() {
|
|||||||
$opts_no_deps \
|
$opts_no_deps \
|
||||||
'-d[Detached mode: Run container in the background, print new container name.]' \
|
'-d[Detached mode: Run container in the background, print new container name.]' \
|
||||||
'*-e[KEY=VAL Set an environment variable (can be used multiple times)]:environment variable KEY=VAL: ' \
|
'*-e[KEY=VAL Set an environment variable (can be used multiple times)]:environment variable KEY=VAL: ' \
|
||||||
|
'*'{-l,--label}'[KEY=VAL Add or override a label (can be used multiple times)]:label KEY=VAL: ' \
|
||||||
'--entrypoint[Overwrite the entrypoint of the image.]:entry point: ' \
|
'--entrypoint[Overwrite the entrypoint of the image.]:entry point: ' \
|
||||||
'--name=[Assign a name to the container]:name: ' \
|
'--name=[Assign a name to the container]:name: ' \
|
||||||
'(-p --publish)'{-p,--publish=}"[Publish a container's port(s) to the host]" \
|
'(-p --publish)'{-p,--publish=}"[Publish a container's port(s) to the host]" \
|
||||||
@ -326,6 +255,7 @@ __docker-compose_subcommand() {
|
|||||||
'(-u --user)'{-u,--user=}'[Run as specified username or uid]:username or uid:_users' \
|
'(-u --user)'{-u,--user=}'[Run as specified username or uid]:username or uid:_users' \
|
||||||
'(-v --volume)*'{-v,--volume=}'[Bind mount a volume]:volume: ' \
|
'(-v --volume)*'{-v,--volume=}'[Bind mount a volume]:volume: ' \
|
||||||
'(-w --workdir)'{-w,--workdir=}'[Working directory inside the container]:workdir: ' \
|
'(-w --workdir)'{-w,--workdir=}'[Working directory inside the container]:workdir: ' \
|
||||||
|
"--use-aliases[Use the services network aliases in the network(s) the container connects to]" \
|
||||||
'(-):services:__docker-compose_services' \
|
'(-):services:__docker-compose_services' \
|
||||||
'(-):command: _command_names -e' \
|
'(-):command: _command_names -e' \
|
||||||
'*::arguments: _normal' && ret=0
|
'*::arguments: _normal' && ret=0
|
||||||
@ -369,8 +299,10 @@ __docker-compose_subcommand() {
|
|||||||
"(--no-build)--build[Build images before starting containers.]" \
|
"(--no-build)--build[Build images before starting containers.]" \
|
||||||
"(-d)--abort-on-container-exit[Stops all containers if any container was stopped. Incompatible with -d.]" \
|
"(-d)--abort-on-container-exit[Stops all containers if any container was stopped. Incompatible with -d.]" \
|
||||||
'(-t --timeout)'{-t,--timeout}"[Use this timeout in seconds for container shutdown when attached or when containers are already running. (default: 10)]:seconds: " \
|
'(-t --timeout)'{-t,--timeout}"[Use this timeout in seconds for container shutdown when attached or when containers are already running. (default: 10)]:seconds: " \
|
||||||
|
'--scale[SERVICE=NUM Scale SERVICE to NUM instances. Overrides the `scale` setting in the Compose file if present.]:service scale SERVICE=NUM: ' \
|
||||||
|
'--exit-code-from=[Return the exit code of the selected service container. Implies --abort-on-container-exit]:service:__docker-compose_services' \
|
||||||
$opts_remove_orphans \
|
$opts_remove_orphans \
|
||||||
'*:services:__docker-compose_services_all' && ret=0
|
'*:services:__docker-compose_services' && ret=0
|
||||||
;;
|
;;
|
||||||
(version)
|
(version)
|
||||||
_arguments \
|
_arguments \
|
||||||
@ -409,8 +341,11 @@ _docker-compose() {
|
|||||||
'(- :)'{-h,--help}'[Get help]' \
|
'(- :)'{-h,--help}'[Get help]' \
|
||||||
'*'{-f,--file}"[${file_description}]:file:_files -g '*.yml'" \
|
'*'{-f,--file}"[${file_description}]:file:_files -g '*.yml'" \
|
||||||
'(-p --project-name)'{-p,--project-name}'[Specify an alternate project name (default: directory name)]:project name:' \
|
'(-p --project-name)'{-p,--project-name}'[Specify an alternate project name (default: directory name)]:project name:' \
|
||||||
'--verbose[Show more output]' \
|
"--compatibility[If set, Compose will attempt to convert keys in v3 files to their non-Swarm equivalent]" \
|
||||||
'(- :)'{-v,--version}'[Print version and exit]' \
|
'(- :)'{-v,--version}'[Print version and exit]' \
|
||||||
|
'--verbose[Show more output]' \
|
||||||
|
'--log-level=[Set log level]:level:(DEBUG INFO WARNING ERROR CRITICAL)' \
|
||||||
|
'--no-ansi[Do not print ANSI control characters]' \
|
||||||
'(-H --host)'{-H,--host}'[Daemon socket to connect to]:host:' \
|
'(-H --host)'{-H,--host}'[Daemon socket to connect to]:host:' \
|
||||||
'--tls[Use TLS; implied by --tlsverify]' \
|
'--tls[Use TLS; implied by --tlsverify]' \
|
||||||
'--tlscacert=[Trust certs signed only by this CA]:ca path:' \
|
'--tlscacert=[Trust certs signed only by this CA]:ca path:' \
|
||||||
@ -421,7 +356,7 @@ _docker-compose() {
|
|||||||
'(-): :->command' \
|
'(-): :->command' \
|
||||||
'(-)*:: :->option-or-argument' && ret=0
|
'(-)*:: :->option-or-argument' && ret=0
|
||||||
|
|
||||||
local -a relevant_compose_flags relevant_docker_flags compose_options docker_options
|
local -a relevant_compose_flags relevant_compose_repeatable_flags relevant_docker_flags compose_options docker_options
|
||||||
|
|
||||||
relevant_compose_flags=(
|
relevant_compose_flags=(
|
||||||
"--file" "-f"
|
"--file" "-f"
|
||||||
@ -435,6 +370,10 @@ _docker-compose() {
|
|||||||
"--skip-hostname-check"
|
"--skip-hostname-check"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
relevant_compose_repeatable_flags=(
|
||||||
|
"--file" "-f"
|
||||||
|
)
|
||||||
|
|
||||||
relevant_docker_flags=(
|
relevant_docker_flags=(
|
||||||
"--host" "-H"
|
"--host" "-H"
|
||||||
"--tls"
|
"--tls"
|
||||||
@ -452,9 +391,18 @@ _docker-compose() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [[ -n "${relevant_compose_flags[(r)$k]}" ]]; then
|
if [[ -n "${relevant_compose_flags[(r)$k]}" ]]; then
|
||||||
compose_options+=$k
|
if [[ -n "${relevant_compose_repeatable_flags[(r)$k]}" ]]; then
|
||||||
if [[ -n "$opt_args[$k]" ]]; then
|
values=("${(@s/:/)opt_args[$k]}")
|
||||||
compose_options+=$opt_args[$k]
|
for value in $values
|
||||||
|
do
|
||||||
|
compose_options+=$k
|
||||||
|
compose_options+=$value
|
||||||
|
done
|
||||||
|
else
|
||||||
|
compose_options+=$k
|
||||||
|
if [[ -n "$opt_args[$k]" ]]; then
|
||||||
|
compose_options+=$opt_args[$k]
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
## Docker autocomplete plugin
|
# Docker plugin
|
||||||
|
|
||||||
A copy of the completion script from the
|
This plugin adds auto-completion for [docker](https://www.docker.com/).
|
||||||
[docker/cli](https://github.com/docker/cli/blob/master/contrib/completion/zsh/_docker)
|
|
||||||
git repo.
|
To use it add `docker` to the plugins array in your zshrc file.
|
||||||
|
```zsh
|
||||||
|
plugins=(... docker)
|
||||||
|
```
|
||||||
|
|
||||||
|
A copy of the completion script from the docker/cli git repo:
|
||||||
|
https://github.com/docker/cli/blob/master/contrib/completion/zsh/_docker
|
||||||
|
@ -32,6 +32,17 @@ PORT=3001
|
|||||||
```
|
```
|
||||||
You can even mix both formats, although it's probably a bad idea.
|
You can even mix both formats, although it's probably a bad idea.
|
||||||
|
|
||||||
|
### ZSH_DOTENV_FILE
|
||||||
|
|
||||||
|
You can also modify the name of the file to be loaded with the variable `ZSH_DOTENV_FILE`.
|
||||||
|
If the variable isn't set, the plugin will default to use `.env`.
|
||||||
|
For example, this will make the plugin look for files named `.dotenv` and load them:
|
||||||
|
|
||||||
|
```
|
||||||
|
# in ~/.zshrc, before Oh My Zsh is sourced:
|
||||||
|
ZSH_DOTENV_FILE=.dotenv
|
||||||
|
```
|
||||||
|
|
||||||
## Version Control
|
## Version Control
|
||||||
|
|
||||||
**It's strongly recommended to add `.env` file to `.gitignore`**, because usually it contains sensitive information such as your credentials, secret keys, passwords etc. You don't want to commit this file, it's supposed to be local only.
|
**It's strongly recommended to add `.env` file to `.gitignore`**, because usually it contains sensitive information such as your credentials, secret keys, passwords etc. You don't want to commit this file, it's supposed to be local only.
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
source_env() {
|
source_env() {
|
||||||
if [[ -f .env ]]; then
|
if [[ -f $ZSH_DOTENV_FILE ]]; then
|
||||||
# test .env syntax
|
# test .env syntax
|
||||||
zsh -fn .env || echo 'dotenv: error when sourcing `.env` file' >&2
|
zsh -fn $ZSH_DOTENV_FILE || echo "dotenv: error when sourcing '$ZSH_DOTENV_FILE' file" >&2
|
||||||
|
|
||||||
if [[ -o a ]]; then
|
if [[ -o a ]]; then
|
||||||
source .env
|
source $ZSH_DOTENV_FILE
|
||||||
else
|
else
|
||||||
set -a
|
set -a
|
||||||
source .env
|
source $ZSH_DOTENV_FILE
|
||||||
set +a
|
set +a
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -16,4 +16,8 @@ source_env() {
|
|||||||
autoload -U add-zsh-hook
|
autoload -U add-zsh-hook
|
||||||
add-zsh-hook chpwd source_env
|
add-zsh-hook chpwd source_env
|
||||||
|
|
||||||
|
if [[ -z $ZSH_DOTENV_FILE ]]; then
|
||||||
|
ZSH_DOTENV_FILE=.env
|
||||||
|
fi
|
||||||
|
|
||||||
source_env
|
source_env
|
||||||
|
@ -25,8 +25,14 @@ emotty_default_set=emoji
|
|||||||
function emotty() {
|
function emotty() {
|
||||||
# Use emotty set defined by user, fallback to default
|
# Use emotty set defined by user, fallback to default
|
||||||
local emotty=${_emotty_sets[${emotty_set:-$emotty_default_set}]}
|
local emotty=${_emotty_sets[${emotty_set:-$emotty_default_set}]}
|
||||||
# Parse $TTY number, normalizing it to an emotty set index
|
|
||||||
(( tty = (${TTY##/dev/tty} % ${#${=emotty}}) + 1 ))
|
# Parse tty number via prompt expansion. %l equals:
|
||||||
|
# - N if tty = /dev/ttyN
|
||||||
|
# - pts/N if tty = /dev/pts/N
|
||||||
|
local tty = ${${(%):-%l}##pts/}
|
||||||
|
# Normalize it to an emotty set index
|
||||||
|
(( tty = (tty % ${#${=emotty}}) + 1 ))
|
||||||
|
|
||||||
local character_name=${${=emotty}[tty]}
|
local character_name=${${=emotty}[tty]}
|
||||||
echo "${emoji[${character_name}]}${emoji2[emoji_style]}"
|
echo "${emoji[${character_name}]}${emoji2[emoji_style]}"
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ plugins=(... extract)
|
|||||||
| `7z` | 7zip file |
|
| `7z` | 7zip file |
|
||||||
| `Z` | Z archive (LZW) |
|
| `Z` | Z archive (LZW) |
|
||||||
| `apk` | Android app file |
|
| `apk` | Android app file |
|
||||||
|
| `aar` | Android library file |
|
||||||
| `bz2` | Bzip2 file |
|
| `bz2` | Bzip2 file |
|
||||||
| `deb` | Debian package |
|
| `deb` | Debian package |
|
||||||
| `gz` | Gzip file |
|
| `gz` | Gzip file |
|
||||||
|
@ -3,5 +3,5 @@
|
|||||||
|
|
||||||
_arguments \
|
_arguments \
|
||||||
'(-r --remove)'{-r,--remove}'[Remove archive.]' \
|
'(-r --remove)'{-r,--remove}'[Remove archive.]' \
|
||||||
"*::archive file:_files -g '(#i)*.(7z|Z|apk|bz2|deb|gz|ipsw|jar|lzma|rar|sublime-package|tar|tar.bz2|tar.gz|tar.xz|tar.zma|tbz|tbz2|tgz|tlz|txz|war|whl|xpi|xz|zip)(-.)'" \
|
"*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|deb|gz|ipsw|jar|lzma|rar|sublime-package|tar|tar.bz2|tar.gz|tar.xz|tar.zma|tbz|tbz2|tgz|tlz|txz|war|whl|xpi|xz|zip)(-.)'" \
|
||||||
&& return 0
|
&& return 0
|
||||||
|
@ -46,7 +46,7 @@ extract() {
|
|||||||
(*.xz) unxz "$1" ;;
|
(*.xz) unxz "$1" ;;
|
||||||
(*.lzma) unlzma "$1" ;;
|
(*.lzma) unlzma "$1" ;;
|
||||||
(*.z) uncompress "$1" ;;
|
(*.z) uncompress "$1" ;;
|
||||||
(*.zip|*.war|*.jar|*.sublime-package|*.ipsw|*.xpi|*.apk|*.whl) unzip "$1" -d $extract_dir ;;
|
(*.zip|*.war|*.jar|*.sublime-package|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$1" -d $extract_dir ;;
|
||||||
(*.rar) unrar x -ad "$1" ;;
|
(*.rar) unrar x -ad "$1" ;;
|
||||||
(*.7z) 7za x "$1" ;;
|
(*.7z) 7za x "$1" ;;
|
||||||
(*.deb)
|
(*.deb)
|
||||||
|
@ -4,10 +4,19 @@
|
|||||||
local curcontext=$curcontext state line
|
local curcontext=$curcontext state line
|
||||||
declare -A opt_args
|
declare -A opt_args
|
||||||
|
|
||||||
declare target_list
|
declare -a target_list
|
||||||
target_list=(`fab --shortlist 2>/dev/null`)
|
target_list=("${(@f)$(fab -l 2>/dev/null | awk '{
|
||||||
|
if (NF == 0 || NR == 1) return
|
||||||
|
if (NF < 2) print $1
|
||||||
|
else {
|
||||||
|
docstring=substr($0, index($0,$2))
|
||||||
|
gsub(":", "\\:", docstring)
|
||||||
|
print $1":"docstring
|
||||||
|
}
|
||||||
|
}')}")
|
||||||
|
|
||||||
_targets() {
|
_fab_targets() {
|
||||||
|
[[ -n "$target_list" ]] || return
|
||||||
_describe -t commands "fabric targets" target_list
|
_describe -t commands "fabric targets" target_list
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,7 +37,7 @@ _arguments -w -S -C \
|
|||||||
'(-)--shortlist[print non-verbose list of possible commands and exit]: :->noargs' \
|
'(-)--shortlist[print non-verbose list of possible commands and exit]: :->noargs' \
|
||||||
'(--reject-unknown-hosts)--reject-unknown-hosts[reject unknown hosts]' \
|
'(--reject-unknown-hosts)--reject-unknown-hosts[reject unknown hosts]' \
|
||||||
'(--no-pty)--no-pty[do not use pseudo-terminal in run/sudo]' \
|
'(--no-pty)--no-pty[do not use pseudo-terminal in run/sudo]' \
|
||||||
"(-d+ --display=-)"{-d+,--display=-}"[print detailed info about a given command]: :_targets" \
|
"(-d+ --display=-)"{-d+,--display=-}"[print detailed info about a given command]: :_fab_targets" \
|
||||||
'(-D --disable-known-hosts)'{-D,--disable-known-hosts}'[do not load user known_hosts file]' \
|
'(-D --disable-known-hosts)'{-D,--disable-known-hosts}'[do not load user known_hosts file]' \
|
||||||
'(-r --reject-unknown-hosts)'{-r,--reject-unknown-hosts}'[reject unknown hosts]' \
|
'(-r --reject-unknown-hosts)'{-r,--reject-unknown-hosts}'[reject unknown hosts]' \
|
||||||
'(-u+ --user=-)'{-u+,--user=-}'[username to use when connecting to remote hosts]: :' \
|
'(-u+ --user=-)'{-u+,--user=-}'[username to use when connecting to remote hosts]: :' \
|
||||||
@ -53,7 +62,7 @@ if [[ CURRENT -ge 1 ]]; then
|
|||||||
levels)
|
levels)
|
||||||
_describe -t commands "output levels" output_levels;;
|
_describe -t commands "output levels" output_levels;;
|
||||||
*)
|
*)
|
||||||
_targets;;
|
_fab_targets;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
# Use Ctrl-Z to switch back to Vim
|
# Use Ctrl-Z to switch back to Vim
|
||||||
|
|
||||||
I frequently need to execute random command in my shell. To achieve it I pause
|
I frequently need to execute random commands in my shell. To achieve it I pause
|
||||||
Vim by pressing Ctrl-z, type command and press fg<Enter> to switch back to Vim.
|
Vim by pressing Ctrl-z, type command and press fg<Enter> to switch back to Vim.
|
||||||
The fg part really hurt sme. I just wanted to hit Ctrl-z once again to get back
|
The fg part really hurts me. I just wanted to hit Ctrl-z once again to get back
|
||||||
to Vim. I could not find a solution, so I developed one on my own that
|
to Vim. I could not find a solution, so I developed one on my own that
|
||||||
works wonderfully with ZSH
|
works wonderfully with ZSH.
|
||||||
|
|
||||||
Source: http://sheerun.net/2014/03/21/how-to-boost-your-vim-productivity/
|
Source: http://sheerun.net/2014/03/21/how-to-boost-your-vim-productivity/
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ if [ $commands[fasd] ]; then # check if fasd is installed
|
|||||||
source "$fasd_cache"
|
source "$fasd_cache"
|
||||||
unset fasd_cache
|
unset fasd_cache
|
||||||
|
|
||||||
alias v="f -e \"$EDITOR\""
|
alias v='f -e "$EDITOR"'
|
||||||
alias o='a -e xdg-open'
|
alias o='a -e xdg-open'
|
||||||
alias j='zz'
|
alias j='zz'
|
||||||
fi
|
fi
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
## Introduction ##
|
## Introduction
|
||||||
|
|
||||||
> Searches for your frontend web development made easier
|
> Searches for your frontend web development made easier
|
||||||
|
|
||||||
|
## Installation
|
||||||
## Installation ##
|
|
||||||
|
|
||||||
Open your `~/.zshrc` file and enable the `frontend-search` plugin:
|
Open your `~/.zshrc` file and enable the `frontend-search` plugin:
|
||||||
|
|
||||||
@ -13,53 +12,63 @@ plugins=( ... frontend-search)
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
## Usage ##
|
|
||||||
|
|
||||||
You can use the frontend-search plugin in these two forms:
|
You can use the frontend-search plugin in these two forms:
|
||||||
|
|
||||||
* `frontend <context> <term> [more terms if you want]`
|
- `frontend <context> <term> [more terms if you want]`
|
||||||
* `<context> <term> [more terms if you want]`
|
- `<context> <term> [more terms if you want]`
|
||||||
|
|
||||||
For example, these two are equivalent:
|
For example, these two are equivalent:
|
||||||
|
|
||||||
```zsh
|
```zsh
|
||||||
$ frontend angularjs dependency injection
|
$ angular dependency injection
|
||||||
$ angularjs dependency injection
|
# Will turn into ...
|
||||||
|
$ frontend angular dependency injection
|
||||||
```
|
```
|
||||||
|
|
||||||
Available search contexts are:
|
Available search contexts are:
|
||||||
|
|
||||||
| context | URL |
|
| context | URL |
|
||||||
|---------------|--------------------------------------------------------------------------|
|
| ------------- | --------------------------------------------------------------------------- |
|
||||||
| angularjs | `https://google.com/search?as_sitesearch=angularjs.org&as_q=` |
|
| angular | `https://angular.io/?search=` |
|
||||||
| aurajs | `http://aurajs.com/api/#stq=` |
|
| angularjs | `https://google.com/search?as_sitesearch=angularjs.org&as_q=` |
|
||||||
| bem | `https://google.com/search?as_sitesearch=bem.info&as_q=` |
|
| bem | `https://google.com/search?as_sitesearch=bem.info&as_q=` |
|
||||||
| bootsnipp | `https://bootsnipp.com/search?q=` |
|
| bootsnipp | `https://bootsnipp.com/search?q=` |
|
||||||
| caniuse | `https://caniuse.com/#search=` |
|
| bundlephobia | `https://bundlephobia.com/result?p=` |
|
||||||
| codepen | `https://codepen.io/search?q=` |
|
| caniuse | `https://caniuse.com/#search=` |
|
||||||
| compassdoc | `http://compass-style.org/search?q=` |
|
| codepen | `https://codepen.io/search?q=` |
|
||||||
| cssflow | `http://www.cssflow.com/search?q=` |
|
| compassdoc | `http://compass-style.org/search?q=` |
|
||||||
| dartlang | `https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:` |
|
| cssflow | `http://www.cssflow.com/search?q=` |
|
||||||
| emberjs | `https://emberjs.com/api/#stp=1&stq=` |
|
| dartlang | `https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:` |
|
||||||
| fontello | `http://fontello.com/#search=` |
|
| emberjs | `https://www.google.com/search?as_sitesearch=emberjs.com/&as_q=` |
|
||||||
| html5please | `http://html5please.com/#` |
|
| flowtype | `https://google.com/search?as_sitesearch=flow.org/en/docs/&as_q=` |
|
||||||
| jquery | `https://api.jquery.com/?s=` |
|
| fontello | `http://fontello.com/#search=` |
|
||||||
| lodash | `https://devdocs.io/lodash/index#` |
|
| github | `https://github.com/search?q=` |
|
||||||
| mdn | `https://developer.mozilla.org/search?q=` |
|
| html5please | `https://html5please.com/#` |
|
||||||
| npmjs | `https://www.npmjs.com/search?q=` |
|
| jestjs | `https://www.google.com/search?as_sitesearch=jestjs.io&as_q=` |
|
||||||
| qunit | `https://api.qunitjs.com/?s=` |
|
| jquery | `https://api.jquery.com/?s=` |
|
||||||
| reactjs | `https://google.com/search?as_sitesearch=facebook.github.io/react&as_q=` |
|
| lodash | `https://devdocs.io/lodash/index#` |
|
||||||
| smacss | `https://google.com/search?as_sitesearch=smacss.com&as_q=` |
|
| mdn | `https://developer.mozilla.org/search?q=` |
|
||||||
| stackoverflow | `https://stackoverflow.com/search?q=` |
|
| nodejs | `https://www.google.com/search?as_sitesearch=nodejs.org/en/docs/&as_q=` |
|
||||||
| unheap | `http://www.unheap.com/?s=` |
|
| npmjs | `https://www.npmjs.com/search?q=` |
|
||||||
|
| qunit | `https://api.qunitjs.com/?s=` |
|
||||||
|
| reactjs | `https://google.com/search?as_sitesearch=facebook.github.io/react&as_q=` |
|
||||||
|
| smacss | `https://google.com/search?as_sitesearch=smacss.com&as_q=` |
|
||||||
|
| stackoverflow | `https://stackoverflow.com/search?q=` |
|
||||||
|
| typescript | `https://google.com/search?as_sitesearch=www.typescriptlang.org/docs&as_q=` |
|
||||||
|
| unheap | `http://www.unheap.com/?s=` |
|
||||||
|
| vuejs | `https://www.google.com/search?as_sitesearch=vuejs.org&as_q=` |
|
||||||
|
|
||||||
If you want to have another context, open an Issue and tell us!
|
If you want to have another context, open an Issue and tell us!
|
||||||
|
|
||||||
|
## Fallback search behaviour
|
||||||
|
|
||||||
|
The plugin will use Google as a fallback if the docs site for a search context does not have a search function. You can set the fallback search engine to DuckDuckGo by setting `FRONTEND_SEARCH_FALLBACK='duckduckgo'` in your `~/.zshrc` file before Oh My Zsh is sourced.
|
||||||
|
|
||||||
## Author
|
## Author
|
||||||
|
|
||||||
**Wilson Mendes (willmendesneto)**
|
**Wilson Mendes (willmendesneto)**
|
||||||
+ <https://plus.google.com/+WilsonMendes>
|
|
||||||
+ <https://twitter.com/willmendesneto>
|
- <https://twitter.com/willmendesneto>
|
||||||
+ <https://github.com/willmendesneto>
|
- <https://github.com/willmendesneto>
|
||||||
|
@ -17,27 +17,34 @@ function _frontend() {
|
|||||||
frontend_points=( "${(f)mapfile[$CONFIG]//$HOME/~}" )
|
frontend_points=( "${(f)mapfile[$CONFIG]//$HOME/~}" )
|
||||||
|
|
||||||
commands=(
|
commands=(
|
||||||
'jquery: Search in jQuery website'
|
'angular: Search in Angular.io website'
|
||||||
'mdn: Search in MDN website'
|
'angularjs: Search in docs.angularjs.org website'
|
||||||
'compassdoc: Search in COMPASS website'
|
|
||||||
'html5please: Search in HTML5 Please website'
|
|
||||||
'caniuse: Search in Can I Use website'
|
|
||||||
'aurajs: Search in AuraJs website'
|
|
||||||
'dartlang: Search in Dart website'
|
|
||||||
'lodash: Search in Lo-Dash website'
|
|
||||||
'qunit: Search in Qunit website'
|
|
||||||
'fontello: Search in fontello website'
|
|
||||||
'bootsnipp: Search in bootsnipp website'
|
|
||||||
'cssflow: Search in cssflow website'
|
|
||||||
'codepen: Search in codepen website'
|
|
||||||
'unheap: Search in unheap website'
|
|
||||||
'bem: Search in BEM website'
|
'bem: Search in BEM website'
|
||||||
'smacss: Search in SMACSS website'
|
'bootsnipp: Search in bootsnipp website'
|
||||||
'angularjs: Search in Angular website'
|
'bundlephobia: Search in Bundlephobia website'
|
||||||
'reactjs: Search in React website'
|
'caniuse: Search in Can I Use website'
|
||||||
|
'codepen: Search in codepen website'
|
||||||
|
'compassdoc: Search in COMPASS website'
|
||||||
|
'cssflow: Search in cssflow website'
|
||||||
|
'dartlang: Search in Dart website'
|
||||||
'emberjs: Search in Ember website'
|
'emberjs: Search in Ember website'
|
||||||
'stackoverflow: Search in StackOverflow website'
|
'flowtype: Search in Flowtype website'
|
||||||
|
'fontello: Search in fontello website'
|
||||||
|
'github: Search in GitHub website'
|
||||||
|
'html5please: Search in HTML5 Please website'
|
||||||
|
'jestjs: Search in Jest website'
|
||||||
|
'jquery: Search in jQuery website'
|
||||||
|
'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'
|
||||||
|
'qunit: Search in Qunit website'
|
||||||
|
'reactjs: Search in React website'
|
||||||
|
'smacss: Search in SMACSS website'
|
||||||
|
'stackoverflow: Search in StackOverflow website'
|
||||||
|
'typescript: Search in TypeScript website'
|
||||||
|
'unheap: Search in unheap website'
|
||||||
|
'vuejs: Search in VueJS website'
|
||||||
)
|
)
|
||||||
|
|
||||||
_arguments -C \
|
_arguments -C \
|
||||||
@ -66,9 +73,6 @@ function _frontend() {
|
|||||||
caniuse)
|
caniuse)
|
||||||
_describe -t points "Warp points" frontend_points && ret=0
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
;;
|
;;
|
||||||
aurajs)
|
|
||||||
_describe -t points "Warp points" frontend_points && ret=0
|
|
||||||
;;
|
|
||||||
dartlang)
|
dartlang)
|
||||||
_describe -t points "Warp points" frontend_points && ret=0
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
;;
|
;;
|
||||||
@ -81,6 +85,9 @@ function _frontend() {
|
|||||||
fontello)
|
fontello)
|
||||||
_describe -t points "Warp points" frontend_points && ret=0
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
;;
|
;;
|
||||||
|
github)
|
||||||
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
|
;;
|
||||||
bootsnipp)
|
bootsnipp)
|
||||||
_describe -t points "Warp points" frontend_points && ret=0
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
;;
|
;;
|
||||||
@ -114,6 +121,24 @@ function _frontend() {
|
|||||||
npmjs)
|
npmjs)
|
||||||
_describe -t points "Warp points" frontend_points && ret=0
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
;;
|
;;
|
||||||
|
bundlephobia)
|
||||||
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
|
;;
|
||||||
|
flowtype)
|
||||||
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
|
;;
|
||||||
|
typescript)
|
||||||
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
|
;;
|
||||||
|
vuejs)
|
||||||
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
|
;;
|
||||||
|
nodejs)
|
||||||
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
|
;;
|
||||||
|
jestjs)
|
||||||
|
_describe -t points "Warp points" frontend_points && ret=0
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -1,24 +1,42 @@
|
|||||||
|
alias angular='frontend angular'
|
||||||
alias angularjs='frontend angularjs'
|
alias angularjs='frontend angularjs'
|
||||||
alias aurajs='frontend aurajs'
|
|
||||||
alias bem='frontend bem'
|
alias bem='frontend bem'
|
||||||
alias bootsnipp='frontend bootsnipp'
|
alias bootsnipp='frontend bootsnipp'
|
||||||
|
alias bundlephobia='frontend bundlephobia'
|
||||||
alias caniuse='frontend caniuse'
|
alias caniuse='frontend caniuse'
|
||||||
alias codepen='frontend codepen'
|
alias codepen='frontend codepen'
|
||||||
alias compassdoc='frontend compassdoc'
|
alias compassdoc='frontend compassdoc'
|
||||||
alias cssflow='frontend cssflow'
|
alias cssflow='frontend cssflow'
|
||||||
alias dartlang='frontend dartlang'
|
alias dartlang='frontend dartlang'
|
||||||
alias emberjs='frontend emberjs'
|
alias emberjs='frontend emberjs'
|
||||||
|
alias flowtype='frontend flowtype'
|
||||||
alias fontello='frontend fontello'
|
alias fontello='frontend fontello'
|
||||||
|
alias github='frontend github'
|
||||||
alias html5please='frontend html5please'
|
alias html5please='frontend html5please'
|
||||||
|
alias jestjs='frontend jestjs'
|
||||||
alias jquery='frontend jquery'
|
alias jquery='frontend jquery'
|
||||||
alias lodash='frontend lodash'
|
alias lodash='frontend lodash'
|
||||||
alias mdn='frontend mdn'
|
alias mdn='frontend mdn'
|
||||||
|
alias nodejs='frontend nodejs'
|
||||||
alias npmjs='frontend npmjs'
|
alias npmjs='frontend npmjs'
|
||||||
alias qunit='frontend qunit'
|
alias qunit='frontend qunit'
|
||||||
alias reactjs='frontend reactjs'
|
alias reactjs='frontend reactjs'
|
||||||
alias smacss='frontend smacss'
|
alias smacss='frontend smacss'
|
||||||
alias stackoverflow='frontend stackoverflow'
|
alias stackoverflow='frontend stackoverflow'
|
||||||
|
alias typescript='frontend typescript'
|
||||||
alias unheap='frontend unheap'
|
alias unheap='frontend unheap'
|
||||||
|
alias vuejs='frontend vuejs'
|
||||||
|
|
||||||
|
function _frontend_fallback() {
|
||||||
|
local url
|
||||||
|
if [[ "$FRONTEND_SEARCH_FALLBACK" == duckduckgo ]]; then
|
||||||
|
url="https://duckduckgo.com/?sites=$1&q="
|
||||||
|
else
|
||||||
|
url="https://google.com/search?as_sitesearch=$1&as_q="
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$url"
|
||||||
|
}
|
||||||
|
|
||||||
function frontend() {
|
function frontend() {
|
||||||
emulate -L zsh
|
emulate -L zsh
|
||||||
@ -26,27 +44,34 @@ function frontend() {
|
|||||||
# define search context URLS
|
# define search context URLS
|
||||||
typeset -A urls
|
typeset -A urls
|
||||||
urls=(
|
urls=(
|
||||||
angularjs 'https://google.com/search?as_sitesearch=angularjs.org&as_q='
|
angular 'https://angular.io/?search='
|
||||||
aurajs 'http://aurajs.com/api/#stq='
|
angularjs $(_frontend_fallback 'angularjs.org')
|
||||||
bem 'https://google.com/search?as_sitesearch=bem.info&as_q='
|
bem $(_frontend_fallback 'bem.info')
|
||||||
bootsnipp 'https://bootsnipp.com/search?q='
|
bootsnipp 'https://bootsnipp.com/search?q='
|
||||||
|
bundlephobia 'https://bundlephobia.com/result?p='
|
||||||
caniuse 'https://caniuse.com/#search='
|
caniuse 'https://caniuse.com/#search='
|
||||||
codepen 'https://codepen.io/search?q='
|
codepen 'https://codepen.io/search?q='
|
||||||
compassdoc 'http://compass-style.org/search?q='
|
compassdoc 'http://compass-style.org/search?q='
|
||||||
cssflow 'http://www.cssflow.com/search?q='
|
cssflow 'http://www.cssflow.com/search?q='
|
||||||
dartlang 'https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:'
|
dartlang 'https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:'
|
||||||
emberjs 'https://emberjs.com/api/#stp=1&stq='
|
emberjs $(_frontend_fallback 'emberjs.com/')
|
||||||
|
flowtype $(_frontend_fallback 'flow.org/en/docs/')
|
||||||
fontello 'http://fontello.com/#search='
|
fontello 'http://fontello.com/#search='
|
||||||
html5please 'http://html5please.com/#'
|
github 'https://github.com/search?q='
|
||||||
|
html5please 'https://html5please.com/#'
|
||||||
|
jestjs $(_frontend_fallback 'jestjs.io')
|
||||||
jquery 'https://api.jquery.com/?s='
|
jquery 'https://api.jquery.com/?s='
|
||||||
lodash 'https://devdocs.io/lodash/index#'
|
lodash 'https://devdocs.io/lodash/index#'
|
||||||
mdn 'https://developer.mozilla.org/search?q='
|
mdn 'https://developer.mozilla.org/search?q='
|
||||||
|
nodejs $(_frontend_fallback 'nodejs.org/en/docs/')
|
||||||
npmjs 'https://www.npmjs.com/search?q='
|
npmjs 'https://www.npmjs.com/search?q='
|
||||||
qunit 'https://api.qunitjs.com/?s='
|
qunit 'https://api.qunitjs.com/?s='
|
||||||
reactjs 'https://google.com/search?as_sitesearch=facebook.github.io/react&as_q='
|
reactjs $(_frontend_fallback 'reactjs.org/')
|
||||||
smacss 'https://google.com/search?as_sitesearch=smacss.com&as_q='
|
smacss $(_frontend_fallback 'smacss.com')
|
||||||
stackoverflow 'https://stackoverflow.com/search?q='
|
stackoverflow 'https://stackoverflow.com/search?q='
|
||||||
|
typescript $(_frontend_fallback 'www.typescriptlang.org/docs')
|
||||||
unheap 'http://www.unheap.com/?s='
|
unheap 'http://www.unheap.com/?s='
|
||||||
|
vuejs $(_frontend_fallback 'vuejs.org')
|
||||||
)
|
)
|
||||||
|
|
||||||
# show help for command list
|
# show help for command list
|
||||||
@ -57,9 +82,9 @@ function frontend() {
|
|||||||
print -P "%Uterm%u and what follows is what will be searched for in the %Ucontext%u website,"
|
print -P "%Uterm%u and what follows is what will be searched for in the %Ucontext%u website,"
|
||||||
print -P "and %Ucontext%u is one of the following:"
|
print -P "and %Ucontext%u is one of the following:"
|
||||||
print -P ""
|
print -P ""
|
||||||
print -P " angularjs, aurajs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow,"
|
print -P " angular, angularjs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow,"
|
||||||
print -P " dartlang, emberjs, fontello, html5please, jquery, lodash, mdn, npmjs,"
|
print -P " dartlang, emberjs, fontello, flowtype, github, html5please, jestjs, jquery, lodash,"
|
||||||
print -P " qunit, reactjs, smacss, stackoverflow, unheap"
|
print -P " mdn, npmjs, nodejs, qunit, reactjs, smacss, stackoverflow, unheap, vuejs, bundlephobia"
|
||||||
print -P ""
|
print -P ""
|
||||||
print -P "For example: frontend npmjs mocha (or just: npmjs mocha)."
|
print -P "For example: frontend npmjs mocha (or just: npmjs mocha)."
|
||||||
print -P ""
|
print -P ""
|
||||||
@ -73,17 +98,17 @@ function frontend() {
|
|||||||
echo ""
|
echo ""
|
||||||
echo "Valid contexts are:"
|
echo "Valid contexts are:"
|
||||||
echo ""
|
echo ""
|
||||||
echo " angularjs, aurajs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow, "
|
echo " angular, angularjs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow,"
|
||||||
echo " dartlang, emberjs, fontello, html5please, jquery, lodash, mdn, npmjs, "
|
echo " dartlang, emberjs, fontello, github, html5please, jest, jquery, lodash,"
|
||||||
echo " qunit, reactjs, smacss, stackoverflow, unheap"
|
echo " mdn, npmjs, nodejs, qunit, reactjs, smacss, stackoverflow, unheap, vuejs, bundlephobia"
|
||||||
echo ""
|
echo ""
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# build search url:
|
# build search url:
|
||||||
# join arguments passed with '+', then append to search context URL
|
# join arguments passed with '%20', then append to search context URL
|
||||||
# TODO substitute for proper urlencode method
|
# TODO substitute for proper urlencode method
|
||||||
url="${urls[$1]}${(j:+:)@[2,-1]}"
|
url="${urls[$1]}${(j:%20:)@[2,-1]}"
|
||||||
|
|
||||||
echo "Opening $url ..."
|
echo "Opening $url ..."
|
||||||
|
|
||||||
|
@ -1,57 +1,95 @@
|
|||||||
test -d "${FZF_BASE}" && fzf_base="${FZF_BASE}"
|
function setup_using_base_dir() {
|
||||||
|
# Declare all variables local not no mess with outside env in any way
|
||||||
|
local fzf_base
|
||||||
|
local fzf_shell
|
||||||
|
local fzfdirs
|
||||||
|
local dir
|
||||||
|
|
||||||
if [[ -z "${fzf_base}" ]]; then
|
test -d "${FZF_BASE}" && fzf_base="${FZF_BASE}"
|
||||||
fzfdirs=(
|
|
||||||
"${HOME}/.fzf"
|
|
||||||
"/usr/local/opt/fzf"
|
|
||||||
"/usr/share/fzf"
|
|
||||||
)
|
|
||||||
for dir in ${fzfdirs}; do
|
|
||||||
if [[ -d "${dir}" ]]; then
|
|
||||||
fzf_base="${dir}"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ -z "${fzf_base}" ]]; then
|
if [[ -z "${fzf_base}" ]]; then
|
||||||
if (( ${+commands[brew]} )) && dir="$(brew --prefix fzf 2>/dev/null)"; then
|
fzfdirs=(
|
||||||
if [[ -d "${dir}" ]]; then
|
"${HOME}/.fzf"
|
||||||
fzf_base="${dir}"
|
"/usr/local/opt/fzf"
|
||||||
fi
|
"/usr/share/fzf"
|
||||||
fi
|
)
|
||||||
fi
|
for dir in ${fzfdirs}; do
|
||||||
fi
|
if [[ -d "${dir}" ]]; then
|
||||||
|
fzf_base="${dir}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
if [[ -n "${fzf_base}" ]]; then
|
if [[ -z "${fzf_base}" ]]; then
|
||||||
|
if (( ${+commands[brew]} )) && dir="$(brew --prefix fzf 2>/dev/null)"; then
|
||||||
|
if [[ -d "${dir}" ]]; then
|
||||||
|
fzf_base="${dir}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Fix fzf shell directory for Archlinux package
|
if [[ -d "${fzf_base}" ]]; then
|
||||||
if [[ ! -d "${fzf_base}/shell" ]] && [[ -f /etc/arch-release ]]; then
|
# Fix fzf shell directory for Archlinux package
|
||||||
fzf_shell="${fzf_base}"
|
if [[ ! -d "${fzf_base}/shell" ]] && [[ -f /etc/arch-release ]]; then
|
||||||
else
|
fzf_shell="${fzf_base}"
|
||||||
fzf_shell="${fzf_base}/shell"
|
else
|
||||||
fi
|
fzf_shell="${fzf_base}/shell"
|
||||||
|
fi
|
||||||
|
|
||||||
# Setup fzf
|
# Setup fzf binary path
|
||||||
# ---------
|
if ! (( ${+commands[fzf]} )) && [[ ! "$PATH" == *$fzf_base/bin* ]]; then
|
||||||
if ! (( ${+commands[fzf]} )) && [[ ! "$PATH" == *$fzf_base/bin* ]]; then
|
export PATH="$PATH:$fzf_base/bin"
|
||||||
export PATH="$PATH:$fzf_base/bin"
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
# Auto-completion
|
|
||||||
# ---------------
|
|
||||||
if [[ ! "$DISABLE_FZF_AUTO_COMPLETION" == "true" ]]; then
|
|
||||||
[[ $- == *i* ]] && source "${fzf_shell}/completion.zsh" 2> /dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Key bindings
|
|
||||||
# ------------
|
|
||||||
if [[ ! "$DISABLE_FZF_KEY_BINDINGS" == "true" ]]; then
|
|
||||||
source "${fzf_shell}/key-bindings.zsh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
# Auto-completion
|
||||||
print "[oh-my-zsh] fzf plugin: Cannot find fzf installation directory.\n"\
|
if [[ ! "$DISABLE_FZF_AUTO_COMPLETION" == "true" ]]; then
|
||||||
"Please add \`export FZF_BASE=/path/to/fzf/install/dir\` to your .zshrc" >&2
|
[[ $- == *i* ]] && source "${fzf_shell}/completion.zsh" 2> /dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
unset fzf_base fzf_shell dir fzfdirs
|
# Key bindings
|
||||||
|
if [[ ! "$DISABLE_FZF_KEY_BINDINGS" == "true" ]]; then
|
||||||
|
source "${fzf_shell}/key-bindings.zsh"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function setup_using_debian_package() {
|
||||||
|
(( $+commands[dpkg] )) && dpkg -s fzf &> /dev/null
|
||||||
|
if (( $? )); then
|
||||||
|
# Either not a debian based distro, or no fzf installed. In any case skip ahead
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# NOTE: There is no need to configure PATH for debian package, all binaries
|
||||||
|
# are installed to /usr/bin by default
|
||||||
|
|
||||||
|
local completions="/usr/share/zsh/vendor-completions/_fzf"
|
||||||
|
local key_bindings="/usr/share/doc/fzf/examples/key-bindings.zsh"
|
||||||
|
|
||||||
|
# Auto-completion
|
||||||
|
if [[ $- == *i* ]] && [[ ! "$DISABLE_FZF_AUTO_COMPLETION" == "true" ]]; then
|
||||||
|
source $completions 2> /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Key bindings
|
||||||
|
if [[ ! "$DISABLE_FZF_KEY_BINDINGS" == "true" ]]; then
|
||||||
|
source $key_bindings
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function indicate_error() {
|
||||||
|
print "[oh-my-zsh] fzf plugin: Cannot find fzf installation directory.\n"\
|
||||||
|
"Please add \`export FZF_BASE=/path/to/fzf/install/dir\` to your .zshrc" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for debian package first, because it easy to short cut
|
||||||
|
# Indicate to user that fzf installation not found if nothing worked
|
||||||
|
setup_using_debian_package || setup_using_base_dir || indicate_error
|
||||||
|
|
||||||
|
unset -f setup_using_debian_package setup_using_base_dir indicate_error
|
||||||
|
@ -5,7 +5,7 @@ function git-fetch-all {
|
|||||||
dir=`git rev-parse --git-dir` &&
|
dir=`git rev-parse --git-dir` &&
|
||||||
[[ ! -f $dir/NO_AUTO_FETCH ]] &&
|
[[ ! -f $dir/NO_AUTO_FETCH ]] &&
|
||||||
(( `date +%s` - `date -r $dir/FETCH_LOG +%s 2>/dev/null || echo 0` > $GIT_AUTO_FETCH_INTERVAL )) &&
|
(( `date +%s` - `date -r $dir/FETCH_LOG +%s 2>/dev/null || echo 0` > $GIT_AUTO_FETCH_INTERVAL )) &&
|
||||||
git fetch --all &>! $dir/FETCH_LOG &)
|
git fetch --all 2>/dev/null &>! $dir/FETCH_LOG &)
|
||||||
}
|
}
|
||||||
|
|
||||||
function git-auto-fetch {
|
function git-auto-fetch {
|
||||||
@ -18,10 +18,18 @@ function git-auto-fetch {
|
|||||||
echo "${fg_bold[red]}disabled${reset_color}")
|
echo "${fg_bold[red]}disabled${reset_color}")
|
||||||
}
|
}
|
||||||
|
|
||||||
eval "override-git-auto-fetch-$(declare -f zle-line-init)"
|
# Override zle-line-init if it exists
|
||||||
|
if (( $+functions[zle-line-init] )); then
|
||||||
function zle-line-init () {
|
eval "override-git-auto-fetch-$(declare -f zle-line-init)"
|
||||||
git-fetch-all
|
|
||||||
override-git-auto-fetch-zle-line-init
|
function zle-line-init () {
|
||||||
}
|
git-fetch-all
|
||||||
|
override-git-auto-fetch-zle-line-init
|
||||||
|
}
|
||||||
|
else
|
||||||
|
function zle-line-init () {
|
||||||
|
git-fetch-all
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
zle -N zle-line-init
|
zle -N zle-line-init
|
||||||
|
@ -454,9 +454,9 @@ zstyle ':completion:*:*:git:*' user-commands $existing_user_commands \
|
|||||||
extras:'awesome git utilities' \
|
extras:'awesome git utilities' \
|
||||||
feature:'create/merge feature branch' \
|
feature:'create/merge feature branch' \
|
||||||
force-clone:'overwrite local repositories with clone' \
|
force-clone:'overwrite local repositories with clone' \
|
||||||
fork:'fork a repo on github' \
|
fork:'fork a repo on GitHub' \
|
||||||
fresh-branch:'create fresh branches' \
|
fresh-branch:'create fresh branches' \
|
||||||
gh-pages:'create the github pages branch' \
|
gh-pages:'create the GitHub pages branch' \
|
||||||
graft:'merge and destroy a given branch' \
|
graft:'merge and destroy a given branch' \
|
||||||
guilt:'calculate change between two revisions' \
|
guilt:'calculate change between two revisions' \
|
||||||
ignore-io:'get sample gitignore file' \
|
ignore-io:'get sample gitignore file' \
|
||||||
|
@ -75,8 +75,8 @@ __git-hf-release ()
|
|||||||
'finish:Finish a release branch.'
|
'finish:Finish a release branch.'
|
||||||
'list:List all your release branches. (Alias to `git hf release`)'
|
'list:List all your release branches. (Alias to `git hf release`)'
|
||||||
'cancel:Cancel release'
|
'cancel:Cancel release'
|
||||||
'push:Push release to github'
|
'push:Push release to GitHub'
|
||||||
'pull:Pull release from github'
|
'pull:Pull release from GitHub'
|
||||||
'track:Track release'
|
'track:Track release'
|
||||||
)
|
)
|
||||||
_describe -t commands 'git hf release' subcommands
|
_describe -t commands 'git hf release' subcommands
|
||||||
@ -133,8 +133,8 @@ __git-hf-hotfix ()
|
|||||||
'list:List all your hotfix branches. (Alias to `git hf hotfix`)'
|
'list:List all your hotfix branches. (Alias to `git hf hotfix`)'
|
||||||
'publish:Publish the hotfix branch.'
|
'publish:Publish the hotfix branch.'
|
||||||
'track:Track the hotfix branch.'
|
'track:Track the hotfix branch.'
|
||||||
'pull:Pull the hotfix from github.'
|
'pull:Pull the hotfix from GitHub.'
|
||||||
'push:Push the hotfix to github.'
|
'push:Push the hotfix to GitHub.'
|
||||||
'cancel:Cancel the hotfix.'
|
'cancel:Cancel the hotfix.'
|
||||||
)
|
)
|
||||||
_describe -t commands 'git hf hotfix' subcommands
|
_describe -t commands 'git hf hotfix' subcommands
|
||||||
@ -195,8 +195,8 @@ __git-hf-feature ()
|
|||||||
'diff:Diff'
|
'diff:Diff'
|
||||||
'rebase:Rebase feature branch against develop'
|
'rebase:Rebase feature branch against develop'
|
||||||
'checkout:Checkout feature'
|
'checkout:Checkout feature'
|
||||||
'pull:Pull feature branch from github'
|
'pull:Pull feature branch from GitHub'
|
||||||
'push:Push feature branch to github'
|
'push:Push feature branch to GitHub'
|
||||||
'cancel:Cancel feature'
|
'cancel:Cancel feature'
|
||||||
)
|
)
|
||||||
_describe -t commands 'git hf feature' subcommands
|
_describe -t commands 'git hf feature' subcommands
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
# ZSH Git Prompt Plugin from:
|
|
||||||
# https://github.com/olivierverdier/zsh-git-prompt
|
|
||||||
|
|
||||||
__GIT_PROMPT_DIR="${0:A:h}"
|
__GIT_PROMPT_DIR="${0:A:h}"
|
||||||
|
|
||||||
## Hook function definitions
|
## Hook function definitions
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
|
import os
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
import shlex
|
import shlex
|
||||||
@ -30,7 +31,7 @@ def get_tagname_or_hash():
|
|||||||
|
|
||||||
# `git status --porcelain --branch` can collect all information
|
# `git status --porcelain --branch` can collect all information
|
||||||
# branch, remote_branch, untracked, staged, changed, conflicts, ahead, behind
|
# branch, remote_branch, untracked, staged, changed, conflicts, ahead, behind
|
||||||
po = Popen(['git', 'status', '--porcelain', '--branch'], stdout=PIPE, stderr=PIPE)
|
po = Popen(['git', 'status', '--porcelain', '--branch'], env=dict(os.environ, LANG="C"), stdout=PIPE, stderr=PIPE)
|
||||||
stdout, sterr = po.communicate()
|
stdout, sterr = po.communicate()
|
||||||
if po.returncode != 0:
|
if po.returncode != 0:
|
||||||
sys.exit(0) # Not a git repository
|
sys.exit(0) # Not a git repository
|
||||||
|
@ -1,10 +1,216 @@
|
|||||||
## git
|
# git plugin
|
||||||
|
|
||||||
**Maintainer:** [@ncanceill](https://github.com/ncanceill)
|
The git plugin provides many [aliases](#aliases) and a few useful [functions](#functions).
|
||||||
|
|
||||||
This plugin adds many useful aliases and functions.
|
To use it, add `git` to the plugins array in your zshrc file:
|
||||||
|
|
||||||
### Usage
|
```zsh
|
||||||
|
plugins=(... git)
|
||||||
|
```
|
||||||
|
|
||||||
See the [wiki](https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git) for a list of aliases and functions provided by the plugin.
|
## 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 |
|
||||||
|
| gb | git branch |
|
||||||
|
| gba | git branch -a |
|
||||||
|
| gbd | git branch -d |
|
||||||
|
| gbda | git branch --no-color --merged \| command grep -vE "^(\+|\*\|\s*(master\|develop\|dev)\s*$)" \| command xargs -n 1 git branch -d |
|
||||||
|
| 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 --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 |
|
||||||
|
| gcsm | git commit -s -m |
|
||||||
|
| gcb | git checkout -b |
|
||||||
|
| gcf | git config --list |
|
||||||
|
| gcl | git clone --recurse-submodules |
|
||||||
|
| gclean | git clean -id |
|
||||||
|
| gpristine | git reset --hard && git clean -dfx |
|
||||||
|
| gcm | git checkout master |
|
||||||
|
| gcd | git checkout develop |
|
||||||
|
| gcmsg | git commit -m |
|
||||||
|
| gco | git checkout |
|
||||||
|
| 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 |
|
||||||
|
| 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 master: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(%cr) %C(bold blue)<%an>%Creset' |
|
||||||
|
| glols | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %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(%cr) %C(bold blue)<%an>%Creset' --all |
|
||||||
|
| glog | git log --oneline --decorate --graph |
|
||||||
|
| gloga | git log --oneline --decorate --graph --all |
|
||||||
|
| glp | `_git_log_prettily` |
|
||||||
|
| gm | git merge |
|
||||||
|
| gmom | git merge origin/master |
|
||||||
|
| gmt | git mergetool --no-prompt |
|
||||||
|
| gmtvim | git mergetool --no-prompt --tool=vimdiff |
|
||||||
|
| gmum | git merge upstream/master |
|
||||||
|
| 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 |
|
||||||
|
| 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 develop |
|
||||||
|
| grbi | git rebase -i |
|
||||||
|
| grbm | git rebase master |
|
||||||
|
| 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 |
|
||||||
|
| 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 |
|
||||||
|
| gstall | git stash --all |
|
||||||
|
| gsu | git submodule update |
|
||||||
|
| gsw | git switch |
|
||||||
|
| gswc | git switch -c |
|
||||||
|
| 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 |
|
||||||
|
| glum | git pull upstream master |
|
||||||
|
| 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]" |
|
||||||
|
|
||||||
|
### Deprecated
|
||||||
|
|
||||||
|
These are aliases that have been removed, renamed, or otherwise modified in a way that may, or may not, receive further support.
|
||||||
|
|
||||||
|
| Alias | Command | Modification |
|
||||||
|
| :----- | :----------------------------------------------------------------------------------| --------------------------------------------------------------------------------------------------- |
|
||||||
|
| gap | git add --patch | new alias `gapa` |
|
||||||
|
| gcl | git config --list | new alias `gcf` |
|
||||||
|
| gdc | git diff --cached | new alias `gdca` |
|
||||||
|
| gdt | git difftool | no replacement |
|
||||||
|
| 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) |
|
||||||
|
| 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` |
|
||||||
|
| 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` |
|
||||||
|
| gwc | git whatchanged -p --abbrev-commit --pretty = medium | new alias `gwch` |
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
### Current
|
||||||
|
|
||||||
|
| Command | Description |
|
||||||
|
|:-----------------------|:----------------------------------------|
|
||||||
|
| current_branch | Return the name of the current branch |
|
||||||
|
| git_current_user_name | Returns the `user.name` config value |
|
||||||
|
| git_current_user_email | Returns the `user.email` config value |
|
||||||
|
|
||||||
|
### Work in Progress (WIP)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
| Command | Description | Reason |
|
||||||
|
|:-----------------------|:----------------------------------------|:----------------------------------------------------------------|
|
||||||
|
| current_repository | Return the names of the current remotes | Didn't work properly. Use `git remote -v` instead (`grv` alias) |
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
# Query/use custom command for `git`.
|
|
||||||
zstyle -s ":vcs_info:git:*:-all-" "command" _omz_git_git_cmd
|
|
||||||
: ${_omz_git_git_cmd:=git}
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Functions
|
# Functions
|
||||||
#
|
#
|
||||||
@ -13,19 +9,15 @@ zstyle -s ":vcs_info:git:*:-all-" "command" _omz_git_git_cmd
|
|||||||
function current_branch() {
|
function current_branch() {
|
||||||
git_current_branch
|
git_current_branch
|
||||||
}
|
}
|
||||||
# The list of remotes
|
|
||||||
function current_repository() {
|
|
||||||
if ! $_omz_git_git_cmd rev-parse --is-inside-work-tree &> /dev/null; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
echo $($_omz_git_git_cmd remote -v | cut -d':' -f 2)
|
|
||||||
}
|
|
||||||
# Pretty log messages
|
# Pretty log messages
|
||||||
function _git_log_prettily(){
|
function _git_log_prettily(){
|
||||||
if ! [ -z $1 ]; then
|
if ! [ -z $1 ]; then
|
||||||
git log --pretty=$1
|
git log --pretty=$1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
compdef _git _git_log_prettily=git-log
|
||||||
|
|
||||||
# Warn if the current branch is a WIP
|
# Warn if the current branch is a WIP
|
||||||
function work_in_progress() {
|
function work_in_progress() {
|
||||||
if $(git log -n 1 2>/dev/null | grep -q -c "\-\-wip\-\-"); then
|
if $(git log -n 1 2>/dev/null | grep -q -c "\-\-wip\-\-"); then
|
||||||
@ -50,7 +42,7 @@ alias gap='git apply'
|
|||||||
alias gb='git branch'
|
alias gb='git branch'
|
||||||
alias gba='git branch -a'
|
alias gba='git branch -a'
|
||||||
alias gbd='git branch -d'
|
alias gbd='git branch -d'
|
||||||
alias gbda='git branch --no-color --merged | command grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d'
|
alias gbda='git branch --no-color --merged | command grep -vE "^(\+|\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d'
|
||||||
alias gbD='git branch -D'
|
alias gbD='git branch -D'
|
||||||
alias gbl='git blame -b -w'
|
alias gbl='git blame -b -w'
|
||||||
alias gbnm='git branch --no-merged'
|
alias gbnm='git branch --no-merged'
|
||||||
@ -73,14 +65,13 @@ alias gcsm='git commit -s -m'
|
|||||||
alias gcb='git checkout -b'
|
alias gcb='git checkout -b'
|
||||||
alias gcf='git config --list'
|
alias gcf='git config --list'
|
||||||
alias gcl='git clone --recurse-submodules'
|
alias gcl='git clone --recurse-submodules'
|
||||||
alias gclean='git clean -fd'
|
alias gclean='git clean -id'
|
||||||
alias gpristine='git reset --hard && git clean -dfx'
|
alias gpristine='git reset --hard && git clean -dfx'
|
||||||
alias gcm='git checkout master'
|
alias gcm='git checkout master'
|
||||||
alias gcd='git checkout develop'
|
alias gcd='git checkout develop'
|
||||||
alias gcmsg='git commit -m'
|
alias gcmsg='git commit -m'
|
||||||
alias gco='git checkout'
|
alias gco='git checkout'
|
||||||
alias gcount='git shortlog -sn'
|
alias gcount='git shortlog -sn'
|
||||||
compdef _git gcount
|
|
||||||
alias gcp='git cherry-pick'
|
alias gcp='git cherry-pick'
|
||||||
alias gcpa='git cherry-pick --abort'
|
alias gcpa='git cherry-pick --abort'
|
||||||
alias gcpc='git cherry-pick --continue'
|
alias gcpc='git cherry-pick --continue'
|
||||||
@ -89,35 +80,35 @@ alias gcs='git commit -S'
|
|||||||
alias gd='git diff'
|
alias gd='git diff'
|
||||||
alias gdca='git diff --cached'
|
alias gdca='git diff --cached'
|
||||||
alias gdcw='git diff --cached --word-diff'
|
alias gdcw='git diff --cached --word-diff'
|
||||||
alias gdct='git describe --tags `git rev-list --tags --max-count=1`'
|
alias gdct='git describe --tags $(git rev-list --tags --max-count=1)'
|
||||||
alias gds='git diff --staged'
|
alias gds='git diff --staged'
|
||||||
alias gdt='git diff-tree --no-commit-id --name-only -r'
|
alias gdt='git diff-tree --no-commit-id --name-only -r'
|
||||||
alias gdw='git diff --word-diff'
|
alias gdw='git diff --word-diff'
|
||||||
|
|
||||||
gdv() { git diff -w "$@" | view - }
|
function gdv() { git diff -w "$@" | view - }
|
||||||
compdef _git gdv=git-diff
|
compdef _git gdv=git-diff
|
||||||
|
|
||||||
alias gf='git fetch'
|
alias gf='git fetch'
|
||||||
alias gfa='git fetch --all --prune'
|
alias gfa='git fetch --all --prune'
|
||||||
alias gfo='git fetch origin'
|
alias gfo='git fetch origin'
|
||||||
|
|
||||||
function gfg() { git ls-files | grep $@ }
|
alias gfg='git ls-files | grep'
|
||||||
compdef _grep gfg
|
|
||||||
|
|
||||||
alias gg='git gui citool'
|
alias gg='git gui citool'
|
||||||
alias gga='git gui citool --amend'
|
alias gga='git gui citool --amend'
|
||||||
|
|
||||||
ggf() {
|
function ggf() {
|
||||||
[[ "$#" != 1 ]] && local b="$(git_current_branch)"
|
[[ "$#" != 1 ]] && local b="$(git_current_branch)"
|
||||||
git push --force origin "${b:=$1}"
|
git push --force origin "${b:=$1}"
|
||||||
}
|
}
|
||||||
ggfl() {
|
|
||||||
[[ "$#" != 1 ]] && local b="$(git_current_branch)"
|
|
||||||
git push --force-with-lease origin "${b:=$1}"
|
|
||||||
}
|
|
||||||
compdef _git ggf=git-checkout
|
compdef _git ggf=git-checkout
|
||||||
|
function ggfl() {
|
||||||
|
[[ "$#" != 1 ]] && local b="$(git_current_branch)"
|
||||||
|
git push --force-with-lease origin "${b:=$1}"
|
||||||
|
}
|
||||||
|
compdef _git ggfl=git-checkout
|
||||||
|
|
||||||
ggl() {
|
function ggl() {
|
||||||
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then
|
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then
|
||||||
git pull origin "${*}"
|
git pull origin "${*}"
|
||||||
else
|
else
|
||||||
@ -127,7 +118,7 @@ ggl() {
|
|||||||
}
|
}
|
||||||
compdef _git ggl=git-checkout
|
compdef _git ggl=git-checkout
|
||||||
|
|
||||||
ggp() {
|
function ggp() {
|
||||||
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then
|
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then
|
||||||
git push origin "${*}"
|
git push origin "${*}"
|
||||||
else
|
else
|
||||||
@ -137,7 +128,7 @@ ggp() {
|
|||||||
}
|
}
|
||||||
compdef _git ggp=git-checkout
|
compdef _git ggp=git-checkout
|
||||||
|
|
||||||
ggpnp() {
|
function ggpnp() {
|
||||||
if [[ "$#" == 0 ]]; then
|
if [[ "$#" == 0 ]]; then
|
||||||
ggl && ggp
|
ggl && ggp
|
||||||
else
|
else
|
||||||
@ -146,20 +137,15 @@ ggpnp() {
|
|||||||
}
|
}
|
||||||
compdef _git ggpnp=git-checkout
|
compdef _git ggpnp=git-checkout
|
||||||
|
|
||||||
ggu() {
|
function ggu() {
|
||||||
[[ "$#" != 1 ]] && local b="$(git_current_branch)"
|
[[ "$#" != 1 ]] && local b="$(git_current_branch)"
|
||||||
git pull --rebase origin "${b:=$1}"
|
git pull --rebase origin "${b:=$1}"
|
||||||
}
|
}
|
||||||
compdef _git ggu=git-checkout
|
compdef _git ggu=git-checkout
|
||||||
|
|
||||||
alias ggpur='ggu'
|
alias ggpur='ggu'
|
||||||
compdef _git ggpur=git-checkout
|
alias ggpull='git pull origin "$(git_current_branch)"'
|
||||||
|
alias ggpush='git push origin "$(git_current_branch)"'
|
||||||
alias ggpull='git pull origin $(git_current_branch)'
|
|
||||||
compdef _git ggpull=git-checkout
|
|
||||||
|
|
||||||
alias ggpush='git push origin $(git_current_branch)'
|
|
||||||
compdef _git ggpush=git-checkout
|
|
||||||
|
|
||||||
alias ggsup='git branch --set-upstream-to=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 gpsup='git push --set-upstream origin $(git_current_branch)'
|
||||||
@ -169,12 +155,9 @@ alias ghh='git help'
|
|||||||
alias gignore='git update-index --assume-unchanged'
|
alias gignore='git update-index --assume-unchanged'
|
||||||
alias gignored='git ls-files -v | grep "^[[:lower:]]"'
|
alias gignored='git ls-files -v | grep "^[[:lower:]]"'
|
||||||
alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
|
alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
|
||||||
compdef _git git-svn-dcommit-push=git
|
|
||||||
|
|
||||||
alias gk='\gitk --all --branches'
|
alias gk='\gitk --all --branches'
|
||||||
compdef _git gk='gitk'
|
|
||||||
alias gke='\gitk --all $(git log -g --pretty=%h)'
|
alias gke='\gitk --all $(git log -g --pretty=%h)'
|
||||||
compdef _git gke='gitk'
|
|
||||||
|
|
||||||
alias gl='git pull'
|
alias gl='git pull'
|
||||||
alias glg='git log --stat'
|
alias glg='git log --stat'
|
||||||
@ -191,7 +174,6 @@ alias glola="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgr
|
|||||||
alias glog='git log --oneline --decorate --graph'
|
alias glog='git log --oneline --decorate --graph'
|
||||||
alias gloga='git log --oneline --decorate --graph --all'
|
alias gloga='git log --oneline --decorate --graph --all'
|
||||||
alias glp="_git_log_prettily"
|
alias glp="_git_log_prettily"
|
||||||
compdef _git glp=git-log
|
|
||||||
|
|
||||||
alias gm='git merge'
|
alias gm='git merge'
|
||||||
alias gmom='git merge origin/master'
|
alias gmom='git merge origin/master'
|
||||||
@ -205,7 +187,6 @@ alias gpd='git push --dry-run'
|
|||||||
alias gpf='git push --force-with-lease'
|
alias gpf='git push --force-with-lease'
|
||||||
alias gpf!='git push --force'
|
alias gpf!='git push --force'
|
||||||
alias gpoat='git push origin --all && git push origin --tags'
|
alias gpoat='git push origin --all && git push origin --tags'
|
||||||
compdef _git gpoat=git-push
|
|
||||||
alias gpu='git push upstream'
|
alias gpu='git push upstream'
|
||||||
alias gpv='git push -v'
|
alias gpv='git push -v'
|
||||||
|
|
||||||
@ -218,14 +199,18 @@ alias grbd='git rebase develop'
|
|||||||
alias grbi='git rebase -i'
|
alias grbi='git rebase -i'
|
||||||
alias grbm='git rebase master'
|
alias grbm='git rebase master'
|
||||||
alias grbs='git rebase --skip'
|
alias grbs='git rebase --skip'
|
||||||
|
alias grev='git revert'
|
||||||
alias grh='git reset'
|
alias grh='git reset'
|
||||||
alias grhh='git reset --hard'
|
alias grhh='git reset --hard'
|
||||||
|
alias groh='git reset origin/$(git_current_branch) --hard'
|
||||||
alias grm='git rm'
|
alias grm='git rm'
|
||||||
alias grmc='git rm --cached'
|
alias grmc='git rm --cached'
|
||||||
alias grmv='git remote rename'
|
alias grmv='git remote rename'
|
||||||
alias grrm='git remote remove'
|
alias grrm='git remote remove'
|
||||||
|
alias grs='git restore'
|
||||||
alias grset='git remote set-url'
|
alias grset='git remote set-url'
|
||||||
alias grt='cd $(git rev-parse --show-toplevel || echo ".")'
|
alias grss='git restore --source'
|
||||||
|
alias grt='cd "$(git rev-parse --show-toplevel || echo .)"'
|
||||||
alias gru='git reset --'
|
alias gru='git reset --'
|
||||||
alias grup='git remote update'
|
alias grup='git remote update'
|
||||||
alias grv='git remote -v'
|
alias grv='git remote -v'
|
||||||
@ -238,7 +223,13 @@ alias gsps='git show --pretty=short --show-signature'
|
|||||||
alias gsr='git svn rebase'
|
alias gsr='git svn rebase'
|
||||||
alias gss='git status -s'
|
alias gss='git status -s'
|
||||||
alias gst='git status'
|
alias gst='git status'
|
||||||
alias gsta='git stash save'
|
|
||||||
|
# use the default stash push on git 2.13 and newer
|
||||||
|
autoload -Uz is-at-least
|
||||||
|
is-at-least 2.13 "$(git --version 2>/dev/null | awk '{print $3}')" \
|
||||||
|
&& alias gsta='git stash push' \
|
||||||
|
|| alias gsta='git stash save'
|
||||||
|
|
||||||
alias gstaa='git stash apply'
|
alias gstaa='git stash apply'
|
||||||
alias gstc='git stash clear'
|
alias gstc='git stash clear'
|
||||||
alias gstd='git stash drop'
|
alias gstd='git stash drop'
|
||||||
@ -247,9 +238,12 @@ alias gstp='git stash pop'
|
|||||||
alias gsts='git stash show --text'
|
alias gsts='git stash show --text'
|
||||||
alias gstall='git stash --all'
|
alias gstall='git stash --all'
|
||||||
alias gsu='git submodule update'
|
alias gsu='git submodule update'
|
||||||
|
alias gsw='git switch'
|
||||||
|
alias gswc='git switch -c'
|
||||||
|
|
||||||
alias gts='git tag -s'
|
alias gts='git tag -s'
|
||||||
alias gtv='git tag | sort -V'
|
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 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'
|
||||||
@ -260,4 +254,4 @@ alias gupav='git pull --rebase --autostash -v'
|
|||||||
alias glum='git pull upstream master'
|
alias glum='git pull upstream master'
|
||||||
|
|
||||||
alias gwch='git whatchanged -p --abbrev-commit --pretty=medium'
|
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 -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 -m "--wip-- [skip ci]"'
|
||||||
|
@ -10,129 +10,6 @@ plugins=(... gitfast)
|
|||||||
|
|
||||||
## Aliases
|
## Aliases
|
||||||
|
|
||||||
| Alias | Command |
|
An earlier version of the plugin also loaded the git plugin. If you want to keep those
|
||||||
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
aliases enable the [git plugin](https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/git)
|
||||||
| g | `git` |
|
as well.
|
||||||
| ga | `git add` |
|
|
||||||
| gaa | `git add --all` |
|
|
||||||
| gapa | `git add --patch` |
|
|
||||||
| gau | `git add --update` |
|
|
||||||
| gb | `git branch` |
|
|
||||||
| gba | `git branch -a` |
|
|
||||||
| gbd | `git branch -d` |
|
|
||||||
| gbda | `git branch --no-color --merged | command grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 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` |
|
|
||||||
| gca | `git commit -v -a` |
|
|
||||||
| gca! | `git commit -v -a --amend` |
|
|
||||||
| gcam | `git commit -a -m` |
|
|
||||||
| gcan! | `git commit -v -a --no-edit --amend` |
|
|
||||||
| gcans! | `git commit -v -a -s --no-edit --amend` |
|
|
||||||
| gcb | `git checkout -b` |
|
|
||||||
| gcd | `git checkout develop` |
|
|
||||||
| gcf | `git config --list` |
|
|
||||||
| gcl | `git clone --recursive` |
|
|
||||||
| gclean | `git clean -fd` |
|
|
||||||
| gcm | `git checkout master` |
|
|
||||||
| gcmsg | `git commit -m` |
|
|
||||||
| gcn! | `git commit -v --no-edit --amend` |
|
|
||||||
| gco | `git checkout` |
|
|
||||||
| gcount | `git shortlog -sn` |
|
|
||||||
| gcp | `git cherry-pick` |
|
|
||||||
| gcpa | `git cherry-pick --abort` |
|
|
||||||
| gcpc | `git cherry-pick --continue` |
|
|
||||||
| gcs | `git commit -S` |
|
|
||||||
| gcsm | `git commit -s -m` |
|
|
||||||
| gd | `git diff` |
|
|
||||||
| gdca | `git diff --cached` |
|
|
||||||
| gdct | `` git describe --tags `git rev-list --tags --max-count=1` `` |
|
|
||||||
| gdt | `git diff-tree --no-commit-id --name-only -r` |
|
|
||||||
| gdw | `git diff --word-diff` |
|
|
||||||
| gf | `git fetch` |
|
|
||||||
| gfa | `git fetch --all --prune` |
|
|
||||||
| gfo | `git fetch origin` |
|
|
||||||
| gg | `git gui citool` |
|
|
||||||
| gga | `git gui citool --amend` |
|
|
||||||
| 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)` |
|
|
||||||
| 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 master:svntrunk` |
|
|
||||||
| gk | `\gitk --all --branches` |
|
|
||||||
| gke | `\gitk --all $(git log -g --pretty=%h)` |
|
|
||||||
| gl | `git pull` |
|
|
||||||
| glg | `git log --stat` |
|
|
||||||
| glgg | `git log --graph` |
|
|
||||||
| glgga | `git log --graph --decorate --all` |
|
|
||||||
| glgm | `git log --graph --max-count=10` |
|
|
||||||
| glgp | `git log --stat -p` |
|
|
||||||
| glo | `git log --oneline --decorate` |
|
|
||||||
| glog | `git log --oneline --decorate --graph` |
|
|
||||||
| gloga | `git log --oneline --decorate --graph --all` |
|
|
||||||
| glol | `git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit` |
|
|
||||||
| glola | `git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit --all` |
|
|
||||||
| glp | `_git_log_prettily` |
|
|
||||||
| glum | `git pull upstream master` |
|
|
||||||
| gm | `git merge` |
|
|
||||||
| gmom | `git merge origin/master` |
|
|
||||||
| gmt | `git mergetool --no-prompt` |
|
|
||||||
| gmtvim | `git mergetool --no-prompt --tool=vimdiff` |
|
|
||||||
| gmum | `git merge upstream/master` |
|
|
||||||
| gp | `git push` |
|
|
||||||
| gpd | `git push --dry-run` |
|
|
||||||
| gpoat | `git push origin --all && git push origin --tags` |
|
|
||||||
| gpristine | `git reset --hard && git clean -dfx` |
|
|
||||||
| gpsup | `git push --set-upstream origin $(git_current_branch)` |
|
|
||||||
| 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` |
|
|
||||||
| grbi | `git rebase -i` |
|
|
||||||
| grbm | `git rebase master` |
|
|
||||||
| grbs | `git rebase --skip` |
|
|
||||||
| grh | `git reset HEAD` |
|
|
||||||
| grhh | `git reset HEAD --hard` |
|
|
||||||
| grmv | `git remote rename` |
|
|
||||||
| grrm | `git remote remove` |
|
|
||||||
| grset | `git remote set-url` |
|
|
||||||
| 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` |
|
|
||||||
| 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 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` |
|
|
||||||
| gsu | `git submodule update` |
|
|
||||||
| gts | `git tag -s` |
|
|
||||||
| gtv | `git tag | sort -V` |
|
|
||||||
| 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` |
|
|
||||||
| 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 -m "--wip-- [skip ci]"` |
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user