aboutsummaryrefslogtreecommitdiff
path: root/dotfiles/.local/share/nvim/site/autoload/airline/extensions/tabline/formatters/unique_tail.vim
diff options
context:
space:
mode:
authorYaroslav <contact@yaroslavps.com>2020-03-31 17:52:49 +0300
committerYaroslav <contact@yaroslavps.com>2020-03-31 17:52:49 +0300
commit7217c7749e5403c9c7856c1d12c7986eb9c3b460 (patch)
treed60a112d9119a51af1cf5f590c5efad81751edf6 /dotfiles/.local/share/nvim/site/autoload/airline/extensions/tabline/formatters/unique_tail.vim
parent9a3aa7b20a67c1b7991da1da9508ad5f78f76352 (diff)
downloadvimrice-7217c7749e5403c9c7856c1d12c7986eb9c3b460.tar.gz
vimrice-7217c7749e5403c9c7856c1d12c7986eb9c3b460.zip
Goodbye vim, been using neovim for ages now; home directory cleanup
Diffstat (limited to 'dotfiles/.local/share/nvim/site/autoload/airline/extensions/tabline/formatters/unique_tail.vim')
-rw-r--r--dotfiles/.local/share/nvim/site/autoload/airline/extensions/tabline/formatters/unique_tail.vim41
1 files changed, 41 insertions, 0 deletions
diff --git a/dotfiles/.local/share/nvim/site/autoload/airline/extensions/tabline/formatters/unique_tail.vim b/dotfiles/.local/share/nvim/site/autoload/airline/extensions/tabline/formatters/unique_tail.vim
new file mode 100644
index 0000000..3e61b60
--- /dev/null
+++ b/dotfiles/.local/share/nvim/site/autoload/airline/extensions/tabline/formatters/unique_tail.vim
@@ -0,0 +1,41 @@
+" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
+" 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
+
+ let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':p:.')
+ for nr in values(duplicates)
+ let name = bufname(nr)
+ let fnamecollapse = get(g:, 'airline#extensions#tabline#fnamecollapse', 1)
+ if fnamecollapse
+ let map[nr] = airline#extensions#tabline#formatters#default#wrap_name(nr, substitute(fnamemodify(name, fmod), '\v\w\zs.{-}\ze(\\|/)', '', 'g'))
+ else
+ let map[nr] = airline#extensions#tabline#formatters#default#wrap_name(nr, fnamemodify(name, fmod))
+ endif
+ 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