diff --git a/files/gitconfig b/files/gitconfig new file mode 100644 index 0000000..b7a4154 --- /dev/null +++ b/files/gitconfig @@ -0,0 +1,62 @@ +[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 diff --git a/files/gitignore_global b/files/gitignore_global new file mode 100644 index 0000000..ea95219 --- /dev/null +++ b/files/gitignore_global @@ -0,0 +1,68 @@ +# 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 + diff --git a/files/irssiconfig b/files/irssiconfig new file mode 100644 index 0000000..981eb26 --- /dev/null +++ b/files/irssiconfig @@ -0,0 +1,157 @@ +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 = { }; + diff --git a/files/tmux.conf b/files/tmux.conf new file mode 100644 index 0000000..166e0f2 --- /dev/null +++ b/files/tmux.conf @@ -0,0 +1,147 @@ +# 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 + diff --git a/files/tmux.sh b/files/tmux.sh new file mode 100644 index 0000000..210ca5e --- /dev/null +++ b/files/tmux.sh @@ -0,0 +1,48 @@ +#!/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 -c "^$base_session")") +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 + diff --git a/files/vimrc b/files/vimrc new file mode 100644 index 0000000..dddb25f --- /dev/null +++ b/files/vimrc @@ -0,0 +1,312 @@ +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 + +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 +no D W +no S + +no H 20 +no T 20 + +no h H +no m M +no l L + +map Q + +nnoremap :redo +nnoremap :set paste! +command! W :w + +set backspace=2 + +set wildchar= wildmenu wildmode=full +set wildcharm= + +" 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 . :LustyJuggler +let g:LustyJugglerKeyboardLayout = "dvorak" + +nnoremap / :nohlsearch + +nnoremap q :Bdelete! + +"====[ Enable ctrlp settings ]============================= + +augroup ctrlp + autocmd! + + let g:ctrlp_map='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 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 d :NERDTreeFind + nnoremap :NERDTreeToggle + + " '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 :call NumberToggle() + +"====[ 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 :set list! +"nnoremap :set list! + +"====[ Enable dragging ]================================== + +vmap DVB_Drag('left') +vmap DVB_Drag('right') +vmap DVB_Drag('up') +vmap DVB_Drag('down') +vmap 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='' + +"====[ Task List Settings ]=============================== +map t :TaskList + +"====[ 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 :IndentGuidesToggle + +"====[ 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" + diff --git a/files/zshrc b/files/zshrc new file mode 100644 index 0000000..2b7f440 --- /dev/null +++ b/files/zshrc @@ -0,0 +1,74 @@ +# 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 + diff --git a/setup.sh b/setup.sh index a357e24..0a8b21c 100644 --- a/setup.sh +++ b/setup.sh @@ -66,610 +66,18 @@ elif [[ "$UNAMESTR" == 'Darwin' ]]; then true fi -read -r -d '' GITIGNOREGLOBAL <<'GITIGNOREGLOBAL' -# Compiled source # -################### -*.com -*.class -*.dll -*.exe -*.o -*.so +git clone git@git.chrissexton.org:cws/dotfiles.git "$HOME"/.dotfiles +DOTFILES="$HOME"/.dotfiles -# 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 +cat "$DOTFILES"/files/gitignore_global > "$HOME"/.gitignore_global -#packing-only formats -*.iso -*.tar +<"$DOTFILES"/files/gitconfig sed -e "s/%NAME%/$NAME/" | sed -e "s/%EMAIL%/$EMAIL/" > "$HOME"/.gitconfig -#package management formats -*.dmg -*.xpi -*.gem -*.egg -*.deb -*.rpm +cat "$DOTFILES"/files/tmux.conf > "$HOME"/.tmux.conf -# Logs and databases # -###################### -*.log -*.sql -*.sqlite +cat "$DOTFILES"/files/vimrc > "$HOME"/.vimrc -# 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 - -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 -no D W -no S - -no H 20 -no T 20 - -no h H -no m M -no l L - -map Q - -nnoremap :redo -nnoremap :set paste! -command! W :w - -set backspace=2 - -set wildchar= wildmenu wildmode=full -set wildcharm= - -" 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 . :LustyJuggler -let g:LustyJugglerKeyboardLayout = "dvorak" - -nnoremap / :nohlsearch - -nnoremap q :Bdelete! - -"====[ Enable ctrlp settings ]============================= - -augroup ctrlp - autocmd! - - let g:ctrlp_map='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 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 d :NERDTreeFind - nnoremap :NERDTreeToggle - - " '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 :call NumberToggle() - -"====[ 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 :set list! -"nnoremap :set list! - -"====[ Enable dragging ]================================== - -vmap DVB_Drag('left') -vmap DVB_Drag('right') -vmap DVB_Drag('up') -vmap DVB_Drag('down') -vmap 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='' - -"====[ Task List Settings ]=============================== -map t :TaskList - -"====[ 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 :IndentGuidesToggle - -"====[ 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 +if [[ ! -d "$HOME"/.oh-my-zsh ]]; then curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh fi @@ -677,292 +85,10 @@ 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 +cat "$DOTFILES"/files/zshrc > "$HOME"/.zshrc -# 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" +mkdir -p "$HOME"/bin +cat "$DOTFILES"/files/tmux.sh > "$HOME"/bin/tmux.sh -# 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 +mkdir -p "$HOME"/.irssi +<"$DOTFILES"/files/irssiconfig sed -e "s/%PASSWORD%/$IRCPASS/" | sed -e "s/%NICK%/$IRCNICK/" | sed -e "s/%SERVER%/$IRCSERVER/" | sed -e "s/%PORT%/$IRCPORT/" > "$HOME"/.irssi/config