snacks.nvim/doc/snacks.nvim.txt
2024-11-14 08:13:56 +00:00

294 lines
12 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

*snacks.nvim.txt* For Neovim Last change: 2024 November 14
==============================================================================
Table of Contents *snacks.nvim-table-of-contents*
1. snacks.nvim |snacks.nvim-snacks.nvim|
- Features |snacks.nvim-snacks.nvim-features|
- Requirements |snacks.nvim-snacks.nvim-requirements|
- Installation |snacks.nvim-snacks.nvim-installation|
- Configuration |snacks.nvim-snacks.nvim-configuration|
- Usage |snacks.nvim-snacks.nvim-usage|
- Highlight Groups |snacks.nvim-snacks.nvim-highlight-groups|
==============================================================================
1. snacks.nvim *snacks.nvim-snacks.nvim*
A collection of small QoL plugins for Neovim.
FEATURES *snacks.nvim-snacks.nvim-features*
-----------------------------------------------------------------------------
Snack Description Setup
--------------------- ----------------------------------------------- -------
bigfile Deal with big files
bufdelete Deletebuffers without disrupting window layout
debug Pretty inspect & backtraces for debugging
git Useful functions for Git
gitbrowse Open the repo of the active file in the browser
(e.g., GitHub)
lazygit Open LazyGit in a float, auto-configure
colorscheme and integration with Neovim
notify Utility functions to work with Neovims
vim.notify
notifier Better and prettier vim.notify
quickfile Whendoing nvim somefile.txt, it will render the
file as quickly as possible, before loading
your plugins.
rename LSP-integratedfile renaming with support for
plugins like neo-tree.nvim and mini.files.
statuscolumn Pretty statuscolumn
terminal Createand toggle floating/split terminals
toggle Toggle keymaps integrated with which-key icons
/ colors
win Easily create and manage floating windows or
splits
words Auto-show LSP references and quickly navigate
between them
-----------------------------------------------------------------------------
REQUIREMENTS *snacks.nvim-snacks.nvim-requirements*
- **Neovim** >= 0.9.4
- for proper icons support:
- mini.icons <https://github.com/echasnovski/mini.icons> _(optional)_
- nvim-web-devicons <https://github.com/nvim-tree/nvim-web-devicons> _(optional)_
- a Nerd Font <https://www.nerdfonts.com/> **(optional)**
INSTALLATION *snacks.nvim-snacks.nvim-installation*
Install the plugin with your package manager:
LAZY.NVIM ~
[!important] A couple of plugins **require** `snacks.nvim` to be set-up early.
Setup creates some autocmds and does not load any plugins. Check the code
<https://github.com/folke/snacks.nvim/blob/main/lua/snacks/init.lua> to see
what it does.
[!tip] If you dont need these plugins, you can disable them, or skip `setup`
altogether.
>lua
{
"folke/snacks.nvim",
priority = 1000,
lazy = false,
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
},
}
<
For an in-depth setup of `snacks.nvim` with `lazy.nvim`, check the example
<https://github.com/folke/snacks.nvim?tab=readme-ov-file#-usage> below.
CONFIGURATION *snacks.nvim-snacks.nvim-configuration*
Please refer to the readme of each plugin for their specific configuration.
Default Options ~
>lua
---@class snacks.Config
---@field bigfile? snacks.bigfile.Config | { enabled: boolean }
---@field gitbrowse? snacks.gitbrowse.Config
---@field lazygit? snacks.lazygit.Config
---@field notifier? snacks.notifier.Config | { enabled: boolean }
---@field quickfile? { enabled: boolean }
---@field statuscolumn? snacks.statuscolumn.Config | { enabled: boolean }
---@field terminal? snacks.terminal.Config
---@field toggle? snacks.toggle.Config
---@field styles? table<string, snacks.win.Config>
---@field win? snacks.win.Config
---@field words? snacks.words.Config
{
styles = {},
bigfile = { enabled = true },
notifier = { enabled = true },
quickfile = { enabled = true },
statuscolumn = { enabled = true },
words = { enabled = true },
}
<
USAGE *snacks.nvim-snacks.nvim-usage*
See the example below for how to configure `snacks.nvim`.
>lua
{
"folke/snacks.nvim",
priority = 1000,
lazy = false,
---@type snacks.Config
opts = {
bigfile = { enabled = true },
notifier = {
enabled = true,
timeout = 3000,
},
quickfile = { enabled = true },
statuscolumn = { enabled = true },
words = { enabled = true },
styles = {
notification = {
wo = { wrap = true } -- Wrap notifications
}
}
},
keys = {
{ "<leader>un", function() Snacks.notifier.hide() end, desc = "Dismiss All Notifications" },
{ "<leader>bd", function() Snacks.bufdelete() end, desc = "Delete Buffer" },
{ "<leader>gg", function() Snacks.lazygit() end, desc = "Lazygit" },
{ "<leader>gb", function() Snacks.git.blame_line() end, desc = "Git Blame Line" },
{ "<leader>gB", function() Snacks.gitbrowse() end, desc = "Git Browse" },
{ "<leader>gf", function() Snacks.lazygit.log_file() end, desc = "Lazygit Current File History" },
{ "<leader>gl", function() Snacks.lazygit.log() end, desc = "Lazygit Log (cwd)" },
{ "<leader>cR", function() Snacks.rename() end, desc = "Rename File" },
{ "<c-/>", function() Snacks.terminal() end, desc = "Toggle Terminal" },
{ "<c-_>", function() Snacks.terminal() end, desc = "which_key_ignore" },
{ "]]", function() Snacks.words.jump(vim.v.count1) end, desc = "Next Reference", mode = { "n", "t" } },
{ "[[", function() Snacks.words.jump(-vim.v.count1) end, desc = "Prev Reference", mode = { "n", "t" } },
{
"<leader>N",
desc = "Neovim News",
function()
Snacks.win({
file = vim.api.nvim_get_runtime_file("doc/news.txt", false)[1],
width = 0.6,
height = 0.6,
wo = {
spell = false,
wrap = false,
signcolumn = "yes",
statuscolumn = " ",
conceallevel = 3,
},
})
end,
}
},
init = function()
vim.api.nvim_create_autocmd("User", {
pattern = "VeryLazy",
callback = function()
-- Setup some globals for debugging (lazy-loaded)
_G.dd = function(...)
Snacks.debug.inspect(...)
end
_G.bt = function()
Snacks.debug.backtrace()
end
vim.print = _G.dd -- Override print to use snacks for `:=` command
-- Create some toggle mappings
Snacks.toggle.option("spell", { name = "Spelling" }):map("<leader>us")
Snacks.toggle.option("wrap", { name = "Wrap" }):map("<leader>uw")
Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("<leader>uL")
Snacks.toggle.diagnostics():map("<leader>ud")
Snacks.toggle.line_number():map("<leader>ul")
Snacks.toggle.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 }):map("<leader>uc")
Snacks.toggle.treesitter():map("<leader>uT")
Snacks.toggle.option("background", { off = "light", on = "dark", name = "Dark Background" }):map("<leader>ub")
Snacks.toggle.inlay_hints():map("<leader>uh")
end,
})
end,
}
<
HIGHLIGHT GROUPS *snacks.nvim-snacks.nvim-highlight-groups*
Click to see all highlight groups ~
----------------------------------------------------------------------------
Highlight Group Default Group Description
--------------------------- ------------------ -----------------------------
SnacksNormal NormalFloat Normal for the float window
SnacksWinBar Title Title of the window
SnacksBackdrop none Backdrop
SnacksNormalNC NormalFloat Normal for non-current
windows
SnacksWinBarNC SnacksWinBar Title for non-current windows
SnacksNotifierInfo none Notification window for Info
SnacksNotifierWarn none Notification window for Warn
SnacksNotifierDebug none Notification window for Debug
SnacksNotifierError none Notification window for Error
SnacksNotifierTrace none Notification window for Trace
SnacksNotifierIconInfo none Icon for Info notification
SnacksNotifierIconWarn none Icon for Warn notification
SnacksNotifierIconDebug none Icon for Debug notification
SnacksNotifierIconError none Icon for Error notification
SnacksNotifierIconTrace none Icon for Trace notification
SnacksNotifierTitleInfo none Title for Info notification
SnacksNotifierTitleWarn none Title for Warn notification
SnacksNotifierTitleDebug none Title for Debug notification
SnacksNotifierTitleError none Title for Error notification
SnacksNotifierTitleTrace none Title for Trace notification
SnacksNotifierBorderInfo none Border for Info notification
SnacksNotifierBorderWarn none Border for Warn notification
SnacksNotifierBorderDebug none Border for Debug notification
SnacksNotifierBorderError none Border for Error notification
SnacksNotifierBorderTrace none Border for Trace notification
SnacksNotifierFooterInfo DiagnosticInfo Footer for Info notification
SnacksNotifierFooterWarn DiagnosticWarn Footer for Warn notification
SnacksNotifierFooterDebug DiagnosticHint Footer for Debug notification
SnacksNotifierFooterError DiagnosticError Footer for Error notification
SnacksNotifierFooterTrace DiagnosticHint Footer for Trace notification
----------------------------------------------------------------------------
Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>
vim:tw=78:ts=8:noet:ft=help:norl: