Merge pull request #1063 from sappo/master
Various ctrlspace tabline improvements
This commit is contained in:
commit
a45a96c881
|
@ -9,6 +9,9 @@ let s:current_tabline = ''
|
||||||
|
|
||||||
let s:buffers_label = get(g:, 'airline#extensions#tabline#buffers_label', 'buffers')
|
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: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()
|
function! airline#extensions#tabline#ctrlspace#off()
|
||||||
augroup airline_tabline_ctrlspace
|
augroup airline_tabline_ctrlspace
|
||||||
|
@ -28,6 +31,62 @@ function! airline#extensions#tabline#ctrlspace#invalidate()
|
||||||
let s:current_tabnr = -1
|
let s:current_tabnr = -1
|
||||||
endfunction
|
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.')}%)'
|
||||||
|
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.title.ctrlspace#api#TabBuffersNumber(tab.index))
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#ctrlspace#get()
|
function! airline#extensions#tabline#ctrlspace#get()
|
||||||
let cur_buf = bufnr('%')
|
let cur_buf = bufnr('%')
|
||||||
|
|
||||||
|
@ -42,59 +101,44 @@ function! airline#extensions#tabline#ctrlspace#get()
|
||||||
return s:current_tabline
|
return s:current_tabline
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let b = airline#extensions#tabline#new_builder()
|
let builder = airline#extensions#tabline#new_builder()
|
||||||
|
|
||||||
call b.add_section_spaced('airline_tabtype', s:buffers_label)
|
" Add left tabline content
|
||||||
|
if s:show_buffers == 0
|
||||||
let s:buffer_list = ctrlspace#api#BufferList(cur_tab)
|
call airline#extensions#tabline#ctrlspace#add_tab_section(builder, 0)
|
||||||
for buffer in s:buffer_list
|
elseif s:show_tabs == 0
|
||||||
if cur_buf == buffer.index
|
call airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, 0)
|
||||||
if buffer.modified
|
|
||||||
let group = 'airline_tabmod'
|
|
||||||
else
|
else
|
||||||
let group = 'airline_tabsel'
|
if s:switch_buffers_and_tabs == 0
|
||||||
endif
|
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
|
else
|
||||||
if buffer.modified
|
call builder.add_section_spaced('airline_tabtype', s:tabs_label)
|
||||||
let group = 'airline_tabmod_unsel'
|
call airline#extensions#tabline#ctrlspace#add_tab_section(builder, 0)
|
||||||
elseif buffer.visible
|
|
||||||
let group = 'airline_tab'
|
|
||||||
else
|
|
||||||
let group = 'airline_tabhid'
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let buf_name = '%(%{airline#extensions#tabline#get_buffer_name('.buffer.index.')}%)'
|
call builder.add_section('airline_tabfill', '')
|
||||||
call b.add_section_spaced(group, buf_name)
|
call builder.split()
|
||||||
endfor
|
call builder.add_section('airline_tabfill', '')
|
||||||
|
|
||||||
|
" Add right tabline content
|
||||||
call b.add_section('airline_tabfill', '')
|
if s:show_buffers == 0
|
||||||
call b.split()
|
call builder.add_section_spaced('airline_tabtype', s:tabs_label)
|
||||||
call b.add_section('airline_tabfill', '')
|
elseif s:show_tabs == 0
|
||||||
|
call builder.add_section_spaced('airline_tabtype', s:buffers_label)
|
||||||
for tab in s:tab_list
|
|
||||||
if tab.current
|
|
||||||
if tab.modified
|
|
||||||
let group = 'airline_tabmod_right'
|
|
||||||
else
|
else
|
||||||
let group = 'airline_tabsel_right'
|
if s:switch_buffers_and_tabs == 0
|
||||||
endif
|
call airline#extensions#tabline#ctrlspace#add_tab_section(builder, 1)
|
||||||
|
call builder.add_section_spaced('airline_tabtype', s:tabs_label)
|
||||||
else
|
else
|
||||||
if tab.modified
|
call airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, 1)
|
||||||
let group = 'airline_tabmod_unsel_right'
|
call builder.add_section_spaced('airline_tabtype', s:buffers_label)
|
||||||
else
|
|
||||||
let group = 'airline_tabhid_right'
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call b.add_section_spaced(group, tab.title.ctrlspace#api#TabBuffersNumber(tab.index))
|
|
||||||
endfor
|
|
||||||
|
|
||||||
call b.add_section_spaced('airline_tabtype', s:tabs_label)
|
|
||||||
|
|
||||||
let s:current_bufnr = cur_buf
|
let s:current_bufnr = cur_buf
|
||||||
let s:current_tabnr = cur_tab
|
let s:current_tabnr = cur_tab
|
||||||
let s:current_tabline = b.build()
|
let s:current_tabline = builder.build()
|
||||||
return s:current_tabline
|
return s:current_tabline
|
||||||
endfunction
|
endfunction
|
||||||
|
|
|
@ -489,16 +489,22 @@ eclim <https://eclim.org>
|
||||||
let g:airline#extensions#whitespace#trailing_regexp = '\s$'
|
let g:airline#extensions#whitespace#trailing_regexp = '\s$'
|
||||||
<
|
<
|
||||||
------------------------------------- *airline-tabline*
|
------------------------------------- *airline-tabline*
|
||||||
* enable/disable enhanced tabline. >
|
Note: If you're using the ctrlspace tabline only the option marked with (c)
|
||||||
|
are supported!
|
||||||
|
|
||||||
|
* enable/disable enhanced tabline. (c)
|
||||||
let g:airline#extensions#tabline#enabled = 0
|
let g:airline#extensions#tabline#enabled = 0
|
||||||
<
|
|
||||||
* enable/disable displaying open splits per tab (only when tabs are opened). >
|
* enable/disable displaying open splits per tab (only when tabs are opened). >
|
||||||
let g:airline#extensions#tabline#show_splits = 1
|
let g:airline#extensions#tabline#show_splits = 1
|
||||||
<
|
*
|
||||||
* enable/disable displaying buffers with a single tab. >
|
* switch position of buffers and tabs on splited tabline (c)
|
||||||
|
let g:airline#extensions#tabline#switch_buffers_and_tabs = 0
|
||||||
|
|
||||||
|
* enable/disable displaying buffers with a single tab. (c)
|
||||||
let g:airline#extensions#tabline#show_buffers = 1
|
let g:airline#extensions#tabline#show_buffers = 1
|
||||||
<
|
<
|
||||||
* enable/disable displaying tabs, regardless of number. >
|
* enable/disable displaying tabs, regardless of number. (c)
|
||||||
let g:airline#extensions#tabline#show_tabs = 1
|
let g:airline#extensions#tabline#show_tabs = 1
|
||||||
<
|
<
|
||||||
* configure filename match rules to exclude from the tabline. >
|
* configure filename match rules to exclude from the tabline. >
|
||||||
|
@ -518,18 +524,14 @@ eclim <https://eclim.org>
|
||||||
* enable/disable displaying tab type (far right) >
|
* enable/disable displaying tab type (far right) >
|
||||||
let g:airline#extensions#tabline#show_tab_type = 1
|
let g:airline#extensions#tabline#show_tab_type = 1
|
||||||
|
|
||||||
* enable/disable displaying index of the buffer.
|
* rename label for buffers (default: 'buffers') (c)
|
||||||
|
|
||||||
Note: If you're using ctrlspace the tabline shows your tabs on the right and
|
|
||||||
buffer on the left. Also none of the above tabline switches is currently
|
|
||||||
supported!
|
|
||||||
|
|
||||||
* rename label for buffers (default: 'buffers') >
|
|
||||||
let g:airline#extensions#tabline#buffers_label = 'b'
|
let g:airline#extensions#tabline#buffers_label = 'b'
|
||||||
|
|
||||||
* rename label for tabs (default: 'tabs') >
|
* rename label for tabs (default: 'tabs') (c)
|
||||||
let g:airline#extensions#tabline#tabs_label = 't'
|
let g:airline#extensions#tabline#tabs_label = 't'
|
||||||
<
|
|
||||||
|
* enable/disable displaying index of the buffer.
|
||||||
|
|
||||||
When enabled, numbers will be displayed in the tabline and mappings will be
|
When enabled, numbers will be displayed in the tabline and mappings will be
|
||||||
exposed to allow you to select a buffer directly. Up to 9 mappings will be
|
exposed to allow you to select a buffer directly. Up to 9 mappings will be
|
||||||
exposed. >
|
exposed. >
|
||||||
|
@ -554,7 +556,7 @@ eclim <https://eclim.org>
|
||||||
Use |gt| for switching tabs.
|
Use |gt| for switching tabs.
|
||||||
In tabmode, those mappings will switch to the specified tab.
|
In tabmode, those mappings will switch to the specified tab.
|
||||||
|
|
||||||
* defines the name of a formatter for how buffer names are displayed. >
|
* defines the name of a formatter for how buffer names are displayed. (c)
|
||||||
let g:airline#extensions#tabline#formatter = 'default'
|
let g:airline#extensions#tabline#formatter = 'default'
|
||||||
|
|
||||||
" here is how you can define a 'foo' formatter:
|
" here is how you can define a 'foo' formatter:
|
||||||
|
@ -623,7 +625,6 @@ eclim <https://eclim.org>
|
||||||
let airline#extensions#tabline#ignore_bufadd_pat =
|
let airline#extensions#tabline#ignore_bufadd_pat =
|
||||||
\ '\c\vgundo|undotree|vimfiler|tagbar|nerd_tree'
|
\ '\c\vgundo|undotree|vimfiler|tagbar|nerd_tree'
|
||||||
|
|
||||||
<
|
|
||||||
Note: Enabling this extension will modify 'showtabline' and 'guioptions'.
|
Note: Enabling this extension will modify 'showtabline' and 'guioptions'.
|
||||||
|
|
||||||
* enable Refresh of tabline buffers on |BufAdd| autocommands
|
* enable Refresh of tabline buffers on |BufAdd| autocommands
|
||||||
|
|
Loading…
Reference in New Issue