diff --git a/commonsh/01_local_bin b/commonsh/01_local_bin
new file mode 100755
index 0000000..6050765
--- /dev/null
+++ b/commonsh/01_local_bin
@@ -0,0 +1,2 @@
+#! /bin/sh
+concat_path "${HOME}/go/bin"
diff --git a/commonsh/11_cobi b/commonsh/11_cobi
new file mode 100755
index 0000000..de1f724
--- /dev/null
+++ b/commonsh/11_cobi
@@ -0,0 +1,3 @@
+#! /bin/sh
+alias kadmin="kadmin -k -t /home/cobi/.kts/cobi-autoadmin.keytab -p cobi_autoadmin/admin@CLUENET.ORG"
+alias releng="ssh -x -q -t -i ~/Giftiki/keys/releng.pem releng@admin.releng.giftiki.com releng"
diff --git a/gitconfig b/gitconfig
index 1e8b3aa..ce10a29 100644
--- a/gitconfig
+++ b/gitconfig
@@ -34,3 +34,6 @@
excludesfile = ~/.gitignore
[push]
default = matching
+[user]
+ name = Jacobi Carter
+ email = cobi@giftiki.com
diff --git a/vim/autoload/pathogen.vim b/vim/autoload/pathogen.vim
new file mode 100644
index 0000000..be68389
--- /dev/null
+++ b/vim/autoload/pathogen.vim
@@ -0,0 +1,230 @@
+" pathogen.vim - path option manipulation
+" Maintainer: Tim Pope
+" Version: 2.0
+
+" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
+"
+" For management of individually installed plugins in ~/.vim/bundle (or
+" ~\vimfiles\bundle), adding `call pathogen#infect()` to your .vimrc
+" prior to `fileype plugin indent on` is the only other setup necessary.
+"
+" The API is documented inline below. For maximum ease of reading,
+" :set foldmethod=marker
+
+if exists("g:loaded_pathogen") || &cp
+ finish
+endif
+let g:loaded_pathogen = 1
+
+" Point of entry for basic default usage. Give a directory name to invoke
+" pathogen#runtime_append_all_bundles() (defaults to "bundle"), or a full path
+" to invoke pathogen#runtime_prepend_subdirectories(). Afterwards,
+" pathogen#cycle_filetype() is invoked.
+function! pathogen#infect(...) abort " {{{1
+ let source_path = a:0 ? a:1 : 'bundle'
+ if source_path =~# '[\\/]'
+ call pathogen#runtime_prepend_subdirectories(source_path)
+ else
+ call pathogen#runtime_append_all_bundles(source_path)
+ endif
+ call pathogen#cycle_filetype()
+endfunction " }}}1
+
+" Split a path into a list.
+function! pathogen#split(path) abort " {{{1
+ if type(a:path) == type([]) | return a:path | endif
+ let split = split(a:path,'\\\@,'edit',)
+command! -bar -bang -count=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit :execute s:find(,'edit',)
+command! -bar -bang -count=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit :execute s:find(,'split',)
+command! -bar -bang -count=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit :execute s:find(,'vsplit',)
+command! -bar -bang -count=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(,'tabedit',)
+command! -bar -bang -count=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit :execute s:find(,'pedit',)
+command! -bar -bang -count=1 -nargs=1 -complete=customlist,s:Findcomplete Vread :execute s:find(,'read',)
+command! -bar -bang -count=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen :execute s:find(,'edit',,'lcd')
+
+" vim:set ft=vim ts=8 sw=2 sts=2:
diff --git a/vim/bundle/command-t b/vim/bundle/command-t
new file mode 160000
index 0000000..18686a8
--- /dev/null
+++ b/vim/bundle/command-t
@@ -0,0 +1 @@
+Subproject commit 18686a82a2e4d015b877bf0b6867a269aa8a284f
diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive
new file mode 160000
index 0000000..64716b9
--- /dev/null
+++ b/vim/bundle/vim-fugitive
@@ -0,0 +1 @@
+Subproject commit 64716b9622e5c3fae0caec7e9589988a9da146cb
diff --git a/vim/ftdetect/gofiletype.vim b/vim/ftdetect/gofiletype.vim
new file mode 100644
index 0000000..8843121
--- /dev/null
+++ b/vim/ftdetect/gofiletype.vim
@@ -0,0 +1 @@
+au BufRead,BufNewFile *.go set filetype=go
diff --git a/vim/syntax/go.vim b/vim/syntax/go.vim
new file mode 100644
index 0000000..7adbe8e
--- /dev/null
+++ b/vim/syntax/go.vim
@@ -0,0 +1,201 @@
+" Copyright 2009 The Go Authors. All rights reserved.
+" Use of this source code is governed by a BSD-style
+" license that can be found in the LICENSE file.
+"
+" go.vim: Vim syntax file for Go.
+"
+" Options:
+" There are some options for customizing the highlighting; the recommended
+" settings are the default values, but you can write:
+" let OPTION_NAME = 0
+" in your ~/.vimrc file to disable particular options. You can also write:
+" let OPTION_NAME = 1
+" to enable particular options. At present, all options default to on.
+"
+" - go_highlight_array_whitespace_error
+" Highlights white space after "[]".
+" - go_highlight_chan_whitespace_error
+" Highlights white space around the communications operator that don't follow
+" the standard style.
+" - go_highlight_extra_types
+" Highlights commonly used library types (os.Error, etc.).
+" - go_highlight_space_tab_error
+" Highlights instances of tabs following spaces.
+" - go_highlight_trailing_whitespace_error
+" Highlights trailing white space.
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("go_highlight_array_whitespace_error")
+ let go_highlight_array_whitespace_error = 1
+endif
+if !exists("go_highlight_chan_whitespace_error")
+ let go_highlight_chan_whitespace_error = 1
+endif
+if !exists("go_highlight_extra_types")
+ let go_highlight_extra_types = 1
+endif
+if !exists("go_highlight_space_tab_error")
+ let go_highlight_space_tab_error = 1
+endif
+if !exists("go_highlight_trailing_whitespace_error")
+ let go_highlight_trailing_whitespace_error = 1
+endif
+
+syn case match
+
+syn keyword goDirective package import
+syn keyword goDeclaration var const type
+syn keyword goDeclType struct interface
+
+hi def link goDirective Statement
+hi def link goDeclaration Keyword
+hi def link goDeclType Keyword
+
+" Keywords within functions
+syn keyword goStatement defer go goto return break continue fallthrough
+syn keyword goConditional if else switch select
+syn keyword goLabel case default
+syn keyword goRepeat for range
+
+hi def link goStatement Statement
+hi def link goConditional Conditional
+hi def link goLabel Label
+hi def link goRepeat Repeat
+
+" Predefined types
+syn keyword goType chan map bool string
+syn keyword goSignedInts int int8 int16 int32 int64
+syn keyword goUnsignedInts byte uint uint8 uint16 uint32 uint64 uintptr
+syn keyword goFloats float float32 float64
+syn keyword goComplexes complex complex64 complex128
+
+hi def link goType Type
+hi def link goSignedInts Type
+hi def link goUnsignedInts Type
+hi def link goFloats Type
+hi def link goComplexes Type
+
+" Treat func specially: it's a declaration at the start of a line, but a type
+" elsewhere. Order matters here.
+syn match goType /\/
+syn match goDeclaration /^func\>/
+
+" Predefined functions and values
+syn keyword goBuiltins append cap close closed cmplx copy imag len
+syn keyword goBuiltins make new panic print println real recover
+syn keyword goConstants iota true false nil
+
+hi def link goBuiltins Keyword
+hi def link goConstants Keyword
+
+" Comments; their contents
+syn keyword goTodo contained TODO FIXME XXX BUG
+syn cluster goCommentGroup contains=goTodo
+syn region goComment start="/\*" end="\*/" contains=@goCommentGroup,@Spell
+syn region goComment start="//" end="$" contains=@goCommentGroup,@Spell
+
+hi def link goComment Comment
+hi def link goTodo Todo
+
+" Go escapes
+syn match goEscapeOctal display contained "\\[0-7]\{3}"
+syn match goEscapeC display contained +\\[abfnrtv\\'"]+
+syn match goEscapeX display contained "\\x\x\{2}"
+syn match goEscapeU display contained "\\u\x\{4}"
+syn match goEscapeBigU display contained "\\U\x\{8}"
+syn match goEscapeError display contained +\\[^0-7xuUabfnrtv\\'"]+
+
+hi def link goEscapeOctal goSpecialString
+hi def link goEscapeC goSpecialString
+hi def link goEscapeX goSpecialString
+hi def link goEscapeU goSpecialString
+hi def link goEscapeBigU goSpecialString
+hi def link goSpecialString Special
+hi def link goEscapeError Error
+
+" Strings and their contents
+syn cluster goStringGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU,goEscapeError
+syn region goString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@goStringGroup
+syn region goRawString start=+`+ end=+`+
+
+hi def link goString String
+hi def link goRawString String
+
+" Characters; their contents
+syn cluster goCharacterGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU
+syn region goCharacter start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@goCharacterGroup
+
+hi def link goCharacter Character
+
+" Regions
+syn region goBlock start="{" end="}" transparent fold
+syn region goParen start='(' end=')' transparent
+
+" Integers
+syn match goDecimalInt "\<\d\+\([Ee]\d\+\)\?\>"
+syn match goHexadecimalInt "\<0x\x\+\>"
+syn match goOctalInt "\<0\o\+\>"
+syn match goOctalError "\<0\o*[89]\d*\>"
+
+hi def link goDecimalInt Integer
+hi def link goHexadecimalInt Integer
+hi def link goOctalInt Integer
+hi def link Integer Number
+
+" Floating point
+syn match goFloat "\<\d\+\.\d*\([Ee][-+]\d\+\)\?\>"
+syn match goFloat "\<\.\d\+\([Ee][-+]\d\+\)\?\>"
+syn match goFloat "\<\d\+[Ee][-+]\d\+\>"
+
+hi def link goFloat Float
+
+" Imaginary literals
+syn match goImaginary "\<\d\+i\>"
+syn match goImaginary "\<\d\+\.\d*\([Ee][-+]\d\+\)\?i\>"
+syn match goImaginary "\<\.\d\+\([Ee][-+]\d\+\)\?i\>"
+syn match goImaginary "\<\d\+[Ee][-+]\d\+i\>"
+
+hi def link goImaginary Number
+
+" Spaces after "[]"
+if go_highlight_array_whitespace_error != 0
+ syn match goSpaceError display "\(\[\]\)\@<=\s\+"
+endif
+
+" Spacing errors around the 'chan' keyword
+if go_highlight_chan_whitespace_error != 0
+ " receive-only annotation on chan type
+ syn match goSpaceError display "\(<-\)\@<=\s\+\(chan\>\)\@="
+ " send-only annotation on chan type
+ syn match goSpaceError display "\(\/
+ syn match goExtraType /\/
+ syn match goExtraType /\<\(os\.Error\)\>/
+ syn match goExtraType /\/
+ syn match goExtraType /\/
+endif
+
+" Space-tab error
+if go_highlight_space_tab_error != 0
+ syn match goSpaceError display " \+\t"me=e-1
+endif
+
+" Trailing white space error
+if go_highlight_trailing_whitespace_error != 0
+ syn match goSpaceError display excludenl "\s\+$"
+endif
+
+hi def link goExtraType Type
+hi def link goSpaceError Error
+
+let b:current_syntax = "go"
diff --git a/vimrc b/vimrc
index 7950312..324d178 100644
--- a/vimrc
+++ b/vimrc
@@ -17,8 +17,8 @@ endif
" ---- General Setup ----
set nocompatible " Don't emulate vi's limitations
-set tabstop=4 " 4 spaces for tabs
-set shiftwidth=4 " 4 spaces for indents
+set tabstop=8 " 4 spaces for tabs
+set shiftwidth=8 " 4 spaces for indents
set smarttab " Tab next line based on current line
"set expandtab " Spaces for indentation
set autoindent " Automatically indent next line
@@ -49,6 +49,8 @@ set showcmd " Show the current command
set diffopt+=iwhite
+set foldmethod=indent
+
" ---- Filetypes ----
if has('syntax')
syntax on
@@ -76,7 +78,7 @@ if has('eval')
fun! DetectDetectIndent()
try
:DetectIndent
- catch
+" catch
endtry
endfun
endif
@@ -84,7 +86,7 @@ endif
if has('autocmd')
autocmd BufEnter * :call WideFold()
if has('eval')
- autocmd BufReadPost * :call s:DetectDetectIndent()
+ " autocmd BufReadPost * :call s:DetectDetectIndent()
endif
if has('viminfo')
@@ -389,3 +391,7 @@ if v:version >= 700
endif
set t_RV=
+
+set tabstop=4
+set shiftwidth=4
+call pathogen#infect()