Remove cindent
[config.git] / vim / customVimrc
1
2 set smartindent
3 set autoindent
4 set tabstop=4
5 set softtabstop=4
6 set shiftwidth=4
7 set expandtab
8 set ruler
9
10 "Pathogen
11 call pathogen#infect()
12
13 " Line numbering
14 set number
15
16 " Wildmenu
17 set wildmenu
18 set wildmode=list:longest,full
19
20 " Always display statusbar
21 set laststatus=2
22
23 "Vim follow dirs
24 set autochdir
25
26 "config, data files are python files
27 au BufRead,BufNewFile *.config set filetype=python
28 au BufRead,BufNewFile *.data set filetype=python
29
30
31 " Color theming
32 if ! has("gui_running")
33     set t_Co=256
34 else
35     set go=
36 endif
37
38 set background=dark
39
40 set guifont=Inconsolata-dz\ for\ Powerline\ 8
41
42 " solarized theme http://ethanschoonover.com/solarized/vim-colors-solarized
43 "let g:solarized_termcolors=256
44 "colors solarized
45
46 " Peaksea http://www.vim.org/scripts/script.php?script_id=760
47 colors peaksea
48
49 " Enable tags search
50 set tags=tags;./tags;
51
52 "Enable NERD tree bookmarks on startup
53 let NERDTreeShowBookmarks=1
54 let g:NERDTreeIgnore = ['\~$', '\.pyc$', '\.taghl$', 'tags', "CVS", '\.o$']
55
56
57 function CommentUncomment()
58 python <<EOF
59
60 import vim
61
62 if vim.current.buffer[vim.current.range.start].startswith("//"):
63     vim.current.buffer[vim.current.range.start]  = vim.current.buffer[vim.current.range.start][2:]
64 else:
65     vim.current.buffer[vim.current.range.start] = "//" + vim.current.buffer[vim.current.range.start]
66
67 EOF
68 endfunction
69
70 " automatically remove trailing whitespace before write
71 function! StripTrailingWhitespace()
72   normal mZ
73   %s/\s\+$//e
74   if line("'Z") != line(".")
75     echo "Stripped whitespace\n"
76   endif
77   %retab
78   normal `Z
79 endfunction
80 autocmd BufWritePre *.java,.[ch],*.[ch]pp :call StripTrailingWhitespace()
81
82
83 " Common stuff
84 if empty($BASHJECT_PRJ_DIR)
85     let s:basePath = expand("$HOME")
86 else
87     let s:basePath = expand("$BASHJECT_PRJ_DIR")
88 endif
89 let g:NERDTreeBookmarksFile = s:basePath . '/.vimBookmarks'
90 let g:netrw_home=expand("$HOME") . '/.cache/'
91
92
93 " Mappings
94
95 " Toggle tag list
96 nmap <A-x> :TagbarToggle<CR>
97 " Toogle navigation bar
98 nmap <C-n> :NERDTreeToggle<CR>
99 " toggle navigation bar to current directory
100 nmap <C-b> :NERDTree %:p:h<CR>
101 " Show changes to disk
102 nmap <F6> :DiffChangesDiffToggle<CR>
103 " Comment or uncomment line/range
104 map <C-S-c> :call CommentUncomment()<CR>
105 " Pop-up buffer menu
106 nnoremap <F3> :buffers<CR>:buffer<Space>
107 " Go to next tag
108 nnoremap <F5> :tnext<CR>
109 " Go to previous tag
110 nnoremap <F4> :tprevious<CR>
111
112 " Launch ag in base directory with parameter
113 function! <SID>AgDir(word)
114     let l:pattern = a:word
115     let l:path = s:basePath
116     if (&ft == "nerdtree")
117         if (has_key(g:NERDTreeFileNode.GetSelected(), 'path'))
118             if (isdirectory(g:NERDTreeFileNode.GetSelected().path.str()))
119                 let l:path = g:NERDTreeFileNode.GetSelected().path.str()
120             else 
121                 let l:path = g:NERDTreeFileNode.GetSelected().path.getParent().str()
122             endif
123         endif
124     endif
125     echom "Use Ag dir " . l:path . " for searching " . l:pattern
126     execute ":Ag! " . l:pattern . " " . l:path
127 endfunction
128 command! -nargs=1  -complete=tag F call <SID>AgDir(<f-args>)
129
130 " Launch ag in base directory with under cursor word
131 function AgDirCurrentWord()
132     let l:word = expand("<cword>")
133     call <SID>AgDir(l:word)
134 endfunction
135 nnoremap <F7> :execute AgDirCurrentWord()<CR>
136
137
138 " use F2 to allow pasting from outside vim
139 nnoremap <F2> :set invpaste paste?<CR>
140 set pastetoggle=<F2>
141 set showmode
142
143
144 " Use one of the following to define the camel characters.
145 " Stop on capital letters.
146 let g:camelchar = "A-Z"
147 " Also stop on numbers.
148 let g:camelchar = "A-Z0-9"
149 " Include '.' for class member, ',' for separator, ';' end-statement,
150 " and <[< bracket starts and "'` quotes.
151 let g:camelchar = "A-Z0-9.,;:{([`'\""
152 nnoremap <silent><C-Left> :<C-u>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%^','bW')<CR>
153 nnoremap <silent><C-Right> :<C-u>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%$','W')<CR>
154 inoremap <silent><C-Left> <C-o>:call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%^','bW')<CR>
155 inoremap <silent><C-Right> <C-o>:call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%$','W')<CR>
156 vnoremap <silent><C-Left> :<C-U>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%^','bW')<CR>v`>o
157 vnoremap <silent><C-Right> <Esc>`>:<C-U>call search('\C\<\<Bar>\%(^\<Bar>[^'.g:camelchar.']\@<=\)['.g:camelchar.']\<Bar>['.g:camelchar.']\ze\%([^'.g:camelchar.']\&\>\@!\)\<Bar>\%$','W')<CR>v`<o
158
159
160 " Status line
161 set statusline=%F       "tail of the filename
162 set statusline+=[%{strlen(&fenc)?&fenc:'none'}, "file encoding
163 set statusline+=%{&ff}] "file format
164 set statusline+=%h      "help file flag
165 set statusline+=%m      "modified flag
166 set statusline+=%r      "read only flag
167 set statusline+=%y      "filetype
168 set statusline+=%=      "left/right separator
169 set statusline+=%l/%L   "cursor line/total lines
170 set statusline+=,\ %c     "cursor column
171 set statusline+=\ \ %P    "percent through file
172
173 " Fuzzy finder (CtrlP) 
174 let g:ctrlp_map = '<c-f>'
175 let g:ctrlp_cmd = 'CtrlP ' . s:basePath
176 let g:ctrlp_custom_ignore = '\v[\/](\.git|\.hg|\.svn|.PUBLIC|.LIVR)$'
177 let g:ctrlp_by_filename = 1
178 let g:ctrlp_regex = 1
179 let g:ctrlp_reuse_window = 'netrw\|NERD.*'
180
181 " Easily GREP current word in current file.
182 command GREP :execute 'vimgrep '.expand('<cword>').' '.expand('%') | :copen | :cc
183
184 " Java plugin      
185 function! <SID>JavaImpUpdate()
186     echo 'Find jar paths...' 
187     let searchCmd = 'find $BASHJECT_PRJ_DIR -name "com"  | paste -s -d,'
188     let g:JavaImpPaths = system(searchCmd)
189     let g:JavaImpDataDir = expand($BASHJECT_PRJ_DIR) . '/.vimJava'
190     echo 'Done: ' . g:JavaImpPaths
191 endfunction
192
193 function! <SID>JavaImpFullUpdate()
194     echo 'Find base gen framework jar paths'
195     let searchCmdBase = 'find ${HOME}/sources/TVMGEN-trunk/soft_uc -name "com"  | paste -s -d,'
196     let searchCmdGen = 'find ${HOME}/sources/TVMBASE-trunk/soft_uc -name "com"  | paste -s -d,'
197     let searchCmdFramework = 'find ${HOME}/sources/TVM_FRAMEWORK/trunk/ -name "com"  | paste -s -d,'
198     let searchCmd = 'find $BASHJECT_PRJ_DIR -name "com"  | paste -s -d,'
199     let g:JavaImpPaths = expand($HOME) . '/.vim/bundle/JavaImp/,' . system(searchCmdBase) . ',' . system(searchCmdGen) . ',' . system(searchCmdFramework) . ',' . system(searchCmd)
200     echo 'Done: ' . g:JavaImpPaths
201 endfunction
202
203 command! -nargs=? JIU call <SID>JavaImpUpdate()
204 command! -nargs=? JIFU call <SID>JavaImpFullUpdate()
205