nvim-treesitter-context icon indicating copy to clipboard operation
nvim-treesitter-context copied to clipboard

feat: Lua API to get the status of treesitter context

Open UtkarshVerma opened this issue 1 year ago • 2 comments

Currently, there's no Lua API for knowing whether the plugin is enabled. I have to get the upvalue for tsc.toggle to query this.

-- Get up value for {func}'s {name} variable.
---@generic T
---@param func fun(...):T
---@param name string
---@return unknown?
---@nodiscard
function M.get_upvalue(func, name)
  local i = 1

  while true do
    local n, v = debug.getupvalue(func, i)
    if n == nil then
      return nil
    end

    if n == name then
      return v
    end

    i = i + 1
  end
end


local function toggle_context()
          local util = require("util")
          local tsc = require("treesitter-context")
          tsc.toggle()

          if util.get_upvalue(tsc.toggle, "enabled") then
            util.log.info("Enabled treesitter context", "Option")
          else
            util.log.warn("Disabled treesitter context", "Option")
          end
end

Having a function like tsc.status() would be really helpful.

UtkarshVerma avatar Feb 25 '24 02:02 UtkarshVerma