diff options
| author | srdusr <trevorgray@srdusr.com> | 2025-08-30 19:22:59 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2025-08-30 19:22:59 +0200 |
| commit | 19120d4f9761c67d99ed1ce3da6084b83f5a49c9 (patch) | |
| tree | f234cad1bdad88114a63c9702144da487024967a /.vim/autoload/statusline.vim | |
| parent | 5928998af5404ae2be84c6cecc10ebf84bd3f3ed (diff) | |
| download | dotfiles-19120d4f9761c67d99ed1ce3da6084b83f5a49c9.tar.gz dotfiles-19120d4f9761c67d99ed1ce3da6084b83f5a49c9.zip | |
Linux-specific dotfiles
Diffstat (limited to '.vim/autoload/statusline.vim')
| -rw-r--r-- | .vim/autoload/statusline.vim | 227 |
1 files changed, 0 insertions, 227 deletions
diff --git a/.vim/autoload/statusline.vim b/.vim/autoload/statusline.vim deleted file mode 100644 index 5e5a671..0000000 --- a/.vim/autoload/statusline.vim +++ /dev/null @@ -1,227 +0,0 @@ -"" This was made by Reddit user u/SamLovesNotion. Also with the help of - https://tdaly.co.uk/projects/vim-statusline-generator/ for learning the syntax. Sorry for English & grammar, this post was made in hurry. - -" Images - https://www.reddit.com/r/vim/comments/ld8h2j/i_made_a_status_line_from_scratch_no_plugins_used/ -" I have used Nerd icon fonts. Icons won't work without them. https://github.com/ryanoasis/nerd-fonts/ - -" This statusline looks exactly like Vim Airline (even more customizable & powerful) & loads faster than Vim airline. Only take few ms to load. - -" STARTUP TIME - With Vim Airline - ~250ms. With this statusline - ~100ms. Without any statusline - ~98ms. - -" Add all of this at the end of your vimrc OR Create separate file like 'statusline.vim' & 'colorsgroup.vim' & source those files in your main vimrc. -" e.g. source "~/.config/vim/statusline.vim" - - - - -" statusline.vim - -" NOTE: This has been edited to fit my needs and is intended to be autoloaded in the autoload directory: "~/.vim/autoload/statusline.vim" - -if exists('g:loaded_statusline') | finish | endif -let g:loaded_statusline = 1 - -" Color highlighting groups -" Add this AFTER `colorscheme` option in your vimrc. Otherwise your colorscheme will clear these highlightings. -" OR use ColorScheme autocommand. VERY IMPORTANT. - -" Color pallet -" Green - #2BBB4F (BG) - #080808 (FG) -" Blue - #4799EB -" Violet - #986FEC -" Yellow - #D7A542 -" Orange - #EB754D -" Grey1 - #202020 -" Grey - #303030 - -" Define color variables -let g:StslineColorGreen = '#2BBB4F' -let g:StslineColorBlue = '#4799EB' -let g:StslineColorViolet = '#986FEC' -let g:StslineColorYellow = '#D7A542' -let g:StslineColorOrange = '#EB754D' - -let g:StslineColorLight = '#C0C0C0' -let g:StslineColorDark = '#080808' -let g:StslineColorDark1 = '#181818' -let g:StslineColorDark2 = '#202020' -let g:StslineColorDark3 = '#303030' - -" Define colors -let g:StslineBackColor = g:StslineColorDark2 -let g:StslineOnBackColor = g:StslineColorLight -"let g:StslinePriColor = g:StslineColorGreen -let g:StslineOnPriColor = g:StslineColorDark -let g:StslineSecColor = g:StslineColorDark3 -let g:StslineOnSecColor = g:StslineColorLight - -" Create highlight groups -execute 'highlight StslineSecColorFG guifg=' . g:StslineSecColor ' guibg=' . g:StslineBackColor -execute 'highlight StslineSecColorBG guifg=' . g:StslineColorLight ' guibg=' . g:StslineSecColor -execute 'highlight StslineBackColorBG guifg=' . g:StslineColorLight ' guibg=' . g:StslineBackColor -execute 'highlight StslineBackColorFGSecColorBG guifg=' . g:StslineBackColor ' guibg=' . g:StslineSecColor -execute 'highlight StslineSecColorFGBackColorBG guifg=' . g:StslineSecColor ' guibg=' . g:StslineBackColor -execute 'highlight StslineModColorFG guifg=' . g:StslineColorYellow ' guibg=' . g:StslineBackColor - -" Statusline -" Enable statusline -set laststatus=2 -" Disable showmode - i.e. Don't show mode like --INSERT-- in current statusline. -set noshowmode - -" Enable GUI colors for terminals (Some terminals may not support this, so you'll have to *manually* set color pallet for tui colors.) -set termguicolors - - - -" Understand statusline elements - -" %{StslineMode()} = Output of a function -" %#StslinePriColorBG# = Highlight group -" %F, %c, etc. are variables which contain value like - current file path, current colums, etc. -" %{&readonly?\"\ \":\"\"} = If file is readonly ? Then "Lock icon" Else : "Nothing" -" %{get(b:,'coc_git_status',b:GitBranch)} = If b:coc_git_status efists, then it's value, else value of b:GitBranch -" &filetype, things starting with & are also like variables with info. -" \ - Is for escaping a space. \" is for escaping a double quote. -" %{&fenc!='utf-8'?\"\ \":''} = If file encoding is NOT!= 'utf-8' ? THEN output a "Space" else : no character - -let space = ' ' - -" Define active statusline -function! autoload#statusline#ActivateStatusline() abort - call autoload#statusline#GetFileType() - setlocal statusline=%#StslinePriColorBG#\ \ %{autoload#statusline#StslineMode()}\ %#StslineSecColorBG#%{get(b:,'coc_git_status',b:GitBranch)}%{get(b:,'coc_git_blame','')}%#StslineBackColorFGPriColorBG#%#StslinePriColorFG#\ %{&readonly?\"\ \":\"\"}%F\ %#StslineModColorFG#%{&modified?\"\ \":\"\"}%=%#StslinePriColorFG#\ %{b:FiletypeIcon}%{&filetype}\ %#StslineSecColorFG#%#StslineSecColorBG#%{&fenc!='utf-8'?\"\ \":''}%{&fenc!='utf-8'?&fenc:''}%{&fenc!='utf-8'?\"\ \":''}%#StslinePriColorFGSecColorBG#%#StslinePriColorBG#\ %p\%%\ %#StslinePriColorBGBold#%l%#StslinePriColorBG#/%L\ :%c\ \ %#{space} -endfunction - -" Define Inactive statusline -function! autoload#statusline#DeactivateStatusline() abort - if !exists("b:GitBranch") || b:GitBranch == '' - setlocal statusline=%#StslineSecColorBG#\ INACTIVE\ %#StslineSecColorBG#%{get(b:,'coc_git_statusline',b:GitBranch)}%{get(b:,'coc_git_blame','')}%#StslineBackColorFGSecColorBG#%#StslineBackColorBG#\ %{&readonly?\"\ \":\"\"}%F\ %#StslineModColorFG#%{&modified?\"\ \":\"\"}%=%#StslineBackColorBG#\ %{b:FiletypeIcon}%{&filetype}\ %#StslineSecColorFGBackColorBG#%#StslineSecColorBG#\ %p\%%\ %l/%L\ :%c\ - else - setlocal statusline=%#StslineSecColorBG#%{get(b:,'coc_git_statusline',b:GitBranch)}%{get(b:,'coc_git_blame','')}%#StslineBackColorFGSecColorBG#%#StslineBackColorBG#\ %{&readonly?\"\ \":\"\"}%F\ %#StslineModColorFG#%{&modified?\"\ \":\"\"}%=%#StslineBackColorBG#\ %{b:FiletypeIcon}%{&filetype}\ %#StslineSecColorFGBackColorBG#%#StslineSecColorBG#\ %p\%%\ %l/%L\ :%c\ - endif -endfunction - -" Get Statusline mode & also set primary color for that mode -function! autoload#statusline#StslineMode() abort - let l:CurrentMode = mode() - - if l:CurrentMode ==# 'n' - let g:StslinePriColor = g:StslineColorGreen - let b:CurrentMode = 'NORMAL ' - elseif l:CurrentMode ==# 'i' - let g:StslinePriColor = g:StslineColorViolet - let b:CurrentMode = 'INSERT ' - elseif l:CurrentMode ==# 'c' - let g:StslinePriColor = g:StslineColorYellow - let b:CurrentMode = 'COMMAND ' - elseif l:CurrentMode ==# 'v' - let g:StslinePriColor = g:StslineColorBlue - let b:CurrentMode = 'VISUAL ' - elseif l:CurrentMode ==# '\<C-v>' - let g:StslinePriColor = g:StslineColorBlue - let b:CurrentMode = 'V-BLOCK ' - elseif l:CurrentMode ==# 'V' - let g:StslinePriColor = g:StslineColorBlue - let b:CurrentMode = 'V-LINE ' - elseif l:CurrentMode ==# 'R' - let g:StslinePriColor = g:StslineColorViolet - let b:CurrentMode = 'REPLACE ' - elseif l:CurrentMode ==# 's' - let g:StslinePriColor = g:StslineColorBlue - let b:CurrentMode = 'SELECT ' - elseif l:CurrentMode ==# 't' - let g:StslinePriColor = g:StslineColorYellow - let b:CurrentMode = 'TERM ' - elseif l:CurrentMode ==# '!' - let g:StslinePriColor = g:StslineColorYellow - let b:CurrentMode = 'SHELL ' - endif - - call autoload#statusline#UpdateStslineColors() - - return b:CurrentMode -endfunction - -" Update colors. Recreate highlight groups with new Primary color value. -function! autoload#statusline#UpdateStslineColors() abort - execute 'highlight StslinePriColorBG guifg=' . g:StslineOnPriColor . ' guibg=' . g:StslinePriColor - execute 'highlight StslinePriColorBGBold guifg=' . g:StslineOnPriColor . ' guibg=' . g:StslinePriColor . ' gui=bold' - execute 'highlight StslinePriColorFG guifg=' . g:StslinePriColor . ' guibg=' . g:StslineBackColor - execute 'highlight StslinePriColorFGSecColorBG guifg=' . g:StslinePriColor . ' guibg=' . g:StslineSecColor - execute 'highlight StslineSecColorFGPriColorBG guifg=' . g:StslineSecColor . ' guibg=' . g:StslinePriColor - - if !exists("b:GitBranch") || b:GitBranch == '' - execute 'highlight StslineBackColorFGPriColorBG guifg=' . g:StslineBackColor . ' guibg=' . g:StslinePriColor - endif -endfunction - -" Get git branch name -function! autoload#statusline#GetGitBranch() abort - let b:GitBranch = "" - try - let l:dir = expand('%:p:h') - let l:gitrevparse = system("git -C ".l:dir." rev-parse --abbrev-ref HEAD") - if !v:shell_error - let b:GitBranch = " " . substitute(l:gitrevparse, '\n', '', 'g') . " " - execute 'highlight StslineBackColorFGPriColorBG guifg=' . g:StslineBackColor . ' guibg=' . g:StslineSecColor - endif - catch - endtry -endfunction - -" Get filetype & custom icon. Put your most used file types first for optimized performance. -function! autoload#statusline#GetFileType() abort - if &filetype ==# 'typescript' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'html' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'scss' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'css' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'javascript' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'javascriptreact' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'markdown' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'sh' || &filetype ==# 'zsh' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'vim' - let b:FiletypeIcon = ' ' - elseif &filetype ==# '' - let b:FiletypeIcon = '' - elseif &filetype ==# 'rust' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'ruby' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'cpp' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'c' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'go' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'lua' - let b:FiletypeIcon = ' ' - elseif &filetype ==# 'haskel' - let b:FiletypeIcon = ' ' - else - let b:FiletypeIcon = ' ' - endif -endfunction - -" Automatically update git branch name when entering a buffer -augroup GetGitBranch - autocmd! - autocmd BufEnter * call autoload#statusline#GetGitBranch() -augroup END - -" Set active / inactive statusline when entering or leaving a buffer -augroup SetStsline - autocmd! - autocmd BufEnter,WinEnter * call autoload#statusline#ActivateStatusline() - autocmd BufLeave,WinLeave * call autoload#statusline#DeactivateStatusline() -augroup END - -call autoload#statusline#ActivateStatusline() - |
