749 changed files with 59406 additions and 7 deletions
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
FROM ubuntu:16.04 |
||||
LABEL maintainer="Alvis Zhao <alvisisme@163.com>" |
||||
RUN apt-get update && \ |
||||
apt-get install -y git vim zsh tmux |
@ -1,16 +1,33 @@
@@ -1,16 +1,33 @@
|
||||
# oh-my-terminal |
||||
终端配置工具集合 |
||||
|
||||
个人终端配置环境集合 |
||||
|
||||
## 工具集合 |
||||
|
||||
**zsh** |
||||
* zsh |
||||
* tmux |
||||
* vim |
||||
|
||||
* [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) |
||||
## 使用说明 |
||||
|
||||
**tmux** |
||||
1. 安装必要的软件 |
||||
|
||||
* [on-my-tmux](https://github.com/gpakosz/.tmux) |
||||
```bash |
||||
sudo apt-get install git zsh tmux vim |
||||
``` |
||||
|
||||
1. 备份必要的配置文件 |
||||
|
||||
**vim** |
||||
1. 安装使用 |
||||
|
||||
* [vimrc-cpp](https://github.com/alvisisme/vimrc-cpp) |
||||
```bash |
||||
git clone https://github.com/alvisisme/oh-my-terminal.git ~/.oh-my-terminal |
||||
sh ~/.oh-my-terminal/setup.sh |
||||
``` |
||||
|
||||
## 参考引用 |
||||
|
||||
* [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) |
||||
* [on-my-tmux](https://github.com/gpakosz/.tmux) |
||||
* [super-vimer](https://github.com/alvisisme/super-vimer) |
||||
* [Linux SSH终端terminal配色更改为256色](https://www.haiyun.me/archives/linux-terminal-xterm-256color.html) |
||||
|
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash |
||||
|
||||
# zsh |
||||
cp -r ~/.oh-my-terminal/zsh ~/.oh-my-zsh |
||||
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc |
||||
|
||||
# tmux |
||||
ln -s -f ~/.oh-my-terminal/tmux/.tmux.conf ~/.tmux.conf |
||||
ln -s -f ~/.oh-my-terminal/tmux/.tmux.conf.local ~/.tmux.conf.local |
||||
|
||||
# vim |
||||
cp -r ~/.oh-my-terminal/vim ~/.vim_runtime |
||||
sh ~/.vim_runtime/install_vimrc.sh |
||||
|
||||
# 切换当前用户默认shell,重新进入终端后生效 |
||||
chsh -s $(which zsh) |
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
Copyright 2012— Gregory Pakosz |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of |
||||
this software and associated documentation files (the "Software"), to deal in |
||||
the Software without restriction, including without limitation the rights to |
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of |
||||
the Software, and to permit persons to whom the Software is furnished to do so, |
||||
subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included in all |
||||
copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS |
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE |
||||
Version 2, December 2004 |
||||
|
||||
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> |
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified |
||||
copies of this license document, and changing it is allowed as long |
||||
as the name is changed. |
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE |
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO. |
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
# docker build -t alvisisme/cpp-dev . |
||||
FROM alvisisme/docker-ubuntu-non-root-with-utils |
||||
|
||||
LABEL maintainer="Alvis<alvisisme@gmail.com>" |
||||
|
||||
ENV LANG C.UTF-8 |
||||
|
||||
RUN sudo apt-get update && \ |
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y cmake g++ |
||||
|
||||
# zsh and on-my-zsh |
||||
RUN sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh && \ |
||||
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh && \ |
||||
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc && \ |
||||
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc && \ |
||||
sudo chsh -s /bin/zsh |
||||
|
||||
# tmux |
||||
RUN sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tmux && \ |
||||
echo 'set-option -g default-shell /bin/zsh' > ~/.tmux.conf |
||||
|
||||
# vim C/C++ development environment |
||||
RUN git clone https://github.com/alvisisme/vimrc-cpp.git ~/.vim_runtime && \ |
||||
sh ~/.vim_runtime/install_vimrc.sh && \ |
||||
vim -N -u ~/.vimrc -c "PlugInstall" -c "qall" -U NONE -i NONE -e -s |
||||
|
||||
# python related |
||||
RUN sudo DEBIAN_FRONTEND=noninteractive apt-get install -y python python3 python-pip && \ |
||||
pip install --upgrade pip && \ |
||||
pip install cheat |
||||
|
||||
CMD [ "/usr/bin/tmux" ] |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
MIT License |
||||
|
||||
Copyright (c) 2018 Alvis |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
of this software and associated documentation files (the "Software"), to deal |
||||
in the Software without restriction, including without limitation the rights |
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
copies of the Software, and to permit persons to whom the Software is |
||||
furnished to do so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included in all |
||||
copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||
SOFTWARE. |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh |
||||
set -e |
||||
|
||||
cd ~/.vim_runtime |
||||
echo 'set runtimepath+=~/.vim_runtime |
||||
|
||||
source ~/.vim_runtime/vimrcs/basic.vim |
||||
source ~/.vim_runtime/vimrcs/plugins_config.vim |
||||
|
||||
try |
||||
source ~/.vim_runtime/my_configs.vim |
||||
catch |
||||
endtry' > ~/.vimrc |
||||
|
||||
echo "Installed the Vim configuration successfully! Enjoy :-)" |
@ -0,0 +1,405 @@
@@ -0,0 +1,405 @@
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" Maintainer: |
||||
" Amir Salihefendic |
||||
" http://amix.dk - amix@amix.dk |
||||
" |
||||
" Version: |
||||
" 6.0 - 01/04/17 14:24:34 |
||||
" |
||||
" Blog_post: |
||||
" http://amix.dk/blog/post/19691#The-ultimate-Vim-configuration-on-Github |
||||
" |
||||
" Awesome_version: |
||||
" Get this config, nice color schemes and lots of plugins! |
||||
" |
||||
" Install the awesome version from: |
||||
" |
||||
" https://github.com/amix/vimrc |
||||
" |
||||
" Syntax_highlighted: |
||||
" http://amix.dk/vim/vimrc.html |
||||
" |
||||
" Raw_version: |
||||
" http://amix.dk/vim/vimrc.txt |
||||
" |
||||
" Sections: |
||||
" -> General |
||||
" -> VIM user interface |
||||
" -> Colors and Fonts |
||||
" -> Files and backups |
||||
" -> Text, tab and indent related |
||||
" -> Visual mode related |
||||
" -> Moving around, tabs and buffers |
||||
" -> Status line |
||||
" -> Editing mappings |
||||
" -> vimgrep searching and cope displaying |
||||
" -> Spell checking |
||||
" -> Misc |
||||
" -> Helper functions |
||||
" |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" => General |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" Sets how many lines of history VIM has to remember |
||||
set history=500 |
||||
|
||||
" Enable filetype plugins |
||||
filetype plugin on |
||||
filetype indent on |
||||
|
||||
" Set to auto read when a file is changed from the outside |
||||
set autoread |
||||
|
||||
" With a map leader it's possible to do extra key combinations |
||||
" like <leader>w saves the current file |
||||
let mapleader = "," |
||||
let g:mapleader = "," |
||||
|
||||
" Fast saving |
||||
nmap <leader>w :w!<cr> |
||||
|
||||
" :W sudo saves the file |
||||
" (useful for handling the permission-denied error) |
||||
command W w !sudo tee % > /dev/null |
||||
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" => VIM user interface |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" Set 7 lines to the cursor - when moving vertically using j/k |
||||
set so=7 |
||||
|
||||
" Avoid garbled characters in Chinese language windows OS |
||||
let $LANG='en' |
||||
set langmenu=en |
||||
source $VIMRUNTIME/delmenu.vim |
||||
source $VIMRUNTIME/menu.vim |
||||
|
||||
" Turn on the WiLd menu |
||||
set wildmenu |
||||
|
||||
" Ignore compiled files |
||||
set wildignore=*.o,*~,*.pyc |
||||
if has("win16") || has("win32") |
||||
set wildignore+=.git\*,.hg\*,.svn\* |
||||
else |
||||
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store |
||||
endif |
||||
|
||||
"Always show current position |
||||
set ruler |
||||
|
||||
"Show line numbers" |
||||
set nu |
||||
|
||||
" Height of the command bar |
||||
set cmdheight=2 |
||||
|
||||
" A buffer becomes hidden when it is abandoned |
||||
set hid |
||||
|
||||
" Configure backspace so it acts as it should act |
||||
set backspace=eol,start,indent |
||||
set whichwrap+=<,>,h,l |
||||
|
||||
" Ignore case when searching |
||||
set ignorecase |
||||
|
||||
" When searching try to be smart about cases |
||||
set smartcase |
||||
|
||||
" Highlight search results |
||||
set hlsearch |
||||
|
||||
" Makes search act like search in modern browsers |
||||
set incsearch |
||||
|
||||
" Don't redraw while executing macros (good performance config) |
||||
set lazyredraw |
||||
|
||||
" For regular expressions turn magic on |
||||
set magic |
||||
|
||||
" 显示不可见字符 |
||||
set invlist |
||||
set listchars=tab:>-,trail:- |
||||
|
||||
" Show matching brackets when text indicator is over them |
||||
set showmatch |
||||
" How many tenths of a second to blink when matching brackets |
||||
set mat=2 |
||||
|
||||
" No annoying sound on errors |
||||
set noerrorbells |
||||
set novisualbell |
||||
set t_vb= |
||||
set tm=500 |
||||
|
||||
" Properly disable sound on errors on MacVim |
||||
if has("gui_macvim") |
||||
autocmd GUIEnter * set vb t_vb= |
||||
endif |
||||
|
||||
|
||||
" Add a bit extra margin to the left |
||||
set foldcolumn=1 |
||||
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" => Colors and Fonts |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" Enable syntax highlighting |
||||
syntax enable |
||||
|
||||
" Enable 256 colors palette in Gnome Terminal |
||||
if $COLORTERM == 'gnome-terminal' |
||||
set t_Co=256 |
||||
endif |
||||
|
||||
try |
||||
colorscheme desert |
||||
catch |
||||
endtry |
||||
|
||||
set background=dark |
||||
|
||||
" Set extra options when running in GUI mode |
||||
if has("gui_running") |
||||
set guioptions-=T |
||||
set guioptions-=e |
||||
set t_Co=256 |
||||
set guitablabel=%M\ %t |
||||
endif |
||||
|
||||
" Set utf8 as standard encoding and en_US as the standard language |
||||
set encoding=utf8 |
||||
|
||||
" Use Unix as the standard file type |
||||
set ffs=unix,dos,mac |
||||
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" => Files, backups and undo |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" Turn backup off, since most stuff is in SVN, git et.c anyway... |
||||
set nobackup |
||||
set nowb |
||||
set noswapfile |
||||
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" => Text, tab and indent related |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" Use spaces instead of tabs |
||||
set expandtab |
||||
|
||||
" Be smart when using tabs ;) |
||||
set smarttab |
||||
|
||||
" 1 tab == 4 spaces |
||||
set shiftwidth=4 |
||||
set tabstop=4 |
||||
|
||||
" Linebreak on 500 characters |
||||
set lbr |
||||
set tw=500 |
||||
|
||||
set ai "Auto indent |
||||
set si "Smart indent |
||||
set wrap "Wrap lines |
||||
|
||||
|
||||
"""""""""""""""""""""""""""""" |
||||
" => Visual mode related |
||||
"""""""""""""""""""""""""""""" |
||||
" Visual mode pressing * or # searches for the current selection |
||||
" Super useful! From an idea by Michael Naumann |
||||
vnoremap <silent> * :<C-u>call VisualSelection('', '')<CR>/<C-R>=@/<CR><CR> |
||||
vnoremap <silent> # :<C-u>call VisualSelection('', '')<CR>?<C-R>=@/<CR><CR> |
||||
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" => Moving around, tabs, windows and buffers |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" Map <Space> to / (search) and Ctrl-<Space> to ? (backwards search) |
||||
map <space> / |
||||
map <c-space> ? |
||||
|
||||
" Disable highlight when <leader><cr> is pressed |
||||
map <silent> <leader><cr> :noh<cr> |
||||
|
||||
" Smart way to move between windows |
||||
map <C-j> <C-W>j |
||||
map <C-k> <C-W>k |
||||
map <C-h> <C-W>h |
||||
map <C-l> <C-W>l |
||||
|
||||
" Close the current buffer |
||||
map <leader>bd :Bclose<cr>:tabclose<cr>gT |
||||
|
||||
" Close all the buffers |
||||
map <leader>ba :bufdo bd<cr> |
||||
|
||||
map <leader>l :bnext<cr> |
||||
map <leader>h :bprevious<cr> |
||||
|
||||
" Useful mappings for managing tabs |
||||
map <leader>tn :tabnew<cr> |
||||
map <leader>to :tabonly<cr> |
||||
map <leader>tc :tabclose<cr> |
||||
map <leader>tm :tabmove |
||||
map <leader>t<leader> :tabnext |
||||
|
||||
" Let 'tl' toggle between this and the last accessed tab |
||||
let g:lasttab = 1 |
||||
nmap <Leader>tl :exe "tabn ".g:lasttab<CR> |
||||
au TabLeave * let g:lasttab = tabpagenr() |
||||
|
||||
|
||||
" Opens a new tab with the current buffer's path |
||||
" Super useful when editing files in the same directory |
||||
map <leader>te :tabedit <c-r>=expand("%:p:h")<cr>/ |
||||
|
||||
" Switch CWD to the directory of the open buffer |
||||
map <leader>cd :cd %:p:h<cr>:pwd<cr> |
||||
|
||||
" Specify the behavior when switching between buffers |
||||
try |
||||
set switchbuf=useopen,usetab,newtab |
||||
set stal=2 |
||||
catch |
||||
endtry |
||||
|
||||
" Return to last edit position when opening files (You want this!) |
||||
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif |
||||
|
||||
|
||||
"""""""""""""""""""""""""""""" |
||||
" => Status line |
||||
"""""""""""""""""""""""""""""" |
||||
" Always show the status line |
||||
set laststatus=2 |
||||
|
||||
" Format the status line |
||||
set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Line:\ %l\ \ Column:\ %c |
||||
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" => Editing mappings |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" Remap VIM 0 to first non-blank character |
||||
map 0 ^ |
||||
|
||||
" Move a line of text using ALT+[jk] or Command+[jk] on mac |
||||
nmap <M-j> mz:m+<cr>`z |
||||
nmap <M-k> mz:m-2<cr>`z |
||||
vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z |
||||
vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z |
||||
|
||||
if has("mac") || has("macunix") |
||||
nmap <D-j> <M-j> |
||||
nmap <D-k> <M-k> |
||||
vmap <D-j> <M-j> |
||||
vmap <D-k> <M-k> |
||||
endif |
||||
|
||||
" Delete trailing white space on save, useful for some filetypes ;) |
||||
fun! CleanExtraSpaces() |
||||
let save_cursor = getpos(".") |
||||
let old_query = getreg('/') |
||||
silent! %s/\s\+$//e |
||||
call setpos('.', save_cursor) |
||||
call setreg('/', old_query) |
||||
endfun |
||||
|
||||
if has("autocmd") |
||||
autocmd BufWritePre *.txt,*.js,*.py,*.wiki,*.sh,*.coffee :call CleanExtraSpaces() |
||||
endif |
||||
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" => Spell checking |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" Pressing ,ss will toggle and untoggle spell checking |
||||
map <leader>ss :setlocal spell!<cr> |
||||
|
||||
" Shortcuts using <leader> |
||||
map <leader>sn ]s |
||||
map <leader>sp [s |
||||
map <leader>sa zg |
||||
map <leader>s? z= |
||||
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" => Misc |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" Remove the Windows ^M - when the encodings gets messed up |
||||
noremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm |
||||
|
||||
" Quickly open a buffer for scribble |
||||
map <leader>q :e ~/buffer<cr> |
||||
|
||||
" Quickly open a markdown buffer for scribble |
||||
map <leader>x :e ~/buffer.md<cr> |
||||
|
||||
" Toggle paste mode on and off |
||||
map <leader>pp :setlocal paste!<cr> |
||||
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" => Helper functions |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" Returns true if paste mode is enabled |
||||
function! HasPaste() |
||||
if &paste |
||||
return 'PASTE MODE ' |
||||
endif |
||||
return '' |
||||
endfunction |
||||
|
||||
" Don't close window, when deleting a buffer |
||||
command! Bclose call <SID>BufcloseCloseIt() |
||||
function! <SID>BufcloseCloseIt() |
||||
let l:currentBufNum = bufnr("%") |
||||
let l:alternateBufNum = bufnr("#") |
||||
|
||||
if buflisted(l:alternateBufNum) |
||||
buffer # |
||||
else |
||||
bnext |
||||
endif |
||||
|
||||
if bufnr("%") == l:currentBufNum |
||||
new |
||||
endif |
||||
|
||||
if buflisted(l:currentBufNum) |
||||
execute("bdelete! ".l:currentBufNum) |
||||
endif |
||||
endfunction |
||||
|
||||
function! CmdLine(str) |
||||
exe "menu Foo.Bar :" . a:str |
||||
emenu Foo.Bar |
||||
unmenu Foo |
||||
endfunction |
||||
|
||||
function! VisualSelection(direction, extra_filter) range |
||||
let l:saved_reg = @" |
||||
execute "normal! vgvy" |
||||
|
||||
let l:pattern = escape(@", "\\/.*'$^~[]") |
||||
let l:pattern = substitute(l:pattern, "\n$", "", "") |
||||
|
||||
if a:direction == 'gv' |
||||
call CmdLine("Ack '" . l:pattern . "' " ) |
||||
elseif a:direction == 'replace' |
||||
call CmdLine("%s" . '/'. l:pattern . '/') |
||||
endif |
||||
|
||||
let @/ = l:pattern |
||||
let @" = l:saved_reg |
||||
endfunction |
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
" Specify a directory for plugins |
||||
" - For Neovim: ~/.local/share/nvim/plugged |
||||
" - Avoid using standard Vim directory names like 'plugin' |
||||
call plug#begin('~/.vim/plugged') |
||||
|
||||
" Make sure you use single quotes |
||||
Plug 'https://github.com/scrooloose/nerdtree.git' |
||||
Plug 'valloric/youcompleteme' |
||||
Plug 'raimondi/delimitmate' |
||||
Plug 'Chiel92/vim-autoformat' |
||||
Plug 'https://github.com/tpope/vim-surround' |
||||
|
||||
" Initialize plugin system |
||||
call plug#end() |
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
" => Nerd Tree |
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
||||
let g:NERDTreeWinPos = "left" |
||||
let NERDTreeShowHidden=0 |
||||
let NERDTreeIgnore = ['\.pyc$', '__pycache__'] |
||||
let g:NERDTreeWinSize=35 |
||||
map <leader>nn :NERDTreeToggle<cr> |
||||
map <leader>nb :NERDTreeFromBookmark<Space> |
||||
map <leader>nf :NERDTreeFind<cr> |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
# custom files |
||||
custom/ |
||||
!custom/plugins/example |
||||
!custom/example.zsh |
||||
|
||||
# temp files directories |
||||
cache/ |
||||
log/ |
@ -0,0 +1,123 @@
@@ -0,0 +1,123 @@
|
||||
# CONTRIBUTING GUIDELINES |
||||
|
||||
Oh-My-Zsh is a community-driven project. Contribution is welcome, encouraged and appreciated. |
||||
It is also essential for the development of the project. |
||||
|
||||
These guidelines are an attempt at better addressing the huge amount of pending |
||||
issues and pull requests. Please read them closely. |
||||
|
||||
Foremost, be so kind as to [search](#use-the-search-luke). This ensures any contribution |
||||
you would make is not already covered. |
||||
|
||||
* [Issues](#reporting-issues) |
||||
* [You have a problem](#you-have-a-problem) |
||||
* [You have a suggestion](#you-have-a-suggestion) |
||||
* [Pull Requests](#submitting-pull-requests) |
||||
* [Getting started](#getting-started) |
||||
* [You have a solution](#you-have-a-solution) |
||||
* [You have an addition](#you-have-an-addition) |
||||
* [Information sources (_aka_ search)](#use-the-search-luke) |
||||
|
||||
**BONUS:** [Volunteering](#you-have-spare-time-to-volunteer) |
||||
|
||||
## Reporting Issues |
||||
|
||||
### You have a problem |
||||
|
||||
Please be so kind as to [search](#use-the-search-luke) for any open issue already covering |
||||
your problem. |
||||
|
||||
If you find one, comment on it so we can know there are more people experiencing it. |
||||
|
||||
If not, look at the [Troubleshooting](https://github.com/robbyrussell/oh-my-zsh/wiki/Troubleshooting) |
||||
page for instructions on how to gather data to better debug your problem. |
||||
|
||||
Then, you can go ahead and create an issue with as much detail as you can provide. |
||||
It should include the data gathered as indicated above, along with: |
||||
|
||||
1. How to reproduce the problem |
||||
2. What the correct behavior should be |
||||
3. What the actual behavior is |
||||
|
||||
Please copy to anyone relevant (_eg_ plugin maintainers) by mentioning their GitHub handle |
||||
(starting with `@`) in your message. |
||||
|
||||
We will do our very best to help you. |
||||
|
||||
### You have a suggestion |
||||
|
||||
Please be so kind as to [search](#use-the-search-luke) for any open issue already covering |
||||
your suggestion. |
||||
|
||||
If you find one, comment on it so we can know there are more people supporting it. |
||||
|
||||
If not, you can go ahead and create an issue. Please copy to anyone relevant (_eg_ plugin |
||||
maintainers) by mentioning their GitHub handle (starting with `@`) in your message. |
||||
|
||||
## Submitting Pull Requests |
||||
|
||||
### Getting started |
||||
|
||||
You should be familiar with the basics of |
||||
[contributing on GitHub](https://help.github.com/articles/using-pull-requests) and have a fork |
||||
[properly set up](https://github.com/robbyrussell/oh-my-zsh/wiki/Contribution-Technical-Practices). |
||||
|
||||
You MUST always create PRs with _a dedicated branch_ based on the latest upstream tree. |
||||
|
||||
If you create your own PR, please make sure you do it right. Also be so kind as to reference |
||||
any issue that would be solved in the PR description body, |
||||
[for instance](https://help.github.com/articles/closing-issues-via-commit-messages/) |
||||
_"Fixes #XXXX"_ for issue number XXXX. |
||||
|
||||
### You have a solution |
||||
|
||||
Please be so kind as to [search](#use-the-search-luke) for any open issue already covering |
||||
your [problem](#you-have-a-problem), and any pending/merged/rejected PR covering your solution. |
||||
|
||||
If the solution is already reported, try it out and +1 the pull request if the |
||||
solution works ok. On the other hand, if you think your solution is better, post |
||||
it with a reference to the other one so we can have both solutions to compare. |
||||
|
||||
If not, then go ahead and submit a PR. Please copy to anyone relevant (e.g. plugin |
||||
maintainers) by mentioning their GitHub handle (starting with `@`) in your message. |
||||
|
||||
### You have an addition |
||||
|
||||
Please [do not](https://github.com/robbyrussell/oh-my-zsh/wiki/Themes#dont-send-us-your-theme-for-now) |
||||
send themes for now. |
||||
|
||||
Please be so kind as to [search](#use-the-search-luke) for any pending, merged or rejected Pull Requests |
||||
covering or related to what you want to add. |
||||
|
||||
If you find one, try it out and work with the author on a common solution. |
||||
|
||||
If not, then go ahead and submit a PR. Please copy to anyone relevant (_eg_ plugin |
||||
maintainers) by mentioning their GitHub handle (starting with `@`) in your message. |
||||
|
||||
For any extensive change, _eg_ a new plugin, you will have to find testers to +1 your PR. |
||||
|
||||
---- |
||||
|
||||
## Use the Search, Luke |
||||
|
||||
_May the Force (of past experiences) be with you_ |
||||
|
||||
GitHub offers [many search features](https://help.github.com/articles/searching-github/) |
||||
to help you check whether a similar contribution to yours already exists. Please search |
||||
before making any contribution, it avoids duplicates and eases maintenance. Trust me, |
||||
that works 90% of the time. |
||||
|
||||
You can also take a look at the [FAQ](https://github.com/robbyrussell/oh-my-zsh/wiki/FAQ) |
||||
to be sure your contribution has not already come up. |
||||
|
||||
If all fails, your thing has probably not been reported yet, so you can go ahead |
||||
and [create an issue](#reporting-issues) or [submit a PR](#submitting-pull-requests). |
||||
|
||||
---- |
||||
|
||||
### You have spare time to volunteer |
||||
|
||||
Very nice!! :) |
||||
|
||||
Please have a look at the [Volunteer](https://github.com/robbyrussell/oh-my-zsh/wiki/Volunteers) |
||||
page for instructions on where to start and more. |
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
The MIT License (MIT) |
||||
|
||||
Copyright (c) 2009-2019 Robby Russell and 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 |
||||
of this software and associated documentation files (the "Software"), to deal |
||||
in the Software without restriction, including without limitation the rights |
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
copies of the Software, and to permit persons to whom the Software is |
||||
furnished to do so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included in all |
||||
copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||
SOFTWARE. |
@ -0,0 +1,251 @@
@@ -0,0 +1,251 @@
|
||||
<p align="center"> |
||||
<img src="https://s3.amazonaws.com/ohmyzsh/oh-my-zsh-logo.png" alt="Oh My Zsh"> |
||||
</p> |
||||
|
||||
Oh My Zsh is an open source, community-driven framework for managing your [zsh](https://www.zsh.org/) configuration. |
||||
|
||||
Sounds boring. Let's try again. |
||||
|
||||
__Oh My Zsh will not make you a 10x developer...but you might 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?"_ |
||||
|
||||
Finally, you'll begin to get the sort of attention that you have always felt you deserved. ...or maybe you'll use the time that you're saving to start flossing more often. 😬 |
||||
|
||||
To learn more, visit [ohmyz.sh](https://ohmyz.sh) and follow [@ohmyzsh](https://twitter.com/ohmyzsh) on Twitter. |
||||
|
||||
## Getting Started |
||||
|
||||
### Prerequisites |
||||
|
||||
__Disclaimer:__ _Oh My Zsh works best on macOS and Linux._ |
||||
|
||||
* 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 |
||||
* `git` should be installed |
||||
|
||||
### Basic Installation |
||||
|
||||
Oh My Zsh is installed by running one of the following commands in your terminal. You can install this via the command-line with either `curl` or `wget`. |
||||
|
||||
#### via curl |
||||
|
||||
```shell |
||||
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" |
||||
``` |
||||
|
||||
#### via wget |
||||
|
||||
```shell |
||||
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" |
||||
``` |
||||
|
||||
## Using Oh My Zsh |
||||
|
||||
### Plugins |
||||
|
||||
Oh My Zsh comes with a shitload of plugins to take advantage of. You can take a look in the [plugins](https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins) directory and/or the [wiki](https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins) to see what's currently available. |
||||
|
||||
#### Enabling Plugins |
||||
|
||||
Once you spot a plugin (or several) that you'd like to use with Oh My Zsh, you'll need to enable them in the `.zshrc` file. You'll find the zshrc file in your `$HOME` directory. Open it with your favorite text editor and you'll see a spot to list all the plugins you want to load. |
||||
|
||||
```shell |
||||
vi ~/.zshrc |
||||
``` |
||||
|
||||
For example, this might begin to look like this: |
||||
|
||||
```shell |
||||
plugins=( |
||||
git |
||||
bundler |
||||
dotenv |
||||
osx |
||||
rake |
||||
rbenv |
||||
ruby |
||||
) |
||||
``` |
||||
|
||||
#### Using Plugins |
||||
|
||||
Most plugins (should! we're working on this) include a __README__, which documents how to use them. |
||||
|
||||
### 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://github.com/robbyrussell/oh-my-zsh/wiki/Themes) on the wiki. Check them out! |
||||
|
||||
#### Selecting a Theme |
||||
|
||||
_Robby's theme is the default one. It's not the fanciest one. It's not the simplest one. It's just the right one (for him)._ |
||||
|
||||
Once you find a theme that you'd like to use, you will need to edit the `~/.zshrc` file. You'll see an environment variable (all caps) in there that looks like: |
||||
|
||||
```shell |
||||
ZSH_THEME="robbyrussell" |
||||
``` |
||||
|
||||
To use a different theme, simply change the value to match the name of your desired theme. For example: |
||||
|
||||
```shell |
||||
ZSH_THEME="agnoster" # (this is one of the fancy ones) |
||||
# see https://github.com/robbyrussell/oh-my-zsh/wiki/Themes#agnoster |
||||
``` |
||||
|
||||
_Note: many themes require installing the [Powerline Fonts](https://github.com/powerline/fonts) in order to render properly._ |
||||
|
||||
Open up a new terminal window and your prompt should look something like this: |
||||
|
||||
![Agnoster theme](https://cloud.githubusercontent.com/assets/2618447/6316862/70f58fb6-ba03-11e4-82c9-c083bf9a6574.png) |
||||
|
||||
In case you did not find a suitable theme for your needs, please have a look at the wiki for [more of them](https://github.com/robbyrussell/oh-my-zsh/wiki/External-themes). |
||||
|
||||
If you're feeling feisty, you can let the computer select one randomly for you each time you open a new terminal window. |
||||
|
||||
|
||||
```shell |
||||
ZSH_THEME="random" # (...please let it be pie... please be some pie..) |
||||
``` |
||||
|
||||
And if you want to pick random theme from a list of your favorite themes: |
||||
|
||||
```shell |
||||
ZSH_THEME_RANDOM_CANDIDATES=( |
||||
"robbyrussell" |
||||
"agnoster" |
||||
) |
||||
``` |
||||
|
||||
## Advanced Topics |
||||
|
||||
If you're the type that likes to get their hands dirty, these sections might resonate. |
||||
|
||||
### Advanced Installation |
||||
|
||||
Some users may want to change the default path, or manually install Oh My Zsh. |
||||
|
||||
#### Custom 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: |
||||
|
||||
```shell |
||||
export ZSH="$HOME/.dotfiles/oh-my-zsh"; sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" |
||||
``` |
||||
|
||||
#### Manual Installation |
||||
|
||||
##### 1. Clone the repository: |
||||
|
||||
```shell |
||||
git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh |
||||
``` |
||||
|
||||
##### 2. *Optionally*, backup your existing `~/.zshrc` file: |
||||
|
||||
```shell |
||||
cp ~/.zshrc ~/.zshrc.orig |
||||
``` |
||||
|
||||
##### 3. Create a new zsh configuration file |
||||
|
||||
You can create a new zsh config file by copying the template that we have included for you. |
||||
|
||||
```shell |
||||
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc |
||||
``` |
||||
|
||||
##### 4. Change your default shell |
||||
|
||||
```shell |
||||
chsh -s /bin/zsh |
||||
``` |
||||
|
||||
##### 5. Initialize your new zsh configuration |
||||
|
||||
Once you open up a new terminal window, it should load zsh with Oh My Zsh's configuration. |
||||
|
||||
### Installation Problems |
||||
|
||||
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`. |
||||
* If you installed manually or changed the install location, check the `ZSH` environment variable in `~/.zshrc`. |
||||
|
||||
### Custom Plugins and Themes |
||||
|
||||
If you want to override any of the default behaviors, just add a new file (ending in `.zsh`) in the `custom/` directory. |
||||
|
||||
If you have many functions that go well together, you can put them as a `XYZ.plugin.zsh` file in the `custom/plugins/` directory and then enable this plugin. |
||||
|
||||
If you would like to override the functionality of a plugin distributed with Oh My Zsh, create a plugin of the same name in the `custom/plugins/` directory and it will be loaded instead of the one in `plugins/`. |
||||
|
||||
## Getting Updates |
||||
|
||||
By default, you will be prompted to check for upgrades every few weeks. If you would like `oh-my-zsh` to automatically upgrade itself without prompting you, set the following in your `~/.zshrc`: |
||||
|
||||
```shell |
||||
DISABLE_UPDATE_PROMPT=true |
||||
``` |
||||
|
||||
To disable automatic upgrades, set the following in your `~/.zshrc`: |
||||
|
||||
```shell |
||||
DISABLE_AUTO_UPDATE=true |
||||
``` |
||||
|
||||
### Manual Updates |
||||
|
||||
If you'd like to upgrade at any point in time (maybe someone just released a new plugin and you don't want to wait a week?) you just need to run: |
||||
|
||||
```shell |
||||
upgrade_oh_my_zsh |
||||
``` |
||||
|
||||
Magic! 🎉 |
||||
|
||||
## Uninstalling Oh My Zsh |
||||
|
||||
Oh My Zsh isn't for everyone. We'll miss you, but we want to make this an easy breakup. |
||||
|
||||
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 |
||||
|
||||
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. |
||||
|
||||
### 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. |
||||
|
||||
## Contributors |
||||
|
||||
Oh My Zsh has a vibrant community of happy users and delightful contributors. Without all the time and help from our contributors, it wouldn't be so awesome. |
||||
|
||||
Thank you so much! |
||||
|
||||
## Follow Us |
||||
|
||||
We're on the social media. |
||||
|
||||
* [@ohmyzsh](https://twitter.com/ohmyzsh) on Twitter. You should follow it. |
||||
* [Oh My Zsh](https://www.facebook.com/Oh-My-Zsh-296616263819290/) on Facebook. |
||||
|
||||
## Merchandise |
||||
|
||||
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 |
||||
|
||||
Oh My Zsh is released under the [MIT license](LICENSE.txt). |
||||
|
||||
## About Planet Argon |
||||
|
||||
![Planet Argon](https://pa-github-assets.s3.amazonaws.com/PARGON_logo_digital_COL-small.jpg) |
||||
|
||||
Oh My Zsh was started by the team at [Planet Argon](https://www.planetargon.com/?utm_source=github), a [Ruby on Rails development agency](https://www.planetargon.com/skills/ruby-on-rails-development?utm_source=github). Check out our [other open source projects](https://www.planetargon.com/open-source?utm_source=github). |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
## Bazaar integration |
||||
## Just works with the GIT integration just add $(bzr_prompt_info) to the PROMPT |
||||
function bzr_prompt_info() { |
||||
BZR_CB=`bzr nick 2> /dev/null | grep -v "ERROR" | cut -d ":" -f2 | awk -F / '{print "bzr::"$1}'` |
||||
if [ -n "$BZR_CB" ]; then |
||||
BZR_DIRTY="" |
||||
[[ -n `bzr status` ]] && BZR_DIRTY=" %{$fg[red]%} * %{$fg[green]%}" |
||||
echo "$ZSH_THEME_SCM_PROMPT_PREFIX$BZR_CB$BZR_DIRTY$ZSH_THEME_GIT_PROMPT_SUFFIX" |
||||
fi |
||||
} |
@ -0,0 +1,86 @@
@@ -0,0 +1,86 @@
|
||||
# System clipboard integration |
||||
# |
||||
# This file has support for doing system clipboard copy and paste operations |
||||
# from the command line in a generic cross-platform fashion. |
||||
# |
||||
# On OS X and Windows, the main system clipboard or "pasteboard" is used. On other |
||||
# Unix-like OSes, this considers the X Windows CLIPBOARD selection to be the |
||||
# "system clipboard", and the X Windows `xclip` command must be installed. |
||||
|
||||
# clipcopy - Copy data to clipboard |
||||
# |
||||
# Usage: |
||||
# |
||||
# <command> | clipcopy - copies stdin to clipboard |
||||
# |
||||
# clipcopy <file> - copies a file's contents to clipboard |
||||
# |
||||
function clipcopy() { |
||||
emulate -L zsh |
||||
local file=$1 |
||||
if [[ $OSTYPE == darwin* ]]; then |
||||
if [[ -z $file ]]; then |
||||
pbcopy |
||||
else |
||||
cat $file | pbcopy |
||||
fi |
||||
elif [[ $OSTYPE == cygwin* ]]; then |
||||
if [[ -z $file ]]; then |
||||
cat > /dev/clipboard |
||||
else |
||||
cat $file > /dev/clipboard |
||||
fi |
||||
else |
||||
if (( $+commands[xclip] )); then |
||||
if [[ -z $file ]]; then |
||||
xclip -in -selection clipboard |
||||
else |
||||
xclip -in -selection clipboard $file |
||||
fi |
||||
elif (( $+commands[xsel] )); then |
||||
if [[ -z $file ]]; then |
||||
xsel --clipboard --input |
||||
else |
||||
cat "$file" | xsel --clipboard --input |
||||
fi |
||||
else |
||||
print "clipcopy: Platform $OSTYPE not supported or xclip/xsel not installed" >&2 |
||||
return 1 |
||||
fi |
||||
fi |
||||
} |
||||
|
||||
# clippaste - "Paste" data from clipboard to stdout |
||||
# |
||||
# Usage: |
||||
# |
||||
# clippaste - writes clipboard's contents to stdout |
||||
# |
||||
# clippaste | <command> - pastes contents and pipes it to another process |
||||
# |
||||
# clippaste > <file> - paste contents to a file |
||||
# |
||||
# Examples: |
||||
# |
||||
# # Pipe to another process |
||||
# clippaste | grep foo |
||||
# |
||||
# # Paste to a file |
||||
# clippaste > file.txt |
||||
function clippaste() { |
||||
emulate -L zsh |
||||
if [[ $OSTYPE == darwin* ]]; then |
||||
pbpaste |
||||
elif [[ $OSTYPE == cygwin* ]]; then |
||||
cat /dev/clipboard |
||||
else |
||||
if (( $+commands[xclip] )); then |
||||
xclip -out -selection clipboard |
||||
elif (( $+commands[xsel] )); then |
||||
xsel --clipboard --output |
||||
else |
||||
print "clipcopy: Platform $OSTYPE not supported or xclip/xsel not installed" >&2 |
||||
return 1 |
||||
fi |
||||
fi |
||||
} |
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
# Handle completions insecurities (i.e., completion-dependent directories with |
||||
# insecure ownership or permissions) by: |
||||
# |
||||
# * Human-readably notifying the user of these insecurities. |
||||
function handle_completion_insecurities() { |
||||
# List of the absolute paths of all unique insecure directories, split on |
||||
# newline from compaudit()'s output resembling: |
||||
# |
||||
# There are insecure directories: |
||||
# /usr/share/zsh/site-functions |
||||
# /usr/share/zsh/5.0.6/functions |
||||
# /usr/share/zsh |
||||
# /usr/share/zsh/5.0.6 |
||||
# |
||||
# Since the ignorable first line is printed to stderr and thus not captured, |
||||
# stderr is squelched to prevent this output from leaking to the user. |
||||
local -aU insecure_dirs |
||||
insecure_dirs=( ${(f@):-"$(compaudit 2>/dev/null)"} ) |
||||
|
||||
# If no such directories exist, get us out of here. |
||||
(( ! ${#insecure_dirs} )) && return |
||||
|
||||
# List ownership and permissions of all insecure directories. |
||||
print "[oh-my-zsh] Insecure completion-dependent directories detected:" |
||||
ls -ld "${(@)insecure_dirs}" |
||||
|
||||
cat <<EOD |
||||
|
||||
[oh-my-zsh] For safety, we will not load completions from these directories until |
||||
[oh-my-zsh] you fix their permissions and ownership and restart zsh. |
||||
[oh-my-zsh] See the above list for directories with group or other writability. |
||||
|
||||
[oh-my-zsh] To fix your permissions you can do so by disabling |
||||
[oh-my-zsh] the write permission of "group" and "others" and making sure that the |
||||
[oh-my-zsh] owner of these directories is either root or your current user. |
||||
[oh-my-zsh] The following command may help: |
||||
[oh-my-zsh] compaudit | xargs chmod g-w,o-w |
||||
|
||||
[oh-my-zsh] If the above didn't help or you want to skip the verification of |
||||
[oh-my-zsh] insecure directories you can set the variable ZSH_DISABLE_COMPFIX to |
||||
[oh-my-zsh] "true" before oh-my-zsh is sourced in your zshrc file. |
||||
|
||||
EOD |
||||
} |
@ -0,0 +1,73 @@
@@ -0,0 +1,73 @@
|
||||
# fixme - the load process here seems a bit bizarre |
||||
zmodload -i zsh/complist |
||||
|
||||
WORDCHARS='' |
||||
|
||||
unsetopt menu_complete # do not autoselect the first completion entry |
||||
unsetopt flowcontrol |
||||
setopt auto_menu # show completion menu on successive tab press |
||||
setopt complete_in_word |
||||
setopt always_to_end |
||||
|
||||
# should this be in keybindings? |
||||
bindkey -M menuselect '^o' accept-and-infer-next-history |
||||
zstyle ':completion:*:*:*:*:*' menu select |
||||
|
||||
# case insensitive (all), partial-word and substring completion |
||||
if [[ "$CASE_SENSITIVE" = true ]]; then |
||||
zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*' |
||||
else |
||||
if [[ "$HYPHEN_INSENSITIVE" = true ]]; then |
||||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|=*' 'l:|=* r:|=*' |
||||
else |
||||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*' |
||||
fi |
||||
fi |
||||
unset CASE_SENSITIVE HYPHEN_INSENSITIVE |
||||
|
||||
# Complete . and .. special directories |
||||
zstyle ':completion:*' special-dirs true |
||||
|
||||
zstyle ':completion:*' list-colors '' |
||||
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01' |
||||
|
||||
if [[ "$OSTYPE" = solaris* ]]; then |
||||
zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm" |
||||
else |
||||
zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w" |
||||
fi |
||||
|
||||
# disable named-directories autocompletion |
||||
zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories |
||||
|
||||
# Use caching so that commands like apt and dpkg complete are useable |
||||
zstyle ':completion::complete:*' use-cache 1 |
||||
zstyle ':completion::complete:*' cache-path $ZSH_CACHE_DIR |
||||
|
||||
# Don't complete uninteresting users |
||||
zstyle ':completion:*:*:*:users' ignored-patterns \ |
||||
adm amanda apache at avahi avahi-autoipd beaglidx bin cacti canna \ |
||||
clamav daemon dbus distcache dnsmasq dovecot fax ftp games gdm \ |
||||
gkrellmd gopher hacluster haldaemon halt hsqldb ident junkbust kdm \ |
||||
ldap lp mail mailman mailnull man messagebus mldonkey mysql nagios \ |
||||
named netdump news nfsnobody nobody nscd ntp nut nx obsrun openvpn \ |
||||
operator pcap polkitd postfix postgres privoxy pulse pvm quagga radvd \ |
||||
rpc rpcuser rpm rtkit scard shutdown squid sshd statd svn sync tftp \ |
||||
usbmux uucp vcsa wwwrun xfs '_*' |
||||
|
||||
# ... unless we really want to. |
||||
zstyle '*' single-ignored show |
||||
|
||||
if [[ $COMPLETION_WAITING_DOTS = true ]]; then |
||||
expand-or-complete-with-dots() { |
||||
# toggle line-wrapping off and back on again |
||||
[[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti rmam |
||||
print -Pn "%{%F{red}......%f%}" |
||||
[[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti smam |
||||
|
||||
zle expand-or-complete |
||||
zle redisplay |
||||
} |
||||
zle -N expand-or-complete-with-dots |
||||
bindkey "^I" expand-or-complete-with-dots |
||||
fi |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
if [[ "$ENABLE_CORRECTION" == "true" ]]; then |
||||
alias cp='nocorrect cp' |
||||
alias ebuild='nocorrect ebuild' |
||||
alias gist='nocorrect gist' |
||||
alias heroku='nocorrect heroku' |
||||
alias hpodder='nocorrect hpodder' |
||||
alias man='nocorrect man' |
||||
alias mkdir='nocorrect mkdir' |
||||
alias mv='nocorrect mv' |
||||
alias mysql='nocorrect mysql' |
||||
alias sudo='nocorrect sudo' |
||||
|
||||
setopt correct_all |
||||
fi |
@ -0,0 +1,353 @@
@@ -0,0 +1,353 @@
|
||||
# diagnostics.zsh |
||||
# |
||||
# Diagnostic and debugging support for oh-my-zsh |
||||
|
||||
# omz_diagnostic_dump() |
||||
# |
||||
# Author: Andrew Janke <andrew@apjanke.net> |
||||
# |
||||
# Usage: |
||||
# |
||||
# omz_diagnostic_dump [-v] [-V] [file] |
||||
# |
||||
# NOTE: This is a work in progress. Its interface and behavior are going to change, |
||||
# and probably in non-back-compatible ways. |
||||
# |
||||
# Outputs a bunch of information about the state and configuration of |
||||
# oh-my-zsh, zsh, and the user's system. This is intended to provide a |
||||
# bunch of context for diagnosing your own or a third party's problems, and to |
||||
# be suitable for posting to public bug reports. |
||||
# |
||||
# The output is human-readable and its format may change over time. It is not |
||||
# suitable for parsing. All the output is in one single file so it can be posted |
||||
# as a gist or bug comment on GitHub. GitHub doesn't support attaching tarballs |
||||
# or other files to bugs; otherwise, this would probably have an option to produce |
||||
# tarballs that contain copies of the config and customization files instead of |
||||
# catting them all in to one file. |
||||
# |
||||
# This is intended to be widely portable, and run anywhere that oh-my-zsh does. |
||||
# Feel free to report any portability issues as bugs. |
||||
# |
||||
# This is written in a defensive style so it still works (and can detect) cases when |
||||
# basic functionality like echo and which have been redefined. In particular, almost |
||||
# everything is invoked with "builtin" or "command", to work in the face of user |
||||
# redefinitions. |
||||
# |
||||
# OPTIONS |
||||
# |
||||
# [file] Specifies the output file. If not given, a file in the current directory |
||||
# is selected automatically. |
||||
# |
||||
# -v Increase the verbosity of the dump output. May be specified multiple times. |
||||
# Verbosity levels: |
||||
# 0 - Basic info, shell state, omz configuration, git state |
||||
# 1 - (default) Adds key binding info and configuration file contents |
||||
# 2 - Adds zcompdump file contents |
||||
# |
||||
# -V Reduce the verbosity of the dump output. May be specified multiple times. |
||||
# |
||||
# TODO: |
||||
# * Multi-file capture |
||||
# * Add automatic gist uploading |
||||
# * Consider whether to move default output file location to TMPDIR. More robust |
||||
# but less user friendly. |
||||
# |
||||
|
||||
autoload -Uz is-at-least |
||||
|
||||
function omz_diagnostic_dump() { |
||||
emulate -L zsh |
||||
|
||||
builtin echo "Generating diagnostic dump; please be patient..." |
||||
|
||||
local thisfcn=omz_diagnostic_dump |
||||
local -A opts |
||||
local opt_verbose opt_noverbose opt_outfile |
||||
local timestamp=$(date +%Y%m%d-%H%M%S) |
||||
local outfile=omz_diagdump_$timestamp.txt |
||||
builtin zparseopts -A opts -D -- "v+=opt_verbose" "V+=opt_noverbose" |
||||
local verbose n_verbose=${#opt_verbose} n_noverbose=${#opt_noverbose} |
||||
(( verbose = 1 + n_verbose - n_noverbose )) |
||||
|
||||
if [[ ${#*} > 0 ]]; then |
||||
opt_outfile=$1 |
||||
fi |
||||
if [[ ${#*} > 1 ]]; then |
||||
builtin echo "$thisfcn: error: too many arguments" >&2 |
||||
return 1 |
||||
fi |
||||
if [[ -n "$opt_outfile" ]]; then |
||||
outfile="$opt_outfile" |
||||
fi |
||||
|
||||
# Always write directly to a file so terminal escape sequences are |
||||
# captured cleanly |
||||
_omz_diag_dump_one_big_text &> "$outfile" |
||||
if [[ $? != 0 ]]; then |
||||
builtin echo "$thisfcn: error while creating diagnostic dump; see $outfile for details" |
||||
fi |
||||
|
||||
builtin echo |
||||
builtin echo Diagnostic dump file created at: "$outfile" |
||||
builtin echo |
||||
builtin echo To share this with OMZ developers, post it as a gist on GitHub |
||||
builtin echo at "https://gist.github.com" and share the link to the gist. |
||||
builtin echo |
||||
builtin echo "WARNING: This dump file contains all your zsh and omz configuration files," |
||||
builtin echo "so don't share it publicly if there's sensitive information in them." |
||||
builtin echo |
||||
|
||||
} |
||||
|
||||
function _omz_diag_dump_one_big_text() { |
||||
local program programs progfile md5 |
||||
|
||||
builtin echo oh-my-zsh diagnostic dump |
||||
builtin echo |
||||
builtin echo $outfile |
||||
builtin echo |
||||
|
||||
# Basic system and zsh information |
||||
command date |
||||
command uname -a |
||||
builtin echo OSTYPE=$OSTYPE |
||||
builtin echo ZSH_VERSION=$ZSH_VERSION |
||||
builtin echo User: $USER |
||||
builtin echo umask: $(umask) |
||||
builtin echo |
||||
_omz_diag_dump_os_specific_version |
||||
builtin echo |
||||
|
||||
# Installed programs |
||||
programs=(sh zsh ksh bash sed cat grep ls find git posh) |
||||
local progfile="" extra_str="" sha_str="" |
||||
for program in $programs; do |
||||
extra_str="" sha_str="" |
||||
progfile=$(builtin which $program) |
||||
if [[ $? == 0 ]]; then |
||||
if [[ -e $progfile ]]; then |
||||
if builtin whence shasum &>/dev/null; then |
||||
sha_str=($(command shasum $progfile)) |
||||
sha_str=$sha_str[1] |
||||
extra_str+=" SHA $sha_str" |
||||
fi |
||||
if [[ -h "$progfile" ]]; then |
||||
extra_str+=" ( -> ${progfile:A} )" |
||||
fi |
||||
fi |
||||
builtin printf '%-9s %-20s %s\n' "$program is" "$progfile" "$extra_str" |
||||
else |
||||
builtin echo "$program: not found" |
||||
fi |
||||
done |
||||
builtin echo |
||||
builtin echo Command Versions: |
||||
builtin echo "zsh: $(zsh --version)" |
||||
builtin echo "this zsh session: $ZSH_VERSION" |
||||
builtin echo "bash: $(bash --version | command grep bash)" |
||||
builtin echo "git: $(git --version)" |
||||
builtin echo "grep: $(grep --version)" |
||||
builtin echo |
||||
|
||||
# Core command definitions |
||||
_omz_diag_dump_check_core_commands || return 1 |
||||
builtin echo |
||||
|
||||
# ZSH Process state |
||||
builtin echo Process state: |
||||
builtin echo pwd: $PWD |
||||
if builtin whence pstree &>/dev/null; then |
||||
builtin echo Process tree for this shell: |
||||
pstree -p $$ |
||||
else |
||||
ps -fT |
||||
fi |
||||
builtin set | command grep -a '^\(ZSH\|plugins\|TERM\|LC_\|LANG\|precmd\|chpwd\|preexec\|FPATH\|TTY\|DISPLAY\|PATH\)\|OMZ' |
||||
builtin echo |
||||
#TODO: Should this include `env` instead of or in addition to `export`? |
||||
builtin echo Exported: |
||||
builtin echo $(builtin export | command sed 's/=.*//') |
||||
builtin echo |
||||
builtin echo Locale: |
||||
command locale |
||||
builtin echo |
||||
|
||||
# Zsh installation and configuration |
||||
builtin echo Zsh configuration: |
||||
builtin echo setopt: $(builtin setopt) |
||||
builtin echo |
||||
builtin echo zstyle: |
||||
builtin zstyle |
||||
builtin echo |
||||
builtin echo 'compaudit output:' |
||||
compaudit |
||||
builtin echo |
||||
builtin echo '$fpath directories:' |
||||
command ls -lad $fpath |
||||
builtin echo |
||||
|
||||
# Oh-my-zsh installation |
||||
builtin echo oh-my-zsh installation: |
||||
command ls -ld ~/.z* |
||||
command ls -ld ~/.oh* |
||||
builtin echo |
||||
builtin echo oh-my-zsh git state: |
||||
(cd $ZSH && builtin echo "HEAD: $(git rev-parse HEAD)" && git remote -v && git status | command grep "[^[:space:]]") |
||||
if [[ $verbose -ge 1 ]]; then |
||||
(cd $ZSH && git reflog --date=default | command grep pull) |
||||
fi |
||||
builtin echo |
||||
if [[ -e $ZSH_CUSTOM ]]; then |
||||
local custom_dir=$ZSH_CUSTOM |
||||
if [[ -h $custom_dir ]]; then |
||||
custom_dir=$(cd $custom_dir && pwd -P) |
||||
fi |
||||
builtin echo "oh-my-zsh custom dir:" |
||||
builtin echo " $ZSH_CUSTOM ($custom_dir)" |
||||
(cd ${custom_dir:h} && command find ${custom_dir:t} -name .git -prune -o -print) |
||||
builtin echo |
||||
fi |
||||
|
||||
# Key binding and terminal info |
||||
if [[ $verbose -ge 1 ]]; then |
||||
builtin echo "bindkey:" |
||||
builtin bindkey |
||||
builtin echo |
||||
builtin echo "infocmp:" |
||||
command infocmp -L |
||||
builtin echo |
||||
fi |
||||
|
||||
# Configuration file info |
||||
local zdotdir=${ZDOTDIR:-$HOME} |
||||
builtin echo "Zsh configuration files:" |
||||
local cfgfile cfgfiles |
||||
# Some files for bash that zsh does not use are intentionally included |
||||
# to help with diagnosing behavior differences between bash and zsh |
||||
cfgfiles=( /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout |
||||
$zdotdir/.zshenv $zdotdir/.zprofile $zdotdir/.zshrc $zdotdir/.zlogin $zdotdir/.zlogout |
||||
~/.zsh.pre-oh-my-zsh |
||||
/etc/bashrc /etc/profile ~/.bashrc ~/.profile ~/.bash_profile ~/.bash_logout ) |
||||
command ls -lad $cfgfiles 2>&1 |
||||
builtin echo |
||||
if [[ $verbose -ge 1 ]]; then |
||||
for cfgfile in $cfgfiles; do |
||||
_omz_diag_dump_echo_file_w_header $cfgfile |
||||
done |
||||
fi |
||||
builtin echo |
||||
builtin echo "Zsh compdump files:" |
||||
local dumpfile dumpfiles |
||||
command ls -lad $zdotdir/.zcompdump* |
||||
dumpfiles=( $zdotdir/.zcompdump*(N) ) |
||||
if [[ $verbose -ge 2 ]]; then |
||||
for dumpfile in $dumpfiles; do |
||||
_omz_diag_dump_echo_file_w_header $dumpfile |
||||
done |
||||
fi |
||||
|
||||
} |
||||
|
||||
function _omz_diag_dump_check_core_commands() { |
||||
builtin echo "Core command check:" |
||||
local redefined name builtins externals reserved_words |
||||
redefined=() |
||||
# All the zsh non-module builtin commands |
||||
# These are taken from the zsh reference manual for 5.0.2 |
||||
# Commands from modules should not be included. |
||||
# (For back-compatibility, if any of these are newish, they should be removed, |
||||
# or at least made conditional on the version of the current running zsh.) |
||||
# "history" is also excluded because OMZ is known to redefine that |
||||
reserved_words=( do done esac then elif else fi for case if while function |
||||
repeat time until select coproc nocorrect foreach end '!' '[[' '{' '}' |
||||
) |
||||
builtins=( alias autoload bg bindkey break builtin bye cd chdir command |
||||
comparguments compcall compctl compdescribe compfiles compgroups compquote comptags |
||||
comptry compvalues continue dirs disable disown echo echotc echoti emulate |
||||
enable eval exec exit false fc fg functions getln getopts hash |
||||
jobs kill let limit log logout noglob popd print printf |
||||
pushd pushln pwd r read rehash return sched set setopt shift |
||||
source suspend test times trap true ttyctl type ulimit umask unalias |
||||
unfunction unhash unlimit unset unsetopt vared wait whence where which zcompile |
||||
zle zmodload zparseopts zregexparse zstyle ) |
||||
if is-at-least 5.1; then |
||||
reserved_word+=( declare export integer float local readonly typeset ) |
||||
else |
||||
builtins+=( declare export integer float local readonly typeset ) |
||||
fi |
||||
builtins_fatal=( builtin command local ) |
||||
externals=( zsh ) |
||||
for name in $reserved_words; do |
||||
if [[ $(builtin whence -w $name) != "$name: reserved" ]]; then |
||||
builtin echo "reserved word '$name' has been redefined" |
||||
builtin which $name |
||||
redefined+=$name |
||||
fi |
||||
done |
||||
for name in $builtins; do |
||||
if [[ $(builtin whence -w $name) != "$name: builtin" ]]; then |
||||
builtin echo "builtin '$name' has been redefined" |
||||
builtin which $name |
||||
redefined+=$name |
||||
fi |
||||
done |
||||
for name in $externals; do |
||||
if [[ $(builtin whence -w $name) != "$name: command" ]]; then |
||||
builtin echo "command '$name' has been redefined" |
||||
builtin which $name |
||||
redefined+=$name |
||||
fi |
||||
done |
||||
|
||||
if [[ -n "$redefined" ]]; then |
||||
builtin echo "SOME CORE COMMANDS HAVE BEEN REDEFINED: $redefined" |
||||
else |
||||
builtin echo "All core commands are defined normally" |
||||
fi |
||||
|
||||
} |
||||
|
||||
function _omz_diag_dump_echo_file_w_header() { |
||||
local file=$1 |
||||
if [[ ( -f $file || -h $file ) ]]; then |
||||
builtin echo "========== $file ==========" |
||||
if [[ -h $file ]]; then |
||||
builtin echo "========== ( => ${file:A} ) ==========" |
||||
fi |
||||
command cat $file |
||||
builtin echo "========== end $file ==========" |
||||
builtin echo |
||||
elif [[ -d $file ]]; then |
||||
builtin echo "File '$file' is a directory" |
||||
elif [[ ! -e $file ]]; then |
||||
builtin echo "File '$file' does not exist" |
||||
else |
||||
command ls -lad "$file" |
||||
fi |
||||
} |
||||
|
||||
function _omz_diag_dump_os_specific_version() { |
||||
local osname osver version_file version_files |
||||
case "$OSTYPE" in |
||||
darwin*) |
||||
osname=$(command sw_vers -productName) |
||||
osver=$(command sw_vers -productVersion) |
||||
builtin echo "OS Version: $osname $osver build $(sw_vers -buildVersion)" |
||||
;; |
||||
cygwin) |
||||
command systeminfo | command head -4 | command tail -2 |
||||
;; |
||||
esac |
||||
|
||||
if builtin which lsb_release >/dev/null; then |
||||
builtin echo "OS Release: $(command lsb_release -s -d)" |
||||
fi |
||||
|
||||
version_files=( /etc/*-release(N) /etc/*-version(N) /etc/*_version(N) ) |
||||
for version_file in $version_files; do |
||||
builtin echo "$version_file:" |
||||
command cat "$version_file" |
||||
builtin echo |
||||
done |
||||
} |
||||
|
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
# Changing/making/removing directory |
||||
setopt auto_pushd |
||||
setopt pushd_ignore_dups |
||||
setopt pushdminus |
||||
|
||||
alias -g ...='../..' |
||||
alias -g ....='../../..' |
||||
alias -g .....='../../../..' |
||||
alias -g ......='../../../../..' |
||||
|
||||
alias -- -='cd -' |
||||
alias 1='cd -' |
||||
alias 2='cd -2' |
||||
alias 3='cd -3' |
||||
alias 4='cd -4' |
||||
alias 5='cd -5' |
||||
alias 6='cd -6' |
||||
alias 7='cd -7' |
||||
alias 8='cd -8' |
||||
alias 9='cd -9' |
||||
|
||||
alias md='mkdir -p' |
||||
alias rd=rmdir |
||||
alias d='dirs -v | head -10' |
||||
|
||||
# List directory contents |
||||
alias lsa='ls -lah' |
||||
alias l='ls -lah' |
||||
alias ll='ls -lh' |
||||
alias la='ls -lAh' |
@ -0,0 +1,229 @@
@@ -0,0 +1,229 @@
|
||||
function zsh_stats() { |
||||
fc -l 1 | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n20 |
||||
} |
||||
|
||||
function uninstall_oh_my_zsh() { |
||||
env ZSH=$ZSH sh $ZSH/tools/uninstall.sh |
||||
} |
||||
|
||||
function upgrade_oh_my_zsh() { |
||||
env ZSH=$ZSH sh $ZSH/tools/upgrade.sh |
||||
} |
||||
|
||||
function take() { |
||||
mkdir -p $@ && cd ${@:$#} |
||||
} |
||||
|
||||
function open_command() { |
||||
local open_cmd |
||||
|
||||
# define the open command |
||||
case "$OSTYPE" in |
||||
darwin*) open_cmd='open' ;; |
||||
cygwin*) open_cmd='cygstart' ;; |
||||
linux*) ! [[ $(uname -a) =~ "Microsoft" ]] && open_cmd='xdg-open' || { |
||||
open_cmd='cmd.exe /c start ""' |
||||
[[ -e "$1" ]] && { 1="$(wslpath -w "${1:a}")" || return 1 } |
||||
} ;; |
||||
msys*) open_cmd='start ""' ;; |
||||
*) echo "Platform $OSTYPE not supported" |
||||
return 1 |
||||
;; |
||||
esac |
||||
|
||||
# don't use nohup on OSX |
||||
if [[ "$OSTYPE" == darwin* ]]; then |
||||
${=open_cmd} "$@" &>/dev/null |
||||
else |
||||
nohup ${=open_cmd} "$@" &>/dev/null |
||||
fi |
||||
} |
||||
|
||||
# |
||||
# Get the value of an alias. |
||||
# |
||||
# Arguments: |
||||
# 1. alias - The alias to get its value from |
||||
# STDOUT: |
||||
# The value of alias $1 (if it has one). |
||||
# Return value: |
||||
# 0 if the alias was found, |
||||
# 1 if it does not exist |
||||
# |
||||
function alias_value() { |
||||
(( $+aliases[$1] )) && echo $aliases[$1] |
||||
} |
||||
|
||||
# |
||||
# Try to get the value of an alias, |
||||
# otherwise return the input. |
||||
# |
||||
# Arguments: |
||||
# 1. alias - The alias to get its value from |
||||
# STDOUT: |
||||
# The value of alias $1, or $1 if there is no alias $1. |
||||
# Return value: |
||||
# Always 0 |
||||
# |
||||
function try_alias_value() { |
||||
alias_value "$1" || echo "$1" |
||||
} |
||||
|
||||
# |
||||
# Set variable "$1" to default value "$2" if "$1" is not yet defined. |
||||
# |
||||
# Arguments: |
||||
# 1. name - The variable to set |
||||
# 2. val - The default value |
||||
# Return value: |
||||
# 0 if the variable exists, 3 if it was set |
||||
# |
||||
function default() { |
||||
(( $+parameters[$1] )) && return 0 |
||||
typeset -g "$1"="$2" && return 3 |
||||
} |
||||
|
||||
# |
||||
# Set environment variable "$1" to default value "$2" if "$1" is not yet defined. |
||||
# |
||||
# Arguments: |
||||
# 1. name - The env variable to set |
||||
# 2. val - The default value |
||||
# Return value: |
||||
# 0 if the env variable exists, 3 if it was set |
||||
# |
||||
function env_default() { |
||||
(( ${${(@f):-$(typeset +xg)}[(I)$1]} )) && return 0 |
||||
export "$1=$2" && return 3 |
||||
} |
||||
|
||||
|
||||
# Required for $langinfo |
||||
zmodload zsh/langinfo |
||||
|
||||
# URL-encode a string |
||||
# |
||||
# Encodes a string using RFC 2396 URL-encoding (%-escaped). |
||||
# See: https://www.ietf.org/rfc/rfc2396.txt |
||||
# |
||||
# By default, reserved characters and unreserved "mark" characters are |
||||
# not escaped by this function. This allows the common usage of passing |
||||
# an entire URL in, and encoding just special characters in it, with |
||||
# the expectation that reserved and mark characters are used appropriately. |
||||
# The -r and -m options turn on escaping of the reserved and mark characters, |
||||
# respectively, which allows arbitrary strings to be fully escaped for |
||||
# embedding inside URLs, where reserved characters might be misinterpreted. |
||||
# |
||||
# Prints the encoded string on stdout. |
||||
# Returns nonzero if encoding failed. |
||||
# |
||||
# Usage: |
||||
# omz_urlencode [-r] [-m] [-P] <string> |
||||
# |
||||
# -r causes reserved characters (;/?:@&=+$,) to be escaped |
||||
# |
||||
# -m causes "mark" characters (_.!~*''()-) to be escaped |
||||
# |
||||
# -P causes spaces to be encoded as '%20' instead of '+' |
||||
function omz_urlencode() { |
||||
emulate -L zsh |
||||
zparseopts -D -E -a opts r m P |
||||
|
||||
local in_str=$1 |
||||
local url_str="" |
||||
local spaces_as_plus |
||||
if [[ -z $opts[(r)-P] ]]; then spaces_as_plus=1; fi |
||||
local str="$in_str" |
||||
|
||||
# URLs must use UTF-8 encoding; convert str to UTF-8 if required |
||||
local encoding=$langinfo[CODESET] |
||||
local safe_encodings |
||||
safe_encodings=(UTF-8 utf8 US-ASCII) |
||||
if [[ -z ${safe_encodings[(r)$encoding]} ]]; then |
||||
str=$(echo -E "$str" | iconv -f $encoding -t UTF-8) |
||||
if [[ $? != 0 ]]; then |
||||
echo "Error converting string from $encoding to UTF-8" >&2 |
||||
return 1 |
||||
fi |
||||
fi |
||||
|
||||
# Use LC_CTYPE=C to process text byte-by-byte |
||||
local i byte ord LC_ALL=C |
||||
export LC_ALL |
||||
local reserved=';/?:@&=+$,' |
||||
local mark='_.!~*''()-' |
||||
local dont_escape="[A-Za-z0-9" |
||||
if [[ -z $opts[(r)-r] ]]; then |
||||
dont_escape+=$reserved |
||||
fi |
||||
# $mark must be last because of the "-" |
||||
if [[ -z $opts[(r)-m] ]]; then |
||||
dont_escape+=$mark |
||||
fi |
||||
dont_escape+="]" |
||||
|
||||
# Implemented to use a single printf call and avoid subshells in the loop, |
||||
# for performance (primarily on Windows). |
||||
local url_str="" |
||||
for (( i = 1; i <= ${#str}; ++i )); do |
||||
byte="$str[i]" |
||||
if [[ "$byte" =~ "$dont_escape" ]]; then |
||||
url_str+="$byte" |
||||
else |
||||
if [[ "$byte" == " " && -n $spaces_as_plus ]]; then |
||||
url_str+="+" |
||||
else |
||||
ord=$(( [##16] #byte )) |
||||
url_str+="%$ord" |
||||
fi |
||||
fi |
||||
done |
||||
echo -E "$url_str" |
||||
} |
||||
|
||||
# URL-decode a string |
||||
# |
||||
# Decodes a RFC 2396 URL-encoded (%-escaped) string. |
||||
# This decodes the '+' and '%' escapes in the input string, and leaves |
||||
# other characters unchanged. Does not enforce that the input is a |
||||
# valid URL-encoded string. This is a convenience to allow callers to |
||||
# pass in a full URL or similar strings and decode them for human |
||||
# presentation. |
||||
# |
||||
# Outputs the encoded string on stdout. |
||||
# Returns nonzero if encoding failed. |
||||
# |
||||
# Usage: |
||||
# omz_urldecode <urlstring> - prints decoded string followed by a newline |
||||
function omz_urldecode { |
||||
emulate -L zsh |
||||
local encoded_url=$1 |
||||
|
||||
# Work bytewise, since URLs escape UTF-8 octets |
||||
local caller_encoding=$langinfo[CODESET] |
||||
local LC_ALL=C |
||||
export LC_ALL |
||||
|
||||
# Change + back to ' ' |
||||
local tmp=${encoded_url:gs/+/ /} |
||||
# Protect other escapes to pass through the printf unchanged |
||||
tmp=${tmp:gs/\\/\\\\/} |
||||
# Handle %-escapes by turning them into `\xXX` printf escapes |
||||
tmp=${tmp:gs/%/\\x/} |
||||
local decoded |
||||
eval "decoded=\$'$tmp'" |
||||
|
||||
# Now we have a UTF-8 encoded string in the variable. We need to re-encode |
||||
# it if caller is in a non-UTF-8 locale. |
||||
local safe_encodings |
||||
safe_encodings=(UTF-8 utf8 US-ASCII) |
||||
if [[ -z ${safe_encodings[(r)$caller_encoding]} ]]; then |
||||
decoded=$(echo -E "$decoded" | iconv -f UTF-8 -t $caller_encoding) |
||||
if [[ $? != 0 ]]; then |
||||
echo "Error converting string from UTF-8 to $caller_encoding" >&2 |
||||
return 1 |
||||
fi |
||||
fi |
||||
|
||||
echo -E "$decoded" |
||||
} |
@ -0,0 +1,221 @@
@@ -0,0 +1,221 @@
|
||||
# Outputs current branch info in prompt format |
||||
function git_prompt_info() { |
||||
local ref |
||||
if [[ "$(command git config --get oh-my-zsh.hide-status 2>/dev/null)" != "1" ]]; then |
||||
ref=$(command git symbolic-ref HEAD 2> /dev/null) || \ |
||||
ref=$(command git rev-parse --short HEAD 2> /dev/null) || return 0 |
||||
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX" |
||||
fi |
||||
} |
||||
|
||||
# Checks if working tree is dirty |
||||
function parse_git_dirty() { |
||||
local STATUS='' |
||||
local -a FLAGS |
||||
FLAGS=('--porcelain') |
||||
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 |
||||
FLAGS+='--untracked-files=no' |
||||
fi |
||||
STATUS=$(command git status ${FLAGS} 2> /dev/null | tail -n1) |
||||
fi |
||||
if [[ -n $STATUS ]]; then |
||||
echo "$ZSH_THEME_GIT_PROMPT_DIRTY" |
||||
else |
||||
echo "$ZSH_THEME_GIT_PROMPT_CLEAN" |
||||
fi |
||||
} |
||||
|
||||
# Gets the difference between the local and remote branches |
||||
function git_remote_status() { |
||||
local remote ahead behind git_remote_status git_remote_status_detailed |
||||
remote=${$(command git rev-parse --verify ${hook_com[branch]}@{upstream} --symbolic-full-name 2>/dev/null)/refs\/remotes\/} |
||||
if [[ -n ${remote} ]]; then |
||||
ahead=$(command git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l) |
||||
behind=$(command git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l) |
||||
|
||||
if [[ $ahead -eq 0 ]] && [[ $behind -eq 0 ]]; then |
||||
git_remote_status="$ZSH_THEME_GIT_PROMPT_EQUAL_REMOTE" |
||||
elif [[ $ahead -gt 0 ]] && [[ $behind -eq 0 ]]; then |
||||
git_remote_status="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE" |
||||
git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE$((ahead))%{$reset_color%}" |
||||
elif [[ $behind -gt 0 ]] && [[ $ahead -eq 0 ]]; then |
||||
git_remote_status="$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE" |
||||
git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE$((behind))%{$reset_color%}" |
||||
elif [[ $ahead -gt 0 ]] && [[ $behind -gt 0 ]]; then |
||||
git_remote_status="$ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE" |
||||
git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE$((ahead))%{$reset_color%}$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE$((behind))%{$reset_color%}" |
||||
fi |
||||
|
||||
if [[ -n $ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_DETAILED ]]; then |
||||
git_remote_status="$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_PREFIX$remote$git_remote_status_detailed$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_SUFFIX" |
||||
fi |
||||
|
||||
echo $git_remote_status |
||||
fi |
||||
} |
||||
|
||||
# Outputs the name of the current branch |
||||
# Usage example: git pull origin $(git_current_branch) |
||||
# Using '--quiet' with 'symbolic-ref' will not cause a fatal error (128) if |
||||
# it's not a symbolic ref, but in a Git repo. |
||||
function git_current_branch() { |
||||
local ref |
||||
ref=$(command git symbolic-ref --quiet HEAD 2> /dev/null) |
||||
local ret=$? |
||||
if [[ $ret != 0 ]]; then |
||||
[[ $ret == 128 ]] && return # no git repo. |
||||
ref=$(command git rev-parse --short HEAD 2> /dev/null) || return |
||||
fi |
||||
echo ${ref#refs/heads/} |
||||
} |
||||
|
||||
|
||||
# Gets the number of commits ahead from remote |
||||
function git_commits_ahead() { |
||||
if command git rev-parse --git-dir &>/dev/null; then |
||||
local commits="$(git rev-list --count @{upstream}..HEAD 2>/dev/null)" |
||||
if [[ -n "$commits" && "$commits" != 0 ]]; then |
||||
echo "$ZSH_THEME_GIT_COMMITS_AHEAD_PREFIX$commits$ZSH_THEME_GIT_COMMITS_AHEAD_SUFFIX" |
||||
fi |
||||
fi |
||||
} |
||||
|
||||
# Gets the number of commits behind remote |
||||
function git_commits_behind() { |
||||
if command git rev-parse --git-dir &>/dev/null; then |
||||
local commits="$(git rev-list --count HEAD..@{upstream} 2>/dev/null)" |
||||
if [[ -n "$commits" && "$commits" != 0 ]]; then |
||||
echo "$ZSH_THEME_GIT_COMMITS_BEHIND_PREFIX$commits$ZSH_THEME_GIT_COMMITS_BEHIND_SUFFIX" |
||||
fi |
||||
fi |
||||
} |
||||
|
||||
# Outputs if current branch is ahead of remote |
||||
function git_prompt_ahead() { |
||||
if [[ -n "$(command git rev-list origin/$(git_current_branch)..HEAD 2> /dev/null)" ]]; then |
||||
echo "$ZSH_THEME_GIT_PROMPT_AHEAD" |
||||
fi |
||||
} |
||||
|
||||
# Outputs if current branch is behind remote |
||||
function git_prompt_behind() { |
||||
if [[ -n "$(command git rev-list HEAD..origin/$(git_current_branch) 2> /dev/null)" ]]; then |
||||
echo "$ZSH_THEME_GIT_PROMPT_BEHIND" |
||||
fi |
||||
} |
||||
|
||||
# Outputs if current branch exists on remote or not |
||||
function git_prompt_remote() { |
||||
if [[ -n "$(command git show-ref origin/$(git_current_branch) 2> /dev/null)" ]]; then |
||||
echo "$ZSH_THEME_GIT_PROMPT_REMOTE_EXISTS" |
||||
else |
||||
echo "$ZSH_THEME_GIT_PROMPT_REMOTE_MISSING" |
||||
fi |
||||
} |
||||
|
||||
# Formats prompt string for current git commit short SHA |
||||
function git_prompt_short_sha() { |
||||
local SHA |
||||
SHA=$(command git rev-parse --short HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER" |
||||
} |
||||
|
||||
# Formats prompt string for current git commit long SHA |
||||
function git_prompt_long_sha() { |
||||
local SHA |
||||
SHA=$(command git rev-parse HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER" |
||||
} |
||||
|
||||
# Get the status of the working tree |
||||
function git_prompt_status() { |
||||
local INDEX STATUS |
||||
INDEX=$(command git status --porcelain -b 2> /dev/null) |
||||
STATUS="" |
||||
if $(echo "$INDEX" | command grep -E '^\?\? ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS" |
||||
fi |
||||
if $(echo "$INDEX" | grep '^A ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" |
||||
elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" |
||||
elif $(echo "$INDEX" | grep '^MM ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" |
||||
fi |
||||
if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" |
||||
elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" |
||||
elif $(echo "$INDEX" | grep '^MM ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" |
||||
elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" |
||||
fi |
||||
if $(echo "$INDEX" | grep '^R ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS" |
||||
fi |
||||
if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" |
||||
elif $(echo "$INDEX" | grep '^D ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" |
||||
elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" |
||||
fi |
||||
if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$STATUS" |
||||
fi |
||||
if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS" |
||||
fi |
||||
if $(echo "$INDEX" | grep '^## [^ ]\+ .*ahead' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_AHEAD$STATUS" |
||||
fi |
||||
if $(echo "$INDEX" | grep '^## [^ ]\+ .*behind' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_BEHIND$STATUS" |
||||
fi |
||||
if $(echo "$INDEX" | grep '^## [^ ]\+ .*diverged' &> /dev/null); then |
||||
STATUS="$ZSH_THEME_GIT_PROMPT_DIVERGED$STATUS" |
||||
fi |
||||
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 |
||||
# Usage example: $(git_current_user_name) |
||||
function git_current_user_name() { |
||||
command git config user.name 2>/dev/null |
||||
} |
||||
|
||||
# Outputs the email of the current user |
||||
# Usage example: $(git_current_user_email) |
||||
function git_current_user_email() { |
||||
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 |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
# is x grep argument available? |
||||
grep-flag-available() { |
||||
echo | grep $1 "" >/dev/null 2>&1 |
||||
} |
||||
|
||||
GREP_OPTIONS="" |
||||
|
||||
# color grep results |
||||
if grep-flag-available --color=auto; then |
||||
GREP_OPTIONS+=" --color=auto" |
||||
fi |
||||
|
||||
# ignore VCS folders (if the necessary grep flags are available) |
||||
VCS_FOLDERS="{.bzr,CVS,.git,.hg,.svn}" |
||||
|
||||
if grep-flag-available --exclude-dir=.cvs; then |
||||
GREP_OPTIONS+=" --exclude-dir=$VCS_FOLDERS" |
||||
elif grep-flag-available --exclude=.cvs; then |
||||
GREP_OPTIONS+=" --exclude=$VCS_FOLDERS" |
||||
fi |
||||
|
||||
# export grep settings |
||||
alias grep="grep $GREP_OPTIONS" |
||||
|
||||
# clean up |
||||
unset GREP_OPTIONS |
||||
unset VCS_FOLDERS |
||||
unfunction grep-flag-available |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
## History wrapper |
||||
function omz_history { |
||||
local clear list |
||||
zparseopts -E c=clear l=list |
||||
|
||||
if [[ -n "$clear" ]]; then |
||||
# if -c provided, clobber the history file |
||||
echo -n >| "$HISTFILE" |
||||
echo >&2 History file deleted. Reload the session to see its effects. |
||||
elif [[ -n "$list" ]]; then |
||||
# if -l provided, run as if calling `fc' directly |
||||
builtin fc "$@" |
||||
else |
||||
# unless a number is provided, show all history events (starting from 1) |
||||
[[ ${@[-1]} = *[0-9]* ]] && builtin fc -l "$@" || builtin fc -l "$@" 1 |
||||
fi |
||||
} |
||||
|
||||
# Timestamp format |
||||
case $HIST_STAMPS in |
||||
"mm/dd/yyyy") alias history='omz_history -f' ;; |
||||
"dd.mm.yyyy") alias history='omz_history -E' ;; |
||||
"yyyy-mm-dd") alias history='omz_history -i' ;; |
||||
"") alias history='omz_history' ;; |
||||
*) alias history="omz_history -t '$HIST_STAMPS'" ;; |
||||
esac |
||||
|
||||
## History file configuration |
||||
[ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history" |
||||
HISTSIZE=50000 |
||||
SAVEHIST=10000 |
||||
|
||||
## History command configuration |
||||
setopt extended_history # record timestamp of command in HISTFILE |
||||
setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE |
||||
setopt hist_ignore_dups # ignore duplicated commands history list |
||||
setopt hist_ignore_space # ignore commands that start with space |
||||
setopt hist_verify # show command with history expansion to user before running it |
||||
setopt inc_append_history # add commands to HISTFILE in order of execution |
||||
setopt share_history # share command history data |
@ -0,0 +1,93 @@
@@ -0,0 +1,93 @@
|
||||
# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html |
||||
# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Builtins |
||||
# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Standard-Widgets |
||||
|
||||
# Make sure that the terminal is in application mode when zle is active, since |
||||
# only then values from $terminfo are valid |
||||
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then |
||||
function zle-line-init() { |
||||
echoti smkx |
||||
} |
||||
function zle-line-finish() { |
||||
echoti rmkx |
||||
} |
||||
zle -N zle-line-init |
||||
zle -N zle-line-finish |
||||
fi |
||||
|
||||
bindkey -e # Use emacs key bindings |
||||
|
||||
bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark |
||||
bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls |
||||
bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line. |
||||
if [[ "${terminfo[kpp]}" != "" ]]; then |
||||
bindkey "${terminfo[kpp]}" up-line-or-history # [PageUp] - Up a line of history |
||||
fi |
||||
if [[ "${terminfo[knp]}" != "" ]]; then |
||||
bindkey "${terminfo[knp]}" down-line-or-history # [PageDown] - Down a line of history |
||||
fi |
||||
|
||||
# start typing + [Up-Arrow] - fuzzy find history forward |
||||
if [[ "${terminfo[kcuu1]}" != "" ]]; then |
||||
autoload -U up-line-or-beginning-search |
||||
zle -N up-line-or-beginning-search |
||||
bindkey "${terminfo[kcuu1]}" up-line-or-beginning-search |
||||
fi |
||||
# start typing + [Down-Arrow] - fuzzy find history backward |
||||
if [[ "${terminfo[kcud1]}" != "" ]]; then |
||||
autoload -U down-line-or-beginning-search |
||||
zle -N down-line-or-beginning-search |
||||
bindkey "${terminfo[kcud1]}" down-line-or-beginning-search |
||||
fi |
||||
|
||||
if [[ "${terminfo[khome]}" != "" ]]; then |
||||
bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line |
||||
fi |
||||
if [[ "${terminfo[kend]}" != "" ]]; then |
||||
bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line |
||||
fi |
||||
|
||||
bindkey ' ' magic-space # [Space] - do history expansion |
||||
|
||||
bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word |
||||
bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word |
||||
|
||||
if [[ "${terminfo[kcbt]}" != "" ]]; then |
||||
bindkey "${terminfo[kcbt]}" reverse-menu-complete # [Shift-Tab] - move through the completion menu backwards |
||||
fi |
||||
|
||||
bindkey '^?' backward-delete-char # [Backspace] - delete backward |
||||
if [[ "${terminfo[kdch1]}" != "" ]]; then |
||||
bindkey "${terminfo[kdch1]}" delete-char # [Delete] - delete forward |
||||
else |
||||
bindkey "^[[3~" delete-char |
||||
bindkey "^[3;5~" delete-char |
||||
bindkey "\e[3~" delete-char |
||||
fi |
||||
|
||||
# Edit the current command line in $EDITOR |
||||
autoload -U edit-command-line |
||||
zle -N edit-command-line |
||||
bindkey '\C-x\C-e' edit-command-line |
||||
|
||||
# file rename magick |
||||
bindkey "^[m" copy-prev-shell-word |
||||
|
||||
# consider emacs keybindings: |
||||
|
||||
#bindkey -e ## emacs key bindings |
||||
# |
||||
#bindkey '^[[A' up-line-or-search |
||||
#bindkey '^[[B' down-line-or-search |
||||
#bindkey '^[^[[C' emacs-forward-word |
||||
#bindkey '^[^[[D' emacs-backward-word |
||||
# |
||||
#bindkey -s '^X^Z' '%-^M' |
||||
#bindkey '^[e' expand-cmd-path |
||||
#bindkey '^[^I' reverse-menu-complete |
||||
#bindkey '^X^N' accept-and-infer-next-history |
||||
#bindkey '^W' kill-region |
||||
#bindkey '^I' complete-word |
||||
## Fix weird sequence that rxvt produces |
||||
#bindkey -s '^[[Z' '\t' |
||||
# |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
## 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 |
||||
if [[ $ZSH_VERSION != 5.1.1 ]]; then |
||||
for d in $fpath; do |
||||
if [[ -e "$d/url-quote-magic" ]]; then |
||||
if is-at-least 5.1; then |
||||
autoload -Uz bracketed-paste-magic |
||||
zle -N bracketed-paste bracketed-paste-magic |
||||
fi |
||||
autoload -Uz url-quote-magic |
||||
zle -N self-insert url-quote-magic |
||||
break |
||||
fi |
||||
done |
||||
fi |
||||
|
||||
## jobs |
||||
setopt long_list_jobs |
||||
|
||||
env_default 'PAGER' 'less' |
||||
env_default 'LESS' '-R' |
||||
|
||||
## super user alias |
||||
alias _='sudo' |
||||
|
||||
## more intelligent acking for ubuntu users |
||||
if which ack-grep &> /dev/null; then |
||||
alias afind='ack-grep -il' |
||||
else |
||||
alias afind='ack -il' |
||||
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 |
||||
setopt interactivecomments |
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
# get the node.js version |
||||
function nvm_prompt_info() { |
||||
[[ -f "$NVM_DIR/nvm.sh" ]] || return |
||||
local nvm_prompt |
||||
nvm_prompt=$(node -v 2>/dev/null) |
||||
[[ "${nvm_prompt}x" == "x" ]] && return |
||||
nvm_prompt=${nvm_prompt:1} |
||||
echo "${ZSH_THEME_NVM_PROMPT_PREFIX}${nvm_prompt}${ZSH_THEME_NVM_PROMPT_SUFFIX}" |
||||
} |
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
# *_prompt_info functions for usage in your prompt |
||||
# |
||||
# Plugin creators, please add your *_prompt_info function to the list |
||||
# of dummy implementations to help theme creators not receiving errors |
||||
# without the need of implementing conditional clauses. |
||||
# |
||||
# See also lib/bzr.zsh, lib/git.zsh and lib/nvm.zsh for |
||||
# git_prompt_info, bzr_prompt_info and nvm_prompt_info |
||||
|
||||
# Dummy implementations that return false to prevent command_not_found |
||||
# errors with themes, that implement these functions |
||||
# Real implementations will be used when the respective plugins are loaded |
||||
function chruby_prompt_info hg_prompt_info pyenv_prompt_info \ |
||||
rbenv_prompt_info svn_prompt_info vi_mode_prompt_info \ |
||||
virtualenv_prompt_info jenv_prompt_info { |
||||
return 1 |
||||
} |
||||
|
||||
# oh-my-zsh supports an rvm prompt by default |
||||
# get the name of the rvm ruby version |
||||
function rvm_prompt_info() { |
||||
[ -f $HOME/.rvm/bin/rvm-prompt ] || return 1 |
||||
local rvm_prompt |
||||
rvm_prompt=$($HOME/.rvm/bin/rvm-prompt ${=ZSH_THEME_RVM_PROMPT_OPTIONS} 2>/dev/null) |
||||
[[ "${rvm_prompt}x" == "x" ]] && return 1 |
||||
echo "${ZSH_THEME_RVM_PROMPT_PREFIX:=(}${rvm_prompt}${ZSH_THEME_RVM_PROMPT_SUFFIX:=)}" |
||||
} |
||||
|
||||
# use this to enable users to see their ruby version, no matter which |
||||
# version management system they use |
||||
function ruby_prompt_info() { |
||||
echo $(rvm_prompt_info || rbenv_prompt_info || chruby_prompt_info) |
||||
} |
@ -0,0 +1,105 @@
@@ -0,0 +1,105 @@
|
||||
# Set terminal window and tab/icon title |
||||
# |
||||
# usage: title short_tab_title [long_window_title] |
||||
# |
||||
# See: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1 |
||||
# Fully supports screen, iterm, and probably most modern xterm and rxvt |
||||
# (In screen, only short_tab_title is used) |
||||
# Limited support for Apple Terminal (Terminal can't set window and tab separately) |
||||
function title { |
||||
emulate -L zsh |
||||
setopt prompt_subst |
||||
|
||||
[[ "$EMACS" == *term* ]] && return |
||||
|
||||
# if $2 is unset use $1 as default |
||||
# if it is set and empty, leave it as is |
||||
: ${2=$1} |
||||
|
||||
case "$TERM" in |
||||
cygwin|xterm*|putty*|rxvt*|ansi) |
||||
print -Pn "\e]2;$2:q\a" # set window name |
||||
print -Pn "\e]1;$1:q\a" # set tab name |
||||
;; |
||||
screen*) |
||||
print -Pn "\ek$1:q\e\\" # set screen hardstatus |
||||
;; |
||||
*) |
||||
if [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then |
||||
print -Pn "\e]2;$2:q\a" # set window name |
||||
print -Pn "\e]1;$1:q\a" # set tab name |
||||
else |
||||
# Try to use terminfo to set the title |
||||
# If the feature is available set title |
||||
if [[ -n "$terminfo[fsl]" ]] && [[ -n "$terminfo[tsl]" ]]; then |
||||
echoti tsl |
||||
print -Pn "$1" |
||||
echoti fsl |
||||
fi |
||||
fi |
||||
;; |
||||
esac |
||||
} |
||||
|
||||
ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD |
||||
ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" |
||||
# Avoid duplication of directory in terminals with independent dir display |
||||
if [[ "$TERM_PROGRAM" == Apple_Terminal ]]; then |
||||
ZSH_THEME_TERM_TITLE_IDLE="%n@%m" |
||||
fi |
||||
|
||||
# Runs before showing the prompt |
||||
function omz_termsupport_precmd { |
||||
emulate -L zsh |
||||
|
||||
if [[ "$DISABLE_AUTO_TITLE" == true ]]; then |
||||
return |
||||
fi |
||||
|
||||
title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE |
||||
} |
||||
|
||||
# Runs before executing the command |
||||
function omz_termsupport_preexec { |
||||
emulate -L zsh |
||||
setopt extended_glob |
||||
|
||||
if [[ "$DISABLE_AUTO_TITLE" == true ]]; then |
||||
return |
||||
fi |
||||
|
||||
# cmd name only, or if this is sudo or ssh, the next cmd |
||||
local CMD=${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%} |
||||
local LINE="${2:gs/%/%%}" |
||||
|
||||
title '$CMD' '%100>...>$LINE%<<' |
||||
} |
||||
|
||||
precmd_functions+=(omz_termsupport_precmd) |
||||
preexec_functions+=(omz_termsupport_preexec) |
||||
|
||||
|
||||
# Keep Apple Terminal.app's current working directory updated |
||||
# Based on this answer: https://superuser.com/a/315029 |
||||
# With extra fixes to handle multibyte chars and non-UTF-8 locales |
||||
|
||||
if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then |
||||
# Emits the control sequence to notify Terminal.app of the cwd |
||||
# Identifies the directory using a file: URI scheme, including |
||||
# the host name to disambiguate local vs. remote paths. |
||||
function update_terminalapp_cwd() { |
||||
emulate -L zsh |
||||
|
||||
# Percent-encode the pathname. |
||||
local URL_PATH="$(omz_urlencode -P $PWD)" |
||||
[[ $? != 0 ]] && return 1 |
||||
|
||||
# Undocumented Terminal.app-specific control sequence |
||||
printf '\e]7;%s\a' "file://$HOST$URL_PATH" |
||||
} |
||||
|
||||
# Use a precmd hook instead of a chpwd hook to avoid contaminating output |
||||
precmd_functions+=(update_terminalapp_cwd) |
||||
# Run once to get initial cwd set |
||||
update_terminalapp_cwd |
||||
fi |
@ -0,0 +1,55 @@
@@ -0,0 +1,55 @@
|
||||
# ls colors |
||||
autoload -U colors && colors |
||||
|
||||
# Enable ls colors |
||||
export LSCOLORS="Gxfxcxdxbxegedabagacad" |
||||
|
||||
# TODO organise this chaotic logic |
||||
|
||||
if [[ "$DISABLE_LS_COLORS" != "true" ]]; then |
||||
# Find the option for using colors in ls, depending on the version |
||||
if [[ "$OSTYPE" == netbsd* ]]; then |
||||
# On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors); |
||||
# otherwise, leave ls as is, because NetBSD's ls doesn't support -G |
||||
gls --color -d . &>/dev/null && alias ls='gls --color=tty' |
||||
elif [[ "$OSTYPE" == openbsd* ]]; then |
||||
# On OpenBSD, "gls" (ls from GNU coreutils) and "colorls" (ls from base, |
||||
# with color and multibyte support) are available from ports. "colorls" |
||||
# will be installed on purpose and can't be pulled in by installing |
||||
# coreutils, so prefer it to "gls". |
||||
gls --color -d . &>/dev/null && alias ls='gls --color=tty' |
||||
colorls -G -d . &>/dev/null && alias ls='colorls -G' |
||||
elif [[ "$OSTYPE" == darwin* ]]; then |
||||
# this is a good alias, it works by default just using $LSCOLORS |
||||
ls -G . &>/dev/null && alias ls='ls -G' |
||||
|
||||
# only use coreutils ls if there is a dircolors customization present ($LS_COLORS or .dircolors file) |
||||
# otherwise, gls will use the default color scheme which is ugly af |
||||
[[ -n "$LS_COLORS" || -f "$HOME/.dircolors" ]] && gls --color -d . &>/dev/null && alias ls='gls --color=tty' |
||||
else |
||||
# For GNU ls, we use the default ls color theme. They can later be overwritten by themes. |
||||
if [[ -z "$LS_COLORS" ]]; then |
||||
(( $+commands[dircolors] )) && eval "$(dircolors -b)" |
||||
fi |
||||
|
||||
ls --color -d . &>/dev/null && alias ls='ls --color=tty' || { ls -G . &>/dev/null && alias ls='ls -G' } |
||||
|
||||
# Take advantage of $LS_COLORS for completion as well. |
||||
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" |
||||
fi |
||||
fi |
||||
|
||||
setopt auto_cd |
||||
setopt multios |
||||
setopt prompt_subst |
||||
|
||||
[[ -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 |
||||
ZSH_THEME_GIT_PROMPT_PREFIX="git:(" # Prefix at the very beginning of the prompt, before the branch name |
||||
ZSH_THEME_GIT_PROMPT_SUFFIX=")" # At the very end of the prompt |
||||
ZSH_THEME_GIT_PROMPT_DIRTY="*" # Text to display if the branch is dirty |
||||
ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is clean |
@ -0,0 +1,117 @@
@@ -0,0 +1,117 @@
|
||||
# Set ZSH_CACHE_DIR to the path where cache files should be created |
||||
# or else we will use the default cache/ |
||||
if [[ -z "$ZSH_CACHE_DIR" ]]; then |
||||
ZSH_CACHE_DIR="$ZSH/cache" |
||||
fi |
||||
|
||||
# Migrate .zsh-update file to $ZSH_CACHE_DIR |
||||
if [ -f ~/.zsh-update ] && [ ! -f ${ZSH_CACHE_DIR}/.zsh-update ]; then |
||||
mv ~/.zsh-update ${ZSH_CACHE_DIR}/.zsh-update |
||||
fi |
||||
|
||||
# Check for updates on initial load... |
||||
if [ "$DISABLE_AUTO_UPDATE" != "true" ]; then |
||||
env ZSH=$ZSH ZSH_CACHE_DIR=$ZSH_CACHE_DIR DISABLE_UPDATE_PROMPT=$DISABLE_UPDATE_PROMPT zsh -f $ZSH/tools/check_for_upgrade.sh |
||||
fi |
||||
|
||||
# Initializes Oh My Zsh |
||||
|
||||
# add a function path |
||||
fpath=($ZSH/functions $ZSH/completions $fpath) |
||||
|
||||
# Load all stock functions (from $fpath files) called below. |
||||
autoload -U compaudit compinit |
||||
|
||||
# Set ZSH_CUSTOM to the path where your custom config files |
||||
# and plugins exists, or else we will use the default custom/ |
||||
if [[ -z "$ZSH_CUSTOM" ]]; then |
||||
ZSH_CUSTOM="$ZSH/custom" |
||||
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() { |
||||
local base_dir=$1 |
||||
local name=$2 |
||||
test -f $base_dir/plugins/$name/$name.plugin.zsh \ |
||||
|| test -f $base_dir/plugins/$name/_$name |
||||
} |
||||
# Add all defined plugins to fpath. This must be done |
||||
# before running compinit. |
||||
for plugin ($plugins); do |
||||
if is_plugin $ZSH_CUSTOM $plugin; then |
||||
fpath=($ZSH_CUSTOM/plugins/$plugin $fpath) |
||||
elif is_plugin $ZSH $plugin; then |
||||
fpath=($ZSH/plugins/$plugin $fpath) |
||||
fi |
||||
done |
||||
|
||||
# Figure out the SHORT hostname |
||||
if [[ "$OSTYPE" = darwin* ]]; then |
||||
# macOS's $HOST changes with dhcp, etc. Use ComputerName if possible. |
||||
SHORT_HOST=$(scutil --get ComputerName 2>/dev/null) || SHORT_HOST=${HOST/.*/} |
||||
else |
||||
SHORT_HOST=${HOST/.*/} |
||||
fi |
||||
|
||||
# Save the location of the current completion dump file. |
||||
if [ -z "$ZSH_COMPDUMP" ]; then |
||||
ZSH_COMPDUMP="${ZDOTDIR:-${HOME}}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}" |
||||
fi |
||||
|
||||
if [[ $ZSH_DISABLE_COMPFIX != true ]]; then |
||||
# If completion insecurities exist, warn the user |
||||
handle_completion_insecurities |
||||
# Load only from secure directories |
||||
compinit -i -C -d "${ZSH_COMPDUMP}" |
||||
else |
||||
# If the user wants it, load from all found directories |
||||
compinit -u -C -d "${ZSH_COMPDUMP}" |
||||
fi |
||||
|
||||
# Load all of the plugins that were defined in ~/.zshrc |
||||
for plugin ($plugins); do |
||||
if [ -f $ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh ]; then |
||||
source $ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh |
||||
elif [ -f $ZSH/plugins/$plugin/$plugin.plugin.zsh ]; then |
||||
source $ZSH/plugins/$plugin/$plugin.plugin.zsh |
||||
fi |
||||
done |
||||
|
||||
# Load all of your custom configurations from custom/ |
||||
for config_file ($ZSH_CUSTOM/*.zsh(N)); do |
||||
source $config_file |
||||
done |
||||
unset config_file |
||||
|
||||
# Load the theme |
||||
if [[ "$ZSH_THEME" == "random" ]]; then |
||||
if [[ "${(t)ZSH_THEME_RANDOM_CANDIDATES}" = "array" ]] && [[ "${#ZSH_THEME_RANDOM_CANDIDATES[@]}" -gt 0 ]]; then |
||||
themes=($ZSH/themes/${^ZSH_THEME_RANDOM_CANDIDATES}.zsh-theme) |
||||
else |
||||
themes=($ZSH/themes/*zsh-theme) |
||||
fi |
||||
N=${#themes[@]} |
||||
((N=(RANDOM%N)+1)) |
||||
RANDOM_THEME=${themes[$N]} |
||||
source "$RANDOM_THEME" |
||||
echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..." |
||||
else |
||||
if [ ! "$ZSH_THEME" = "" ]; then |
||||
if [ -f "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" ]; then |
||||
source "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" |
||||
elif [ -f "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme" ]; then |
||||
source "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme" |
||||
else |
||||
source "$ZSH/themes/$ZSH_THEME.zsh-theme" |
||||
fi |
||||
fi |
||||
fi |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
# adb autocomplete plugin |
||||
|
||||
* Adds autocomplete options for all adb commands. |
||||
* Add autocomplete for `adb -s` |
||||
|
||||
## Requirements |
||||
|
||||
In order to make this work, you will need to have the Android adb tools set up in your path. |
@ -0,0 +1,67 @@
@@ -0,0 +1,67 @@
|
||||
#compdef adb |
||||
#autoload |
||||
|
||||
# in order to make this work, you will need to have the android adb tools |
||||
|
||||
# adb zsh completion, based on homebrew completion |
||||
|
||||
local -a _1st_arguments |
||||
_1st_arguments=( |
||||
'bugreport:return all information from the device that should be included in a bug report.' |
||||
'connect:connect to a device via TCP/IP Port 5555 is default.' |
||||
'devices:list all connected devices' |
||||
'disconnect:disconnect from a TCP/IP device. Port 5555 is default.' |
||||
'emu:run emulator console command' |
||||
'forward:forward socket connections' |
||||
'get-devpath:print the device path' |
||||
'get-serialno:print the serial number of the device' |
||||
'get-state:print the current state of the device: offline | bootloader | device' |
||||
'help:show the help message' |
||||
'install:push this package file to the device and install it' |
||||
'jdwp:list PIDs of processes hosting a JDWP transport' |
||||
'keygen:generate adb public/private key' |
||||
'kill-server:kill the server if it is running' |
||||
'logcat:view device log' |
||||
'pull:copy file/dir from device' |
||||
'push:copy file/dir to device' |
||||
'reboot:reboots the device, optionally into the bootloader or recovery program' |
||||
'reboot-bootloader:reboots the device into the bootloader' |
||||
'remount:remounts the partitions on the device read-write' |
||||
'root:restarts the adbd daemon with root permissions' |
||||
'sideload:push a ZIP to device and install it' |
||||
'shell:run remote shell interactively' |
||||
'sync:copy host->device only if changed (-l means list but dont copy)' |
||||
'start-server:ensure that there is a server running' |
||||
'tcpip:restart host adb in tcpip mode' |
||||
'uninstall:remove this app package from the device' |
||||
'usb:restart the adbd daemon listing on USB' |
||||
'version:show version num' |
||||
'wait-for-device:block until device is online' |
||||
) |
||||
|
||||
local expl |
||||
local -a pkgs installed_pkgs |
||||
|
||||
_arguments \ |
||||
'-s[devices]:specify device:->specify_device' \ |
||||
'*:: :->subcmds' && return 0 |
||||
|
||||
case "$state" in |
||||
specify_device) |
||||
_values -C 'devices' ${$(adb devices -l|awk 'NR>1&& $1 \ |
||||
{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 |
||||
;; |
||||
esac |
||||
|
||||
if (( CURRENT == 1 )); then |
||||
_describe -t commands "adb subcommand" _1st_arguments |
||||
return |
||||
fi |
||||
|
||||
_files |
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
# ansible plugin |
||||
|
||||
## Introduction |
||||
|
||||
The `ansible plugin` adds several aliases for useful [ansible](https://docs.ansible.com/ansible/latest/index.html) commands and [aliases](#aliases). |
||||
|
||||
To use it, add `ansible` to the plugins array of your zshrc file: |
||||
|
||||
``` |
||||
plugins=(... ansible) |
||||
``` |
||||
|
||||
## Aliases |
||||
|
||||
| Command | Description | |
||||
|:-------------------------------------------|:--------------------------------------------------------------------| |
||||
| `ansible-version` / `aver` | Show the version on ansible installed in this host | |
||||
| `ansible-role-init <role name>` / `arinit` | Creates the Ansible Role as per Ansible Galaxy standard | |
||||
| `a` | command `ansible` | |
||||
| `aconf` | command `ansible-config` | |
||||
| `acon` | command `ansible-console` | |
||||
| `ainv` | command `ansible-inventory` | |
||||
| `aplaybook` | command `ansible-playbook` | |
||||
| `ainv` | command `ansible-inventory` | |
||||
| `adoc` | command `ansible-doc` | |
||||
| `agal` | command `ansible-galaxy` | |
||||
| `apull` | command `ansible-pull` | |
||||
| `aval` | command `ansible-vault` | |
||||
|
||||
## Maintainer |
||||
|
||||
### [Deepankumar](https://github.com/deepan10) |
||||
|
||||
[https://github.com/deepan10/oh-my-zsh/tree/features/ansible-plugin](https://github.com/deepan10/oh-my-zsh/tree/features/ansible-plugin) |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
# Functions |
||||
function ansible-version(){ |
||||
ansible --version |
||||
} |
||||
|
||||
function ansible-role-init(){ |
||||
if ! [ -z $1] ; then |
||||
echo "Ansible Role : $1 Creating...." |
||||
ansible-galaxy init $1 |
||||
tree $1 |
||||
else |
||||
echo "Usage : ansible-role-init <role name>" |
||||
echo "Example : ansible-role-init role1" |
||||
fi |
||||
} |
||||
|
||||
# Alias |
||||
alias a='ansible ' |
||||
alias aconf='ansible-config ' |
||||
alias acon='ansible-console ' |
||||
alias aver='ansible-version' |
||||
alias arinit='ansible-role-init' |
||||
alias aplaybook='ansible-playbook ' |
||||
alias ainv='ansible-inventory ' |
||||
alias adoc='ansible-doc ' |
||||
alias agal='ansible-galaxy ' |
||||
alias apull='ansible-pull ' |
||||
alias aval='ansible-vault' |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
# Ant |
||||
|
||||
This plugin provides completion for [Ant](https://ant.apache.org/). |
||||
|
||||
To use it add ant to the plugins array in your zshrc file. |
||||
|
||||
```bash |
||||
plugins=(... ant) |
||||
``` |
||||
|
||||
It caches ant targets in a file named `.ant_targets`, you might want to add that to |
||||
your `.gitignore` file. |
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
_ant_does_target_list_need_generating () { |
||||
[ ! -f .ant_targets ] && return 0; |
||||
[ build.xml -nt .ant_targets ] && return 0; |
||||
return 1; |
||||
} |
||||
|
||||
_ant () { |
||||
if [ -f build.xml ]; then |
||||
if _ant_does_target_list_need_generating; then |
||||
ant -p | awk -F " " 'NR > 5 { print lastTarget }{lastTarget = $1}' > .ant_targets |
||||
fi |
||||
compadd -- `cat .ant_targets` |
||||
fi |
||||
} |
||||
|
||||
compdef _ant ant |
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
## APACHE2 MACPORTS PLUGIN |
||||
|
||||
|
||||
--- |
||||
|
||||
### FEATURES |
||||
|
||||
| Alias | Function | Description | |
||||
|:--------------:|:-------------------------------------------------------------------------------|----------------------:| |
||||
| apache2restart | sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart | Restart apache daemon | |
||||
| apache2start | sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper start | Start apache daemon | |
||||
| apache2stop | sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper stop | Stop apache daemon | |
||||
|
||||
--- |
||||
|
||||
### CONTRIBUTORS |
||||
- Alexander Rinass (alex@rinass.net) |
||||
|
||||
--- |
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
# commands to control local apache2 server installation |
||||
# paths are for osx installation via macports |
||||
|
||||
alias apache2start='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper start' |
||||
alias apache2stop='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper stop' |
||||
alias apache2restart='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart' |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
## arcanist |
||||
|
||||
**Maintainer:** [@emzar](https://github.com/emzar) |
||||
|
||||
This plugin adds many useful aliases. |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
# |
||||
# Aliases |
||||
# (sorted alphabetically) |
||||
# |
||||
|
||||
alias ara='arc amend' |
||||
alias arb='arc branch' |
||||
alias arco='arc cover' |
||||
alias arci='arc commit' |
||||
|
||||
alias ard='arc diff' |
||||
alias ardnu='arc diff --nounit' |
||||
alias ardnupc='arc diff --nounit --plan-changes' |
||||
alias ardpc='arc diff --plan-changes' |
||||
|
||||
alias are='arc export' |
||||
alias arh='arc help' |
||||
alias arl='arc land' |
||||
alias arli='arc lint' |
||||
alias arls='arc list' |
||||
alias arpa='arc patch' |
@ -0,0 +1,146 @@
@@ -0,0 +1,146 @@
|
||||
# Archlinux plugin |
||||
|
||||
## Features |
||||
|
||||
#### YAY |
||||
|
||||
| Alias | Command | Description | |
||||
|---------|------------------------------------|---------------------------------------------------------------------| |
||||
| yaconf | yay -Pg | Print current configuration | |
||||
| yain | yay -S | Install packages from the repositories | |
||||
| yains | yay -U | Install a package from a local file | |
||||
| yainsd | yay -S --asdeps | Install packages as dependencies of another package | |
||||
| yaloc | yay -Qi | Display information about a package 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") | |
||||
| yamir | yay -Syy | Force refresh of all package lists after updating mirrorlist | |
||||
| yaorph | yay -Qtd | Remove orphans using yaourt | |
||||
| yare | yay -R | Remove packages, keeping its settings and dependencies | |
||||
| yarem | yay -Rns | Remove packages, including its settings and unneeded dependencies | |
||||
| yarep | yay -Si | Display information about a package in the repositories | |
||||
| yareps | yay -Ss | Search for packages in the repositories | |
||||
| yaupg | yay -Syu | Sync with repositories before upgrading packages | |
||||
| yasu | yay -Syu --no-confirm | Same as `yaupg`, but without confirmation | |
||||
|
||||
#### TRIZEN |
||||
|
||||
| Alias | Command | Description | |
||||
|---------|------------------------------------|---------------------------------------------------------------------| |
||||
| trconf | trizen -C | Fix all configuration files with vimdiff | |
||||
| trin | trizen -S | Install packages from the repositories | |
||||
| trins | trizen -U | Install a package from a local file | |
||||
| trinsd | trizen -S --asdeps | Install packages as dependencies of another package | |
||||
| trloc | trizen -Qi | Display information about a package in the local database | |
||||
| trlocs | trizen -Qs | Search for packages in the local database | |
||||
| trlst | trizen -Qe | List installed packages including from AUR (tagged as "local") | |
||||
| trmir | trizen -Syy | Force refresh of all package lists after updating mirrorlist | |
||||
| trorph | trizen -Qtd | Remove orphans using yaourt | |
||||
| trre | trizen -R | Remove packages, keeping its settings and dependencies | |
||||
| trrem | trizen -Rns | Remove packages, including its settings and unneeded dependencies | |
||||
| trrep | trizen -Si | Display information about a package in the repositories | |
||||
| trreps | trizen -Ss | Search for packages in the repositories | |
||||
| trupd | trizen -Sy && sudo abs && sudo aur | Update and refresh local package, ABS and AUR databases | |
||||
| trupd | trizen -Sy && sudo abs | Update and refresh the local package and ABS databases | |
||||
| trupd | trizen -Sy && sudo aur | Update and refresh the local package and AUR databases | |
||||
| trupd | trizen -Sy | Update and refresh the local package database | |
||||
| trupg | trizen -Syua | Sync with repositories before upgrading all packages (from AUR too) | |
||||
| trsu | trizen -Syua --no-confirm | Same as `trupg`, but without confirmation | |
||||
| upgrade | trizen -Syu | Sync with repositories before upgrading packages | |
||||
|
||||
#### YAOURT |
||||
|
||||
| Alias | Command | Description | |
||||
|---------|------------------------------------|---------------------------------------------------------------------| |
||||
| yaconf | yaourt -C | Fix all configuration files with vimdiff | |
||||
| yain | yaourt -S | Install packages from the repositories | |
||||
| yains | yaourt -U | Install a package from a local file | |
||||
| yainsd | yaourt -S --asdeps | Install packages as dependencies of another package | |
||||
| yaloc | yaourt -Qi | Display information about a package in the local database | |
||||
| yalocs | yaourt -Qs | Search for packages in the local database | |
||||
| yalst | yaourt -Qe | List installed packages including from AUR (tagged as "local") | |
||||
| yamir | yaourt -Syy | Force refresh of all package lists after updating mirrorlist | |
||||
| yaorph | yaourt -Qtd | Remove orphans using yaourt | |
||||
| yare | yaourt -R | Remove packages, keeping its settings and dependencies | |
||||
| yarem | yaourt -Rns | Remove packages, including its settings and unneeded dependencies | |
||||
| yarep | yaourt -Si | Display information about a package in the repositories | |
||||
| yareps | yaourt -Ss | Search for packages in the repositories | |
||||
| yaupd | yaourt -Sy && sudo abs && sudo aur | Update and refresh local package, ABS and AUR databases | |
||||
| yaupd | yaourt -Sy && sudo abs | Update and refresh the local package and ABS databases | |
||||
| yaupd | yaourt -Sy && sudo aur | Update and refresh the local package and AUR databases | |
||||
| yaupd | yaourt -Sy | Update and refresh the local package database | |
||||
| yaupg | yaourt -Syua | Sync with repositories before upgrading all packages (from AUR too) | |
||||
| yasu | yaourt -Syua --no-confirm | Same as `yaupg`, but without confirmation | |
||||
| upgrade | yaourt -Syu | Sync with repositories before upgrading packages | |
||||
|
||||
#### PACAUR |
||||
|
||||
| Alias | Command | Description | |
||||
|---------|------------------------------------|---------------------------------------------------------------------| |
||||
| pain | pacaur -S | Install packages from the repositories | |
||||
| pains | pacaur -U | Install a package from a local file | |
||||
| painsd | pacaur -S --asdeps | Install packages as dependencies of another package | |
||||
| paloc | pacaur -Qi | Display information about a package in the local database | |
||||
| palocs | pacaur -Qs | Search for packages in the local database | |
||||
| palst | pacaur -Qe | List installed packages including from AUR (tagged as "local") | |
||||
| pamir | pacaur -Syy | Force refresh of all package lists after updating mirrorlist | |
||||
| paorph | pacaur -Qtd | Remove orphans using pacaur | |
||||
| pare | pacaur -R | Remove packages, keeping its settings and dependencies | |
||||
| parem | pacaur -Rns | Remove packages, including its settings and unneeded dependencies | |
||||
| parep | pacaur -Si | Display information about a package in the repositories | |
||||
| pareps | pacaur -Ss | Search for packages in the repositories | |
||||
| paupd | pacaur -Sy && sudo abs && sudo aur | Update and refresh local package, ABS and AUR databases | |
||||
| paupd | pacaur -Sy && sudo abs | Update and refresh the local package and ABS databases | |
||||
| paupd | pacaur -Sy && sudo aur | Update and refresh the local package and AUR databases | |
||||
| paupd | pacaur -Sy | Update and refresh the local package database | |
||||
| paupg | pacaur -Syua | Sync with repositories before upgrading all packages (from AUR too) | |
||||
| pasu | pacaur -Syua --no-confirm | Same as `paupg`, but without confirmation | |
||||
| upgrade | pacaur -Syu | Sync with repositories before upgrading packages | |
||||
|
||||
#### PACMAN |
||||
|
||||
| Alias | Command | Description | |
||||
|--------------|-----------------------------------------|--------------------------------------------------------------| |
||||
| pacin | sudo pacman -S | Install packages from the repositories | |
||||
| pacins | sudo pacman -U | Install a package from a local file | |
||||
| pacinsd | sudo pacman -S --asdeps | Install packages as dependencies of another package | |
||||
| pacloc | pacman -Qi | Display information about a package in the local database | |
||||
| paclocs | pacman -Qs | Search for packages in the local database | |
||||
| paclsorphans | sudo pacman -Qdt | List all orphaned packages | |
||||
| pacmir | sudo pacman -Syy | Force refresh of all package lists after updating mirrorlist | |
||||
| pacre | sudo pacman -R | Remove packages, keeping its settings and dependencies | |
||||
| pacrem | sudo pacman -Rns | Remove packages, including its settings and dependencies | |
||||
| pacrep | pacman -Si | Display information about a package in the repositories | |
||||
| pacreps | pacman -Ss | Search for packages in the repositories | |
||||
| pacrmorphans | sudo pacman -Rs $(pacman -Qtdq) | Delete all orphaned packages | |
||||
| pacupd | sudo pacman -Sy && sudo abs && sudo aur | Update and refresh the local package, ABS and AUR databases | |
||||
| pacupd | sudo pacman -Sy && sudo abs | Update and refresh the local package and ABS databases | |
||||
| pacupd | sudo pacman -Sy && sudo aur | Update and refresh the local package and AUR databases | |
||||
| pacupd | sudo pacman -Sy | Update and refresh the local package database | |
||||
| pacupg | sudo pacman -Syu | Sync with repositories before upgrading packages | |
||||
| upgrade | sudo pacman -Syu | Sync with repositories before upgrading packages | |
||||
| pacfileupg | sudo pacman -Fy | Download fresh package databases from the server | |
||||
| pacfiles | pacman -Fs | Search package file names for matching strings | |
||||
| pacls | pacman -Ql | List files in a package | |
||||
| pacown | pacman -Qo | Show which package owns a file | |
||||
|
||||
| Function | Description | |
||||
|----------------|------------------------------------------------------| |
||||
| pacdisowned | List all disowned files in your system | |
||||
| paclist | List all installed packages with a short description | |
||||
| pacmanallkeys | Get all keys for developers and trusted users | |
||||
| pacmansignkeys | Locally trust all keys passed as parameters | |
||||
| pacweb | Open the website of an ArchLinux package | |
||||
|
||||
--- |
||||
|
||||
## Contributors |
||||
|
||||
- Benjamin Boudreau - dreurmail@gmail.com |
||||
- Celso Miranda - contacto@celsomiranda.net |
||||
- KhasMek - Boushh@gmail.com |
||||
- Martin Putniorz - mputniorz@gmail.com |
||||
- MatthR3D - matthr3d@gmail.com |
||||
- ornicar - thibault.duplessis@gmail.com |
||||
- Juraj Fiala - doctorjellyface@riseup.net |
||||
- Majora320 (Moses Miller) - Majora320@gmail.com |
||||
- Ybalrid (Arthur Brainville) - ybalrid@ybalrid.info |
@ -0,0 +1,219 @@
@@ -0,0 +1,219 @@
|
||||
if (( $+commands[trizen] )); then |
||||
alias trconf='trizen -C' |
||||
alias trupg='trizen -Syua' |
||||
alias trsu='trizen -Syua --noconfirm' |
||||
alias trin='trizen -S' |
||||
alias trins='trizen -U' |
||||
alias trre='trizen -R' |
||||
alias trrem='trizen -Rns' |
||||
alias trrep='trizen -Si' |
||||
alias trreps='trizen -Ss' |
||||
alias trloc='trizen -Qi' |
||||
alias trlocs='trizen -Qs' |
||||
alias trlst='trizen -Qe' |
||||
alias trorph='trizen -Qtd' |
||||
alias trinsd='trizen -S --asdeps' |
||||
alias trmir='trizen -Syy' |
||||
|
||||
|
||||
if (( $+commands[abs] && $+commands[aur] )); then |
||||
alias trupd='trizen -Sy && sudo abs && sudo aur' |
||||
elif (( $+commands[abs] )); then |
||||
alias trupd='trizen -Sy && sudo abs' |
||||
elif (( $+commands[aur] )); then |
||||
alias trupd='trizen -Sy && sudo aur' |
||||
else |
||||
alias trupd='trizen -Sy' |
||||
fi |
||||
fi |
||||
|
||||
if (( $+commands[yaourt] )); then |
||||
alias yaconf='yaourt -C' |
||||
alias yaupg='yaourt -Syua' |
||||
alias yasu='yaourt -Syua --noconfirm' |
||||
alias yain='yaourt -S' |
||||
alias yains='yaourt -U' |
||||
alias yare='yaourt -R' |
||||
alias yarem='yaourt -Rns' |
||||
alias yarep='yaourt -Si' |
||||
alias yareps='yaourt -Ss' |
||||
alias yaloc='yaourt -Qi' |
||||
alias yalocs='yaourt -Qs' |
||||
alias yalst='yaourt -Qe' |
||||
alias yaorph='yaourt -Qtd' |
||||
alias yainsd='yaourt -S --asdeps' |
||||
alias yamir='yaourt -Syy' |
||||
|
||||
|
||||
if (( $+commands[abs] && $+commands[aur] )); then |
||||
alias yaupd='yaourt -Sy && sudo abs && sudo aur' |
||||
elif (( $+commands[abs] )); then |
||||
alias yaupd='yaourt -Sy && sudo abs' |
||||
elif (( $+commands[aur] )); then |
||||
alias yaupd='yaourt -Sy && sudo aur' |
||||
else |
||||
alias yaupd='yaourt -Sy' |
||||
fi |
||||
fi |
||||
|
||||
if (( $+commands[yay] )); then |
||||
alias yaconf='yay -Pg' |
||||
alias yaupg='yay -Syu' |
||||
alias yasu='yay -Syu --noconfirm' |
||||
alias yain='yay -S' |
||||
alias yains='yay -U' |
||||
alias yare='yay -R' |
||||
alias yarem='yay -Rns' |
||||
alias yarep='yay -Si' |
||||
alias yareps='yay -Ss' |
||||
alias yaloc='yay -Qi' |
||||
alias yalocs='yay -Qs' |
||||
alias yalst='yay -Qe' |
||||
alias yaorph='yay -Qtd' |
||||
alias yainsd='yay -S --asdeps' |
||||
alias yamir='yay -Syy' |
||||
|
||||
|
||||
if (( $+commands[abs] && $+commands[aur] )); then |
||||
alias yaupd='yay -Sy && sudo abs && sudo aur' |
||||
elif (( $+commands[abs] )); then |
||||
alias yaupd='yay -Sy && sudo abs' |
||||
elif (( $+commands[aur] )); then |
||||
alias yaupd='yay -Sy && sudo aur' |
||||
else |
||||
alias yaupd='yay -Sy' |
||||
fi |
||||
fi |
||||
|
||||
if (( $+commands[pacaur] )); then |
||||
alias paupg='pacaur -Syu' |
||||
alias pasu='pacaur -Syu --noconfirm' |
||||
alias pain='pacaur -S' |
||||
alias pains='pacaur -U' |
||||
alias pare='pacaur -R' |
||||
alias parem='pacaur -Rns' |
||||
alias parep='pacaur -Si' |
||||
alias pareps='pacaur -Ss' |
||||
alias paloc='pacaur -Qi' |
||||
alias palocs='pacaur -Qs' |
||||
alias palst='pacaur -Qe' |
||||
alias paorph='pacaur -Qtd' |
||||
alias painsd='pacaur -S --asdeps' |
||||
alias pamir='pacaur -Syy' |
||||
|
||||
if (( $+commands[abs] && $+commands[aur] )); then |
||||
alias paupd='pacaur -Sy && sudo abs && sudo aur' |
||||
elif (( $+commands[abs] )); then |
||||
alias paupd='pacaur -Sy && sudo abs' |
||||
elif (( $+commands[aur] )); then |
||||
alias paupd='pacaur -Sy && sudo aur' |
||||
else |
||||
alias paupd='pacaur -Sy' |
||||
fi |
||||
fi |
||||
|
||||
if (( $+commands[trizen] )); then |
||||
function upgrade() { |
||||
trizen -Syu |
||||
} |
||||
elif (( $+commands[pacaur] )); then |
||||
function upgrade() { |
||||
pacaur -Syu |
||||
} |
||||
elif (( $+commands[yaourt] )); then |
||||
function upgrade() { |
||||
yaourt -Syu |
||||
} |
||||
elif (( $+commands[yay] )); then |
||||
function upgrade() { |
||||
yay -Syu |
||||
} |
||||
else |
||||
function upgrade() { |
||||
sudo pacman -Syu |
||||
} |
||||
fi |
||||
|
||||
# Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips |
||||
alias pacupg='sudo pacman -Syu' |
||||
alias pacin='sudo pacman -S' |
||||
alias pacins='sudo pacman -U' |
||||
alias pacre='sudo pacman -R' |
||||
alias pacrem='sudo pacman -Rns' |
||||
alias pacrep='pacman -Si' |
||||
alias pacreps='pacman -Ss' |
||||
alias pacloc='pacman -Qi' |
||||
alias paclocs='pacman -Qs' |
||||
alias pacinsd='sudo pacman -S --asdeps' |
||||
alias pacmir='sudo pacman -Syy' |
||||
alias paclsorphans='sudo pacman -Qdt' |
||||
alias pacrmorphans='sudo pacman -Rs $(pacman -Qtdq)' |
||||
alias pacfileupg='sudo pacman -Fy' |
||||
alias pacfiles='pacman -Fs' |
||||
alias pacls='pacman -Ql' |
||||
alias pacown='pacman -Qo' |
||||
|
||||
|
||||
if (( $+commands[abs] && $+commands[aur] )); then |
||||
alias pacupd='sudo pacman -Sy && sudo abs && sudo aur' |
||||
elif (( $+commands[abs] )); then |
||||
alias pacupd='sudo pacman -Sy && sudo abs' |
||||
elif (( $+commands[aur] )); then |
||||
alias pacupd='sudo pacman -Sy && sudo aur' |
||||
else |
||||
alias pacupd='sudo pacman -Sy' |
||||
fi |
||||
|
||||
function paclist() { |
||||
# Source: https://bbs.archlinux.org/viewtopic.php?id=93683 |
||||
LC_ALL=C pacman -Qei $(pacman -Qu | cut -d " " -f 1) | \ |
||||
awk 'BEGIN {FS=":"} /^Name/{printf("\033[1;36m%s\033[1;37m", $2)} /^Description/{print $2}' |
||||
} |
||||
|
||||
function pacdisowned() { |
||||
emulate -L zsh |
||||
|
||||
tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$ |
||||
db=$tmp/db |
||||
fs=$tmp/fs |
||||
|
||||
mkdir "$tmp" |
||||
trap 'rm -rf "$tmp"' EXIT |
||||
|
||||
pacman -Qlq | sort -u > "$db" |
||||
|
||||
find /bin /etc /lib /sbin /usr ! -name lost+found \ |
||||
\( -type d -printf '%p/\n' -o -print \) | sort > "$fs" |
||||
|
||||
comm -23 "$fs" "$db" |
||||
} |
||||
|
||||
function pacmanallkeys() { |
||||
emulate -L zsh |
||||
curl -s https://www.archlinux.org/people/{developers,trustedusers}/ | \ |
||||
awk -F\" '(/pgp.mit.edu/) { sub(/.*search=0x/,""); print $1}' | \ |
||||
xargs sudo pacman-key --recv-keys |
||||
} |
||||
|
||||
function pacmansignkeys() { |
||||
emulate -L zsh |
||||
for key in $*; do |
||||
sudo pacman-key --recv-keys $key |
||||
sudo pacman-key --lsign-key $key |
||||
printf 'trust\n3\n' | sudo gpg --homedir /etc/pacman.d/gnupg \ |
||||
--no-permission-warning --command-fd 0 --edit-key $key |
||||
done |
||||
} |
||||
|
||||
if (( $+commands[xdg-open] )); then |
||||
function pacweb() { |
||||
pkg="$1" |
||||
infos="$(pacman -Si "$pkg")" |
||||
if [[ -z "$infos" ]]; then |
||||
return |
||||
fi |
||||
repo="$(grep '^Repo' <<< "$infos" | grep -oP '[^ ]+$')" |
||||
arch="$(grep '^Arch' <<< "$infos" | grep -oP '[^ ]+$')" |
||||
xdg-open "https://www.archlinux.org/packages/$repo/$arch/$pkg/" &>/dev/null |
||||
} |
||||
fi |
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
## asdf |
||||
|
||||
**Maintainer:** [@RobLoach](https://github.com/RobLoach) |
||||
|
||||
Adds integration with [asdf](https://github.com/asdf-vm/asdf), the extendable version manager, with support for Ruby, Node.js, Elixir, Erlang and more. |
||||
|
||||
### Installation |
||||
|
||||
1. Enable the plugin by adding it to your `plugins` definition in `~/.zshrc`. |
||||
|
||||
``` |
||||
plugins=(asdf) |
||||
``` |
||||
|
||||
2. [Install asdf](https://github.com/asdf-vm/asdf#setup) by running the following: |
||||
``` |
||||
git clone https://github.com/asdf-vm/asdf.git ~/.asdf |
||||
``` |
||||
|
||||
### Usage |
||||
|
||||
See the [asdf usage documentation](https://github.com/asdf-vm/asdf#usage) for information on how to use asdf: |
||||
|
||||
``` |
||||
asdf plugin-add nodejs git@github.com:asdf-vm/asdf-nodejs.git |
||||
asdf install nodejs 5.9.1 |
||||
``` |
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
# Find where asdf should be installed |
||||
ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}" |
||||
ASDF_COMPLETIONS="$ASDF_DIR/completions" |
||||
|
||||
# If not found, check for Homebrew package |
||||
if [[ ! -f "$ASDF_DIR/asdf.sh" ]] && (( $+commands[brew] )); then |
||||
ASDF_DIR="$(brew --prefix asdf)" |
||||
ASDF_COMPLETIONS="$ASDF_DIR/etc/bash_completion.d" |
||||
fi |
||||
|
||||
# Load command |
||||
if [[ -f "$ASDF_DIR/asdf.sh" ]]; then |
||||
. "$ASDF_DIR/asdf.sh" |
||||
|
||||
# Load completions |
||||
if [[ -f "$ASDF_COMPLETIONS/asdf.bash" ]]; then |
||||
. "$ASDF_COMPLETIONS/asdf.bash" |
||||
fi |
||||
fi |
@ -0,0 +1,43 @@
@@ -0,0 +1,43 @@
|
||||
# Activates autoenv or reports its failure |
||||
() { |
||||
if ! type autoenv_init >/dev/null; then |
||||
for d (~/.autoenv ~/.local/bin /usr/local/opt/autoenv /usr/local/bin); do |
||||
if [[ -e $d/activate.sh ]]; then |
||||
autoenv_dir=$d |
||||
break |
||||
fi |
||||
done |
||||
if [[ -z $autoenv_dir ]]; then |
||||
cat <<END >&2 |
||||
-------- AUTOENV --------- |
||||
Could not locate autoenv installation. |
||||
Please check if autoenv is correctly installed. |
||||
In the meantime the autoenv plugin is DISABLED. |
||||
-------------------------- |
||||
END |
||||
return 1 |
||||
fi |
||||
source $autoenv_dir/activate.sh |
||||
fi |
||||
} |
||||
[[ $? != 0 ]] && return $? |
||||
|
||||
# The use_env call below is a reusable command to activate/create a new Python |
||||
# virtualenv, requiring only a single declarative line of code in your .env files. |
||||
# It only performs an action if the requested virtualenv is not the current one. |
||||
|
||||
use_env() { |
||||
typeset venv |
||||
venv="$1" |
||||
if [[ "${VIRTUAL_ENV:t}" != "$venv" ]]; then |
||||
if workon | grep -q "$venv"; then |
||||
workon "$venv" |
||||
else |
||||
echo -n "Create virtualenv $venv now? (Yn) " |
||||
read answer |
||||
if [[ "$answer" == "Y" ]]; then |
||||
mkvirtualenv "$venv" |
||||
fi |
||||
fi |
||||
fi |
||||
} |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
# Autojump plugin |
||||
|
||||
This plugin loads the [autojump navigation tool](https://github.com/wting/autojump). |
||||
|
||||
To use it, add `autojump` to the plugins array in your zshrc file: |
||||
|
||||
```zsh |
||||
plugins=(... autojump) |
||||
``` |
||||
|
||||
More info on the usage: https://github.com/wting/autojump |
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
if [ $commands[autojump] ]; then # check if autojump is installed |
||||
if [ -f $HOME/.autojump/etc/profile.d/autojump.zsh ]; then # manual user-local installation |
||||
. $HOME/.autojump/etc/profile.d/autojump.zsh |
||||
elif [ -f $HOME/.autojump/share/autojump/autojump.zsh ]; then # another manual user-local installation |
||||
. $HOME/.autojump/share/autojump/autojump.zsh |
||||
elif [ -f $HOME/.nix-profile/etc/profile.d/autojump.zsh ]; then # nix installation |
||||
. $HOME/.nix-profile/etc/profile.d/autojump.zsh |
||||
elif [ -f /run/current-system/sw/share/autojump/autojump.zsh ]; then # nixos installation |
||||
. /run/current-system/sw/share/autojump/autojump.zsh |
||||
elif [ -f /usr/share/autojump/autojump.zsh ]; then # debian and ubuntu package |
||||
. /usr/share/autojump/autojump.zsh |
||||
elif [ -f /etc/profile.d/autojump.zsh ]; then # manual installation |
||||
. /etc/profile.d/autojump.zsh |
||||
elif [ -f /etc/profile.d/autojump.sh ]; then # gentoo installation |
||||
. /etc/profile.d/autojump.sh |
||||
elif [ -f /usr/local/share/autojump/autojump.zsh ]; then # freebsd installation |
||||
. /usr/local/share/autojump/autojump.zsh |
||||
elif [ -f /opt/local/etc/profile.d/autojump.sh ]; then # mac os x with ports |
||||
. /opt/local/etc/profile.d/autojump.sh |
||||
elif [ $commands[brew] -a -f `brew --prefix`/etc/autojump.sh ]; then # mac os x with brew |
||||
. `brew --prefix`/etc/autojump.sh |
||||
fi |
||||
fi |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
# autopep8 plugin |
||||
|
||||
This plugin adds completion for [autopep8](https://pypi.org/project/autopep8/), a tool that automatically formats Python code to conform to the [PEP 8](http://www.python.org/dev/peps/pep-0008/) style guide. |
||||
|
||||
To use it, add autopep8 to the plugins array of your zshrc file: |
||||
``` |
||||
plugins=(... autopep8) |
||||
``` |
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
#compdef autopep8 |
||||
# |
||||
# this is zsh completion function file. |
||||
# generated by genzshcomp(ver: 0.5.1) |
||||
# |
||||
|
||||
typeset -A opt_args |
||||
local context state line |
||||
|
||||
_arguments -s -S \ |
||||
"--help[show this help message and exit]:" \ |
||||
"-h[show this help message and exit]:" \ |
||||
"--version[show program's version number and exit]:" \ |
||||
"--verbose[print verbose messages; multiple -v result in more verbose messages]" \ |
||||
"-v[print verbose messages; multiple -v result in more verbose messages]" \ |
||||
"--diff[print the diff for the fixed source]" \ |
||||
"-d[print the diff for the fixed source]" \ |
||||
"--in-place[make changes to files in place]" \ |
||||
"-i[make changes to files in place]" \ |
||||
"--recursive[run recursively; must be used with --in-place or --diff]" \ |
||||
"-r[run recursively; must be used with --in-place or --diff]" \ |
||||
"--jobs[number of parallel jobs; match CPU count if value is less than 1]::n number of parallel jobs; match CPU count if value is:_files" \ |
||||
"-j[number of parallel jobs; match CPU count if value is less than 1]::n number of parallel jobs; match CPU count if value is:_files" \ |
||||
"--pep8-passes[maximum number of additional pep8 passes (default: 100)]::n:_files" \ |
||||
"-p[maximum number of additional pep8 passes (default: 100)]::n:_files" \ |
||||
"-a[-a result in more aggressive changes]::result:_files" \ |
||||
"--exclude[exclude files/directories that match these comma- separated globs]::globs:_files" \ |
||||
"--list-fixes[list codes for fixes; used by --ignore and --select]" \ |
||||
"--ignore[do not fix these errors/warnings (default E226,E24)]::errors:_files" \ |
||||
"--select[fix only these errors/warnings (e.g. E4,W)]::errors:_files" \ |
||||
"--max-line-length[set maximum allowed line length (default: 79)]::n:_files" \ |
||||
"*::args:_files" |
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
# aws |
||||
|
||||
This plugin provides completion support for [awscli](https://docs.aws.amazon.com/cli/latest/reference/index.html) |
||||
and a few utilities to manage AWS profiles: a function to change profiles with autocompletion support |
||||
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. |
||||
|
||||
```zsh |
||||
plugins=(... aws) |
||||
``` |
||||
|
||||
## Plugin commands |
||||
|
||||
* `asp <profile>`: Sets `AWS_PROFILE` and `AWS_DEFAULT_PROFILE` (legacy) to `<profile>`. |
||||
It also adds it to your RPROMPT. |
||||
|
||||
* `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. |
@ -0,0 +1,49 @@
@@ -0,0 +1,49 @@
|
||||
_homebrew-installed() { |
||||
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 |
||||
} |
||||
|
||||
function asp { |
||||
local rprompt=${RPROMPT/<aws:$(agp)>/} |
||||
|
||||
export AWS_DEFAULT_PROFILE=$1 |
||||
export AWS_PROFILE=$1 |
||||
|
||||
export RPROMPT="<aws:$AWS_PROFILE>$rprompt" |
||||
} |
||||
|
||||
function aws_profiles { |
||||
reply=($(grep '\[profile' "${AWS_CONFIG_FILE:-$HOME/.aws/config}"|sed -e 's/.*profile \([a-zA-Z0-9_\.-]*\).*/\1/')) |
||||
} |
||||
compctl -K aws_profiles asp |
||||
|
||||
if which aws_zsh_completer.sh &>/dev/null; then |
||||
_aws_zsh_completer_path=$(which aws_zsh_completer.sh 2>/dev/null) |
||||
elif _homebrew-installed && _awscli-homebrew-installed; then |
||||
_aws_zsh_completer_path=$_brew_prefix/libexec/bin/aws_zsh_completer.sh |
||||
fi |
||||
|
||||
[ -n "$_aws_zsh_completer_path" ] && [ -x $_aws_zsh_completer_path ] && source $_aws_zsh_completer_path |
||||
unset _aws_zsh_completer_path |
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
# Battery Plugin |
||||
|
||||
This plugin adds some functions you can use to display battery information in your custom theme. |
||||
|
||||
To use, add `battery` to the list of plugins in your `.zshrc` file: |
||||
|
||||
`plugins=(... battery)` |
||||
|
||||
Then, add the `battery_pct_prompt` function to your custom theme. For example: |
||||
|
||||
``` |
||||
RPROMPT='$(battery_pct_prompt)' |
||||
``` |
@ -0,0 +1,160 @@
@@ -0,0 +1,160 @@
|
||||
########################################### |
||||
# Battery plugin for oh-my-zsh # |
||||
# Original Author: Peter hoeg (peterhoeg) # |
||||
# Email: peter@speartail.com # |
||||
########################################### |
||||
# Author: Sean Jones (neuralsandwich) # |
||||
# Email: neuralsandwich@gmail.com # |
||||
# Modified to add support for Apple Mac # |
||||
########################################### |
||||
|
||||
if [[ "$OSTYPE" = darwin* ]] ; then |
||||
|
||||
function battery_pct() { |
||||
local smart_battery_status="$(ioreg -rc "AppleSmartBattery")" |
||||
typeset -F maxcapacity=$(echo $smart_battery_status | grep '^.*"MaxCapacity"\ =\ ' | sed -e 's/^.*"MaxCapacity"\ =\ //') |
||||
typeset -F currentcapacity=$(echo $smart_battery_status | grep '^.*"CurrentCapacity"\ =\ ' | sed -e 's/^.*CurrentCapacity"\ =\ //') |
||||
integer i=$(((currentcapacity/maxcapacity) * 100)) |
||||
echo $i |
||||
} |
||||
|
||||
function plugged_in() { |
||||
[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ Yes') -eq 1 ] |
||||
} |
||||
|
||||
function battery_pct_remaining() { |
||||
if plugged_in ; then |
||||
echo "External Power" |
||||
else |
||||
battery_pct |
||||
fi |
||||
} |
||||
|
||||
function battery_time_remaining() { |
||||
local smart_battery_status="$(ioreg -rc "AppleSmartBattery")" |
||||
if [[ $(echo $smart_battery_status | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then |
||||
timeremaining=$(echo $smart_battery_status | grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //') |
||||
if [ $timeremaining -gt 720 ] ; then |
||||
echo "::" |
||||
else |
||||
echo "~$((timeremaining / 60)):$((timeremaining % 60))" |
||||
fi |
||||
else |
||||
echo "∞" |
||||
fi |
||||
} |
||||
|
||||
function battery_pct_prompt () { |
||||
if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then |
||||
b=$(battery_pct_remaining) |
||||
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 |
||||
} |
||||
|
||||
function battery_is_charging() { |
||||
[[ $(ioreg -rc "AppleSmartBattery"| grep '^.*"IsCharging"\ =\ ' | sed -e 's/^.*"IsCharging"\ =\ //') == "Yes" ]] |
||||
} |
||||
|
||||
elif [[ "$OSTYPE" = linux* ]] ; then |
||||
|
||||
function battery_is_charging() { |
||||
! [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] |
||||
} |
||||
|
||||
function battery_pct() { |
||||
if (( $+commands[acpi] )) ; then |
||||
echo "$(acpi 2>/dev/null | cut -f2 -d ',' | tr -cd '[:digit:]')" |
||||
fi |
||||
} |
||||
|
||||
function battery_pct_remaining() { |
||||
if [ ! $(battery_is_charging) ] ; then |
||||
battery_pct |
||||
else |
||||
echo "External Power" |
||||
fi |
||||
} |
||||
|
||||
function battery_time_remaining() { |
||||
if [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then |
||||
echo $(acpi 2>/dev/null | cut -f3 -d ',') |
||||
fi |
||||
} |
||||
|
||||
function battery_pct_prompt() { |
||||
b=$(battery_pct_remaining) |
||||
if [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; 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 |
||||
} |
||||
|
||||
else |
||||
# Empty functions so we don't cause errors in prompts |
||||
function battery_pct_remaining() { |
||||
} |
||||
|
||||
function battery_time_remaining() { |
||||
} |
||||
|
||||
function battery_pct_prompt() { |
||||
} |
||||
fi |
||||
|
||||
function battery_level_gauge() { |
||||
local gauge_slots=${BATTERY_GAUGE_SLOTS:-10}; |
||||
local green_threshold=${BATTERY_GREEN_THRESHOLD:-6}; |
||||
local yellow_threshold=${BATTERY_YELLOW_THRESHOLD:-4}; |
||||
local color_green=${BATTERY_COLOR_GREEN:-%F{green}}; |
||||
local color_yellow=${BATTERY_COLOR_YELLOW:-%F{yellow}}; |
||||
local color_red=${BATTERY_COLOR_RED:-%F{red}}; |
||||
local color_reset=${BATTERY_COLOR_RESET:-%{%f%k%b%}}; |
||||
local battery_prefix=${BATTERY_GAUGE_PREFIX:-'['}; |
||||
local battery_suffix=${BATTERY_GAUGE_SUFFIX:-']'}; |
||||
local filled_symbol=${BATTERY_GAUGE_FILLED_SYMBOL:-'▶'}; |
||||
local empty_symbol=${BATTERY_GAUGE_EMPTY_SYMBOL:-'▷'}; |
||||
local charging_color=${BATTERY_CHARGING_COLOR:-$color_yellow}; |
||||
local charging_symbol=${BATTERY_CHARGING_SYMBOL:-'⚡'}; |
||||
|
||||
local battery_remaining_percentage=$(battery_pct); |
||||
|
||||
if [[ $battery_remaining_percentage =~ [0-9]+ ]]; then |
||||
local filled=$(((( $battery_remaining_percentage + $gauge_slots - 1) / $gauge_slots))); |
||||
local empty=$(($gauge_slots - $filled)); |
||||
|
||||
if [[ $filled -gt $green_threshold ]]; then local gauge_color=$color_green; |
||||
elif [[ $filled -gt $yellow_threshold ]]; then local gauge_color=$color_yellow; |
||||
else local gauge_color=$color_red; |
||||
fi |
||||
else |
||||
local filled=$gauge_slots; |
||||
local empty=0; |
||||
filled_symbol=${BATTERY_UNKNOWN_SYMBOL:-'.'}; |
||||
fi |
||||
|
||||
local charging=' ' && battery_is_charging && charging=$charging_symbol; |
||||
|
||||
printf ${charging_color//\%/\%\%}$charging${color_reset//\%/\%\%}${battery_prefix//\%/\%\%}${gauge_color//\%/\%\%} |
||||
printf ${filled_symbol//\%/\%\%}'%.0s' {1..$filled} |
||||
[[ $filled -lt $gauge_slots ]] && printf ${empty_symbol//\%/\%\%}'%.0s' {1..$empty} |
||||
printf ${color_reset//\%/\%\%}${battery_suffix//\%/\%\%}${color_reset//\%/\%\%} |
||||
} |
||||
|
||||
|
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
## bbedit |
||||
|
||||
Plugin for BBEdit, an HTML and text editor for Mac OS X |
||||
|
||||
### Requirements |
||||
|
||||
* [BBEdit](https://www.barebones.com/products/bbedit/) |
||||
* [BBEdit Command-Line Tools](https://www.barebones.com/support/bbedit/cmd-line-tools.html) |
||||
|
||||
### Usage |
||||
|
||||
* If the `bb` command is called without an argument, launch BBEdit |
||||
|
||||
* If `bb` is passed a directory, cd to it and open it in BBEdit |
||||
|
||||
* If `bb` is passed a file, open it in BBEdit |
||||
|
||||
* If `bbpb` create a new BBEdit document with the contents of the clipboard |
||||
|
||||
* If `bbd` alias for BBEdit diff tool |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
alias bbpb='pbpaste | bbedit --clean --view-top' |
||||
|
||||
alias bbd=bbdiff |
||||
|
||||
# |
||||
# If the bb command is called without an argument, launch BBEdit |
||||
# If bb is passed a directory, cd to it and open it in BBEdit |
||||
# If bb is passed a file, open it in BBEdit |
||||
# |
||||
function bb() { |
||||
if [[ -z "$1" ]] |
||||
then |
||||
bbedit --launch |
||||
else |
||||
bbedit "$1" |
||||
if [[ -d "$1" ]] |
||||
then |
||||
cd "$1" |
||||
fi |
||||
fi |
||||
} |
@ -0,0 +1,54 @@
@@ -0,0 +1,54 @@
|
||||
# bgnotify zsh plugin |
||||
|
||||
cross-platform background notifications for long running commands! Supports OSX and Ubuntu linux. |
||||
|
||||
Standalone homepage: [t413/zsh-background-notify](https://github.com/t413/zsh-background-notify) |
||||
|
||||
---------------------------------- |
||||
|
||||
## How to use! |
||||
|
||||
Just add bgnotify to your plugins list in your `.zshrc` |
||||
|
||||
- On OS X you'll need [terminal-notifier](https://github.com/alloy/terminal-notifier) |
||||
* `brew install terminal-notifier` (or `gem install terminal-notifier`) |
||||
- On ubuntu you're already all set! |
||||
- On windows you can use [notifu](https://www.paralint.com/projects/notifu/) or the Cygwin Ports libnotify package |
||||
|
||||
|
||||
## Screenshots |
||||
|
||||
**Linux** |
||||
|
||||
![screenshot from 2014-11-07 15 58 36](https://cloud.githubusercontent.com/assets/326829/4962187/256b465c-66da-11e4-927d-cc2fc105e31f.png) |
||||
|
||||
**OS X** |
||||
|
||||
![screenshot 2014-11-08 14 15 12](https://cloud.githubusercontent.com/assets/326829/4965780/19fa3eac-6795-11e4-8ed6-0355711123a9.png) |
||||
|
||||
**Windows** |
||||
|
||||
![screenshot from 2014-11-07 15 55 00](https://cloud.githubusercontent.com/assets/326829/4962159/a2625ca0-66d9-11e4-9e91-c5834913190e.png) |
||||
|
||||
|
||||
## Configuration |
||||
|
||||
One can configure a few things: |
||||
|
||||
- `bgnotify_threshold` sets the notification threshold time (default 6 seconds) |
||||
- `function bgnotify_formatted` lets you change the notification |
||||
|
||||
Use these by adding a function definition before the your call to source. Example: |
||||
|
||||
~~~ sh |
||||
bgnotify_threshold=4 ## set your own notification threshold |
||||
|
||||
function bgnotify_formatted { |
||||
## $1=exit_status, $2=command, $3=elapsed_time |
||||
[ $1 -eq 0 ] && title="Holy Smokes Batman!" || title="Holy Graf Zeppelin!" |
||||
bgnotify "$title -- after $3 s" "$2"; |
||||
} |
||||
|
||||
plugins=(git bgnotify) ## add to plugins list |
||||
source $ZSH/oh-my-zsh.sh ## existing source call |
||||
~~~ |
@ -0,0 +1,77 @@
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env zsh |
||||
|
||||
## setup ## |
||||
|
||||
[[ -o interactive ]] || return #interactive only! |
||||
zmodload zsh/datetime || { print "can't load zsh/datetime"; return } # faster than date() |
||||
autoload -Uz add-zsh-hook || { print "can't add zsh hook!"; return } |
||||
|
||||
(( ${+bgnotify_threshold} )) || bgnotify_threshold=5 #default 10 seconds |
||||
|
||||
|
||||
## definitions ## |
||||
|
||||
if ! (type bgnotify_formatted | grep -q 'function'); then ## allow custom function override |
||||
function bgnotify_formatted { ## args: (exit_status, command, elapsed_seconds) |
||||
elapsed="$(( $3 % 60 ))s" |
||||
(( $3 >= 60 )) && elapsed="$((( $3 % 3600) / 60 ))m $elapsed" |
||||
(( $3 >= 3600 )) && elapsed="$(( $3 / 3600 ))h $elapsed" |
||||
[ $1 -eq 0 ] && bgnotify "#win (took $elapsed)" "$2" || bgnotify "#fail (took $elapsed)" "$2" |
||||
} |
||||
fi |
||||
|
||||
currentWindowId () { |
||||
if hash osascript 2>/dev/null; then #osx |
||||
osascript -e 'tell application (path to frontmost application as text) to id of front window' 2&> /dev/null || echo "0" |
||||
elif (hash notify-send 2>/dev/null || hash kdialog 2>/dev/null); then #ubuntu! |
||||
xprop -root 2> /dev/null | awk '/NET_ACTIVE_WINDOW/{print $5;exit} END{exit !$5}' || echo "0" |
||||
else |
||||
echo $EPOCHSECONDS #fallback for windows |
||||
fi |
||||
} |
||||
|
||||
bgnotify () { ## args: (title, subtitle) |
||||
if hash terminal-notifier 2>/dev/null; then #osx |
||||
[[ "$TERM_PROGRAM" == 'iTerm.app' ]] && term_id='com.googlecode.iterm2'; |
||||
[[ "$TERM_PROGRAM" == 'Apple_Terminal' ]] && term_id='com.apple.terminal'; |
||||
## now call terminal-notifier, (hopefully with $term_id!) |
||||
[ -z "$term_id" ] && terminal-notifier -message "$2" -title "$1" >/dev/null || |
||||
terminal-notifier -message "$2" -title "$1" -activate "$term_id" -sender "$term_id" >/dev/null |
||||
elif hash growlnotify 2>/dev/null; then #osx growl |
||||
growlnotify -m "$1" "$2" |
||||
elif hash notify-send 2>/dev/null; then #ubuntu gnome! |
||||
notify-send "$1" "$2" |
||||
elif hash kdialog 2>/dev/null; then #ubuntu kde! |
||||
kdialog --title "$1" --passivepopup "$2" 5 |
||||
elif hash notifu 2>/dev/null; then #cygwyn support! |
||||
notifu /m "$2" /p "$1" |
||||
fi |
||||
} |
||||
|
||||
|
||||
## Zsh hooks ## |
||||
|
||||
bgnotify_begin() { |
||||
bgnotify_timestamp=$EPOCHSECONDS |
||||
bgnotify_lastcmd="$1" |
||||
bgnotify_windowid=$(currentWindowId) |
||||
} |
||||
|
||||
bgnotify_end() { |
||||
didexit=$? |
||||
elapsed=$(( EPOCHSECONDS - bgnotify_timestamp )) |
||||
past_threshold=$(( elapsed >= bgnotify_threshold )) |
||||
if (( bgnotify_timestamp > 0 )) && (( past_threshold )); then |
||||
if [ $(currentWindowId) != "$bgnotify_windowid" ]; then |
||||
print -n "\a" |
||||
bgnotify_formatted "$didexit" "$bgnotify_lastcmd" "$elapsed" |
||||
fi |
||||
fi |
||||
bgnotify_timestamp=0 #reset it to 0! |
||||
} |
||||
|
||||
## only enable if a local (non-ssh) connection |
||||
if [ -z "$SSH_CLIENT" ] && [ -z "$SSH_TTY" ]; then |
||||
add-zsh-hook preexec bgnotify_begin |
||||
add-zsh-hook precmd bgnotify_end |
||||
fi |
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
## Boot2docker autocomplete plugin |
||||
|
||||
- Adds autocomplete options for all boot2docker commands. |
||||
|
||||
|
||||
Maintainer : Manfred Touron ([@moul](https://github.com/moul)) |
@ -0,0 +1,73 @@
@@ -0,0 +1,73 @@
|
||||
#compdef boot2docker |
||||
|
||||
# Boot2docker autocompletion for oh-my-zsh |
||||
# Requires: Boot2docker installed |
||||
# Author: Manfred Touron (@moul) |
||||
|
||||
local -a _1st_arguments |
||||
_1st_arguments=( |
||||
"init":"Create a new Boot2Docker VM." |
||||
"up":"Start VM from any states." |
||||
"start":"Start VM from any states." |
||||
"boot":"Start VM from any states." |
||||
"ssh":"[ssh-command] Login to VM via SSH." |
||||
"save":"Suspend VM and save state to disk." |
||||
"suspend":"Suspend VM and save state to disk." |
||||
"down":"Gracefully shutdown the VM." |
||||
"stop":"Gracefully shutdown the VM." |
||||
"halt":"Gracefully shutdown the VM." |
||||
"restart":"Gracefully reboot the VM." |
||||
"poweroff":"Forcefully power off the VM (may corrupt disk image)." |
||||
"reset":"Forcefully power cycle the VM (may corrupt disk image)." |
||||
"delete":"Delete Boot2Docker VM and its disk image." |
||||
"destroy":"Delete Boot2Docker VM and its disk image." |
||||
"config":"Show selected profile file settings." |
||||
"cfg":"Show selected profile file settings." |
||||
"info":"Display detailed information of VM." |
||||
"ip":"Display the IP address of the VM's Host-only network." |
||||
"socket":"Display the DOCKER_HOST socket to connect to." |
||||
"shellinit":"Display the shell command to set up the Docker client." |
||||
"status":"Display current state of VM." |
||||
"download":"Download Boot2Docker ISO image." |
||||
"upgrade":"Upgrade the Boot2Docker ISO image (restart if running)." |
||||
"version":"Display version information." |
||||
) |
||||
|
||||
_arguments \ |
||||
'(--basevmdk)--basevmdk[Path to VMDK to use as base for persistent partition]' \ |
||||
'(--cpus)'{-c,--cpus}'[number of CPUs for boot2docker.]' \ |
||||
'(--clobber)--clobber[overwrite Docker client binary on boot2docker upgrade]' \ |
||||
'(--dhcp)--dhcp[enable VirtualBox host-only network DHCP.]' \ |
||||
'(--dhcpip)--dhcpip[VirtualBox host-only network DHCP server address.]' \ |
||||
'(-s --disksize)'{-s,--disksize}'[boot2docker disk image size (in MB).]' \ |
||||
'(--dockerport)--dockerport[host Docker port (forward to port 2376 in VM). (deprecated - use with care)]' \ |
||||
'(--driver)--driver[hypervisor driver.]' \ |
||||
'(--force-upgrade-download)--force-upgrade-download[always download on boot2docker upgrade, never skip.]' \ |
||||
'(--hostip)--hostip[VirtualBox host-only network IP address.]' \ |
||||
'(--iso)--iso[path to boot2docker ISO image.]' \ |
||||
'(--iso-url)--iso-url[/api.github.com/repos/boot2docker/boot2docker/releases": source URL to provision the boot2docker ISO image.]' \ |
||||
'(--lowerip)--lowerip[VirtualBox host-only network DHCP lower bound.]' \ |
||||
'(--memory)'{-m,--memory}'[virtual machine memory size (in MB).]' \ |
||||
'(--netmask)--netmask[VirtualBox host-only network mask.]' \ |
||||
'(--no-dummy)--no-dummy[Example parameter for the dummy driver.]' \ |
||||
'(--retries)--retries[number of port knocking retries during 'start']' \ |
||||
'(--serial)--serial[try serial console to get IP address (experimental)]' \ |
||||
'(--serialfile)--serialfile[path to the serial socket/pipe.]' \ |
||||
'(--ssh)--ssh[path to SSH client utility.]' \ |
||||
'(--ssh-keygen)--ssh-keygen[path to ssh-keygen utility.]' \ |
||||
'(--sshkey)--sshkey[path to SSH key to use.]' \ |
||||
'(--sshport)--sshport[host SSH port (forward to port 22 in VM).]' \ |
||||
'(--upperip)--upperip[VirtualBox host-only network DHCP upper bound.]' \ |
||||
'(--vbm)--vbm[path to VirtualBox management utility.]' \ |
||||
'(--vbox-share)--vbox-share[(defaults to "/Users=Users" if no shares are specified; use "disable" to explicitly prevent any shares from being created) List of directories to share during "up|start|boot" via VirtualBox Guest Additions, with optional labels]' \ |
||||
'(--verbose)'{-v,--verbose}'[display verbose command invocations.]' \ |
||||
'(--vm)--vm[virtual machine name.]' \ |
||||
'(--waittime)--waittime[Time in milliseconds to wait between port knocking retries during 'start']' \ |
||||
'*:: :->subcmds' && return 0 |
||||
|
||||
#_arguments '*:: :->command' |
||||
|
||||
if (( CURRENT == 1 )); then |
||||
_describe -t commands "boot2docker command" _1st_arguments |
||||
return |
||||
fi |
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
# Bower plugin |
||||
|
||||
This plugin adds completion for [Bower](https://bower.io/) and a few useful aliases for common Bower commands. |
||||
|
||||
To use it, add `bower` to the plugins array in your zshrc file: |
||||
|
||||
``` |
||||
plugins=(... bower) |
||||
``` |
||||
|
||||
## Aliases |
||||
|
||||
| Alias | Command | Description | |
||||
|-------|-----------------|--------------------------------------------------------| |
||||
| bi | `bower install` | Installs the project dependencies listed in bower.json | |
||||
| bl | `bower list` | List local packages and possible updates | |
||||
| bs | `bower search` | Finds all packages or a specific package. | |
||||
|
@ -0,0 +1,58 @@
@@ -0,0 +1,58 @@
|
||||
|
||||
|
||||
# Credits to npm's awesome completion utility. |
||||
# |
||||
# Bower completion script, based on npm completion script. |
||||
|
||||
###-begin-bower-completion-### |
||||
# |
||||
# Installation: bower completion >> ~/.bashrc (or ~/.zshrc) |
||||
# Or, maybe: bower completion > /usr/local/etc/bash_completion.d/bower |
||||
# |
||||
|
||||
COMP_WORDBREAKS=${COMP_WORDBREAKS/=/} |
||||
COMP_WORDBREAKS=${COMP_WORDBREAKS/@/} |
||||
export COMP_WORDBREAKS |
||||
|
||||
if type complete &>/dev/null; then |
||||
_bower_completion () { |
||||
local si="$IFS" |
||||
IFS=$'\n' COMPREPLY=($(COMP_CWORD="$COMP_CWORD" \ |
||||
COMP_LINE="$COMP_LINE" \ |
||||
COMP_POINT="$COMP_POINT" \ |
||||
bower completion -- "${COMP_WORDS[@]}" \ |
||||
2>/dev/null)) || return $? |
||||
IFS="$si" |
||||
} |
||||
complete -F _bower_completion bower |
||||
elif type compdef &>/dev/null; then |
||||
_bower_completion() { |
||||
si=$IFS |
||||
compadd -- $(COMP_CWORD=$((CURRENT-1)) \ |
||||
COMP_LINE=$BUFFER \ |
||||
COMP_POINT=0 \ |
||||
bower completion -- "${words[@]}" \ |
||||
2>/dev/null) |
||||
IFS=$si |
||||
} |
||||
compdef _bower_completion bower |
||||
elif type compctl &>/dev/null; then |
||||
_bower_completion () { |
||||
local cword line point words si |
||||
read -Ac words |
||||
read -cn cword |
||||
let cword-=1 |
||||
read -l line |
||||
read -ln point |
||||
si="$IFS" |
||||
IFS=$'\n' reply=($(COMP_CWORD="$cword" \ |
||||
COMP_LINE="$line" \ |
||||
COMP_POINT="$point" \ |
||||
bower completion -- "${words[@]}" \ |
||||
2>/dev/null)) || return $? |
||||
IFS="$si" |
||||
} |
||||
compctl -K _bower_completion bower |
||||
fi |
||||
###-end-bower-completion-### |
||||
|
@ -0,0 +1,82 @@
@@ -0,0 +1,82 @@
|
||||
alias bi="bower install" |
||||
alias bl="bower list" |
||||
alias bs="bower search" |
||||
|
||||
_bower_installed_packages () { |
||||
bower_package_list=$(bower ls --no-color 2>/dev/null| awk 'NR>3{print p}{p=$0}'| cut -d ' ' -f 2|sed 's/#.*//') |
||||
} |
||||
_bower () |
||||
{ |
||||
local -a _1st_arguments _no_color _dopts _save_dev _force_lastest _production |
||||
local expl |
||||
typeset -A opt_args |
||||
|
||||
_no_color=('--no-color[Do not print colors (available in all commands)]') |
||||
|
||||
_dopts=( |
||||
'(--save)--save[Save installed packages into the project"s bower.json dependencies]' |
||||
'(--force)--force[Force fetching remote resources even if a local copy exists on disk]' |
||||
) |
||||
|
||||
_save_dev=('(--save-dev)--save-dev[Save installed packages into the project"s bower.json devDependencies]') |
||||
|
||||
_force_lastest=('(--force-latest)--force-latest[Force latest version on conflict]') |
||||
|
||||
_production=('(--production)--production[Do not install project devDependencies]') |
||||
|
||||
_1st_arguments=( |
||||
'cache-clean:Clean the Bower cache, or the specified package caches' \ |
||||
'help:Display help information about Bower' \ |
||||
'info:Version info and description of a particular package' \ |
||||
'init:Interactively create a bower.json file' \ |
||||
'install:Install a package locally' \ |
||||
'link:Symlink a package folder' \ |
||||
'lookup:Look up a package URL by name' \ |
||||
'register:Register a package' \ |
||||
'search:Search for a package by name' \ |
||||
'uninstall:Remove a package' \ |
||||
'update:Update a package' \ |
||||
{ls,list}:'[List all installed packages]' |
||||
) |
||||
_arguments \ |
||||
$_no_color \ |
||||
'*:: :->subcmds' && return 0 |
||||
|
||||
if (( CURRENT == 1 )); then |
||||
_describe -t commands "bower subcommand" _1st_arguments |
||||
return |
||||
fi |
||||
|
||||
case "$words[1]" in |
||||
install) |
||||
_arguments \ |
||||
$_dopts \ |
||||
$_save_dev \ |
||||
$_force_lastest \ |
||||
$_no_color \ |
||||
$_production |
||||
;; |
||||
update) |
||||
_arguments \ |
||||
$_dopts \ |
||||
$_no_color \ |
||||
$_force_lastest |
||||
_bower_installed_packages |
||||
compadd "$@" $(echo $bower_package_list) |
||||
;; |
||||
uninstall) |
||||
_arguments \ |
||||
$_no_color \ |
||||
$_dopts |
||||
_bower_installed_packages |
||||
compadd "$@" $(echo $bower_package_list) |
||||
;; |
||||
*) |
||||
_arguments \ |
||||
$_no_color \ |
||||
;; |
||||
esac |
||||
|
||||
} |
||||
|
||||
compdef _bower bower |
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
# Branch |
||||
|
||||
Displays the current Git or Mercurial branch fast. |
||||
|
||||
## Speed test |
||||
|
||||
### Mercurial |
||||
|
||||
```shell |
||||
$ time hg branch |
||||
0.11s user 0.14s system 70% cpu 0.355 total |
||||
``` |
||||
|
||||
### Branch plugin |
||||
|
||||
```shell |
||||
$ time zsh /tmp/branch_prompt_info_test.zsh |
||||
0.00s user 0.01s system 78% cpu 0.014 total |
||||
``` |
||||
|
||||
## Usage |
||||
|
||||
Edit your theme file (eg.: `~/.oh-my-zsh/theme/robbyrussell.zsh-theme`) |
||||
adding `$(branch_prompt_info)` in your prompt like this: |
||||
|
||||
```diff |
||||
- PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' |
||||
+ PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)$(branch_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' |
||||
``` |
||||
|
||||
## Maintainer |
||||
|
||||
Victor Torres (<vpaivatorres@gmail.com>) |
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
# Branch: displays the current Git or Mercurial branch fast. |
||||
# Victor Torres <vpaivatorres@gmail.com> |
||||
# Oct 2, 2015 |
||||
|
||||
function branch_prompt_info() { |
||||
# Defines path as current directory |
||||
local current_dir=$PWD |
||||
# While current path is not root path |
||||
while [[ $current_dir != '/' ]] |
||||
do |
||||
# Git repository |
||||
if [[ -d "${current_dir}/.git" ]] |
||||
then |
||||
echo '±' ${"$(<"$current_dir/.git/HEAD")"##*/} |
||||
return; |
||||
fi |
||||
# Mercurial repository |
||||
if [[ -d "${current_dir}/.hg" ]] |
||||
then |
||||
if [[ -f "$current_dir/.hg/branch" ]] |
||||
then |
||||
echo '☿' $(<"$current_dir/.hg/branch") |
||||
else |
||||
echo '☿ default' |
||||
fi |
||||
return; |
||||
fi |
||||
# Defines path as parent directory and keeps looking for :) |
||||
current_dir="${current_dir:h}" |
||||
done |
||||
} |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
# brew plugin |
||||
|
||||
The plugin adds several aliases for common [brew](https://brew.sh) commands. |
||||
|
||||
To use it, add `brew` to the plugins array of your zshrc file: |
||||
``` |
||||
plugins=(... brew) |
||||
``` |
||||
|
||||
## Aliases |
||||
|
||||
| Alias | Command | Description | |
||||
|--------|----------------------|---------------| |
||||
| brewp | `brew pin` | Pin a specified formulae, preventing them from being upgraded when issuing the brew upgrade <formulae> command. | |
||||
| brews | `brew list -1` | List installed formulae, one entry per line, or the installed files for a given formulae. | |
||||
| brewsp | `brew list --pinned` | Show the versions of pinned formulae, or only the specified (pinned) formulae if formulae are given. | |
||||
| 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. | |
||||
| 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. | |
@ -0,0 +1,24 @@
@@ -0,0 +1,24 @@
|
||||
alias brewp='brew pin' |
||||
alias brews='brew list -1' |
||||
alias brewsp='brew list --pinned' |
||||
alias bubo='brew update && brew outdated' |
||||
alias bubc='brew upgrade && brew cleanup' |
||||
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 |
||||
print -P '%F{yellow}'Oh My Zsh brew plugin: |
||||
cat <<-'EOF' |
||||
|
||||
With the advent of their 1.0 release, Homebrew has decided to bundle |
||||
the zsh completion as part of the brew installation, so we no longer |
||||
ship it with the brew plugin; now it only has brew aliases. |
||||
|
||||
If you find that brew completion no longer works, make sure you have |
||||
your Homebrew installation fully up to date. |
||||
|
||||
You will only see this message once. |
||||
EOF |
||||
print -P '%f' |
||||
fi |
@ -0,0 +1,52 @@
@@ -0,0 +1,52 @@
|
||||
# Bundler |
||||
|
||||
- adds completion for basic bundler commands |
||||
- adds short aliases for common bundler commands |
||||
- `be` aliased to `bundle exec`. |
||||
It also supports aliases (if `rs` is `rails server`, `be rs` will bundle-exec `rails server`). |
||||
- `bl` aliased to `bundle list` |
||||
- `bp` aliased to `bundle package` |
||||
- `bo` aliased to `bundle open` |
||||
- `bout` aliased to `bundle outdated` |
||||
- `bu` aliased to `bundle update` |
||||
- `bi` aliased to `bundle install --jobs=<cpu core count>` (only for bundler `>= 1.4.0`) |
||||
- adds a wrapper for common gems: |
||||
- looks for a binstub under `./bin/` and executes it (if present) |
||||
- calls `bundle exec <gem executable>` otherwise |
||||
|
||||
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`. |
||||
|
||||
## Configuration |
||||
|
||||
Please use the exact name of the executable and not the gem name. |
||||
|
||||
### Add additional gems to be wrapped |
||||
|
||||
Add this before the plugin-list in your `.zshrc`: |
||||
```sh |
||||
BUNDLED_COMMANDS=(rubocop) |
||||
plugins=(... bundler ...) |
||||
``` |
||||
This will add the wrapper for the `rubocop` gem (i.e. the executable). |
||||
|
||||
|
||||
### Exclude gems from being wrapped |
||||
|
||||
Add this before the plugin-list in your `.zshrc`: |
||||
```sh |
||||
UNBUNDLED_COMMANDS=(foreman spin) |
||||
plugins=(... bundler ...) |
||||
``` |
||||
This will exclude the `foreman` and `spin` gems (i.e. their executable) from being wrapped. |
||||
|
||||
## Excluded gems |
||||
|
||||
These gems should not be called with `bundle exec`. Please see [issue #2923](https://github.com/robbyrussell/oh-my-zsh/pull/2923) on GitHub for clarification. |
||||
|
||||
`berks` |
||||
`foreman` |
||||
`mailcatcher` |
||||
`rails` |
||||
`ruby` |
||||
`spin` |
@ -0,0 +1,104 @@
@@ -0,0 +1,104 @@
|
||||
#compdef bundle |
||||
|
||||
local curcontext="$curcontext" state line _gems _opts ret=1 |
||||
|
||||
_arguments -C -A "-v" -A "--version" \ |
||||
'(- 1 *)'{-v,--version}'[display version information]' \ |
||||
'1: :->cmds' \ |
||||
'*:: :->args' && ret=0 |
||||
|
||||
case $state in |
||||
cmds) |
||||
_values "bundle command" \ |
||||
"install[Install the gems specified by the Gemfile or Gemfile.lock]" \ |
||||
"update[Update dependencies to their latest versions]" \ |
||||
"package[Package the .gem files required by your application]" \ |
||||
"exec[Execute a script in the context of the current bundle]" \ |
||||
"config[Specify and read configuration options for bundler]" \ |
||||
"check[Determine whether the requirements for your application are installed]" \ |
||||
"list[Show all of the gems in the current bundle]" \ |
||||
"show[Show the source location of a particular gem in the bundle]" \ |
||||
"outdated[Show all of the outdated gems in the current bundle]" \ |
||||
"console[Start an IRB session in the context of the current bundle]" \ |
||||
"open[Open an installed gem in the editor]" \ |
||||
"viz[Generate a visual representation of your dependencies]" \ |
||||
"init[Generate a simple Gemfile, placed in the current directory]" \ |
||||
"gem[Create a simple gem, suitable for development with bundler]" \ |
||||
"platform[Displays platform compatibility information]" \ |
||||
"clean[Cleans up unused gems in your bundler directory]" \ |
||||
"help[Describe available tasks or one specific task]" |
||||
ret=0 |
||||
;; |
||||
args) |
||||
case $line[1] in |
||||
help) |
||||
_values 'commands' \ |
||||
'install' \ |
||||
'update' \ |
||||
'package' \ |
||||
'exec' \ |
||||
'config' \ |
||||
'check' \ |
||||
'list' \ |
||||
'show' \ |
||||
'outdated' \ |
||||
'console' \ |
||||
'open' \ |
||||
'viz' \ |
||||
'init' \ |
||||
'gem' \ |
||||
'platform' \ |
||||
'help' && ret=0 |
||||
;; |
||||
install) |
||||
_arguments \ |
||||
'(--no-color)--no-color[disable colorization in output]' \ |
||||
'(--local)--local[do not attempt to connect to rubygems.org]' \ |
||||
'(--quiet)--quiet[only output warnings and errors]' \ |
||||
'(--gemfile)--gemfile=-[use the specified gemfile instead of Gemfile]:gemfile' \ |
||||
'(--system)--system[install to the system location]' \ |
||||
'(--deployment)--deployment[install using defaults tuned for deployment environments]' \ |
||||
'(--frozen)--frozen[do not allow the Gemfile.lock to be updated after this install]' \ |
||||
'(--path)--path=-[specify a different path than the system default]:path:_files' \ |
||||
'(--binstubs)--binstubs=-[generate bin stubs for bundled gems to ./bin]:directory:_files' \ |
||||
'(--without)--without=-[exclude gems that are part of the specified named group]:groups' |
||||
ret=0 |
||||
;; |
||||
exec) |
||||
_normal && ret=0 |
||||
;; |
||||
clean) |
||||
_arguments \ |
||||
'(--force)--force[forces clean even if --path is not set]' \ |
||||
'(--dry-run)--dry-run[only print out changes, do not actually clean gems]' \ |
||||
'(--no-color)--no-color[Disable colorization in output]' \ |
||||
'(--verbose)--verbose[Enable verbose output mode]' |
||||
ret=0 |
||||
;; |
||||
outdated) |
||||
_arguments \ |
||||
'(--pre)--pre[Check for newer pre-release gems]' \ |
||||
'(--source)--source[Check against a specific source]' \ |
||||
'(--local)--local[Do not attempt to fetch gems remotely and use the gem cache instead]' \ |
||||
'(--no-color)--no-color[Disable colorization in output]' \ |
||||
'(--verbose)--verbose[Enable verbose output mode]' |
||||
ret=0 |
||||
;; |
||||
(open|show) |
||||
_gems=( $(bundle show 2> /dev/null | sed -e '/^ \*/!d; s/^ \* \([^ ]*\) .*/\1/') ) |
||||
if [[ $_gems != "" ]]; then |
||||
_values 'gems' $_gems && ret=0 |
||||
fi |
||||
;; |
||||
*) |
||||
_opts=( $(bundle help $line[1] | sed -e '/^ \[-/!d; s/^ \[\(-[^=]*\)=.*/\1/') ) |
||||
_opts+=( $(bundle help $line[1] | sed -e '/^ -/!d; s/^ \(-.\), \[\(-[^=]*\)=.*/\1 \2/') ) |
||||
if [[ $_opts != "" ]]; then |
||||
_values 'options' $_opts && ret=0 |
||||
fi |
||||
;; |
||||
esac |
||||
;; |
||||
esac |
||||
|
||||
return ret |
@ -0,0 +1,115 @@
@@ -0,0 +1,115 @@
|
||||
alias be="bundle exec" |
||||
alias bl="bundle list" |
||||
alias bp="bundle package" |
||||
alias bo="bundle open" |
||||
alias bout="bundle outdated" |
||||
alias bu="bundle update" |
||||
alias bi="bundle_install" |
||||
alias bcn="bundle clean" |
||||
|
||||
bundled_commands=( |
||||
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 |
||||
unicorn_rails |
||||
) |
||||
|
||||
# Remove $UNBUNDLED_COMMANDS from the bundled_commands list |
||||
for cmd in $UNBUNDLED_COMMANDS; do |
||||
bundled_commands=(${bundled_commands#$cmd}); |
||||
done |
||||
|
||||
# Add $BUNDLED_COMMANDS to the bundled_commands list |
||||
for cmd in $BUNDLED_COMMANDS; do |
||||
bundled_commands+=($cmd); |
||||
done |
||||
|
||||
## Functions |
||||
|
||||
bundle_install() { |
||||
if ! _bundler-installed; then |
||||
echo "Bundler is not installed" |
||||
elif ! _within-bundled-project; then |
||||
echo "Can't 'bundle install' outside a bundled project" |
||||
else |
||||
local bundler_version=`bundle version | cut -d' ' -f3` |
||||
if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then |
||||
if [[ "$OSTYPE" = (darwin|freebsd)* ]] |
||||
then |
||||
local cores_num="$(sysctl -n hw.ncpu)" |
||||
else |
||||
local cores_num="$(nproc)" |
||||
fi |
||||
bundle install --jobs=$cores_num $@ |
||||
else |
||||
bundle install $@ |
||||
fi |
||||
fi |
||||
} |
||||
|
||||
_bundler-installed() { |
||||
which bundle > /dev/null 2>&1 |
||||
} |
||||
|
||||
_within-bundled-project() { |
||||
local check_dir="$PWD" |
||||
while [ "$check_dir" != "/" ]; do |
||||
[ -f "$check_dir/Gemfile" ] && return |
||||
check_dir="$(dirname $check_dir)" |
||||
done |
||||
false |
||||
} |
||||
|
||||
_binstubbed() { |
||||
[ -f "./bin/${1}" ] |
||||
} |
||||
|
||||
_run-with-bundler() { |
||||
if _bundler-installed && _within-bundled-project; then |
||||
if _binstubbed $1; then |
||||
./bin/$@ |
||||
else |
||||
bundle exec $@ |
||||
fi |
||||
else |
||||
$@ |
||||
fi |
||||
} |
||||
|
||||
## Main program |
||||
for cmd in $bundled_commands; do |
||||
eval "function unbundled_$cmd () { $cmd \$@ }" |
||||
eval "function bundled_$cmd () { _run-with-bundler $cmd \$@}" |
||||
alias $cmd=bundled_$cmd |
||||
|
||||
if which _$cmd > /dev/null 2>&1; then |
||||
compdef _$cmd bundled_$cmd=$cmd |
||||
fi |
||||
done |
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
# 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) |
||||
``` |
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
# |
||||
# 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 |
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
# Cabal |
||||
|
||||
This plugin provides completion for [Cabal](https://www.haskell.org/cabal/), a build tool for Haskell. It |
||||
also provides a function `cabal_sandbox_info` that prints whether the current working directory is in a sandbox. |
||||
|
||||
To use it, add cabal to the plugins array of your zshrc file: |
||||
``` |
||||
plugins=(... cabal) |
||||
``` |
@ -0,0 +1,93 @@
@@ -0,0 +1,93 @@
|
||||
function cabal_sandbox_info() { |
||||
cabal_files=(*.cabal(N)) |
||||
if [ $#cabal_files -gt 0 ]; then |
||||
if [ -f cabal.sandbox.config ]; then |
||||
echo "%{$fg[green]%}sandboxed%{$reset_color%}" |
||||
else |
||||
echo "%{$fg[red]%}not sandboxed%{$reset_color%}" |
||||
fi |
||||
fi |
||||
} |
||||
|
||||
function _cabal_commands() { |
||||
local ret=1 state |
||||
_arguments ':subcommand:->subcommand' && ret=0 |
||||
|
||||
case $state in |
||||
subcommand) |
||||
subcommands=( |
||||
"bench:Run the benchmark, if any (configure with UserHooks)" |
||||
"build:Compile all targets or specific target." |
||||
"check:Check the package for common mistakes" |
||||
"clean:Clean up after a build" |
||||
"copy:Copy the files into the install locations" |
||||
"configure:Prepare to build the package" |
||||
"exec:Run a command with the cabal environment" |
||||
"fetch:Downloads packages for later installation" |
||||
"freeze:Freeze dependencies." |
||||
"get:Gets a package's source code" |
||||
"haddock:Generate Haddock HTML documentation" |
||||
"help:Help about commands" |
||||
"hscolour:Generate HsColour colourised code, in HTML format" |
||||
"info:Display detailed information about a particular package" |
||||
"init:Interactively create a .cabal file" |
||||
"install:Installs a list of packages" |
||||
"list:List packages matching a search string" |
||||
"register:Register this package with the compiler" |
||||
"repl:Open an interpreter session for the given target" |
||||
"report:Upload build reports to a remote server" |
||||
"run:Runs the compiled executable" |
||||
"sandbox:Create/modify/delete a sandbox" |
||||
"sdist:Generate a source distribution file (.tar.gz)" |
||||
"test:Run the test suite, if any (configure with UserHooks)" |
||||
"unpack:Unpacks packages for user inspection" |
||||
"update:Updates list of known packages" |
||||
"upload:Uploads source packages to Hackage" |
||||
) |
||||
_describe -t subcommands 'cabal subcommands' subcommands && ret=0 |
||||
esac |
||||
|
||||
return ret |
||||
} |
||||
|
||||
compdef _cabal_commands cabal |
||||
|
||||
function _cab_commands() { |
||||
local ret=1 state |
||||
_arguments ':subcommand:->subcommand' && ret=0 |
||||
|
||||
case $state in |
||||
subcommand) |
||||
subcommands=( |
||||
"sync:Fetch the latest package index" |
||||
"install:Install packages" |
||||
"uninstall:Uninstall packages" |
||||
"installed:List installed packages" |
||||
"configure:Configure a cabal package" |
||||
"build:Build a cabal package" |
||||
"clean:Clean up a build directory" |
||||
"outdated:Display outdated packages" |
||||
"info:Display information of a package" |
||||
"sdist:Make tar.gz for source distribution" |
||||
"upload:Uploading tar.gz to HackageDB" |
||||
"get:Untar a package in the current directory" |
||||
"deps:Show dependencies of this package" |
||||
"revdeps:Show reverse dependencies of this package" |
||||
"check:Check consistency of packages" |
||||
"genpaths:Generate Paths_<pkg>.hs" |
||||
"search:Search available packages by package name" |
||||
"add:Add a source directory" |
||||
"test:Run tests" |
||||
"bench:Run benchmarks" |
||||
"doc:Generate manuals" |
||||
"ghci:Run GHCi (with a sandbox)" |
||||
"init:Initialize a sandbox" |
||||
"help:Display the help message of the command" |
||||
) |
||||
_describe -t subcommands 'cab subcommands' subcommands && ret=0 |
||||
esac |
||||
|
||||
return ret |
||||
} |
||||
|
||||
command -v cab >/dev/null 2>&1 && { compdef _cab_commands cab } |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
# Cake |
||||
|
||||
This plugin provides completion for [CakePHP](https://cakephp.org/). |
||||
|
||||
To use it add cake to the plugins array in your zshrc file. |
||||
|
||||
```bash |
||||
plugins=(... cake) |
||||
``` |
||||
|
||||
## Note |
||||
|
||||
This plugin generates a cache file of the cake tasks found, named `.cake_task_cache`, in the current working directory. |
||||
It is regenerated when the Cakefile is newer than the cache file. It is advised that you add the cake file to your |
||||
`.gitignore` files. |
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
# Set this to 1 if you want to cache the tasks |
||||
_cake_cache_task_list=1 |
||||
|
||||
# Cache filename |
||||
_cake_task_cache_file='.cake_task_cache' |
||||
|
||||
_cake_get_target_list () { |
||||
cake | grep '^cake ' | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$' |
||||
} |
||||
|
||||
_cake_does_target_list_need_generating () { |
||||
|
||||
if [ ${_cake_cache_task_list} -eq 0 ]; then |
||||
return 1; |
||||
fi |
||||
|
||||
[ ! -f ${_cake_task_cache_file} ] && return 0; |
||||
[ Cakefile -nt ${_cake_task_cache_file} ] && return 0; |
||||
return 1; |
||||
} |
||||
|
||||
_cake () { |
||||
if [ -f Cakefile ]; then |
||||
if _cake_does_target_list_need_generating; then |
||||
_cake_get_target_list > ${_cake_task_cache_file} |
||||
compadd `cat ${_cake_task_cache_file}` |
||||
else |
||||
compadd `_cake_get_target_list` |
||||
fi |
||||
fi |
||||
} |
||||
|
||||
compdef _cake cake |
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
# CakePHP 3 basic command completion |
||||
_cakephp3_get_command_list () { |
||||
bin/cake Completion commands |
||||
} |
||||
|
||||
_cakephp3_get_sub_command_list () { |
||||
bin/cake Completion subcommands ${words[2]} |
||||
} |
||||
|
||||
_cakephp3_get_3rd_argument () { |
||||
bin/cake ${words[2]} ${words[3]} | \grep '\-\ '| \awk '{print $2}' |
||||
} |
||||
|
||||
_cakephp3 () { |
||||
local -a has3rdargument |
||||
has3rdargument=("all" "controller" "fixture" "model" "template") |
||||
if [ -f bin/cake ]; then |
||||
if (( CURRENT == 2 )); then |
||||
compadd $(_cakephp3_get_command_list) |
||||
fi |
||||
if (( CURRENT == 3 )); then |
||||
compadd $(_cakephp3_get_sub_command_list) |
||||
fi |
||||
if (( CURRENT == 4 )); then |
||||
if [[ ${has3rdargument[(i)${words[3]}]} -le ${#has3rdargument} ]]; then |
||||
compadd $(_cakephp3_get_3rd_argument) |
||||
fi |
||||
fi |
||||
fi |
||||
} |
||||
|
||||
compdef _cakephp3 bin/cake |
||||
compdef _cakephp3 cake |
||||
|
||||
#Alias |
||||
alias c3='bin/cake' |
||||
alias c3cache='bin/cake orm_cache clear' |
||||
alias c3migrate='bin/cake migrations migrate' |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
# Capistrano |
||||
|
||||
This plugin provides completion for [Capistrano](https://capistranorb.com/). |
||||
|
||||
To use it add capistrano to the plugins array in your zshrc file. |
||||
|
||||
```bash |
||||
plugins=(... capistrano) |
||||
``` |
||||
|
||||
For a working completion use the `capit` command instead of `cap`, because cap is a |
||||
[reserved word in zsh](http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module). |
||||
|
||||
`capit` automatically runs cap with bundler if a Gemfile is found. |
@ -0,0 +1,49 @@
@@ -0,0 +1,49 @@
|
||||
#compdef capit |
||||
#autoload |
||||
|
||||
# Added `capit` because `cap` is a reserved word. `cap` completion doesn't work. |
||||
# http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module |
||||
|
||||
local curcontext="$curcontext" state line ret=1 |
||||
local -a _configs |
||||
|
||||
_arguments -C \ |
||||
'1: :->cmds' \ |
||||
'2:: :->args' && ret=0 |
||||
|
||||
_cap_tasks() { |
||||
if [[ -f config/deploy.rb || -f Capfile ]]; then |
||||
if [[ ! -f .cap_tasks~ ]]; then |
||||
capit --tasks | sed 's/\(\[\)\(.*\)\(\]\)/\2:/' | awk '{command=$2; $1=$2=$3=""; gsub(/^[ \t\r\n]+/, "", $0); gsub(":", "\\:", command); print command"["$0"]"}' > .cap_tasks~ |
||||
fi |
||||
|
||||
OLD_IFS=$IFS |
||||
IFS=$'\n' |
||||
_values 'cap commands' $(< .cap_tasks~) |
||||
IFS=$OLD_IFS |
||||
# zmodload zsh/mapfile |
||||
# _values ${(f)mapfile[.cap_tasks~]} |
||||
fi |
||||
} |
||||
|
||||
_cap_stages() { |
||||
compadd $(find config/deploy -name \*.rb | cut -d/ -f3 | sed s:.rb::g) |
||||
} |
||||
|
||||
case $state in |
||||
cmds) |
||||
# check if it uses multistage |
||||
if [[ -d config/deploy ]]; then |
||||
_cap_stages |
||||
else |
||||
_cap_tasks |
||||
fi |
||||
ret=0 |
||||
;; |
||||
args) |
||||
_cap_tasks |
||||
ret=0 |
||||
;; |
||||
esac |
||||
|
||||
return ret |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
# Added `capit` because `cap` is a reserved word. `cap` completion doesn't work. |
||||
# http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module |
||||
|
||||
function capit() { |
||||
if [ -f Gemfile ] |
||||
then |
||||
bundle exec cap $* |
||||
else |
||||
cap $* |
||||
fi |
||||
} |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
# 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: |
||||
|
||||
```zsh |
||||
plugins=(... cargo) |
||||
``` |
||||
|
||||
Updated on October 4th, 2016. |
@ -0,0 +1,500 @@
@@ -0,0 +1,500 @@
|
||||
#compdef cargo |
||||
|
||||
typeset -A opt_args |
||||
autoload -U regexp-replace |
||||
|
||||
_cargo() { |
||||
|
||||
_arguments \ |
||||
'(- 1 *)'{-h,--help}'[show help message]' \ |
||||
'(- 1 *)'{-V,--version}'[show version information]' \ |
||||
'(- 1 *)'--list'[list installed commands]' \ |
||||
'(- 1 *)'--explain'[Run `rustc --explain CODE`]' \ |
||||
'(- 1 *)'{-v,--verbose}'[use verbose output]' \ |
||||
'(- 1 *)'--color'[colorization option]' \ |
||||
'(- 1 *)'--frozen'[Require Cargo.lock and cache are up to date]' \ |
||||
'(- 1 *)'--locked'[Require Cargo.lock is up to date]' \ |
||||
'1: :_cargo_cmds' \ |
||||
'*:: :->args' |
||||
|
||||
case $state in |
||||
args) |
||||
case $words[1] in |
||||
bench) |
||||
_arguments \ |
||||
'--features=[space separated feature list]' \ |
||||
'--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]' \ |
||||
"${command_scope_spec[@]}" \ |
||||
'--manifest-path=[path to manifest]: :_files -/' \ |
||||
'--no-default-features[do not build the default features]' \ |
||||
'--no-run[compile but do not run]' \ |
||||
'(-p,--package)'{-p=,--package=}'[package to run benchmarks for]:packages:_get_package_names' \ |
||||
'--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)' \ |
||||
;; |
||||
|
||||
build) |
||||
_arguments \ |
||||
'--features=[space separated feature list]' \ |
||||
'--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]' \ |
||||
"${command_scope_spec[@]}" \ |
||||
'--manifest-path=[path to manifest]: :_files -/' \ |
||||
'--no-default-features[do not build the default features]' \ |
||||
'(-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) |
||||
_arguments \ |
||||
'(-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) |
||||
_arguments \ |
||||
'--features=[space separated feature list]' \ |
||||
'--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 -/' \ |
||||
'--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) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'--manifest-path=[path to manifest]: :_files -/' \ |
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
;; |
||||
|
||||
generate-lockfile) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'--manifest-path=[path to manifest]: :_files -/' \ |
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
;; |
||||
|
||||
git-checkout) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'q(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ |
||||
'--reference=[REF]' \ |
||||
'--url=[URL]' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
;; |
||||
|
||||
help) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'*: :_cargo_cmds' \ |
||||
;; |
||||
|
||||
init) |
||||
_arguments \ |
||||
'--bin[use binary template]' \ |
||||
'--vcs:initialize a new repo with a given VCS:(git hg none)' \ |
||||
'(-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)' \ |
||||
;; |
||||
|
||||
install) |
||||
_arguments \ |
||||
'--bin=[only install the specified binary]' \ |
||||
'--branch=[branch to use when installing from git]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
'--debug[build in debug mode instead of release mode]' \ |
||||
'--example[install the specified example instead of binaries]' \ |
||||
'--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) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'--manifest-path=[path to manifest]: :_files -/' \ |
||||
;; |
||||
|
||||
login) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'--host=[Host to set the token for]' \ |
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
;; |
||||
|
||||
metadata) |
||||
_arguments \ |
||||
'(-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) |
||||
_arguments \ |
||||
'--bin[use binary template]' \ |
||||
'--vcs:initialize a new repo with a given VCS:(git hg none)' \ |
||||
'(-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) |
||||
_arguments \ |
||||
'(-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) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'(-l, --list)'{-l,--list}'[print files included in a package without making one]' \ |
||||
'--manifest-path=[path to manifest]: :_files -/' \ |
||||
'--no-metadata[ignore warnings about a lack of human-usable metadata]' \ |
||||
'--no-verify[do not build to verify contents]' \ |
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
;; |
||||
|
||||
pkgid) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'--manifest-path=[path to manifest]: :_files -/' \ |
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
;; |
||||
|
||||
publish) |
||||
_arguments \ |
||||
'(-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) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'--manifest-path=[path to manifest]: :_files -/' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
;; |
||||
|
||||
run) |
||||
_arguments \ |
||||
'--example=[name of the bin target]' \ |
||||
'--features=[space separated feature list]' \ |
||||
'--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) |
||||
_arguments \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
'--features=[features to compile for the package]' \ |
||||
'--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 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) |
||||
_arguments \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
'--features=[space-separated list of features to also build]' \ |
||||
'--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 the manifest to document]' \ |
||||
'--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) |
||||
_arguments \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'--host=[host of a registry to search in]' \ |
||||
'--limit=[limit the number of results]' \ |
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
;; |
||||
|
||||
test) |
||||
_arguments \ |
||||
'--features=[space separated feature list]' \ |
||||
'--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 -/' \ |
||||
'--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) |
||||
_arguments \ |
||||
'--bin=[only uninstall the binary NAME]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'(-q, --quiet)'{-q,--quiet}'[less output printed to stdout]' \ |
||||
'--root=[directory to uninstall packages from]' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
;; |
||||
|
||||
update) |
||||
_arguments \ |
||||
'--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) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'--manifest-path=[path to manifest]: :_files -/' \ |
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
;; |
||||
|
||||
version) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
;; |
||||
|
||||
yank) |
||||
_arguments \ |
||||
'(-h, --help)'{-h,--help}'[show help message]' \ |
||||
'--index[registry index]' \ |
||||
'(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ |
||||
'--token[API token to use when authenticating]' \ |
||||
'--undo[undo a yank, putting a version back into the index]' \ |
||||
'(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ |
||||
'--color=:colorization option:(auto always never)' \ |
||||
'--vers[yank version]' \ |
||||
;; |
||||
esac |
||||
;; |
||||
esac |
||||
} |
||||
|
||||
_cargo_cmds(){ |
||||
local -a commands;commands=( |
||||
'bench:execute all benchmarks of a local package' |
||||
'build:compile the current project' |
||||
'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 |
||||
|
||||
} |
||||
|
||||
|
||||
#FIXME: Disabled until fixed |
||||
#gets package names from the manifest file |
||||
_get_package_names() |
||||
{ |
||||
} |
||||
|
||||
#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 |
||||
# command line options for completion |
||||
_get_names_from_array() |
||||
{ |
||||
local -a filelist; |
||||
local manifest=$(_locate_manifest) |
||||
if [[ -z $manifest ]]; then |
||||
return 0 |
||||
fi |
||||
|
||||
local last_line |
||||
local -a names; |
||||
local in_block=false |
||||
local block_name=$1 |
||||
names=() |
||||
while read line |
||||
do |
||||
if [[ $last_line == "[[$block_name]]" ]]; then |
||||
in_block=true |
||||
else |
||||
if [[ $last_line =~ '.*\[\[.*' ]]; then |
||||
in_block=false |
||||
fi |
||||
fi |
||||
|
||||
if [[ $in_block == true ]]; then |
||||
if [[ $line =~ '.*name.*=' ]]; then |
||||
regexp-replace line '^.*name *= *|"' "" |
||||
names+=$line |
||||
fi |
||||
fi |
||||
|
||||
last_line=$line |
||||
done < $manifest |
||||
_describe $block_name names |
||||
|
||||
} |
||||
|
||||
#Gets the test names from the manifest file |
||||
_test_names() |
||||
{ |
||||
_get_names_from_array "test" |
||||
} |
||||
|
||||
#Gets the bench names from the manifest file |
||||
_benchmark_names() |
||||
{ |
||||
_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 |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
# Cask plugin |
||||
|
||||
[Cask](https://github.com/cask/cask) is a project management tool for Emacs that helps |
||||
automate the package development cycle; development, dependencies, testing, building, |
||||
packaging and more. |
||||
|
||||
This plugin loads `cask` completion from non-standard locations, such as if installed |
||||
via Homebrew or others. To enable it, add `cask` to your plugins array: |
||||
|
||||
```zsh |
||||
plugins=(... cask) |
||||
``` |
||||
|
||||
Make sure you have the `cask` directory in your `$PATH` before loading Oh My Zsh, |
||||
otherwise you'll get a "command not found" error. |
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
() { |
||||
emulate -L zsh |
||||
|
||||
if ! (( $+commands[cask] )); then |
||||
print "zsh cask plugin: cask command not found" >&2 |
||||
return |
||||
fi |
||||
|
||||
cask_base=${commands[cask]:h:h} |
||||
|
||||
# Plain cask installation location (for Cask 0.7.2 and earlier) |
||||
comp_files=($cask_base/etc/cask_completion.zsh) |
||||
|
||||
# Mac Homebrew installs the completion in a different location |
||||
if (( $+commands[brew] )); then |
||||
comp_files+=($(brew --prefix)/share/zsh/site-functions/cask_completion.zsh) |
||||
fi |
||||
|
||||
# Load first found file |
||||
for f in $comp_files; do |
||||
if [[ -f "$f" ]]; then |
||||
source "$f" |
||||
break |
||||
fi |
||||
done |
||||
} |
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
# catimg |
||||
|
||||
Plugin for displaying images on the terminal using the the `catimg.sh` script provided by [posva](https://github.com/posva/catimg) |
||||
|
||||
## Requirements |
||||
|
||||
- `convert` (ImageMagick) |
||||
|
||||
## Enabling the plugin |
||||
|
||||
1. Open your `.zshrc` file and add `catimg` in the plugins section: |
||||
|
||||
```zsh |
||||
plugins=( |
||||
# all your enabled plugins |
||||
catimg |
||||
) |
||||
``` |
||||
|
||||
2. Reload the source file or restart your Terminal session: |
||||
|
||||
```console |
||||
$ source ~/.zshrc |
||||
$ |
||||
``` |
||||
|
||||
## Functions |
||||
|
||||
| Function | Description | |
||||
| -------- | ---------------------------------------- | |
||||
| `catimg` | Displays the given image on the terminal | |
||||
|
||||
## Usage examples |
||||
|
||||
[![asciicast](https://asciinema.org/a/204702.png)](https://asciinema.org/a/204702) |
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
################################################################################ |
||||
# catimg script by Eduardo San Martin Morote aka Posva # |
||||
# https://posva.net # |
||||
# # |
||||
# Ouput the content of an image to the stdout using the 256 colors of the # |
||||
# terminal. # |
||||
# Github: https://github.com/posva/catimg # |
||||
################################################################################ |
||||
|
||||
|
||||
function catimg() { |
||||
if [[ -x `which convert` ]]; then |
||||
zsh $ZSH/plugins/catimg/catimg.sh $@ |
||||
else |
||||
echo "catimg need convert (ImageMagick) to work)" |
||||
fi |
||||
} |
@ -0,0 +1,88 @@
@@ -0,0 +1,88 @@
|
||||
################################################################################ |
||||
# catimg script by Eduardo San Martin Morote aka Posva # |
||||
# https://posva.net # |
||||
# # |
||||
# Ouput the content of an image to the stdout using the 256 colors of the # |
||||
# terminal. # |
||||
# Github: https://github.com/posva/catimg # |
||||
################################################################################ |
||||
|
||||
function help() { |
||||
echo "Usage catimg [-h] [-w width] [-c char] img" |
||||
echo "By default char is \" \" and w is the terminal width" |
||||
} |
||||
|
||||
# VARIABLES |
||||
COLOR_FILE=$(dirname $0)/colors.png |
||||
CHAR=" " |
||||
|
||||
WIDTH="" |
||||
IMG="" |
||||
|
||||
while getopts qw:c:h opt; do |
||||
case "$opt" in |
||||
w) WIDTH="$OPTARG" ;; |
||||
c) CHAR="$OPTARG" ;; |
||||
h) help; exit ;; |
||||
*) help ; exit 1;; |
||||
esac |
||||
done |
||||
|
||||
while [ "$1" ]; do |
||||
IMG="$1" |
||||
shift |
||||
done |
||||
|
||||
if [ "$IMG" = "" -o ! -f "$IMG" ]; then |
||||
help |
||||
exit 1 |
||||
fi |
||||
|
||||
if [ ! "$WIDTH" ]; then |
||||
COLS=$(expr $(tput cols) "/" $(echo -n "$CHAR" | wc -c)) |
||||
else |
||||
COLS=$(expr $WIDTH "/" $(echo -n "$CHAR" | wc -c)) |
||||
fi |
||||
WIDTH=$(convert "$IMG" -print "%w\n" /dev/null) |
||||
if [ "$WIDTH" -gt "$COLS" ]; then |
||||
WIDTH=$COLS |
||||
fi |
||||
|
||||
REMAP="" |
||||
if convert "$IMG" -resize $COLS\> +dither -remap $COLOR_FILE /dev/null ; then |
||||
REMAP="-remap $COLOR_FILE" |
||||
else |
||||
echo "The version of convert is too old, don't expect good results :(" >&2 |
||||
#convert "$IMG" -colors 256 PNG8:tmp.png |
||||
#IMG="tmp.png" |
||||
fi |
||||
|
||||
# Display the image |
||||
I=0 |
||||
convert "$IMG" -resize $COLS\> +dither `echo $REMAP` txt:- 2>/dev/null | |
||||
sed -e 's/.*none.*/NO NO NO/g' -e '1d;s/^.*(\(.*\)[,)].*$/\1/g;y/,/ /' | |
||||
while read R G B f; do |
||||
if [ ! "$R" = "NO" ]; then |
||||
if [ "$R" -eq "$G" -a "$G" -eq "$B" ]; then |
||||
(( |
||||
I++, |
||||
IDX = 232 + R * 23 / 255 |
||||
)) |
||||
else |
||||
(( |
||||
I++, |
||||
IDX = 16 |
||||
+ R * 5 / 255 * 36 |
||||
+ G * 5 / 255 * 6 |
||||
+ B * 5 / 255 |
||||
)) |
||||
fi |
||||
#echo "$R,$G,$B: $IDX" |
||||
echo -ne "\e[48;5;${IDX}m${CHAR}" |
||||
else |
||||
(( I++ )) |
||||
echo -ne "\e[0m${CHAR}" |
||||
fi |
||||
# New lines |
||||
(( $I % $WIDTH )) || echo -e "\e[0m" |
||||
done |
After Width: | Height: | Size: 353 B |
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
# Celery |
||||
|
||||
This plugin provides completion for [Celery](http://www.celeryproject.org/). |
||||
|
||||
To use it add celery to the plugins array in your zshrc file. |
||||
|
||||
```bash |
||||
plugins=(... celery) |
||||
``` |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue