diff --git a/.vimrc b/.vimrc index de2a9ed..5fb9c45 100644 --- a/.vimrc +++ b/.vimrc @@ -54,7 +54,7 @@ set backspace=indent,eol,start " don't use Ex mode, use Q for formatting map Q gq " disable mouse -set mouse=a + set mouse=a " key combination timeout set notimeout "set timeoutlen=4000 @@ -255,7 +255,7 @@ let Tlist_Display_Prototype = 0 let Tlist_Display_Tag_Scope = 0 let Tlist_Show_One_File = 1 let Tlist_Compact_Format = 1 -let Tlist_Enable_Fold_Column = 0 +let Tlist_Enable_Fold_Column = 1 "let Tlist_File_Fold_Auto_Close = 1 let Tlist_Inc_Winwidth = 0 "let Tlist_Use_Horiz_Window = 1 @@ -266,7 +266,7 @@ map :TlistToggle " set statusline=%<%f\ %h%m%r%=%([%{Tlist_Get_Tagname_By_Line()}]%)%3.(\ %)%-14.(%l,%c%V%)\ %P " include Git status(plugin vim-fugitiv) and tag name in status set laststatus=2 -set statusline=%<%f\ %h%w%m%r%3.(\ %)%{fugitive#statusline()}%=%([%{Tlist_Get_Tagname_By_Line()}]%)%3.(\ %)%-14.(%l,%c%V%)\ %P +"set statusline=%<%f\ %h%w%m%r%3.(\ %)%{fugitive#statusline()}%=%([%{Tlist_Get_Tagname_By_Line()}]%)%3.(\ %)%-14.(%l,%c%V%)\ %P " if compiled with --enable-cscope if has("cscope") " use both cscope and ctag for 'ctrl-]', ':ta', and 'vim -t' @@ -496,4 +496,70 @@ endfunction nmap :call QtClassDoc() +"""""""""""""""""""""""""""""""""""""""""""""""""" +"Poser une marque visible avec F7 +""""""""""""""""""""""""""""""""""""""""""""""""""" +"hi Mark guibg=indianred guifg=white gui=bold cterm=bold ctermfg=7 ctermbg=1 +"sign define mark text=!> texthl=Mark +"map :exe 'sign place 001 name=mark line='.line(".").' buffer='.winbufnr(0) +"map :sign unplace + +function! GetProtoLine() + let ret = "" + let line_save = line(".") + let col_save = col(".") + let top = line_save - winline() + 1 + let so_save = &so + let &so = 0 + let istypedef = 0 + " find closing brace + let closing_lnum = search('^}','cW') + if closing_lnum > 0 + if getline(line(".")) =~ '\w\s*;\s*$' + let istypedef = 1 + let closingline = getline(".") + endif + " go to the opening brace + normal! % + " if the start position is between the two braces + if line(".") <= line_save + if istypedef + let ret = matchstr(closingline, '\w\+\s*;') + else + " find a line contains function name + let lnum = search('^\w','bcnW') + if lnum > 0 + let ret = getline(lnum) + endif + endif + endif + endif + " restore position and screen line + exe "normal! " . top . "Gz\" + call cursor(line_save, col_save) + let &so = so_save + return ret +endfunction + +function! WhatFunction() + if &ft != "c" && &ft != "cpp" + return "" + endif + let proto = GetProtoLine() + if proto == "" + return "?" + endif + if stridx(proto, '(') > 0 + let ret = matchstr(proto, '\w\+(\@=') + elseif proto =~# '\' + let ret = matchstr(proto, 'struct\s\+\w\+') + elseif proto =~# '\' + let ret = matchstr(proto, 'class\s\+\w\+') + else + let ret = strpart(proto, 0, 15) . "..." + endif + return ret +endfunction + +set statusline=%<%f\ %h%w%m%r%3.(\ %)%{fugitive#statusline()}%=%([%{Tlist_Get_Tagname_By_Line()}%{WhatFunction()}]%)%3.(\ %)%-14.(%l,%c%V%)\ %P