" 01 important
" 02 moving around, searching and patterns
" 03 tags
" 04 displaying text
" 05 syntax, highlighting and spelling
" 06 multiple windows
" 07 multiple tab pages
" 08 terminal
" 09 using the mouse
" 10 printing
" 11 messages and info
" 12 selecting text
" 13 editing text
" 14 tabs and indenting
" 15 folding
" 16 diff mode
" 17 mapping
" 18 reading and writing files
" 19 the swap file
" 20 command line editing
" 21 executing external commands
" 22 running make and jumping to errors
" 23 language specific
" 24 multi-byte characters
" 25 various

set nocompatible

" setup of vundle
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'

filetype plugin indent on

" solarized color theme
Bundle 'altercation/vim-colors-solarized'

" setup for the solarized color theme
set background=dark
let g:solarized_termcolors=16
let g:solarized_termtrans=1
let g:solarized_contrase="normal"
let g:solarized_visibility="normal"
syntax enable
colorscheme solarized

set mouse=a                         " enable mouse support
set mousehide                       " hide the mouse when typing

set history=1000                    " history length for commands, defaults to
                                    " 20

set nobackup                        " do not create a backup
set nowritebackup


set showmode                        " show the current mode
set cursorline                      " highlight the current line
set number                          " enable linenumbers
set numberwidth=2                   " only use as many columns for the line
                                    " numbers as necessary
set relativenumber                  " show file numbers relative to the current
                                    " line instead of absolute ones, but still
                                    " the absolute linenumber on the current
                                    " line due to 'number' being set
set showmatch                       " show matching brackets/parentheses
set incsearch                       " show matches while typing in a search
set hlsearch                        " highlight matches in a search

set ignorecase                      " ignore case when only searching for
                                    " lowercase
set smartcase                       " letters, case sensitive otherwis

set foldenable                      " auto-fold code

set wrap                            " wrap text
set linebreak

set backspace=indent,eol,start      " allowing backspacing over autoindent,
                                    " line breaks and start of insert

set encoding=utf-8                  " set the encoding


set showmode                        " show current mode in the status line

set swapfile                        " use a swapfile
set updatecount=200                 " default, number of characters that have
                                    " to be typed before the swapfile is
                                    " written to disk
set updatetime=10000                " time in milliseconds after the swapfile
                                    " is written to disk

set title                           " let vim set the title of the window
set titlestring=""                  " use default titlestring



set autoread                        " automatically reload a file when it was
                                    " changed outside of vim

set gdefault                        " apply replace patterns to the whole line
                                    " by default

set tabstop=4                       " one tab equals 4 spaces
set softtabstop=4                   " makes the spaces feel like real tabs
set shiftwidth=4                    " one indent level equals 4 spaces
set expandtab                       " expand tabs to spaces
set autoindent                      " copy indent from current line when
                                    " starting a new one
set smartindent                     " smart indenting for C-like languages
set smarttab                        " use shiftwidth when tabbing in front of
                                    " a line instead of tabsstop/softtabstop

set undofile                        " use an undo file
set undodir=~/.vim/backups          " store undo files in a fixed directory
                                    " instead of the current directory
set undolevels=1000                 " undo a maximum of 1000 changes
set undoreload=10000                " save the whole buffer for undo when
                                    " reloading it


set foldmethod=indent               " fold according to indet
set foldnestmax=2                   " fold a maximum of 2 levels
set nofoldenable                    " unfold everything by default

set scrolloff=4                     " show context at the screen edges


set showcmd                         " show (partial) command in the command line
set hidden                          " buffers can exist without a window

set ttyfast                         " enhance smoothness
set ruler                           " show position in status line

set wildmenu                        " show a menu when autocompleting
set wildmode=list:longest           " automatically complete up to the level
                                    " of ambiguity

set autochdir                       " automatically change to the directory that
                                    " contains the file that is edited

let mapleader = ","

"nnoremap / /\v
"vnoremap / /\v
nnoremap <leader><space> :noh<cr>
nnoremap <tab> %
vnoremap <tab> %

nnoremap j gj
nnoremap k gk

function! TrimWhiteSpace()
     %s/\s\+$//e
     endfunction

autocmd FileWritePre    * :call TrimWhiteSpace()
autocmd FileAppendPre   * :call TrimWhiteSpace()
autocmd FilterWritePre  * :call TrimWhiteSpace()
autocmd BufWritePre     * :call TrimWhiteSpace()
