Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion autoload/wintabs/renderers.vim
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,11 @@ function! wintabs#renderers#padding(len)
endfunction

function! wintabs#renderers#bufname(bufnr)
let name = fnamemodify(bufname(a:bufnr), ':t')
if exists('*Wintabs_ui_bufname')
let name = g:Wintabs_ui_bufname(a:bufnr)
else
let name = fnamemodify(bufname(a:bufnr), ':t')
endif
let name = substitute(name, '%', '%%', 'g')
if empty(name)
let name = '[No Name]'
Expand All @@ -122,6 +126,13 @@ function! wintabs#renderers#buf_label(bufnr, config)
endfunction

function! wintabs#renderers#tab_label(tabnr)
if exists('*Wintabs_ui_tablabel')
let name = g:Wintabs_ui_tablabel(a:tabnr)
if !empty(name)
return name
endif
endif

let label = ''
if get(g:, 'loaded_taboo', 0)
let label = TabooTabTitle(a:tabnr)
Expand Down
41 changes: 41 additions & 0 deletions doc/wintabs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,47 @@ default: ' %t '
'%n': |bufnr()| of buffer
'%o': ordinal number of buffer

*g:Wintabs_ui_bufname*
values: function
Function that generates the file name to be used as '%t' for
|g:wintabs_ui_vimtab_name_format|.
By default this uses the file name without any directories
('%:t').
You can use this, for example, to display 'my-button/i'
instead of 'index.tsx' for the file 'src/my-button/index.tsx'
for a more useful tabline in JavaScript/TypeScript codebases.

function! g:Wintabs_ui_bufname(bufnr)
let file = fnamemodify(bufname(a:bufnr), ':t')

if index(['index.tsx', 'index.ts', 'index.jsx', 'index.js'], file) != -1
let parent_dir = fnamemodify(bufname(a:bufnr), ':h:t')
return parent_dir . '/i'
endif

return file
endfunction

*g:Wintabs_ui_tablabel*
values: function
Function that generates the tab name
|g:wintabs_ui_vimtab_name_format|.
By default this uses the file name without any directories
('%:t').
You can use this, for example, to set a user configurable
tab name instead of using the buffer name / tab index.

function! g:Set_wintabs_tab_name()
let new_name = input('Tab name: ', get(t:, 'wintabs_custom_tab_name', ''))
let t:wintabs_custom_tab_name = new_name
endfunction
command! WintabsSetTabName call g:Set_wintabs_tab_name()

function! g:Wintabs_ui_tablabel(tabnr)
return gettabvar(a:tabnr, 'wintabs_custom_tab_name')
endfunction


*g:wintabs_ui_vimtab_name_format*
values: string
default: ' %n '
Expand Down