Files
glaze.nvim/doc/glaze.txt
2026-02-18 23:21:33 -05:00

248 lines
9.4 KiB
Plaintext

*glaze.txt* 🍩 Centralized Go binary management for Neovim plugins
Author: Tai Groot <tai@taigrr.com>
License: 0BSD
Homepage: https://github.com/taigrr/glaze.nvim
==============================================================================
CONTENTS *glaze-contents*
1. Introduction ........................... |glaze-introduction|
2. Setup .................................. |glaze-setup|
3. Commands ............................... |glaze-commands|
4. Keybinds ............................... |glaze-keybinds|
5. API .................................... |glaze-api|
6. Configuration .......................... |glaze-config|
7. Highlights ............................. |glaze-highlights|
8. Auto-update Checking ................... |glaze-auto-check|
9. For Plugin Authors ..................... |glaze-plugin-authors|
==============================================================================
1. INTRODUCTION *glaze-introduction*
Glaze (Go + Lazy = Glaze 🍩) is a centralized manager for Go binaries used by
Neovim plugins. Instead of each plugin implementing its own binary installer,
Glaze provides:
- A unified lazy.nvim-style UI for managing all Go binaries
- Parallel installation with progress tracking
- Cursor-aware keybinds for individual binary control
- Automatic update checking with notifications
- GOBIN/GOPATH awareness
- A simple registration API for plugin authors
==============================================================================
2. SETUP *glaze-setup*
Using lazy.nvim:
>lua
{
"taigrr/glaze.nvim",
config = function()
require("glaze").setup({})
end,
}
<
==============================================================================
3. COMMANDS *glaze-commands*
*:Glaze*
:Glaze Open the Glaze UI window.
*:GlazeUpdate*
:GlazeUpdate [name] Update all registered binaries, or a specific one.
*:GlazeInstall*
:GlazeInstall [name] Install missing binaries, or a specific one.
*:GlazeCheck*
:GlazeCheck Manually check for available updates.
==============================================================================
4. KEYBINDS *glaze-keybinds*
These keybinds are active in the Glaze UI window:
Key Action ~
`U` Update ALL registered binaries
`u` Update the binary under the cursor
`I` Install all missing binaries
`i` Install the binary under the cursor
`x` Abort all running tasks
`<CR>` Toggle detail expansion (URL, path, version, errors)
`q` Close the Glaze window
`<Esc>` Close the Glaze window
==============================================================================
5. API *glaze-api*
*glaze.setup()*
glaze.setup({opts})
Initialize Glaze with optional configuration.
*glaze.register()*
glaze.register({name}, {url}, {opts?})
Register a binary for management.
Parameters: ~
{name} Binary/executable name (string)
{url} Go module URL without version (string)
{opts} Optional table with:
- plugin: Name of the registering plugin (string)
- callback: Function called after install/update (function)
*glaze.unregister()*
glaze.unregister({name})
Remove a binary from management.
*glaze.binaries()*
glaze.binaries()
Returns all registered binaries as a table.
*glaze.is_installed()*
glaze.is_installed({name})
Returns true if the binary is found in PATH, $GOBIN, $GOPATH/bin,
or ~/go/bin.
*glaze.bin_path()*
glaze.bin_path({name})
Returns the full path to the binary, or nil if not found.
*glaze.status()*
glaze.status({name})
Returns "installed", "missing", or "unknown".
*glaze-runner-api*
Runner API (require("glaze.runner")):
runner.update({names}) Update specific binaries
runner.update_all() Update all registered binaries
runner.install({names}) Install specific binaries
runner.install_missing() Install all missing binaries
runner.abort() Stop all running tasks
runner.is_running() Check if tasks are running
runner.tasks() Get current task list
runner.stats() Get task statistics
runner.on_update({fn}) Register callback for task state changes
*glaze-checker-api*
Checker API (require("glaze.checker")):
checker.check() Check for updates (with notifications)
checker.auto_check() Check only if enough time has passed
checker.get_update_info() Get cached update info table
==============================================================================
6. CONFIGURATION *glaze-config*
Default configuration:
>lua
require("glaze").setup({
ui = {
border = "rounded",
size = { width = 0.7, height = 0.8 },
icons = {
pending = "○",
running = "◐",
done = "●",
error = "✗",
binary = "󰆍",
},
use_system_theming = false, -- Use nvim theme instead of doughnut colors
},
concurrency = 4,
go_cmd = { "go" }, -- Auto-detects goenv
auto_install = {
enabled = true, -- Auto-install missing binaries on register
silent = false, -- Suppress install notifications
},
auto_check = {
enabled = true, -- Auto-check for updates (disabling also disables auto_update)
frequency = "daily", -- "daily", "weekly", or hours (number)
},
auto_update = {
enabled = false, -- Auto-update when newer versions found (requires auto_check)
},
})
<
==============================================================================
7. HIGHLIGHTS *glaze-highlights*
All highlight groups are prefixed with "Glaze". When `use_system_theming` is
false (default), a doughnut-themed pink/magenta colors are used.
Group Description ~
GlazeH1 Main title
GlazeH2 Section headers
GlazeTitle Window title
GlazeBinary Binary names
GlazeUrl Module URLs (italic)
GlazePlugin Plugin names
GlazeDone Success status
GlazeError Error status
GlazeRunning In-progress status
GlazePending Pending status
GlazeProgressDone Progress bar (filled)
GlazeProgressTodo Progress bar (empty)
GlazeVersion Version info
GlazeTime Timing info (italic)
GlazeNormal Normal text (links to NormalFloat)
GlazeComment Comments (links to Comment)
GlazeDimmed Dimmed text (links to Conceal)
GlazeBorder Window border
GlazeButton Inactive button (links to CursorLine)
GlazeButtonActive Active/selected button
GlazeKey Keybind hints
GlazeIcon Default icon color
GlazeIconDone Done icon
GlazeIconError Error icon
GlazeIconRunning Running/spinner icon
GlazeBold Bold text
GlazeItalic Italic text
==============================================================================
8. AUTO-UPDATE CHECKING *glaze-auto-check*
Glaze can automatically check for newer versions of your registered binaries.
When enabled, Glaze checks on setup if enough time has passed since the last
check. It uses `go list -m -json <module>@latest` to find the latest version
and `go version -m <binary>` to determine the installed version.
State is stored in: `vim.fn.stdpath("data") .. "/glaze/state.json"`
Use `:GlazeCheck` to manually trigger a check at any time.
In the UI, binaries with available updates show a ⬆ indicator with version
info (e.g., "v1.0.0 → v1.1.0").
==============================================================================
9. FOR PLUGIN AUTHORS *glaze-plugin-authors*
Register your binaries in your plugin's setup:
>lua
local ok, glaze = pcall(require, "glaze")
if ok then
glaze.register("mytool", "github.com/me/mytool", {
plugin = "myplugin.nvim",
callback = function(success)
if success then
vim.notify("mytool updated!")
end
end,
})
end
<
You can still provide plugin-specific update commands:
>lua
vim.api.nvim_create_user_command("MyPluginUpdate", function()
require("glaze.runner").update({ "mytool" })
end, {})
<
==============================================================================
vim:tw=78:ts=8:ft=help:norl: