├── .config
├── .config
├── configstore
│ ├── first-run_kap.json
│ ├── first-run_kap-2.1.2.json
│ ├── update-notifier-firebase-tools.json
│ ├── update-notifier-npm.json
│ └── firebase-tools.json
├── git
│ └── ignore
├── nvim
│ └── init.vim
└── xbuild
│ └── pkgconfig-cache-2.xml
├── README.md
├── .profile
├── .bash_profile
├── .vimrc
├── CodeSnippets
├── BDDBC3AC-BCDB-4A15-B7ED-D3AF6453FB20.codesnippet
├── 642C7A18-A2F6-4C20-80A1-795399C26715.codesnippet
├── D395445E-CFC6-4C45-91A4-6CE614728A40.codesnippet
└── C49D674E-A918-4889-92AB-70747B474F4C.codesnippet
├── .bashrc
├── Brewfile
├── lessconfig.sh
├── config.sh
└── .git-completion.bash
/.config/.config:
--------------------------------------------------------------------------------
1 | /Users/satorusasozaki/dotfiles/.config
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # dotfile
2 | My dotfiles
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.config/configstore/first-run_kap.json:
--------------------------------------------------------------------------------
1 | {
2 | "firstRun": false
3 | }
--------------------------------------------------------------------------------
/.config/configstore/first-run_kap-2.1.2.json:
--------------------------------------------------------------------------------
1 | {
2 | "firstRun": false
3 | }
--------------------------------------------------------------------------------
/.config/configstore/update-notifier-firebase-tools.json:
--------------------------------------------------------------------------------
1 | {
2 | "optOut": false,
3 | "lastUpdateCheck": 1520279005145
4 | }
--------------------------------------------------------------------------------
/.config/git/ignore:
--------------------------------------------------------------------------------
1 | # Automatically created by GitHub for Mac
2 | # To make edits, delete these initial comments, or else your changes may be lost!
3 |
4 | 404: Not Found
5 |
--------------------------------------------------------------------------------
/.config/configstore/update-notifier-npm.json:
--------------------------------------------------------------------------------
1 | {
2 | "optOut": false,
3 | "lastUpdateCheck": 1525405186737,
4 | "update": {
5 | "latest": "6.0.0",
6 | "current": "5.6.0",
7 | "type": "major",
8 | "name": "npm"
9 | }
10 | }
--------------------------------------------------------------------------------
/.profile:
--------------------------------------------------------------------------------
1 |
2 | export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
3 |
4 | [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
5 |
6 | # For Go
7 | #export WAYGO_RESOURCES=/Users/satoru/.go/src/github.com/waygo/resources
8 |
--------------------------------------------------------------------------------
/.bash_profile:
--------------------------------------------------------------------------------
1 | #if [ -f `brew --prefix`/etc/bash_completion ]; then
2 | # . `brew --prefix`/etc/bash_completion
3 | # echo OK
4 | #fi
5 | if [ -f ~/.bashrc ]; then
6 | source ~/.bashrc
7 | fi
8 | # for Ruby
9 | [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
10 |
--------------------------------------------------------------------------------
/.vimrc:
--------------------------------------------------------------------------------
1 | " REQUIRED. This makes vim invoke Latex-Suite when you open a tex file.
2 | filetype plugin on
3 |
4 | " IMPORTANT: win32 users will need to have 'shellslash' set so that latex
5 | " can be called correctly.
6 | set shellslash
7 |
8 | " IMPORTANT: grep will sometimes skip displaying the file name if you
9 | " search in a singe file. This will confuse Latex-Suite. Set your grep
10 | " program to always generate a file-name.
11 | set grepprg=grep\ -nH\ $*
12 |
13 | " OPTIONAL: This enables automatic indentation as you type.
14 | filetype indent on
15 |
16 | " OPTIONAL: Starting with Vim 7, the filetype of empty .tex files defaults to
17 | " 'plaintex' instead of 'tex', which results in vim-latex not being loaded.
18 | " The following changes the default filetype back to 'tex':
19 | let g:tex_flavor='latex'
20 |
21 |
--------------------------------------------------------------------------------
/CodeSnippets/BDDBC3AC-BCDB-4A15-B7ED-D3AF6453FB20.codesnippet:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDECodeSnippetCompletionPrefix
6 | print
7 | IDECodeSnippetCompletionScopes
8 |
9 | CodeBlock
10 |
11 | IDECodeSnippetContents
12 | print("Error: <#comment#>")
13 | IDECodeSnippetIdentifier
14 | BDDBC3AC-BCDB-4A15-B7ED-D3AF6453FB20
15 | IDECodeSnippetLanguage
16 | Xcode.SourceCodeLanguage.Swift
17 | IDECodeSnippetSummary
18 | Print error
19 | IDECodeSnippetTitle
20 | Error
21 | IDECodeSnippetUserSnippet
22 |
23 | IDECodeSnippetVersion
24 | 2
25 |
26 |
27 |
--------------------------------------------------------------------------------
/.bashrc:
--------------------------------------------------------------------------------
1 | # show git branch
2 | # https://github.com/jimeh/git-aware-prompt
3 | export GITAWAREPROMPT=~/dotfiles/.bash/git-aware-prompt
4 | source "${GITAWAREPROMPT}/main.sh"
5 | export PS1="\[\033[32m\]\W \[$txtylw\]\$git_branch\[\033[0m\]$ \[\033[0m\]"
6 | source ~/.git-completion.bash
7 | alias ls='ls -G'
8 | alias open='open . -a xcode'
9 | export LSCOLORS=gxfxcxdxbxegedabagacad
10 | export PATH=/usr/local/bin:$PATH
11 |
12 | # for golang
13 | export GOPATH=~/.go
14 | export PATH=$PATH:$GOPATH/bin
15 |
16 | # for Ruby
17 | export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
18 |
19 | alias wink='cd /Users/satorusasozaki/Dropbox/Development/SunsetHQ/say && open . -a xcode'
20 | alias sunsethq='cd /Users/satorusasozaki/Dropbox/Development/sunsethq && ls'
21 | alias poppy='cd /Users/satorusasozaki/Dropbox/Development/Poppy && ls'
22 | # Make git editor to neovim
23 | export VISUAL=vim
24 | export EDITOR="$VISUAL"
25 | export JEKYLL_ENV="staging"
26 |
27 | export HOMEBREW_CASK_OPTS="--appdir=/Applications"
28 |
--------------------------------------------------------------------------------
/CodeSnippets/642C7A18-A2F6-4C20-80A1-795399C26715.codesnippet:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDECodeSnippetCompletionPrefix
6 | print
7 | IDECodeSnippetCompletionScopes
8 |
9 | CodeBlock
10 |
11 | IDECodeSnippetContents
12 | print("\(type(of: self)).\(#function)")
13 | IDECodeSnippetIdentifier
14 | 642C7A18-A2F6-4C20-80A1-795399C26715
15 | IDECodeSnippetLanguage
16 | Xcode.SourceCodeLanguage.Swift
17 | IDECodeSnippetSummary
18 | Print method name and class
19 | IDECodeSnippetTitle
20 | Method name and class
21 | IDECodeSnippetUserSnippet
22 |
23 | IDECodeSnippetVersion
24 | 2
25 |
26 |
27 |
--------------------------------------------------------------------------------
/CodeSnippets/D395445E-CFC6-4C45-91A4-6CE614728A40.codesnippet:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDECodeSnippetCompletionPrefix
6 | print
7 | IDECodeSnippetCompletionScopes
8 |
9 | CodeBlock
10 |
11 | IDECodeSnippetContents
12 | print("<#label#>: \(<#variable#>)")
13 | IDECodeSnippetIdentifier
14 | D395445E-CFC6-4C45-91A4-6CE614728A40
15 | IDECodeSnippetLanguage
16 | Xcode.SourceCodeLanguage.Swift
17 | IDECodeSnippetSummary
18 | Print variable with label
19 | IDECodeSnippetTitle
20 | Variable with label
21 | IDECodeSnippetUserSnippet
22 |
23 | IDECodeSnippetVersion
24 | 2
25 |
26 |
27 |
--------------------------------------------------------------------------------
/CodeSnippets/C49D674E-A918-4889-92AB-70747B474F4C.codesnippet:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDECodeSnippetCompletionPrefix
6 | guard
7 | IDECodeSnippetCompletionScopes
8 |
9 | CodeBlock
10 |
11 | IDECodeSnippetContents
12 | guard let <#unwrapped#> = <#optional#> else {
13 | print("Error: ")
14 | return
15 | }
16 | IDECodeSnippetIdentifier
17 | C49D674E-A918-4889-92AB-70747B474F4C
18 | IDECodeSnippetLanguage
19 | Xcode.SourceCodeLanguage.Swift
20 | IDECodeSnippetSummary
21 | Unwrap an optional value with guard
22 | IDECodeSnippetTitle
23 | Guard unwrapping
24 | IDECodeSnippetUserSnippet
25 |
26 | IDECodeSnippetVersion
27 | 2
28 |
29 |
30 |
--------------------------------------------------------------------------------
/Brewfile:
--------------------------------------------------------------------------------
1 | # https://github.com/Homebrew/homebrew-bundle
2 | # specify a directory to install
3 | cask_args appdir: '/Applications'
4 | # install packages
5 | tap 'caskroom/homebrew-cask' || true
6 | tap 'caskroom/versions' || true
7 | brew 'git'
8 | brew 'bash-completion'
9 | brew 'tree'
10 | brew 'node'
11 | # need to install java before jenkins
12 | cask 'java'
13 | brew 'jenkins'
14 | brew 'wget'
15 | # Casks
16 | cask 'vlc'
17 | cask 'google-chrome'
18 | cask 'dropbox'
19 | cask 'alfred'
20 | cask 'evernote'
21 | cask 'flux'
22 | cask 'skype'
23 | cask 'virtualbox'
24 | cask 'slack'
25 | cask 'spotify'
26 | cask 'kindle'
27 | cask '1password'
28 | #cask 'iterm2-nightly'
29 | cask 'calibre'
30 | cask 'dash'
31 | cask 'atom'
32 | cask 'edgeview'
33 | cask 'google-drive'
34 | cask 'firefox'
35 | cask 'skitch'
36 | cask 'licecap'
37 | cask 'macdown' #markdown viewer
38 | cask 'sublime'
39 | # To convert mov to gif
40 | # https://gist.github.com/dergachev/4627207
41 | cask 'xquartz'
42 | cask 'fluid'
43 | brew 'gifsicle'
44 |
45 | # for indigo theme
46 | # https://github.com/sergiokopplin/indigo
47 | # http://bundler.io/
48 |
49 | # for react native to run the facebook F8 app
50 | # https://github.com/fbsamples/f8app
51 | brew 'watchman' # https://facebook.github.io/watchman/docs/install.html
52 | brew 'flow' # http://www.flowtype.org/
53 | brew 'mongodb' # https://www.mongodb.org/downloads#production
54 |
55 | # A command to download mac store app
56 | # http://www.softantenna.com/wp/mac/mas-cli/
57 | # https://github.com/argon/mas
58 | tap 'argon/mas'
59 | brew 'mas'
60 | # run download_apps later on
61 |
62 | #go
63 | brew 'go'
64 |
65 | # python
66 | brew 'python'
67 | brew 'python3'
68 |
69 | brew 'carthage'
70 |
71 | # for my blog, install jekyll and bundler
72 | # https://github.com/sergiokopplin/indigo
73 | brew 'yarn' # To edit app.css in Jekyll theme duo
74 | brew cask keybase
75 | brew mpg123
76 | brew ffmpeg #to convert mov to mp4
77 |
--------------------------------------------------------------------------------
/lessconfig.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # After downloading Xcode
4 | sudo xcodebuild -license # agree with license
5 | xcode-select --install # Install command line tool
6 |
7 | # Setup estonian ID at the end.
8 | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
9 | export HOMEBREW_CASK_OPTS="--appdir=/Applications"
10 |
11 | brew list 'git' || brew install 'git'
12 | brew list 'bash-completion' || brew install 'bash-completion'
13 | brew list 'tree' || brew install 'tree'
14 |
15 | brew list 'mpg123' || brew install 'mpg123'
16 |
17 | # Casks
18 | brew cask list 'iterm2' || brew cask install 'iterm2'
19 | brew cask list 'alfred' || brew cask install 'alfred'
20 | brew cask list 'dropbox' || brew cask install 'dropbox'
21 | brew cask list '1password' || brew cask install '1password'
22 | brew cask list 'google-chrome' || brew cask install 'google-chrome'
23 | brew cask list 'evernote' || brew cask install 'evernote'
24 | brew cask list 'slack' || brew cask install 'slack'
25 | brew cask list 'atom' || brew cask install 'atom'
26 | #brew cask list 'vlc' || brew cask install 'vlc'
27 | brew cask list 'skype' || brew cask install 'skype'
28 | brew cask list 'spotify' || brew cask install 'spotify'
29 | #brew cask list 'kindle' || brew cask install 'kindle'
30 |
31 | # Jenkins
32 | #brew cask list 'java' || brew cask install 'java'
33 | #brew list 'wget' || brew install 'wget'
34 |
35 | brew list 'mas' || brew install 'mas'
36 | #mas install 417375580 # BetterSnapTool
37 | mas install 410628904 # Wunderlist
38 | mas install 441258766 # magnet
39 | #mas install 961632517 # Be Focused Pro
40 | #mas install 1003160018 # quip
41 | mas install 1028905953 # Betternet Unlimited VPN Proxy
42 |
43 | mkdir ~/dotfiles/.bash/
44 | cd ~/dotfiles/.bash/
45 | git clone git://github.com/jimeh/git-aware-prompt.git
46 |
47 | # Move code snippets to Xcode
48 | cp -R ~/dotfiles/CodeSnippets ~/Library/Developer/Xcode/UserData/
49 |
50 | brew list 'ruby' || brew install 'ruby'
51 | sudo gem install 'cocoapods'
52 | sudo gem install 'jekyll'
53 |
54 | # Make symlinks
55 | ln -sf ~/dotfiles/.vimrc ~/.vimrc
56 | ln -sf ~/dotfiles/.bash_profile ~/.bash_profile
57 | ln -sf ~/dotfiles/.bashrc ~/.bashrc
58 | ln -sf ~/dotfiles/Brewfile ~/Brewfile
59 | ln -sf ~/dotfiles/.config ~/.config
60 | ln -sf ~/dotfiles/.git-completion.bash ~/.git-completion.bash
61 |
--------------------------------------------------------------------------------
/.config/configstore/firebase-tools.json:
--------------------------------------------------------------------------------
1 | {
2 | "analytics-uuid": "61e27478-aeb9-45dc-a94a-028e4f783e15",
3 | "motd": {
4 | "minVersion": "3.0.5"
5 | },
6 | "motd.fetched": 1520279006243,
7 | "usage": true,
8 | "user": {
9 | "azp": "563584335869-fgrhgmd47bqnekij5i8b5pr03ho849e6.apps.googleusercontent.com",
10 | "aud": "563584335869-fgrhgmd47bqnekij5i8b5pr03ho849e6.apps.googleusercontent.com",
11 | "sub": "106822220920666843641",
12 | "hd": "eversummer.io",
13 | "email": "sato@eversummer.io",
14 | "email_verified": true,
15 | "at_hash": "nG0cjucGYIv_iTnd04hOng",
16 | "exp": 1519693880,
17 | "iss": "accounts.google.com",
18 | "iat": 1519690280
19 | },
20 | "tokens": {
21 | "expires_at": 1520304199869,
22 | "refresh_token": "1/yEQP1ywDETcjxKHCcfYMJ5jVj18ENQYuqR1m6RyaBgU",
23 | "scopes": [
24 | "email",
25 | "https://www.googleapis.com/auth/cloud-platform",
26 | "https://www.googleapis.com/auth/cloudplatformprojects.readonly",
27 | "https://www.googleapis.com/auth/firebase",
28 | "openid"
29 | ],
30 | "access_token": "ya29.Glx2BfDkesvj-f9w6W4Uh7iz8mDjoYc_OdMefvhODZjp9Un8iUOi56Ws__WrCCYfkUDRdTyQWJz2Zj5_7K_CM_XQtPp5yZAL00EVfJMuzySiQEolxn3eMrlwPi9g0Q",
31 | "token_type": "Bearer",
32 | "expires_in": 3600,
33 | "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjgzOWI5MjRiYjY1OWYwNzM1OGZkZjgyODhjZTU5ZjE4OWM0MDI4ZjQifQ.eyJhenAiOiI1NjM1ODQzMzU4NjktZmdyaGdtZDQ3YnFuZWtpajVpOGI1cHIwM2hvODQ5ZTYuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI1NjM1ODQzMzU4NjktZmdyaGdtZDQ3YnFuZWtpajVpOGI1cHIwM2hvODQ5ZTYuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMDY4MjIyMjA5MjA2NjY4NDM2NDEiLCJoZCI6ImV2ZXJzdW1tZXIuaW8iLCJlbWFpbCI6InNhdG9AZXZlcnN1bW1lci5pbyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdF9oYXNoIjoia1RieHZlY0c0aUJUT1dtVVlib09MZyIsImV4cCI6MTUyMDMwNDE5OSwiaXNzIjoiYWNjb3VudHMuZ29vZ2xlLmNvbSIsImlhdCI6MTUyMDMwMDU5OX0.Lju8RXN30wF38HmzTigebxnNfMc5fzu0GFMSOrh6cP_J6mmRYGfTCZmpMXwK_2a_6AIni9VEQWlURxojR9HRfIbP_H2N3vM8_AeXzc15cWJBs5NE1zFhtsT6UA6VYEnUc_E_aQaEni4keyBvSOkrkn41IaBsktUeVra1DM3uCeRYNcvYeXwA00w3Q54DafFCeBlmV65NgH81YwApm3w-XMryLMzwviJVFSwKHUUeZdZYlqMQCYLp66FG13M1EzjZf1OBWKrv5Z7lpIiNRmIRzaJUe99C78YZBG-yBiQZEDojiyQ1RIiD6qe5IEFekOL2em-v7EJLL6Yk6jY6UEbe7g"
34 | },
35 | "activeProjects": {
36 | "/Users/satorusasozaki/Dropbox/Development/Firebase/functions-firecast": "winks-283e6",
37 | "/Users/satorusasozaki/Dropbox/Development/Firebase": "sendvideoviaurl",
38 | "/Users/satorusasozaki/Dropbox/Development/Firebase/functions-samples/quickstarts/thumbnails": "staging"
39 | }
40 | }
--------------------------------------------------------------------------------
/config.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # After downloading Xcode
4 | sudo xcodebuild -license # agree with license
5 | xcode-select --install # Install command line tool
6 |
7 | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
8 | export HOMEBREW_CASK_OPTS="--appdir=/Applications"
9 |
10 | brew install 'git'
11 | brew install 'bash-completion'
12 | brew install 'tree'
13 | brew install 'node'
14 | brew install 'mpg123'
15 |
16 | # Jenkins
17 | brew cask install 'java'
18 | brew install 'jenkins'
19 | brew install 'wget'
20 |
21 | # Casks
22 | brew cask install 'vlc'
23 | brew cask install 'google-chrome'
24 | brew cask install 'dropbox'
25 | brew cask install 'alfred'
26 | brew cask install 'evernote'
27 | brew cask install 'skype'
28 | brew cask install 'virtualbox'
29 | brew cask install 'slack'
30 | brew cask install 'spotify'
31 | brew cask install 'kindle'
32 | brew cask install '1password'
33 | brew cask install 'iterm2'
34 | brew cask install 'calibre'
35 | brew cask install 'dash'
36 | brew cask install 'atom'
37 | brew cask install 'edgeview'
38 | brew cask install 'google-drive'
39 | brew cask install 'firefox'
40 | brew cask install 'skitch'
41 | brew cask install 'licecap'
42 | brew cask install 'macdown'
43 | brew cask install 'keybase'
44 |
45 | # To convert mov to gif
46 | # https://gist.github.com/dergachev/4627207
47 | brew cask install 'xquartz'
48 | brew cask install 'fluid'
49 | brew install 'gifsicle'
50 |
51 | # for react native to run the facebook F8 app
52 | # https://github.com/fbsamples/f8app
53 | brew install 'watchman' # https://facebook.github.io/watchman/docs/install.html
54 | brew install 'flow' # http://www.flowtype.org/
55 | brew install 'mongodb' # https://www.mongodb.org/downloads#production
56 |
57 | brew install 'go'
58 | brew install 'python'
59 | brew install 'python3'
60 |
61 | brew install 'mas'
62 | mas install 417375580 # BetterSnapTool
63 | mas install 823766827 # OneDrive
64 | mas install 539883307 # LINE
65 | mas install 410628904 # Wunderlist
66 | mas install 961632517 # Be Focused Pro
67 | mas install 404478020 # OmniOutliner
68 | mas install 775737590 # ai writer
69 | mas install 1003160018 # quip
70 | mas install 1028905953 # betternet
71 |
72 | # Config github
73 | git config --global user.name satorusasozaki
74 | git config --global user.email sasozakisatoru@gmail.com
75 |
76 | # TODO clone git://github.com/jimeh/git-aware-prompt.git to dotfiles/.bash/
77 |
78 | # Make symlinks
79 | ln -sf ~/dotfiles/.vimrc ~/.vimrc
80 | ln -sf ~/dotfiles/.bash_profile ~/.bash_profile
81 | ln -sf ~/dotfiles/.bashrc ~/.bashrc
82 | ln -sf ~/dotfiles/Brewfile ~/Brewfile
83 | ln -sf ~/dotfiles/.config ~/.config
84 | ln -sf ~/dotfiles/.git-completion.bash ~/.git-completion.bash
85 |
--------------------------------------------------------------------------------
/.config/nvim/init.vim:
--------------------------------------------------------------------------------
1 | if has('vim_starting')
2 | if &compatible
3 | set nocompatible " Be iMproved
4 | endif
5 |
6 | " Required:
7 | set runtimepath+=~/.vim/bundle/neobundle.vim/
8 | endif
9 |
10 | " Required:
11 | call neobundle#begin(expand('~/.vim/bundle/'))
12 |
13 | " Let NeoBundle manage NeoBundle
14 | " Required:
15 | NeoBundleFetch 'Shougo/neobundle.vim'
16 |
17 | " My Bundles here:
18 | " Refer to |:NeoBundle-examples|.
19 | " Note: You don't set neobundle setting in .gvimrc!
20 |
21 | " Neobundle
22 | NeoBundle 'tpope/vim-fugitive'
23 | NeoBundle 'gregsexton/gitv.git'
24 | NeoBundle 'chriskempson/base16-vim'
25 | NeoBundle 'scrooloose/nerdtree'
26 | NeoBundle 'Xuyuanp/nerdtree-git-plugin'
27 | NeoBundle 'plasticboy/vim-markdown'
28 | NeoBundle 'cakebaker/scss-syntax.vim'
29 | NeoBundle 'mustache/vim-mustache-handlebars'
30 | NeoBundle 'othree/html5.vim'
31 | NeoBundle 'kien/ctrlp.vim'
32 | NeoBundle 'rking/ag.vim'
33 | NeoBundle 'bling/vim-airline'
34 |
35 | call neobundle#end()
36 |
37 | " Required:
38 | filetype plugin indent on
39 |
40 | " If there are uninstalled bundles found on startup,
41 | " this will conveniently prompt you to install them.
42 | NeoBundleCheck
43 |
44 | " colorsss
45 | colorscheme base16-ocean
46 | set background=dark
47 |
48 | """""
49 | " END OF NEO BUNDLE
50 | """""
51 |
52 | " Show programming syntax
53 | syntax on
54 |
55 | " Show lines
56 | set number
57 |
58 | " config to soft tab
59 | set softtabstop=2 shiftwidth=2 expandtab
60 |
61 | " Set outside file
62 | set autoread
63 |
64 | "Copy indent from current line when starting a new line
65 | set autoindent
66 | "when we autoindent, backspace will delete the entire tab width, not just individual spaces
67 | set smarttab
68 | set smartindent
69 |
70 |
71 | " Always show status
72 | set laststatus=2
73 |
74 | "searching
75 | set hlsearch " highlight matches
76 | set incsearch " incremental searching
77 | set ignorecase " searches are case insensitive...
78 | set smartcase " ... unless they contain at least one capital letter
79 |
80 | " Remap arrow keys
81 | noremap
82 | noremap
83 | noremap
84 | noremap
85 | " Remap arrow keys for insert mode
86 | inoremap
87 | inoremap
88 | inoremap
89 | inoremap
90 | " Remap arrow keys for visual mode
91 | vnoremap
92 | vnoremap
93 | vnoremap
94 | vnoremap
95 |
96 | " Nerdtree
97 | let g:nerdtree_tabs_open_on_gui_startup=0
98 | nmap ,n :NERDTreeToggle
99 | nmap ,m :NERDTreeFind
100 |
101 | let g:vim_markdown_folding_disabled=1
102 |
103 | let g:ctrlp_custom_ignore = {
104 | \ 'dir' : '(node_modules|virtualenv)'
105 | \}
106 |
107 | " Spell Check toggle
108 | "let g:myLangList=["nospell","en_gb"]
109 | "function! ToggleSpell()
110 | " if !exists( "b:myLang" )
111 | " if &spell
112 | " let b:myLang=index(g:myLangList, &spelllang)
113 | " else
114 | " let b:myLang=0
115 | " endif
116 | " endif
117 | " let b:myLang=b:myLang+1
118 | " if b:myLang>=len(g:myLangList) | let b:myLang=0 | endif
119 | " if b:myLang==0
120 | " setlocal nospell
121 | " else
122 | " execute "setlocal spell spelllang=".get(g:myLangList, b:myLang)
123 | " endif
124 | " echo "spell checking language:" g:myLangList[b:myLang]
125 | "endfunction
126 | "command! ToggleSpell call ToggleSpell()
127 | "nmap :call ToggleSpell()
128 | "
129 | ""Spell suggestion under cursor
130 | "nnoremap :cal SpellSuggest()
131 | "function! SpellSuggest()
132 | " let s = substitute(system("echo ".expand("")." | aspell -a -W2 | grep '^&'"), "^.*:\\s\\(.*\\)\\n", "\\1,", "")
133 | " if s != ""
134 | " let slength = strlen(s)
135 | " let end = 0
136 | " let i = 0
137 | " while end != slength
138 | " let i = i + 1
139 | " let w = matchstr(s, "^\\%(.\\{-}\\zs[^ ,]\\+\\ze,\\)\\{".i."}")
140 | " echon "(".i.")".w." "
141 | " let end = matchend(s, w.",")
142 | " endwhile
143 | " echo ""
144 | " let c = input("Replace with: ")
145 | " if c =~ "^[1-9]\\d*$" && c > 0 && c <= i
146 | " execute "normal! ciw".matchstr(s, "^\\%(.\\{-}\\zs[^ ,]\\+\\ze,\\)\\{".c."}")
147 | " endif
148 | " else
149 | " echo "No suggestions"
150 | " endif
151 | "endfunction
152 | "command! SpellSuggest call SpellSuggest()
153 |
--------------------------------------------------------------------------------
/.config/xbuild/pkgconfig-cache-2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
--------------------------------------------------------------------------------
/.git-completion.bash:
--------------------------------------------------------------------------------
1 | # bash/zsh completion support for core Git.
2 | #
3 | # Copyright (C) 2006,2007 Shawn O. Pearce
4 | # Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
5 | # Distributed under the GNU General Public License, version 2.0.
6 | #
7 | # The contained completion routines provide support for completing:
8 | #
9 | # *) local and remote branch names
10 | # *) local and remote tag names
11 | # *) .git/remotes file names
12 | # *) git 'subcommands'
13 | # *) git email aliases for git-send-email
14 | # *) tree paths within 'ref:path/to/file' expressions
15 | # *) file paths within current working directory and index
16 | # *) common --long-options
17 | #
18 | # To use these routines:
19 | #
20 | # 1) Copy this file to somewhere (e.g. ~/.git-completion.bash).
21 | # 2) Add the following line to your .bashrc/.zshrc:
22 | # source ~/.git-completion.bash
23 | # 3) Consider changing your PS1 to also show the current branch,
24 | # see git-prompt.sh for details.
25 | #
26 | # If you use complex aliases of form '!f() { ... }; f', you can use the null
27 | # command ':' as the first command in the function body to declare the desired
28 | # completion style. For example '!f() { : git commit ; ... }; f' will
29 | # tell the completion to use commit completion. This also works with aliases
30 | # of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '".
31 |
32 | case "$COMP_WORDBREAKS" in
33 | *:*) : great ;;
34 | *) COMP_WORDBREAKS="$COMP_WORDBREAKS:"
35 | esac
36 |
37 | # __gitdir accepts 0 or 1 arguments (i.e., location)
38 | # returns location of .git repo
39 | __gitdir ()
40 | {
41 | if [ -z "${1-}" ]; then
42 | if [ -n "${__git_dir-}" ]; then
43 | echo "$__git_dir"
44 | elif [ -n "${GIT_DIR-}" ]; then
45 | test -d "${GIT_DIR-}" || return 1
46 | echo "$GIT_DIR"
47 | elif [ -d .git ]; then
48 | echo .git
49 | else
50 | git rev-parse --git-dir 2>/dev/null
51 | fi
52 | elif [ -d "$1/.git" ]; then
53 | echo "$1/.git"
54 | else
55 | echo "$1"
56 | fi
57 | }
58 |
59 | # The following function is based on code from:
60 | #
61 | # bash_completion - programmable completion functions for bash 3.2+
62 | #
63 | # Copyright © 2006-2008, Ian Macdonald
64 | # © 2009-2010, Bash Completion Maintainers
65 | #
66 | #
67 | # This program is free software; you can redistribute it and/or modify
68 | # it under the terms of the GNU General Public License as published by
69 | # the Free Software Foundation; either version 2, or (at your option)
70 | # any later version.
71 | #
72 | # This program is distributed in the hope that it will be useful,
73 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
74 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
75 | # GNU General Public License for more details.
76 | #
77 | # You should have received a copy of the GNU General Public License
78 | # along with this program; if not, write to the Free Software Foundation,
79 | # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
80 | #
81 | # The latest version of this software can be obtained here:
82 | #
83 | # http://bash-completion.alioth.debian.org/
84 | #
85 | # RELEASE: 2.x
86 |
87 | # This function can be used to access a tokenized list of words
88 | # on the command line:
89 | #
90 | # __git_reassemble_comp_words_by_ref '=:'
91 | # if test "${words_[cword_-1]}" = -w
92 | # then
93 | # ...
94 | # fi
95 | #
96 | # The argument should be a collection of characters from the list of
97 | # word completion separators (COMP_WORDBREAKS) to treat as ordinary
98 | # characters.
99 | #
100 | # This is roughly equivalent to going back in time and setting
101 | # COMP_WORDBREAKS to exclude those characters. The intent is to
102 | # make option types like --date= and : easy to
103 | # recognize by treating each shell word as a single token.
104 | #
105 | # It is best not to set COMP_WORDBREAKS directly because the value is
106 | # shared with other completion scripts. By the time the completion
107 | # function gets called, COMP_WORDS has already been populated so local
108 | # changes to COMP_WORDBREAKS have no effect.
109 | #
110 | # Output: words_, cword_, cur_.
111 |
112 | __git_reassemble_comp_words_by_ref()
113 | {
114 | local exclude i j first
115 | # Which word separators to exclude?
116 | exclude="${1//[^$COMP_WORDBREAKS]}"
117 | cword_=$COMP_CWORD
118 | if [ -z "$exclude" ]; then
119 | words_=("${COMP_WORDS[@]}")
120 | return
121 | fi
122 | # List of word completion separators has shrunk;
123 | # re-assemble words to complete.
124 | for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++)); do
125 | # Append each nonempty word consisting of just
126 | # word separator characters to the current word.
127 | first=t
128 | while
129 | [ $i -gt 0 ] &&
130 | [ -n "${COMP_WORDS[$i]}" ] &&
131 | # word consists of excluded word separators
132 | [ "${COMP_WORDS[$i]//[^$exclude]}" = "${COMP_WORDS[$i]}" ]
133 | do
134 | # Attach to the previous token,
135 | # unless the previous token is the command name.
136 | if [ $j -ge 2 ] && [ -n "$first" ]; then
137 | ((j--))
138 | fi
139 | first=
140 | words_[$j]=${words_[j]}${COMP_WORDS[i]}
141 | if [ $i = $COMP_CWORD ]; then
142 | cword_=$j
143 | fi
144 | if (($i < ${#COMP_WORDS[@]} - 1)); then
145 | ((i++))
146 | else
147 | # Done.
148 | return
149 | fi
150 | done
151 | words_[$j]=${words_[j]}${COMP_WORDS[i]}
152 | if [ $i = $COMP_CWORD ]; then
153 | cword_=$j
154 | fi
155 | done
156 | }
157 |
158 | if ! type _get_comp_words_by_ref >/dev/null 2>&1; then
159 | _get_comp_words_by_ref ()
160 | {
161 | local exclude cur_ words_ cword_
162 | if [ "$1" = "-n" ]; then
163 | exclude=$2
164 | shift 2
165 | fi
166 | __git_reassemble_comp_words_by_ref "$exclude"
167 | cur_=${words_[cword_]}
168 | while [ $# -gt 0 ]; do
169 | case "$1" in
170 | cur)
171 | cur=$cur_
172 | ;;
173 | prev)
174 | prev=${words_[$cword_-1]}
175 | ;;
176 | words)
177 | words=("${words_[@]}")
178 | ;;
179 | cword)
180 | cword=$cword_
181 | ;;
182 | esac
183 | shift
184 | done
185 | }
186 | fi
187 |
188 | __gitcompappend ()
189 | {
190 | local x i=${#COMPREPLY[@]}
191 | for x in $1; do
192 | if [[ "$x" == "$3"* ]]; then
193 | COMPREPLY[i++]="$2$x$4"
194 | fi
195 | done
196 | }
197 |
198 | __gitcompadd ()
199 | {
200 | COMPREPLY=()
201 | __gitcompappend "$@"
202 | }
203 |
204 | # Generates completion reply, appending a space to possible completion words,
205 | # if necessary.
206 | # It accepts 1 to 4 arguments:
207 | # 1: List of possible completion words.
208 | # 2: A prefix to be added to each possible completion word (optional).
209 | # 3: Generate possible completion matches for this word (optional).
210 | # 4: A suffix to be appended to each possible completion word (optional).
211 | __gitcomp ()
212 | {
213 | local cur_="${3-$cur}"
214 |
215 | case "$cur_" in
216 | --*=)
217 | ;;
218 | *)
219 | local c i=0 IFS=$' \t\n'
220 | for c in $1; do
221 | c="$c${4-}"
222 | if [[ $c == "$cur_"* ]]; then
223 | case $c in
224 | --*=*|*.) ;;
225 | *) c="$c " ;;
226 | esac
227 | COMPREPLY[i++]="${2-}$c"
228 | fi
229 | done
230 | ;;
231 | esac
232 | }
233 |
234 | # Variation of __gitcomp_nl () that appends to the existing list of
235 | # completion candidates, COMPREPLY.
236 | __gitcomp_nl_append ()
237 | {
238 | local IFS=$'\n'
239 | __gitcompappend "$1" "${2-}" "${3-$cur}" "${4- }"
240 | }
241 |
242 | # Generates completion reply from newline-separated possible completion words
243 | # by appending a space to all of them.
244 | # It accepts 1 to 4 arguments:
245 | # 1: List of possible completion words, separated by a single newline.
246 | # 2: A prefix to be added to each possible completion word (optional).
247 | # 3: Generate possible completion matches for this word (optional).
248 | # 4: A suffix to be appended to each possible completion word instead of
249 | # the default space (optional). If specified but empty, nothing is
250 | # appended.
251 | __gitcomp_nl ()
252 | {
253 | COMPREPLY=()
254 | __gitcomp_nl_append "$@"
255 | }
256 |
257 | # Generates completion reply with compgen from newline-separated possible
258 | # completion filenames.
259 | # It accepts 1 to 3 arguments:
260 | # 1: List of possible completion filenames, separated by a single newline.
261 | # 2: A directory prefix to be added to each possible completion filename
262 | # (optional).
263 | # 3: Generate possible completion matches for this word (optional).
264 | __gitcomp_file ()
265 | {
266 | local IFS=$'\n'
267 |
268 | # XXX does not work when the directory prefix contains a tilde,
269 | # since tilde expansion is not applied.
270 | # This means that COMPREPLY will be empty and Bash default
271 | # completion will be used.
272 | __gitcompadd "$1" "${2-}" "${3-$cur}" ""
273 |
274 | # use a hack to enable file mode in bash < 4
275 | compopt -o filenames +o nospace 2>/dev/null ||
276 | compgen -f /non-existing-dir/ > /dev/null
277 | }
278 |
279 | # Execute 'git ls-files', unless the --committable option is specified, in
280 | # which case it runs 'git diff-index' to find out the files that can be
281 | # committed. It return paths relative to the directory specified in the first
282 | # argument, and using the options specified in the second argument.
283 | __git_ls_files_helper ()
284 | {
285 | if [ "$2" == "--committable" ]; then
286 | git -C "$1" diff-index --name-only --relative HEAD
287 | else
288 | # NOTE: $2 is not quoted in order to support multiple options
289 | git -C "$1" ls-files --exclude-standard $2
290 | fi 2>/dev/null
291 | }
292 |
293 |
294 | # __git_index_files accepts 1 or 2 arguments:
295 | # 1: Options to pass to ls-files (required).
296 | # 2: A directory path (optional).
297 | # If provided, only files within the specified directory are listed.
298 | # Sub directories are never recursed. Path must have a trailing
299 | # slash.
300 | __git_index_files ()
301 | {
302 | local dir="$(__gitdir)" root="${2-.}" file
303 |
304 | if [ -d "$dir" ]; then
305 | __git_ls_files_helper "$root" "$1" |
306 | while read -r file; do
307 | case "$file" in
308 | ?*/*) echo "${file%%/*}" ;;
309 | *) echo "$file" ;;
310 | esac
311 | done | sort | uniq
312 | fi
313 | }
314 |
315 | __git_heads ()
316 | {
317 | local dir="$(__gitdir)"
318 | if [ -d "$dir" ]; then
319 | git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
320 | refs/heads
321 | return
322 | fi
323 | }
324 |
325 | __git_tags ()
326 | {
327 | local dir="$(__gitdir)"
328 | if [ -d "$dir" ]; then
329 | git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
330 | refs/tags
331 | return
332 | fi
333 | }
334 |
335 | # __git_refs accepts 0, 1 (to pass to __gitdir), or 2 arguments
336 | # presence of 2nd argument means use the guess heuristic employed
337 | # by checkout for tracking branches
338 | __git_refs ()
339 | {
340 | local i hash dir="$(__gitdir "${1-}")" track="${2-}"
341 | local format refs
342 | if [ -d "$dir" ]; then
343 | case "$cur" in
344 | refs|refs/*)
345 | format="refname"
346 | refs="${cur%/*}"
347 | track=""
348 | ;;
349 | *)
350 | for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; do
351 | if [ -e "$dir/$i" ]; then echo $i; fi
352 | done
353 | format="refname:short"
354 | refs="refs/tags refs/heads refs/remotes"
355 | ;;
356 | esac
357 | git --git-dir="$dir" for-each-ref --format="%($format)" \
358 | $refs
359 | if [ -n "$track" ]; then
360 | # employ the heuristic used by git checkout
361 | # Try to find a remote branch that matches the completion word
362 | # but only output if the branch name is unique
363 | local ref entry
364 | git --git-dir="$dir" for-each-ref --shell --format="ref=%(refname:short)" \
365 | "refs/remotes/" | \
366 | while read -r entry; do
367 | eval "$entry"
368 | ref="${ref#*/}"
369 | if [[ "$ref" == "$cur"* ]]; then
370 | echo "$ref"
371 | fi
372 | done | sort | uniq -u
373 | fi
374 | return
375 | fi
376 | case "$cur" in
377 | refs|refs/*)
378 | git ls-remote "$dir" "$cur*" 2>/dev/null | \
379 | while read -r hash i; do
380 | case "$i" in
381 | *^{}) ;;
382 | *) echo "$i" ;;
383 | esac
384 | done
385 | ;;
386 | *)
387 | echo "HEAD"
388 | git for-each-ref --format="%(refname:short)" -- \
389 | "refs/remotes/$dir/" 2>/dev/null | sed -e "s#^$dir/##"
390 | ;;
391 | esac
392 | }
393 |
394 | # __git_refs2 requires 1 argument (to pass to __git_refs)
395 | __git_refs2 ()
396 | {
397 | local i
398 | for i in $(__git_refs "$1"); do
399 | echo "$i:$i"
400 | done
401 | }
402 |
403 | # __git_refs_remotes requires 1 argument (to pass to ls-remote)
404 | __git_refs_remotes ()
405 | {
406 | local i hash
407 | git ls-remote "$1" 'refs/heads/*' 2>/dev/null | \
408 | while read -r hash i; do
409 | echo "$i:refs/remotes/$1/${i#refs/heads/}"
410 | done
411 | }
412 |
413 | __git_remotes ()
414 | {
415 | local d="$(__gitdir)"
416 | test -d "$d/remotes" && ls -1 "$d/remotes"
417 | git --git-dir="$d" remote
418 | }
419 |
420 | __git_list_merge_strategies ()
421 | {
422 | git merge -s help 2>&1 |
423 | sed -n -e '/[Aa]vailable strategies are: /,/^$/{
424 | s/\.$//
425 | s/.*://
426 | s/^[ ]*//
427 | s/[ ]*$//
428 | p
429 | }'
430 | }
431 |
432 | __git_merge_strategies=
433 | # 'git merge -s help' (and thus detection of the merge strategy
434 | # list) fails, unfortunately, if run outside of any git working
435 | # tree. __git_merge_strategies is set to the empty string in
436 | # that case, and the detection will be repeated the next time it
437 | # is needed.
438 | __git_compute_merge_strategies ()
439 | {
440 | test -n "$__git_merge_strategies" ||
441 | __git_merge_strategies=$(__git_list_merge_strategies)
442 | }
443 |
444 | __git_complete_revlist_file ()
445 | {
446 | local pfx ls ref cur_="$cur"
447 | case "$cur_" in
448 | *..?*:*)
449 | return
450 | ;;
451 | ?*:*)
452 | ref="${cur_%%:*}"
453 | cur_="${cur_#*:}"
454 | case "$cur_" in
455 | ?*/*)
456 | pfx="${cur_%/*}"
457 | cur_="${cur_##*/}"
458 | ls="$ref:$pfx"
459 | pfx="$pfx/"
460 | ;;
461 | *)
462 | ls="$ref"
463 | ;;
464 | esac
465 |
466 | case "$COMP_WORDBREAKS" in
467 | *:*) : great ;;
468 | *) pfx="$ref:$pfx" ;;
469 | esac
470 |
471 | __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" 2>/dev/null \
472 | | sed '/^100... blob /{
473 | s,^.* ,,
474 | s,$, ,
475 | }
476 | /^120000 blob /{
477 | s,^.* ,,
478 | s,$, ,
479 | }
480 | /^040000 tree /{
481 | s,^.* ,,
482 | s,$,/,
483 | }
484 | s/^.* //')" \
485 | "$pfx" "$cur_" ""
486 | ;;
487 | *...*)
488 | pfx="${cur_%...*}..."
489 | cur_="${cur_#*...}"
490 | __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
491 | ;;
492 | *..*)
493 | pfx="${cur_%..*}.."
494 | cur_="${cur_#*..}"
495 | __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
496 | ;;
497 | *)
498 | __gitcomp_nl "$(__git_refs)"
499 | ;;
500 | esac
501 | }
502 |
503 |
504 | # __git_complete_index_file requires 1 argument:
505 | # 1: the options to pass to ls-file
506 | #
507 | # The exception is --committable, which finds the files appropriate commit.
508 | __git_complete_index_file ()
509 | {
510 | local pfx="" cur_="$cur"
511 |
512 | case "$cur_" in
513 | ?*/*)
514 | pfx="${cur_%/*}"
515 | cur_="${cur_##*/}"
516 | pfx="${pfx}/"
517 | ;;
518 | esac
519 |
520 | __gitcomp_file "$(__git_index_files "$1" ${pfx:+"$pfx"})" "$pfx" "$cur_"
521 | }
522 |
523 | __git_complete_file ()
524 | {
525 | __git_complete_revlist_file
526 | }
527 |
528 | __git_complete_revlist ()
529 | {
530 | __git_complete_revlist_file
531 | }
532 |
533 | __git_complete_remote_or_refspec ()
534 | {
535 | local cur_="$cur" cmd="${words[1]}"
536 | local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0
537 | if [ "$cmd" = "remote" ]; then
538 | ((c++))
539 | fi
540 | while [ $c -lt $cword ]; do
541 | i="${words[c]}"
542 | case "$i" in
543 | --mirror) [ "$cmd" = "push" ] && no_complete_refspec=1 ;;
544 | --all)
545 | case "$cmd" in
546 | push) no_complete_refspec=1 ;;
547 | fetch)
548 | return
549 | ;;
550 | *) ;;
551 | esac
552 | ;;
553 | -*) ;;
554 | *) remote="$i"; break ;;
555 | esac
556 | ((c++))
557 | done
558 | if [ -z "$remote" ]; then
559 | __gitcomp_nl "$(__git_remotes)"
560 | return
561 | fi
562 | if [ $no_complete_refspec = 1 ]; then
563 | return
564 | fi
565 | [ "$remote" = "." ] && remote=
566 | case "$cur_" in
567 | *:*)
568 | case "$COMP_WORDBREAKS" in
569 | *:*) : great ;;
570 | *) pfx="${cur_%%:*}:" ;;
571 | esac
572 | cur_="${cur_#*:}"
573 | lhs=0
574 | ;;
575 | +*)
576 | pfx="+"
577 | cur_="${cur_#+}"
578 | ;;
579 | esac
580 | case "$cmd" in
581 | fetch)
582 | if [ $lhs = 1 ]; then
583 | __gitcomp_nl "$(__git_refs2 "$remote")" "$pfx" "$cur_"
584 | else
585 | __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
586 | fi
587 | ;;
588 | pull|remote)
589 | if [ $lhs = 1 ]; then
590 | __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"
591 | else
592 | __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
593 | fi
594 | ;;
595 | push)
596 | if [ $lhs = 1 ]; then
597 | __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"
598 | else
599 | __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"
600 | fi
601 | ;;
602 | esac
603 | }
604 |
605 | __git_complete_strategy ()
606 | {
607 | __git_compute_merge_strategies
608 | case "$prev" in
609 | -s|--strategy)
610 | __gitcomp "$__git_merge_strategies"
611 | return 0
612 | esac
613 | case "$cur" in
614 | --strategy=*)
615 | __gitcomp "$__git_merge_strategies" "" "${cur##--strategy=}"
616 | return 0
617 | ;;
618 | esac
619 | return 1
620 | }
621 |
622 | __git_commands () {
623 | if test -n "${GIT_TESTING_COMMAND_COMPLETION:-}"
624 | then
625 | printf "%s" "${GIT_TESTING_COMMAND_COMPLETION}"
626 | else
627 | git help -a|egrep '^ [a-zA-Z0-9]'
628 | fi
629 | }
630 |
631 | __git_list_all_commands ()
632 | {
633 | local i IFS=" "$'\n'
634 | for i in $(__git_commands)
635 | do
636 | case $i in
637 | *--*) : helper pattern;;
638 | *) echo $i;;
639 | esac
640 | done
641 | }
642 |
643 | __git_all_commands=
644 | __git_compute_all_commands ()
645 | {
646 | test -n "$__git_all_commands" ||
647 | __git_all_commands=$(__git_list_all_commands)
648 | }
649 |
650 | __git_list_porcelain_commands ()
651 | {
652 | local i IFS=" "$'\n'
653 | __git_compute_all_commands
654 | for i in $__git_all_commands
655 | do
656 | case $i in
657 | *--*) : helper pattern;;
658 | applymbox) : ask gittus;;
659 | applypatch) : ask gittus;;
660 | archimport) : import;;
661 | cat-file) : plumbing;;
662 | check-attr) : plumbing;;
663 | check-ignore) : plumbing;;
664 | check-mailmap) : plumbing;;
665 | check-ref-format) : plumbing;;
666 | checkout-index) : plumbing;;
667 | column) : internal helper;;
668 | commit-tree) : plumbing;;
669 | count-objects) : infrequent;;
670 | credential) : credentials;;
671 | credential-*) : credentials helper;;
672 | cvsexportcommit) : export;;
673 | cvsimport) : import;;
674 | cvsserver) : daemon;;
675 | daemon) : daemon;;
676 | diff-files) : plumbing;;
677 | diff-index) : plumbing;;
678 | diff-tree) : plumbing;;
679 | fast-import) : import;;
680 | fast-export) : export;;
681 | fsck-objects) : plumbing;;
682 | fetch-pack) : plumbing;;
683 | fmt-merge-msg) : plumbing;;
684 | for-each-ref) : plumbing;;
685 | hash-object) : plumbing;;
686 | http-*) : transport;;
687 | index-pack) : plumbing;;
688 | init-db) : deprecated;;
689 | local-fetch) : plumbing;;
690 | ls-files) : plumbing;;
691 | ls-remote) : plumbing;;
692 | ls-tree) : plumbing;;
693 | mailinfo) : plumbing;;
694 | mailsplit) : plumbing;;
695 | merge-*) : plumbing;;
696 | mktree) : plumbing;;
697 | mktag) : plumbing;;
698 | pack-objects) : plumbing;;
699 | pack-redundant) : plumbing;;
700 | pack-refs) : plumbing;;
701 | parse-remote) : plumbing;;
702 | patch-id) : plumbing;;
703 | prune) : plumbing;;
704 | prune-packed) : plumbing;;
705 | quiltimport) : import;;
706 | read-tree) : plumbing;;
707 | receive-pack) : plumbing;;
708 | remote-*) : transport;;
709 | rerere) : plumbing;;
710 | rev-list) : plumbing;;
711 | rev-parse) : plumbing;;
712 | runstatus) : plumbing;;
713 | sh-setup) : internal;;
714 | shell) : daemon;;
715 | show-ref) : plumbing;;
716 | send-pack) : plumbing;;
717 | show-index) : plumbing;;
718 | ssh-*) : transport;;
719 | stripspace) : plumbing;;
720 | symbolic-ref) : plumbing;;
721 | unpack-file) : plumbing;;
722 | unpack-objects) : plumbing;;
723 | update-index) : plumbing;;
724 | update-ref) : plumbing;;
725 | update-server-info) : daemon;;
726 | upload-archive) : plumbing;;
727 | upload-pack) : plumbing;;
728 | write-tree) : plumbing;;
729 | var) : infrequent;;
730 | verify-pack) : infrequent;;
731 | verify-tag) : plumbing;;
732 | *) echo $i;;
733 | esac
734 | done
735 | }
736 |
737 | __git_porcelain_commands=
738 | __git_compute_porcelain_commands ()
739 | {
740 | test -n "$__git_porcelain_commands" ||
741 | __git_porcelain_commands=$(__git_list_porcelain_commands)
742 | }
743 |
744 | # Lists all set config variables starting with the given section prefix,
745 | # with the prefix removed.
746 | __git_get_config_variables ()
747 | {
748 | local section="$1" i IFS=$'\n'
749 | for i in $(git --git-dir="$(__gitdir)" config --name-only --get-regexp "^$section\..*" 2>/dev/null); do
750 | echo "${i#$section.}"
751 | done
752 | }
753 |
754 | __git_pretty_aliases ()
755 | {
756 | __git_get_config_variables "pretty"
757 | }
758 |
759 | __git_aliases ()
760 | {
761 | __git_get_config_variables "alias"
762 | }
763 |
764 | # __git_aliased_command requires 1 argument
765 | __git_aliased_command ()
766 | {
767 | local word cmdline=$(git --git-dir="$(__gitdir)" \
768 | config --get "alias.$1")
769 | for word in $cmdline; do
770 | case "$word" in
771 | \!gitk|gitk)
772 | echo "gitk"
773 | return
774 | ;;
775 | \!*) : shell command alias ;;
776 | -*) : option ;;
777 | *=*) : setting env ;;
778 | git) : git itself ;;
779 | \(\)) : skip parens of shell function definition ;;
780 | {) : skip start of shell helper function ;;
781 | :) : skip null command ;;
782 | \'*) : skip opening quote after sh -c ;;
783 | *)
784 | echo "$word"
785 | return
786 | esac
787 | done
788 | }
789 |
790 | # __git_find_on_cmdline requires 1 argument
791 | __git_find_on_cmdline ()
792 | {
793 | local word subcommand c=1
794 | while [ $c -lt $cword ]; do
795 | word="${words[c]}"
796 | for subcommand in $1; do
797 | if [ "$subcommand" = "$word" ]; then
798 | echo "$subcommand"
799 | return
800 | fi
801 | done
802 | ((c++))
803 | done
804 | }
805 |
806 | __git_has_doubledash ()
807 | {
808 | local c=1
809 | while [ $c -lt $cword ]; do
810 | if [ "--" = "${words[c]}" ]; then
811 | return 0
812 | fi
813 | ((c++))
814 | done
815 | return 1
816 | }
817 |
818 | # Try to count non option arguments passed on the command line for the
819 | # specified git command.
820 | # When options are used, it is necessary to use the special -- option to
821 | # tell the implementation were non option arguments begin.
822 | # XXX this can not be improved, since options can appear everywhere, as
823 | # an example:
824 | # git mv x -n y
825 | #
826 | # __git_count_arguments requires 1 argument: the git command executed.
827 | __git_count_arguments ()
828 | {
829 | local word i c=0
830 |
831 | # Skip "git" (first argument)
832 | for ((i=1; i < ${#words[@]}; i++)); do
833 | word="${words[i]}"
834 |
835 | case "$word" in
836 | --)
837 | # Good; we can assume that the following are only non
838 | # option arguments.
839 | ((c = 0))
840 | ;;
841 | "$1")
842 | # Skip the specified git command and discard git
843 | # main options
844 | ((c = 0))
845 | ;;
846 | ?*)
847 | ((c++))
848 | ;;
849 | esac
850 | done
851 |
852 | printf "%d" $c
853 | }
854 |
855 | __git_whitespacelist="nowarn warn error error-all fix"
856 |
857 | _git_am ()
858 | {
859 | local dir="$(__gitdir)"
860 | if [ -d "$dir"/rebase-apply ]; then
861 | __gitcomp "--skip --continue --resolved --abort"
862 | return
863 | fi
864 | case "$cur" in
865 | --whitespace=*)
866 | __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
867 | return
868 | ;;
869 | --*)
870 | __gitcomp "
871 | --3way --committer-date-is-author-date --ignore-date
872 | --ignore-whitespace --ignore-space-change
873 | --interactive --keep --no-utf8 --signoff --utf8
874 | --whitespace= --scissors
875 | "
876 | return
877 | esac
878 | }
879 |
880 | _git_apply ()
881 | {
882 | case "$cur" in
883 | --whitespace=*)
884 | __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
885 | return
886 | ;;
887 | --*)
888 | __gitcomp "
889 | --stat --numstat --summary --check --index
890 | --cached --index-info --reverse --reject --unidiff-zero
891 | --apply --no-add --exclude=
892 | --ignore-whitespace --ignore-space-change
893 | --whitespace= --inaccurate-eof --verbose
894 | "
895 | return
896 | esac
897 | }
898 |
899 | _git_add ()
900 | {
901 | case "$cur" in
902 | --*)
903 | __gitcomp "
904 | --interactive --refresh --patch --update --dry-run
905 | --ignore-errors --intent-to-add
906 | "
907 | return
908 | esac
909 |
910 | # XXX should we check for --update and --all options ?
911 | __git_complete_index_file "--others --modified --directory --no-empty-directory"
912 | }
913 |
914 | _git_archive ()
915 | {
916 | case "$cur" in
917 | --format=*)
918 | __gitcomp "$(git archive --list)" "" "${cur##--format=}"
919 | return
920 | ;;
921 | --remote=*)
922 | __gitcomp_nl "$(__git_remotes)" "" "${cur##--remote=}"
923 | return
924 | ;;
925 | --*)
926 | __gitcomp "
927 | --format= --list --verbose
928 | --prefix= --remote= --exec=
929 | "
930 | return
931 | ;;
932 | esac
933 | __git_complete_file
934 | }
935 |
936 | _git_bisect ()
937 | {
938 | __git_has_doubledash && return
939 |
940 | local subcommands="start bad good skip reset visualize replay log run"
941 | local subcommand="$(__git_find_on_cmdline "$subcommands")"
942 | if [ -z "$subcommand" ]; then
943 | if [ -f "$(__gitdir)"/BISECT_START ]; then
944 | __gitcomp "$subcommands"
945 | else
946 | __gitcomp "replay start"
947 | fi
948 | return
949 | fi
950 |
951 | case "$subcommand" in
952 | bad|good|reset|skip|start)
953 | __gitcomp_nl "$(__git_refs)"
954 | ;;
955 | *)
956 | ;;
957 | esac
958 | }
959 |
960 | _git_branch ()
961 | {
962 | local i c=1 only_local_ref="n" has_r="n"
963 |
964 | while [ $c -lt $cword ]; do
965 | i="${words[c]}"
966 | case "$i" in
967 | -d|-m) only_local_ref="y" ;;
968 | -r) has_r="y" ;;
969 | esac
970 | ((c++))
971 | done
972 |
973 | case "$cur" in
974 | --set-upstream-to=*)
975 | __gitcomp_nl "$(__git_refs)" "" "${cur##--set-upstream-to=}"
976 | ;;
977 | --*)
978 | __gitcomp "
979 | --color --no-color --verbose --abbrev= --no-abbrev
980 | --track --no-track --contains --merged --no-merged
981 | --set-upstream-to= --edit-description --list
982 | --unset-upstream
983 | "
984 | ;;
985 | *)
986 | if [ $only_local_ref = "y" -a $has_r = "n" ]; then
987 | __gitcomp_nl "$(__git_heads)"
988 | else
989 | __gitcomp_nl "$(__git_refs)"
990 | fi
991 | ;;
992 | esac
993 | }
994 |
995 | _git_bundle ()
996 | {
997 | local cmd="${words[2]}"
998 | case "$cword" in
999 | 2)
1000 | __gitcomp "create list-heads verify unbundle"
1001 | ;;
1002 | 3)
1003 | # looking for a file
1004 | ;;
1005 | *)
1006 | case "$cmd" in
1007 | create)
1008 | __git_complete_revlist
1009 | ;;
1010 | esac
1011 | ;;
1012 | esac
1013 | }
1014 |
1015 | _git_checkout ()
1016 | {
1017 | __git_has_doubledash && return
1018 |
1019 | case "$cur" in
1020 | --conflict=*)
1021 | __gitcomp "diff3 merge" "" "${cur##--conflict=}"
1022 | ;;
1023 | --*)
1024 | __gitcomp "
1025 | --quiet --ours --theirs --track --no-track --merge
1026 | --conflict= --orphan --patch
1027 | "
1028 | ;;
1029 | *)
1030 | # check if --track, --no-track, or --no-guess was specified
1031 | # if so, disable DWIM mode
1032 | local flags="--track --no-track --no-guess" track=1
1033 | if [ -n "$(__git_find_on_cmdline "$flags")" ]; then
1034 | track=''
1035 | fi
1036 | __gitcomp_nl "$(__git_refs '' $track)"
1037 | ;;
1038 | esac
1039 | }
1040 |
1041 | _git_cherry ()
1042 | {
1043 | __gitcomp_nl "$(__git_refs)"
1044 | }
1045 |
1046 | _git_cherry_pick ()
1047 | {
1048 | local dir="$(__gitdir)"
1049 | if [ -f "$dir"/CHERRY_PICK_HEAD ]; then
1050 | __gitcomp "--continue --quit --abort"
1051 | return
1052 | fi
1053 | case "$cur" in
1054 | --*)
1055 | __gitcomp "--edit --no-commit --signoff --strategy= --mainline"
1056 | ;;
1057 | *)
1058 | __gitcomp_nl "$(__git_refs)"
1059 | ;;
1060 | esac
1061 | }
1062 |
1063 | _git_clean ()
1064 | {
1065 | case "$cur" in
1066 | --*)
1067 | __gitcomp "--dry-run --quiet"
1068 | return
1069 | ;;
1070 | esac
1071 |
1072 | # XXX should we check for -x option ?
1073 | __git_complete_index_file "--others --directory"
1074 | }
1075 |
1076 | _git_clone ()
1077 | {
1078 | case "$cur" in
1079 | --*)
1080 | __gitcomp "
1081 | --local
1082 | --no-hardlinks
1083 | --shared
1084 | --reference
1085 | --quiet
1086 | --no-checkout
1087 | --bare
1088 | --mirror
1089 | --origin
1090 | --upload-pack
1091 | --template=
1092 | --depth
1093 | --single-branch
1094 | --branch
1095 | "
1096 | return
1097 | ;;
1098 | esac
1099 | }
1100 |
1101 | _git_commit ()
1102 | {
1103 | case "$prev" in
1104 | -c|-C)
1105 | __gitcomp_nl "$(__git_refs)" "" "${cur}"
1106 | return
1107 | ;;
1108 | esac
1109 |
1110 | case "$cur" in
1111 | --cleanup=*)
1112 | __gitcomp "default scissors strip verbatim whitespace
1113 | " "" "${cur##--cleanup=}"
1114 | return
1115 | ;;
1116 | --reuse-message=*|--reedit-message=*|\
1117 | --fixup=*|--squash=*)
1118 | __gitcomp_nl "$(__git_refs)" "" "${cur#*=}"
1119 | return
1120 | ;;
1121 | --untracked-files=*)
1122 | __gitcomp "all no normal" "" "${cur##--untracked-files=}"
1123 | return
1124 | ;;
1125 | --*)
1126 | __gitcomp "
1127 | --all --author= --signoff --verify --no-verify
1128 | --edit --no-edit
1129 | --amend --include --only --interactive
1130 | --dry-run --reuse-message= --reedit-message=
1131 | --reset-author --file= --message= --template=
1132 | --cleanup= --untracked-files --untracked-files=
1133 | --verbose --quiet --fixup= --squash=
1134 | "
1135 | return
1136 | esac
1137 |
1138 | if git rev-parse --verify --quiet HEAD >/dev/null; then
1139 | __git_complete_index_file "--committable"
1140 | else
1141 | # This is the first commit
1142 | __git_complete_index_file "--cached"
1143 | fi
1144 | }
1145 |
1146 | _git_describe ()
1147 | {
1148 | case "$cur" in
1149 | --*)
1150 | __gitcomp "
1151 | --all --tags --contains --abbrev= --candidates=
1152 | --exact-match --debug --long --match --always
1153 | "
1154 | return
1155 | esac
1156 | __gitcomp_nl "$(__git_refs)"
1157 | }
1158 |
1159 | __git_diff_algorithms="myers minimal patience histogram"
1160 |
1161 | __git_diff_common_options="--stat --numstat --shortstat --summary
1162 | --patch-with-stat --name-only --name-status --color
1163 | --no-color --color-words --no-renames --check
1164 | --full-index --binary --abbrev --diff-filter=
1165 | --find-copies-harder
1166 | --text --ignore-space-at-eol --ignore-space-change
1167 | --ignore-all-space --ignore-blank-lines --exit-code
1168 | --quiet --ext-diff --no-ext-diff
1169 | --no-prefix --src-prefix= --dst-prefix=
1170 | --inter-hunk-context=
1171 | --patience --histogram --minimal
1172 | --raw --word-diff
1173 | --dirstat --dirstat= --dirstat-by-file
1174 | --dirstat-by-file= --cumulative
1175 | --diff-algorithm=
1176 | "
1177 |
1178 | _git_diff ()
1179 | {
1180 | __git_has_doubledash && return
1181 |
1182 | case "$cur" in
1183 | --diff-algorithm=*)
1184 | __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
1185 | return
1186 | ;;
1187 | --*)
1188 | __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex
1189 | --base --ours --theirs --no-index
1190 | $__git_diff_common_options
1191 | "
1192 | return
1193 | ;;
1194 | esac
1195 | __git_complete_revlist_file
1196 | }
1197 |
1198 | __git_mergetools_common="diffuse diffmerge ecmerge emerge kdiff3 meld opendiff
1199 | tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc codecompare
1200 | "
1201 |
1202 | _git_difftool ()
1203 | {
1204 | __git_has_doubledash && return
1205 |
1206 | case "$cur" in
1207 | --tool=*)
1208 | __gitcomp "$__git_mergetools_common kompare" "" "${cur##--tool=}"
1209 | return
1210 | ;;
1211 | --*)
1212 | __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex
1213 | --base --ours --theirs
1214 | --no-renames --diff-filter= --find-copies-harder
1215 | --relative --ignore-submodules
1216 | --tool="
1217 | return
1218 | ;;
1219 | esac
1220 | __git_complete_revlist_file
1221 | }
1222 |
1223 | __git_fetch_recurse_submodules="yes on-demand no"
1224 |
1225 | __git_fetch_options="
1226 | --quiet --verbose --append --upload-pack --force --keep --depth=
1227 | --tags --no-tags --all --prune --dry-run --recurse-submodules=
1228 | "
1229 |
1230 | _git_fetch ()
1231 | {
1232 | case "$cur" in
1233 | --recurse-submodules=*)
1234 | __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"
1235 | return
1236 | ;;
1237 | --*)
1238 | __gitcomp "$__git_fetch_options"
1239 | return
1240 | ;;
1241 | esac
1242 | __git_complete_remote_or_refspec
1243 | }
1244 |
1245 | __git_format_patch_options="
1246 | --stdout --attach --no-attach --thread --thread= --no-thread
1247 | --numbered --start-number --numbered-files --keep-subject --signoff
1248 | --signature --no-signature --in-reply-to= --cc= --full-index --binary
1249 | --not --all --cover-letter --no-prefix --src-prefix= --dst-prefix=
1250 | --inline --suffix= --ignore-if-in-upstream --subject-prefix=
1251 | --output-directory --reroll-count --to= --quiet --notes
1252 | "
1253 |
1254 | _git_format_patch ()
1255 | {
1256 | case "$cur" in
1257 | --thread=*)
1258 | __gitcomp "
1259 | deep shallow
1260 | " "" "${cur##--thread=}"
1261 | return
1262 | ;;
1263 | --*)
1264 | __gitcomp "$__git_format_patch_options"
1265 | return
1266 | ;;
1267 | esac
1268 | __git_complete_revlist
1269 | }
1270 |
1271 | _git_fsck ()
1272 | {
1273 | case "$cur" in
1274 | --*)
1275 | __gitcomp "
1276 | --tags --root --unreachable --cache --no-reflogs --full
1277 | --strict --verbose --lost-found
1278 | "
1279 | return
1280 | ;;
1281 | esac
1282 | }
1283 |
1284 | _git_gc ()
1285 | {
1286 | case "$cur" in
1287 | --*)
1288 | __gitcomp "--prune --aggressive"
1289 | return
1290 | ;;
1291 | esac
1292 | }
1293 |
1294 | _git_gitk ()
1295 | {
1296 | _gitk
1297 | }
1298 |
1299 | __git_match_ctag() {
1300 | awk "/^${1//\//\\/}/ { print \$1 }" "$2"
1301 | }
1302 |
1303 | _git_grep ()
1304 | {
1305 | __git_has_doubledash && return
1306 |
1307 | case "$cur" in
1308 | --*)
1309 | __gitcomp "
1310 | --cached
1311 | --text --ignore-case --word-regexp --invert-match
1312 | --full-name --line-number
1313 | --extended-regexp --basic-regexp --fixed-strings
1314 | --perl-regexp
1315 | --files-with-matches --name-only
1316 | --files-without-match
1317 | --max-depth
1318 | --count
1319 | --and --or --not --all-match
1320 | "
1321 | return
1322 | ;;
1323 | esac
1324 |
1325 | case "$cword,$prev" in
1326 | 2,*|*,-*)
1327 | if test -r tags; then
1328 | __gitcomp_nl "$(__git_match_ctag "$cur" tags)"
1329 | return
1330 | fi
1331 | ;;
1332 | esac
1333 |
1334 | __gitcomp_nl "$(__git_refs)"
1335 | }
1336 |
1337 | _git_help ()
1338 | {
1339 | case "$cur" in
1340 | --*)
1341 | __gitcomp "--all --info --man --web"
1342 | return
1343 | ;;
1344 | esac
1345 | __git_compute_all_commands
1346 | __gitcomp "$__git_all_commands $(__git_aliases)
1347 | attributes cli core-tutorial cvs-migration
1348 | diffcore gitk glossary hooks ignore modules
1349 | namespaces repository-layout tutorial tutorial-2
1350 | workflows
1351 | "
1352 | }
1353 |
1354 | _git_init ()
1355 | {
1356 | case "$cur" in
1357 | --shared=*)
1358 | __gitcomp "
1359 | false true umask group all world everybody
1360 | " "" "${cur##--shared=}"
1361 | return
1362 | ;;
1363 | --*)
1364 | __gitcomp "--quiet --bare --template= --shared --shared="
1365 | return
1366 | ;;
1367 | esac
1368 | }
1369 |
1370 | _git_ls_files ()
1371 | {
1372 | case "$cur" in
1373 | --*)
1374 | __gitcomp "--cached --deleted --modified --others --ignored
1375 | --stage --directory --no-empty-directory --unmerged
1376 | --killed --exclude= --exclude-from=
1377 | --exclude-per-directory= --exclude-standard
1378 | --error-unmatch --with-tree= --full-name
1379 | --abbrev --ignored --exclude-per-directory
1380 | "
1381 | return
1382 | ;;
1383 | esac
1384 |
1385 | # XXX ignore options like --modified and always suggest all cached
1386 | # files.
1387 | __git_complete_index_file "--cached"
1388 | }
1389 |
1390 | _git_ls_remote ()
1391 | {
1392 | __gitcomp_nl "$(__git_remotes)"
1393 | }
1394 |
1395 | _git_ls_tree ()
1396 | {
1397 | __git_complete_file
1398 | }
1399 |
1400 | # Options that go well for log, shortlog and gitk
1401 | __git_log_common_options="
1402 | --not --all
1403 | --branches --tags --remotes
1404 | --first-parent --merges --no-merges
1405 | --max-count=
1406 | --max-age= --since= --after=
1407 | --min-age= --until= --before=
1408 | --min-parents= --max-parents=
1409 | --no-min-parents --no-max-parents
1410 | "
1411 | # Options that go well for log and gitk (not shortlog)
1412 | __git_log_gitk_options="
1413 | --dense --sparse --full-history
1414 | --simplify-merges --simplify-by-decoration
1415 | --left-right --notes --no-notes
1416 | "
1417 | # Options that go well for log and shortlog (not gitk)
1418 | __git_log_shortlog_options="
1419 | --author= --committer= --grep=
1420 | --all-match --invert-grep
1421 | "
1422 |
1423 | __git_log_pretty_formats="oneline short medium full fuller email raw format:"
1424 | __git_log_date_formats="relative iso8601 rfc2822 short local default raw"
1425 |
1426 | _git_log ()
1427 | {
1428 | __git_has_doubledash && return
1429 |
1430 | local g="$(git rev-parse --git-dir 2>/dev/null)"
1431 | local merge=""
1432 | if [ -f "$g/MERGE_HEAD" ]; then
1433 | merge="--merge"
1434 | fi
1435 | case "$cur" in
1436 | --pretty=*|--format=*)
1437 | __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
1438 | " "" "${cur#*=}"
1439 | return
1440 | ;;
1441 | --date=*)
1442 | __gitcomp "$__git_log_date_formats" "" "${cur##--date=}"
1443 | return
1444 | ;;
1445 | --decorate=*)
1446 | __gitcomp "full short no" "" "${cur##--decorate=}"
1447 | return
1448 | ;;
1449 | --*)
1450 | __gitcomp "
1451 | $__git_log_common_options
1452 | $__git_log_shortlog_options
1453 | $__git_log_gitk_options
1454 | --root --topo-order --date-order --reverse
1455 | --follow --full-diff
1456 | --abbrev-commit --abbrev=
1457 | --relative-date --date=
1458 | --pretty= --format= --oneline
1459 | --show-signature
1460 | --cherry-pick
1461 | --graph
1462 | --decorate --decorate=
1463 | --walk-reflogs
1464 | --parents --children
1465 | $merge
1466 | $__git_diff_common_options
1467 | --pickaxe-all --pickaxe-regex
1468 | "
1469 | return
1470 | ;;
1471 | esac
1472 | __git_complete_revlist
1473 | }
1474 |
1475 | # Common merge options shared by git-merge(1) and git-pull(1).
1476 | __git_merge_options="
1477 | --no-commit --no-stat --log --no-log --squash --strategy
1478 | --commit --stat --no-squash --ff --no-ff --ff-only --edit --no-edit
1479 | --verify-signatures --no-verify-signatures --gpg-sign
1480 | --quiet --verbose --progress --no-progress
1481 | "
1482 |
1483 | _git_merge ()
1484 | {
1485 | __git_complete_strategy && return
1486 |
1487 | case "$cur" in
1488 | --*)
1489 | __gitcomp "$__git_merge_options
1490 | --rerere-autoupdate --no-rerere-autoupdate --abort"
1491 | return
1492 | esac
1493 | __gitcomp_nl "$(__git_refs)"
1494 | }
1495 |
1496 | _git_mergetool ()
1497 | {
1498 | case "$cur" in
1499 | --tool=*)
1500 | __gitcomp "$__git_mergetools_common tortoisemerge" "" "${cur##--tool=}"
1501 | return
1502 | ;;
1503 | --*)
1504 | __gitcomp "--tool="
1505 | return
1506 | ;;
1507 | esac
1508 | }
1509 |
1510 | _git_merge_base ()
1511 | {
1512 | case "$cur" in
1513 | --*)
1514 | __gitcomp "--octopus --independent --is-ancestor --fork-point"
1515 | return
1516 | ;;
1517 | esac
1518 | __gitcomp_nl "$(__git_refs)"
1519 | }
1520 |
1521 | _git_mv ()
1522 | {
1523 | case "$cur" in
1524 | --*)
1525 | __gitcomp "--dry-run"
1526 | return
1527 | ;;
1528 | esac
1529 |
1530 | if [ $(__git_count_arguments "mv") -gt 0 ]; then
1531 | # We need to show both cached and untracked files (including
1532 | # empty directories) since this may not be the last argument.
1533 | __git_complete_index_file "--cached --others --directory"
1534 | else
1535 | __git_complete_index_file "--cached"
1536 | fi
1537 | }
1538 |
1539 | _git_name_rev ()
1540 | {
1541 | __gitcomp "--tags --all --stdin"
1542 | }
1543 |
1544 | _git_notes ()
1545 | {
1546 | local subcommands='add append copy edit list prune remove show'
1547 | local subcommand="$(__git_find_on_cmdline "$subcommands")"
1548 |
1549 | case "$subcommand,$cur" in
1550 | ,--*)
1551 | __gitcomp '--ref'
1552 | ;;
1553 | ,*)
1554 | case "$prev" in
1555 | --ref)
1556 | __gitcomp_nl "$(__git_refs)"
1557 | ;;
1558 | *)
1559 | __gitcomp "$subcommands --ref"
1560 | ;;
1561 | esac
1562 | ;;
1563 | add,--reuse-message=*|append,--reuse-message=*|\
1564 | add,--reedit-message=*|append,--reedit-message=*)
1565 | __gitcomp_nl "$(__git_refs)" "" "${cur#*=}"
1566 | ;;
1567 | add,--*|append,--*)
1568 | __gitcomp '--file= --message= --reedit-message=
1569 | --reuse-message='
1570 | ;;
1571 | copy,--*)
1572 | __gitcomp '--stdin'
1573 | ;;
1574 | prune,--*)
1575 | __gitcomp '--dry-run --verbose'
1576 | ;;
1577 | prune,*)
1578 | ;;
1579 | *)
1580 | case "$prev" in
1581 | -m|-F)
1582 | ;;
1583 | *)
1584 | __gitcomp_nl "$(__git_refs)"
1585 | ;;
1586 | esac
1587 | ;;
1588 | esac
1589 | }
1590 |
1591 | _git_pull ()
1592 | {
1593 | __git_complete_strategy && return
1594 |
1595 | case "$cur" in
1596 | --recurse-submodules=*)
1597 | __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"
1598 | return
1599 | ;;
1600 | --*)
1601 | __gitcomp "
1602 | --rebase --no-rebase
1603 | $__git_merge_options
1604 | $__git_fetch_options
1605 | "
1606 | return
1607 | ;;
1608 | esac
1609 | __git_complete_remote_or_refspec
1610 | }
1611 |
1612 | __git_push_recurse_submodules="check on-demand"
1613 |
1614 | __git_complete_force_with_lease ()
1615 | {
1616 | local cur_=$1
1617 |
1618 | case "$cur_" in
1619 | --*=)
1620 | ;;
1621 | *:*)
1622 | __gitcomp_nl "$(__git_refs)" "" "${cur_#*:}"
1623 | ;;
1624 | *)
1625 | __gitcomp_nl "$(__git_refs)" "" "$cur_"
1626 | ;;
1627 | esac
1628 | }
1629 |
1630 | _git_push ()
1631 | {
1632 | case "$prev" in
1633 | --repo)
1634 | __gitcomp_nl "$(__git_remotes)"
1635 | return
1636 | ;;
1637 | --recurse-submodules)
1638 | __gitcomp "$__git_push_recurse_submodules"
1639 | return
1640 | ;;
1641 | esac
1642 | case "$cur" in
1643 | --repo=*)
1644 | __gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}"
1645 | return
1646 | ;;
1647 | --recurse-submodules=*)
1648 | __gitcomp "$__git_push_recurse_submodules" "" "${cur##--recurse-submodules=}"
1649 | return
1650 | ;;
1651 | --force-with-lease=*)
1652 | __git_complete_force_with_lease "${cur##--force-with-lease=}"
1653 | return
1654 | ;;
1655 | --*)
1656 | __gitcomp "
1657 | --all --mirror --tags --dry-run --force --verbose
1658 | --quiet --prune --delete --follow-tags
1659 | --receive-pack= --repo= --set-upstream
1660 | --force-with-lease --force-with-lease= --recurse-submodules=
1661 | "
1662 | return
1663 | ;;
1664 | esac
1665 | __git_complete_remote_or_refspec
1666 | }
1667 |
1668 | _git_rebase ()
1669 | {
1670 | local dir="$(__gitdir)"
1671 | if [ -f "$dir"/rebase-merge/interactive ]; then
1672 | __gitcomp "--continue --skip --abort --edit-todo"
1673 | return
1674 | elif [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
1675 | __gitcomp "--continue --skip --abort"
1676 | return
1677 | fi
1678 | __git_complete_strategy && return
1679 | case "$cur" in
1680 | --whitespace=*)
1681 | __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
1682 | return
1683 | ;;
1684 | --*)
1685 | __gitcomp "
1686 | --onto --merge --strategy --interactive
1687 | --preserve-merges --stat --no-stat
1688 | --committer-date-is-author-date --ignore-date
1689 | --ignore-whitespace --whitespace=
1690 | --autosquash --fork-point --no-fork-point
1691 | --autostash
1692 | "
1693 |
1694 | return
1695 | esac
1696 | __gitcomp_nl "$(__git_refs)"
1697 | }
1698 |
1699 | _git_reflog ()
1700 | {
1701 | local subcommands="show delete expire"
1702 | local subcommand="$(__git_find_on_cmdline "$subcommands")"
1703 |
1704 | if [ -z "$subcommand" ]; then
1705 | __gitcomp "$subcommands"
1706 | else
1707 | __gitcomp_nl "$(__git_refs)"
1708 | fi
1709 | }
1710 |
1711 | __git_send_email_confirm_options="always never auto cc compose"
1712 | __git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all"
1713 |
1714 | _git_send_email ()
1715 | {
1716 | case "$prev" in
1717 | --to|--cc|--bcc|--from)
1718 | __gitcomp "
1719 | $(git --git-dir="$(__gitdir)" send-email --dump-aliases 2>/dev/null)
1720 | "
1721 | return
1722 | ;;
1723 | esac
1724 |
1725 | case "$cur" in
1726 | --confirm=*)
1727 | __gitcomp "
1728 | $__git_send_email_confirm_options
1729 | " "" "${cur##--confirm=}"
1730 | return
1731 | ;;
1732 | --suppress-cc=*)
1733 | __gitcomp "
1734 | $__git_send_email_suppresscc_options
1735 | " "" "${cur##--suppress-cc=}"
1736 |
1737 | return
1738 | ;;
1739 | --smtp-encryption=*)
1740 | __gitcomp "ssl tls" "" "${cur##--smtp-encryption=}"
1741 | return
1742 | ;;
1743 | --thread=*)
1744 | __gitcomp "
1745 | deep shallow
1746 | " "" "${cur##--thread=}"
1747 | return
1748 | ;;
1749 | --to=*|--cc=*|--bcc=*|--from=*)
1750 | __gitcomp "
1751 | $(git --git-dir="$(__gitdir)" send-email --dump-aliases 2>/dev/null)
1752 | " "" "${cur#--*=}"
1753 | return
1754 | ;;
1755 | --*)
1756 | __gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to
1757 | --compose --confirm= --dry-run --envelope-sender
1758 | --from --identity
1759 | --in-reply-to --no-chain-reply-to --no-signed-off-by-cc
1760 | --no-suppress-from --no-thread --quiet
1761 | --signed-off-by-cc --smtp-pass --smtp-server
1762 | --smtp-server-port --smtp-encryption= --smtp-user
1763 | --subject --suppress-cc= --suppress-from --thread --to
1764 | --validate --no-validate
1765 | $__git_format_patch_options"
1766 | return
1767 | ;;
1768 | esac
1769 | __git_complete_revlist
1770 | }
1771 |
1772 | _git_stage ()
1773 | {
1774 | _git_add
1775 | }
1776 |
1777 | __git_config_get_set_variables ()
1778 | {
1779 | local prevword word config_file= c=$cword
1780 | while [ $c -gt 1 ]; do
1781 | word="${words[c]}"
1782 | case "$word" in
1783 | --system|--global|--local|--file=*)
1784 | config_file="$word"
1785 | break
1786 | ;;
1787 | -f|--file)
1788 | config_file="$word $prevword"
1789 | break
1790 | ;;
1791 | esac
1792 | prevword=$word
1793 | c=$((--c))
1794 | done
1795 |
1796 | git --git-dir="$(__gitdir)" config $config_file --name-only --list 2>/dev/null
1797 | }
1798 |
1799 | _git_config ()
1800 | {
1801 | case "$prev" in
1802 | branch.*.remote|branch.*.pushremote)
1803 | __gitcomp_nl "$(__git_remotes)"
1804 | return
1805 | ;;
1806 | branch.*.merge)
1807 | __gitcomp_nl "$(__git_refs)"
1808 | return
1809 | ;;
1810 | branch.*.rebase)
1811 | __gitcomp "false true"
1812 | return
1813 | ;;
1814 | remote.pushdefault)
1815 | __gitcomp_nl "$(__git_remotes)"
1816 | return
1817 | ;;
1818 | remote.*.fetch)
1819 | local remote="${prev#remote.}"
1820 | remote="${remote%.fetch}"
1821 | if [ -z "$cur" ]; then
1822 | __gitcomp_nl "refs/heads/" "" "" ""
1823 | return
1824 | fi
1825 | __gitcomp_nl "$(__git_refs_remotes "$remote")"
1826 | return
1827 | ;;
1828 | remote.*.push)
1829 | local remote="${prev#remote.}"
1830 | remote="${remote%.push}"
1831 | __gitcomp_nl "$(git --git-dir="$(__gitdir)" \
1832 | for-each-ref --format='%(refname):%(refname)' \
1833 | refs/heads)"
1834 | return
1835 | ;;
1836 | pull.twohead|pull.octopus)
1837 | __git_compute_merge_strategies
1838 | __gitcomp "$__git_merge_strategies"
1839 | return
1840 | ;;
1841 | color.branch|color.diff|color.interactive|\
1842 | color.showbranch|color.status|color.ui)
1843 | __gitcomp "always never auto"
1844 | return
1845 | ;;
1846 | color.pager)
1847 | __gitcomp "false true"
1848 | return
1849 | ;;
1850 | color.*.*)
1851 | __gitcomp "
1852 | normal black red green yellow blue magenta cyan white
1853 | bold dim ul blink reverse
1854 | "
1855 | return
1856 | ;;
1857 | diff.submodule)
1858 | __gitcomp "log short"
1859 | return
1860 | ;;
1861 | help.format)
1862 | __gitcomp "man info web html"
1863 | return
1864 | ;;
1865 | log.date)
1866 | __gitcomp "$__git_log_date_formats"
1867 | return
1868 | ;;
1869 | sendemail.aliasesfiletype)
1870 | __gitcomp "mutt mailrc pine elm gnus"
1871 | return
1872 | ;;
1873 | sendemail.confirm)
1874 | __gitcomp "$__git_send_email_confirm_options"
1875 | return
1876 | ;;
1877 | sendemail.suppresscc)
1878 | __gitcomp "$__git_send_email_suppresscc_options"
1879 | return
1880 | ;;
1881 | sendemail.transferencoding)
1882 | __gitcomp "7bit 8bit quoted-printable base64"
1883 | return
1884 | ;;
1885 | --get|--get-all|--unset|--unset-all)
1886 | __gitcomp_nl "$(__git_config_get_set_variables)"
1887 | return
1888 | ;;
1889 | *.*)
1890 | return
1891 | ;;
1892 | esac
1893 | case "$cur" in
1894 | --*)
1895 | __gitcomp "
1896 | --system --global --local --file=
1897 | --list --replace-all
1898 | --get --get-all --get-regexp
1899 | --add --unset --unset-all
1900 | --remove-section --rename-section
1901 | --name-only
1902 | "
1903 | return
1904 | ;;
1905 | branch.*.*)
1906 | local pfx="${cur%.*}." cur_="${cur##*.}"
1907 | __gitcomp "remote pushremote merge mergeoptions rebase" "$pfx" "$cur_"
1908 | return
1909 | ;;
1910 | branch.*)
1911 | local pfx="${cur%.*}." cur_="${cur#*.}"
1912 | __gitcomp_nl "$(__git_heads)" "$pfx" "$cur_" "."
1913 | __gitcomp_nl_append $'autosetupmerge\nautosetuprebase\n' "$pfx" "$cur_"
1914 | return
1915 | ;;
1916 | guitool.*.*)
1917 | local pfx="${cur%.*}." cur_="${cur##*.}"
1918 | __gitcomp "
1919 | argprompt cmd confirm needsfile noconsole norescan
1920 | prompt revprompt revunmerged title
1921 | " "$pfx" "$cur_"
1922 | return
1923 | ;;
1924 | difftool.*.*)
1925 | local pfx="${cur%.*}." cur_="${cur##*.}"
1926 | __gitcomp "cmd path" "$pfx" "$cur_"
1927 | return
1928 | ;;
1929 | man.*.*)
1930 | local pfx="${cur%.*}." cur_="${cur##*.}"
1931 | __gitcomp "cmd path" "$pfx" "$cur_"
1932 | return
1933 | ;;
1934 | mergetool.*.*)
1935 | local pfx="${cur%.*}." cur_="${cur##*.}"
1936 | __gitcomp "cmd path trustExitCode" "$pfx" "$cur_"
1937 | return
1938 | ;;
1939 | pager.*)
1940 | local pfx="${cur%.*}." cur_="${cur#*.}"
1941 | __git_compute_all_commands
1942 | __gitcomp_nl "$__git_all_commands" "$pfx" "$cur_"
1943 | return
1944 | ;;
1945 | remote.*.*)
1946 | local pfx="${cur%.*}." cur_="${cur##*.}"
1947 | __gitcomp "
1948 | url proxy fetch push mirror skipDefaultUpdate
1949 | receivepack uploadpack tagopt pushurl
1950 | " "$pfx" "$cur_"
1951 | return
1952 | ;;
1953 | remote.*)
1954 | local pfx="${cur%.*}." cur_="${cur#*.}"
1955 | __gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "."
1956 | __gitcomp_nl_append "pushdefault" "$pfx" "$cur_"
1957 | return
1958 | ;;
1959 | url.*.*)
1960 | local pfx="${cur%.*}." cur_="${cur##*.}"
1961 | __gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur_"
1962 | return
1963 | ;;
1964 | esac
1965 | __gitcomp "
1966 | add.ignoreErrors
1967 | advice.commitBeforeMerge
1968 | advice.detachedHead
1969 | advice.implicitIdentity
1970 | advice.pushNonFastForward
1971 | advice.resolveConflict
1972 | advice.statusHints
1973 | alias.
1974 | am.keepcr
1975 | apply.ignorewhitespace
1976 | apply.whitespace
1977 | branch.autosetupmerge
1978 | branch.autosetuprebase
1979 | browser.
1980 | clean.requireForce
1981 | color.branch
1982 | color.branch.current
1983 | color.branch.local
1984 | color.branch.plain
1985 | color.branch.remote
1986 | color.decorate.HEAD
1987 | color.decorate.branch
1988 | color.decorate.remoteBranch
1989 | color.decorate.stash
1990 | color.decorate.tag
1991 | color.diff
1992 | color.diff.commit
1993 | color.diff.frag
1994 | color.diff.func
1995 | color.diff.meta
1996 | color.diff.new
1997 | color.diff.old
1998 | color.diff.plain
1999 | color.diff.whitespace
2000 | color.grep
2001 | color.grep.context
2002 | color.grep.filename
2003 | color.grep.function
2004 | color.grep.linenumber
2005 | color.grep.match
2006 | color.grep.selected
2007 | color.grep.separator
2008 | color.interactive
2009 | color.interactive.error
2010 | color.interactive.header
2011 | color.interactive.help
2012 | color.interactive.prompt
2013 | color.pager
2014 | color.showbranch
2015 | color.status
2016 | color.status.added
2017 | color.status.changed
2018 | color.status.header
2019 | color.status.nobranch
2020 | color.status.unmerged
2021 | color.status.untracked
2022 | color.status.updated
2023 | color.ui
2024 | commit.status
2025 | commit.template
2026 | core.abbrev
2027 | core.askpass
2028 | core.attributesfile
2029 | core.autocrlf
2030 | core.bare
2031 | core.bigFileThreshold
2032 | core.compression
2033 | core.createObject
2034 | core.deltaBaseCacheLimit
2035 | core.editor
2036 | core.eol
2037 | core.excludesfile
2038 | core.fileMode
2039 | core.fsyncobjectfiles
2040 | core.gitProxy
2041 | core.ignoreStat
2042 | core.ignorecase
2043 | core.logAllRefUpdates
2044 | core.loosecompression
2045 | core.notesRef
2046 | core.packedGitLimit
2047 | core.packedGitWindowSize
2048 | core.pager
2049 | core.preferSymlinkRefs
2050 | core.preloadindex
2051 | core.quotepath
2052 | core.repositoryFormatVersion
2053 | core.safecrlf
2054 | core.sharedRepository
2055 | core.sparseCheckout
2056 | core.symlinks
2057 | core.trustctime
2058 | core.warnAmbiguousRefs
2059 | core.whitespace
2060 | core.worktree
2061 | diff.autorefreshindex
2062 | diff.external
2063 | diff.ignoreSubmodules
2064 | diff.mnemonicprefix
2065 | diff.noprefix
2066 | diff.renameLimit
2067 | diff.renames
2068 | diff.statGraphWidth
2069 | diff.submodule
2070 | diff.suppressBlankEmpty
2071 | diff.tool
2072 | diff.wordRegex
2073 | diff.algorithm
2074 | difftool.
2075 | difftool.prompt
2076 | fetch.recurseSubmodules
2077 | fetch.unpackLimit
2078 | format.attach
2079 | format.cc
2080 | format.coverLetter
2081 | format.headers
2082 | format.numbered
2083 | format.pretty
2084 | format.signature
2085 | format.signoff
2086 | format.subjectprefix
2087 | format.suffix
2088 | format.thread
2089 | format.to
2090 | gc.
2091 | gc.aggressiveWindow
2092 | gc.auto
2093 | gc.autopacklimit
2094 | gc.packrefs
2095 | gc.pruneexpire
2096 | gc.reflogexpire
2097 | gc.reflogexpireunreachable
2098 | gc.rerereresolved
2099 | gc.rerereunresolved
2100 | gitcvs.allbinary
2101 | gitcvs.commitmsgannotation
2102 | gitcvs.dbTableNamePrefix
2103 | gitcvs.dbdriver
2104 | gitcvs.dbname
2105 | gitcvs.dbpass
2106 | gitcvs.dbuser
2107 | gitcvs.enabled
2108 | gitcvs.logfile
2109 | gitcvs.usecrlfattr
2110 | guitool.
2111 | gui.blamehistoryctx
2112 | gui.commitmsgwidth
2113 | gui.copyblamethreshold
2114 | gui.diffcontext
2115 | gui.encoding
2116 | gui.fastcopyblame
2117 | gui.matchtrackingbranch
2118 | gui.newbranchtemplate
2119 | gui.pruneduringfetch
2120 | gui.spellingdictionary
2121 | gui.trustmtime
2122 | help.autocorrect
2123 | help.browser
2124 | help.format
2125 | http.lowSpeedLimit
2126 | http.lowSpeedTime
2127 | http.maxRequests
2128 | http.minSessions
2129 | http.noEPSV
2130 | http.postBuffer
2131 | http.proxy
2132 | http.sslCipherList
2133 | http.sslVersion
2134 | http.sslCAInfo
2135 | http.sslCAPath
2136 | http.sslCert
2137 | http.sslCertPasswordProtected
2138 | http.sslKey
2139 | http.sslVerify
2140 | http.useragent
2141 | i18n.commitEncoding
2142 | i18n.logOutputEncoding
2143 | imap.authMethod
2144 | imap.folder
2145 | imap.host
2146 | imap.pass
2147 | imap.port
2148 | imap.preformattedHTML
2149 | imap.sslverify
2150 | imap.tunnel
2151 | imap.user
2152 | init.templatedir
2153 | instaweb.browser
2154 | instaweb.httpd
2155 | instaweb.local
2156 | instaweb.modulepath
2157 | instaweb.port
2158 | interactive.singlekey
2159 | log.date
2160 | log.decorate
2161 | log.showroot
2162 | mailmap.file
2163 | man.
2164 | man.viewer
2165 | merge.
2166 | merge.conflictstyle
2167 | merge.log
2168 | merge.renameLimit
2169 | merge.renormalize
2170 | merge.stat
2171 | merge.tool
2172 | merge.verbosity
2173 | mergetool.
2174 | mergetool.keepBackup
2175 | mergetool.keepTemporaries
2176 | mergetool.prompt
2177 | notes.displayRef
2178 | notes.rewrite.
2179 | notes.rewrite.amend
2180 | notes.rewrite.rebase
2181 | notes.rewriteMode
2182 | notes.rewriteRef
2183 | pack.compression
2184 | pack.deltaCacheLimit
2185 | pack.deltaCacheSize
2186 | pack.depth
2187 | pack.indexVersion
2188 | pack.packSizeLimit
2189 | pack.threads
2190 | pack.window
2191 | pack.windowMemory
2192 | pager.
2193 | pretty.
2194 | pull.octopus
2195 | pull.twohead
2196 | push.default
2197 | push.followTags
2198 | rebase.autosquash
2199 | rebase.stat
2200 | receive.autogc
2201 | receive.denyCurrentBranch
2202 | receive.denyDeleteCurrent
2203 | receive.denyDeletes
2204 | receive.denyNonFastForwards
2205 | receive.fsckObjects
2206 | receive.unpackLimit
2207 | receive.updateserverinfo
2208 | remote.pushdefault
2209 | remotes.
2210 | repack.usedeltabaseoffset
2211 | rerere.autoupdate
2212 | rerere.enabled
2213 | sendemail.
2214 | sendemail.aliasesfile
2215 | sendemail.aliasfiletype
2216 | sendemail.bcc
2217 | sendemail.cc
2218 | sendemail.cccmd
2219 | sendemail.chainreplyto
2220 | sendemail.confirm
2221 | sendemail.envelopesender
2222 | sendemail.from
2223 | sendemail.identity
2224 | sendemail.multiedit
2225 | sendemail.signedoffbycc
2226 | sendemail.smtpdomain
2227 | sendemail.smtpencryption
2228 | sendemail.smtppass
2229 | sendemail.smtpserver
2230 | sendemail.smtpserveroption
2231 | sendemail.smtpserverport
2232 | sendemail.smtpuser
2233 | sendemail.suppresscc
2234 | sendemail.suppressfrom
2235 | sendemail.thread
2236 | sendemail.to
2237 | sendemail.validate
2238 | showbranch.default
2239 | status.relativePaths
2240 | status.showUntrackedFiles
2241 | status.submodulesummary
2242 | submodule.
2243 | tar.umask
2244 | transfer.unpackLimit
2245 | url.
2246 | user.email
2247 | user.name
2248 | user.signingkey
2249 | web.browser
2250 | branch. remote.
2251 | "
2252 | }
2253 |
2254 | _git_remote ()
2255 | {
2256 | local subcommands="add rename remove set-head set-branches set-url show prune update"
2257 | local subcommand="$(__git_find_on_cmdline "$subcommands")"
2258 | if [ -z "$subcommand" ]; then
2259 | __gitcomp "$subcommands"
2260 | return
2261 | fi
2262 |
2263 | case "$subcommand" in
2264 | rename|remove|set-url|show|prune)
2265 | __gitcomp_nl "$(__git_remotes)"
2266 | ;;
2267 | set-head|set-branches)
2268 | __git_complete_remote_or_refspec
2269 | ;;
2270 | update)
2271 | __gitcomp "$(__git_get_config_variables "remotes")"
2272 | ;;
2273 | *)
2274 | ;;
2275 | esac
2276 | }
2277 |
2278 | _git_replace ()
2279 | {
2280 | __gitcomp_nl "$(__git_refs)"
2281 | }
2282 |
2283 | _git_reset ()
2284 | {
2285 | __git_has_doubledash && return
2286 |
2287 | case "$cur" in
2288 | --*)
2289 | __gitcomp "--merge --mixed --hard --soft --patch"
2290 | return
2291 | ;;
2292 | esac
2293 | __gitcomp_nl "$(__git_refs)"
2294 | }
2295 |
2296 | _git_revert ()
2297 | {
2298 | local dir="$(__gitdir)"
2299 | if [ -f "$dir"/REVERT_HEAD ]; then
2300 | __gitcomp "--continue --quit --abort"
2301 | return
2302 | fi
2303 | case "$cur" in
2304 | --*)
2305 | __gitcomp "--edit --mainline --no-edit --no-commit --signoff"
2306 | return
2307 | ;;
2308 | esac
2309 | __gitcomp_nl "$(__git_refs)"
2310 | }
2311 |
2312 | _git_rm ()
2313 | {
2314 | case "$cur" in
2315 | --*)
2316 | __gitcomp "--cached --dry-run --ignore-unmatch --quiet"
2317 | return
2318 | ;;
2319 | esac
2320 |
2321 | __git_complete_index_file "--cached"
2322 | }
2323 |
2324 | _git_shortlog ()
2325 | {
2326 | __git_has_doubledash && return
2327 |
2328 | case "$cur" in
2329 | --*)
2330 | __gitcomp "
2331 | $__git_log_common_options
2332 | $__git_log_shortlog_options
2333 | --numbered --summary
2334 | "
2335 | return
2336 | ;;
2337 | esac
2338 | __git_complete_revlist
2339 | }
2340 |
2341 | _git_show ()
2342 | {
2343 | __git_has_doubledash && return
2344 |
2345 | case "$cur" in
2346 | --pretty=*|--format=*)
2347 | __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
2348 | " "" "${cur#*=}"
2349 | return
2350 | ;;
2351 | --diff-algorithm=*)
2352 | __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
2353 | return
2354 | ;;
2355 | --*)
2356 | __gitcomp "--pretty= --format= --abbrev-commit --oneline
2357 | --show-signature
2358 | $__git_diff_common_options
2359 | "
2360 | return
2361 | ;;
2362 | esac
2363 | __git_complete_revlist_file
2364 | }
2365 |
2366 | _git_show_branch ()
2367 | {
2368 | case "$cur" in
2369 | --*)
2370 | __gitcomp "
2371 | --all --remotes --topo-order --current --more=
2372 | --list --independent --merge-base --no-name
2373 | --color --no-color
2374 | --sha1-name --sparse --topics --reflog
2375 | "
2376 | return
2377 | ;;
2378 | esac
2379 | __git_complete_revlist
2380 | }
2381 |
2382 | _git_stash ()
2383 | {
2384 | local save_opts='--keep-index --no-keep-index --quiet --patch'
2385 | local subcommands='save list show apply clear drop pop create branch'
2386 | local subcommand="$(__git_find_on_cmdline "$subcommands")"
2387 | if [ -z "$subcommand" ]; then
2388 | case "$cur" in
2389 | --*)
2390 | __gitcomp "$save_opts"
2391 | ;;
2392 | *)
2393 | if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then
2394 | __gitcomp "$subcommands"
2395 | fi
2396 | ;;
2397 | esac
2398 | else
2399 | case "$subcommand,$cur" in
2400 | save,--*)
2401 | __gitcomp "$save_opts"
2402 | ;;
2403 | apply,--*|pop,--*)
2404 | __gitcomp "--index --quiet"
2405 | ;;
2406 | show,--*|drop,--*|branch,--*)
2407 | ;;
2408 | show,*|apply,*|drop,*|pop,*|branch,*)
2409 | __gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
2410 | | sed -n -e 's/:.*//p')"
2411 | ;;
2412 | *)
2413 | ;;
2414 | esac
2415 | fi
2416 | }
2417 |
2418 | _git_submodule ()
2419 | {
2420 | __git_has_doubledash && return
2421 |
2422 | local subcommands="add status init deinit update summary foreach sync"
2423 | if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then
2424 | case "$cur" in
2425 | --*)
2426 | __gitcomp "--quiet --cached"
2427 | ;;
2428 | *)
2429 | __gitcomp "$subcommands"
2430 | ;;
2431 | esac
2432 | return
2433 | fi
2434 | }
2435 |
2436 | _git_svn ()
2437 | {
2438 | local subcommands="
2439 | init fetch clone rebase dcommit log find-rev
2440 | set-tree commit-diff info create-ignore propget
2441 | proplist show-ignore show-externals branch tag blame
2442 | migrate mkdirs reset gc
2443 | "
2444 | local subcommand="$(__git_find_on_cmdline "$subcommands")"
2445 | if [ -z "$subcommand" ]; then
2446 | __gitcomp "$subcommands"
2447 | else
2448 | local remote_opts="--username= --config-dir= --no-auth-cache"
2449 | local fc_opts="
2450 | --follow-parent --authors-file= --repack=
2451 | --no-metadata --use-svm-props --use-svnsync-props
2452 | --log-window-size= --no-checkout --quiet
2453 | --repack-flags --use-log-author --localtime
2454 | --ignore-paths= --include-paths= $remote_opts
2455 | "
2456 | local init_opts="
2457 | --template= --shared= --trunk= --tags=
2458 | --branches= --stdlayout --minimize-url
2459 | --no-metadata --use-svm-props --use-svnsync-props
2460 | --rewrite-root= --prefix= --use-log-author
2461 | --add-author-from $remote_opts
2462 | "
2463 | local cmt_opts="
2464 | --edit --rmdir --find-copies-harder --copy-similarity=
2465 | "
2466 |
2467 | case "$subcommand,$cur" in
2468 | fetch,--*)
2469 | __gitcomp "--revision= --fetch-all $fc_opts"
2470 | ;;
2471 | clone,--*)
2472 | __gitcomp "--revision= $fc_opts $init_opts"
2473 | ;;
2474 | init,--*)
2475 | __gitcomp "$init_opts"
2476 | ;;
2477 | dcommit,--*)
2478 | __gitcomp "
2479 | --merge --strategy= --verbose --dry-run
2480 | --fetch-all --no-rebase --commit-url
2481 | --revision --interactive $cmt_opts $fc_opts
2482 | "
2483 | ;;
2484 | set-tree,--*)
2485 | __gitcomp "--stdin $cmt_opts $fc_opts"
2486 | ;;
2487 | create-ignore,--*|propget,--*|proplist,--*|show-ignore,--*|\
2488 | show-externals,--*|mkdirs,--*)
2489 | __gitcomp "--revision="
2490 | ;;
2491 | log,--*)
2492 | __gitcomp "
2493 | --limit= --revision= --verbose --incremental
2494 | --oneline --show-commit --non-recursive
2495 | --authors-file= --color
2496 | "
2497 | ;;
2498 | rebase,--*)
2499 | __gitcomp "
2500 | --merge --verbose --strategy= --local
2501 | --fetch-all --dry-run $fc_opts
2502 | "
2503 | ;;
2504 | commit-diff,--*)
2505 | __gitcomp "--message= --file= --revision= $cmt_opts"
2506 | ;;
2507 | info,--*)
2508 | __gitcomp "--url"
2509 | ;;
2510 | branch,--*)
2511 | __gitcomp "--dry-run --message --tag"
2512 | ;;
2513 | tag,--*)
2514 | __gitcomp "--dry-run --message"
2515 | ;;
2516 | blame,--*)
2517 | __gitcomp "--git-format"
2518 | ;;
2519 | migrate,--*)
2520 | __gitcomp "
2521 | --config-dir= --ignore-paths= --minimize
2522 | --no-auth-cache --username=
2523 | "
2524 | ;;
2525 | reset,--*)
2526 | __gitcomp "--revision= --parent"
2527 | ;;
2528 | *)
2529 | ;;
2530 | esac
2531 | fi
2532 | }
2533 |
2534 | _git_tag ()
2535 | {
2536 | local i c=1 f=0
2537 | while [ $c -lt $cword ]; do
2538 | i="${words[c]}"
2539 | case "$i" in
2540 | -d|-v)
2541 | __gitcomp_nl "$(__git_tags)"
2542 | return
2543 | ;;
2544 | -f)
2545 | f=1
2546 | ;;
2547 | esac
2548 | ((c++))
2549 | done
2550 |
2551 | case "$prev" in
2552 | -m|-F)
2553 | ;;
2554 | -*|tag)
2555 | if [ $f = 1 ]; then
2556 | __gitcomp_nl "$(__git_tags)"
2557 | fi
2558 | ;;
2559 | *)
2560 | __gitcomp_nl "$(__git_refs)"
2561 | ;;
2562 | esac
2563 |
2564 | case "$cur" in
2565 | --*)
2566 | __gitcomp "
2567 | --list --delete --verify --annotate --message --file
2568 | --sign --cleanup --local-user --force --column --sort
2569 | --contains --points-at
2570 | "
2571 | ;;
2572 | esac
2573 | }
2574 |
2575 | _git_whatchanged ()
2576 | {
2577 | _git_log
2578 | }
2579 |
2580 | __git_main ()
2581 | {
2582 | local i c=1 command __git_dir
2583 |
2584 | while [ $c -lt $cword ]; do
2585 | i="${words[c]}"
2586 | case "$i" in
2587 | --git-dir=*) __git_dir="${i#--git-dir=}" ;;
2588 | --git-dir) ((c++)) ; __git_dir="${words[c]}" ;;
2589 | --bare) __git_dir="." ;;
2590 | --help) command="help"; break ;;
2591 | -c|--work-tree|--namespace) ((c++)) ;;
2592 | -*) ;;
2593 | *) command="$i"; break ;;
2594 | esac
2595 | ((c++))
2596 | done
2597 |
2598 | if [ -z "$command" ]; then
2599 | case "$cur" in
2600 | --*) __gitcomp "
2601 | --paginate
2602 | --no-pager
2603 | --git-dir=
2604 | --bare
2605 | --version
2606 | --exec-path
2607 | --exec-path=
2608 | --html-path
2609 | --man-path
2610 | --info-path
2611 | --work-tree=
2612 | --namespace=
2613 | --no-replace-objects
2614 | --help
2615 | "
2616 | ;;
2617 | *) __git_compute_porcelain_commands
2618 | __gitcomp "$__git_porcelain_commands $(__git_aliases)" ;;
2619 | esac
2620 | return
2621 | fi
2622 |
2623 | local completion_func="_git_${command//-/_}"
2624 | declare -f $completion_func >/dev/null && $completion_func && return
2625 |
2626 | local expansion=$(__git_aliased_command "$command")
2627 | if [ -n "$expansion" ]; then
2628 | words[1]=$expansion
2629 | completion_func="_git_${expansion//-/_}"
2630 | declare -f $completion_func >/dev/null && $completion_func
2631 | fi
2632 | }
2633 |
2634 | __gitk_main ()
2635 | {
2636 | __git_has_doubledash && return
2637 |
2638 | local g="$(__gitdir)"
2639 | local merge=""
2640 | if [ -f "$g/MERGE_HEAD" ]; then
2641 | merge="--merge"
2642 | fi
2643 | case "$cur" in
2644 | --*)
2645 | __gitcomp "
2646 | $__git_log_common_options
2647 | $__git_log_gitk_options
2648 | $merge
2649 | "
2650 | return
2651 | ;;
2652 | esac
2653 | __git_complete_revlist
2654 | }
2655 |
2656 | if [[ -n ${ZSH_VERSION-} ]]; then
2657 | echo "WARNING: this script is deprecated, please see git-completion.zsh" 1>&2
2658 |
2659 | autoload -U +X compinit && compinit
2660 |
2661 | __gitcomp ()
2662 | {
2663 | emulate -L zsh
2664 |
2665 | local cur_="${3-$cur}"
2666 |
2667 | case "$cur_" in
2668 | --*=)
2669 | ;;
2670 | *)
2671 | local c IFS=$' \t\n'
2672 | local -a array
2673 | for c in ${=1}; do
2674 | c="$c${4-}"
2675 | case $c in
2676 | --*=*|*.) ;;
2677 | *) c="$c " ;;
2678 | esac
2679 | array[${#array[@]}+1]="$c"
2680 | done
2681 | compset -P '*[=:]'
2682 | compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
2683 | ;;
2684 | esac
2685 | }
2686 |
2687 | __gitcomp_nl ()
2688 | {
2689 | emulate -L zsh
2690 |
2691 | local IFS=$'\n'
2692 | compset -P '*[=:]'
2693 | compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0
2694 | }
2695 |
2696 | __gitcomp_file ()
2697 | {
2698 | emulate -L zsh
2699 |
2700 | local IFS=$'\n'
2701 | compset -P '*[=:]'
2702 | compadd -Q -p "${2-}" -f -- ${=1} && _ret=0
2703 | }
2704 |
2705 | _git ()
2706 | {
2707 | local _ret=1 cur cword prev
2708 | cur=${words[CURRENT]}
2709 | prev=${words[CURRENT-1]}
2710 | let cword=CURRENT-1
2711 | emulate ksh -c __${service}_main
2712 | let _ret && _default && _ret=0
2713 | return _ret
2714 | }
2715 |
2716 | compdef _git git gitk
2717 | return
2718 | fi
2719 |
2720 | __git_func_wrap ()
2721 | {
2722 | local cur words cword prev
2723 | _get_comp_words_by_ref -n =: cur words cword prev
2724 | $1
2725 | }
2726 |
2727 | # Setup completion for certain functions defined above by setting common
2728 | # variables and workarounds.
2729 | # This is NOT a public function; use at your own risk.
2730 | __git_complete ()
2731 | {
2732 | local wrapper="__git_wrap${2}"
2733 | eval "$wrapper () { __git_func_wrap $2 ; }"
2734 | complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
2735 | || complete -o default -o nospace -F $wrapper $1
2736 | }
2737 |
2738 | # wrapper for backwards compatibility
2739 | _git ()
2740 | {
2741 | __git_wrap__git_main
2742 | }
2743 |
2744 | # wrapper for backwards compatibility
2745 | _gitk ()
2746 | {
2747 | __git_wrap__gitk_main
2748 | }
2749 |
2750 | __git_complete git __git_main
2751 | __git_complete gitk __gitk_main
2752 |
2753 | # The following are necessary only for Cygwin, and only are needed
2754 | # when the user has tab-completed the executable name and consequently
2755 | # included the '.exe' suffix.
2756 | #
2757 | if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
2758 | __git_complete git.exe __git_main
2759 | fi
2760 |
--------------------------------------------------------------------------------