summaryrefslogtreecommitdiff
path: root/fnl/config/lualine.fnl
blob: 71c5af4ae2ae0145ac8ec37adf05a7a4897d0fb8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
;; Statusbar.
(module config.lualine {autoload {util util}})

(def- ignore [:help
              :packer
              :neogitstatus
              :NvimTree
              :lir
              :spectre_panel
              :alpha
              :Outline
              :NeogitStatus
              :NeogitCommitMessage
              :TelescopePrompt
              ""])

(defn- active-clients [] (let [clients (vim.lsp.buf_get_clients)
                              client_names []]
                          (each [_ client (pairs clients)]
                            (if (not= client.name :null-ls)
                                (table.insert client_names client.name)))
                          (if (> (length client_names) 0)
                              (table.concat client_names ", ")
                              "")))

(defn- hide-in-width [] (> (vim.fn.winwidth 0) 80))

(def- diagnostics {1 :diagnostics
                   :sources [:nvim_diagnostic]
                   :sections [:error :warn]
                   ;; :symbols {:error "x " :warn "! "}
                   :colored false
                   :update_in_insert false
                   :always_visible true})

(def- diff {1 :diff
            :colored false
            :symbols {:added " " :modified " " :removed " "}
            :cond hide-in-width})

(def- branch {1 "b:gitsigns_head" :icon " " :cond hide-in-width})

(def- filetype {1 :filetype :cond hide_in_width :color {}})

(def- language-server {1 active-clients :padding 0 :cond hide_in_width})

(let [lualine (util.load-plugin :lualine)]
  (lualine.setup {:options {:icons_enabled true
                            :theme :auto
                            :component_separators {:left "" :right ""}
                            :section_separators {:left "" :right ""}
                            :disabled_filetypes ignore
                            :always_divide_middle true}
                  :sections {:lualine_a [:mode]
                             :lualine_b [branch diff :filename]
                             :lualine_c {}
                             :lualine_x [filetype language-server diagnostics]
                             :lualine_y {}
                             :lualine_z [:location :progress :encoding]}
                  :inactive_sections {:lualine_a [:mode]
                                      :lualine_b [:filename]
                                      :lualine_c {}
                                      :lualine_x {}
                                      :lualine_y {}
                                      :lualine_z [:location
                                                  :progress
                                                  :encoding]}
                  :extensions {}}))