---@module "utils.blinky"
--- This module provides a function to set up and disable the blinky cursor.

local M = {}

--- Function to set up blinky cursor
---@return boolean state true if the cursor is enabled, false otherwise
function M.enable()
  -- Set the cursor to a blinking state
  vim.opt.guicursor = {
    "n-v-c:block-Cursor/lCursor", -- Block cursor in normal, visual, and command modes
    "i:ver25-blinkwait700-blinkoff400-blinkon250-Cursor/lCursor", -- Blinking vertical line in insert mode
    "r-cr-o:hor20-Cursor/lCursor", -- Horizontal line cursor in replace, command-line replace, and operator-pending modes
    "a:blinkwait700-blinkoff400-blinkon250", -- Global blinking settings for all modes
  }
  return true
end

--- Function to disable blinky cursor
---@return boolean state true if the cursor is enabled, false otherwise
function M.disable()
  -- Set the cursor to a non-blinking state
  vim.opt.guicursor = "n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20"
  return false
end

---@function Function to setup blinky cursor option
---@param enable boolean|nil enable blinky cursor option
function M.setup(enable)
  if enable then
    vim.g.blinky = enable
  end
  if vim.g.blinky ~= false then
    M.enable()
  else
    M.disable()
  end
end

return M
