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:•'
call Iain_Vars()
let b:iainalt = ! b:iainalt
call Show_StatusLine()
-endfun "{{{2
+endfun "}}}2
" To be overridden later if applicable.
fun! Extra_Whitespace_Match() "{{{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("$")
" Remove persistent undo file with \U.
call Mapping("U", ":call <SID>Clear_Undo()<CR>")
-" Toggle gundo window with \g.
-call Mapping("g", ":call gundo#GundoToggle()<CR>")
+" Toggle Undotree window with \g.
+call Mapping("g", ":UndotreeToggle<CR>")
+" Switch to Undotree window with \G.
+call Mapping("g", ":UndotreeToggle<CR>")
+" Undotree gets focus.
+let g:undotree_SetFocusWhenToggle=1
+" Undotree uses context diff.
+let g:undotree_DiffCommand="diff -u"
+" Undotree bullet.
+if Has_Unicode()
+ let g:undotree_TreeNodeShape="•"
+endif
+" Undotree bindings emulate Gundo.
+fun! g:Undotree_CustomMap() "{{{2
+ nmap <buffer> k <plug>UndotreeGoNextState
+ nmap <buffer> j <plug>UndotreeGoPreviousState
+ nmap <buffer> K <plug>UndotreeGoNextSaved
+ nmap <buffer> J <plug>UndotreeGoPreviousSaved
+ nmap <buffer> <CR> <plug>UndotreeFocusTarget
+endfun "}}}2
+
" Use a persistent undo file if it exists.
fun! <SID>Check_Undo() "{{{2