From d9bc0bbc4c01f6ca8c6b27065d496e0926d3c90f Mon Sep 17 00:00:00 2001
From: Gustaf Rydholm <gustaf.rydholm@gmail.com>
Date: Tue, 14 Feb 2023 00:57:05 +0100
Subject: Refactor

---
 lua/no-clown-fiesta/groups/alpha.lua      |  2 +-
 lua/no-clown-fiesta/groups/git.lua        |  2 +-
 lua/no-clown-fiesta/groups/highlights.lua | 24 +++++---------
 lua/no-clown-fiesta/groups/hop.lua        |  2 +-
 lua/no-clown-fiesta/groups/init.lua       | 17 ++++++++++
 lua/no-clown-fiesta/groups/lazy.lua       |  2 +-
 lua/no-clown-fiesta/groups/lir.lua        |  2 +-
 lua/no-clown-fiesta/groups/lsp.lua        | 30 +++++++++++------
 lua/no-clown-fiesta/groups/markdown.lua   |  2 +-
 lua/no-clown-fiesta/groups/neogit.lua     |  2 +-
 lua/no-clown-fiesta/groups/nvim-cmp.lua   |  2 +-
 lua/no-clown-fiesta/groups/nvim-tree.lua  |  2 +-
 lua/no-clown-fiesta/groups/statusline.lua |  2 +-
 lua/no-clown-fiesta/groups/telescope.lua  |  2 +-
 lua/no-clown-fiesta/groups/treesitter.lua | 16 ++++-----
 lua/no-clown-fiesta/groups/whichkey.lua   |  2 +-
 lua/no-clown-fiesta/init.lua              | 54 +++++--------------------------
 lua/no-clown-fiesta/settings.lua          |  7 ++--
 lua/no-clown-fiesta/util.lua              | 10 +++---
 19 files changed, 82 insertions(+), 100 deletions(-)
 create mode 100644 lua/no-clown-fiesta/groups/init.lua

(limited to 'lua')

diff --git a/lua/no-clown-fiesta/groups/alpha.lua b/lua/no-clown-fiesta/groups/alpha.lua
index 167019a..402fbc4 100644
--- a/lua/no-clown-fiesta/groups/alpha.lua
+++ b/lua/no-clown-fiesta/groups/alpha.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     AlphaHeader = { fg = palette.gray_blue },
     AlphaButtons = { fg = palette.medium_gray },
diff --git a/lua/no-clown-fiesta/groups/git.lua b/lua/no-clown-fiesta/groups/git.lua
index 4c71de3..66323d2 100644
--- a/lua/no-clown-fiesta/groups/git.lua
+++ b/lua/no-clown-fiesta/groups/git.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     SignAdd = { fg = palette.sign_add },
     SignChange = { fg = palette.sign_change },
diff --git a/lua/no-clown-fiesta/groups/highlights.lua b/lua/no-clown-fiesta/groups/highlights.lua
index b0cd74a..b2bf6f2 100644
--- a/lua/no-clown-fiesta/groups/highlights.lua
+++ b/lua/no-clown-fiesta/groups/highlights.lua
@@ -1,10 +1,10 @@
 local M = {}
 
-function M.highlight(palette, options)
+function M.highlight(palette, opts)
   return {
     Normal = {
       fg = palette.fg,
-      bg = options.transparent and palette.none or palette.bg,
+      bg = opts.transparent and palette.none or palette.bg,
     },
     SignColumn = { bg = palette.bg },
     MsgArea = { fg = palette.fg, bg = palette.bg },
@@ -22,7 +22,7 @@ function M.highlight(palette, options)
     Comment = vim.tbl_extend(
       "force",
       { fg = palette.medium_gray },
-      options.styles.comments
+      opts.styles.comments
     ),
     Folded = { fg = palette.light_gray, bg = palette.alt_bg },
     FoldColumn = { fg = palette.light_gray, bg = palette.alt_bg },
@@ -67,11 +67,7 @@ function M.highlight(palette, options)
     Question = { fg = palette.cyan },
     EndOfBuffer = { fg = palette.bg },
     NonText = { fg = palette.bg },
-    Variable = vim.tbl_extend(
-      "force",
-      { fg = palette.white },
-      options.styles.variables
-    ),
+    Variable = vim.tbl_extend("force", { fg = palette.white }, opts.styles.variables),
     String = { fg = palette.medium_gray_blue },
     Character = { fg = palette.green },
     Constant = { fg = palette.white },
@@ -79,17 +75,13 @@ function M.highlight(palette, options)
     Boolean = { fg = palette.red },
     Float = { fg = palette.red },
     Identifier = { fg = palette.white },
-    Function = vim.tbl_extend("force", { fg = palette.cyan }, options.styles.functions),
+    Function = vim.tbl_extend("force", { fg = palette.cyan }, opts.styles.functions),
     Operator = { fg = palette.white },
-    Type = vim.tbl_extend("force", { fg = palette.white }, options.styles.type),
+    Type = vim.tbl_extend("force", { fg = palette.white }, opts.styles.type),
     StorageClass = { fg = palette.gray_blue },
     Structure = { fg = palette.gray_blue },
     Typedef = { fg = palette.white },
-    Keyword = vim.tbl_extend(
-      "force",
-      { fg = palette.gray_blue },
-      options.styles.keywords
-    ),
+    Keyword = vim.tbl_extend("force", { fg = palette.gray_blue }, opts.styles.keywords),
     Statement = { fg = palette.gray_blue },
     Conditional = { fg = palette.gray_blue },
     Repeat = { fg = palette.gray_blue },
@@ -108,7 +100,7 @@ function M.highlight(palette, options)
     SpecialComment = vim.tbl_extend(
       "force",
       { fg = palette.medium_gray },
-      options.styles.comments
+      opts.styles.comments
     ),
     Underlined = { underline = true },
     Bold = { bold = true },
diff --git a/lua/no-clown-fiesta/groups/hop.lua b/lua/no-clown-fiesta/groups/hop.lua
index caa16b2..65e0dab 100644
--- a/lua/no-clown-fiesta/groups/hop.lua
+++ b/lua/no-clown-fiesta/groups/hop.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     HopNextKey = { fg = palette.cyan, bold = true },
     HopNextKey1 = { fg = palette.red, bold = true },
diff --git a/lua/no-clown-fiesta/groups/init.lua b/lua/no-clown-fiesta/groups/init.lua
new file mode 100644
index 0000000..7e81328
--- /dev/null
+++ b/lua/no-clown-fiesta/groups/init.lua
@@ -0,0 +1,17 @@
+return {
+  require "no-clown-fiesta.groups.alpha",
+  require "no-clown-fiesta.groups.git",
+  require "no-clown-fiesta.groups.highlights",
+  require "no-clown-fiesta.groups.hop",
+  require "no-clown-fiesta.groups.lazy",
+  require "no-clown-fiesta.groups.lir",
+  require "no-clown-fiesta.groups.lsp",
+  require "no-clown-fiesta.groups.markdown",
+  require "no-clown-fiesta.groups.neogit",
+  require "no-clown-fiesta.groups.nvim-cmp",
+  require "no-clown-fiesta.groups.nvim-tree",
+  require "no-clown-fiesta.groups.statusline",
+  require "no-clown-fiesta.groups.telescope",
+  require "no-clown-fiesta.groups.treesitter",
+  require "no-clown-fiesta.groups.whichkey",
+}
diff --git a/lua/no-clown-fiesta/groups/lazy.lua b/lua/no-clown-fiesta/groups/lazy.lua
index 2922cd7..850f2f8 100644
--- a/lua/no-clown-fiesta/groups/lazy.lua
+++ b/lua/no-clown-fiesta/groups/lazy.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     LazyButton = { fg = palette.fg },
     LazyButtonActive = { fg = palette.orange, bg = palette.accent },
diff --git a/lua/no-clown-fiesta/groups/lir.lua b/lua/no-clown-fiesta/groups/lir.lua
index 47071b7..d0579ca 100644
--- a/lua/no-clown-fiesta/groups/lir.lua
+++ b/lua/no-clown-fiesta/groups/lir.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     LirFloatNormal = { fg = palette.fg, bg = palette.alt_bg },
     LirDir = { fg = palette.white },
diff --git a/lua/no-clown-fiesta/groups/lsp.lua b/lua/no-clown-fiesta/groups/lsp.lua
index face8d3..553ec2c 100644
--- a/lua/no-clown-fiesta/groups/lsp.lua
+++ b/lua/no-clown-fiesta/groups/lsp.lua
@@ -1,26 +1,38 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     LspReferenceRead = { bg = "#36383F" },
     LspReferenceText = { bg = "#36383F" },
     LspReferenceWrite = { bg = "#36383f" },
-
     DiagnosticError = { fg = palette.error },
     DiagnosticWarn = { fg = palette.warning },
     DiagnosticInfo = { fg = palette.info },
     DiagnosticHint = { fg = palette.hint },
-
     DiagnosticVirtualTextError = { fg = palette.error },
     DiagnosticVirtualTextWarn = { fg = palette.warning },
     DiagnosticVirtualTextInfo = { fg = palette.info },
     DiagnosticVirtualTextHint = { fg = palette.hint },
-
-    DiagnosticUnderlineError = { undercurl = true, sp = palette.error },
-    DiagnosticUnderlineWarn = { undercurl = true, sp = palette.warning },
-    DiagnosticUnderlineInfo = { undercurl = true, sp = palette.info },
-    DiagnosticUnderlineHint = { undercurl = true, sp = palette.hint },
-
+    DiagnosticUnderlineError = vim.tbl_extend(
+      "force",
+      { sp = palette.error },
+      opts.styles.lsp
+    ),
+    DiagnosticUnderlineWarn = vim.tbl_extend(
+      "force",
+      { sp = palette.warning },
+      opts.styles.lsp
+    ),
+    DiagnosticUnderlineInfo = vim.tbl_extend(
+      "force",
+      { sp = palette.info },
+      opts.styles.lsp
+    ),
+    DiagnosticUnderlineHint = vim.tbl_extend(
+      "force",
+      { sp = palette.hint },
+      opts.styles.lsp
+    ),
     LspSignatureActiveParameter = { bg = palette.alt_bg, bold = true },
     LspCodeLens = { fg = palette.comment },
   }
diff --git a/lua/no-clown-fiesta/groups/markdown.lua b/lua/no-clown-fiesta/groups/markdown.lua
index 6147a25..3c282a4 100644
--- a/lua/no-clown-fiesta/groups/markdown.lua
+++ b/lua/no-clown-fiesta/groups/markdown.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     markdownBlockquote = { fg = palette.accent },
     markdownBold = { fg = palette.yellow, bold = true },
diff --git a/lua/no-clown-fiesta/groups/neogit.lua b/lua/no-clown-fiesta/groups/neogit.lua
index 14d9fb1..511d1c9 100644
--- a/lua/no-clown-fiesta/groups/neogit.lua
+++ b/lua/no-clown-fiesta/groups/neogit.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     NeogitNotificationInfo = { fg = palette.sign_add },
     NeogitNotificationWarning = { fg = palette.warning },
diff --git a/lua/no-clown-fiesta/groups/nvim-cmp.lua b/lua/no-clown-fiesta/groups/nvim-cmp.lua
index 364af5b..4f188e2 100644
--- a/lua/no-clown-fiesta/groups/nvim-cmp.lua
+++ b/lua/no-clown-fiesta/groups/nvim-cmp.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     CmpItemAbbr = { fg = palette.fg },
     CmpItemAbbrDeprecated = { fg = palette.red },
diff --git a/lua/no-clown-fiesta/groups/nvim-tree.lua b/lua/no-clown-fiesta/groups/nvim-tree.lua
index c110435..53fb408 100644
--- a/lua/no-clown-fiesta/groups/nvim-tree.lua
+++ b/lua/no-clown-fiesta/groups/nvim-tree.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     NvimTreeFolderIcon = { fg = palette.white },
     NvimTreeIndentMarker = { fg = palette.alt_bg },
diff --git a/lua/no-clown-fiesta/groups/statusline.lua b/lua/no-clown-fiesta/groups/statusline.lua
index ede108a..759ec61 100644
--- a/lua/no-clown-fiesta/groups/statusline.lua
+++ b/lua/no-clown-fiesta/groups/statusline.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     StatusLine = { fg = palette.gray, bg = palette.bg },
     StatusLineNC = { fg = palette.alt_bg, bg = palette.alt_bg },
diff --git a/lua/no-clown-fiesta/groups/telescope.lua b/lua/no-clown-fiesta/groups/telescope.lua
index 71c4aaa..b32086b 100644
--- a/lua/no-clown-fiesta/groups/telescope.lua
+++ b/lua/no-clown-fiesta/groups/telescope.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     TelescopeNormal = { fg = palette.fg, bg = palette.bg },
     TelescopeSelection = { fg = palette.fg, bg = palette.accent },
diff --git a/lua/no-clown-fiesta/groups/treesitter.lua b/lua/no-clown-fiesta/groups/treesitter.lua
index b7cee4a..dce369b 100644
--- a/lua/no-clown-fiesta/groups/treesitter.lua
+++ b/lua/no-clown-fiesta/groups/treesitter.lua
@@ -1,18 +1,16 @@
 local M = {}
 
-local unpack = unpack
-
-function M.highlight(palette, options)
+function M.highlight(palette, opts)
   return {
     ["@comment"] = vim.tbl_extend(
       "force",
       { fg = palette.medium_gray },
-      options.styles.comments
+      opts.styles.comments
     ),
     ["@annotation"] = { fg = palette.white },
     ["@attribute"] = { fg = palette.white },
     ["@constructor"] = { fg = palette.cyan },
-    ["@type"] = vim.tbl_extend("force", { fg = palette.white }, options.styles.type),
+    ["@type"] = vim.tbl_extend("force", { fg = palette.white }, opts.styles.type),
     ["@type.builtin"] = { fg = palette.white },
     ["@conditional"] = { fg = palette.gray_blue },
     ["@exception"] = { fg = palette.red },
@@ -20,12 +18,12 @@ function M.highlight(palette, options)
     ["@keyword"] = vim.tbl_extend(
       "force",
       { fg = palette.gray_blue },
-      options.styles.keywords
+      opts.styles.keywords
     ),
     ["@keyword.function"] = vim.tbl_extend(
       "force",
       { fg = palette.gray_blue },
-      options.styles.keywords
+      opts.styles.keywords
     ),
     ["@label"] = { fg = palette.white },
     ["@namespace"] = { fg = palette.white },
@@ -40,7 +38,7 @@ function M.highlight(palette, options)
     ["@function"] = vim.tbl_extend(
       "force",
       { fg = palette.cyan },
-      options.styles.functions
+      opts.styles.functions
     ),
     ["@function.builtin"] = { fg = palette.cyan },
     ["@method"] = { fg = palette.cyan },
@@ -49,7 +47,7 @@ function M.highlight(palette, options)
     ["@variable"] = vim.tbl_extend(
       "force",
       { fg = palette.white },
-      options.styles.variables
+      opts.styles.variables
     ),
     ["@variable.builtin"] = { fg = palette.white },
     ["@property"] = { fg = palette.white },
diff --git a/lua/no-clown-fiesta/groups/whichkey.lua b/lua/no-clown-fiesta/groups/whichkey.lua
index 66ac153..6af4936 100644
--- a/lua/no-clown-fiesta/groups/whichkey.lua
+++ b/lua/no-clown-fiesta/groups/whichkey.lua
@@ -1,6 +1,6 @@
 local M = {}
 
-function M.highlight(palette)
+function M.highlight(palette, opts)
   return {
     WhichKey = { fg = palette.light_gray },
     WhichKeySeperator = { fg = palette.gray },
diff --git a/lua/no-clown-fiesta/init.lua b/lua/no-clown-fiesta/init.lua
index 8b72320..8bad306 100644
--- a/lua/no-clown-fiesta/init.lua
+++ b/lua/no-clown-fiesta/init.lua
@@ -1,15 +1,15 @@
 local M = {}
 
-function M.setup(options)
+function M.setup(opts)
   local settings = require "no-clown-fiesta.settings"
-  if options then
-    settings.set(options)
+  if opts then
+    settings.set(opts)
   end
 end
 
 function M.load()
   local settings = require "no-clown-fiesta.settings"
-  local options = settings.options
+  local opts = settings.opts
 
   vim.api.nvim_command "hi clear"
   if vim.fn.exists "syntax_on" then
@@ -22,49 +22,11 @@ function M.load()
 
   local util = require "no-clown-fiesta.util"
   local palette = require "no-clown-fiesta.palette"
-  local highlights = require("no-clown-fiesta.groups.highlights").highlight(
-    palette,
-    options
-  )
+  local groups = require "no-clown-fiesta.groups"
 
-  local alpha = require("no-clown-fiesta.groups.alpha").highlight(palette)
-  local git = require("no-clown-fiesta.groups.git").highlight(palette)
-  local hop = require("no-clown-fiesta.groups.hop").highlight(palette)
-  local lazy = require("no-clown-fiesta.groups.lazy").highlight(palette)
-  local lir = require("no-clown-fiesta.groups.lir").highlight(palette)
-  local lsp = require("no-clown-fiesta.groups.lsp").highlight(palette)
-  local markdown = require("no-clown-fiesta.groups.markdown").highlight(palette)
-  local neogit = require("no-clown-fiesta.groups.neogit").highlight(palette)
-  local nvimtree = require("no-clown-fiesta.groups.nvim-tree").highlight(palette)
-  local nvimcmp = require("no-clown-fiesta.groups.nvim-cmp").highlight(palette)
-  local statusline = require("no-clown-fiesta.groups.statusline").highlight(palette)
-  local telescope = require("no-clown-fiesta.groups.telescope").highlight(palette)
-  local treesitter = require("no-clown-fiesta.groups.treesitter").highlight(
-    palette,
-    options
-  )
-  local whichkey = require("no-clown-fiesta.groups.whichkey").highlight(palette)
-
-  local skeletons = {
-    alpha,
-    git,
-    hop,
-    highlights,
-    lazy,
-    lir,
-    lsp,
-    markdown,
-    neogit,
-    nvimtree,
-    nvimcmp,
-    statusline,
-    telescope,
-    treesitter,
-    whichkey,
-  }
-
-  for _, skeleton in ipairs(skeletons) do
-    util.initialise(skeleton)
+  for _, group in ipairs(groups) do
+    group = group.highlight(palette, opts)
+    util.initialise(group)
   end
 end
 
diff --git a/lua/no-clown-fiesta/settings.lua b/lua/no-clown-fiesta/settings.lua
index 78f78ad..827a80c 100644
--- a/lua/no-clown-fiesta/settings.lua
+++ b/lua/no-clown-fiesta/settings.lua
@@ -8,13 +8,14 @@ local DEFAULT = {
     functions = {},
     variables = {},
     type = { bold = true },
+    lsp = { underline = true },
   },
 }
 
-M.options = {}
+M.opts = {}
 
-function M.set(options)
-  M.options = vim.tbl_deep_extend("force", DEFAULT, options or {})
+function M.set(opts)
+  M.opts = vim.tbl_deep_extend("force", DEFAULT, opts or {})
 end
 
 M.set()
diff --git a/lua/no-clown-fiesta/util.lua b/lua/no-clown-fiesta/util.lua
index 46e66d3..e88d742 100644
--- a/lua/no-clown-fiesta/util.lua
+++ b/lua/no-clown-fiesta/util.lua
@@ -1,12 +1,12 @@
 local M = {}
 
-local function highlight(group, properties)
-  vim.api.nvim_set_hl(0, group, properties)
+local function highlight(name, value)
+  vim.api.nvim_set_hl(0, name, value)
 end
 
-function M.initialise(skeleton)
-  for group, properties in pairs(skeleton) do
-    highlight(group, properties)
+function M.initialise(group)
+  for name, value in pairs(group) do
+    highlight(name, value)
   end
 end
 
-- 
cgit v1.2.3-70-g09d2