Commits

Wes Turner  committed a56ac43

ENH: Create dotvim from dotvim2

  • Participants

Comments (0)

Files changed (15)

+powerline-fonts/
+
+syntax:glob
+.git
+.hg
+.netrwhist
+*.swp
+sessions/*
+
+*.un~
+
+# all source py for now
+*.pyc
+*.pyo
+
+# no need to cache this
+vimpyre.json
+
+bundle/
+vimpyre/peaksea/.git = [git]vimpyre/peaksea/.git
+vimpyre/vcscommand.vim/.git = [git]vimpyre/vcscommand.vim/.git
+vimpyre/svndiff/.git = [git]vimpyre/svndiff/.git
+vimpyre/VOoM/.git = [git]vimpyre/VOoM/.git
+vimpyre/trinity.vim/.git = [git]vimpyre/trinity.vim/.git
+vimpyre/vim-preview/.git = [git]vimpyre/vim-preview/.git
+vimpyre/bufexplorer.zip/.git = [git]vimpyre/bufexplorer.zip/.git
+vimpyre/gnupg/.git = [git]vimpyre/gnupg/.git
+vimpyre/The-NERD-Commenter/.git = [git]vimpyre/The-NERD-Commenter/.git
+vimpyre/UltiSnips/.git = [git]vimpyre/UltiSnips/.git
+vimpyre/Command-T/.git = [git]vimpyre/Command-T/.git
+vimpyre/wombat256.vim/.git = [git]vimpyre/wombat256.vim/.git
+vimpyre/colorselector/.git = [git]vimpyre/colorselector/.git
+vimpyre/The-NERD-tree/.git = [git]vimpyre/The-NERD-tree/.git
+vimpyre/vim-session/.git = [git]vimpyre/vim-session/.git
+vimpyre/Source-Explorer-srcexpl.vim/.git = [git]vimpyre/Source-Explorer-srcexpl.vim/.git
+vimpyre/histwin.vim/.git = [git]vimpyre/histwin.vim/.git
+vimpyre/n3.vim/.git = [git]vimpyre/n3.vim/.git
+vimpyre/fontsize.vim/.git = [git]vimpyre/fontsize.vim/.git
+vimpyre/pep8/.git = [git]vimpyre/pep8/.git
+vimpyre/django.vim/.git = [git]vimpyre/django.vim/.git
+vimpyre/vim-easymotion/.git = [git]vimpyre/vim-easymotion/.git
+vimpyre/thermometer/.git = [git]vimpyre/thermometer/.git
+vimpyre/neverland.vim--All-colorschemes-suck/.git = [git]vimpyre/neverland.vim--All-colorschemes-suck/.git
+vimpyre/sort-python-imports/.git = [git]vimpyre/sort-python-imports/.git
+vimpyre/python_coverage.vim/.git = [git]vimpyre/python_coverage.vim/.git
+vimpyre/ColorSchemeEditor/.git = [git]vimpyre/ColorSchemeEditor/.git
+vimpyre/syntastic/.git = [git]vimpyre/syntastic/.git
+vimpyre/toner.vim/.git = [git]vimpyre/toner.vim/.git
+vimpyre/fruity.vim/.git = [git]vimpyre/fruity.vim/.git
+vimpyre/ColorSelect/.git = [git]vimpyre/ColorSelect/.git
+vimpyre/vividchalk.vim/.git = [git]vimpyre/vividchalk.vim/.git
+vimpyre/Astronaut/.git = [git]vimpyre/Astronaut/.git
+vimpyre/taglist.vim/.git = [git]vimpyre/taglist.vim/.git
+vimpyre/HiColors/.git = [git]vimpyre/HiColors/.git
+vimpyre/Wombat/.git = [git]vimpyre/Wombat/.git
+vimpyre/synic.vim/.git = [git]vimpyre/synic.vim/.git
+vimpyre/mimicpak/.git = [git]vimpyre/mimicpak/.git
+vimpyre/sparql.vim/.git = [git]vimpyre/sparql.vim/.git
+vimpyre/pyflakes.vim/.git = [git]vimpyre/pyflakes.vim/.git
+vimpyre/FindInNERDTree/.git = [git]vimpyre/FindInNERDTree/.git
+vimpyre/pytest.vim/.git = [git]vimpyre/pytest.vim/.git
+vimpyre/TaskList.vim/.git = [git]vimpyre/TaskList.vim/.git
+vimpyre/Conque-Shell/.git = [git]vimpyre/Conque-Shell/.git
+vimpyre/SuperTab/.git = [git]vimpyre/SuperTab/.git
+
+# Vim scripts Makefile
+VIMRC:=vimrc
+VIMRC_BUNDLES:=vimrc.bundles
+VIM_FILES:=$(VIMRC) $(VIMRC_BUNDLES)
+
+HOME_VIMRC=$(HOME)/.vimrc
+HOME_DOTVIM=$(HOME)/.vim
+
+## ETC_VIMRC_LOCAL=/etc/vim/vimrc.local
+
+
+default: test
+
+help:
+	$(MAKE) list_vimrc_comments
+	#$(MAKE) list_vimrc_shortcuts
+
+edit:
+	# Open editor with primary project files
+	echo $(EDITOR)
+	$(EDITOR) README.rst Makefile $(VIM_FILES)
+
+
+list_vimrc_comments:
+	# List vimrc special comments
+	egrep -h '^\s*"\s' $(VIM_FILES)
+
+list_vimrc_shortcuts:
+	# List vimrc keyboard shortcut comments (starting with '"  '')
+	egrep -h '^\s*"  ' $(VIM_FILES)
+
+
+test:
+	# Test this Makefile
+	$(MAKE) test_start_vim
+	$(MAKE) test_start_gvim
+	##$(MAKE) edit
+	$(MAKE) list_vimrc_comments
+	$(MAKE) list_vimrc_shortcuts
+
+test_start_vim:
+	# Start vim and exit
+	vim -c 'exit'
+
+test_start_gvim:
+	# Start vim and exit
+	gvim -c 'exit'
+
+
+build:
+
+
+install:
+	# Install Vundle.vim, start vim, list bundles, install them,
+	# and install tinyvim
+	#
+	$(MAKE) install_scripts
+	$(MAKE) install_vundle
+	$(MAKE) test_start_vim
+	$(MAKE) list_bundles
+	$(MAKE) install_bundles
+	$(MAKE) install_tinyvim
+	#
+	# TODO: These must be done manually:
+	#$(MAKE) install_powerline_fonts
+	#$(MAKE) install_home
+
+install_home:
+	test -f $(HOME)/.vimrc && \
+		cp $(HOME)/.vimrc $(HOME)/.vimrc.backup && \
+		rm $(HOME)/.vimrc
+	test ! -d $(HOME)/.vim/
+	ln -s $(PWD)/vimrc $(HOME)/.vimrc
+
+install_tinyvim:
+	sh mktinyvim.sh
+
+install_scripts:
+	test -d $(HOME)/bin && cp bashmarks_to_nerdtree.sh $(HOME)/bin
+
+install_vim_apt:
+	sudo apt-get install vim-nox vim-gnome
+
+install_vim_src:
+	$(SHELL) setup_vim_deb.sh
+
+install_powerline_fonts:
+	$(SHELL) setup_powerline_fonts.sh
+
+install_vundle:
+	# Install or update vundle
+	mkdir -p bundle/
+	test ! -d bundle/Vundle.vim \
+		&& git clone https://github.com/gmarik/Vundle.vim \
+		|| $(MAKE) update_vundle
+	# ->	|| $(MAKE) update_vundle
+
+update_vundle:
+	# git pull Vundle from upstream
+	test -d bundle/Vundle.vim
+	cd bundle/Vundle.vim \
+		&& git pull https://github.com/gmarik/Vundle.vim
+
+list_bundles:
+	# List vimrc Bundles
+	egrep "^Bundle '" $(VIMRC_BUNDLES) | sed "s/Bundle '\(.*\)'/\1/g"
+
+install_bundles:
+	# Listall bundles with Vundle
+	vim +PluginInstall +qall
+
+hg_changelog:
+	hg log --style=changelog
+
+hg_push:
+	hg push default
+
+.PHONY: all
+all: test build
+
+
+dotvim
+=========
+My personal vim_ text editor configuration dotfiles_.
+
+* GitHub: https://github.com/westurner/dotvim
+* BitBucket: https://bitbucket.org/westurner/dotvim
+
+.. _vim: https://en.wikipedia.org/wiki/Vim_(text_editor)
+.. _dotfiles: https://github.com/westurner/dotfiles
+
+
+Install
+--------
+https://github.com/westurner/dotfiles install::
+
+   ## Standalone install::
+   REPO_DEST=${VIRTUAL_ENV:+"$VIRTUAL_ENV/src/"}dotvim
+
+   ## dotfiles install
+   # REPO_DEST=${__DOTFILES}/etc/vim
+
+   ## Clone
+   git clone ssh://git@github.com/westurner/dotvim $REPO_DEST
+
+
+Usage
+------
+Two files::
+
+   vimrc          # ViM configuration (symlink to ~/.vimrc)
+   vimrc.bundles  # Vundle configuration
+
+``Makefile``::
+
+   # Show comments with numbered lines
+   make help
+
+   # Test
+   make test
+
+   # Show comments with numbered lines (plugins, shortcuts)
+   make list_vimrc_comments
+
+   # List keyboard mapping comments (shortcuts)
+   make list_vimrc_shortcuts
+
+   # Install dotfiles and plugins for the current user
+   make install
+
+

File patches/VOoM_set_nofoldenable.patch

+diff --git a/plugin/voom.vim b/plugin/voom.vim
+index c236b91..77d3600 100644
+--- a/plugin/voom.vim
++++ b/plugin/voom.vim
+@@ -802,7 +802,7 @@ endfunc
+ 
+ func! Voom_TreeConfigWin() "{{{2
+ " Tree window-local options.
+-    setl foldenable
++    setl nofoldenable
+     setl foldtext=getline(v:foldstart).'\ \ \ /'.(v:foldend-v:foldstart)
+     setl foldmethod=expr
+     setl foldexpr=Voom_TreeFoldexpr(v:lnum)

File patches/nerdtree_plugins.patch

+diff --git a/nerdtree_plugin/nerdtree_ctags.vim b/nerdtree_plugin/nerdtree_ctags.vim
+new file mode 100644
+index 0000000..dec5e1a
+--- /dev/null
++++ b/nerdtree_plugin/nerdtree_ctags.vim
+@@ -0,0 +1,37 @@
++" Build ctags for the currently selected directory
++"
++" See:
++" https://github.com/t9md/vim-nerdtree_plugin_collections/blob/master/nerdtree_plugin/nerdtree_ctags.vim
++
++if exists("g:loaded_nerdtree_plugin_ctags")
++    finish
++endif
++let g:loaded_nerdtree_plugin_ctags = 1
++
++if !executable('ctags')
++    echoerr 'This plugin requires ctags'
++    finish
++endif
++
++function! s:callback_name()
++    return matchstr(expand('<sfile>'), '<SNR>\d\+_') . 'callback'
++endfunction
++
++function! s:callback()
++    let currentDir = g:NERDTreeDirNode.GetSelected().path.str({'format': 'Cd'})
++    let oldCWD = getcwd()
++    try
++      execute 'cd ' . currentDir
++      silent execute '!ctags -R .'
++      if v:shell_error
++        echoerr v:shell_error
++      endif
++    catch
++      execute 'cd ' . oldCWD
++    endtry
++endfunction
++
++call NERDTreeAddMenuItem({
++            \ 'text': '(t)ag generat',
++            \ 'shortcut': 't',
++            \ 'callback': s:callback_name()})
+diff --git a/nerdtree_plugin/nerdtree_open.vim b/nerdtree_plugin/nerdtree_open.vim
+new file mode 100644
+index 0000000..bc21b21
+--- /dev/null
++++ b/nerdtree_plugin/nerdtree_open.vim
+@@ -0,0 +1,41 @@
++" Execute g:nerdtree_open_cmd for the selected path
++"
++" see:
++" https://github.com/t9md/vim-nerdtree_plugin_collections/blob/master/nerdtree_plugin/nerdtree_open.vim
++
++if exists("g:loaded_nerdtree_plugin_open")
++    finish
++endif
++let g:loaded_nerdtree_plugin_open = 1
++
++
++function! s:callback_name()
++    return matchstr(expand('<sfile>'), '<SNR>\d\+_') . 'callback'
++endfunction
++
++function! s:callback()
++    if exists('*vimproc#open')
++        call vimproc#open(g:NERDTreeFileNode.GetSelected().path.str())
++    else
++        let path = g:NERDTreeFileNode.GetSelected().path.str({'escape': 1})
++
++        if !exists("g:nerdtree_plugin_open_cmd")
++            echoerr "please set 'g:nerdtree_open_cmd'  to 'open','gnome-open' or 'xdg-open'"
++            echoerr "or install vimproc from 'https://github.com/Shougo/vimproc'"
++            return
++        endif
++        let cmd = g:nerdtree_plugin_open_cmd . " " . path
++        call system(cmd)
++    endif
++endfunction
++
++call NERDTreeAddKeyMap({
++      \ 'callback': s:callback_name(),
++      \ 'quickhelpText': 'close nerd tree if open',
++      \ 'key': 'E',
++      \ })
++
++call NERDTreeAddMenuItem({
++            \ 'text': '(o)open with system command',
++            \ 'shortcut': 'o',
++            \ 'callback': s:callback_name()})
+diff --git a/nerdtree_plugin/nerdtree_terminal.vim b/nerdtree_plugin/nerdtree_terminal.vim
+new file mode 100644
+index 0000000..82ecfe7
+--- /dev/null
++++ b/nerdtree_plugin/nerdtree_terminal.vim
+@@ -0,0 +1,39 @@
++" NERD Tree Plugin to open terminal app to the specified working dir
++"
++" See:
++" https://github.com/t9md/vim-nerdtree_plugin_collections/blob/master/nerdtree_plugin/nerdtree_ctags.vim
++
++if exists("g:loaded_nerdtree_plugin_terminal")
++    finish
++endif
++let g:loaded_nerdtree_plugin_terminal = 1
++
++let g:nerdtree_terminal_bin='gnome-terminal'
++
++if !executable(g:nerdtree_terminal_bin)
++    echoerr 'This plugin requires: ' . g:nerdtree_terminal_bin
++    finish
++endif
++
++function! s:callback_name()
++    return matchstr(expand('<sfile>'), '<SNR>\d\+_') . 'callback'
++endfunction
++
++function! s:callback()
++    let currentDir = g:NERDTreeDirNode.GetSelected().path.str({'format': 'Cd'})
++    let oldCWD = getcwd()
++    try
++      execute 'cd ' . currentDir
++      silent execute '!' . g:nerdtree_terminal_bin . ' --working-directory="' . currentDir .'"'
++      if v:shell_error
++        echoerr v:shell_error
++      endif
++    catch
++      execute 'cd ' . oldCWD
++    endtry
++endfunction
++
++call NERDTreeAddMenuItem({
++            \ 'text': '(t)erminal here',
++            \ 'shortcut': 't',
++            \ 'callback': s:callback_name()})

File patches/nerdtree_tab_minimalization.patch

+diff --git a/nerdtree_plugin/nerdtree_open.vim b/nerdtree_plugin/nerdtree_open.vim
+index d93fdf4..bc21b21 100644
+--- a/nerdtree_plugin/nerdtree_open.vim
++++ b/nerdtree_plugin/nerdtree_open.vim
+@@ -1,3 +1,8 @@
++" Execute g:nerdtree_open_cmd for the selected path
++"
++" see:
++" https://github.com/t9md/vim-nerdtree_plugin_collections/blob/master/nerdtree_plugin/nerdtree_open.vim
++
+ if exists("g:loaded_nerdtree_plugin_open")
+     finish
+ endif
+diff --git a/nerdtree_plugin/nerdtree_terminal.vim b/nerdtree_plugin/nerdtree_terminal.vim
+index ad24521..82ecfe7 100644
+--- a/nerdtree_plugin/nerdtree_terminal.vim
++++ b/nerdtree_plugin/nerdtree_terminal.vim
+@@ -1,5 +1,6 @@
+ " NERD Tree Plugin to open terminal app to the specified working dir
+ "
++" See:
+ " https://github.com/t9md/vim-nerdtree_plugin_collections/blob/master/nerdtree_plugin/nerdtree_ctags.vim
+ 
+ if exists("g:loaded_nerdtree_plugin_terminal")
+diff --git a/plugin/NERD_tree.vim b/plugin/NERD_tree.vim
+index 6411b1d..dc4b91b 100644
+--- a/plugin/NERD_tree.vim
++++ b/plugin/NERD_tree.vim
+@@ -144,11 +144,11 @@ if s:running_windows
+ else
+     let s:escape_chars =  " \\`\|\"#%&,?()\*^<>"
+ endif
+-let s:NERDTreeBufName = 'NERD_tree_'
++let s:NERDTreeBufName = '.'
+ 
+ let s:tree_wid = 2
+ let s:tree_markup_reg = '^[ `|]*[\-+~]'
+-let s:tree_up_dir_line = '.. (up a dir)'
++let s:tree_up_dir_line = '..'
+ 
+ "the number to add to the nerd tree buffer name to make the buf name unique
+ let s:next_buffer_number = 1
+@@ -407,6 +407,12 @@ function! s:Bookmark.Sort()
+     let CompareFunc = function("s:compareBookmarks")
+     call sort(s:Bookmark.Bookmarks(), CompareFunc)
+ endfunction
++
++let s:homestr = $HOME . '/'
++let s:sourcestr = s:homestr . 'src/'
++let s:workspacestr = $HOME . '/workspace/'
++let s:virtualenvs = $WORKON_HOME . '/'
++
+ " Function: Bookmark.str()   {{{3
+ " Get the string that should be rendered in the view for this bookmark
+ function! s:Bookmark.str()
+@@ -416,8 +422,13 @@ function! s:Bookmark.str()
+     endif
+ 
+     let pathStr = self.path.str({'format': 'UI'})
++    let pathStr = substitute(pathStr, s:virtualenvs , 'e://', "")
++    let pathStr = substitute(pathStr, s:workspacestr, 'w://', "")
++    let pathStr = substitute(pathStr, s:sourcestr,    's://', "")
++    let pathStr = substitute(pathStr, s:homestr,         '', "")
++
+     if len(pathStr) > pathStrMaxLen
+-        let pathStr = '<' . strpart(pathStr, len(pathStr) - pathStrMaxLen)
++        let pathStr = '_' . strpart(pathStr, len(pathStr) - pathStrMaxLen)
+     endif
+     return '>' . self.name . ' ' . pathStr
+ endfunction
+@@ -2980,7 +2991,8 @@ function! s:dumpHelp()
+         let @h=@h."\" :ClearBookmarks [<names>]\n"
+         let @h=@h."\" :ClearAllBookmarks\n"
+     else
+-        let @h="\" Press ". g:NERDTreeMapHelp ." for help\n"
++        let @h=""
++        "\" Press ". g:NERDTreeMapHelp ." for help\n"
+     endif
+ 
+     silent! put h
+@@ -3201,7 +3213,7 @@ function! s:putCursorOnBookmarkTable()
+     let rootNodeLine = s:TreeFileNode.GetRootLineNum()
+ 
+     let line = 1
+-    while getline(line) !~ '^>-\+Bookmarks-\+$'
++    while getline(line) !~ '^= bookmarks $'
+         let line = line + 1
+         if line >= rootNodeLine
+             throw "NERDTree.BookmarkTableNotFoundError: didnt find the bookmarks table"
+@@ -3223,16 +3235,16 @@ endfunction
+ "FUNCTION: s:renderBookmarks {{{2
+ function! s:renderBookmarks()
+ 
+-    call setline(line(".")+1, ">----------Bookmarks----------")
+-    call cursor(line(".")+1, col("."))
++    call setline(line("."), "= bookmarks ")
++    call cursor(line("."), col("."))
+ 
+     for i in s:Bookmark.Bookmarks()
+         call setline(line(".")+1, i.str())
+         call cursor(line(".")+1, col("."))
+     endfor
+ 
+-    call setline(line(".")+1, '')
+-    call cursor(line(".")+1, col("."))
++    call setline(line("."), '')
++    call cursor(line("."), col("."))
+ endfunction
+ "FUNCTION: s:renderView {{{2
+ "The entry function for rendering the tree
+@@ -3251,16 +3263,16 @@ function! s:renderView()
+     call s:dumpHelp()
+ 
+     "delete the blank line before the help and add one after it
+-    call setline(line(".")+1, "")
+-    call cursor(line(".")+1, col("."))
++    call setline(line("."), "")
++    call cursor(line("."), col("."))
+ 
+     if b:NERDTreeShowBookmarks
+         call s:renderBookmarks()
+     endif
+ 
+     "add the 'up a dir' line
+-    call setline(line(".")+1, s:tree_up_dir_line)
+-    call cursor(line(".")+1, col("."))
++    call setline(line("."), s:tree_up_dir_line)
++    call cursor(line("."), col("."))
+ 
+     "draw the header line
+     let header = b:NERDTreeRoot.path.str({'format': 'UI', 'truncateTo': winwidth(0)})

File scripts/bashmarks_to_nerdtree.sh

+#!/bin/bash
+# print bashmarks in nerdtree format
+export | grep 'DIR_' | pyline "line[15:].replace('\"','').split('=',1)"

File scripts/mktinyvim.sh

+#!/bin/sh
+TINYVIMDIR="tinyvim"
+mkdir -p $TINYVIMDIR
+cd $TINYVIMDIR
+ln -s -f ../bundle/jellybeans.vim .
+ln -s -f ../bundle/syntastic .
+ln -s -f ../bundle/tagbar .
+ln -s -f ../bundle/bufexplorer .
+ln -s -f ../bundle/vim-signify .
+ln -s -f ../bundle/vim-fugitive .
+ln -s -f ../bundle/vim-lawrencium .
+ln -s -f ../bundle/vim-easymotion .
+ln -s -f ../bundle/n3.vim .
+ln -s -f ../bundle/salt-vim .
+ln -s -f ../bundle/riv.vim
+ln -s -f ../bundle/nerdtree .
+ln -s -f ../bundle/ctrlp.vim .

File scripts/setup_powerline_fonts.sh

+#!/bin/sh
+# Install the Powerline-fonts
+
+mkdir -p ~/.fonts
+if [ ! -d "powerline-fonts" ]; then
+    git clone https://github.com/Lokaltog/powerline-fonts
+fi
+cd powerline-fonts
+if [ -d "$HOME/Library/Fonts" ]; then
+    find . -name '*.ttf' -exec cp "{}" ~/Library/Fonts \;
+    find . -name '*.otf' -exec cp "{}" ~/Library/Fonts \;
+    open "/Applications/Font Book.app"
+else
+    find . -name '*.ttf' -exec cp "{}" ~/.fonts \;
+    find . -name '*.otf' -exec cp "{}" ~/.fonts \;
+    fc-cache -vf ~/.fonts
+fi

File scripts/setup_vim_deb.sh

+#!/bin/sh
+sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev  libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev libssl-dev
+mkdir -p ~/src
+hg clone https://vim.googlecode.com/hg/ ~/src/vim
+cd ~/src/vim
+./configure --enable-multibyte --enable-pythoninterp --enable-cscope --enable-xim --with-features=huge --enable-gui=gnome2
+make

File snippets-ulti/python.snippets

+snippet climain "CLI Main" b
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+from __future__ import print_function
+"""
+${1:progname}
+"""
+
+
+def $1($2):
+    """
+    ${3:mainfunc}
+    """
+    ${5:pass}
+
+
+import unittest
+class Test_$1(unittest.TestCase):
+    def test_$1(self):
+        ${4:pass}
+
+
+def main():
+    import optparse
+    import logging
+
+    prs = optparse.OptionParser(usage="./%prog : ${6:args}")
+
+    prs.add_option('-v', '--verbose',
+                    dest='verbose',
+                    action='store_true',)
+    prs.add_option('-q', '--quiet',
+                    dest='quiet',
+                    action='store_true',)
+    prs.add_option('-t', '--test',
+                    dest='run_tests',
+                    action='store_true',)
+
+    (opts, args) = prs.parse_args()
+
+    if not opts.quiet:
+        logging.basicConfig()
+
+        if opts.verbose:
+            logging.getLogger().setLevel(logging.DEBUG)
+
+    if opts.run_tests:
+        import sys
+        sys.argv = [sys.argv[0]] + args
+        import unittest
+        exit(unittest.main())
+
+    $1($2)
+
+if __name__ == "__main__":
+    main()
+endsnippet
+
+snippet setup.py
+"""setup.py file for ${1}"""
+import codecs
+import os
+import sys
+
+from distutils.util import convert_path
+from fnmatch import fnmatchcase
+from setuptools import setup, find_packages
+
+
+def read_file(fname):
+	path = os.path.join(
+		os.path.dirname(__file__),
+		fname)
+    with codecs.open(fname, 'r') as f:
+		data = f.read()
+	return data
+
+
+standard_exclude = [
+    "*.py",
+    "*.pyc",
+    "*$py.class",
+    "*~",
+    ".*",
+    "*.bak",
+    "*.swp",
+]
+standard_exclude_directories = [
+    ".*",
+    "CVS",
+    '.hg',
+    '.git',
+    '.svn',
+    '.bzr',
+    "_darcs",
+    "./build",
+    "./dist",
+    "EGG-INFO",
+    "*.egg-info",
+]
+
+
+# (c) 2005 Ian Bicking and contributors
+# MIT license: http://www.opensource.org/licenses/mit-license.php
+def find_package_data(
+    where=".",
+    package="",
+    exclude=standard_exclude,
+    exclude_directories=standard_exclude_directories,
+    only_in_packages=True,
+    show_ignored=False):
+    """
+    Return a dictionary suitable for use in ``package_data``
+    in a distutils ``setup.py`` file.
+
+    The dictionary looks like::
+
+        {"package": [files]}
+
+    Where ``files`` is a list of all the files in that package that
+    don"t match anything in ``exclude``.
+
+    If ``only_in_packages`` is true, then top-level directories that
+    are not packages won"t be included (but directories under packages
+    will).
+
+    Directories matching any pattern in ``exclude_directories`` will
+    be ignored; by default directories with leading ``.``, ``CVS``,
+    and ``_darcs`` will be ignored.
+
+    If ``show_ignored`` is true, then all the files that aren"t
+    included in package data are shown on stderr (for debugging
+    purposes).
+
+    Note patterns use wildcards, or can be exact paths (including
+    leading ``./``), and all searching is case-insensitive.
+    """
+    out = {}
+    stack = [(convert_path(where), "", package, only_in_packages)]
+    while stack:
+        where, prefix, package, only_in_packages = stack.pop(0)
+        for name in os.listdir(where):
+            fn = os.path.join(where, name)
+            if os.path.isdir(fn):
+                bad_name = False
+                for pattern in exclude_directories:
+                    if (fnmatchcase(name, pattern)
+                        or fn.lower() == pattern.lower()):
+                        bad_name = True
+                        if show_ignored:
+                            print >> sys.stderr, (
+                                "Directory %s ignored by pattern %s"
+                                % (fn, pattern))
+                        break
+                if bad_name:
+                    continue
+                if (os.path.isfile(os.path.join(fn, "__init__.py"))
+                    and not prefix):
+                    if not package:
+                        new_package = name
+                    else:
+                        new_package = package + "." + name
+                    stack.append((fn, "", new_package, False))
+                else:
+                    stack.append((fn, prefix + name + "/", package, only_in_packages))
+            elif package or not only_in_packages:
+                # is a file
+                bad_name = False
+                for pattern in exclude:
+                    if (fnmatchcase(name, pattern)
+                        or fn.lower() == pattern.lower()):
+                        bad_name = True
+                        if show_ignored:
+                            print >> sys.stderr, (
+                                "File %s ignored by pattern %s"
+                                % (fn, pattern))
+                        break
+                if bad_name:
+                    continue
+                out.setdefault(package, []).append(prefix+name)
+    return out
+
+
+PACKAGE = ""
+NAME = "${1:pkgname}"
+DESCRIPTION = ""
+AUTHOR = "${2}"
+AUTHOR_EMAIL = "${3}"
+LICENSE = "${4}
+URL = "${5}"
+VERSION = "${6:__import__(PACKAGE).__version__}"
+DATA_FILES=None
+INSTALL_REQUIRES = []
+
+setup(
+    name=NAME,
+    version=VERSION,
+    description=DESCRIPTION,
+    long_description=read("README.rst"),
+    author=AUTHOR,
+    author_email=AUTHOR_EMAIL,
+    license=LICENSE,
+    url=URL,
+    packages=find_packages(exclude=["tests.*", "tests"]),
+   #package_dir = {'': 'src'},
+    package_data=find_package_data(PACKAGE, only_in_packages=False),
+   #include_package_data=True,
+    data_files=DATA_FILES,
+    classifiers=[
+        "Development Status :: 3 - Alpha",
+       #"Environment :: Web Environment",
+       #"Intended Audience :: Developers",
+       #"License :: OSI Approved :: BSD License",
+       #"License :: OSI Approved :: MIT License",
+       #"License :: OSI Approved :: Apache License,
+       #"Operating System :: OS Independent",
+        "Programming Language :: Python",
+    ],
+    zip_safe=False,
+    test_suite='nose.collector',
+    install_requires=INSTALL_REQUIRES,
+    entry_points={
+        'console_scripts': [
+        ]
+)
+endsnippet
+
+snippet pdb
+    import pdb; pdb.set_trace()
+endsnippet
+" .vimrc
+"
+""respect to
+""- https://dev.launchpad.net/UltimateVimPythonSetup
+""- https://github.com/kennethreitz/dotfiles/blob/master/.vimrc
+""- https://bitbucket.org/sjl/dotfiles/src/tip/vim/.vimrc#cl-716
+""- http://vim.wikia.com/wiki/Highlight_unwanted_spaces
+""- http://stackoverflow.com/questions/1551231
+""- http://superuser.com/questions/117969/is-there-a-way-to-move-a-split-page-to-a-new-tab-in-vim
+""- http://sontek.net/turning-vim-into-a-modern-python-ide
+""- http://vim.wikia.com/wiki/VimTip320
+
+" Vim Reference
+" ---------------
+"  %          --  current filename
+"  %:p        --  current filepath
+"  $VIMRUNTIME      --  /{colors,syntax,macros}
+"  ListMappings     --  list commented mappings
+"  :map             --  list actual mappings
+"  :scriptnames     --  list scripts and plugins
+"  :set             --  list all nondefault options
+"  e <path>         --  open file
+"  e <pa...><tab>   --  open file with wildmenu completion
+"  \e [...] <enter> --  open file
+"  :tabnew <path>   --  open file
+"  :read filename|  --  insert filename at cursor
+"  :read !cmd       --  insert cmd output at cursor
+"  :%! [cmd]        --  buffer > stdin > [cmd] > stdout => buffer.replace
+"
+"  [n]G             --  goto line #
+"  g <C-g>          --  whereami
+"  u                --  undo
+"  ^r               --  redo
+"  :%s:\(.*\):+\1:g --  Regex
+"
+" Modes
+"  i                --  insert
+"  I                --  insert at beginning of line
+"  a                --  append
+"  A                --  append at end of line
+"  v                --  visual
+"  c-v              --  visual block
+"  ;;               --  command
+"  <Esc>            --  command
+"
+" Vim Marks
+"  m[a-z]{1}        --  set mark
+"  `[a-z]{1}        --  goto mark
+"  '[a-z]{1}        --  goto mark
+"
+" Macros
+"  q[a-z]{1}        --  start recording
+"  q                --  stop recording
+"  @[a-z]{1}        --  replay macro
+"  @@               --  repeat macro
+"  q2<seq><esc>q;@2 --  record macro to 2 and repeat
+"
+" Searching
+"  /<pattern>       --  search for term
+"  *                --  search for term under cursor next
+"  n                --  next search ocurrence
+"  #                --  search for term under cursor previous
+"  N                --  previous search ocurrence
+"
+"  :[l][vim]grep <pattern> <file>
+"
+"  :cl,  :ll        --  list list
+"  :copen,lopen [h] --  open list
+"  :cw,  :lw        --  toggle show list
+"  :ccl[ose], lcl   --  close list
+"  :cn,  :ln        --  next <Enter>
+"  :cp,  :lp        --  prev <Enter>
+"  :cc!, :lc [nr]   --  jump to [nr]
+"  :cfir,:cla       --  first, last
+"
+" Yanking and Pasting
+"  y[a-z]           --  yank to buffer [a-z]
+"  p[a-z]           --  paste from buffer [a-z]
+"  ]p               --  paste to level
+"
+" Indenting/Shifting Blocks
+"  [n]<             --  shift block left
+"  [n]>             --  shift block right
+"
+"
+" Folding
+"  :help Fold       --  also usr_28
+"  :set nofen       --  stop folding
+"  zf               --  create fold
+"  zo               --  fold open
+"  zO               --  fold open recursive
+"  zc               --  fold close
+"  zC               --  fold close recursive
+"  zx               --  undo manual fold actions
+"  zX               --  undo manual fold actions and recompute
+"  zR               --  open all folds
+"
+" Etiquette
+"  <leader> i       --  toggle unprintables
+"  <leader> sd      --  toggle highlight EOL whitespace
+"  <leader> sc      --  clear highlighting
+"
+
+" set window title to vim title (display full path)
+set title
+
+"  :ListMappings    --  list .vimrc mapping comments
+function! ListMappings()
+    lvimgrep '\s*"\s\{2,}' ~/.vimrc ~/.dotfiles/etc/vim/vimrc.bundles
+    lopen
+endfunction
+command! -nargs=0 ListMappings call ListMappings()
+
+"  <space> -- <leader>
+map <space> <leader>
+"  ,    --  <leader> == <comma>
+map ,       <leader>
+
+
+"  ;;   --  <esc> == double semicolon
+imap ;;     <esc>
+vmap ;;     <esc>
+"  98   --  <esc> == 98
+imap 98     <esc>
+vmap 98     <esc>
+"  :;   --  <esc> == colon semicolon
+imap :;     <esc>:
+"  :;   --  <esc> == colon semicolon
+vmap :;     <esc>:
+
+" Quickfix
+"  <leader> q               --  toggle quicklist
+noremap <silent> <leader>q      <Esc>:cw<CR>
+"  <leader> n               --  next quicklist item
+noremap <silent> <leader>n      <Esc>:cn<CR>
+"  <leader> l               --  toggle location list
+noremap <silent> <leader>l      <Esc>:lw<CR>
+
+set nocompatible
+set nomodeline
+
+" Workaround vim lp:#572863
+"set ttyscroll=0
+
+filetype off
+
+if exists("g:tinyvim") || !has('keymap')
+    source ~/.vim/vimrc.tinyvim.bundles.vimrc
+else
+    source ~/.vim/vimrc.full.bundles.vimrc
+endif
+
+
+filetype plugin indent on
+syntax on
+
+set noswf               " Do not create swap files
+set number              " Show line numbers
+set ruler               " Show the cursor position all the time
+set showcmd		        " Show (partial) command in status line
+set showmatch		    " Show matching brackets
+set matchpairs+=<:>     " Match < > brackets too
+set hidden              " Hide buffers when they are abandoned
+set mouse=a		        " Enable mouse usage (all modes) in terminals
+
+" Code Folding
+set nofoldenable
+set foldopen=all
+set foldmethod=manual
+set nofoldenable
+
+" UTF-8
+"set encoding=utf-8
+"set fileencoding=utf-8
+"set fileencodings=utf-8
+"set ambiwidth=double
+"set nobomb
+
+set nosmartindent
+" TODO XXX
+set indentkeys-=:,0#
+
+" Code Indenting
+set autoindent
+
+" Searching
+set hlsearch
+set smartcase		    " Do smart case matching
+"set ignorecase		    " Do case insensitive matching
+"set incsearch		    " Incremental search
+
+set scrolloff=4         " Show cursor+/- n lines
+
+set shiftround          " round </> shifts
+set expandtab           " soft tabs
+
+set backspace=2         " indent, eol, start
+
+if exists("+colorcolumn")
+   set colorcolumn=79
+endif
+"  set colorcolumn=0    --  clear color column
+
+" Turn Off Visual Bell
+set noerrorbells visualbell t_vb=
+
+" WildMenu
+set wildchar=<Tab> wildmenu wildmode=full
+
+" Spell Checking
+set spelllang=en_us
+"  <leader> sp           --  toggle spellcheck
+nmap <silent><leader>sp     :set spell!<CR>
+
+"  shift-<enter>        --  insert new line w/o changing mode
+map <S-Enter>               O<ESC>
+"map <Enter>               o<ESC>
+
+if has("autocmd")
+    " no error bells
+    autocmd GUIEnter * set visualbell t_vb=
+
+    " Jump to last position
+    au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
+        \| exe "normal g'\"" | endif
+
+    " remove trailing whitespace
+    "au BufWritePre *.py :%s/\s\+$//e
+
+    " filetype extensions
+    augroup filetypedetect
+        au BufNewFile,BufRead *.n3  setfiletype n3
+        au BufNewFile,BufRead *.ttl  setfiletype n3
+        au BufNewFile,BufRead *.jinja2 set filetype=jinja
+        au BufNewFile,BufRead *.jinja set filetype=jinja
+        au BufNewFile,BufRead *.html set filetype=htmldjango
+        au BufNewFile,BufRead Vagrantfile set filetype=ruby
+    augroup END
+
+    "set previewheight=50
+    "au BufEnter ?* call PreviewHeightWorkAround()
+    "func! PreviewHeightWorkAround()
+    "    if &previewwindow
+    "        exec 'setlocal winheight='.&previewheight
+    "    endif
+    "endfunc
+
+    " Auto completion
+    au FileType python set omnifunc=pythoncomplete#Complete
+    au FileType htmldjango set omnifunc=htmlcomplete#CompleteTags
+    au FileType javascript set omnifunc=javascriptcomplete#CompleteJS
+    au FileType html set omnifunc=htmlcomplete#CompleteTags
+    au FileType css set omnifunc=csscomplete#CompleteCSS
+    au FileType xml set omnifunc=xmlcomplete#CompleteTags
+    au FileType php set omnifunc=phpcomplete#CompletePHP
+    au FileType c set omnifunc=ccomplete#Complete
+
+    set completeopt=menuone,longest,preview
+    "  CTRL-<space>     --  autocomplete menu
+    inoremap <C-Space>      <C-x><C-o>
+    "  CTRL-<tab>       --  autocomplete menu
+    inoremap <C-Tab>        <C-X><C-o>
+
+    inoremap <expr> <CR>    pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
+    inoremap <expr> <C-n>   pumvisible() ? '<C-n>' : '<C-n><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'
+
+    "Always search for word under cursor
+    "au CursorMoved * silent! exe printf('match IncSearch /\<%s\>/', expand('<Cword>'))
+
+    " close vim if the only window left open is a NERDTree
+    autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
+
+    " Open NERDTree automatically if no files were specified
+    autocmd vimenter * if !argc() && exists("b:NERDTreeType") | NERDTree | endif
+endif
+
+" Drag and Drop
+"   :help drag-n-drop
+"   shift-<drop>    --  cd to file's directory
+"   ctrl-<drop>     --  split new window for file
+"   <drop>          --  open file or paste path at cursor
+
+" Fonts
+"  :PatchFont      -- set the font
+function! PatchFont()
+    let s:fontsize="11"
+    let s:fonts = [
+                \   "DejaVu Sans Mono for Powerline",
+                \   "Monaco",
+                \   "DejaVu Sans Mono",
+                \   "Monospace",
+                \   ]
+    let s:fontspace = ' '
+    if !has('X11')
+        "macvim
+        let s:fontspace = ':h'
+        let s:fontsize = s:fontsize + 3
+    endif
+    let &guifont=s:fonts[0] . s:fontspace . s:fontsize
+endfunction
+command! -nargs=* PatchFont call PatchFont()
+call PatchFont()
+
+
+" GUI Menubar
+"  :HideMenubar    -- hide GUI menubar
+function! HideMenubar()
+    set guioptions-=m
+endfunction
+command! -nargs=* HideMenubar call HideMenubar()
+
+
+"  :ShowMenubar    -- show GUI menubar
+function! ShowMenubar()
+    set guioptions+=m
+endfunction
+command! -nargs=* ShowMenubar call ShowMenubar()
+
+"   :Set256         -- set 256 colors (for console vim)
+function! Set256()
+    set t_Co=256
+endfunction
+command! -nargs=* Set256 call Set256()
+
+"   :Set88          -- set 88 colors (for console vim)
+function! Set88()
+    set t_Co=88
+endfunction
+command! -nargs=* Set88 call Set88()
+
+
+" GUI
+if has("gui_running")
+    call Set256()
+
+    "  Remove gui scrollbars
+    set guioptions+=LlRrb
+    set guioptions-=LlRrb
+
+    set guioptions-=T       " do not display the gvim toolbar
+    set guioptions-=m       " do not display the gvim menubar
+
+    set guiheadroom=-50
+
+    set mousemodel=popup
+
+    "  ctrl-z   --  undo
+    imap <C-z>      <Esc>:undo<CR>
+    nnoremap <C-z>  :undo<CR>
+    "  alt-z    --  undo
+    imap <a-z>      <Esc>:undo<CR>
+    nnoremap <a-z>  :undo<CR>
+
+    "  ctrl-r   --  redo
+    imap <C-r>      <Esc>:redo<CR>
+    nnoremap <C-r>  :redo<CR>
+    "  alt-r    --  redo
+    imap <a-r>      <Esc>:redo<CR>
+    nnoremap <a-r>  :redo<CR>
+
+    "  ctrl-X   --  cut
+    imap <C-X>      <C-O>vgG
+    vmap <C-X>      "*x<Esc>i
+    "  alt-x    --  cut
+    imap <a-x>      <C-O>vgG
+    vmap <a-x>      "*x<Esc>i
+
+    "  ctrl-c   --  copy
+    imap <C-c>      <C-O>vgG
+    vmap <C-c>      "*y<Esc>i
+    "  alt-c    --  copy
+    imap <a-c>      <C-O>vgG
+    vmap <a-c>      "*y<Esc>i
+else
+    "call Set88()
+    if $COLORTERM == 'gnome-terminal'
+        call Set256()
+    else
+        " always call Set256.
+        " if this causes problems with older terminals
+        " :Set88
+        call Set256()
+    endif
+    set mousemodel=popup
+
+    "set background color
+    "t_AB=^[[48;5;%dm
+    "set foreground color
+    "set t_AF=^[[38;5;%dm
+endif
+
+"set statusline=%F%m%r%h%w\ [format=%{&ff}]\ [type=%Y]\ [chr=\%03.3b]\ [0x=\%02.2B]\ [\ %04l\ .\ %03v\ ][%p%%]\ [len=%L] [%{strftime(\"%c\",getftime(expand(\"%:p\")))}]
+"set statusline=%<%F%h%m%r%h%w%y\[%{&ff}]\ sav:[%{strftime(\"%c\",getftime(expand(\"%:p\")))}]%=\ col:%c%V\ a/x:%b/%02.2B\ pos:%o\ lin:%l\,%L\ %P
+"set statusline=%<%F%h%m%r%h%w\ %{strftime(\"%m%d%y\:%H%S\",getftime(expand(\"%:p\")))}%=\ c:%c%V\ %P
+set laststatus=2
+
+
+" autocmd! Syntax * syn match ExtraWhitespace /\s\+$\| \+\ze\t/
+"  <leader> sd              --  match EOL whitespace
+nnoremap <silent><leader>sd     :match ExtraWhitespace /\s\+$/<CR>
+
+"  <leader> sc              --  clear search highlighting
+nnoremap <silent> <leader>sc    :match<CR>
+
+"  ctrl-q       --  close
+nnoremap <c-q>      <Esc>:confirm q<CR>
+
+"  <leader> i   --  toggle show invisibles
+set listchars=trail:.,tab:>-,eol:$
+nmap <leader>i      :set list!<CR>
+
+"  ,cd          --  :cd %:p:h
+noremap ,cd         :cd %:p:h<CR>:pwd<CR>
+
+"  T            --  wrap paragram
+nnoremap T          gqap
+
+" Keep search matches in the middle of the window.
+nnoremap * *zzzv
+nnoremap # #zzzv
+nnoremap n nzzzv
+nnoremap N Nzzzv
+
+"" Cursorline and cursorcolumn
+"  <leader> [    --  toggle cursorline and cursorcolumn
+nnoremap <leader>[          :set cursorline! cursorcolumn!<CR>
+"  <leader> hm   --  set horizontal line mark
+nnoremap <silent><leader>hm ml:execute 'match HorizMark /\%'.line('.').'l/' <CR>
+"  <leader> hv   --  set vertical column mark
+nnoremap <silent><leader>hv :execute 'match VertMark /\%'.virtcol('.').'v/'<CR>
+"  <leader> c    --  clear virt marks
+nnoremap <silent><leader>c  :match<CR>
+
+
+
+"  Tab          --  Indent Line
+" map <Tab>         >gb
+"  Shift-Tab    --  Dedent Line
+map <S-Tab>         v<gv<ESC>0I<ESC>l
+imap <S-Tab>        <ESC>v<gv<ESC>0I
+
+"  ctrl-t       --  Indent Current Line
+vnoremap <C-t>      >
+"  ctrl-d       --  Dedent Current Line
+vnoremap <C-d>      <
+
+"  >            --  Visual Indent Block
+vnoremap >          >gv
+"  <            --  visual dedent block
+vnoremap <          <gv
+
+" Alternative using Tab/Shift-Tab (for gvim).
+"  tab          --  shift right
+"  Shift-tab    --  shift left
+" vnoremap <Tab>    >gv
+vnoremap <S-Tab>    <gv
+
+"  ctrl-f       --  find
+imap <c-f>          <Esc>:lgrep %:p
+vnoremap <c-f>      :lgrep
+
+"  ctrl-A       --  copy all
+imap <c-a>          <C-O>gg<C-O>gH<C-O>G<Esc>
+vmap <c-a>          <ESC>gggH<C-O>G<Esc>i
+
+"<ctrl-V> -- paste
+"map <C-v> "+gP
+"imap <C-v> <Esc>"+gP
+"vmap <C-v> <Esc>"+gP
+nm \\paste\\        "=@*.'xy'<CR>gPFx"_2x:echo<CR>
+imap <a-v>          x<Esc>\\paste\\"_s
+vmap <a-v>          "-cx<Esc>\\paste\\"_x
+
+" Paste
+"  shift-insert --  paste
+map <S-Insert>      <Esc>"+gp
+imap <S-Insert>     <Esc>"+gp
+vmap <S-Insert>     <Esc>"+gp
+
+"  ctrl-S       --  Save
+nnoremap <C-s>      <Esc>:w!<CR>
+"imap <C-s>         <C-o><C-s><Cr>
+
+"  ctrl-Alt-W   --  Close
+nnoremap <C-A-w>    <Esc>:q<CR>
+
+"  ctrl-Home    --  Goto line one
+nnoremap <C-Home>   gg1
+nnoremap <s-Home>   gg1
+
+"  ctrl-End     --  Goto line :-1
+nnoremap <C-End>    G
+nnoremap <s-End>    G
+
+
+" PgUp/PgDn
+"  K    --  PageUp
+nnoremap K  <PageUp>
+"  J    --  PageDown
+nnoremap J  <PageDown>
+
+" Pgup/Down are actually 2*<c-U>
+nnoremap <silent> <PageUp> <C-U><C-U>
+vnoremap <silent> <PageUp> <C-U><C-U>
+inoremap <silent> <PageUp> <C-\><C-O><C-U><C-\><C-O><C-U>
+nnoremap <silent> <PageDown> <C-D><C-D>
+vnoremap <silent> <PageDown> <C-D><C-D>
+inoremap <silent> <PageDown> <C-\><C-O><C-D><C-\><C-O><C-D>
+
+function! Maxmzl()
+    set lines=59 columns=120
+endfunction
+command! -nargs=0 Max call Maxmzl()
+
+function! Minmzl()
+    set lines=40 columns=80
+endfunction
+command! -nargs=0 Min call Minmzl()
+
+" Window Nav        (window-move-cursor)
+"  ctrl-j       --  cursor window down
+map <C-j>           <C-w>j
+"  ctrl-u       --  cursor window down
+map <C-u>           <C-w>j
+"  ctrl-k       --  cursor window up
+map <C-k>           <C-w>k
+"  ctrl-i       --  cursor window up
+map <C-i>           <C-w>k
+
+"  ctrl-l       --  cursor window right
+map <C-l>           <C-w>l
+"  ctrl-h       --  cursor window left
+map <C-h>           <C-w>h
+
+" Window Resize     (window-resize)
+"  ctrl-w _     --  maximize window height
+"  ctrw-w 1_    --  minimize window height
+"  ctrl-w |     --  maximize window width
+"  ctrl-w 1|    --  minimize window width
+"  ctrl-w =     --  equalize window sizes
+"  [n]ctrl-w >  --  expand width
+"  [n]ctrl-w <  --  contract width
+"  [n]ctrl-w +  --  increase height
+"  [n]ctrl-w -  --  reduce height
+
+" Window Movement (window-move)
+" Window Up
+"  <leader> wk  --  move window up
+map <leader>wk      <C-W>K
+"  ctrl-wi      --  move window up
+map <C-w>i          <C-W>K
+"  <leader> wi  --  move window up
+map <leader>wi      <C-W>K
+
+" Window Right
+"  <leader> wl  --  move window right
+map <leader>wl      <C-W>L
+
+" Window Down
+"  <leader> wj  --  move window down
+map <leader>wj      <C-W>J
+"  ctrl-wu      --  move window down
+map <C-w>u          <C-W>J
+"  <leader> wu  --  move window down
+map <leader>wu      <C-W>J
+
+" Window Left
+"  <leader> wj  --  move window left
+map <leader>wj      <C-W>H
+
+" Window Rotate
+"  ctrl-w R     --  rotate window up
+"  ctrl-w r     --  rotate window down
+
+
+" Tab Movement (tab-page-commands)
+"  ctrl-Alt-h   --  previous tab
+map <C-A-h>         :tabprevious<CR>
+"  Alt-u        --  previous tab
+map <A-u>           :tabprevious<CR>
+"  ctrl-Alt-l   --  next tab
+map <C-A-l>         :tabnext<CR>
+"  Alt-i        --  next tab
+map <A-i>           :tabnext<CR>
+
+
+" Man.vim          --  view manpages in vim
+"  :Man man        --  view manpage for 'man'
+source $VIMRUNTIME/ftplugin/man.vim
+
+
+"  <leader> o      --  Open uri under cursor
+nnoremap <leader>o      :silent !xdg-open <C-R>=escape("<C-R><C-F>", "#?&;\|%")<CR><CR>
+
+
+if executable("ack")
+    "  :Ack <term> <path>
+    "  <leader>a        --  Ack
+    nmap <leader>a      <Esc>:Ack!
+endif
+
+" Grin              -- Find in Python
+if executable("grin")
+    set grepprg=grin\ -snHS\ --emacs\ --follow
+    set grepformat=%f:%l:%m
+elseif executable("ack")
+    set grepprg=ack\ -H\ --nogroup\ --nocolor\ --ignore-dir=tmp\ --ignore-dir=coverage
+endif
+
+
+" Ctags
+"  ctrl-[           --  go to tag under cursor
+"  ctrl-T           --  go back  #TODO
+
+" sh: ctags -R -f ~/.vim/tags/python-$PYVER.ctags $PYLIBDIR
+"set tags+=$HOME/.vim/tags/python-$PYVER.ctags
+
+" Use :make to see syntax errors. (:cn and :cp to move around, :dist to see
+" all errors)
+"set makeprg=python\ -c\ \"import\ py_compile,sys;\ sys.stderr=sys.stdout;\ py_compile.compile(r'%')\"
+"set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
+
+
+" Colors
+"  :PatchColors     --  load local colorizing postsets
+function! PatchColors()
+    hi Normal                           guibg=#040404       gui=NONE
+                \       ctermfg=lightgray                   cterm=None
+    hi Visual           guifg=NONE      guibg=#540300
+                \       ctermfg=black   ctermbg=darkgreen
+    hi MatchParen                       guibg=#a42314       gui=bold
+                \                       ctermbg=red         cterm=bold
+
+    hi StatusLine	    guifg=gray90    guibg=#101010
+                \       ctermfg=lightgray  ctermbg=black
+
+    hi StatusLineNC	    guifg=gray30    guibg=#101010
+                \       ctermfg=white   ctermbg=black
+
+    hi VertSplit        guifg=#101010   guibg=#101010
+                \       ctermfg=white   ctermbg=black
+    hi WildMenu         guifg=NONE      guibg=#540300       gui=bold
+                \       ctermfg=red     ctermbg=black
+
+    hi LineNr	        guifg=gray50    guibg=#080808
+                \       ctermfg=darkgray
+
+    hi HorizMark                        guibg=#2a4a2a
+                \                       ctermbg=darkgreen
+    hi VertMark                         guibg=#2a2a2a
+                \                       ctermbg=darkgreen
+
+    hi ExtraWhitespace  guifg=#540300   guibg=#540300
+                \       ctermfg=red     ctermbg=red
+
+    hi Folded           guifg=gray90     guibg=black
+    hi FoldColumn       guifg=gray10    guibg=#222222
+    hi ColorColumn                      guibg=gray20
+                \                       ctermbg=darkgray
+
+    hi Cursor           guifg=NONE                          gui=reverse
+                \       ctermfg=NONE                        cterm=reverse
+    hi CursorColumn                     guibg=gray20
+                \                       ctermbg=darkgray
+    hi CursorLine                       guibg=gray20
+                \                       ctermbg=black
+
+    hi DiffAdd                          guibg=#454d4d
+    hi DiffChange                       guibg=#38492b
+    hi DiffDelete   guifg=#443737       guibg=#443737
+    hi DiffText                         guibg=#4c5f48
+
+    hi Directory    guifg=#FFA0A0
+                \   ctermfg=lightgray
+
+    hi Comment                                              gui=bold
+                \                                           cterm=bold
+
+    hi Error        guifg=white         guibg=#a42314       gui=bold
+                \   ctermfg=white       ctermbg=red         cterm=bold
+    hi ErrorMsg     guifg=white         guibg=#a42314
+                \   ctermfg=white       ctermbg=red         cterm=bold
+
+    hi ModeMsg      guifg=#eecc18       guibg=NONE          gui=NONE
+                \   ctermfg=yellow      ctermbg=NONE        cterm=NONE
+    hi Title        guifg=#dd4452       guibg=NONE          gui=bold
+                \   ctermfg=red         ctermbg=NONE        cterm=bold
+    hi Question     guifg=#66d077       guibg=NONE          gui=NONE
+                \   ctermfg=green       ctermbg=NONE        cterm=NONE
+    hi MoreMsg      guifg=#39d049       guibg=NONE          gui=NONE
+                \   ctermfg=green       ctermbg=NONE        cterm=NONE
+
+    hi ErrorMsg     guifg=#ffffff       guibg=#ff0000       gui=bold
+                \   ctermfg=white       ctermbg=red         cterm=bold
+    hi WarningMsg   guifg=#ccae22       guibg=NONE          gui=bold
+                \   ctermfg=yellow      ctermbg=NONE        cterm=bold
+
+    hi NonText      guifg=#151515       guibg=#151515
+
+    hi TabLine      guifg=white         guibg=black
+                \   ctermfg=lightgray   ctermbg=black
+    hi TabLineFill                                          gui=reverse
+                \   ctermfg=black
+    hi TabLineSel   guifg=white         guibg=black
+                \   ctermfg=red         ctermbg=black
+
+    hi Todo         guifg=white         guibg=#a42314       gui=bold
+                \   ctermfg=red         ctermbg=black       cterm=bold
+
+    hi clear FoldColumn
+    hi FoldColumn   guifg=#c8bcb9       guibg=#171717       gui=bold
+                \   ctermfg=lightgray   ctermbg=black       cterm=bold
+    hi clear SignColumn
+    hi SignColumn   guifg=#c8bcb9       guibg=#171717       gui=bold
+                \   ctermfg=lightgray   ctermbg=black       cterm=bold
+
+    hi Search       guifg=white         guibg=#742314       gui=bold
+                \   ctermfg=black       ctermbg=lightgray   cterm=bold
+
+
+    hi qfFilename   guifg=gray90        guibg=#540300
+
+    hi MyTagListFileName  guifg=#dddddd guibg=#000000
+    hi MyTagListTagScope  guifg=#dddddd guibg=#222222
+
+    match ExtraWhitespace /\s\+$/
+endfunction
+command! -nargs=* PatchColors call PatchColors()
+""call PatchColors()
+
+set background=dark
+"colorscheme darkblue
+"colorscheme candycode
+"colorscheme dante
+"colorscheme ironman
+"colorscheme simpleandfriendly
+"colorscheme wombat
+"colorscheme camo
+"colorscheme jellybeans
+"colorscheme darkspectrum
+"colorscheme desert
+colorscheme jellybeans
+
+
+" List highlight colors
+function! HiTest()
+    so $VIMRUNTIME/syntax/hitest.vim
+endfunction
+
+" Python
+"  Wrap at 72 chars for comments.
+set formatoptions=cq textwidth=72 foldignore= wildignore+=*.py[co]
+
+"  read virtualenv's site-packages to vim path
+if has('py')
+py << EOF
+# read virtualenv's site-packages to vim path
+import os.path
+import sys
+import vim
+if 'VIRTUAL_ENV' in os.environ:
+    project_base_dir = os.environ['VIRTUAL_ENV']
+    sys.path.insert(0, project_base_dir)
+    activate_this = os.path.join(project_base_dir, 'bin/activate_this.py')
+    execfile(activate_this, dict(__file__=activate_this))
+for p in sys.path:
+    if os.path.isdir(p):
+        vim.command(r"set path+=%s" % (p.replace(" ", r"\ ")))
+EOF
+
+function! RegexLines(...)
+py << EOF
+" TODO: python regex current buffer
+" :help if_pyth
+python << EOF
+from __future__ import print_function
+import re
+import sys
+
+def regex_lines(regex=".*", lines=[], file=None):
+    def regex_line_match(pattern, lines):
+        rgx = re.compile(r''+pattern)
+        for n, line in enumerate(lines, 1):
+            match=rgx.match(line)
+            if match:
+                yield (n, match)
+
+    for n, line in regex_line_match(regex, lines):
+        print("%d: %s" % (n, line), file=file)
+
+regex_lines(regex=vim.eval("a:0"),
+        lines=vim.current.buffer,
+        file=sys.stdout)
+EOF
+endfunction
+command! -nargs=1 RegexLines call RegexLines()
+
+endif "has("py")
+
+
+" Tabsetting functions
+
+"  :Fourtabs    -- set to four (4) soft tabs (Default)
+function! Fourtabs()
+    set tabstop=4           " 4-space hard tabs
+    set softtabstop=4       " 4-space soft tabs
+    set shiftwidth=4        " 4-space indent
+endfunction
+command! -nargs=* Fourtabs call Fourtabs()
+" Default to fourtabs
+Fourtabs
+
+"  :Threetabs   -- set to three (3) soft tabs (e.g. RST)
+function! Threetabs()
+    set tabstop=3
+    set softtabstop=3
+    set shiftwidth=3
+endfunction
+command! -nargs=* Threetabs call Threetabs()
+
+"  :Twotabs     -- set to two (2) soft tabs
+function! Twotabs()
+    set tabstop=2
+    set softtabstop=2
+    set shiftwidth=2
+endfunction
+command! -nargs=* Twotabs call Twotabs()
+
+"  :CurrentBuffer -- display number of current buffer
+function! CurrentBuffer()
+    :echo bufnr('%')
+endfunction
+command! -nargs=* CurrentBuffer call CurrentBuffer()
+
+"  <leader> 2   -- diffget from bufnr 2
+map <silent> <leader>2 :diffget 2<CR> :diffupdate<CR>
+"  <leader> 3   -- diffget from bufnr 3
+map <silent> <leader>3 :diffget 3<CR> :diffupdate<CR>
+"  <leader> 4   -- diffget from bufnr 4
+map <silent> <leader>4 :diffget 4<CR> :diffupdate<CR>
+
+"  <leader> 2   -- diffget from bufnr 2
+map <silent> <leader>2 :diffget 2<CR> :diffupdate<CR>
+"  <leader> 3   -- diffget from bufnr 3
+map <silent> <leader>3 :diffget 3<CR> :diffupdate<CR>
+"  <leader> 4   -- diffget from bufnr 4
+map <silent> <leader>4 :diffget 4<CR> :diffupdate<CR>
+
+"  :Striptrailingwhitespace -- strip spaces at the end of lines
+function! Striptrailingwhitespace()
+    :%s/\s\+$//e
+endfunction
+command! -nargs=* Striptrailing call Striptrailingwhitespace()
+
+
+" Adjust font-size
+let s:pattern = '^\(.* \)\([1-9][0-9]*\)$'
+let s:minfontsize = 6
+let s:maxfontsize = 16
+function! AdjustFontSize(amount)
+  if has("gui_gtk2") && has("gui_running")
+    let fontname = substitute(&guifont, s:pattern, '\1', '')
+    let cursize = substitute(&guifont, s:pattern, '\2', '')
+    let newsize = cursize + a:amount
+    if (newsize >= s:minfontsize) && (newsize <= s:maxfontsize)
+      let newfont = fontname . newsize
+      let &guifont = newfont
+    endif
+  else
+    echoerr "You need to run the GTK2 version of Vim to use this function."
+  endif
+endfunction
+
+function! LargerFont()
+  call AdjustFontSize(1)
+endfunction
+command! LargerFont call LargerFont()
+
+function! SmallerFont()
+  call AdjustFontSize(-1)
+endfunction
+command! SmallerFont call SmallerFont()
+
+"  <C-Up>   -- increase font size
+nnoremap <C-Up> :LargerFont<CR>
+
+"  <C-Down> -- decrease font size
+nnoremap <C-Down> :SmallerFont<CR>
+
+"  <F3>     -- insert ReST date heading
+nnoremap <F3> "=strftime("\n%Y-%m-%d (%A)\n-------------------------\n")<CR>P
+inoremap <F3> <C-R>=strftime("\n%Y-%m-%d (%A)\n-----------------------\n")<CR>
+
+" Trac
+let g:tracServerList = {}
+let g:tracBrowser = 'x-www-browser'

File vimrc.full.bundles.vimrc

+
+
+set nocompatible              " be iMproved, required
+filetype off                  " required
+
+""set the runtime path to include Vundle and initialize
+set rtp+=~/.vim/bundle/Vundle.vim
+call vundle#begin()
+""alternatively, pass a path where Vundle should install plugins
+"call vundle#begin('~/some/path/here')
+
+"let Vundle manage Vundle, required
+" Bundle            -- Vim bundle manager [help bundle]
+Bundle 'https://github.com/gmarik/Vundle.vim'
+" :BundleList          - list configured plugins
+" :BundleInstall(!)    - install (update) plugins
+" :BundleSearch(!) foo - search (or refresh cache first) for foo
+" :BundleClean(!)      - confirm (or auto-approve) removal of unused plugins
+"
+
+""  " The following are examples of different formats supported.
+""  " Keep Bundle commands between vundle#begin/end.
+""  " plugin on GitHub repo
+""  Bundle 'tpope/vim-fugitive'
+""  " plugin from http://vim-scripts.org/vim/scripts.html
+""  Bundle 'L9'
+""  " Git plugin not hosted on GitHub
+""  Bundle 'git://git.wincent.com/command-t.git'
+""  " git repos on your local machine (i.e. when working on your own plugin)
+""  Bundle 'file:///home/gmarik/path/to/plugin'
+""  " The sparkup vim script is in a subdirectory of this repo called vim.
+""  " Pass the path to set the runtimepath properly.
+""  Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
+""  " Avoid a name conflict with L9
+""  Bundle 'user/L9', {'name': 'newL9'}
+
+" The Bundle URLs are intentionally complete https URLs
+" * grep '^Bundle \'' vimrc.bundles
+" * sed -i 's\https://github.com/\ssh://git@github.com/\g'
+
+
+" Info.vim          -- vim infopages in vim [help info]
+Bundle 'https://github.com/vim-scripts/info.vim'
+"  :Info sed        --  view infopage for 'sed'
+"  <Space>          --  Scroll forward (page down).
+"  <Backspace>      --  Scroll backward (page up).
+"  <Tab>            --  Move cursor to next hyperlink within this node.
+"  <Enter>,<C-]>    --  Follow hyperlink under cursor.
+"  ;,<C-T>          --  Return to last seen node.
+"  .,>              --  Move to the "next" node of this node.
+"  p,<              --  Move to the "previous" node of this node.
+"  u                --  Move "up" from this node.
+"  d                --  Move to "directory" node.
+"  t                --  Move to the Top node.
+"  <C-S>            --  Search forward within current node only.
+"  s                --  Search forward through all nodes for a specified
+"  string.
+"  q                --  Quit browser.
+"
+
+
+" Signify   -- show git/hg file changes in gutter [help signify]
+Bundle 'https://github.com/mhinz/vim-signify'
+
+
+" Fugitive      -- Git commands and statusline display [help fugitive]
+Bundle 'https://github.com/tpope/vim-fugitive'
+
+
+" Lawrencium    -- Hg commands [help lawrencium]
+Bundle 'https://github.com/ludovicchabant/vim-lawrencium'
+
+
+" NERDTree      -- File browser [help NERDTree]
+Bundle 'https://github.com/scrooloose/nerdtree'
+"  <Leader>e         --  toggle NERDTree
+"  ctrl-e            --  toggle NERDTree
+"  <Leader>E         --  open nerdtree to current file (:NERDTreeFind %:p:h)
+"  ctrl-E            --  open nerdtree to current file (:NERDTreeFind %:p:h)
+"  I                 --  toggle view hidden files
+"  B                 --  toggle view bookmarks
+"  cd                --  set vim CWD to selected dir
+"  C                 --  refocus view to selected dir
+"  o                 --  open
+"  r                 --  refresh dir
+"  R                 --  refresh root
+"  t                 --  open in new tab
+"  T                 --  open in new tab silently
+"  u                 --  up a dir
+"  U                 --  up a dir and leave open
+"  x                 --  close node
+"  X                 --  close all nodes recursive
+"  ?                 --  toggle help
+"let g:NERDTreeBookmarksFile = "~/workspace/.bookmarks"
+
+"Single click
+let NERDTreeMouseMode=1
+"Netrw in NERDTree
+let NERDTreeHijackNetrw=1
+
+map <silent> <C-e> <Esc>:NERDTreeToggle<CR>
+nnoremap <silent> <Leader>e <Esc>:NERDTreeToggle<CR>
+"map <silent> <C-t> <Esc>:tabnew +:NERDTreeMirror<CR>
+"nnoremap <C-B> <Esc>:Bookmark "
+
+let g:nerdtree_plugin_open_cmd = "xdg-open"
+
+
+" FindInNERDTree    -- NERDTRee show current file [help NERDTreeFind]
+Bundle 'https://github.com/dmcinnes/FindInNERDTree'
+nnoremap <Leader>E <Esc>:NERDTreeFind "%:p:h"<CR>
+
+
+"Bundle 'https://github.com/itspriddle/vim-nerdtree-helpers'
+""Bundle 'https://github.com/jistr/vim-nerdtree-tabs'
+Bundle 'https://github.com/EvanDotPro/nerdtree-symlink'
+
+
+"" BufExlorer       -- buffer management window  [help bufexplorer]
+Bundle 'https://github.com/jlanzarotta/bufexplorer'
+"  <c-b>            --  toggle BufExplorer
+"  ?                --  toggle BufExplorer help
+map <C-B>               <Esc>:BufExplorer<CR>
+"  <leader>b        --  toggle BufExplorer
+nnoremap <Leader>b      <Esc>:BufExplorer<CR>
+set switchbuf=usetab
+
+
+" CtrlP             -- file/buffer/mru finder [help ctrlp]
+Bundle 'https://github.com/kien/ctrlp.vim'
+"  <C-p>            -- CtrlP (fuzzy matching)
+nnoremap <Leader>p <Esc>:CtrlP<CR>
+
+
+" Syntastic         -- syntax highlighting [help syntastic]
+Bundle 'https://github.com/scrooloose/syntastic'
+if exists("g:loaded_syntastic_plugin")
+    let g:syntastic_enable_signs=1
+    let g:syntastic_auto_loc_list=1
+    let g:syntastic_quiet_warnings=0
+    let g:syntastic_stl_format = '[%E{Err: %fe #%e}%B{, }%W{Warn: %fw #%w}]'
+    "let g:syntastic_disabled_filetypes = ['ruby', 'php']
+    set statusline+=%#warningmsg#
+    set statusline+=%{SyntasticStatuslineFlag()}
+    set statusline+=%*
+endif
+
+
+" NERDCommenter     -- commenting [help NERDCommenter]
+Bundle 'https://github.com/scrooloose/nerdcommenter'
+"  ,cm              --  minimal comment
+"  ,cs              --  sexy comment
+"  ,c<space>        --  toggle comment
+let g:NERDCustomDelimiters = {
+      \ 'puppet': { 'left': '#', 'leftAlt': '/*', 'rightAlt': '*/' }
+      \ }
+
+
+" UltiSnips         --  syntax-specific snippets [help ultisnips]
+Bundle 'https://github.com/SirVer/ultisnips'
+Bundle 'https://github.com/honza/vim-snippets'
+"  snippetname<C-CR>    --  insert snippet
+"  <tab>            --  next placeholder
+"  <tab>            --  prev placeholder
+"  ~/.vim/snippets-ulti/python:
+"   climain         --  new cli script
+"   setuppy         --  new setup.py script
+"let g:UltiSnipsExpandTrigger="<tab>"
+"let g:UltiSnipsJumpForwardTrigger="<tab>"
+"let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
+let g:UltiSnipsExpandTrigger       = '<C-CR>'
+let g:UltiSnipsJumpForwardTrigger  = '<A-d>'
+let g:UltiSnipsJumpBackwardTrigger = '<A-a>'
+
+let g:UltiSnipsSnippetsDir        = '~/.vim/snippets-ulti/'
+let g:UltiSnipsSnippetDirectories = ['UltiSnips', 'snippets-ulti']
+
+
+" NeoComplCache -- code completion [help neocomplcache]
+Bundle 'https://github.com/Shougo/neocomplcache.vim'
+let g:neocomplcache_enable_at_startup = 1
+"Bundle 'Valloric/YouCompleteMe'  "Requires newer vim
+
+
+" unstack.vim   -- parse and open stacktrace paths [help unstack]
+Bundle 'https://github.com/mattboehm/vim-unstack'
+"  <leader> s   -- parse part/all of a stacktrace
+
+
+" accordion.vim -- work w/ a number of vsplits at once [help accordion]
+"Bundle 'https://github.com/mattboehm/vim-accordion'
+""  :Accordion [n]       -- show [n] splits wide
+""  :AccordionAll [n]    -- show [n] splits everywhere
+""  :AccordionDiff       -- show 2 split diffs
+""  :AccordionStop       -- stop auto layout and reset
+""  show hsplits
+"""let g:accordion_mode="h"
+"let g:accordion_mode="v"
+""  <Ctrl-w> 2   -- Show 2 splits wide
+"nnoremap <C-w>2 :Accordion 2<CR>
+""  <Ctrl-w> 3   -- Show 3 splits wide
+"nnoremap <C-w>3 :Accordion 3<CR>
+""  <Ctrl-w> 0   -- stop auto layout and reset
+"nnoremap <C-w>0 :AccordionStop<CR>
+
+
+" ViM Airline   -- helpful statusbar information w/ vimscript [help airline]
+Bundle 'https://github.com/bling/vim-airline'
+let g:airline#extensions#tabline#enabled = 1
+let g:airline#extensions#virtualenv#enabled = 1
+let g:airline#extensions#branch#enabled = 1
+let g:airline#extensions#branch#empty_message = ''
+let g:airline#extensions#syntastic#enabled = 1
+let g:airline#extensions#tagline#enabled = 1
+let g:airline#extensions#tagline#buffer_nr_show = 1
+if has("gui_running")
+    let g:airline_powerline_fonts = 1
+    " base16, wombat, luna
+    "let g:airline_theme="base16"
+else
+    " base16, wombat, luna
+    "let g:airline_theme="wombat"
+endif
+
+
+" EasyMotion    -- easy visual motions [help easymotion]
+Bundle 'https://github.com/Lokaltog/vim-easymotion'
+"  <Leader>m-w/e    --  search forward (beg/end of word)
+"  <Leader>m-b      --  search backward
+"  <Leader>m-j      --  search line down
+"  <Leader>m-k      --  search line up
+let g:EasyMotion_leader_key = '<Leader>m'
+"let g:EasyMotion_mapping_t  = '_t'
+"let g:EasyMotion_mapping_gE = '_gE'
+
+
+"Vim Colorschemes pack
+"Bundle 'https://github.com/flazz/vim-colorschemes'
+
+
+" Jellybeans    -- a good colorscheme w/ sensible diff highlighting
+Bundle 'https://github.com/nanotech/jellybeans.vim'
+"  :colorscheme jellybeans -- switch to the jellybeans colorscheme
+
+
+" Vim-misc      -- functions for colorscheme-switcher and vim-session
+Bundle 'https://github.com/xolox/vim-misc'
+
+
+" Vim Colorscheme Switcher [help colorscheme-switcher]
+Bundle 'https://github.com/xolox/vim-colorscheme-switcher'
+let g:colorscheme_switcher_exclude = ['shine', 'morning', 'peachpuff', 'zellner', 'delek', 'default' ]
+let g:colorscheme_switcher_keep_background = 1
+"  <F8>         -- cycle colors forward
+"  <Shift><F8>  -- cycle colors reverse
+
+
+" HiColors
+"  call HiTest() -- print highlighting colors 
+Bundle 'https://github.com/vim-scripts/HiColors'
+
+
+" Pasting       -- make paste work normally [help paste]
+Bundle 'https://github.com/sickill/vim-pasta'
+
+
+" Vim Room      -- focus just the relevant text [help vimroom] 
+Bundle 'https://github.com/mikewest/vimroom'
+
+
+" VOoM Outline Viewer   -- view outlines of code and text [help voom]
+Bundle 'https://github.com/vim-scripts/VOoM'
+"  VOoM modes:  html, markdown, python, rest,
+"               thevimoutliner, txt2tags,
+"               viki, vimwiki, wiki
+
+"  :Voom [<format>] -- open Voom outline tab
+"  :Voom rest       -- open ReStructuredText outline
+"  ggg?G
+
+
+" TagBar        -- source tag browser [help tagbar]
+Bundle 'https://github.com/majutsushi/tagbar'
+"  <leader> t   -- toggle TagBar"
+nnoremap <Leader>t :TagbarToggle<cr>
+
+
+" Vim Session   -- save and restore sessions between exits [help session]
+Bundle 'https://github.com/xolox/vim-session'
+"  :SaveSession <name>  -- save a session
+"  :OpenSession <name>  -- open a saved session
+"  :Restart             -- SaveSession restart && exit
+"  :OpenSession restart -- open the 'restart' saved session
+let g:session_autoload = 'no'
+let g:session_autosave = 0
+let g:session_autosave_periodic = 0
+
+
+" Vim Unimpaired        --  moving between buffers [help unimpaired]
+Bundle 'https://github.com/tpope/vim-unimpaired'
+"  [a      :previous
+"  ]a      :next
+"  [A      :first
+"  ]A      :last
+"  [b      :bprevious
+"  ]b      :bnext
+"  [B      :bfirst
+"  ]B      :blast
+"  [l      :lprevious
+"  ]l      :lnext
+"  [L      :lfirst
+"  ]L      :llast
+"  [<C-L>  :lpfile
+"  ]<C-L>  :lnfile
+"  [q      :cprevious
+"  ]q      :cnext
+"  [Q      :cfirst
+"  ]Q      :clast
+"  [<C-Q>  :cpfile (Note that <C-Q> only works in a terminal if you disable
+"  ]<C-Q>  :cnfile flow control: stty -ixon)
+"  [t      :tprevious
+"  ]t      :tnext
+"  [T      :tfirst
+"  ]T      :tlast
+
+
+" Ack.vim       -- ack through files (instead of grep) [help ack]
+Bundle 'https://github.com/mileszs/ack.vim'
+" :Ack [options] PATTERN [directory]    -- search for pattern
+" :AckAdd [options] PATTERN [directory] -- add a search pattern
+" :AckWindow [options] PATTERN          -- search all visible buffers"
+
+
+" vim-surround  -- paired tag wrappings [help surround]
+Bundle 'https://github.com/tpope/vim-surround'
+"  ds   -- delete surroundings
+"  cs   -- change surroundings
+"
+
+
+" csapprox      -- adapt gvim colorschemes for terminal vim [help csapprox]
+Bundle 'https://github.com/godlygeek/csapprox'
+:let g:CSApprox_loaded = 1
+
+
+" UndoTree      -- visualize vim undotree
+Bundle 'https://github.com/mbbill/undotree'
+"  <F5>     -- Toggle UndoTree (? for help)
+nnoremap <F5> :UndotreeToggle<cr>
+if has("persistent_undo")
+    ""set undodir = '~/.undodir/'
+    set undofile
+endif
+
+
+" vim-nginx -- nginx ftdetect, indent, and syntax
+Bundle 'https://github.com/robotvert/vim-nginx'
+
+
+" n3.vim    -- N3/Turtle RDF Syntax
+Bundle 'https://github.com/vim-scripts/n3.vim'
+
+
+" SPARQL    -- SPARQL syntax
+Bundle 'https://github.com/vim-scripts/sparql.vim'
+
+
+
+"" /begin Python
+
+" Python-mode       -- Python [help pymode]
+Bundle 'https://github.com/klen/python-mode'
+"  :help pymode
+
+"  [[    --  Jump to previous class or function
+"  ]]    --  Jump to next class or function
+"  [M    --  Jump to previous class or method
+"  ]M    --  Jump to next class or method
+"  aC    --  Select a class. Ex: vaC, daC, yaC, caC
+"  iC    --  Select inner class. Ex: viC, diC, yiC, ciC
+"  aM    --  Select a function or method. Ex: vaM, daM, yaM, caM
+"  iM    --  Select inner function or method. Ex: viM, diM, yiM, ciM
+let g:pymode_syntax = 1
+let g:pymode_syntax_all = 1
+"  :PymodeLintToggle    -- toggle lint checking
+"  :PymodeLintAuto      -- autofix current buffer pep8 errors
+"let g:pymode_lint = 1
+"let g:pymode_lint_checker = "pyflakes"
+"let g:pymode_lint_checkers = pyflakes pep8 mccabe pep257 pylint
+" - auto-show an error window
+let g:pymode_lint_cwindow = 1
+" - show lint signs
+let g:pymode_lint_signs = 1
+" - run lint on write
+let g:pymode_lint_on_write = 1
+"run lint unmodified
+let g:pymode_lint_unmodified = 0
+"run lint while editing
+let g:pymode_lint_on_fly = 0
+"  let g:pymode_lint_ignore = ""
+"  let g:pymode_lint_select = ""
+
+"  Pymode lint line annotation symbols
+"   XX = TODO
+"   CC = COMMENT
+"   RR = VISUAL
+"   EE = ERROR
+"   II = INFO
+"   FF = PYFLAKES
+
+""let g:pymode_lint_todo_symbol = 'WW'
+let g:pymode_lint_todo_symbol = 'XX'
+let g:pymode_lint_comment_symbol = 'CC'
+let g:pymode_lint_visual_symbol = 'RR'
+let g:pymode_lint_error_symbol = 'EE'
+let g:pymode_lint_info_symbol = 'II'
+let g:pymode_lint_pyflakes_symbol = 'FF'
+
+let g:pymode_breakpoint = 1
+"  <F7>     -- set debugger breakpoints
+let g:pymode_breakpoint_key = '<F7>'
+"  auto lookup breakpoint cmd (pdb, ipdb, pudb)"
+let g:pymode_breakpoint_cmd = ''
+
+"  Searches upward for a .ropeproject file (that should be .vcs-ignored)
+"  :PymodeRopeNewProject    -- Create a new .ropeproject in CWD
+"  :PymodeRopeRegenerate    -- Regenerate rope project cache
+let g:pymode_rope_lookup_project = 1
+
+"  <C-c>d       -- show docs for current function w/ pymode
+let g:pymode_rope_show_doc_bind = '<C-c>d'
+
+"  rope for autocompletion
+let g:pymode_rope_completion = 1
+let g:pymode_rope_complete_on_dot = 1
+"  <C-Space>    -- rope autocomplete
+let g:pymode_rope_completion_bind = '<C-Space>'
+
+let g:pymode_rope_autoimport = 1
+
+"  <leader> j       --  :RopeGotoDefinition
+map <leader>j           :RopeGotoDefinition<CR>
+
+"  <C-c> ro     -- organize Python imports; drop unused (:PymodeRopeAutoImport)
+let g:pymode_rope_organize_imports_bind = '<C-c>ro'
+
+