aboutsummaryrefslogtreecommitdiff
path: root/plugin/statusline.vim
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/statusline.vim')
-rw-r--r--plugin/statusline.vim153
1 files changed, 0 insertions, 153 deletions
diff --git a/plugin/statusline.vim b/plugin/statusline.vim
deleted file mode 100644
index 561a47e..0000000
--- a/plugin/statusline.vim
+++ /dev/null
@@ -1,153 +0,0 @@
1scriptencoding utf-8
2
3augroup MAX_FANCYLINE
4 set noshowmode | " mode would otherwise be shown twice- in lightline and below. We want to deactivate one.
5 set laststatus=2 | " required by AirLine and Lightline, without status line does not appear until a window split
6
7 let g:status_sym_start = ''
8 let g:status_sym_end = ''
9 let g:status_sym_sep_start = '│'
10 let g:status_sym_sep_end = '│'
11 let g:symbol_branch = ''
12 let g:symbol_screen_edge = '░'
13
14 if &term ==? 'linux'
15 let g:group_active = 'StatusLineTerm'
16 let g:group_inactive = 'StatusLineTermNC'
17 let g:group_tabline = 'TabLine'
18 else
19 let g:group_active = 'StatusLine'
20 let g:group_inactive = 'StatusLineNC'
21 let g:group_tabline = 'TabLine'
22 endif
23
24 " this function reverts foreground color and background color of a given
25 " highlight group and returns the name of a newly created _invert group
26 function! CreateInvertGroup(highlight_group)
27 if(synIDattr(synIDtrans(hlID(a:highlight_group)), 'reverse', 'gui')==1)
28 let w:color=synIDattr(hlID(a:highlight_group), 'fg#')
29 else
30 let w:color=synIDattr(hlID(a:highlight_group), 'bg#')
31 endif
32
33 let l:retval=a:highlight_group.'_invert'
34 if(exists('w:color') && w:color ==# '')
35 let w:color = 'NONE'
36 endif
37 silent! exec 'highlight '.l:retval.' guifg='.w:color.' ctermfg='.w:color
38 return l:retval
39 endfunction
40
41 function! UpdateStatus(highlight_group)
42 let l:invert_group = CreateInvertGroup(a:highlight_group)
43 let l:mode = get({
44 \ 'n' : 'normal',
45 \ 'i' : 'insert',
46 \ 'R' : 'replace',
47 \ 'v' : 'visual',
48 \ 'V' : 'visual line',
49 \ "\<C-V>" : 'visual block',
50 \ 'c' : 'command',
51 \ 's' : 'select',
52 \ 'S' : 'select line',
53 \ "\<C-s>" : 'select block',
54 \ 't' : 'terminal'
55 \ }, mode(), mode())
56 return ''
57 \ .'%#StatusLineHighlight#'
58 \ .'%#'.a:highlight_group.'#'
59 \ .g:symbol_screen_edge
60 \ .'%{&buftype != "" ? " ".&buftype : ""}'
61 \ .' '.l:mode.g:status_sym_sep_start
62 \ .'%{argc() > 1 ? " ".(argidx() + 1).":".argc()." ".g:status_sym_sep_start : ""}'
63 \ .'%{haslocaldir() ? fnamemodify(getcwd(), ":.:~")." " :""}'
64 \ .'%{&readonly ? " 🔒" : ""}'
65 \ .'%{&modified ? " 💾 " : ""}'
66 \ .'%{" [".winbufnr(0)."] "}'
67 \ .'%{bufname("%") == "" ? "" : fnamemodify(expand("%"), ":~:.")}'
68 \ .'%{&titlestring ? has("nvim") ? b:term_title:expand(&titlestring) : "" }'
69 \ .'%{exists("w:quickfix_title") ? w:quickfix_title : ""}'
70 \ .' '
71 \ .'%#'.l:invert_group.'#'
72 \ .g:status_sym_end
73 \ .'%<'
74 \ .''
75 \ .'%='
76 \ .''
77 \ .'%#'.l:invert_group.'#'
78 \ .g:status_sym_start
79 \ .'%#'.a:highlight_group.'#'.' '
80 \ .'%{&buftype == "" ? "" : &buftype." ".g:status_sym_sep_end." "}'
81 \ .'%{&filetype == "" ? "" :&filetype." ".g:status_sym_sep_end." "}'
82 \ .'%{&spell ? &spelllang." ".g:status_sym_sep_end : ""}'
83 \ .'%{&fileencoding =~ "^$\\|^utf\-8$" ? "" : &fileencoding." ".g:status_sym_sep_end." "}'
84 \ .'%{&fileformat =~ "^$\\|^unix$" ? "" : &fileformat." ".g:status_sym_sep_end}'
85 \ .' '
86 \ .'%cx%-l: '
87 \ .g:status_sym_sep_end
88 \ .' '
89 \ .'%p%% '
90 \ .g:symbol_screen_edge
91 endfunction
92
93 function! UpdateTabline(highlight_group)
94 let l:invert_group = CreateInvertGroup(a:highlight_group)
95 let l:git_branch = FugitiveHead()
96 return ''
97 \ .'%#'.a:highlight_group.'#'
98 \ .g:symbol_screen_edge
99 \ .' '
100 \ .'%#'.a:highlight_group.'#'
101 \ .'%-2( %)'
102 \ .'%{fnamemodify(getcwd(-1), ":~")}'
103 \ .' '
104 \ .'%{FugitiveHead() == "" ? "" : g:status_sym_sep_start." ".g:symbol_branch." ".FugitiveHead()}'
105 \ .' '
106 \ .'%#'.l:invert_group.'#'
107 \ .g:status_sym_end
108 \ .'%<'
109 \ .'%='
110 \ .'%#'.l:invert_group.'#'
111 \ .g:status_sym_start
112 \ .'%(%#'.a:highlight_group.'#%)'
113 \ .' '
114 \ .'%-2(%)'
115 \ .'%(%#'.a:highlight_group.'#%)'
116 \ .'%(%{v:servername} %{v:this_session}%)'
117 \ .g:status_sym_sep_end.' '
118 \ .'%-3(%)'
119 \ .'%#'.a:highlight_group.'#'
120 \ .'%{tabpagenr()}/%{tabpagenr()}'
121 \ .' '
122 \ .g:symbol_screen_edge
123 \ .'%##'
124 endfunction
125
126
127 if $USER ==? 'root'
128 let highlight_group_root = "ErrorMsg"
129 let invert_group = CreateInvertGroup(highlight_group_root)
130 let g:group_tabline = highlight_group_root
131 endif
132
133 function! ApplyColorScheme()
134 " set termguicolors | " When on, uses highlight-guifg and highlight-guibg attributes in the terminal (=24bit color) incompatible with nvim
135 " set t_ut=
136 " set up statusline, global and current window individually
137 set statusline=%!UpdateStatus(g:group_inactive)
138 setlocal statusline=%!UpdateStatus(g:group_active)
139 " set up the tabline (match colors)
140 set tabline=%!UpdateTabline(g:group_tabline)
141
142 " otherwise 'bold' can mess up icon sizes and I do not know why
143 highlight! StatusLine cterm=reverse
144 " exec 'highlight! User3 guifg=#D2A032 guibg='.l:fgcolor
145 endfunction
146 call ApplyColorScheme()
147
148 " apply colors from the loaded colorscheme...
149 " when changing the colorscheme also apply new colors to the statusbar...
150 autocmd ColorScheme * call ApplyColorScheme()
151 autocmd WinEnter * setlocal statusline=%!UpdateStatus(g:group_active)
152 autocmd WinLeave * setlocal statusline<
153augroup END " MAX_FANCYLINE
..