all repos — dotfiles @ 4b4ed3c815afc4922f3e3d971d46fd6ec1c9fbaf

my *nix dotfiles

config/nvim/lua/statusline.lua (view raw)

 1-- set highlights for statusline sections
 2vim.api.nvim_exec(
 3[[
 4	hi PrimaryBlock ctermfg=06 ctermbg=00
 5	hi SecondaryBlock   ctermfg=07 ctermbg=00
 6	hi Blanks   ctermfg=08 ctermbg=00
 7  hi GitClean ctermfg=02 ctermbg=00
 8  hi GitDirty ctermfg=01 ctermbg=00
 9]], false)
10
11local clean = ''
12local dirty = '×'
13
14local function are_we_in_git()
15  local handle = io.popen('git rev-parse --is-inside-work-tree 2> /dev/null')
16  local out = handle:read('*a'):gsub('\n', '')
17  if out == 'true' then
18    in_git = true
19  end
20end
21
22local function is_clean()
23  if in_git then
24    local handle = io.popen('git status --porcelain 2> /dev/null')
25    local status = handle:read('*a')
26
27    if status ~= '' then return false end
28    return true
29  end
30end
31
32local function git_sym()
33  if in_git then
34    if is_clean() then
35      return ' %#GitClean#' .. clean
36    else
37      return ' %#GitDirty#' .. dirty
38    end
39  end
40end
41
42local function git_branch()
43  if in_git then
44    local handle = io.popen('git branch --show-current 2> /dev/null')
45    local branch = handle:read('*a'):gsub('\n', '')
46    local rc = { handle:close() }
47    if rc[1] then
48      local out = ' ' .. branch .. git_sym()
49      return out
50    end
51  end
52    return ''
53end
54
55are_we_in_git()
56local stl = {
57  '%#PrimaryBlock#',
58  '%f',
59  '%#Blanks#',
60  '%m',
61  '%#SecondaryBlock#',
62  git_branch(),
63  '%=',
64  '%#SecondaryBlock#',
65  '%l,%c ',
66  '%#PrimaryBlock#',
67  '%{&filetype}',
68}
69
70vim.opt_global.statusline = table.concat(stl)