2021-01-21

Making my own Statusline

I don't like flashy statuslines. I use lightline right now, and it's a little too colorful for me. Ideally here's what I want my statusline to look like -

| N | 2021-01-21 Making my own statusline.md |               | 100% | markdown |

This, in white text, on a black background.

I found this piece that looks helpful.

I'm going to get back to this in a few days, hopefully I'll have a little more time on my hands.

Results

I was able to get something similar to what I wanted by messing around with lightline. This article helped. It actually looks really nice! Here's the code -

let g:lightline = {
      \ 'mode_map': {
        \ 'n' : '  N',
        \ 'i' : '  I',
        \ 'R' : '  R',
        \ 'v' : '  V',
        \ 'V' : '  VL',
        \ "\<C-v>": '  VB',
        \ 'c' : '  C',
        \ 's' : '  S',
        \ 'S' : '  SL',
        \ "\<C-s>": '  SB',
        \ 't': '  T',
        \ },
      \ 'colorscheme': 'atlas'
      \ }

let s:p = {
  \ "normal": {},
  \ "inactive": {},
  \ "insert": {},
  \ "replace": {},
  \ "visual": {},
  \ "tabline": {}
  \ }

let s:black = ["#000000", "Black"]
let s:white = ["#ffffff", "White"]
let s:dark_grey = ["#666666", "White"]

let s:p.normal.left = [[s:white, s:black, 'bold'], [s:white, s:black]]
let s:p.normal.middle = [[s:white, s:black]]
let s:p.normal.right = [[s:white, s:black], [s:white, s:black]]
let s:p.normal.error = [[["#c0c0c0", 235], ["#f43753", 203]]]
let s:p.normal.warning = [[["#c0c0c0", 235], ["#ffc24b", 215]]]

let s:p.inactive.left = [[s:white, s:black, 'bold'], [s:white, s:black]]
let s:p.inactive.middle = [[s:white, s:black]]
let s:p.inactive.right = [[s:white, s:black], [s:white, s:black]]

let s:p.insert.left = [[s:white, s:black, 'bold'], [s:white, s:black]]
let s:p.insert.middle = [[s:white, s:black]]
let s:p.insert.right = [[s:white, s:black], [s:white, s:black]]

let s:p.replace.left = [[s:white, s:black, 'bold'], [s:white, s:black]]
let s:p.replace.middle = [[s:white, s:black]]
let s:p.replace.right = [[s:white, s:black], [s:white, s:black]]

let s:p.visual.left = [[s:white, s:black, 'bold'], [s:white, s:black]]
let s:p.visual.middle = [[s:white, s:black]]
let s:p.visual.right = [[s:white, s:black], [s:white, s:black]]

let s:p.tabline.left = [[s:white, s:black]]
let s:p.tabline.tabsel = [[s:white, s:black, 'bold']]
let s:p.tabline.middle = [[s:white, s:black]]
let s:p.tabline.right = [[s:white, s:black]]

let g:lightline#colorscheme#atlas#palette = lightline#colorscheme#flatten(s:p)