Permalink
Browse files

config

  • Loading branch information...
1 parent 9042101 commit 9ef56ada2c20bf3f21e5575b2dcb00c777e61ef8 John Griffiths committed Apr 9, 2012
Showing with 334 additions and 0 deletions.
  1. +331 −0 .vimrc.after
  2. +1 −0 .vimrc.before
  3. +2 −0 symlink
View
@@ -0,0 +1,331 @@
+color molokai
+set cursorline
+
+"----------------------------
+
+"Use Vim settings, rather then Vi settings (much better!).
+"This must be first, because it changes other options as a side effect.
+set nocompatible
+
+"allow backspacing over everything in insert mode
+set backspace=indent,eol,start
+
+"store lots of :cmdline history
+set history=1000
+
+set showcmd "show incomplete cmds down the bottom
+set showmode "show current mode down the bottom
+
+set number "show line numbers
+
+"display tabs and trailing spaces
+set list
+set listchars=tab:▷⋅,trail:⋅,nbsp:⋅
+
+
+set incsearch "find the next match as we type the search
+set hlsearch "hilight searches by default
+
+set wrap "dont wrap lines
+set linebreak "wrap lines at convenient points
+
+if v:version >= 703
+ "undo settings
+ set undodir=~/.vim/undofiles
+ set undofile
+
+ set colorcolumn=+1 "mark the ideal max text width
+endif
+
+"default indent settings
+set shiftwidth=2
+set softtabstop=2
+set expandtab
+set autoindent
+
+"folding settings
+set foldmethod=indent "fold based on indent
+set foldnestmax=3 "deepest fold is 3 levels
+set nofoldenable "dont fold by default
+
+set wildmode=list:longest "make cmdline tab completion similar to bash
+set wildmenu "enable ctrl-n and ctrl-p to scroll thru matches
+set wildignore=*.o,*.obj,*~ "stuff to ignore when tab completing
+
+set formatoptions-=o "dont continue comments when pushing o/O
+
+"vertical/horizontal scroll off settings
+set scrolloff=3
+set sidescrolloff=7
+set sidescroll=1
+
+"load ftplugins and indent files
+filetype plugin on
+filetype indent on
+
+"turn on syntax highlighting
+syntax on
+
+"some stuff to get the mouse going in term
+set mouse=a
+set ttymouse=xterm2
+
+"tell the term has 256 colors
+set t_Co=256
+
+"hide buffers when not displayed
+set hidden
+
+"statusline setup
+set statusline=%f "tail of the filename
+
+"display a warning if fileformat isnt unix
+set statusline+=%#warningmsg#
+set statusline+=%{&ff!='unix'?'['.&ff.']':''}
+set statusline+=%*
+
+"display a warning if file encoding isnt utf-8
+set statusline+=%#warningmsg#
+set statusline+=%{(&fenc!='utf-8'&&&fenc!='')?'['.&fenc.']':''}
+set statusline+=%*
+
+set statusline+=%h "help file flag
+set statusline+=%y "filetype
+set statusline+=%r "read only flag
+set statusline+=%m "modified flag
+
+set statusline+=%{fugitive#statusline()}
+
+"display a warning if &et is wrong, or we have mixed-indenting
+set statusline+=%#error#
+set statusline+=%{StatuslineTabWarning()}
+set statusline+=%*
+
+set statusline+=%{StatuslineTrailingSpaceWarning()}
+
+set statusline+=%{StatuslineLongLineWarning()}
+
+set statusline+=%#warningmsg#
+set statusline+=%{SyntasticStatuslineFlag()}
+set statusline+=%*
+
+"display a warning if &paste is set
+set statusline+=%#error#
+set statusline+=%{&paste?'[paste]':''}
+set statusline+=%*
+
+set statusline+=%= "left/right separator
+set statusline+=%{StatuslineCurrentHighlight()}\ \ "current highlight
+set statusline+=%c, "cursor column
+set statusline+=%l/%L "cursor line/total lines
+set statusline+=\ %P "percent through file
+set laststatus=2
+
+"recalculate the trailing whitespace warning when idle, and after saving
+autocmd cursorhold,bufwritepost * unlet! b:statusline_trailing_space_warning
+
+"return '[\s]' if trailing white space is detected
+"return '' otherwise
+function! StatuslineTrailingSpaceWarning()
+ if !exists("b:statusline_trailing_space_warning")
+
+ if !&modifiable
+ let b:statusline_trailing_space_warning = ''
+ return b:statusline_trailing_space_warning
+ endif
+
+ if search('\s\+$', 'nw') != 0
+ let b:statusline_trailing_space_warning = '[\s]'
+ else
+ let b:statusline_trailing_space_warning = ''
+ endif
+ endif
+ return b:statusline_trailing_space_warning
+endfunction
+
+
+"return the syntax highlight group under the cursor ''
+function! StatuslineCurrentHighlight()
+ let name = synIDattr(synID(line('.'),col('.'),1),'name')
+ if name == ''
+ return ''
+ else
+ return '[' . name . ']'
+ endif
+endfunction
+
+"recalculate the tab warning flag when idle and after writing
+autocmd cursorhold,bufwritepost * unlet! b:statusline_tab_warning
+
+"return '[&et]' if &et is set wrong
+"return '[mixed-indenting]' if spaces and tabs are used to indent
+"return an empty string if everything is fine
+function! StatuslineTabWarning()
+ if !exists("b:statusline_tab_warning")
+ let b:statusline_tab_warning = ''
+
+ if !&modifiable
+ return b:statusline_tab_warning
+ endif
+
+ let tabs = search('^\t', 'nw') != 0
+
+ "find spaces that arent used as alignment in the first indent column
+ let spaces = search('^ \{' . &ts . ',}[^\t]', 'nw') != 0
+
+ if tabs && spaces
+ let b:statusline_tab_warning = '[mixed-indenting]'
+ elseif (spaces && !&et) || (tabs && &et)
+ let b:statusline_tab_warning = '[&et]'
+ endif
+ endif
+ return b:statusline_tab_warning
+endfunction
+
+"recalculate the long line warning when idle and after saving
+autocmd cursorhold,bufwritepost * unlet! b:statusline_long_line_warning
+
+"return a warning for "long lines" where "long" is either &textwidth or 80 (if
+"no &textwidth is set)
+"
+"return '' if no long lines
+"return '[#x,my,$z] if long lines are found, were x is the number of long
+"lines, y is the median length of the long lines and z is the length of the
+"longest line
+function! StatuslineLongLineWarning()
+ if !exists("b:statusline_long_line_warning")
+
+ if !&modifiable
+ let b:statusline_long_line_warning = ''
+ return b:statusline_long_line_warning
+ endif
+
+ let long_line_lens = s:LongLines()
+
+ if len(long_line_lens) > 0
+ let b:statusline_long_line_warning = "[" .
+ \ '#' . len(long_line_lens) . "," .
+ \ 'm' . s:Median(long_line_lens) . "," .
+ \ '$' . max(long_line_lens) . "]"
+ else
+ let b:statusline_long_line_warning = ""
+ endif
+ endif
+ return b:statusline_long_line_warning
+endfunction
+
+"return a list containing the lengths of the long lines in this buffer
+function! s:LongLines()
+ let threshold = (&tw ? &tw : 80)
+ let spaces = repeat(" ", &ts)
+
+ let long_line_lens = []
+
+ let i = 1
+ while i <= line("$")
+ let len = strlen(substitute(getline(i), '\t', spaces, 'g'))
+ if len > threshold
+ call add(long_line_lens, len)
+ endif
+ let i += 1
+ endwhile
+
+ return long_line_lens
+endfunction
+
+"find the median of the given array of numbers
+function! s:Median(nums)
+ let nums = sort(a:nums)
+ let l = len(nums)
+
+ if l % 2 == 1
+ let i = (l-1) / 2
+ return nums[i]
+ else
+ return (nums[l/2] + nums[(l/2)-1]) / 2
+ endif
+endfunction
+
+"syntastic settings
+let g:syntastic_enable_signs=1
+let g:syntastic_auto_loc_list=2
+
+"snipmate settings
+let g:snips_author = "Martin Grenfell"
+
+"taglist settings
+let Tlist_Compact_Format = 1
+let Tlist_Enable_Fold_Column = 0
+let Tlist_Exit_OnlyWindow = 0
+let Tlist_WinWidth = 35
+let tlist_php_settings = 'php;c:class;f:Functions'
+let Tlist_Use_Right_Window=1
+let Tlist_GainFocus_On_ToggleOpen = 1
+let Tlist_Display_Tag_Scope = 1
+let Tlist_Process_File_Always = 1
+let Tlist_Show_One_File = 1
+
+"nerdtree settings
+let g:NERDTreeMouseMode = 2
+let g:NERDTreeWinSize = 40
+let g:NERDTreeShowHidden = 1
+
+"explorer mappings
+nnoremap <f1> :BufExplorer<cr>
+nnoremap <f2> :NERDTreeToggle<cr>
+nnoremap <f3> :TlistToggle<cr>
+
+"source project specific config files
+runtime! projects/**/*.vim
+
+"dont load csapprox if we no gui support - silences an annoying warning
+if !has("gui")
+ let g:CSApprox_loaded = 1
+endif
+
+"make <c-l> clear the highlight as well as redraw
+nnoremap <C-L> :nohls<CR><C-L>
+inoremap <C-L> <C-O>:nohls<CR>
+
+"map Q to something useful
+noremap Q gq
+
+"make Y consistent with C and D
+nnoremap Y y$
+
+"visual search mappings
+function! s:VSetSearch()
+ let temp = @@
+ norm! gvy
+ let @/ = '\V' . substitute(escape(@@, '\'), '\n', '\\n', 'g')
+ let @@ = temp
+endfunction
+vnoremap * :<C-u>call <SID>VSetSearch()<CR>//<CR>
+vnoremap # :<C-u>call <SID>VSetSearch()<CR>??<CR>
+
+
+"jump to last cursor position when opening a file
+"dont do it when writing a commit log entry
+autocmd BufReadPost * call SetCursorPosition()
+function! SetCursorPosition()
+ if &filetype !~ 'svn\|commit\c'
+ if line("'\"") > 0 && line("'\"") <= line("$")
+ exe "normal! g`\""
+ normal! zz
+ endif
+ end
+endfunction
+
+"spell check when writing commit logs
+autocmd filetype svn,*commit* setlocal spell
+
+"http://vimcasts.org/episodes/fugitive-vim-browsing-the-git-object-database/
+"hacks from above (the url, not jesus) to delete fugitive buffers when we
+"leave them - otherwise the buffer list gets poluted
+"
+"add a mapping on .. to view parent tree
+autocmd BufReadPost fugitive://* set bufhidden=delete
+autocmd BufReadPost fugitive://*
+ \ if fugitive#buffer().type() =~# '^\%(tree\|blob\)$' |
+ \ nnoremap <buffer> .. :edit %:h<CR> |
+ \ endif
View
@@ -0,0 +1 @@
+let mapleader = ","
View
@@ -0,0 +1,2 @@
+ln -s ~/.janus/.vimrc.before ~/.vimrc.before
+ln -s ~/.janus/.vimrc.after ~/.vimrc.after

0 comments on commit 9ef56ad

Please sign in to comment.