From bf0df7288928be016dfeea22a96e39a556dbcf50 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Fri, 3 Mar 2017 21:54:43 +0800 Subject: [PATCH] Add tabline layer --- autoload/SpaceVim/layers/core/banner.vim | 0 autoload/SpaceVim/layers/core/statusline.vim | 41 ++++++++++++++ autoload/SpaceVim/layers/core/tabline.vim | 59 ++++++++++++++++++++ doc/SpaceVim.txt | 38 +++++++------ 4 files changed, 122 insertions(+), 16 deletions(-) create mode 100644 autoload/SpaceVim/layers/core/banner.vim create mode 100644 autoload/SpaceVim/layers/core/statusline.vim create mode 100644 autoload/SpaceVim/layers/core/tabline.vim diff --git a/autoload/SpaceVim/layers/core/banner.vim b/autoload/SpaceVim/layers/core/banner.vim new file mode 100644 index 000000000..e69de29bb diff --git a/autoload/SpaceVim/layers/core/statusline.vim b/autoload/SpaceVim/layers/core/statusline.vim new file mode 100644 index 000000000..a9aa87325 --- /dev/null +++ b/autoload/SpaceVim/layers/core/statusline.vim @@ -0,0 +1,41 @@ +let g:spacevim_statusline_mode_format = { + \ 'n' : 'NORMAL', + \ 'i' : 'INSERT', + \ 'v' : 'VISUAL', + \ } + +""""""""""""""""""""""""""""""""" + +function! s:mode() abort + let mt = g:spacevim_statusline_mode_format + let m = mode() + return mt[m] +endfunction + +function! s:filetype() abort + return &filetype +endfunction + +function! s:encoding() abort + return &encoding +endfunction + + +function! s:tabname() abort + return '1' +endfunction + +function! SpaceVim#layers#core#statusline#get() abort + return join([ + \ s:mode(), + \ s:tabname(), + \ s:encoding(), + \ s:filetype() + \ ], ' ') + return s:mode() . s:tabname() +endfunction + +function! s:refresh() abort +endfunction +set statusline=%!SpaceVim#layers#core#statusline#get() + diff --git a/autoload/SpaceVim/layers/core/tabline.vim b/autoload/SpaceVim/layers/core/tabline.vim new file mode 100644 index 000000000..b0cf04117 --- /dev/null +++ b/autoload/SpaceVim/layers/core/tabline.vim @@ -0,0 +1,59 @@ +"============================================================================= +" tabline.vim --- core#tabline Layer file for SpaceVim +" Copyright (c) 2012-2016 Shidong Wang & Contributors +" Author: Shidong Wang < wsdjeg at 163.com > +" URL: https://spacevim.org +" License: MIT license +"============================================================================= + +"" +" @section core#tabline, layer-core-tabline +" @parentsection layers +" This layer provides default tabline for SpaceVim + +let s:messletters = SpaceVim#api#import('messletters') +let s:file = SpaceVim#api#import('file') + + +function! s:tabname(id) abort + let id = s:messletters.bubble_num(a:id, g:spacevim_buffer_index_type) . ' ' + let fn = fnamemodify(bufname(a:id), ':t') + if g:spacevim_enable_tabline_filetype_icon + let icon = s:file.fticon(fn) + if !empty(icon) + let fn = icon . ' ' . fn + endif + endif + if empty(fn) + return 'No Name' + else + return id . fn + endif +endfunction + +function! SpaceVim#layers#core#tabline#get() abort + let t = ' ' + let nr = tabpagenr() + " if nr > 1 + for i in range(1, nr) + let buflist = tabpagebuflist(i) + let winnr = tabpagewinnr(i) + let name = fnamemodify(bufname(buflist[winnr - 1]), ':t') + let id = s:messletters.bubble_num(i, g:spacevim_buffer_index_type) + let icon = s:file.fticon(name) + if !empty(icon) + let name = icon . ' ' . name + endif + let t .= id . ' ' . name + if i == nr + let t .= '%#TabLineSel#' + else + let t .= '%#TabLine# | ' + endif + endfor + let t .= '%#TabLineFill#%T' + return t +endfunction +function! SpaceVim#layers#core#tabline#config() abort + set tabline=%!SpaceVim#layers#core#tabline#get() +endfunction diff --git a/doc/SpaceVim.txt b/doc/SpaceVim.txt index f7145b610..3c177c676 100644 --- a/doc/SpaceVim.txt +++ b/doc/SpaceVim.txt @@ -24,22 +24,23 @@ CONTENTS *SpaceVim-contents* 2. autocomplete..................................|SpaceVim-autocomplete| 3. checkers....................................|SpaceVim-layer-checkers| 4. colorscheme....................................|SpaceVim-colorscheme| - 5. exprfold....................................|SpaceVim-layer-exprfold| - 6. incsearch..................................|SpaceVim-layer-incsearch| - 7. indentmove................................|SpaceVim-layer-indentmove| - 8. lang#c........................................|SpaceVim-layer-lang-c| - 9. lang#elixir..............................|SpaceVim-layer-lang-elixir| - 10. lang#go.....................................|SpaceVim-layer-lang-go| - 11. lang#java.................................|SpaceVim-layer-lang-java| - 12. lang#ocaml...............................|SpaceVim-layer-lang-ocaml| - 13. lang#php...................................|SpaceVim-layer-lang-php| - 14. lang#puppet.............................|SpaceVim-layer-lang-puppet| - 15. lang#python.............................|SpaceVim-layer-lang-python| - 16. lang#rust.................................|SpaceVim-layer-lang-rust| - 17. lang#xml...................................|SpaceVim-layer-lang-xml| - 18. operator...................................|SpaceVim-layer-operator| - 19. shell.........................................|SpaceVim-layer-shell| - 20. tmux...........................................|SpaceVim-layer-tmux| + 5. core#tabline............................|SpaceVim-layer-core-tabline| + 6. exprfold....................................|SpaceVim-layer-exprfold| + 7. incsearch..................................|SpaceVim-layer-incsearch| + 8. indentmove................................|SpaceVim-layer-indentmove| + 9. lang#c........................................|SpaceVim-layer-lang-c| + 10. lang#elixir.............................|SpaceVim-layer-lang-elixir| + 11. lang#go.....................................|SpaceVim-layer-lang-go| + 12. lang#java.................................|SpaceVim-layer-lang-java| + 13. lang#ocaml...............................|SpaceVim-layer-lang-ocaml| + 14. lang#php...................................|SpaceVim-layer-lang-php| + 15. lang#puppet.............................|SpaceVim-layer-lang-puppet| + 16. lang#python.............................|SpaceVim-layer-lang-python| + 17. lang#rust.................................|SpaceVim-layer-lang-rust| + 18. lang#xml...................................|SpaceVim-layer-lang-xml| + 19. operator...................................|SpaceVim-layer-operator| + 20. shell.........................................|SpaceVim-layer-shell| + 21. tmux...........................................|SpaceVim-layer-tmux| 5. FAQ........................................................|SpaceVim-faq| ============================================================================== @@ -458,6 +459,11 @@ https://github.com/SpaceVim/SpaceVim/issues/209#issuecomment-280545818 zellner < +============================================================================== +CORE#TABLINE *SpaceVim-layer-core-tabline* + +This layer provides default tabline for SpaceVim + ============================================================================== EXPRFOLD *SpaceVim-layer-exprfold*