mirror of
https://github.com/vim-airline/vim-airline.git
synced 2024-11-22 13:26:46 +08:00
scrollbar: add an ascii scrollbar extension
This commit is contained in:
parent
e7eea7c6e8
commit
ecac148e19
|
@ -18,10 +18,12 @@ This is the Changelog for the vim-airline project.
|
||||||
- [battery.vim](https://github.com/lambdalisue/battery.vim) support
|
- [battery.vim](https://github.com/lambdalisue/battery.vim) support
|
||||||
- [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) support
|
- [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) support
|
||||||
- [gen_tags.vim](https://github.com/jsfaint/gen_tags.vim) support
|
- [gen_tags.vim](https://github.com/jsfaint/gen_tags.vim) support
|
||||||
|
- Ascii Scrollbar support
|
||||||
- Improvements
|
- Improvements
|
||||||
- git branch can also be displayed using [gina.vim](https://github.com/lambdalisue/gina.vim)
|
- git branch can also be displayed using [gina.vim](https://github.com/lambdalisue/gina.vim)
|
||||||
- coc extensions can also show additional status messages as well as the current function
|
- coc extensions can also show additional status messages as well as the current function
|
||||||
- [coc-git](https://github.com/neoclide/coc-git) extension integrated into hunks extension
|
- [coc-git](https://github.com/neoclide/coc-git) extension integrated into hunks extension
|
||||||
|
- rewrote parts using Vim9 Script for performance improvements
|
||||||
- Other
|
- Other
|
||||||
- Changed CI from travis-ci.org to GitHub Actions
|
- Changed CI from travis-ci.org to GitHub Actions
|
||||||
- Introduce Vim script static analysis using [reviewdog](https://github.com/reviewdog/action-vint)
|
- Introduce Vim script static analysis using [reviewdog](https://github.com/reviewdog/action-vint)
|
||||||
|
|
|
@ -262,6 +262,11 @@ function! airline#extensions#load()
|
||||||
call add(s:loaded_ext, 'bookmark')
|
call add(s:loaded_ext, 'bookmark')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'airline#extensions#scrollbar#enabled', 1)
|
||||||
|
call airline#extensions#scrollbar#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'scrollbar')
|
||||||
|
endif
|
||||||
|
|
||||||
if get(g:, 'airline#extensions#csv#enabled', 1)
|
if get(g:, 'airline#extensions#csv#enabled', 1)
|
||||||
\ && (get(g:, 'loaded_csv', 0) || exists(':Table'))
|
\ && (get(g:, 'loaded_csv', 0) || exists(':Table'))
|
||||||
call airline#extensions#csv#init(s:ext)
|
call airline#extensions#csv#init(s:ext)
|
||||||
|
|
36
autoload/airline/extensions/scrollbar.vim
Normal file
36
autoload/airline/extensions/scrollbar.vim
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
" MIT License. Copyright (c) 2013-2021
|
||||||
|
" vim: et ts=2 sts=2 sw=2 et
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
function! airline#extensions#scrollbar#calculate() abort
|
||||||
|
if winwidth(0) > 200 && get(w:, 'airline_active', 0)
|
||||||
|
let overwrite = 0
|
||||||
|
if &encoding ==? 'utf-8' && !get(g:, 'airline_symbols_ascii', 0)
|
||||||
|
let [left, right, middle] = [ '|', '|', '█']
|
||||||
|
let overwrite = 1
|
||||||
|
else
|
||||||
|
let [left, right, middle] = [ '[', ']', '-']
|
||||||
|
endif
|
||||||
|
let spc = get(g:, 'airline_symbols.space', ' ')
|
||||||
|
let width = 20 " max width, plus one border and indicator
|
||||||
|
let perc = (line('.') + 0.0) / (line('$') + 0.0)
|
||||||
|
let before = float2nr(round(perc * width))
|
||||||
|
if before > 0 && line('.') == 1
|
||||||
|
let before = 0
|
||||||
|
let left = (overwrite ? '' : left)
|
||||||
|
endif
|
||||||
|
let after = width - before
|
||||||
|
if (after <= 1 && line('.') == line('$'))
|
||||||
|
let after = 0
|
||||||
|
let right = (overwrite ? '' : right)
|
||||||
|
endif
|
||||||
|
return left . repeat(spc, before) . middle . repeat(spc, (width-before)) . right
|
||||||
|
else
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#scrollbar#init(ext) abort
|
||||||
|
call airline#parts#define_function('scrollbar', 'airline#extensions#scrollbar#calculate')
|
||||||
|
endfunction
|
|
@ -186,10 +186,11 @@ function! airline#init#bootstrap()
|
||||||
\ 'syntastic-err', 'eclim', 'whitespace','windowswap',
|
\ 'syntastic-err', 'eclim', 'whitespace','windowswap',
|
||||||
\ 'ycm_error_count', 'ycm_warning_count', 'neomake_error_count',
|
\ 'ycm_error_count', 'ycm_warning_count', 'neomake_error_count',
|
||||||
\ 'neomake_warning_count', 'ale_error_count', 'ale_warning_count',
|
\ 'neomake_warning_count', 'ale_error_count', 'ale_warning_count',
|
||||||
\ 'lsp_error_count', 'lsp_warning_count',
|
\ 'lsp_error_count', 'lsp_warning_count', 'scrollbar',
|
||||||
\ 'nvimlsp_error_count', 'nvimlsp_warning_count',
|
\ 'nvimlsp_error_count', 'nvimlsp_warning_count',
|
||||||
\ 'languageclient_error_count', 'languageclient_warning_count',
|
\ 'languageclient_error_count', 'languageclient_warning_count',
|
||||||
\ 'coc_warning_count', 'coc_error_count', 'vista', 'battery'])
|
\ 'coc_warning_count', 'coc_error_count', 'vista', 'battery'])
|
||||||
|
|
||||||
call airline#parts#define_text('bookmark', '')
|
call airline#parts#define_text('bookmark', '')
|
||||||
call airline#parts#define_text('capslock', '')
|
call airline#parts#define_text('capslock', '')
|
||||||
call airline#parts#define_text('gutentags', '')
|
call airline#parts#define_text('gutentags', '')
|
||||||
|
@ -225,7 +226,7 @@ function! airline#init#sections()
|
||||||
let g:airline_section_gutter = airline#section#create(['%='])
|
let g:airline_section_gutter = airline#section#create(['%='])
|
||||||
endif
|
endif
|
||||||
if !exists('g:airline_section_x')
|
if !exists('g:airline_section_x')
|
||||||
let g:airline_section_x = airline#section#create_right(['coc_current_function', 'bookmark', 'tagbar', 'vista', 'gutentags', 'gen_tags', 'omnisharp', 'grepper', 'filetype'])
|
let g:airline_section_x = airline#section#create_right(['coc_current_function', 'bookmark', 'scrollbar', 'tagbar', 'vista', 'gutentags', 'gen_tags', 'omnisharp', 'grepper', 'filetype'])
|
||||||
endif
|
endif
|
||||||
if !exists('g:airline_section_y')
|
if !exists('g:airline_section_y')
|
||||||
let g:airline_section_y = airline#section#create_right(['ffenc'])
|
let g:airline_section_y = airline#section#create_right(['ffenc'])
|
||||||
|
|
|
@ -1355,6 +1355,12 @@ groups:
|
||||||
airline_tabhid: hidden buffer
|
airline_tabhid: hidden buffer
|
||||||
airline_tabhid_right: idem, but on the right
|
airline_tabhid_right: idem, but on the right
|
||||||
|
|
||||||
|
------------------------------------- *airline-scrollbar*
|
||||||
|
|
||||||
|
Displays an Ascii Scrollbar for active windows with a width > 200.
|
||||||
|
|
||||||
|
* enable/disable scrollbar integration >
|
||||||
|
let g:airline#extensions#scrollbar#enabled = 1 (default: 1)
|
||||||
------------------------------------- *airline-taboo*
|
------------------------------------- *airline-taboo*
|
||||||
taboo.vim <https://github.com/gcmt/taboo.vim>
|
taboo.vim <https://github.com/gcmt/taboo.vim>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user