31 Commits
v0.7 ... 535

Author SHA1 Message Date
Bailey Ling
a4d69d53b5 cache open buffers into a dictionary and loop over the keys 2015-02-19 07:22:47 -05:00
Bailey Ling
63e309130a account for possibility of uninitialized variable 2015-02-19 07:09:24 -05:00
Bailey Ling
7394642293 extract buffers view mode into its own file 2015-02-18 21:56:16 -05:00
Bailey Ling
987306dcaf extract tabs view mode to its own file 2015-02-18 21:56:15 -05:00
Bailey Ling
6f9d92df7c extract autoshow logic to its own file 2015-02-18 21:56:15 -05:00
Bailey Ling
8693a525b9 extract buffer listing to its own file 2015-02-18 21:56:15 -05:00
Bailey Ling
3add7b265a Merge pull request #705 from ClaudiaJ/master
Add support for 24-bit colors with +termtruecolor flag
2015-02-18 21:55:09 -05:00
Bailey Ling
065b141033 Merge pull request #703 from kmARC11/master
Base16 color fixes to resemble gui
2015-02-18 21:53:28 -05:00
Claudia Hardman
ac58bc9954 Add support for 24-bit colors with +termtruecolor flag 2015-02-16 12:00:52 -05:00
Bailey Ling
ca925efdbf move formatters into their own namespace 2015-02-13 21:50:18 -05:00
Bailey Ling
1ca6ffb6d0 happy 2015
resolves #692.
2015-02-13 21:47:43 -05:00
Bailey Ling
6efde428c6 turn on deprecation check 2015-02-13 21:47:43 -05:00
Mark Korondi
f9b5611ac8 Unnecessary newline removed 2015-02-14 00:43:01 +01:00
Mark Korondi
f820a7eb95 Base16 color fixes to resemble gui 2015-02-14 00:37:17 +01:00
Bailey Ling
1e35ad5d77 Merge pull request #701 from blueyed/fix-get_buffer_list-cache-2
Fix get_buffer_list cache 2
2015-02-11 07:27:27 -05:00
Daniel Hahler
98c2dbd04e tabline: fix cache invalidation for show_buffers=1 with :bd
Ref: https://github.com/bling/vim-airline/pull/700#issuecomment-73798679
2015-02-11 02:48:25 +01:00
Bailey Ling
b6accd91c8 Merge pull request #700 from blueyed/fix-get_buffer_list-cache
Fix get_buffer_list cache regression
2015-02-10 09:15:54 -05:00
Daniel Hahler
3c1295bb71 tabline: fix s:current_buffer_list invalidation
Use `s:current_buffer_list` always in `s:get_buffer_list()`, and
invalidate it via BufAdd and BufUnload.

Fixes regression from ce58af7191 (commitcomment-9647487).
2015-02-09 17:44:13 +01:00
Bailey Ling
925147baef add :Helptags to readme for pathogen. resolves #699. 2015-02-07 12:07:31 -05:00
Bailey Ling
7bc939bee9 Merge pull request #698 from blueyed/fix-cache-with-get_buffer_name
Fix get_buffer_list being called always via get()
2015-02-07 12:03:14 -05:00
Daniel Hahler
ce58af7191 Fix get_buffer_list being called always via get()
Vim's `get()` calls the expression for `{default}` always, not only if
the default is going to be used!

This caused `airline#extensions#tabline#get_buffer_name` to not use the
cached value.

Fixes https://github.com/bling/vim-airline/issues/697.
2015-02-07 15:38:02 +01:00
Bailey Ling
446397e006 Merge pull request #688 from changyuheng/pr-column-number
Replace column number with virtual column number
2015-01-31 13:21:26 -05:00
Bailey Ling
462ee313e7 use util getwinvar helper function 2015-01-31 12:38:46 -05:00
Bailey Ling
b55b526c65 Merge pull request #689 from chrisbra/disable
selectively disable airline for selected windows
2015-01-31 12:36:54 -05:00
Christian Brabandt
3acea37fdc selectively disable airline for selected windows
(make it work with Vim 7.3)
2015-01-23 22:45:44 +01:00
Chang Yu-heng
6d7996ff1b Replace column number with virtual column number 2015-01-19 00:04:26 +08:00
Bailey Ling
13ee9f456a address syntax errors
resolves #683
2015-01-03 19:38:17 -05:00
Bailey Ling
1fd9886219 Merge pull request #680 from psychomario/show-tabs
Added tabline#show_tabs to disable tab bar
2015-01-01 10:18:48 -05:00
PsychoMario
527e6661e6 added tabline#show_tabs to disable tab bar 2014-12-26 21:48:06 +00:00
Bailey Ling
6387268f13 Merge pull request #673 from lynnard/master
fixed bug with excludes for buffers
2014-12-23 16:40:19 -08:00
Lingnan Dai
dd587883eb fixed bug with excludes for buffers 2014-12-18 12:46:35 +00:00
45 changed files with 456 additions and 342 deletions

View File

@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (C) 2013-2014 Bailey Ling
Copyright (C) 2013-2015 Bailey Ling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the "Software"),

View File

@@ -118,6 +118,7 @@ This plugin follows the standard runtime path structure, and as such it can be i
* [Pathogen][11]
* `git clone https://github.com/bling/vim-airline ~/.vim/bundle/vim-airline`
* Remember to run `:Helptags` to generate help tags
* [NeoBundle][12]
* `NeoBundle 'bling/vim-airline'`
* [Vundle][13]
@@ -177,7 +178,7 @@ Contributions and pull requests are welcome. Please take note of the following
# License
MIT License. Copyright (c) 2013-2014 Bailey Ling.
MIT License. Copyright (c) 2013-2015 Bailey Ling.
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/bling/vim-airline/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let g:airline_statusline_funcrefs = get(g:, 'airline_statusline_funcrefs', [])
@@ -89,6 +89,9 @@ endfunction
function! airline#update_statusline()
for nr in filter(range(1, winnr('$')), 'v:val != winnr()')
if airline#util#getwinvar(nr, 'airline_disabled', 0)
continue
endif
call setwinvar(nr, 'airline_active', 0)
let context = { 'winnr': nr, 'active': 0, 'bufnr': winbufnr(nr) }
call s:invoke_funcrefs(context, s:inactive_funcrefs)

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:prototype = {}
@@ -77,7 +77,7 @@ function! s:should_change_group(group1, group2)
endif
let color1 = airline#highlighter#get_highlight(a:group1)
let color2 = airline#highlighter#get_highlight(a:group2)
if has('gui_running')
if has('gui_running') || (has("termtruecolor") && &guicolors == 1)
return color1[1] != color2[1] || color1[0] != color2[0]
else
return color1[3] != color2[3] || color1[2] != color2[2]

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! airline#debug#profile1()

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! airline#deprecation#check()

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:ext = {}

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:has_fugitive = exists('*fugitive#head')
@@ -107,6 +107,7 @@ function! s:check_in_path()
if match(root, pattern) >= 0
let root = substitute(root, pattern, '', '')
endif
endif
endif
let b:airline_file_in_root = stridx(bufferpath, root) > -1

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists('*bufferline#get_status_string')

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'command_t_loaded', 0)

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_csv', 0) && !exists(':Table')

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_ctrlp', 0)

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:section_truncate_width = get(g:, 'airline#extensions#default#section_truncate_width', {

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':ProjectCreate')

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
" we don't actually want this loaded :P

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_signify', 0) && !get(g:, 'loaded_gitgutter', 0) && !get(g:, 'loaded_changes', 0)

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':NetrwSettings')

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_nrrw_rgn', 0)

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':PromptlineSnapshot')

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let g:airline#extensions#quickfix#quickfix_text = 'Quickfix'

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':SyntasticCheck')

View File

@@ -1,33 +1,9 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:formatter = get(g:, 'airline#extensions#tabline#formatter', 'default')
let s:excludes = get(g:, 'airline#extensions#tabline#excludes', [])
let s:tab_nr_type = get(g:, 'airline#extensions#tabline#tab_nr_type', 0)
let s:show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
let s:show_tab_nr = get(g:, 'airline#extensions#tabline#show_tab_nr', 1)
let s:show_tab_type = get(g:, 'airline#extensions#tabline#show_tab_type', 1)
let s:show_close_button = get(g:, 'airline#extensions#tabline#show_close_button', 1)
let s:close_symbol = get(g:, 'airline#extensions#tabline#close_symbol', 'X')
let s:buffer_idx_mode = get(g:, 'airline#extensions#tabline#buffer_idx_mode', 0)
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)
let s:spc = g:airline_symbols.space
let s:number_map = &encoding == 'utf-8'
\ ? {
\ '0': '⁰',
\ '1': '¹',
\ '2': '²',
\ '3': '³',
\ '4': '⁴',
\ '5': '⁵',
\ '6': '⁶',
\ '7': '⁷',
\ '8': '⁸',
\ '9': '⁹'
\ }
\ : {}
let s:show_tabs = get(g:, 'airline#extensions#tabline#show_tabs', 1)
function! airline#extensions#tabline#init(ext)
if has('gui_running')
@@ -36,39 +12,23 @@ function! airline#extensions#tabline#init(ext)
autocmd User AirlineToggledOn call s:toggle_on()
autocmd User AirlineToggledOff call s:toggle_off()
autocmd BufDelete * let s:current_bufnr = -1
call s:toggle_on()
call a:ext.add_theme_func('airline#extensions#tabline#load_theme')
if s:buffer_idx_mode
call s:define_buffer_idx_mode_mappings()
endif
endfunction
function! s:toggle_off()
if exists('s:original_tabline')
let &tabline = s:original_tabline
let &showtabline = s:original_showtabline
endif
call airline#extensions#tabline#autoshow#off()
call airline#extensions#tabline#tabs#off()
call airline#extensions#tabline#buffers#off()
endfunction
function! s:toggle_on()
let [ s:original_tabline, s:original_showtabline ] = [ &tabline, &showtabline ]
call airline#extensions#tabline#autoshow#on()
call airline#extensions#tabline#tabs#on()
call airline#extensions#tabline#buffers#on()
set tabline=%!airline#extensions#tabline#get()
if s:buf_min_count <= 0 && s:tab_min_count <= 1
set showtabline=2
else
augroup airline_tabline
autocmd!
if s:show_buffers == 1
autocmd BufEnter * call <sid>show_tabline(s:buf_min_count, len(s:get_buffer_list()))
autocmd BufUnload * call <sid>show_tabline(s:buf_min_count, len(s:get_buffer_list()) - 1)
else
autocmd TabEnter * call <sid>show_tabline(s:tab_min_count, tabpagenr('$'))
endif
augroup END
endif
endfunction
function! airline#extensions#tabline#load_theme(palette)
@@ -95,28 +55,19 @@ function! airline#extensions#tabline#load_theme(palette)
call airline#highlighter#exec('airline_tabhid', l:tabhid)
endfunction
function! s:show_tabline(min_count, total_count)
if a:total_count >= a:min_count
if &showtabline != 2
set showtabline=2
endif
else
if &showtabline != 0
set showtabline=0
endif
endif
endfunction
let s:current_tabcnt = -1
function! airline#extensions#tabline#get()
let curtabcnt = tabpagenr('$')
if curtabcnt != s:current_tabcnt
let s:current_tabcnt = curtabcnt
let s:current_bufnr = -1 " force a refresh...
call airline#extensions#tabline#tabs#invalidate()
call airline#extensions#tabline#buffers#invalidate()
endif
if s:show_buffers && curtabcnt == 1
return s:get_buffers()
if s:show_buffers && curtabcnt == 1 || !s:show_tabs
return airline#extensions#tabline#buffers#get()
else
return s:get_tabs()
return airline#extensions#tabline#tabs#get()
endif
endfunction
@@ -127,174 +78,10 @@ function! airline#extensions#tabline#title(n)
endfunction
function! airline#extensions#tabline#get_buffer_name(nr)
return airline#extensions#tabline#{s:formatter}#format(a:nr, get(s:, 'current_buffer_list', s:get_buffer_list()))
return airline#extensions#tabline#formatters#{s:formatter}#format(a:nr, airline#extensions#tabline#buflist#list())
endfunction
function! s:get_buffer_list()
let buffers = []
let cur = bufnr('%')
for nr in range(1, bufnr('$'))
if buflisted(nr) && bufexists(nr)
for ex in s:excludes
if match(bufname(nr), ex)
continue
endif
endfor
if getbufvar(nr, 'current_syntax') == 'qf'
continue
endif
call add(buffers, nr)
endif
endfor
let s:current_buffer_list = buffers
return buffers
endfunction
function! s:get_visible_buffers()
let buffers = s:get_buffer_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 g:current_visible_buffers = buffers
return buffers
endfunction
let s:current_bufnr = -1
let s:current_tabnr = -1
let s:current_tabcnt = -1
let s:current_tabline = ''
let s:current_modified = 0
function! s:get_buffers()
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 = s: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
if cur == nr
if g:airline_detect_modified && getbufvar(nr, '&modified')
let group = 'airline_tabmod'
else
let group = 'airline_tabsel'
endif
let s:current_modified = (group == 'airline_tabmod') ? 1 : 0
else
if g:airline_detect_modified && getbufvar(nr, '&modified')
let group = 'airline_tabmod_unsel'
elseif index(tab_bufs, nr) > -1
let group = 'airline_tab'
else
let group = 'airline_tabhid'
endif
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
endfor
call b.add_section('airline_tabfill', '')
call b.split()
call b.add_section('airline_tabfill', '')
call b.add_section('airline_tabtype', ' buffers ')
let s:current_bufnr = cur
let s:current_tabline = b.build()
return s:current_tabline
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 g:current_visible_buffers[0] == -1
let idx = idx + 1
endif
let buf = get(g:current_visible_buffers, idx, 0)
if buf != 0
exec 'b!' . buf
endif
endfunction
function! s:define_buffer_idx_mode_mappings()
noremap <unique> <Plug>AirlineSelectTab1 :call <SID>select_tab(0)<CR>
noremap <unique> <Plug>AirlineSelectTab2 :call <SID>select_tab(1)<CR>
noremap <unique> <Plug>AirlineSelectTab3 :call <SID>select_tab(2)<CR>
noremap <unique> <Plug>AirlineSelectTab4 :call <SID>select_tab(3)<CR>
noremap <unique> <Plug>AirlineSelectTab5 :call <SID>select_tab(4)<CR>
noremap <unique> <Plug>AirlineSelectTab6 :call <SID>select_tab(5)<CR>
noremap <unique> <Plug>AirlineSelectTab7 :call <SID>select_tab(6)<CR>
noremap <unique> <Plug>AirlineSelectTab8 :call <SID>select_tab(7)<CR>
noremap <unique> <Plug>AirlineSelectTab9 :call <SID>select_tab(8)<CR>
endfunction
function! s:new_builder()
function! airline#extensions#tabline#new_builder()
let builder_context = {
\ 'active' : 1,
\ 'right_sep' : get(g:, 'airline#extensions#tabline#right_sep' , g:airline_right_sep),
@@ -310,54 +97,3 @@ function! s:new_builder()
return airline#builder#new(builder_context)
endfunction
function! s:get_tabs()
let curbuf = bufnr('%')
let curtab = tabpagenr()
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 = s: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 .= ' %{len(tabpagebuflist('.i.'))}'
else
let val .= (g:airline_symbols.space).i
endif
endif
call b.add_section(group, val.'%'.i.'T %{airline#extensions#tabline#title('.i.')} %)')
endfor
call b.add_raw('%T')
call b.add_section('airline_tabfill', '')
call b.split()
if s:show_close_button
call b.add_section('airline_tab', ' %999X'.s:close_symbol.' ')
endif
if s:show_tab_type
call b.add_section('airline_tabtype', ' tabs ')
endif
let s:current_bufnr = curbuf
let s:current_tabnr = curtab
let s:current_tabline = b.build()
return s:current_tabline
endfunction

View File

@@ -0,0 +1,51 @@
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
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
set showtabline=2
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 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
set showtabline=2
endif
else
if &showtabline != 0
set showtabline=0
endif
endif
endfunction

View File

@@ -0,0 +1,186 @@
" MIT License. Copyright (c) 2013-2015 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: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 = &encoding == 'utf-8'
\ ? {
\ '0': '⁰',
\ '1': '¹',
\ '2': '²',
\ '3': '³',
\ '4': '⁴',
\ '5': '⁵',
\ '6': '⁶',
\ '7': '⁷',
\ '8': '⁸',
\ '9': '⁹'
\ }
\ : {}
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()
augroup END
if s:buffer_idx_mode
call s:define_buffer_idx_mode_mappings()
endif
endfunction
function! airline#extensions#tabline#buffers#invalidate()
let s:current_bufnr = -1
endfunction
function! airline#extensions#tabline#buffers#get()
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
if cur == nr
if g:airline_detect_modified && getbufvar(nr, '&modified')
let group = 'airline_tabmod'
else
let group = 'airline_tabsel'
endif
let s:current_modified = (group == 'airline_tabmod') ? 1 : 0
else
if g:airline_detect_modified && getbufvar(nr, '&modified')
let group = 'airline_tabmod_unsel'
elseif index(tab_bufs, nr) > -1
let group = 'airline_tab'
else
let group = 'airline_tabhid'
endif
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
endfor
call b.add_section('airline_tabfill', '')
call b.split()
call b.add_section('airline_tabfill', '')
call b.add_section('airline_tabtype', ' buffers ')
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:define_buffer_idx_mode_mappings()
noremap! <unique> <Plug>AirlineSelectTab1 :call <SID>select_tab(0)<CR>
noremap! <unique> <Plug>AirlineSelectTab2 :call <SID>select_tab(1)<CR>
noremap! <unique> <Plug>AirlineSelectTab3 :call <SID>select_tab(2)<CR>
noremap! <unique> <Plug>AirlineSelectTab4 :call <SID>select_tab(3)<CR>
noremap! <unique> <Plug>AirlineSelectTab5 :call <SID>select_tab(4)<CR>
noremap! <unique> <Plug>AirlineSelectTab6 :call <SID>select_tab(5)<CR>
noremap! <unique> <Plug>AirlineSelectTab7 :call <SID>select_tab(6)<CR>
noremap! <unique> <Plug>AirlineSelectTab8 :call <SID>select_tab(7)<CR>
noremap! <unique> <Plug>AirlineSelectTab9 :call <SID>select_tab(8)<CR>
endfunction

View File

@@ -0,0 +1,46 @@
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:excludes = get(g:, 'airline#extensions#tabline#excludes', [])
let s:buffers = {}
for nr in range(1, bufnr('$'))
let s:buffers[nr] = 1
endfor
autocmd BufAdd * let s:buffers[expand('<abuf>')] = 1
autocmd BufDelete * let nr = expand('<abuf>') | if has_key(s:buffers, nr) | unlet s:buffers[nr] | endif
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 buffers = []
for key in keys(s:buffers)
let nr = str2nr(key)
if buflisted(nr) && bufexists(nr)
let toadd = 1
for ex in s:excludes
if match(bufname(nr), ex) >= 0
let toadd = 0
break
endif
endfor
if getbufvar(nr, 'current_syntax') == 'qf'
let toadd = 0
endif
if toadd
call add(buffers, nr)
endif
endif
endfor
let s:current_buffer_list = buffers
return buffers
endfunction

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
@@ -7,7 +7,7 @@ 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#default#format(bufnr, buffers)
function! airline#extensions#tabline#formatters#default#format(bufnr, buffers)
let _ = ''
let name = bufname(a:bufnr)
@@ -21,10 +21,10 @@ function! airline#extensions#tabline#default#format(bufnr, buffers)
endif
endif
return airline#extensions#tabline#default#wrap_name(a:bufnr, _)
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, _)
endfunction
function! airline#extensions#tabline#default#wrap_name(bufnr, buffer_name)
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')

View File

@@ -1,7 +1,7 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! airline#extensions#tabline#unique_tail#format(bufnr, buffers)
function! airline#extensions#tabline#formatters#unique_tail#format(bufnr, buffers)
let duplicates = {}
let tails = {}
let map = {}
@@ -15,12 +15,12 @@ function! airline#extensions#tabline#unique_tail#format(bufnr, buffers)
let duplicates[nr] = nr
endif
let tails[tail] = 1
let map[nr] = airline#extensions#tabline#default#wrap_name(nr, tail)
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#default#wrap_name(nr, fnamemodify(bufname(nr), ':p:.'))
let map[nr] = airline#extensions#tabline#formatters#default#wrap_name(nr, fnamemodify(bufname(nr), ':p:.'))
endfor
return map[a:bufnr]

View File

@@ -1,11 +1,13 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:skip_symbol = '…'
function! airline#extensions#tabline#unique_tail_improved#format(bufnr, buffers)
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#default#format(a:bufnr, a:buffers)
return airline#extensions#tabline#formatters#default#format(a:bufnr, a:buffers)
endif
let curbuf_tail = fnamemodify(bufname(a:bufnr), ':t')
@@ -82,8 +84,8 @@ function! airline#extensions#tabline#unique_tail_improved#format(bufnr, buffers)
call insert(buf_name, s:skip_symbol)
endif
return airline#extensions#tabline#default#wrap_name(a:bufnr, join(buf_name, '/'))
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, join(buf_name, '/'))
else
return airline#extensions#tabline#default#format(a:bufnr, a:buffers)
return airline#extensions#tabline#formatters#default#format(a:bufnr, a:buffers)
endif
endfunction

View File

@@ -0,0 +1,80 @@
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
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: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:close_symbol = get(g:, 'airline#extensions#tabline#close_symbol', 'X')
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()
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 .= ' %{len(tabpagebuflist('.i.'))}'
else
let val .= (g:airline_symbols.space).i
endif
endif
call b.add_section(group, val.'%'.i.'T %{airline#extensions#tabline#title('.i.')} %)')
endfor
call b.add_raw('%T')
call b.add_section('airline_tabfill', '')
call b.split()
if s:show_close_button
call b.add_section('airline_tab', ' %999X'.s:close_symbol.' ')
endif
if s:show_tab_type
call b.add_section('airline_tabtype', ' tabs ')
endif
let s:current_bufnr = curbuf
let s:current_tabnr = curtab
let s:current_tabline = b.build()
return s:current_tabline
endfunction

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':TagbarToggle')

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':Tmuxline')

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':UndotreeToggle')

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_unite', 0)

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !isdirectory($VIRTUAL_ENV)

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
" http://got-ravings.blogspot.com/2008/10/vim-pr0n-statusline-whitespace-flags.html
@@ -67,7 +67,7 @@ function! airline#extensions#whitespace#check()
endif
endif
return b:airline_whitespace_check
endfunction!
endfunction
function! airline#extensions#whitespace#toggle()
if s:enabled

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:is_win32term = (has('win32') || has('win64')) && !has('gui_running')
@@ -16,13 +16,13 @@ endfunction
function! s:get_syn(group, what)
" need to pass in mode, known to break on 7.3.547
let mode = has('gui_running') ? 'gui' : 'cterm'
let mode = has('gui_running') || (has("termtruecolor") && &guicolors == 1) ? 'gui' : 'cterm'
let color = synIDattr(synIDtrans(hlID(a:group)), a:what, mode)
if empty(color) || color == -1
let color = synIDattr(synIDtrans(hlID('Normal')), a:what, mode)
endif
if empty(color) || color == -1
if has('gui_running')
if has('gui_running') || (has("termtruecolor") && &guicolors == 1)
let color = a:what ==# 'fg' ? '#000000' : '#FFFFFF'
else
let color = a:what ==# 'fg' ? 0 : 1
@@ -34,7 +34,7 @@ endfunction
function! s:get_array(fg, bg, opts)
let fg = a:fg
let bg = a:bg
return has('gui_running')
return has('gui_running') || (has("termtruecolor") && &guicolors == 1)
\ ? [ fg, bg, '', '', join(a:opts, ',') ]
\ : [ '', '', fg, bg, join(a:opts, ',') ]
endfunction
@@ -42,7 +42,7 @@ endfunction
function! airline#highlighter#get_highlight(group, ...)
let fg = s:get_syn(a:group, 'fg')
let bg = s:get_syn(a:group, 'bg')
let reverse = has('gui_running')
let reverse = has('gui_running') || (has("termtruecolor") && &guicolors == 1)
\ ? synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'gui')
\ : synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'cterm')
\|| synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'term')

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! s:check_defined(variable, default)
@@ -105,7 +105,7 @@ function! airline#init#sections()
let g:airline_section_y = airline#section#create_right(['ffenc'])
endif
if !exists('g:airline_section_z')
let g:airline_section_z = airline#section#create(['windowswap', '%3p%%'.spc, 'linenr', ':%3c '])
let g:airline_section_z = airline#section#create(['windowswap', '%3p%%'.spc, 'linenr', ':%3v '])
endif
if !exists('g:airline_section_warning')
let g:airline_section_warning = airline#section#create(['syntastic', 'eclim', 'whitespace'])

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:parts = {}

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
call airline#init#bootstrap()

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
" generates a dictionary which defines the colors for each highlight group

View File

@@ -69,7 +69,7 @@ else
\ }
let s:N1 = airline#themes#get_highlight2(['DiffText', 'bg'], ['DiffText', 'fg'], 'bold')
let s:N2 = airline#themes#get_highlight('Visual')
let s:N2 = airline#themes#get_highlight2(['Visual', 'fg'], ['Visual', 'bg'])
let s:N3 = airline#themes#get_highlight('CursorLine')
let g:airline#themes#base16#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
@@ -78,19 +78,19 @@ else
\ 'statusline': [ group[0], '', group[2], '', '' ]
\ }
let s:I1 = airline#themes#get_highlight2(['DiffAdded', 'bg'], ['DiffAdded', 'fg'], 'bold')
let s:I1 = airline#themes#get_highlight2(['DiffText', 'bg'], ['DiffAdded', 'fg'], 'bold')
let s:I2 = airline#themes#get_highlight2(['DiffAdded', 'fg'], ['Normal', 'bg'])
let s:I3 = s:N3
let g:airline#themes#base16#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#base16#palette.insert_modified = g:airline#themes#base16#palette.normal_modified
let s:R1 = airline#themes#get_highlight2(['WarningMsg', 'bg'], ['WarningMsg', 'fg'], 'bold')
let s:R1 = airline#themes#get_highlight2(['DiffText', 'bg'], ['WarningMsg', 'fg'], 'bold')
let s:R2 = s:N2
let s:R3 = s:N3
let g:airline#themes#base16#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)
let g:airline#themes#base16#palette.replace_modified = g:airline#themes#base16#palette.normal_modified
let s:V1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Constant', 'fg'], 'bold')
let s:V1 = airline#themes#get_highlight2(['DiffText', 'bg'], ['Constant', 'fg'], 'bold')
let s:V2 = airline#themes#get_highlight2(['Constant', 'fg'], ['Normal', 'bg'])
let s:V3 = s:N3
let g:airline#themes#base16#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
call airline#init#bootstrap()

View File

@@ -126,6 +126,11 @@ values):
heavily) >
let g:airline_exclude_preview = 0
<
* disable the Airline customization for selective windows (this is a
window-local variable so you can disable it for only some windows) >
let w:airline_disabled = 1
<
==============================================================================
COMMANDS *airline-commands*
@@ -391,6 +396,9 @@ eclim <https://eclim.org>
* enable/disable displaying buffers with a single tab. >
let g:airline#extensions#tabline#show_buffers = 1
<
* enable/disable displaying tabs, regardless of number. >
let g:airline#extensions#tabline#show_tabs = 1
<
* configure filename match rules to exclude from the tabline. >
let g:airline#extensions#tabline#excludes = []
<
@@ -787,7 +795,7 @@ Contributions and pull requests are welcome.
==============================================================================
LICENSE *airline-license*
MIT License. Copyright © 2013-2014 Bailey Ling.
MIT License. Copyright © 2013-2015 Bailey Ling.
vim:tw=78:ts=8:ft=help:norl:

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013-2014 Bailey Ling.
" MIT License. Copyright (c) 2013-2015 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if &cp || v:version < 702 || (exists('g:loaded_airline') && g:loaded_airline)
@@ -6,7 +6,7 @@ if &cp || v:version < 702 || (exists('g:loaded_airline') && g:loaded_airline)
endif
let g:loaded_airline = 1
" autocmd VimEnter * call airline#deprecation#check()
autocmd VimEnter * call airline#deprecation#check()
let s:airline_initialized = 0
let s:airline_theme_defined = 0

View File

@@ -44,7 +44,7 @@ describe 'init sections'
it 'section z should be line numbers'
Expect g:airline_section_z =~ '%3p%%'
Expect g:airline_section_z =~ '%4l'
Expect g:airline_section_z =~ '%3c'
Expect g:airline_section_z =~ '%3v'
end
it 'should not redefine sections already defined'