969 lines
25 KiB
Bash
969 lines
25 KiB
Bash
#!/bin/bash -e
|
|
|
|
CMD="$0"
|
|
|
|
[ "$NAME" ] || NAME=
|
|
[ "$EMAIL" ] || EMAIL=
|
|
[ "$IRCSERVER" ] || IRCSERVER=irc.freenode.net
|
|
[ "$IRCPORT" ] || IRCPORT=6667
|
|
[ "$IRCNICK" ] || IRCNICK=coward
|
|
[ "$IRCPASS" ] || IRCPASS=
|
|
|
|
die() { echo "$1" 1>&2 && show_help && [ "$2" ] && [ "$2" -ge 0 ] && exit "$2" || exit 1; }
|
|
|
|
# Show help function to be used below
|
|
show_help() {
|
|
awk 'NR>1{print} /^(###|$)/{exit}' "$CMD"
|
|
echo "USAGE: $(basename "$CMD") [arguments]"
|
|
echo "ARGS:"
|
|
MSG=$(awk '/^NARGS=-1; while/,/^esac; done/' "$CMD" | sed -e 's/^[[:space:]]*/ /' -e 's/|/, /' -e 's/)//' | grep '^ -')
|
|
EMSG=$(eval "echo \"$MSG\"")
|
|
echo "$EMSG"
|
|
}
|
|
|
|
# Parse command line options (odd formatting to simplify show_help() above)
|
|
NARGS=-1; while [ "$#" -ne "$NARGS" ]; do NARGS=$#; case $1 in
|
|
# SWITCHES
|
|
-h|--help) # This help message
|
|
show_help; exit 1; ;;
|
|
-n|--name) # Name for git
|
|
shift && NAME="$1" && shift; ;;
|
|
-e|--email) # Email for git
|
|
shift && EMAIL="$1" && shift; ;;
|
|
-s|--server) # server for irssi
|
|
shift && IRCSERVER="$1" && shift; ;;
|
|
-P|--port) # port for irssi
|
|
shift && IRCPORT="$1" && shift; ;;
|
|
-N|--nick) # nick for irssi
|
|
shift && IRCNICK="$1" && shift; ;;
|
|
-p|--password) # password for irssi
|
|
shift && IRCPASS="$1" && shift; ;;
|
|
esac; done
|
|
|
|
[ "$NAME" ] || die "You must provide a name!"
|
|
[ "$EMAIL" ] || die "You must provide an email!"
|
|
|
|
fn_distro(){
|
|
if [ -f /etc/lsb-release ]; then
|
|
os=$(lsb_release -s -d)
|
|
elif [ -f /etc/debian_version ]; then
|
|
os="Debian $(cat /etc/debian_version)"
|
|
elif [ -f /etc/redhat-release ]; then
|
|
os=$(cat /etc/redhat-release)
|
|
else
|
|
os="$(uname -s) $(uname -r)"
|
|
fi
|
|
}
|
|
|
|
UNAMESTR=$(uname)
|
|
if [[ "$UNAMESTR" == 'Linux' ]]; then
|
|
fn_distro
|
|
if [[ "$os" == Ubuntu* ]]; then
|
|
sudo apt-get install -y build-essential git irssi vim-nox zsh tmux
|
|
fi
|
|
elif [[ "$UNAMESTR" == 'Darwin' ]]; then
|
|
# Probably need to set up brew and brew install some stuff here...
|
|
true
|
|
fi
|
|
|
|
read -r -d '' GITIGNOREGLOBAL <<'GITIGNOREGLOBAL'
|
|
# Compiled source #
|
|
###################
|
|
*.com
|
|
*.class
|
|
*.dll
|
|
*.exe
|
|
*.o
|
|
*.so
|
|
|
|
# Packages #
|
|
############
|
|
# It's better to unpack these files and commit the raw source because
|
|
# git has its own built in compression methods.
|
|
*.7z
|
|
*.jar
|
|
*.rar
|
|
*.zip
|
|
*.gz
|
|
*.bzip
|
|
*.xz
|
|
*.lzma
|
|
|
|
#packing-only formats
|
|
*.iso
|
|
*.tar
|
|
|
|
#package management formats
|
|
*.dmg
|
|
*.xpi
|
|
*.gem
|
|
*.egg
|
|
*.deb
|
|
*.rpm
|
|
|
|
# Logs and databases #
|
|
######################
|
|
*.log
|
|
*.sql
|
|
*.sqlite
|
|
|
|
# OS generated files #
|
|
######################
|
|
.DS_Store
|
|
|
|
# Thumbnails
|
|
._*
|
|
|
|
# Files that might appear on external disk
|
|
.Spotlight-V100
|
|
.Trashes
|
|
|
|
# Windows image file caches
|
|
Thumbs.db
|
|
|
|
# Folder config file
|
|
Desktop.ini
|
|
|
|
# NPM
|
|
.npmignore
|
|
|
|
# Other stuff
|
|
*~
|
|
.*.sw?
|
|
.tern-port
|
|
e6Views
|
|
vaViews
|
|
todo.txt
|
|
GITIGNOREGLOBAL
|
|
echo "$GITIGNOREGLOBAL" > "$HOME"/.gitignore_global
|
|
|
|
read -r -d '' GITCONFIG <<'GITCONFIG'
|
|
[user]
|
|
name = %NAME%
|
|
email = %EMAIL%
|
|
[core]
|
|
autocrlf = input
|
|
whitespace = fix,space-before-tab,tab-in-indent,trailing-space
|
|
excludesfile = /Users/csexton/.gitignore_global
|
|
[alias]
|
|
st = status
|
|
co = checkout
|
|
di = diff
|
|
wc = whatchanged
|
|
br = branch
|
|
lg = "log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
|
|
unstage = "reset HEAD --"
|
|
spencer = log --pretty=format:'%Cred%h%Creset -%Creset %s %Cgreen(%cD) %C(bold blue)<%an>%Creset' --author Spencer --since
|
|
since = log --pretty=format:'%Cred%h%Creset -%Creset %s %Cgreen(%cD) %C(bold blue)<%an>%Creset' --author Chris --since
|
|
standup = log --pretty=format:'%Cred%h%Creset -%Creset %s %Cgreen(%cD) %C(bold blue)<%an>%Creset' --author Chris --since yesterday
|
|
yolo = "!git commit -am 'DEAL WITH IT' && git push -f"
|
|
ribbon = tag --force _ribbon origin/master
|
|
ketchup = log --patch --reverse --topo-order --first-parent -m _ribbon..origin/master
|
|
mergedown = merge --no-ff --log
|
|
g = grep --break --heading --line-number
|
|
check = "!git g '// todo'; git g '// fix'; git g '// review'; git g 'debugger';"
|
|
incoming = "!git remote update -p; git log ..@{u}"
|
|
outgoing = log @{u}..
|
|
[branch "master"]
|
|
remote = origin
|
|
merge = refs/heads/master
|
|
[color]
|
|
ui = auto
|
|
[color "branch"]
|
|
current = yellow reverse
|
|
local = yellow
|
|
remote = green
|
|
[color "diff"]
|
|
meta = yellow bold
|
|
frag = magenta bold
|
|
old = red bold
|
|
new = green bold
|
|
[color "status"]
|
|
added = yellow
|
|
changed = green
|
|
untracked = cyan
|
|
[merge]
|
|
log = true
|
|
[url "git@github.com:"]
|
|
insteadOf = "gh:"
|
|
pushInsteadOf = "github:"
|
|
pushInsteadOf = "git://github.com/"
|
|
[url "git://github.com/"]
|
|
insteadOf = "github:"
|
|
[url "git@gist.github.com:"]
|
|
insteadOf = "gst:"
|
|
pushInsteadOf = "gist:"
|
|
pushInsteadOf = "git://gist.github.com/"
|
|
[url "git://gist.github.com/"]
|
|
insteadOf = "gist:"
|
|
[push]
|
|
default = simple
|
|
[credential]
|
|
helper = osxkeychain
|
|
GITCONFIG
|
|
echo "$GITCONFIG" | sed -e "s/%NAME%/$NAME/" | sed -e "s/%EMAIL%/$EMAIL/" > "$HOME"/.gitconfig
|
|
|
|
|
|
read -r -d '' TMUXCONF <<'TMUXCONF'
|
|
# fix colors
|
|
set -g default-terminal "screen-256color"
|
|
|
|
# Arrow movement: nice
|
|
bind -n S-down new-window
|
|
bind -n S-left prev
|
|
bind -n S-right next
|
|
bind -n C-S-left swap-pane -U
|
|
bind -n C-S-right swap-pane -D
|
|
bind -r [ swap-window -t -1
|
|
bind -r ] swap-window -t +1
|
|
bind r source-file ~/.tmux.conf \; display-message " Config reloaded."
|
|
bind R source-file ~/.tmux.conf \; display-message " Config reloaded."
|
|
|
|
# All sutff for a status bar
|
|
set-option -g status on
|
|
set-option -g status-interval 2
|
|
set-option -g status-utf8 on
|
|
set-option -g status-justify "centre"
|
|
set-option -g status-left-length 60
|
|
set-option -g status-right-length 90
|
|
|
|
set -g status-bg black
|
|
set -g status-fg white
|
|
set -g status-left "#H: #T"
|
|
set -g status-right "%H:%M %d-%h-%Y"
|
|
set -g window-status-format "#I:#W"
|
|
set -g window-status-current-format "|#I:#W|"
|
|
|
|
set -g status-interval 1
|
|
set -g status-justify left # align window list
|
|
|
|
# default statusbar colors
|
|
set -g status-fg white
|
|
set -g status-bg default
|
|
|
|
# default window title colors
|
|
set-window-option -g window-status-fg black
|
|
set-window-option -g window-status-bg default
|
|
set-window-option -g window-status-attr dim
|
|
|
|
# active window title colors
|
|
set-window-option -g window-status-current-fg white
|
|
set-window-option -g window-status-current-bg default
|
|
set-window-option -g window-status-current-attr bold
|
|
|
|
# command/message line colors
|
|
set -g message-fg white
|
|
set -g message-bg black
|
|
set -g message-attr bright
|
|
|
|
# Fix window size on new connections
|
|
set -g aggressive-resize on
|
|
|
|
# resize
|
|
unbind Left
|
|
unbind Right
|
|
unbind Down
|
|
unbind Up
|
|
bind -r Left resize-pane -L 2
|
|
bind -r Right resize-pane -R 2
|
|
bind -r Down resize-pane -D 2
|
|
bind -r Up resize-pane -U 2
|
|
|
|
# Toggle mouse on with ^B m
|
|
# Useful for cut/paste interop
|
|
bind m \
|
|
set -g mouse-resize-pane on \;\
|
|
set -g mouse-select-pane on \;\
|
|
set -g mouse-select-window on \;\
|
|
set -g mode-mouse on \;\
|
|
display 'Mouse: ON'
|
|
bind C-v paste-buffer
|
|
|
|
# Toggle mouse off with ^B M
|
|
bind M \
|
|
set -g mouse-resize-pane off \;\
|
|
set -g mouse-select-pane off \;\
|
|
set -g mouse-select-window off \;\
|
|
set -g mode-mouse off \;\
|
|
display 'Mouse: OFF'
|
|
|
|
set-window-option -g mode-keys vi
|
|
|
|
unbind T
|
|
unbind N
|
|
bind -r T clock-mode
|
|
bind -r N next-window
|
|
|
|
# Dvorak vs qwerty vi keys
|
|
unbind h
|
|
unbind t
|
|
unbind d
|
|
unbind n
|
|
bind -r h select-pane -U
|
|
bind -r t select-pane -D
|
|
bind -r d select-pane -L
|
|
bind -r n select-pane -R
|
|
|
|
# I use ^b^A to switch panes quickly
|
|
unbind ^A
|
|
bind ^A select-pane -t :.+
|
|
bind ^O select-pane -t :.-
|
|
|
|
# Fix scrolling?
|
|
#set -g terminal-overrides 'xterm*:smcup@:rmcup@'
|
|
set -g history-limit 10000
|
|
|
|
# Clear terminal scrollback on ^k
|
|
bind -n C-k send-keys -R \; clear-history\; send-keys C-m
|
|
|
|
# Easy splits
|
|
bind-key | split-window -h
|
|
bind-key \ split-window -h
|
|
bind-key - split-window -v
|
|
bind-key k kill-pane
|
|
bind-key K kill-window
|
|
|
|
#set-option -g default-command "reattach-to-user-namespace -l zsh"
|
|
|
|
##CLIPBOARD selection integration
|
|
##Requires prefix key before the command key
|
|
#Copy tmux paste buffer to CLIPBOARD
|
|
#bind C-c run "tmux show-buffer | pbcopy"
|
|
#Copy CLIPBOARD to tmux paste buffer and paste tmux paste buffer
|
|
#bind C-v run "tmux set-buffer -- \"$(pbpaste)\"; tmux paste-buffer"
|
|
|
|
# Nested tmux support
|
|
bind-key b send-prefix
|
|
|
|
# Multiple server support
|
|
bind s set -g synchronize-panes
|
|
|
|
bind-key -t vi-copy 'v' begin-selection
|
|
bind-key -t vi-copy 'y' copy-selection
|
|
|
|
bind-key -t vi-copy 'd' cursor-left
|
|
bind-key -t vi-copy 'h' cursor-down
|
|
bind-key -t vi-copy 't' cursor-up
|
|
bind-key -t vi-copy 'n' cursor-right
|
|
bind-key -t vi-copy 'l' search-again
|
|
|
|
# Move panes between windows
|
|
bind -r < join-pane -t -1.0
|
|
bind -r > join-pane -t +1.0
|
|
# Reminder: ^b ! breaks panes out
|
|
TMUXCONF
|
|
echo "$TMUXCONF" > "$HOME"/.tmux.conf
|
|
|
|
read -r -d '' VIMRC <<'VIMRC'
|
|
set nocompatible " be iMproved
|
|
|
|
let iCanHazPlugged=1
|
|
let vim_plug_file=expand("~/.vim/autoload/plug.vim")
|
|
if !filereadable(vim_plug_file)
|
|
echo "Installing vim-plug"
|
|
echo ""
|
|
silent !mkdir -p ~/.vim/autoload
|
|
silent !curl -fLo ~/.vim/autoload/plug.vim https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
|
let iCanHazPlugged=0
|
|
endif
|
|
|
|
call plug#begin()
|
|
|
|
" My Plugs here:
|
|
"
|
|
" original repos on github
|
|
Plug 'majutsushi/tagbar'
|
|
" Plug 'altercation/vim-colors-solarized'
|
|
|
|
" Github repos of the user 'vim-scripts'
|
|
" => can omit the username part for some plugins
|
|
Plug 'Raimondi/delimitMate'
|
|
Plug 'ctrlp.vim'
|
|
Plug 'ervandew/supertab'
|
|
Plug 'fisadev/FixedTaskList.vim'
|
|
Plug 'fisadev/vim-ctrlp-cmdpalette'
|
|
Plug 'fatih/vim-go'
|
|
Plug 'https://github.com/scrooloose/nerdtree.git', { 'on': ['NERDTreeToggle', 'NERDTreeFind'] }
|
|
Plug 'https://github.com/tpope/vim-fugitive.git'
|
|
Plug 'https://github.com/vim-scripts/LustyJuggler.git'
|
|
Plug 'lilydjwg/colorizer'
|
|
Plug 'moll/vim-bbye'
|
|
Plug 'syntastic'
|
|
Plug 'terryma/vim-multiple-cursors'
|
|
Plug 'vim-airline'
|
|
Plug 'nathanaelkane/vim-indent-guides'
|
|
Plug 'leafgarland/typescript-vim'
|
|
Plug 'guns/xterm-color-table.vim'
|
|
|
|
" This one is sort of large, so disabling unless I really need it.
|
|
" Plug 'klen/python-mode'
|
|
|
|
" non github repos
|
|
" Plug 'git://git.wincent.com/command-t.git'
|
|
" ...
|
|
|
|
call plug#end()
|
|
|
|
if iCanHazPlugged == 0
|
|
echo "Installing plugs"
|
|
echo ""
|
|
:PlugUpdate
|
|
endif
|
|
|
|
"====[ Set various behavior preferences ]==================
|
|
|
|
set tabstop=4
|
|
set shiftwidth=4
|
|
set softtabstop=4
|
|
set noexpandtab
|
|
set smartindent
|
|
filetype indent off
|
|
filetype plugin on
|
|
|
|
syntax on
|
|
set t_Co=256
|
|
set background=dark
|
|
|
|
" The following are commented out as they cause vim to behave a lot
|
|
" differently from regular Vi. They are highly recommended though.
|
|
"set showcmd " Show (partial) command in status line.
|
|
set showmatch " Show matching brackets.
|
|
set ignorecase " Do case insensitive matching
|
|
set smartcase " Do smart case matching
|
|
"set incsearch " Incremental search
|
|
set autowrite " Automatically save before commands like :next and :make
|
|
set hidden " Hide buffers when they are abandoned
|
|
set mouse=a " Enable mouse usage (all modes) in terminals
|
|
set scrolloff=3
|
|
set hls
|
|
|
|
set browsedir=buffer
|
|
|
|
colorscheme desert
|
|
|
|
"====[ Change various key bindings ]=======================
|
|
|
|
vnoremap < <gv
|
|
vnoremap > >gv
|
|
|
|
nnoremap < <<
|
|
nnoremap > >>
|
|
|
|
set nu
|
|
|
|
" Dvorak it!
|
|
no d h
|
|
no h j
|
|
no t k
|
|
no n l
|
|
no j d
|
|
no l n
|
|
no L N
|
|
" Replaces s with the :, I prefer having s around...
|
|
" no s :
|
|
" no S :
|
|
|
|
" Added benefits
|
|
no - $
|
|
no _ ^
|
|
|
|
no N <C-w><C-w>
|
|
no D <C-w>W
|
|
no S <C-w><C-r>
|
|
|
|
no H 20<down>
|
|
no T 20<up>
|
|
|
|
no <Leader>h H
|
|
no <Leader>m M
|
|
no <Leader>l L
|
|
|
|
map Q <Nop>
|
|
|
|
nnoremap <C-u> :redo<cr>
|
|
nnoremap <F5> :set paste!<CR>
|
|
command! W :w
|
|
|
|
set backspace=2
|
|
|
|
set wildchar=<Tab> wildmenu wildmode=full
|
|
set wildcharm=<C-Z>
|
|
|
|
" shush the bell
|
|
set noerrorbells
|
|
set vb
|
|
set t_vb=
|
|
|
|
set directory^=$HOME/.vim_swap/ "put all swap files together in one place
|
|
|
|
let mapleader = ","
|
|
|
|
nmap <silent> <Leader>. :LustyJuggler<CR>
|
|
let g:LustyJugglerKeyboardLayout = "dvorak"
|
|
|
|
nnoremap <silent> <Leader>/ :nohlsearch<CR>
|
|
|
|
nnoremap <Leader>q :Bdelete!<CR>
|
|
|
|
"====[ Enable ctrlp settings ]=============================
|
|
|
|
augroup ctrlp
|
|
autocmd!
|
|
|
|
let g:ctrlp_map='<Leader>p'
|
|
let g:ctrlp_working_path_mode=''
|
|
let g:ctrlp_cmd = 'CtrlPMixed'
|
|
|
|
set wildignore+=*/tmp/*,*.so,*.swp,*.zip
|
|
let g:ctrlp_user_command="find %s ! -wholename '*/.git/*' ! -wholename '*/node_modules/*' ! -wholename '*/report/*' -type f"
|
|
augroup END
|
|
|
|
"====[ Set syntastic options ]=============================
|
|
|
|
" Syntastic options
|
|
let g:syntastic_check_on_open=1
|
|
let g:syntastic_enable_signs=1
|
|
|
|
let g:syntastic_error_symbol='✗'
|
|
let g:syntastic_warning_symbol='⚠'
|
|
|
|
let g:syntastic_enable_balloons = 1
|
|
let g:syntastic_auto_loc_list=2
|
|
|
|
let g:syntastic_loc_list_height=6
|
|
|
|
let g:syntastic_cpp_checkers = ['clang_checker -std=c++1y']
|
|
let g:syntastic_stl_format = '[%E{Err: %fe #%e}%B{, }%W{Warn: %fw #%w}]'
|
|
|
|
"====[ Set JavaScript options ]============================
|
|
|
|
augroup jsopts
|
|
autocmd!
|
|
autocmd BufNewFile,BufRead *.json set ft=javascript
|
|
function! TrimWhiteSpace()
|
|
%s/\s\+$//e
|
|
endfunction
|
|
let g:tlist_javascript_settings = 'javascript;a:array;b:boolean;c:class;f:function;m:method;n:number;o:object;p:property;s:string;v:variable'
|
|
au FileType javascript setlocal equalprg=~/local/bin/js-beautify\ -f\ -\ -q\ -t\ -w\ 120\ -b\ \"end-expand\"
|
|
au FileType javascript set suffixesadd=.js,.json
|
|
au FileType javascript set includeexpr=FindRequire(v:fname)
|
|
autocmd FileType javascript autocmd FileWritePre * :call TrimWhiteSpace()
|
|
autocmd FileType javascript autocmd FileAppendPre * :call TrimWhiteSpace()
|
|
autocmd FileType javascript autocmd FilterWritePre * :call TrimWhiteSpace()
|
|
autocmd FileType javascript autocmd BufWritePre * :call TrimWhiteSpace()
|
|
let g:syntastic_javascript_checkers = ['jshint']
|
|
"let g:syntastic_javascript_jshint_args = "--config ~/.jshintrc"
|
|
" Code Folding
|
|
au FileType javascript syntax region foldBraces start=/{/ end=/}/ transparent fold keepend extend
|
|
au FileType javascript setlocal foldmethod=syntax
|
|
au FileType javascript setlocal foldlevel=99
|
|
augroup END
|
|
|
|
"====[ Set golang options ]================================
|
|
|
|
augroup golang
|
|
autocmd!
|
|
" autocmd FileType go autocmd BufWritePre <buffer> Fmt
|
|
let g:go_disable_autoinstall = 1
|
|
let g:go_fmt_command = 'goimports'
|
|
augroup END
|
|
|
|
"====[ Set NERDTree options ]==============================
|
|
|
|
augroup nerdtree
|
|
autocmd!
|
|
|
|
" Make NERDTree start on startup
|
|
"autocmd vimenter * if !argc() | NERDTree | endif
|
|
|
|
nnoremap <silent> <Leader>d :NERDTreeFind<CR>
|
|
nnoremap <C-d> :NERDTreeToggle<CR>
|
|
|
|
" 'Disable' these, they're obnoxious:
|
|
let NERDTreeMapOpenInTab='zzzzzz'
|
|
let NERDTreeMapOpenInTabSilent='zzzzzzz'
|
|
augroup END
|
|
|
|
let g:airline_powerline_fonts=1
|
|
let g:airline_enable_syntastic=1
|
|
"let g:airline_theme='dark'
|
|
|
|
"====[ Enable relative line numbers ]======================
|
|
|
|
function! NumberToggle()
|
|
if(&relativenumber == 1)
|
|
set number
|
|
set norelativenumber
|
|
else
|
|
set number
|
|
set relativenumber
|
|
endif
|
|
endfunc
|
|
|
|
nnoremap <C-r> :call NumberToggle()<cr>
|
|
|
|
"====[ Make the 81st column stand out ]====================
|
|
|
|
" EITHER the entire 81st column, full-screen...
|
|
"highlight ColorColumn ctermbg=magenta
|
|
"set colorcolumn=81
|
|
|
|
" OR ELSE just the 81st column of wide lines...
|
|
highlight ColorColumn ctermbg=magenta
|
|
call matchadd('ColorColumn', '\%81v', 100)
|
|
|
|
" OR ELSE on April Fools day...
|
|
"highlight ColorColumn ctermbg=red ctermfg=blue
|
|
"exec 'set colorcolumn=' . join(range(2,80,3), ',')
|
|
|
|
"====[ Fix listchars ]====================================
|
|
|
|
exec "set listchars=tab:\uBB\uBB,trail:\uB7,nbsp:~"
|
|
nnoremap <F6> :set list!<CR>
|
|
"nnoremap <C-l> :set list!<CR>
|
|
|
|
"====[ Enable dragging ]==================================
|
|
|
|
vmap <expr> <LEFT> DVB_Drag('left')
|
|
vmap <expr> <RIGHT> DVB_Drag('right')
|
|
vmap <expr> <UP> DVB_Drag('up')
|
|
vmap <expr> <DOWN> DVB_Drag('down')
|
|
vmap <expr> D DVB_Duplicate()
|
|
|
|
"====[ Python settings ]==================================
|
|
|
|
let g:pymode_indent = 0
|
|
let g:pymode_rope = 0
|
|
let g:pymode_folding = 0
|
|
let g:pymode_lint_ignore = "W191,E251,E203,E221,E126,E128"
|
|
let NERDTreeIgnore=['.pyc$']
|
|
let g:pymode_doc = 0
|
|
au FileType python set noexpandtab
|
|
au FileType python set tabstop=4
|
|
|
|
"====[ General Text Editing settings ]====================
|
|
au BufNewFile,BufRead *.md set filetype=markdown
|
|
command! Check new|0read !check
|
|
|
|
"====[ Supertab settings ]================================
|
|
let g:SuperTabDefaultCompletionType = "context"
|
|
|
|
"====[ Mulitple Cursors Settings ]========================
|
|
let g:multi_cursor_next_key='<C-n>'
|
|
|
|
"====[ Task List Settings ]===============================
|
|
map <leader>t :TaskList<CR>
|
|
|
|
"====[ Indent Guides ]====================================
|
|
let g:indent_guides_guide_size = 1
|
|
autocmd VimEnter * :IndentGuidesEnable
|
|
let g:indent_guides_auto_colors = 0
|
|
hi IndentGuidesOdd ctermbg=0
|
|
hi IndentGuidesEven ctermbg=235
|
|
nnoremap <C-l> :IndentGuidesToggle<CR>
|
|
|
|
"====[ TypeScript ]=======================================
|
|
autocmd BufNewFile,BufRead *.ts set ft=typescript
|
|
let g:typescript_compiler_options = " -t ES5 -m commonjs"
|
|
let g:syntastic_typescript_tsc_args = "-t ES5 -m commonjs"
|
|
VIMRC
|
|
echo "$VIMRC" > "$HOME"/.vimrc
|
|
|
|
if [[ ! -d ~/.oh-my-zsh ]]; then
|
|
curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
|
|
fi
|
|
|
|
if [[ ! "$SHELL" =~ .*zsh ]]; then
|
|
chsh -s "$(which zsh)"
|
|
fi
|
|
|
|
read -r -d '' ZSHRC <<'ZSHRC'
|
|
# Path to your oh-my-zsh configuration.
|
|
ZSH=$HOME/.oh-my-zsh
|
|
|
|
# Set name of the theme to load.
|
|
# Look in ~/.oh-my-zsh/themes/
|
|
# Optionally, if you set this to "random", it'll load a random theme each
|
|
# time that oh-my-zsh is loaded.
|
|
ZSH_THEME="geoffgarside"
|
|
|
|
# Example aliases
|
|
# alias zshconfig="mate ~/.zshrc"
|
|
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
|
|
|
# Set to this to use case-sensitive completion
|
|
# CASE_SENSITIVE="true"
|
|
|
|
# Comment this out to disable bi-weekly auto-update checks
|
|
# DISABLE_AUTO_UPDATE="true"
|
|
|
|
# Uncomment to change how many often would you like to wait before auto-updates occur? (in days)
|
|
# export UPDATE_ZSH_DAYS=13
|
|
|
|
# Uncomment following line if you want to disable colors in ls
|
|
# DISABLE_LS_COLORS="true"
|
|
|
|
# Uncomment following line if you want to disable autosetting terminal title.
|
|
# DISABLE_AUTO_TITLE="true"
|
|
|
|
# Uncomment following line if you want to disable command autocorrection
|
|
DISABLE_CORRECTION="true"
|
|
|
|
# Uncomment following line if you want red dots to be displayed while waiting for completion
|
|
# COMPLETION_WAITING_DOTS="true"
|
|
|
|
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
|
|
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
|
|
# Example format: plugins=(rails git textmate ruby lighthouse)
|
|
plugins=(git archlinux fasd golang mercurial node npm screen ssh-agent sublime systemd vundle)
|
|
|
|
source $ZSH/oh-my-zsh.sh
|
|
|
|
# Customize to your needs...
|
|
export PATH=$PATH:$HOME/bin:$HOME/go/bin:/usr/local/games:/usr/local/sbin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib/qt4/bin:$HOME/bin:$HOME/src/go/bin
|
|
|
|
alias aoeu='setxkbmap us'
|
|
alias asdf='setxkbmap dvorak'
|
|
|
|
alias grep='grep --color --exclude-dir=.svn --exclude-dir=node_modules'
|
|
alias egrep='egrep --color --exclude-dir=.svn --exclude-dir=node_modules'
|
|
alias vi='vim'
|
|
alias ll='ls -al'
|
|
alias l='ls -Cf'
|
|
|
|
alias h='fasd_cd -d'
|
|
|
|
calc(){ awk "BEGIN{ print $* }" ;}
|
|
GREP_OPTIONS='-D skip --binary-files=without-match --ignore-case'
|
|
export LESS='RFiX'
|
|
export PAGER="less -R -FiX"
|
|
alias subo='sublime -n'
|
|
export EDITOR=vim
|
|
|
|
alias asshole='sudo $(fc -l -n -1)'
|
|
|
|
export GOPATH=~/
|
|
setopt interactivecomments
|
|
unsetopt beep
|
|
bindkey '^[#' pound-insert
|
|
|
|
if [ -f $HOME/.zshlc ]
|
|
then
|
|
source $HOME/.zshlc
|
|
fi
|
|
ZSHRC
|
|
echo "$ZSHRC" > "$HOME"/.zshrc
|
|
|
|
mkdir -p ~/bin
|
|
read -r -d '' TMUXSH <<'TMUXSH'
|
|
#!/bin/bash
|
|
|
|
#
|
|
# Modified TMUX start script from:
|
|
# http://forums.gentoo.org/viewtopic-t-836006-start-0.html
|
|
#
|
|
# Store it to `~/bin/tmx` and issue `chmod +x`.
|
|
#
|
|
|
|
# Works because bash automatically trims by assigning to variables and by
|
|
# passing arguments
|
|
trim() { echo $1; }
|
|
|
|
base_session="$1"
|
|
|
|
if [[ -z "$1" ]]; then
|
|
base_session="default"
|
|
fi
|
|
|
|
# Only because I often issue `ls` to this script by accident
|
|
if [[ "$1" == "ls" ]]; then
|
|
tmux ls
|
|
exit
|
|
fi
|
|
|
|
# This actually works without the trim() on all systems except OSX
|
|
tmux_nb=$(trim `tmux ls | grep "^$base_session" | wc -l`)
|
|
if [[ "$tmux_nb" == "0" ]]; then
|
|
echo "Launching tmux base session $base_session ..."
|
|
tmux new-session -s $base_session
|
|
else
|
|
# Make sure we are not already in a tmux session
|
|
if [[ -z "$TMUX" ]]; then
|
|
echo "Launching copy of base session $base_session ..."
|
|
# Session is is date and time to prevent conflict
|
|
session_id=`date +%Y%m%d%H%M%S`
|
|
# Create a new session (without attaching it) and link to base session
|
|
# to share windows
|
|
tmux new-session -d -t $base_session -s $session_id
|
|
if [[ "$2" == "1" ]]; then
|
|
# Create a new window in that session
|
|
tmux new-window
|
|
fi
|
|
# Attach to the new session & kill it once orphaned
|
|
tmux attach-session -t $session_id \; set-option destroy-unattached
|
|
fi
|
|
fi
|
|
TMUXSH
|
|
echo "$TMUXSH" >~/bin/tmux.sh
|
|
|
|
mkdir -p ~/.irssi
|
|
read -r -d '' IRSSI <<'IRSSI'
|
|
servers = (
|
|
{
|
|
address = "%SERVER%";
|
|
chatnet = "net";
|
|
port = "%PORT%";
|
|
password = "%PASSWORD%";
|
|
use_ssl = "yes";
|
|
ssl_verify = "no";
|
|
autoconnect = "yes";
|
|
}
|
|
);
|
|
|
|
chatnets = {
|
|
net = { type = "IRC"; };
|
|
};
|
|
|
|
channels = (
|
|
);
|
|
|
|
aliases = {
|
|
J = "join";
|
|
LEAVE = "part";
|
|
W = "who";
|
|
Q = "QUERY";
|
|
};
|
|
|
|
statusbar = {
|
|
# formats:
|
|
# when using {templates}, the template is shown only if it's argument isn't
|
|
# empty unless no argument is given. for example {sb} is printed always,
|
|
# but {sb $T} is printed only if $T isn't empty.
|
|
|
|
items = {
|
|
# start/end text in statusbars
|
|
barstart = "{sbstart}";
|
|
barend = "{sbend}";
|
|
|
|
topicbarstart = "{topicsbstart}";
|
|
topicbarend = "{topicsbend}";
|
|
|
|
# treated "normally", you could change the time/user name to whatever
|
|
time = "{sb $Z}";
|
|
user = "{sb {sbnickmode $cumode}$N{sbmode $usermode}{sbaway $A}}";
|
|
|
|
# treated specially .. window is printed with non-empty windows,
|
|
# window_empty is printed with empty windows
|
|
window = "{sb $winref:$tag/$itemname{sbmode $M}}";
|
|
window_empty = "{sb $winref{sbservertag $tag}}";
|
|
prompt = "{prompt $[.15]itemname}";
|
|
prompt_empty = "{prompt $winname}";
|
|
topic = " $topic";
|
|
topic_empty = " Irssi v$J - http://www.irssi.org";
|
|
|
|
# all of these treated specially, they're only displayed when needed
|
|
lag = "{sb Lag: $0-}";
|
|
act = "{sb Act: $0-}";
|
|
more = "-- more --";
|
|
};
|
|
|
|
# there's two type of statusbars. root statusbars are either at the top
|
|
# of the screen or at the bottom of the screen. window statusbars are at
|
|
# the top/bottom of each split window in screen.
|
|
default = {
|
|
# the "default statusbar" to be displayed at the bottom of the window.
|
|
# contains all the normal items.
|
|
window = {
|
|
disabled = "no";
|
|
|
|
# window, root
|
|
type = "window";
|
|
# top, bottom
|
|
placement = "bottom";
|
|
# number
|
|
position = "1";
|
|
# active, inactive, always
|
|
visible = "active";
|
|
|
|
# list of items in statusbar in the display order
|
|
items = {
|
|
barstart = { priority = "100"; };
|
|
time = { };
|
|
user = { };
|
|
window = { };
|
|
topic = { };
|
|
window_empty = { };
|
|
lag = { priority = "-1"; };
|
|
act = { priority = "10"; };
|
|
more = { priority = "-1"; alignment = "right"; };
|
|
barend = { priority = "100"; alignment = "right"; };
|
|
};
|
|
};
|
|
|
|
# statusbar to use in inactive split windows
|
|
window_inact = {
|
|
type = "window";
|
|
placement = "bottom";
|
|
position = "1";
|
|
visible = "inactive";
|
|
items = {
|
|
barstart = { priority = "100"; };
|
|
window = { };
|
|
window_empty = { };
|
|
more = { priority = "-1"; alignment = "right"; };
|
|
barend = { priority = "100"; alignment = "right"; };
|
|
};
|
|
};
|
|
|
|
# we treat input line as yet another statusbar :) It's possible to
|
|
# add other items before or after the input line item.
|
|
prompt = {
|
|
type = "root";
|
|
placement = "bottom";
|
|
# we want to be at the bottom always
|
|
position = "100";
|
|
visible = "always";
|
|
items = {
|
|
prompt = { priority = "-1"; };
|
|
prompt_empty = { priority = "-1"; };
|
|
# treated specially, this is the real input line.
|
|
input = { priority = "10"; };
|
|
};
|
|
};
|
|
|
|
# topicbar
|
|
topic = {
|
|
type = "root";
|
|
placement = "nowhere";
|
|
position = "100000";
|
|
visible = "never";
|
|
items = {
|
|
topicbarstart = { priority = "100"; };
|
|
topic = { };
|
|
topic_empty = { };
|
|
topicbarend = { priority = "100"; alignment = "right"; };
|
|
};
|
|
};
|
|
};
|
|
};
|
|
settings = {
|
|
core = {
|
|
real_name = "%NICK%";
|
|
user_name = "%NICK%";
|
|
nick = "%NICK%";
|
|
};
|
|
"fe-text" = { actlist_sort = "refnum"; };
|
|
"fe-common/core" = {
|
|
theme = "dma147";
|
|
completion_char = ",";
|
|
autolog = "yes";
|
|
};
|
|
};
|
|
hilights = (
|
|
{ text = "%NICK%"; nick = "yes"; word = "yes"; },
|
|
{ text = "chris"; nick = "yes"; word = "yes"; }
|
|
);
|
|
logs = { };
|
|
IRSSI
|
|
echo "$IRSSI" | sed -e "s/%PASSWORD%/$IRCPASS/" | sed -e "s/%NICK%/$IRCNICK/" | sed -e "s/%SERVER%/$IRCSERVER/" | sed -e "s/%PORT%/$IRCPORT/" > "$HOME"/.irssi/config
|