fun! Number(resize) "{{{2
call Iain_Vars()
let &number = ! &number
+ if version >= 703
+ let &relativenumber = &number
+ endif
" Ensure we keep track of any extra columns even if we aren't resizing.
" This prevents confusion when number is set at startup.
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.
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