.bashrc
author Oleksandr Gavenko <gavenkoa@gmail.com>
Fri, 18 Nov 2011 01:06:42 +0200
changeset 266 c3dc97f8c1d2
parent 265 acd29a6e6d8d
child 267 180d2b4f3253
permissions -rw-r--r--
Look in all dirs from $MANPATH when complete man page.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
250
405b343c1214 Add remainder how debug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 242
diff changeset
     1
405b343c1214 Add remainder how debug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 242
diff changeset
     2
# set -x
405b343c1214 Add remainder how debug.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 242
diff changeset
     3
# set -u
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
# XXX
265
acd29a6e6d8d Use bash built-in 'test' command.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 264
diff changeset
     6
# [[ -f /etc/bashrc ]] && . /etc/bashrc
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
# XXX for mc, cvs, svn, ...
179
ed15e30ff41a Set editor to VIM. Bind edit command for shells.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 176
diff changeset
     9
export EDITOR=vim
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    10
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
# XXX vim and gnome-terminal have support for 256 colours in fedora 8 at least
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
# Note debian/ubuntu users should install the ncurses-term package to support this
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    13
# export TERM=xterm-256color
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    14
17
e11e0adb941b More verbose prompt, to prevent tangling with another shells.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 16
diff changeset
    15
PS1='bash# '
182
af9e9693646e Set magenta bold font.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 181
diff changeset
    16
# Set magenta bold font.
af9e9693646e Set magenta bold font.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 181
diff changeset
    17
case "$TERM" in
244
64924a7c3689 Colorize PS2.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
    18
  xterm*)
64924a7c3689 Colorize PS2.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
    19
    PS1='\[\033[31m\033[1m\]\h\[\033[35m\]+bash# \[\033[0m\]'
64924a7c3689 Colorize PS2.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
    20
    PS2='\[\033[32m\]> \[\033[0m\]'
182
af9e9693646e Set magenta bold font.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 181
diff changeset
    21
  ;;
af9e9693646e Set magenta bold font.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 181
diff changeset
    22
esac
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    23
265
acd29a6e6d8d Use bash built-in 'test' command.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 264
diff changeset
    24
# if [[ -f ~/.dircolors ]]; then
208
ba6619e43b22 Add '.dircolors' but don't enable it.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    25
#   eval `dircolors -b ~/.dircolors`
ba6619e43b22 Add '.dircolors' but don't enable it.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    26
# fi
ba6619e43b22 Add '.dircolors' but don't enable it.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    27
41
d410aac55409 Easy cd to often used dirs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 34
diff changeset
    28
# Easy cd to often used dirs.
181
11880eae9332 Set CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 180
diff changeset
    29
CDPATH=.:~:~/devel:~/devel/my-devel
41
d410aac55409 Easy cd to often used dirs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 34
diff changeset
    30
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
# Don't store duplicate adjacent items in the history.
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    32
#   ignorespace     do not save lines that start with space
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    33
#   erasedups       all previous lines matching the current line to be removed from
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    34
#                   the history list before that line is saved
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    35
HISTCONTROL=igrorespace:erasedups
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    36
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    37
# Don't store noisy/dumb items.
104
653e4ea98ff9 Exclude 'cd' command from history which comes from MC.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 93
diff changeset
    38
# TIP: MC command start with space.
107
43f69ef5ec58 Remove ? from patterns as I previously incorrectly understand its meaning.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 106
diff changeset
    39
HISTIGNORE=\
43f69ef5ec58 Remove ? from patterns as I previously incorrectly understand its meaning.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 106
diff changeset
    40
"cd ..":"cd ../..":" cd *":\
43f69ef5ec58 Remove ? from patterns as I previously incorrectly understand its meaning.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 106
diff changeset
    41
"e *":\
43f69ef5ec58 Remove ? from patterns as I previously incorrectly understand its meaning.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 106
diff changeset
    42
"sudo mv *":"sudo rm *":"sudo cp *":"sudo mkdir *":"sudo chmod *":"sudo chown *":\
43f69ef5ec58 Remove ? from patterns as I previously incorrectly understand its meaning.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 106
diff changeset
    43
"vlc *":ls:pwd
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    44
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    45
# To these options assigned default value, as they satisfy my needs I comment them.
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    46
# HISTFILE=~/.bash_history  # where is command history stored
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    47
# HISTFILESIZE=500          # how many lines been in $HISTFILE
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    48
# HISTSIZE=500              # how many lines been stored in bash process
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    49
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    50
# Can be XXX /visible. I like bell.
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    51
# set bell-style visible
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    52
171
47aa0a6acc75 Make Bash append rather than overwrite the history.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 168
diff changeset
    53
# Make Bash append rather than overwrite the history.
47aa0a6acc75 Make Bash append rather than overwrite the history.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 168
diff changeset
    54
shopt -s histappend
47aa0a6acc75 Make Bash append rather than overwrite the history.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 168
diff changeset
    55
193
2e4cebaae3cc histreedit histverify
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    56
shopt -s histreedit
2e4cebaae3cc histreedit histverify
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    57
shopt -s histverify
2e4cebaae3cc histreedit histverify
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 182
diff changeset
    58
28
da6841fb89e9 Minor errors in the spelling of a directory component in a cd command will be corrected.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 16
diff changeset
    59
# Minor errors in the spelling of a directory component in a cd command will
da6841fb89e9 Minor errors in the spelling of a directory component in a cd command will be corrected.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 16
diff changeset
    60
# be corrected.
da6841fb89e9 Minor errors in the spelling of a directory component in a cd command will be corrected.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 16
diff changeset
    61
shopt -s cdspell
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    62
43
6c53a61678d7 Added useful bash settings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 42
diff changeset
    63
# Save all lines of a multiple-line command in the same history entry.
6c53a61678d7 Added useful bash settings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 42
diff changeset
    64
shopt -s cmdhist
6c53a61678d7 Added useful bash settings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 42
diff changeset
    65
6c53a61678d7 Added useful bash settings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 42
diff changeset
    66
# Allows files beginning with a dot ('.') to be returned in the results of path-name expansion.
6c53a61678d7 Added useful bash settings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 42
diff changeset
    67
shopt -s dotglob
6c53a61678d7 Added useful bash settings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 42
diff changeset
    68
168
0371cfe5a8f5 ksh-88 egrep-style extended pattern matching .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 157
diff changeset
    69
# ksh-88 egrep-style extended pattern matching.
0371cfe5a8f5 ksh-88 egrep-style extended pattern matching .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 157
diff changeset
    70
shopt -s extglob
0371cfe5a8f5 ksh-88 egrep-style extended pattern matching .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 157
diff changeset
    71
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    72
# Adjust settings according to current terminal window width
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    73
# which may have changed while the last command was running
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    74
# (which is a common occurance for vim/less/etc.)
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    75
# Note this is already set in /etc/bashrc on Fedora 8 at least.
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    76
shopt -s checkwinsize
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    77
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    78
# Let me have core dumps
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    79
ulimit -c unlimited
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    80
44
e4703f904e4b Use bash-completion, if available.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 43
diff changeset
    81
################################################################
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    82
# shortcut aliases
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    83
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    84
alias ..="cd .."        #go to parent dir
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    85
alias ...="cd ../.."    #go to grandparent dir
109
40feef132306 Fix "alias: --: неправильная опция".
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 107
diff changeset
    86
alias -- -="cd -"       # go to previous dir
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    87
alias l.='ls -d .*'     #list hidden files
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    88
alias ll='ls -lhrt'     #extra info compared to "l"
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    89
alias lld='ls -lUd */'  #list directories
231
84c9533f2675 I prefer EN man pages.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 230
diff changeset
    90
# I prefer EN man pages.
84c9533f2675 I prefer EN man pages.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 230
diff changeset
    91
alias man='LANG=C man'
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    92
251
30e947dddaa3 Shorter alias for jobs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 250
diff changeset
    93
alias j='jobs '
30e947dddaa3 Shorter alias for jobs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 250
diff changeset
    94
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    95
# make and change to a directory
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    96
md () { mkdir -p "$1" && cd "$1"; }
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    97
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    98
# GREP_COLOR=bright yellow on black bg.
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    99
# use GREP_COLOR=7 to highlight whitespace on black terminals
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   100
# LANG=C for speed. See also: http://www.pixelbeat.org/scripts/findrepo
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   101
# alias grep='GREP_COLOR="1;33;40" LANG=C grep --color=auto'
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   102
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   103
# alias ls="BLOCK_SIZE=\'1 ls --color=auto" #enable thousands grouping and colour
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   104
# alias minicom='minicom -c on' #enable colour
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   105
# alias cal='cal -3' #show 3 months by default
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   106
# alias units='units -t' #terse mode
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   107
# alias diff='LC_ALL=C TZ=GMT0 diff -Naur' #normalise diffs for distribution
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   108
# alias lynx='lynx -force_html -width=$COLUMNS' #best settings for viewing HTML
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   109
# alias links='links -force-html' #need to enable colour in config menu manually
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   110
# alias xterm='xterm -fb "" -bg black -fg gray -fa "Sans Mono" -fs 10 +sb -sl 3000 -g 80x50+1+1'
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   111
# alias sudo='sudo env PATH=$PATH' #work around sudo built --with-secure-path (ubuntu)
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   112
# alias vim='vim -X' #don't try to contact xserver (which can hang on network issues)
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   113
# alias gdb='gdb -tui' #enable the text window interface if possible
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   114
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   115
# what most people want from od (hexdump)
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   116
# alias hd='od -Ax -tx1z -v'
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   117
57
99d0eb7974d6 Remove --comment-delimiters-on-blank-lines option from indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 45
diff changeset
   118
# --blank-lines-after-procedures --break-before-boolean-operator --braces-on-if-line --braces-on-struct-decl-line
99d0eb7974d6 Remove --comment-delimiters-on-blank-lines option from indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 45
diff changeset
   119
# --comment-indentationn --space-after-cast --line-comments-indentationn --declaration-indentationn --honour-newlines
99d0eb7974d6 Remove --comment-delimiters-on-blank-lines option from indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 45
diff changeset
   120
# --no-space-after-function-call-names --no-tabs --struct-brace-indentationn --start-left-side-of-comments
99d0eb7974d6 Remove --comment-delimiters-on-blank-lines option from indent.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 45
diff changeset
   121
alias indent-bifit="indent -bap -bbo -br -brs -cdw -ce -cli0 -c0 -cs -d0 -di0 -hnl -l120 -lc90 -i4 -npcs -ppi 3 -npsl -nut -sbi4 -sc"
45
5c94d2613433 Added alias for reindent code for our job rules.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 44
diff changeset
   122
11
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   123
# canonicalize path (including resolving symlinks)
339675ac5fd3 Base version of .bashrc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   124
# alias realpath='readlink -f'
32
031655c93305 Special case for CYGWIN to properly display russian letters in rxvt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 30
diff changeset
   125
031655c93305 Special case for CYGWIN to properly display russian letters in rxvt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 30
diff changeset
   126
# Special case for CYGWIN to properly display russian letters in rxvt.
34
cddddb009921 Added useful comment.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 32
diff changeset
   127
# Don't forget set in Windows SHELL=/bin/bash. If default SHELL is sh then .bashrc will not be read.
265
acd29a6e6d8d Use bash built-in 'test' command.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 264
diff changeset
   128
if [[ x$OSTYPE = xcygwin ]]; then
258
e3c456cab7ba Use only $OSTYPE to detect Cygwin.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 257
diff changeset
   129
  export LANG=ru_RU.CP1251
e3c456cab7ba Use only $OSTYPE to detect Cygwin.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 257
diff changeset
   130
  # Avoid permission problem in Cygwin.
e3c456cab7ba Use only $OSTYPE to detect Cygwin.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 257
diff changeset
   131
  umask 0000
32
031655c93305 Special case for CYGWIN to properly display russian letters in rxvt.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 30
diff changeset
   132
fi
126
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   133
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   134
export PATH=$PATH:~/usr/bin
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   135
265
acd29a6e6d8d Use bash built-in 'test' command.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 264
diff changeset
   136
if [[ -z "$MANPATH" ]]; then
126
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   137
  export MANPATH=~/usr/share/man:
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   138
else
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   139
  export MANPATH=$MANPATH:~/usr/share/man:
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   140
fi
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   141
265
acd29a6e6d8d Use bash built-in 'test' command.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 264
diff changeset
   142
if [[ -z "$INFOPATH" ]]; then
126
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   143
  export INFOPATH=~/usr/share/info:
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   144
else
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   145
  export INFOPATH=$INFOPATH:~/usr/share/info:
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   146
fi
d342461b401b Point PATH, MANPATH, INFOPATH to '~/usr'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 109
diff changeset
   147
226
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 221
diff changeset
   148
export PYTHONSTARTUP=~/.pystartup
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 221
diff changeset
   149
150
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   150
################################################################
174
f862e6d84d02 Move key binding as dabbrev-expand defined only in bash.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 171
diff changeset
   151
# Key binding.
f862e6d84d02 Move key binding as dabbrev-expand defined only in bash.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 171
diff changeset
   152
176
88a4aa7a6e7c set -o emacs
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 174
diff changeset
   153
set -o emacs
88a4aa7a6e7c set -o emacs
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 174
diff changeset
   154
174
f862e6d84d02 Move key binding as dabbrev-expand defined only in bash.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 171
diff changeset
   155
bind '"\e/": dabbrev-expand'
179
ed15e30ff41a Set editor to VIM. Bind edit command for shells.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 176
diff changeset
   156
bind '"\ee": edit-and-execute-command'
174
f862e6d84d02 Move key binding as dabbrev-expand defined only in bash.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 171
diff changeset
   157
f862e6d84d02 Move key binding as dabbrev-expand defined only in bash.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 171
diff changeset
   158
################################################################
150
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   159
# Completion.
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   160
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   161
# user commands see only users
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   162
complete -u su passwd write chfn groups slay w sux
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   163
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   164
# bg completes with stopped jobs
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   165
complete -A stopped -P '"%' -S '"' bg
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   166
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   167
# other job commands
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   168
complete -j -P '"%' -S '"' fg jobs disown
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   169
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   170
# readonly and unset complete with shell variables
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   171
complete -v readonly unset
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   172
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   173
# set completes with set options
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   174
complete -A setopt set
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   175
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   176
# shopt completes with shopt options
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   177
complete -A shopt shopt
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   178
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   179
# helptopics
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   180
complete -A helptopic help
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   181
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   182
# unalias completes with aliases
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   183
complete -a unalias
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   184
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   185
# bind completes with readline bindings (make this more intelligent)
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   186
complete -A binding bind
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   187
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   188
# type and which complete on commands
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   189
complete -c command type which
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   190
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   191
# builtin completes on builtins
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   192
complete -b builtin
18b75d04721b Add Completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 127
diff changeset
   193
235
3c0d218db7a3 Add completion for hgsyncew.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 231
diff changeset
   194
_hgsyncew() {
239
8f3d4826aec2 Remove '$' sign from arithmetic contexts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 237
diff changeset
   195
  local cur=${COMP_WORDS[COMP_CWORD]}
237
ff30a2d60ee6 Rename variable.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 236
diff changeset
   196
  COMPREPLY=( $(compgen -W "--push" -- $cur) )
235
3c0d218db7a3 Add completion for hgsyncew.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 231
diff changeset
   197
  return 0
3c0d218db7a3 Add completion for hgsyncew.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 231
diff changeset
   198
}
3c0d218db7a3 Add completion for hgsyncew.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 231
diff changeset
   199
complete -F _hgsyncew -o nospace hgsyncew
3c0d218db7a3 Add completion for hgsyncew.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 231
diff changeset
   200
236
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   201
_pathsearch() {
239
8f3d4826aec2 Remove '$' sign from arithmetic contexts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 237
diff changeset
   202
  local prev cur=${COMP_WORDS[COMP_CWORD]}
8f3d4826aec2 Remove '$' sign from arithmetic contexts.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 237
diff changeset
   203
  [[ $COMP_CWORD > 0 ]] && prev=${COMP_WORDS[COMP_CWORD-1]}
236
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   204
  if [[ $prev = -d ]]; then
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   205
    COMPREPLY=()
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   206
    return 0
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   207
  fi
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   208
  case "$cur" in
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   209
    -*) COMPREPLY=( $(compgen -W "-d --delimiter= -h --help" -- $cur ) ) ;;
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   210
    *) COMPREPLY=() ;;
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   211
  esac
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   212
  return 0
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   213
}
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   214
complete -F _pathsearch -o nospace pathsearch
8469af3b5d40 Add completion for 'pathsearch'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 235
diff changeset
   215
241
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   216
_mycd() {
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   217
  local cur
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   218
  cur=${COMP_WORDS[COMP_CWORD]}
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   219
  if [[ -z "${CDPATH:-}" || "$cur" == ?(.)?(.)/* ]]; then
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   220
    COMPREPLY=( $(compgen -d -- "$cur") )
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   221
    return 0
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   222
  fi
253
70b18b0b9e53 Mark variable as local to avoid overwriting global values.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 252
diff changeset
   223
  local i j k
241
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   224
  for i in ${CDPATH//:/$'\n'}; do
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   225
    k="${#COMPREPLY[@]}"
255
dc8e50b55c7e Small command usage improvement.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 254
diff changeset
   226
    for j in $( compgen -d -- $i/$cur ); do
241
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   227
      COMPREPLY[k++]=${j#$i/}
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   228
    done
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   229
  done
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   230
  return 0
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   231
}
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   232
complete -F _mycd -o nospace cd
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   233
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   234
_man() {
266
c3dc97f8c1d2 Look in all dirs from $MANPATH when complete man page.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 265
diff changeset
   235
  local p
241
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   236
  local cur=${COMP_WORDS[COMP_CWORD]}
266
c3dc97f8c1d2 Look in all dirs from $MANPATH when complete man page.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 265
diff changeset
   237
  local IFS=':
c3dc97f8c1d2 Look in all dirs from $MANPATH when complete man page.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 265
diff changeset
   238
'
c3dc97f8c1d2 Look in all dirs from $MANPATH when complete man page.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 265
diff changeset
   239
  for p in /usr/share/man $MANPATH; do
c3dc97f8c1d2 Look in all dirs from $MANPATH when complete man page.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 265
diff changeset
   240
    p=( $p/man*/* )
c3dc97f8c1d2 Look in all dirs from $MANPATH when complete man page.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 265
diff changeset
   241
    p=( ${p[@]##*/} )
c3dc97f8c1d2 Look in all dirs from $MANPATH when complete man page.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 265
diff changeset
   242
    p=( ${p[@]%.gz} )
c3dc97f8c1d2 Look in all dirs from $MANPATH when complete man page.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 265
diff changeset
   243
    p=( ${p[@]%.*} )
c3dc97f8c1d2 Look in all dirs from $MANPATH when complete man page.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 265
diff changeset
   244
    p=( $(compgen -W '${p[@]}' -- $cur ) )
c3dc97f8c1d2 Look in all dirs from $MANPATH when complete man page.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 265
diff changeset
   245
    COMPREPLY=( ${COMPREPLY[@]} ${p[@]} )
c3dc97f8c1d2 Look in all dirs from $MANPATH when complete man page.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 265
diff changeset
   246
  done
241
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   247
}
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   248
complete -F _man man
e1e0eeee8d51 Enable completion for man pages and CDPATH.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 240
diff changeset
   249
242
a13e9cd16022 Add completion for 'make'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
   250
_make() {
253
70b18b0b9e53 Mark variable as local to avoid overwriting global values.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 252
diff changeset
   251
  local i mk
263
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   252
  local dir=.
242
a13e9cd16022 Add completion for 'make'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
   253
  local cur=${COMP_WORDS[COMP_CWORD]}
263
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   254
  if [[ $cur = -* ]]; then
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   255
    COMPREPLY=( $(compgen -W "-C -f" -- "$cur") )
242
a13e9cd16022 Add completion for 'make'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
   256
    return 0
a13e9cd16022 Add completion for 'make'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
   257
  fi
263
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   258
  [[ $COMP_CWORD > 0 ]] && prev=${COMP_WORDS[COMP_CWORD-1]}
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   259
  for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   260
    case ${COMP_WORDS[i]} in
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   261
      -f) mk=${COMP_WORDS[i+1]} ;;
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   262
      -C) dir=${COMP_WORDS[i+1]} ;;
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   263
    esac
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   264
  done
262
fd0adcd27f18 Complete dirs for '-C' for make.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 258
diff changeset
   265
  if [[ $prev = -C ]]; then
fd0adcd27f18 Complete dirs for '-C' for make.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 258
diff changeset
   266
    COMPREPLY=( $(compgen -d -- "$cur") )
fd0adcd27f18 Complete dirs for '-C' for make.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 258
diff changeset
   267
    return 0
fd0adcd27f18 Complete dirs for '-C' for make.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 258
diff changeset
   268
  fi
263
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   269
  if [[ $prev = -f ]]; then
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   270
    COMPREPLY=( $(cd $dir >/dev/null 2>&1; compgen -f -- "$cur") )
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   271
    return 0
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   272
  fi
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   273
  mk=$dir/$mk
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   274
  [[ -f $mk ]] || mk=$(eval echo $dir/[Mm]akefile)
9a0fc755c9f9 Make '-C' and '-f' option work together.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 262
diff changeset
   275
  [[ -f $mk ]] || return 1
242
a13e9cd16022 Add completion for 'make'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
   276
  COMPREPLY=( $(compgen -W "$(sed -n -e '/^[[:alnum:]_-]*:/{s=^\([^:]*\):.*=\1=;p;}' $mk)" -- $cur) )
a13e9cd16022 Add completion for 'make'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
   277
  return 0
a13e9cd16022 Add completion for 'make'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
   278
}
a13e9cd16022 Add completion for 'make'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
   279
complete -F _make make gmake pmake
a13e9cd16022 Add completion for 'make'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 241
diff changeset
   280
264
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   281
_cygcheck() {
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   282
  local opt
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   283
  local cur=${COMP_WORDS[COMP_CWORD]}
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   284
  case $COMP_CWORD in
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   285
    1)
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   286
      case $cur in
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   287
        -*)
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   288
          COMPREPLY=( $(compgen -W "-v --verbose -h --help -V --version -c --check-setup -s --sysinfo
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   289
            -k --keycheck -f --find-package -l --list-package -p --package-query" -- "$cur") )
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   290
          return 0 ;;
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   291
        *)
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   292
          COMPREPLY=( $(compgen -c -- "$cur") )
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   293
          return 0 ;;
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   294
      esac
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   295
      ;;
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   296
    2)
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   297
      opt=${COMP_WORDS[1]}
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   298
      case $opt in
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   299
        -c|--check-setup|-l|--list-package)
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   300
          pkgs=( /etc/setup/*.lst.gz )
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   301
          pkgs=( ${pkgs[@]##*/} )
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   302
          pkgs=( ${pkgs[@]%.lst.gz} )
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   303
          COMPREPLY=( $(compgen -W '${pkgs[@]}' -- $cur ) )
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   304
          return 0;;
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   305
      esac
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   306
      return 0;;
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   307
  esac
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   308
  return 0
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   309
}
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   310
complete -F _cygcheck cygcheck.exe cygcheck
ba2b44143421 Add completion for cygcheck.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 263
diff changeset
   311
240
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   312
# Use bash-completion, if available.
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   313
if [ -f /etc/bash_completion ]; then
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   314
  # Under Cygwin bash completition start a long time.
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   315
  if [ ! "$OSTYPE" = cygwin ]; then
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   316
    . /etc/bash_completion
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   317
  else
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   318
    # But load local completion anyway.
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   319
    if [ -f ~/.bash_completion ]; then
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   320
      . ~/.bash_completion
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   321
    fi
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   322
  fi
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   323
fi
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   324
if [ -f $HOME/usr/etc/bash_completion ]; then
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   325
  . $HOME/usr/etc/bash_completion
62bea4f80160 Take more priority for 'bash_completion' instead my completion.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 239
diff changeset
   326
fi