Fixed vim and zsh

This commit is contained in:
2018-04-05 13:06:54 +02:00
parent f9db886bd3
commit 0331f6518a
2009 changed files with 256303 additions and 0 deletions

View File

@ -0,0 +1,55 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
let s:buf_min_count = get(g:, 'airline#extensions#tabline#buffer_min_count', 0)
let s:tab_min_count = get(g:, 'airline#extensions#tabline#tab_min_count', 0)
function! airline#extensions#tabline#autoshow#off()
if exists('s:original_tabline')
let &tabline = s:original_tabline
let &showtabline = s:original_showtabline
endif
augroup airline_tabline_autoshow
autocmd!
augroup END
endfunction
function! airline#extensions#tabline#autoshow#on()
let [ s:original_tabline, s:original_showtabline ] = [ &tabline, &showtabline ]
augroup airline_tabline_autoshow
autocmd!
if s:buf_min_count <= 0 && s:tab_min_count <= 1
if &lines > 3
set showtabline=2
endif
else
if s:show_buffers == 1
autocmd BufEnter * call <sid>show_tabline(s:buf_min_count, len(airline#extensions#tabline#buflist#list()))
autocmd BufUnload * call <sid>show_tabline(s:buf_min_count, len(airline#extensions#tabline#buflist#list()) - 1)
else
autocmd TabEnter * call <sid>show_tabline(s:tab_min_count, tabpagenr('$'))
endif
endif
" Invalidate cache. This has to come after the BufUnload for
" s:show_buffers, to invalidate the cache for BufEnter.
autocmd BufLeave,BufAdd,BufUnload * call airline#extensions#tabline#buflist#invalidate()
augroup END
endfunction
function! s:show_tabline(min_count, total_count)
if a:total_count >= a:min_count
if &showtabline != 2 && &lines > 3
set showtabline=2
endif
else
if &showtabline != 0
set showtabline=0
endif
endif
endfunction

View File

@ -0,0 +1,251 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:buffer_idx_mode = get(g:, 'airline#extensions#tabline#buffer_idx_mode', 0)
let s:show_tab_type = get(g:, 'airline#extensions#tabline#show_tab_type', 1)
let s:buffers_label = get(g:, 'airline#extensions#tabline#buffers_label', 'buffers')
let s:spc = g:airline_symbols.space
let s:current_bufnr = -1
let s:current_modified = 0
let s:current_tabline = ''
let s:current_visible_buffers = []
let s:number_map = {
\ '0': '⁰',
\ '1': '¹',
\ '2': '²',
\ '3': '³',
\ '4': '⁴',
\ '5': '⁵',
\ '6': '⁶',
\ '7': '⁷',
\ '8': '⁸',
\ '9': '⁹'
\ }
let s:number_map = &encoding == 'utf-8'
\ ? get(g:, 'airline#extensions#tabline#buffer_idx_format', s:number_map)
\ : {}
function! airline#extensions#tabline#buffers#off()
augroup airline_tabline_buffers
autocmd!
augroup END
endfunction
function! airline#extensions#tabline#buffers#on()
augroup airline_tabline_buffers
autocmd!
autocmd BufDelete * call airline#extensions#tabline#buffers#invalidate()
autocmd User BufMRUChange call airline#extensions#tabline#buflist#invalidate()
autocmd User BufMRUChange call airline#extensions#tabline#buffers#invalidate()
augroup END
endfunction
function! airline#extensions#tabline#buffers#invalidate()
let s:current_bufnr = -1
endfunction
function! airline#extensions#tabline#buffers#get()
call <sid>map_keys()
let cur = bufnr('%')
if cur == s:current_bufnr
if !g:airline_detect_modified || getbufvar(cur, '&modified') == s:current_modified
return s:current_tabline
endif
endif
let l:index = 1
let b = airline#extensions#tabline#new_builder()
let tab_bufs = tabpagebuflist(tabpagenr())
for nr in s:get_visible_buffers()
if nr < 0
call b.add_raw('%#airline_tabhid#...')
continue
endif
let group = airline#extensions#tabline#group_of_bufnr(tab_bufs, nr)
if nr == cur
let s:current_modified = (group == 'airline_tabmod') ? 1 : 0
endif
" Neovim feature: Have clickable buffers
if has("tablineat")
call b.add_raw('%'.nr.'@airline#extensions#tabline#buffers#clickbuf@')
endif
if s:buffer_idx_mode
if len(s:number_map) > 0
call b.add_section(group, s:spc . get(s:number_map, l:index, '') . '%(%{airline#extensions#tabline#get_buffer_name('.nr.')}%)' . s:spc)
else
call b.add_section(group, '['.l:index.s:spc.'%(%{airline#extensions#tabline#get_buffer_name('.nr.')}%)'.']')
endif
let l:index = l:index + 1
else
call b.add_section(group, s:spc.'%(%{airline#extensions#tabline#get_buffer_name('.nr.')}%)'.s:spc)
endif
if has("tablineat")
call b.add_raw('%X')
endif
endfor
call b.add_section('airline_tabfill', '')
call b.split()
call b.add_section('airline_tabfill', '')
if s:show_tab_type
call b.add_section_spaced('airline_tabtype', s:buffers_label)
endif
if tabpagenr('$') > 1
call b.add_section_spaced('airline_tabmod', printf('%s %d/%d', "tab", tabpagenr(), tabpagenr('$')))
endif
let s:current_bufnr = cur
let s:current_tabline = b.build()
return s:current_tabline
endfunction
function! s:get_visible_buffers()
let buffers = airline#extensions#tabline#buflist#list()
let cur = bufnr('%')
let total_width = 0
let max_width = 0
for nr in buffers
let width = len(airline#extensions#tabline#get_buffer_name(nr)) + 4
let total_width += width
let max_width = max([max_width, width])
endfor
" only show current and surrounding buffers if there are too many buffers
let position = index(buffers, cur)
let vimwidth = &columns
if total_width > vimwidth && position > -1
let buf_count = len(buffers)
" determine how many buffers to show based on the longest buffer width,
" use one on the right side and put the rest on the left
let buf_max = vimwidth / max_width
let buf_right = 1
let buf_left = max([0, buf_max - buf_right])
let start = max([0, position - buf_left])
let end = min([buf_count, position + buf_right])
" fill up available space on the right
if position < buf_left
let end += (buf_left - position)
endif
" fill up available space on the left
if end > buf_count - 1 - buf_right
let start -= max([0, buf_right - (buf_count - 1 - position)])
endif
let buffers = eval('buffers[' . start . ':' . end . ']')
if start > 0
call insert(buffers, -1, 0)
endif
if end < buf_count - 1
call add(buffers, -1)
endif
endif
let s:current_visible_buffers = buffers
return buffers
endfunction
function! s:select_tab(buf_index)
" no-op when called in the NERDTree buffer
if exists('t:NERDTreeBufName') && bufname('%') == t:NERDTreeBufName
return
endif
let idx = a:buf_index
if s:current_visible_buffers[0] == -1
let idx = idx + 1
endif
let buf = get(s:current_visible_buffers, idx, 0)
if buf != 0
exec 'b!' . buf
endif
endfunction
function! s:jump_to_tab(offset)
let l = s:current_visible_buffers
let i = index(l, bufnr('%'))
if i > -1
exec 'b!' . l[float2nr(fmod(i + a:offset, len(l)))]
endif
endfunction
function! s:map_keys()
if s:buffer_idx_mode
noremap <silent> <Plug>AirlineSelectTab1 :call <SID>select_tab(0)<CR>
noremap <silent> <Plug>AirlineSelectTab2 :call <SID>select_tab(1)<CR>
noremap <silent> <Plug>AirlineSelectTab3 :call <SID>select_tab(2)<CR>
noremap <silent> <Plug>AirlineSelectTab4 :call <SID>select_tab(3)<CR>
noremap <silent> <Plug>AirlineSelectTab5 :call <SID>select_tab(4)<CR>
noremap <silent> <Plug>AirlineSelectTab6 :call <SID>select_tab(5)<CR>
noremap <silent> <Plug>AirlineSelectTab7 :call <SID>select_tab(6)<CR>
noremap <silent> <Plug>AirlineSelectTab8 :call <SID>select_tab(7)<CR>
noremap <silent> <Plug>AirlineSelectTab9 :call <SID>select_tab(8)<CR>
noremap <silent> <Plug>AirlineSelectPrevTab :<C-u>call <SID>jump_to_tab(-v:count1)<CR>
noremap <silent> <Plug>AirlineSelectNextTab :<C-u>call <SID>jump_to_tab(v:count1)<CR>
endif
endfunction
function! airline#extensions#tabline#buffers#clickbuf(minwid, clicks, button, modifiers) abort
" Clickable buffers
" works only in recent NeoVim with has('tablineat')
" single mouse button click without modifiers pressed
if a:clicks == 1 && a:modifiers !~# '[^ ]'
if a:button is# 'l'
" left button - switch to buffer
silent execute 'buffer' a:minwid
elseif a:button is# 'm'
" middle button - delete buffer
if get(g:, 'airline#extensions#tabline#middle_click_preserves_windows', 0) == 0
" just simply delete the clicked buffer. This will cause windows
" associated with the clicked buffer to be closed.
silent execute 'bdelete' a:minwid
else
" find windows displaying the clicked buffer and open an new
" buffer in them.
let current_window = bufwinnr("%")
let window_number = bufwinnr(a:minwid)
let last_window_visited = -1
" Set to 1 if the clicked buffer was open in any windows.
let buffer_in_window = 0
" Find the next window with the clicked buffer open. If bufwinnr()
" returns the same window number, this is because we clicked a new
" buffer, and then tried editing a new buffer. Vim won't create a
" new empty buffer for the same window, so we get the same window
" number from bufwinnr(). In this case we just give up and don't
" delete the buffer.
" This could be made cleaner if we could check if the clicked buffer
" is a new buffer, but I don't know if there is a way to do that.
while window_number != -1 && window_number != last_window_visited
let buffer_in_window = 1
silent execute window_number . 'wincmd w'
silent execute 'enew'
let last_window_visited = window_number
let window_number = bufwinnr(a:minwid)
endwhile
silent execute current_window . 'wincmd w'
if window_number != last_window_visited || buffer_in_window == 0
silent execute 'bdelete' a:minwid
endif
endif
endif
endif
endfunction

View File

@ -0,0 +1,44 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
function! airline#extensions#tabline#buflist#invalidate()
unlet! s:current_buffer_list
endfunction
function! airline#extensions#tabline#buflist#list()
if exists('s:current_buffer_list')
return s:current_buffer_list
endif
let excludes = get(g:, 'airline#extensions#tabline#excludes', [])
let exclude_preview = get(g:, 'airline#extensions#tabline#exclude_preview', 1)
let list = (exists('g:did_bufmru') && g:did_bufmru) ? BufMRUList() : range(1, bufnr("$"))
let buffers = []
" If this is too slow, we can switch to a different algorithm.
" Basically branch 535 already does it, but since it relies on
" BufAdd autocommand, I'd like to avoid this if possible.
for nr in list
if buflisted(nr)
" Do not add to the bufferlist, if either
" 1) buffername matches exclude pattern
" 2) buffer is a quickfix buffer
" 3) exclude preview windows (if 'bufhidden' == wipe
" and 'buftype' == nofile
if (!empty(excludes) && match(bufname(nr), join(excludes, '\|')) > -1) ||
\ (getbufvar(nr, 'current_syntax') == 'qf') ||
\ (exclude_preview && getbufvar(nr, '&bufhidden') == 'wipe'
\ && getbufvar(nr, '&buftype') == 'nofile')
continue
endif
call add(buffers, nr)
endif
endfor
let s:current_buffer_list = buffers
return buffers
endfunction

View File

@ -0,0 +1,150 @@
" MIT License. Copyright (c) 2016 Kevin Sapper
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:current_bufnr = -1
let s:current_tabnr = -1
let s:current_tabline = ''
let s:buffers_label = get(g:, 'airline#extensions#tabline#buffers_label', 'buffers')
let s:tabs_label = get(g:, 'airline#extensions#tabline#tabs_label', 'tabs')
let s:switch_buffers_and_tabs = get(g:, 'airline#extensions#tabline#switch_buffers_and_tabs', 0)
let s:show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
let s:show_tabs = get(g:, 'airline#extensions#tabline#show_tabs', 1)
function! airline#extensions#tabline#ctrlspace#off()
augroup airline_tabline_ctrlspace
autocmd!
augroup END
endfunction
function! airline#extensions#tabline#ctrlspace#on()
augroup airline_tabline_ctrlspace
autocmd!
autocmd BufDelete * call airline#extensions#tabline#ctrlspace#invalidate()
augroup END
endfunction
function! airline#extensions#tabline#ctrlspace#invalidate()
let s:current_bufnr = -1
let s:current_tabnr = -1
endfunction
function! airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, pos)
if a:pos == 0
let pos_extension = ''
else
let pos_extension = '_right'
endif
let s:buffer_list = ctrlspace#api#BufferList(a:cur_tab)
for buffer in s:buffer_list
if a:cur_buf == buffer.index
if buffer.modified
let group = 'airline_tabmod'.pos_extension
else
let group = 'airline_tabsel'.pos_extension
endif
else
if buffer.modified
let group = 'airline_tabmod_unsel'.pos_extension
elseif buffer.visible
let group = 'airline_tab'.pos_extension
else
let group = 'airline_tabhid'.pos_extension
endif
endif
let buf_name = '%(%{airline#extensions#tabline#get_buffer_name('.buffer.index.')}%)'
if has("tablineat")
let buf_name = '%'.buffer.index.'@airline#extensions#tabline#buffers#clickbuf@'.buf_name.'%X'
endif
call a:builder.add_section_spaced(group, buf_name)
endfor
endfunction
function! airline#extensions#tabline#ctrlspace#add_tab_section(builder, pos)
if a:pos == 0
let pos_extension = ''
else
let pos_extension = '_right'
endif
for tab in s:tab_list
if tab.current
if tab.modified
let group = 'airline_tabmod'.pos_extension
else
let group = 'airline_tabsel'.pos_extension
endif
else
if tab.modified
let group = 'airline_tabmod_unsel'.pos_extension
else
let group = 'airline_tabhid'.pos_extension
endif
endif
call a:builder.add_section_spaced(group, '%'.tab.index.'T'.tab.title.ctrlspace#api#TabBuffersNumber(tab.index).'%T')
endfor
endfunction
function! airline#extensions#tabline#ctrlspace#get()
let cur_buf = bufnr('%')
call airline#extensions#tabline#tabs#map_keys()
let s:tab_list = ctrlspace#api#TabList()
for tab in s:tab_list
if tab.current
let cur_tab = tab.index
endif
endfor
if cur_buf == s:current_bufnr && cur_tab == s:current_tabnr
return s:current_tabline
endif
let builder = airline#extensions#tabline#new_builder()
" Add left tabline content
if s:show_buffers == 0
call airline#extensions#tabline#ctrlspace#add_tab_section(builder, 0)
elseif s:show_tabs == 0
call airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, 0)
else
if s:switch_buffers_and_tabs == 0
call builder.add_section_spaced('airline_tabtype', s:buffers_label)
call airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, 0)
else
call builder.add_section_spaced('airline_tabtype', s:tabs_label)
call airline#extensions#tabline#ctrlspace#add_tab_section(builder, 0)
endif
endif
call builder.add_section('airline_tabfill', '')
call builder.split()
call builder.add_section('airline_tabfill', '')
" Add right tabline content
if s:show_buffers == 0
call builder.add_section_spaced('airline_tabtype', s:tabs_label)
elseif s:show_tabs == 0
call builder.add_section_spaced('airline_tabtype', s:buffers_label)
else
if s:switch_buffers_and_tabs == 0
call airline#extensions#tabline#ctrlspace#add_tab_section(builder, 1)
call builder.add_section_spaced('airline_tabtype', s:tabs_label)
else
call airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, 1)
call builder.add_section_spaced('airline_tabtype', s:buffers_label)
endif
endif
let s:current_bufnr = cur_buf
let s:current_tabnr = cur_tab
let s:current_tabline = builder.build()
return s:current_tabline
endfunction

View File

@ -0,0 +1,41 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:fnamecollapse = get(g:, 'airline#extensions#tabline#fnamecollapse', 1)
let s:fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0)
let s:buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ')
let s:buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0)
let s:buf_modified_symbol = g:airline_symbols.modified
function! airline#extensions#tabline#formatters#default#format(bufnr, buffers)
let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
let _ = ''
let name = bufname(a:bufnr)
if empty(name)
let _ .= '[No Name]'
else
if s:fnamecollapse
let _ .= substitute(fnamemodify(name, fmod), '\v\w\zs.{-}\ze(\\|/)', '', 'g')
else
let _ .= fnamemodify(name, fmod)
endif
if a:bufnr != bufnr('%') && s:fnametruncate && strlen(_) > s:fnametruncate
let _ = strpart(_, 0, s:fnametruncate)
endif
endif
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, _)
endfunction
function! airline#extensions#tabline#formatters#default#wrap_name(bufnr, buffer_name)
let _ = s:buf_nr_show ? printf(s:buf_nr_format, a:bufnr) : ''
let _ .= substitute(a:buffer_name, '\\', '/', 'g')
if getbufvar(a:bufnr, '&modified') == 1
let _ .= s:buf_modified_symbol
endif
return _
endfunction

View File

@ -0,0 +1,34 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
function! airline#extensions#tabline#formatters#unique_tail#format(bufnr, buffers)
let duplicates = {}
let tails = {}
let map = {}
for nr in a:buffers
let name = bufname(nr)
if empty(name)
let map[nr] = '[No Name]'
else
let tail = fnamemodify(name, ':s?/\+$??:t')
if has_key(tails, tail)
let duplicates[nr] = nr
endif
let tails[tail] = 1
let map[nr] = airline#extensions#tabline#formatters#default#wrap_name(nr, tail)
endif
endfor
for nr in values(duplicates)
let map[nr] = airline#extensions#tabline#formatters#default#wrap_name(nr, fnamemodify(bufname(nr), ':p:.'))
endfor
if has_key(map, a:bufnr)
return map[a:bufnr]
endif
" if we get here, the buffer list isn't in sync with the selected buffer yet, fall back to the default
return airline#extensions#tabline#formatters#default#format(a:bufnr, a:buffers)
endfunction

View File

@ -0,0 +1,91 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:skip_symbol = '…'
function! airline#extensions#tabline#formatters#unique_tail_improved#format(bufnr, buffers)
if len(a:buffers) <= 1 " don't need to compare bufnames if has less than one buffer opened
return airline#extensions#tabline#formatters#default#format(a:bufnr, a:buffers)
endif
let curbuf_tail = fnamemodify(bufname(a:bufnr), ':t')
let do_deduplicate = 0
let path_tokens = {}
for nr in a:buffers
let name = bufname(nr)
if !empty(name) && nr != a:bufnr && fnamemodify(name, ':t') == curbuf_tail " only perform actions if curbuf_tail isn't unique
let do_deduplicate = 1
let tokens = reverse(split(substitute(fnamemodify(name, ':p:h'), '\\', '/', 'g'), '/'))
let token_index = 0
for token in tokens
if token == '' | continue | endif
if token == '.' | break | endif
if !has_key(path_tokens, token_index)
let path_tokens[token_index] = {}
endif
let path_tokens[token_index][token] = 1
let token_index += 1
endfor
endif
endfor
if do_deduplicate == 1
let path = []
let token_index = 0
for token in reverse(split(substitute(fnamemodify(bufname(a:bufnr), ':p:h'), '\\', '/', 'g'), '/'))
if token == '.' | break | endif
let duplicated = 0
let uniq = 1
let single = 1
if has_key(path_tokens, token_index)
let duplicated = 1
if len(keys(path_tokens[token_index])) > 1 | let single = 0 | endif
if has_key(path_tokens[token_index], token) | let uniq = 0 | endif
endif
call insert(path, {'token': token, 'duplicated': duplicated, 'uniq': uniq, 'single': single})
let token_index += 1
endfor
let buf_name = [curbuf_tail]
let has_uniq = 0
let has_skipped = 0
for token1 in reverse(path)
if !token1['duplicated'] && len(buf_name) > 1
call insert(buf_name, s:skip_symbol)
let has_skipped = 0
break
endif
if has_uniq == 1
call insert(buf_name, s:skip_symbol)
let has_skipped = 0
break
endif
if token1['uniq'] == 0 && token1['single'] == 1
let has_skipped = 1
else
if has_skipped == 1
call insert(buf_name, s:skip_symbol)
let has_skipped = 0
endif
call insert(buf_name, token1['token'])
endif
if token1['uniq'] == 1
let has_uniq = 1
endif
endfor
if has_skipped == 1
call insert(buf_name, s:skip_symbol)
endif
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, join(buf_name, '/'))
else
return airline#extensions#tabline#formatters#default#format(a:bufnr, a:buffers)
endif
endfunction

View File

@ -0,0 +1,112 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:show_close_button = get(g:, 'airline#extensions#tabline#show_close_button', 1)
let s:show_tab_type = get(g:, 'airline#extensions#tabline#show_tab_type', 1)
let s:show_tab_nr = get(g:, 'airline#extensions#tabline#show_tab_nr', 1)
let s:tab_nr_type = get(g:, 'airline#extensions#tabline#tab_nr_type', 0)
let s:close_symbol = get(g:, 'airline#extensions#tabline#close_symbol', 'X')
let s:tabs_label = get(g:, 'airline#extensions#tabline#tabs_label', 'tabs')
let s:show_splits = get(g:, 'airline#extensions#tabline#show_splits', 1)
let s:spc = g:airline_symbols.space
let s:current_bufnr = -1
let s:current_tabnr = -1
let s:current_modified = 0
function! airline#extensions#tabline#tabs#off()
augroup airline_tabline_tabs
autocmd!
augroup END
endfunction
function! airline#extensions#tabline#tabs#on()
augroup airline_tabline_tabs
autocmd!
autocmd BufDelete * call airline#extensions#tabline#tabs#invalidate()
augroup END
endfunction
function! airline#extensions#tabline#tabs#invalidate()
let s:current_bufnr = -1
endfunction
function! airline#extensions#tabline#tabs#get()
let curbuf = bufnr('%')
let curtab = tabpagenr()
call airline#extensions#tabline#tabs#map_keys()
if curbuf == s:current_bufnr && curtab == s:current_tabnr
if !g:airline_detect_modified || getbufvar(curbuf, '&modified') == s:current_modified
return s:current_tabline
endif
endif
let b = airline#extensions#tabline#new_builder()
for i in range(1, tabpagenr('$'))
if i == curtab
let group = 'airline_tabsel'
if g:airline_detect_modified
for bi in tabpagebuflist(i)
if getbufvar(bi, '&modified')
let group = 'airline_tabmod'
endif
endfor
endif
let s:current_modified = (group == 'airline_tabmod') ? 1 : 0
else
let group = 'airline_tab'
endif
let val = '%('
if s:show_tab_nr
if s:tab_nr_type == 0
let val .= (g:airline_symbols.space).'%{len(tabpagebuflist('.i.'))}'
elseif s:tab_nr_type == 1
let val .= (g:airline_symbols.space).i
else "== 2
let val .= (g:airline_symbols.space).i.'.%{len(tabpagebuflist('.i.'))}'
endif
endif
call b.add_section(group, val.'%'.i.'T %{airline#extensions#tabline#title('.i.')} %)')
endfor
call b.add_section('airline_tabfill', '')
call b.split()
call b.add_section('airline_tabfill', '')
if s:show_close_button
call b.add_section('airline_tab_right', ' %999X'.s:close_symbol.' ')
endif
if s:show_splits == 1
let buffers = tabpagebuflist(curtab)
for nr in buffers
let group = airline#extensions#tabline#group_of_bufnr(buffers, nr) . "_right"
call b.add_section_spaced(group, '%(%{airline#extensions#tabline#get_buffer_name('.nr.')}%)')
endfor
elseif s:show_tab_type == 1
call b.add_section_spaced('airline_tabtype', s:tabs_label)
endif
let s:current_bufnr = curbuf
let s:current_tabnr = curtab
let s:current_tabline = b.build()
return s:current_tabline
endfunction
function! airline#extensions#tabline#tabs#map_keys()
noremap <silent> <Plug>AirlineSelectTab1 :1tabn<CR>
noremap <silent> <Plug>AirlineSelectTab2 :2tabn<CR>
noremap <silent> <Plug>AirlineSelectTab3 :3tabn<CR>
noremap <silent> <Plug>AirlineSelectTab4 :4tabn<CR>
noremap <silent> <Plug>AirlineSelectTab5 :5tabn<CR>
noremap <silent> <Plug>AirlineSelectTab6 :6tabn<CR>
noremap <silent> <Plug>AirlineSelectTab7 :7tabn<CR>
noremap <silent> <Plug>AirlineSelectTab8 :8tabn<CR>
noremap <silent> <Plug>AirlineSelectTab9 :9tabn<CR>
noremap <silent> <Plug>AirlineSelectPrevTab gT
" tabn {count} goes to count tab does not go {count} tab pages forward!
noremap <silent> <Plug>AirlineSelectNextTab :<C-U>exe repeat(':tabn\|', v:count1)<cr>
endfunction