X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=.vimrc;h=c2a88f8e528a44865f21493a6c74012d9ef13dae;hb=dc63ca686dd762680e884a55538135cb197da9b6;hp=d29cc402159feed885d75e219224851e571697db;hpb=6e4ae53cf4de6aa433d900f1f1780697ba092f0d;p=profile.git diff --git a/.vimrc b/.vimrc index d29cc40..c2a88f8 100644 --- a/.vimrc +++ b/.vimrc @@ -1,5 +1,5 @@ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" Multi-version vimrc compatible with version 4 and above. vim:set fdm=marker: +" Multi-version vimrc compatible with version 4 and above. vim6:set fdm=marker: """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Note that "if | call Something() | endif" syntax is unsupported @@ -638,6 +638,11 @@ version 5.4 " Reuse windows when using sbuffer. se switchbuf=useopen +" Vim 5 requires a 'n setting for viminfo. +if ! &viminfo + se viminfo='100 +endif + " Allow persistent variable saving for localvimrc. se viminfo+=! @@ -663,12 +668,55 @@ fun! Has_Unicode() "{{{2 endfun "}}}2 " Helper for status line. +" Show file encoding +fun! Show_Encoding() "{{{2 + if version < "600" + return "" + endif + + let l:enc = &fenc + let l:symbol = "" + if l:enc == "" + let l:enc = &enc + if l:enc == "" + return "" + endif + if bufname("%") == "" + if Has_Unicode() + let l:symbol = '•' + else + let l:symbol = '*' + endif + endif + endif + + if has("multi_byte") + if &bomb + if Has_Unicode() + let l:symbol = "☻" + else + let l:symbol = "@" + endif + endif + endif + + " Don't return anything if the encoding is utf-8. + if l:enc == "utf-8" + if l:symbol == "" + return "" + endif + endif + + return l:symbol . l:enc . "," +endfun "}}}2 + +" Helper for status line. " Show space, underscore or dollar sign depending on list mode. fun! Show_List() "{{{2 call Iain_Vars() if w:iainlist == 0 " No list. - return " " + return "" elseif Has_Unicode() if w:iainlist == 1 " Just tabs. @@ -697,6 +745,15 @@ fun! Show_Case() "{{{2 endfun "}}}2 " Helper for status line. +" Mark DOS buffers. +fun! Show_DOS() "{{{2 + if &ff == "unix" + return "" + endif + return &ff . "," +endfun "}}}2 + +" Helper for status line. " Show the size of the tabstop. fun! Show_Tabstop() "{{{2 return &ts @@ -793,14 +850,70 @@ fun! Show_SearchForward() "{{{2 return "" endfun "}}}2 +" Helper for status line. +" Show marks set in cursor line. +fun! Show_Marks() "{{{2 + if ! exists("g:iainsigns") + return "" + endif + + let l:marks = "" + + let l:signs = g:iainsigns + let l:sign = "" + let l:cursorline = line(".") + while strlen(l:signs) + let l:sign = matchstr(l:signs, '^[A-Za-z]\+\(:.\)*[.=>-][^ ]\+') + let l:sign = substitute(l:sign, '^[A-Za-z]\+', "", "") + let l:ascii = matchstr(l:sign, '^:.') + let l:mark = substitute(l:sign, '^\(:.\)*[.=>-]', "", "") + if strlen(l:ascii) + let l:ascii = substitute(l:ascii, '^:', "", "") + else + let l:ascii = l:mark + endif + let l:ascii = substitute(l:ascii, '"', '\\"', "") + + if l:ascii == "o" + let l:line = "." + else + let l:line = "'" . l:ascii + endif + + " Ignore cursor line which will always match. + if l:line != "." + if l:cursorline == line(l:line) + let l:marks = l:marks . l:mark + endif + endif + + let l:signs = substitute(l:signs, '^[^ ]\+ *', "", "") + endwhile + + if l:marks == "" + return "" + else + return "M:" . l:marks . " " + endif +endfun "}}}2 + " Show the status line. fun! Show_StatusLine() "{{{2 if ! has("statusline") return endif call Iain_Vars() - let l:sl1='%2n\:\ %<%1*%f%0*\ [%{Show_List()}%{Show_Bind()}%{Show_Case()}%{Show_Tabstop()}%{Show_Paste()}%{Show_VirtualEdit()}%{Show_Undo()}%Y%M%R%{Show_SearchForward()}]%{Show_Alt()}\ ' - let l:sl3='L:%1*%4.6l%0*/%-4.6L\ C:%1*%3.6c%V%0*\ \|\ %P' + + " User{N} highlights %{N}*. + " Named highlight groups %#group% aren't available until Vim 7. + let l:normal = '%0*' + let l:bold = '%1*' + + " sl1 contains left-aligned stuff. + " sl2 contains stuff shown only when verbose mode is enabled. + " sl3 contains right-aligned stuff. + let l:sl1='%2n\:\ %<' . l:bold . '%f' . l:normal . '\ [%{Show_Encoding()}%{Show_DOS()}%{Show_List()}%{Show_Bind()}%{Show_Case()}%{Show_Tabstop()}%{Show_Paste()}%{Show_VirtualEdit()}%{Show_Undo()}%Y%M%R%{Show_SearchForward()}]%{Show_Alt()}\ ' + let l:sl3='%{Show_Marks()}L:' . l:bold . '%4.6l' . l:normal . '/%-4.6L\ C:' . l:bold . '%3.6c%V' . l:normal . '\ \|\ %P' let l:hexformat='%b' if b:iainhex let l:hexformat='0\x%02B' @@ -1137,13 +1250,13 @@ if has("autocmd") " Show signs by default. au Display VimEnter * call Cycle_Signs(0) endif -endif "}}}1 " move. nmap MoveLineHalfPageUp nmap MoveLineHalfPageDown vmap MoveBlockHalfPageUp vmap MoveBlockHalfPageDown +endif "}}}1 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Handle options only available in Vim 7 and above. @@ -1151,6 +1264,11 @@ vmap MoveBlockHalfPageDown if version >= "700" "{{{1 version 7.0 +" Narrow buffer with \w. +call Mapping("w", ":NarrowRegion:") +" Narrow window with \W. +call Mapping("W", ":NarrowWindow:") + " Helper to show tab name. fun! TabName(label, gui) "{{{2 let l:label = a:label @@ -1318,7 +1436,6 @@ let g:bufExplorerSplitOutPathName=0 " NERDcommenter. let g:NERDSpaceDelims=1 -endif "}}}1 " localvimrc. let g:localvimrc_persistent=1 @@ -1326,6 +1443,7 @@ let g:localvimrc_persistent=1 " Gitv. let g:Gitv_OpenHorizontal='auto' let g:Gitv_WipeAllOnClose=1 +endif "}}}1 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Handle options only available in Vim 7.2 and above.