Skip to content

Commit 0062185

Browse files
committed
Support g:wintabs_ui_vimtab_name_format as function
1 parent 6d18d62 commit 0062185

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

autoload/wintabs/renderers.vim

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,11 @@ function! wintabs#renderers#padding(len)
100100
endfunction
101101

102102
function! wintabs#renderers#bufname(bufnr)
103-
let name = fnamemodify(bufname(a:bufnr), ':t')
103+
if exists('*Wintabs_ui_bufname')
104+
let name = g:Wintabs_ui_bufname(a:bufnr)
105+
else
106+
let name = fnamemodify(bufname(a:bufnr), ':t')
107+
endif
104108
let name = substitute(name, '%', '%%', 'g')
105109
if empty(name)
106110
let name = '[No Name]'

doc/wintabs.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,27 @@ default: ' %t '
278278
'%n': |bufnr()| of buffer
279279
'%o': ordinal number of buffer
280280

281+
*g:Wintabs_ui_bufname*
282+
values: function
283+
Function that generates the file name to be used as '%t' for
284+
|g:wintabs_ui_vimtab_name_format|.
285+
By default this uses the file name without any directories
286+
('%:t').
287+
You can use this, for example, to display 'my-button/i'
288+
instead of 'index.tsx' for the file 'src/my-button/index.tsx'
289+
for a more useful tabline in JavaScript/TypeScript codebases.
290+
291+
function! g:Wintabs_ui_bufname(bufnr)
292+
let file = fnamemodify(bufname(a:bufnr), ':t')
293+
294+
if index(['index.tsx', 'index.ts', 'index.jsx', 'index.js'], file) != -1
295+
let parent_dir = fnamemodify(bufname(a:bufnr), ':h:t')
296+
return parent_dir . '/i'
297+
endif
298+
299+
return file
300+
endfunction
301+
281302
*g:wintabs_ui_vimtab_name_format*
282303
values: string
283304
default: ' %n '

0 commit comments

Comments
 (0)