endfun "}}}2
" Function to create mappings with either a hardcoded \ or <Leader>.
-fun! Mapping(keysequence,mapping) "{{{2
+fun! Mapping(keysequence, mapping, ...) "{{{2
if version < "600"
- exec "map \\" . a:keysequence . " " . a:mapping . ":<CR>"
+ let l:args = "\\" . a:keysequence . " " . a:mapping . ":<CR>"
else
- exec "map <silent> <Leader>" . a:keysequence . " " . a:mapping
+ let l:args = "<silent> <Leader>" . a:keysequence . " " . a:mapping
+ endif
+ if a:0 == 0
+ " General mapping.
+ exec "map " . l:args
+ else
+ " Specific mapping(s).
+ let l:i = 1
+ while l:i <= a:0
+ exec "let l:map = a:" . l:i . " . \"map\""
+ exec l:map . " " . l:args
+ let l:i = l:i + 1
+ endwhile
endif
endfun "}}}2
call Mapping("-", "yyp:s/./-/g<CR>:let @/=''<CR>")
call Mapping("=", "yyp:s/./=/g<CR>:let @/=''<CR>")
+fun! Tab_Width(width) "{{{2
+ exec "set sw=" . a:width
+ exec "set ts=" . a:width
+endfun "}}}2
+
" Set 2-column tabs with \2.
-call Mapping("2", ":se ts=2<CR>:se sw=2<CR>")
+call Mapping("2", ":call Tab_Width(2)<CR>")
" Set 4-column tabs with \4.
-call Mapping("4", ":se ts=4<CR>:se sw=4<CR>")
+call Mapping("4", ":call Tab_Width(4)<CR>")
" Set 8-column tabs with \8.
-call Mapping("8", ":se ts=8<CR>:se sw=8<CR>")
+call Mapping("8", ":call Tab_Width(8)<CR>")
" Set 16-column tabs with \6.
-call Mapping("6", ":se ts=16<CR>:se sw=16<CR>")
+call Mapping("6", ":call Tab_Width(16)<CR>")
" Set 32-column tabs with \3.
-call Mapping("3", ":se ts=32<CR>:se sw=32<CR>")
+call Mapping("3", ":call Tab_Width(32)<CR>")
" Toggle paste mode with \p.
call Mapping("p", ":se paste!<CR>")
" Swap case-sensitivity with \c.
elseif Has_Unicode()
if w:iainlist == 1
" Just tabs.
- return "»"
+ return "⇥"
else
" Full list.
return "¶"
" Helper for status line.
" Show the size of the tabstop.
fun! Show_Tabstop() "{{{2
- return &ts
+ if &et
+ return &ts
+ else
+ if Has_Unicode()
+ return &ts . "↹"
+ else
+ return &ts . "\\"
+ fi
+ endif
endfun "}}}2
" Helper for status line.
endif
endfun "}}}2
+" Helper for status lines.
+" Show Space plugin command.
+fun! Show_Space() "{{{2
+ if exists("*GetSpaceMovement")
+ let l:ret = GetSpaceMovement()
+ if l:ret != ""
+ if Has_Unicode()
+ let l:ret = "▭" . l:ret . Show_SearchForward()
+ else
+ let l:ret = "[" . l:ret . Show_SearchForward() . "]"
+ endif
+ endif
+ return l:ret
+ else
+ return Show_SearchForward()
+ endif
+endfun "}}}2
+
" Show the status line.
fun! Show_StatusLine() "{{{2
if ! has("statusline")
" 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: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_Space()}]%{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
fun! Cycle_List() "{{{2
" Pretty UTF-8 listchars.
if Has_Unicode()
- let basic='tab:»·,trail:…,extends:«,precedes:»'
+ let basic='tab:⇥·,trail:…,extends:«,precedes:»'
let eol='eol:¶'
if version >= "700"
let basic=basic . ',nbsp:•'
version 7.0
" Narrow buffer with \w.
-call Mapping("w", ":NarrowRegion<CR>")
+call Mapping("w", ":NarrowRegion<CR>", "n", "v")
" Narrow window with \W.
-call Mapping("W", ":NarrowWindow<CR>")
+call Mapping("W", ":NarrowWindow<CR>", "n", "v")
" Helper to show tab name.
fun! <SID>TabName(label, gui) "{{{2
" Tab line.
fun! Show_TabLine() "{{{2
- let l:s = "%#TabLineFill#Tabs:"
+ let l:colwidth = &numberwidth
+ if g:marksigns
+ let l:colwidth += 2
+ endif
+ if &diff == 1
+ let l:colwidth += 2
+ endif
+ let l:fmt = printf("%%s%% %ds", l:colwidth)
+ let l:s = printf(l:fmt, "%#TabLineFill#", "Tabs ")
let l:i = 0
while l:i < tabpagenr("$")