(no commit message)
[hombase.git] / _vimrc
blobd50dab830b5d3cd988b5945613908d671503952a
1 "@author:               Lifan
2 "@Modified:             
5 "set nocompatible       "because this is defined in vimrc_example.vim
7 "source $VIMRUNTIME/vimrc_example.vim
8 set fileformats=unix,dos
9 "set encoding=utf-8
10 let $LANG = 'en'
11 "if !has("unix")
12     "language message en
13     ""language time English_United States.1252
14     ""set langmenu=en.UTF-8
15 "endif
16 set fencs=ucs-bom,utf-8,gb2312,gb18030,gbk,big5,l439atin1
17 "set fencs=ucs-bom,utf-8,cp936,gb18030,gbk,big5,euc-jp,euc-kr,latin1
18 "set fencs=ucs-bom,utf-8,gb2312,gbk,gb18030,latin1
19 "set fencs=ucs-bom,chinese,taiwan,japan,korea,utf-8,latin1
20 let mapleader = ","
22 if has("unix")
23         if has("gui_running")  "for gdk+ vim seting
24                 "set langmenu=none
25                 "language en_US
26                 "set enc=gb2312
27                 "source $VIMRUNTIME/delmenu.vim
28                 "source $VIMRUNTIME/menu.vim
29                 "set imactivatekey=C-space
30                 "set iminsert=0
31                 "set ims=0
32                 "inoremap <esc> <esc>:set iminsert=2<cr>
33                 "noremap i      :set iminsert=2<cr>i
34                 "noremap a :set iminsert=2<cr>a
35                 "set ims=0
36                 "set imc!
37                 
38                 " CTRL-A is Select all
39                 noremap <C-A> gggH<C-O>G
40                 inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
41                 cnoremap <C-A> <C-C>gggH<C-O>G
42                 onoremap <C-A> <C-C>gggH<C-O>G
43                 snoremap <C-A> <C-C>gggH<C-O>G
44                 xnoremap <C-A> <C-C>ggVG
46                 " CTRL-V and SHIFT-Insert are Paste
47                 imap <C-V> <C-r>* 
48                 map <C-V>               "*gP
49                 map <S-Insert>          "*gP
50                 cmap <C-V>              <C-R>*
51                 cmap <S-Insert>         <C-R>*
52         else            "for bash vim setting
53                 set noshowcmd
54                 colorscheme desert
55                 "syntax off
56         endif
57         "let $VIMFILY='~/.vim'
58         let $VIMFILY=expand("$HOME") . '/.vim'
59         "set rtp^=~/vimfiles
60         "source ~/vimfiles/filetype.vim
61 else            "for win32 setting
62         if has("gui_running")
63                 "source $VIMRUNTIME/mswin.vim
64                 "set guioptions+=a      "auto copy to 
65                 "understand this
66                 set grepprg=grep\ -n\ $*\ /dev/null
67                 set grepformat=%f:%l:%m,%f:%l%m,%f\     %l%m
68                 cabbrev sort /bin/sort
69         else
70                 set noshowcmd
71         endif
72         let $VIMFILY=expand("$HOME") . '/vimfiles'
73 endif
75 let $ADDED=$VIMFILY . '/added_plugin'
77 source $ADDED/my_vimrc_example.vim
78 if !has("unix") && has("gui_running")
79     source $ADDED/my_mswin.vim
80 endif
82 source $ADDED/publib.vim
84 "for latex suit now
85 let $ADDED2=$VIM . '/vimfiles/added_plugin2'
89 "add this by lifan
90 """"""""""""""""""""""""""""""""""""""""""""""""""""""
91 "General
92 """""""""""""""""""""""""""""""""""""""""""""""""""""
93 set helplang=cn
94 set hh=999      "set the help windows defaul height to max
95 set linebreak   "let english word break whole word
96 set showmatch
97 set mat=3
98 set history=500000
99 set viminfo='100,<1500,s500,:500,/300
100 set nohlsearch
101 set incsearch
102 set timeoutlen=1500
103 set hid         "let you can change buffer without save
104 set ignorecase
105 "turn off ignorecase in a typed search if an uppercase char exists.
106 set smartcase
107 call CodeMode()         "most time are coding:)
108 set noerrorbells
109 set visualbell t_vb=
110 set cmdheight=1
111 set guioptions-=T       "hide the toolbar
112 set guioptions-=m       "hide the menubar
113 "set guioptions+=c      "use text dialog
114 set laststatus=2
115 set noruler
116 set shortmess=at
117 "set rulerformat=%50(\ %n[%{&ff}]%r%m%y%=%-14.(%l,%c%V%)\ %p%%%)
118 "set statusline=%<%f %n[%{&ff}]%r%m%y%=%-14.(%l,%c%V%)\ %p%%
119 hi User1 term=standout,bold cterm=reverse ctermbg=red gui=bold guifg=red guibg=Grey
120 hi User2 term=standout,bold cterm=reverse gui=bold guibg=Grey
123 """""""""""""""""""""""""""""""""""""""""""""""""""""""
124 "function for return the file format and file encoding
125 "from http://msghost.iyublog.com/?cat=477
126 function! FunFileEncoding()
127 return &ff . ":" . &fenc
128 endfunction
129 """"""""""""""""""""""""""""""""""""""""""""""""""
131 set statusline=%2*%=\ \ \ %50(%f\ @%n[%{FunFileEncoding()}]%r%m%y#%{changenr()}%=\ \ \ %-14.(%l,%c\(%v\)%)\ %p%%%)%*
132 set report=0
133 set listchars=eol:<
134 set listchars+=tab:>-
135 set wildmenu                    "用tab在命令行提示
136 "set clipboard+=unnamed "是y 和 p 同系统剪切板相连
137 set clipboard+=autoselect
138 "set splitbelow                 "splitting a window below the current one
139 """""""""""""""""""""""""""""""""""""""""""""""""""""
140 "Files/Backups
141 """""""""""""""""""""""""""""""""""""""""""""""""""""
142 set autowrite
143 if has("unix")
144     set backupdir=/var/backups/vi
145 else
146     if($MYGENV == "true")
147         set backupdir=$E_DISK/var/backups/vi
148     else
149         set backupdir=e:/var/backups/vi
150     endif
152 endif
153 "set sessionoptions+=curdir
154 set browsedir=buffer
155 set backupskip+=*.clean,cvscommit.????,*.~
156 set wildignore=*.o,*.obj,*.exe,*.bak,*.clean
157 if has("gui_running")
158         let savevers_dirs = &backupdir
159         let savevers_max = 9
160         source $ADDED/savevers.vim
161         set backup
162         set patchmode=.clean
163         set backupcopy=yes
164 endif
165 "change the direct when chang the buffer
166 "au   BufEnter *   :lcd %:p:h
167 "set autochdir
168 set makeef=error.err
169 set title
170 set titlelen=80
171 set titlestring=%<%F\ %M\ %R\ %{v:servername}\ %{mode()}\ e\ U
173 """""""""""""""""""""""""""""""""""""""""""""""""""""
175 "Vim GUI
176 """"""""""""""""""""""""""""""""""""""""""""""""""""""
177 """""""""""""""""""""""""""""""""""""""""""""""""""""
178 " Text Formatting/Layout
179 """""""""""""""""""""""""""""""""""""""""""""""""""""
180 "set fo=tcrqn
181 """""""""""""""""""""""""""""""""""""""""""""""""""""
182 "Folding
183 """""""""""""""""""""""""""""""""""""""""""""""""""""
184 set foldenable " Turn on folding
185 "set foldmethod=indent " Make folding indent sensitive
186 set foldlevel=100 " Don't autofold anything (but I can still fold manually)
187 "set foldopen-=search " don't open folds when you search into them
188 set foldopen-=undo 
189 "set foldcolumn=8
190 "set foldmethod=syntax
191 let g:xml_syntax_folding = 1
192 let xml_use_xhtml = 1
197 """""""""""""""""""""""""""""""""""""""""""""""""""""
198 "Mappings
199 """""""""""""""""""""""""""""""""""""""""""""""""""""
200 "nomre mode maping
201 "nnoremap <C-i> i <esc>r
202 nnoremap j gj
203 nnoremap k gk
204 nnoremap ' `
206 "for caculator ++
207 nnoremap <C-c> <C-A>
209 "for del the auto comment
210 noremap <m-cr> o<esc>^"8d$a
212 "for eclipse compatible 
213 inoremap <m-/> <c-x><c-o>
215 "for good insert next line
216 "noremap <C-i> ddO
217 noremap <m-i> :let g:currentline=line('.')<cr>:.d<cr>:if g:currentline==line('.')<cr>:normal -<cr>:endif<cr>o
219 "use <c-v> to mapping the block visual mode do not using the win32 paste
220 nnoremap <c-v> <c-v>
222 "nnoremap <silent> <cr> i<cr><esc>
225 "insert mode maping
226 "notice, <c-e> using for end complete mode, <c-y> using for accept complete in
227 "vim original
229 " my undo setting
230 inoremap <A-r> <C-R>
231 inoremap <C-u> <esc>g-a
232 inoremap <C-r> <esc>g+a
233 "inoremap <C-u> <C-O>u
234 "inoremap <C-r> <C-O><C-R>
235 noremap u g-
236 noremap <C-r> g+
238 " my complete setting
239 " failure try, must find a way to map /
240 "inoremap / <kDivide>
241 "imap <expr> <F3> "\u611B"
242 "inoremap <Right> <C-R>=pumvisible() ? "\<lt>C-N>" : "\<lt>Down>"<CR>
244 "like in emacs to kill a line
245 inoremap <C-k> <space><esc>d$a
247 "for del the auto comment
248 inoremap <m-cr> <cr><esc>^d$a
250 " reproduce previous line word by word
251 "inoremap <C-j>  @@@<ESC>hhkyWjl?@@@<CR>P/@@@<CR>3s
253 "visual mode maping
254 "   Put string marked by visual mode as default for search commands / and ?
255 "   Warning: extending the marked text by searching doesn't work any more.
256 vnoremap / y/<C-R>=escape(substitute(@","\n.*",'',''),'/\?*.$^~][')<cr>
257 vnoremap ? y?<C-R>=escape(substitute(@","\n.*",'',''),'/\?*.$^~][')<cr>
258 "   Explanation:
259 " substitute(@",..) - remove lines after first, if >1 line highlighted
260 " escape(..)        - put '\' before all characters meaningful in regexp's
261 " y                 - yank current selection (in register ")
262 " ctrl-r = .. <cr>  - put expression after / as earch string
263 " credits go to Stefan Roemer and Peppe (Preben Guldberg).
265 "   Remove whitespace from lines containing nothing else (grr to all nedit users)
267 "for the mouse conflict key(c-insert) of HP notebook
268 noremap <Insert> <Esc>
269 noremap <C-Insert> <Esc>
270 inoremap <Insert> <Down>
271 inoremap <C-Insert> <Down>
273 "leader mode mapping
275 "for new tab page setting
276 map <leader>ta <esc>:tab sball<cr>
278 "buffer mapping
279 map <leader>bp <esc>:bp<return>
280 map <leader>bn <esc>:bn<return>
281 map <leader>bl <esc>:ls!<cr>
283 nnoremap <leader>dd <esc>:call MyTriggerMore()<cr>
284 map <leader>yy <esc>^"*y$
286 "editor setting mapping
287 map <leader>ec <esc>:call MyCoding()<cr>
288 map <leader>el <esc>:set list!<cr>
289 map <leader>em <esc>:call MyMenu()<cr>
290 map <leader>en <esc>:set nu!<cr>:set cursorline!<cr>
291 map <leader>ew <esc>:call MyWrap()<cr>
293 "file or browser mapping
294 map <leader>fx <esc>:Ex<cr>
295 nnoremap <leader>fd :set fileformat=dos<cr>
296 nnoremap <leader>fu :set fileformat=unix<cr>
297 map <leader>ww <esc>:call MyUrl(expand('<cWORD>'))<cr>
298 map <leader>m <esc>:silent MarksBrowser<cr>
300 "search mapping
301 map <leader>sh <esc>:set hlsearch!<cr>
302 map <leader>sn <esc>:%s//&/gn<cr>
304 "spell mapping
305 map <leader>ss <esc>:setlocal spell!<cr>
306 "aspell setting
307 "ca  xsp write !aspell -a --lang="en_US"<cr>
308 "map <leader>s <Esc>:w<cr><Esc>:!aspell -c --dont-backup --lang=en_US "%:p"<cr>:e! "%"<cr><cr>
310 "map <leader>df <esc>:silent !start firefox "http://www.m-w.com/cgi-bin/Dictionary?book=Dictionary&va=<cword>"<cr><cr>
311 "map <leader>dF <esc>:silent !start firefox "http://www.m-w.com/cgi-bin/Thesaurus?book=Thesaurus&va=<cword>"<cr><cr>
312 "map <leader>dW <esc>:silent !wnb <cword> <cr><cr>
314 "for new tab setting and new align setting
315 " leader mode mapping
316 map <leader>la <esc>:call SecondLoadAlign()<cr>
317 map <leader>lt <esc>:call SecondTriggerChangeTab()<cr>
319 " remove space and enter charactor
320 map <leader>rs <esc>::%s= *$==<cr>
321 map <leader>rd <esc>:%s/\r//g<cr>
324 "MAKE IT EASY TO UPDATE/RELOAD_vimrc
325 nnoremap <leader>-s <esc>:source ~/_vimrc<cr>
326 nnoremap <leader>-v <esc>:e ~/_vimrc<cr> 
328 " trigger color style
330 "if has("gui_running")  "for gdk+ vim seting
331     map <leader>cd <esc>:call MyTriggerColor()<cr>
332 "endif
335 """""""""""""""""""""""""""""""""""""""""""""""""""""
336 " <F5>-<F8>maping for savers-pluging
337 " <F5> decrease version viewed in VersDiff window
338 " <F6> increase version viewed in VersDiff window
339 " <F7> do VersDiff with cvs version of current file
340 " <F8> cancel VersDiff window
341 nmap <silent> <F3> :VersDiff -<cr>
342 nmap <silent> <F4> :VersDiff +<cr>
343 """""""""""""""""""""""""""""""""""""""""""""""""""""
345 " for autohotkey to using:)
346 " 0=english input 1=chinese input
347 let g:cinput = 0
348 let g:down = 0
350 "user command maping
351 com! MM call MyMore()
352 """""""""""""""""""""""""""""""""""""""""""""""""""""
354 """""""""""""""""""""""""""""""""""""""""""""""""""""
355 "Programmings abbrevs
356 """""""""""""""""""""""""""""""""""""""""""""""""""""
357 """""""""""""""""""""""""""""""""""""""""""""""""""""
358 "Informational abbrevs
359 """""""""""""""""""""""""""""""""""""""""""""""""""""
360 "iab xda <c-r>=strftime("%Y-%m-%d-%H:%M:%S")<cr>
361 iab xda <c-r>=substitute(system("date +%Y-%m-%d-%H:%M"),"\n","","")<cr>
362 iabbrev teh the
363 iabbrev otehr other
364 iabbrev wnat want
365 iabbrev synchronisation
366         \ synchronization
367 iab hte the
368 iab fro for
369 iab adn and
370 iab taht that
371 iab knwe knew
372 iab htat that
373 iab tyr try
374 iab ture true
375 """""""""""""""""""""""""""""""""""""""""""""""""""""
378 """""""""""""""""""""""""""""""""""""""""""""""""""""
379 "for no swap attation
380 "set dir=~/tmp
381 func! CheckSwap()
382         swapname
383         if v:statusmsg =~ '\.sw[^p]$'
384                 set statusline=%2*%=\ \ \ %50(%f\ @%n%*%1*[$]%*%2*[%{&ff}]%r%m%y%=\ \ \ %-14.(%l,%c\(%v\)%)\ %p%%%)%*
385                 silent call MyMore()
386         else
387         set statusline=%2*%=\ \ \ %50(%f\ @%n[%{FunFileEncoding()}]%r%m%y#%{changenr()}%=\ \ \ %-14.(%l,%c\(%v\)%)\ %p%%%)%*
388                 "set statusline=%2*%=\ \ \ %50(%f\ @%n[%{&ff}]%r%m%y%=\ \ \ %-14.(%l,%c%V%)\ %p%%%)%*
389         endif
390 endfunc
392 if &swf
393         set shm+=A
394         autocmd BufEnter * silent call CheckSwap()
395 endif 
396 """""""""""""""""""""""""""""""""""""""""""""""""""""
401 """""""""""""""""""""""""""""""""""""""""""""""""""""
402 "ViKi Mode
403 """""""""""""""""""""""""""""""""""""""""""""""""""""
404 "let g:vikiUseParentSuffix = 1
405 "let g:vikiSpecialFiles='jpg\|gif\|bmp\|pdf\|dvi\|ps\|eps\|png\|jpeg\|wmf\|otl'
406 "let g:vikiOpenFileWith_otl = 'silent !D:/prog/Natara/Bonsai/Bonsai.exe %{FILE}'
408 " we want to allow deplate to execute ruby code and external helper 
409 " application
410 "let g:deplatePrg = "deplate -x -X "
411 "au FileType viki compiler deplate
412 "let g:vikiInterOLM= $HOME ."/olm"
413 "let g:vikiInterOLM_suffix= ".olm"
414 "let g:vikiInterHW= $HOME ."/viki"
415 "let g:vikiInterHW_suffix= ".txt"
420 """""""""""""""""""""""""""""""""""""""""""""""""""""
421 " setting for mru
422 map <leader>rr :MRU<cr>gg
423 let MRU_Max_Entries = 500
424 let MRU_Exclude_Files = '^/tmp/.*\|^/var/tmp/.*|^c:\\temp\\.*'
425 let MRU_File = $VIMFILY . "/_vim_mru_files"
426 "let MRU_Auto_Close = 0  " to keep the mru window
427 """""""""""""""""""""""""""""""""""""""""""""""""""""
429 """""""""""""""""""""""""""""""""""""""""""""""""""""
430 " setting for subversion
431 nmap <leader>va <Plug>VCSAdd
432 nmap <leader>vn <Plug>VCSAnnotate
433 nmap <leader>vc <Plug>VCSCommit
434 nmap <leader>vd <Plug>VCSDiff
435 nmap <leader>ve <Plug>VCSEdit
436 nmap <leader>vi <Plug>VCSEditors
437 nmap <leader>vg <Plug>VCSGotoOriginal
438 nmap <leader>vG <Plug>VCSGotoOriginal!
439 nmap <leader>vl <Plug>VCSLog
440 nmap <leader>vr <Plug>VCSReview
441 nmap <leader>vs <Plug>VCSStatus
442 nmap <leader>vt <Plug>VCSUnedit
443 nmap <leader>vu <Plug>VCSUpdate
444 nmap <leader>vv <Plug>VCSVimDiff
445 nmap <leader>vwv <Plug>VCSWatchers
446 nmap <leader>vwa <Plug>VCSWatchAdd
447 nmap <leader>vwn <Plug>VCSWatchOn
448 nmap <leader>vwf <Plug>VCSWatchOff
449 nmap <leader>vwf <Plug>VCSWatchRemove
450 """""""""""""""""""""""""""""""""""""""""""""""""""""
453 """""""""""""""""""""""""""""""""""""""""""""""""""""
454 "Autocommands
455 """""""""""""""""""""""""""""""""""""""""""""""""""""
456 "autocmd BufEnter * :syntax sync fromstart " ensure every file does syntax highlighting (full)
457 "autocmd BufEnter * :lcd %:p:h " switch to current dir
458 "autocmd GUIEnter * :simalt ~x " maximize the screen
460 augroup filetypedetect 
461         """""""""""""""""""""""""""""""""""""""""""""""""""""
462         "for help and readbale file mode 
463         augroup! filetypedetect 
464         autocmd FileType help call MyMore()
465         """""""""""""""""""""""""""""""""""""""""""""""""""""
467         """""""""""""""""""""""""""""""""""""""""""""""""""""
468         "for the make error windows quickfix windows
469         au BufReadPost quickfix set modifiable
470         au BufReadPost quickfix  silent g/^/s//\=line(".")." "/
471         autocmd FileType qf call MyMore()
472         """""""""""""""""""""""""""""""""""""""""""""""""""""
474         """""""""""""""""""""""""""""""""""""""""""""""""""""
475         "template mode
476         """""""""""""""""""""""""""""""""""""""""""""""""""""
477         "autocmd BufNewFile *.sh                0r ~/vimtemplate/skeleton.sh
478         "autocmd BufNewFile *.vim               0r $HOME/vimfiles/skel/vim.skel
479         autocmd BufNewFile,BufReadPre *.java,*.vim,*.sh,*.html,*.xhtml,*.py             source $ADDED/skel.vim
480         "autocmd BufNewFile *.java              0r $VIMFILY/skel/java.skel
481         "autocmd BufNewFile *.vim               0r $VIMFILY/skel/vim.skel
482         "autocmd BufNewFile *.sh                0r $VIMFILY/skel/sh.skel
483         "autocmd BufNewFile *.html              0r $VIMFILY/skel/html.skel
484         "autocmd BufNewFile *.xhtml     0r $VIMFILY/skel/xhtml.skel
485         "autocmd BufNewFile *.java,*.vim,*.sh,*.html,*.xhtml            call Replacy()
486         """""""""""""""""""""""""""""""""""""""""""""""""""""
487         """""""""""""""""""""""""""""""""""""""""""""""""""""
488         "anti word
489         "au BufReadPre *.doc set ro
490         "au BufReadPre *.doc set hlsearch!
491         "au BufReadPost *.doc silent %!antiword "%"
492         "autocmd BufReadPost *.doc silent %!wvware "%"
493         """""""""""""""""""""""""""""""""""""""""""""""""""""
494         "au BufNewFile,BufRead /home/Administrator/std-java/new1.5/* let g:bnojikes=1
496         autocmd BufWritePre,FileWritePre *.vim  ks|call LastMod()|'s
497         autocmd BufWritePre,FileWritePre *.jsp,*.html  ks|call LastMod2()|'s
499         autocmd BufNewFile,BufreadPre *.text,*.wiki call TextMode()
500         "autocmd BufNewFile,BufreadPre *.rst call RstMode()
501         autocmd FileType vim setlocal complete=.,k~/dic/vimdiction,w,b,u,i
503         autocmd fileType ahk source $ADDED/bracket.vim
505 augroup end
506 """""""""""""""""""""""""""""""""""""""""""""""""""""
507 "CTags
508 """""""""""""""""""""""""""""""""""""""""""""""""""""
509 nnoremap <silent> <F8> :Tlist<cr>
510 let Tlist_Show_One_File = 1            " just show tag of current files
511 let Tlist_Exit_OnlyWindow = 1          " if taglist window iis the last one then exit vim
512 let Tlist_File_Fold_Auto_Close=1       " auto fold not editing function list
513 let Tlist_Sort_Type = "name" " order by
514 let Tlist_Use_Right_Window = 1 " split to the right side of the screen
515 let tlist_dosini_settings= 'ini;r:respect'
516 let tlist_html_settings = 'html;a:anchor;f:javascript function;u:url'
517 let tlist_vb_settings= 'vb;t:type;s:sub;f:function'
518 let tlist_ant_settings = 'ant;p:Project;r:Property;t:Target'
519 let JavaBrowser_Use_SingleClick = 0
520 let JavaBrowser_Use_Right_Window = 1
521 let JavaBrowser_Use_Icon = 0
522 let JavaBrowser_Compact_Format = 1
523 let JavaBrowser_Expand_Tree_At_Startup = 1
527 """""""""""""""""""""""""""""""""""""""""""""""""""""
528 "JavaImp
529 """""""""""""""""""""""""""""""""""""""""""""""""""""
530 let g:JavaImpPaths = $JAVALIB."/j2sdk1.5_src,".$JAVALIB."junit_src,".$VIMFILY."/JavaImp/jmplst"
531 let g:JavaImpDataDir = $VIMFILY."/JavaImp"
532 let g:JavaImpDocPaths= $JAVA_DOCPATH
533 let g:JavaImpDocViewer = "viewHtml"
537 """""""""""""""""""""""""""""""""""""""""""""""""""""
538 "favex mod
539 """""""""""""""""""""""""""""""""""""""""""""""""""""
540 let g:favex_ff='<leader>fa'
541 let g:favex_fd='<leader>fA'
542 """""""""""""""""""""""""""""""""""""""""""""""""""""
544 """""""""""""""""""""""""""""""""""""""""""""""""""""
545 """""""""""""""""""""""""""""""""""""""""""""""""""""
546 "vcscommand mod
547 augroup VCSCommand
548   au VCSCommand User VCSBufferCreated silent! nmap <unique> <buffer> q          :bwipeout<cr>
549 augroup END
550 "let g:VCSCommandEdit= 'spilt'
552 """""""""""""""""""""""""""""""""""""""""""""""""""""
554 """""""""""""""""""""""""""""""""""""""""""""""""""""
555 "Buffer Explorer
556 """""""""""""""""""""""""""""""""""""""""""""""""""""
557 "let g:bufExplorerDetailedHelp=1
558 let g:netrw_keepdir=0
559 let g:netrw_cygwin= 1
560 let g:netrw_longlist=1
561 let g:netrw_sort_by="time"
562 let g:netrw_sort_direction="reverse"
563 let g:netrw_timefmt="   %Y %m %d\t%H:%M"
564 let g:netrw_winsize=25
566 """""""""""""""""""""""""""""""""""""""""""""""""""""
567 "Buffer Select
568 """""""""""""""""""""""""""""""""""""""""""""""""""""
569 "nmap <silent> <unique> <leader>be <Plug>SelectBuf
570 "nmap <unique> <leader>bl <Plug>SelBufLaunchCmd
571 "let selBufAlwaysShowHidden=0
572 "let selBufIgnoreNonFileBufs=0
574 "Buffer Line
575 "nmap <Leader>tv :call TabLineSet_verbose_toggle()<CR>
576 "nmap <Leader>tr :call TabLineSet_verbose_rotate()<CR>
577 "nmap <silent> <Leader>w :call WinWalkerMenu()<CR>
583 "Highlight space at end of line as error
584 "highlight WhitespaceEOL ctermbg=darkred guibg=darkred
585 "match WhitespaceEOL /\s\+$/
590 "not use now
591 "set diffexpr=MyDiff()
592 "function MyDiff()
593 "  let opt = '-a --binary '
594 "  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
595 "  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
596 "  let arg1 = v:fname_in
597 "  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
598 "  let arg2 = v:fname_new
599 "  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
600 "  let arg3 = v:fname_out
601 "  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
602 "  silent execute '!e:\prog\Vim\vim63\diff ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3
603 "endfunction
606 function! MyTabLabel(n)
607         let buflist = tabpagebuflist(a:n)
608         let winnr = tabpagewinnr(a:n)
609         return bufname(buflist[winnr - 1])
610 endfunction
612 function! MyTabLine()
613         let s = ''
614         for i in range(tabpagenr('$'))
615                 " select the highlighting
616                 if i + 1 == tabpagenr()
617                   let s .= '%#TabLineSel#'
618                 else
619                   let s .= '%#TabLine#'
620                 endif
622                 " set the tab page number (for mouse clicks)
623                 let s .= '%' . (i + 1) . 'T'
625                 " the label is made by MyTabLabel()
626                 let s .= ' %{MyTabLabel(' . (i + 1) . ')} '
627         endfor
629         " after the last tab fill with TabLineFill and reset tab page nr
630         let s .= '%#TabLineFill#%T'
632         " right-align the label to close the current tab page
633         if tabpagenr('$') > 1
634                 let s .= '%=%#TabLine#%999Xclose'
635         endif
637         return s
638 endfunction
640 function! GuiTabLabel()
641         let label = ''
642         "let bufnrlist = tabpagebuflist(v:lnum)
644         " Add '+' if one of the buffers in the tab page is modified
645         "for bufnr in bufnrlist
646                 "if getbufvar(bufnr, "&modified")
647                         "let label = '+'
648                         "break
649                 "endif
650         "endfor
652         " Append the number of windows in the tab page if more than one
653         "let wincount = tabpagewinnr(v:lnum, '$')
654         "if wincount > 1
655                 "let label .= wincount
656         "endif
657         if v:lnum == g:currentPage
658                 let label .= ">>"
659         endif
660         return label
662         " Append the buffer name
663 endfunction
665 function! GuiTabLabel2()
666         let label = ''
667         let bufnrlist = tabpagebuflist(v:lnum)
669         " Add '+' if one of the buffers in the tab page is modified
670         "for bufnr in bufnrlist
671                 "if getbufvar(bufnr, "&modified")
672                         "let label = '+'
673                         "break
674                 "endif
675         "endfor
677         " Append the number of windows in the tab page if more than one
678         if v:lnum == g:currentPage
679                 let label .= "<<"
680         endif
681         let wincount = tabpagewinnr(v:lnum, '$')
682         if wincount > 1
683                 let label .= wincount
684         endif
685         return label
686 endfunction
688 let g:currentPage=1
689 function! GuiTabLabelEnter()
690         let g:currentPage=tabpagenr()
691         set guitablabel=%{GuiTabLabel()}%N\ %t\ %{GuiTabLabel2()}
692 endfunction
694 function! GuiTabLabelLeave()
695 endfunction
697 "       the tab setting and mapping
699 "set guitablabel=%N\ %f
700 "set guitablabel=%{GuiTabLabel()}
702 "set guitablabel=%N/\ %t\ %M
703 set tabline=%!MyTabLine()
704 let g:toggleTabs = 0
705 map <silent><F12> :if g:toggleTabs == 1<CR>:tabo<CR>:set lines+=3<CR>:let g:toggleTabs = 0<CR>:else<CR>:set lines-=3<CR>:tab ball<CR>:let g:toggleTabs = 1<CR>:endif<CR>
706 map <silent><C-tab> :if g:toggleTabs == 1<CR>:tabnext<CR>:else<CR>:bn<CR>:endif<CR>
707 map <silent><C-S-tab> :if g:toggleTabs == 1<CR>:tabprevious<CR>:else<CR>:bp<CR>:endif<CR> 
709 map <leader>tt <esc>:tabnew<cr>:let g:toggleTabs=1<cr>
710 map <leader>tx :tabclose<cr>:if tabpagenr("$") == 1<cr>let g:toggleTabs=0<cr>:endif<cr><cr>
711 map <leader>tm :tabmove 
712 map <leader>tn :tabnext <cr>
713 map <leader>tp :tabprevious <cr>
714 "map <C-Tab> :tabn <CR>
715 "map <C-S-Tab> :tabp <CR> 
717 "autocmd TabLeave 
718 autocmd TabEnter * call GuiTabLabelEnter()
722 if has("gui_running")
723     function! InfoGuiTooltip()
724         "get window count
725         let wincount = tabpagewinnr(tabpagenr(),'$')
726         let bufferlist=''
727         "get name of active buffers in windows
728         for i in tabpagebuflist()
729             let bufferlist .= '['.fnamemodify(bufname(i),':t')."]"
730         endfor
731         return bufname($).'-'.bufferlist
732     endfunction
733     set guitabtooltip=%!InfoGuiTooltip()
736     function! FoldSpellBalloon()
737         let foldStart = foldclosed(v:beval_lnum )
738         let foldEnd = foldclosedend(v:beval_lnum)
739         let lines = []
740         " Detect if we are in a fold
741         if foldStart < 0
742             " Detect if we are on a misspelled word
743             let lines = spellsuggest( spellbadword(v:beval_text)[ 0 ], 5, 0 )
744         else
745             " we are in a fold
746             let numLines = foldEnd - foldStart + 1
747             " if we have too many lines in fold, show only the first 14
748             " and the last 14 lines
749             if ( numLines > 31 )
750                 let lines = getline( foldStart, foldStart + 14 )
751                 let lines += [ '-- Snipped ' . ( numLines - 30 ) . ' lines --' ]
752                 let lines += getline( foldEnd - 14, foldEnd )
753             else
754                 "less than 30 lines, lets show all of them
755                 let lines = getline( foldStart, foldEnd )
756             endif
757         endif
758         " return result
759         return join( lines, has( "balloon_multiline" ) ? "\n" : " " )
760     endfunction
761     set balloonexpr=FoldSpellBalloon()
762     set ballooneval
763     
765 endif
766     
767 "for vim im
768 let g:vimim_chinese_punctuation=0
770 "for js lint
771 let jslint_highlight_color = 'yellow'
774 " for cscope
775 if has("unix")
776     set csprg=/usr/bin/mlcscope
777 else
778     set csprg=%CYGWIN_HOME%\bin\\mlcscope.exe
779 endif
781 " for clipbord conflict with NERD
782 nmap <unique> <silent> <Leader>co <Plug>ClipBrdOpen
784 " add my highlight setting
785 call MyColorSetting()