987 lines
37 KiB
Plaintext
987 lines
37 KiB
Plaintext
*noice.nvim.txt* For Neovim Last change: 2024 July 25
|
||
|
||
==============================================================================
|
||
Table of Contents *noice.nvim-table-of-contents*
|
||
|
||
1. Noice (Nice, Noise, Notice) |noice.nvim-noice-(nice,-noise,-notice)|
|
||
- Features |noice.nvim-noice-(nice,-noise,-notice)-features|
|
||
- Status |noice.nvim-noice-(nice,-noise,-notice)-status|
|
||
- Requirements |noice.nvim-noice-(nice,-noise,-notice)-requirements|
|
||
- Installation |noice.nvim-noice-(nice,-noise,-notice)-installation|
|
||
- Configuration |noice.nvim-noice-(nice,-noise,-notice)-configuration|
|
||
- Filters |noice.nvim-noice-(nice,-noise,-notice)-filters|
|
||
- Views |noice.nvim-noice-(nice,-noise,-notice)-views|
|
||
- Formatting |noice.nvim-noice-(nice,-noise,-notice)-formatting|
|
||
- Routes |noice.nvim-noice-(nice,-noise,-notice)-routes|
|
||
- Statusline Components|noice.nvim-noice-(nice,-noise,-notice)-statusline-components|
|
||
- Pickers |noice.nvim-noice-(nice,-noise,-notice)-pickers|
|
||
- Telescope |noice.nvim-noice-(nice,-noise,-notice)-telescope|
|
||
- Fzf Lua |noice.nvim-noice-(nice,-noise,-notice)-fzf-lua|
|
||
- Usage |noice.nvim-noice-(nice,-noise,-notice)-usage|
|
||
- Highlight Groups |noice.nvim-noice-(nice,-noise,-notice)-highlight-groups|
|
||
2. Links |noice.nvim-links|
|
||
|
||
==============================================================================
|
||
1. Noice (Nice, Noise, Notice) *noice.nvim-noice-(nice,-noise,-notice)*
|
||
|
||
Highly experimental plugin that completely replaces the UI for `messages`,
|
||
`cmdline` and the `popupmenu`.
|
||
|
||
|
||
FEATURES *noice.nvim-noice-(nice,-noise,-notice)-features*
|
||
|
||
- fully **configurable views** like nvim-notify <https://github.com/rcarriga/nvim-notify>,
|
||
splits, popups, virtual text, ..
|
||
- use **filters** to **route messages** to different views
|
||
- message **highlights** are preserved in the views (like the colors of `:hi`)
|
||
- command output like |:messages|
|
||
is shown in normal buffers, which makes it much easier to work with
|
||
- `:Noice` command to show a full message history
|
||
- no more |:h more-prompt|
|
||
- fully customizable **cmdline** with icons
|
||
- **syntax highlighting** for `vim` and `lua` on the **cmdline**
|
||
- **statusline** components
|
||
- open message history in telescope.nvim <https://github.com/nvim-telescope/telescope.nvim> or fzf-lua <https://github.com/ibhagwan/fzf-lua>
|
||
|
||
|
||
STATUS *noice.nvim-noice-(nice,-noise,-notice)-status*
|
||
|
||
**Noice** is using the new experimental `vim.ui_attach` API, so issues are to
|
||
be expected. It is highly recommended to use Neovim nightly, since a bunch of
|
||
issues have already been fixed upstream. Check this tracking issue
|
||
<https://github.com/folke/noice.nvim/issues/6> for a list of known issues.
|
||
|
||
|
||
REQUIREMENTS *noice.nvim-noice-(nice,-noise,-notice)-requirements*
|
||
|
||
- Neovim >= 0.9.0 **(nightly highly recommended)**
|
||
- nui.nvim <https://github.com/MunifTanjim/nui.nvim>used for proper rendering and multiple views
|
||
- nvim-notify <https://github.com/rcarriga/nvim-notify>notification view _(optional)_
|
||
- a Nerd Font <https://www.nerdfonts.com/> **(optional)**
|
||
- nvim-treesitter <https://github.com/nvim-treesitter/nvim-treesitter/> **(optional, but highly recommended)**
|
||
used for highlighting the cmdline and lsp docs. Make sure to install the parsers for
|
||
`vim`, `regex`, `lua`, `bash`, `markdown` and `markdown_inline`
|
||
|
||
|
||
INSTALLATION *noice.nvim-noice-(nice,-noise,-notice)-installation*
|
||
|
||
Install the plugin with your preferred package manager:
|
||
|
||
>lua
|
||
-- lazy.nvim
|
||
{
|
||
"folke/noice.nvim",
|
||
event = "VeryLazy",
|
||
opts = {
|
||
-- add any options here
|
||
},
|
||
dependencies = {
|
||
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||
"MunifTanjim/nui.nvim",
|
||
-- OPTIONAL:
|
||
-- `nvim-notify` is only needed, if you want to use the notification view.
|
||
-- If not available, we use `mini` as the fallback
|
||
"rcarriga/nvim-notify",
|
||
}
|
||
}
|
||
<
|
||
|
||
Suggested setup:
|
||
|
||
>lua
|
||
require("noice").setup({
|
||
lsp = {
|
||
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
|
||
override = {
|
||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||
["vim.lsp.util.stylize_markdown"] = true,
|
||
["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
|
||
},
|
||
},
|
||
-- you can enable a preset for easier configuration
|
||
presets = {
|
||
bottom_search = true, -- use a classic bottom cmdline for search
|
||
command_palette = true, -- position the cmdline and popupmenu together
|
||
long_message_to_split = true, -- long messages will be sent to a split
|
||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||
lsp_doc_border = false, -- add a border to hover docs and signature help
|
||
},
|
||
})
|
||
<
|
||
|
||
It’s a good idea to run `:checkhealth noice` after installing to check for
|
||
common issues.
|
||
|
||
vim-plug ~
|
||
|
||
>vim
|
||
" vim-plug
|
||
call plug#begin()
|
||
Plug 'folke/noice.nvim'
|
||
Plug 'MunifTanjim/nui.nvim'
|
||
call plug#end()
|
||
|
||
lua require("noice").setup()
|
||
<
|
||
|
||
|
||
CONFIGURATION *noice.nvim-noice-(nice,-noise,-notice)-configuration*
|
||
|
||
**noice.nvim** comes with the following defaults:
|
||
|
||
Check the wiki <https://github.com/folke/noice.nvim/wiki/Configuration-Recipes>
|
||
for configuration recipes.
|
||
|
||
>lua
|
||
{
|
||
cmdline = {
|
||
enabled = true, -- enables the Noice cmdline UI
|
||
view = "cmdline_popup", -- view for rendering the cmdline. Change to `cmdline` to get a classic cmdline at the bottom
|
||
opts = {}, -- global options for the cmdline. See section on views
|
||
---@type table<string, CmdlineFormat>
|
||
format = {
|
||
-- conceal: (default=true) This will hide the text in the cmdline that matches the pattern.
|
||
-- view: (default is cmdline view)
|
||
-- opts: any options passed to the view
|
||
-- icon_hl_group: optional hl_group for the icon
|
||
-- title: set to anything or empty string to hide
|
||
cmdline = { pattern = "^:", icon = "", lang = "vim" },
|
||
search_down = { kind = "search", pattern = "^/", icon = " ", lang = "regex" },
|
||
search_up = { kind = "search", pattern = "^%?", icon = " ", lang = "regex" },
|
||
filter = { pattern = "^:%s*!", icon = "$", lang = "bash" },
|
||
lua = { pattern = { "^:%s*lua%s+", "^:%s*lua%s*=%s*", "^:%s*=%s*" }, icon = "", lang = "lua" },
|
||
help = { pattern = "^:%s*he?l?p?%s+", icon = "" },
|
||
input = { view = "cmdline_input", icon = " " }, -- Used by input()
|
||
-- lua = false, -- to disable a format, set to `false`
|
||
},
|
||
},
|
||
messages = {
|
||
-- NOTE: If you enable messages, then the cmdline is enabled automatically.
|
||
-- This is a current Neovim limitation.
|
||
enabled = true, -- enables the Noice messages UI
|
||
view = "notify", -- default view for messages
|
||
view_error = "notify", -- view for errors
|
||
view_warn = "notify", -- view for warnings
|
||
view_history = "messages", -- view for :messages
|
||
view_search = "virtualtext", -- view for search count messages. Set to `false` to disable
|
||
},
|
||
popupmenu = {
|
||
enabled = true, -- enables the Noice popupmenu UI
|
||
---@type 'nui'|'cmp'
|
||
backend = "nui", -- backend to use to show regular cmdline completions
|
||
---@type NoicePopupmenuItemKind|false
|
||
-- Icons for completion item kinds (see defaults at noice.config.icons.kinds)
|
||
kind_icons = {}, -- set to `false` to disable icons
|
||
},
|
||
-- default options for require('noice').redirect
|
||
-- see the section on Command Redirection
|
||
---@type NoiceRouteConfig
|
||
redirect = {
|
||
view = "popup",
|
||
filter = { event = "msg_show" },
|
||
},
|
||
-- You can add any custom commands below that will be available with `:Noice command`
|
||
---@type table<string, NoiceCommand>
|
||
commands = {
|
||
history = {
|
||
-- options for the message history that you get with `:Noice`
|
||
view = "split",
|
||
opts = { enter = true, format = "details" },
|
||
filter = {
|
||
any = {
|
||
{ event = "notify" },
|
||
{ error = true },
|
||
{ warning = true },
|
||
{ event = "msg_show", kind = { "" } },
|
||
{ event = "lsp", kind = "message" },
|
||
},
|
||
},
|
||
},
|
||
-- :Noice last
|
||
last = {
|
||
view = "popup",
|
||
opts = { enter = true, format = "details" },
|
||
filter = {
|
||
any = {
|
||
{ event = "notify" },
|
||
{ error = true },
|
||
{ warning = true },
|
||
{ event = "msg_show", kind = { "" } },
|
||
{ event = "lsp", kind = "message" },
|
||
},
|
||
},
|
||
filter_opts = { count = 1 },
|
||
},
|
||
-- :Noice errors
|
||
errors = {
|
||
-- options for the message history that you get with `:Noice`
|
||
view = "popup",
|
||
opts = { enter = true, format = "details" },
|
||
filter = { error = true },
|
||
filter_opts = { reverse = true },
|
||
},
|
||
all = {
|
||
-- options for the message history that you get with `:Noice`
|
||
view = "split",
|
||
opts = { enter = true, format = "details" },
|
||
filter = {},
|
||
},
|
||
},
|
||
notify = {
|
||
-- Noice can be used as `vim.notify` so you can route any notification like other messages
|
||
-- Notification messages have their level and other properties set.
|
||
-- event is always "notify" and kind can be any log level as a string
|
||
-- The default routes will forward notifications to nvim-notify
|
||
-- Benefit of using Noice for this is the routing and consistent history view
|
||
enabled = true,
|
||
view = "notify",
|
||
},
|
||
lsp = {
|
||
progress = {
|
||
enabled = true,
|
||
-- Lsp Progress is formatted using the builtins for lsp_progress. See config.format.builtin
|
||
-- See the section on formatting for more details on how to customize.
|
||
--- @type NoiceFormat|string
|
||
format = "lsp_progress",
|
||
--- @type NoiceFormat|string
|
||
format_done = "lsp_progress_done",
|
||
throttle = 1000 / 30, -- frequency to update lsp progress message
|
||
view = "mini",
|
||
},
|
||
override = {
|
||
-- override the default lsp markdown formatter with Noice
|
||
["vim.lsp.util.convert_input_to_markdown_lines"] = false,
|
||
-- override the lsp markdown formatter with Noice
|
||
["vim.lsp.util.stylize_markdown"] = false,
|
||
-- override cmp documentation with Noice (needs the other options to work)
|
||
["cmp.entry.get_documentation"] = false,
|
||
},
|
||
hover = {
|
||
enabled = true,
|
||
silent = false, -- set to true to not show a message if hover is not available
|
||
view = nil, -- when nil, use defaults from documentation
|
||
---@type NoiceViewOptions
|
||
opts = {}, -- merged with defaults from documentation
|
||
},
|
||
signature = {
|
||
enabled = true,
|
||
auto_open = {
|
||
enabled = true,
|
||
trigger = true, -- Automatically show signature help when typing a trigger character from the LSP
|
||
luasnip = true, -- Will open signature help when jumping to Luasnip insert nodes
|
||
throttle = 50, -- Debounce lsp signature help request by 50ms
|
||
},
|
||
view = nil, -- when nil, use defaults from documentation
|
||
---@type NoiceViewOptions
|
||
opts = {}, -- merged with defaults from documentation
|
||
},
|
||
message = {
|
||
-- Messages shown by lsp servers
|
||
enabled = true,
|
||
view = "notify",
|
||
opts = {},
|
||
},
|
||
-- defaults for hover and signature help
|
||
documentation = {
|
||
view = "hover",
|
||
---@type NoiceViewOptions
|
||
opts = {
|
||
lang = "markdown",
|
||
replace = true,
|
||
render = "plain",
|
||
format = { "{message}" },
|
||
win_options = { concealcursor = "n", conceallevel = 3 },
|
||
},
|
||
},
|
||
},
|
||
markdown = {
|
||
hover = {
|
||
["|(%S-)|"] = vim.cmd.help, -- vim help links
|
||
["%[.-%]%((%S-)%)"] = require("noice.util").open, -- markdown links
|
||
},
|
||
highlights = {
|
||
["|%S-|"] = "@text.reference",
|
||
["@%S+"] = "@parameter",
|
||
["^%s*(Parameters:)"] = "@text.title",
|
||
["^%s*(Return:)"] = "@text.title",
|
||
["^%s*(See also:)"] = "@text.title",
|
||
["{%S-}"] = "@parameter",
|
||
},
|
||
},
|
||
health = {
|
||
checker = true, -- Disable if you don't want health checks to run
|
||
},
|
||
---@type NoicePresets
|
||
presets = {
|
||
-- you can enable a preset by setting it to true, or a table that will override the preset config
|
||
-- you can also add custom presets that you can enable/disable with enabled=true
|
||
bottom_search = false, -- use a classic bottom cmdline for search
|
||
command_palette = false, -- position the cmdline and popupmenu together
|
||
long_message_to_split = false, -- long messages will be sent to a split
|
||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||
lsp_doc_border = false, -- add a border to hover docs and signature help
|
||
},
|
||
throttle = 1000 / 30, -- how frequently does Noice need to check for ui updates? This has no effect when in blocking mode.
|
||
---@type NoiceConfigViews
|
||
views = {}, ---@see section on views
|
||
---@type NoiceRouteConfig[]
|
||
routes = {}, --- @see section on routes
|
||
---@type table<string, NoiceFilter>
|
||
status = {}, --- @see section on statusline components
|
||
---@type NoiceFormatOptions
|
||
format = {}, --- @see section on formatting
|
||
}
|
||
<
|
||
|
||
If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~
|
||
|
||
>lua
|
||
require("noice").setup({
|
||
cmdline = {
|
||
format = {
|
||
cmdline = { icon = ">" },
|
||
search_down = { icon = "🔍⌄" },
|
||
search_up = { icon = "🔍⌃" },
|
||
filter = { icon = "$" },
|
||
lua = { icon = "☾" },
|
||
help = { icon = "?" },
|
||
},
|
||
},
|
||
format = {
|
||
level = {
|
||
icons = {
|
||
error = "✖",
|
||
warn = "▼",
|
||
info = "●",
|
||
},
|
||
},
|
||
},
|
||
popupmenu = {
|
||
kind_icons = false,
|
||
},
|
||
inc_rename = {
|
||
cmdline = {
|
||
format = {
|
||
IncRename = { icon = "⟳" },
|
||
},
|
||
},
|
||
},
|
||
})
|
||
<
|
||
|
||
|
||
FILTERS *noice.nvim-noice-(nice,-noise,-notice)-filters*
|
||
|
||
**Noice** uses filters to route messages to specific views.
|
||
|
||
------------------------------------------------------------------------------
|
||
Name Type Description
|
||
------------ ---------- ------------------------------------------------------
|
||
any filter[] checks that at least one of the filters matches
|
||
|
||
blocking boolean are we in blocking mode?
|
||
|
||
cleared boolean checks if the message is cleared, meaning it’s in the
|
||
history
|
||
|
||
cmdline boolean or checks if the message was generated by executing a
|
||
string cmdline. When string, then it is used as a pattern
|
||
|
||
error boolean all error-like kinds from ext_messages
|
||
|
||
event string or any of the events from ext_messages or cmdline. See :h
|
||
string[] ui-messages
|
||
|
||
find string uses lua string.find to match the pattern
|
||
|
||
has boolean checks if the message is exists, meaning it’s in the
|
||
history
|
||
|
||
kind string or any of the kinds from ext_messages. See :h ui-messages
|
||
string[]
|
||
|
||
max_height number maximum height of the message
|
||
|
||
max_length number maximum length of the message (total width of all the
|
||
lines)
|
||
|
||
max_width number maximum width of the message
|
||
|
||
min_height number minimum height of the message
|
||
|
||
min_length number minimum length of the message (total width of all the
|
||
lines)
|
||
|
||
min_width number minimum width of the message
|
||
|
||
mode string checks if vim.api.nvim_get_mode() contains the given
|
||
mode
|
||
|
||
not filter checks whether the filter matches or not
|
||
|
||
warning boolean all warning-like kinds from ext_messages
|
||
------------------------------------------------------------------------------
|
||
Example: ~
|
||
|
||
>lua
|
||
-- all messages over 10 lines, excluding echo and search_count
|
||
local filter = {
|
||
event = "msg_show",
|
||
min_height = 10,
|
||
["not"] = { kind = { "search_count", "echo" } },
|
||
}
|
||
<
|
||
|
||
|
||
VIEWS *noice.nvim-noice-(nice,-noise,-notice)-views*
|
||
|
||
**Noice** comes with the following built-in backends:
|
||
|
||
- **popup**powered by nui.nvim <https://github.com/MunifTanjim/nui.nvim>
|
||
- **split**powered by nui.nvim <https://github.com/MunifTanjim/nui.nvim>
|
||
- **notify**powered by nvim-notify <https://github.com/rcarriga/nvim-notify>
|
||
- **virtualtext**shows the message as virtualtext (for example for `search_count`)
|
||
- **mini**similar to notifier.nvim <https://github.com/vigoux/notifier.nvim> & fidget.nvim <https://github.com/j-hui/fidget.nvim>
|
||
- **notify_send**generate a desktop notification
|
||
|
||
A **View** (`config.views`) is a combination of a `backend` and options.
|
||
**Noice** comes with the following built-in views with sane defaults:
|
||
|
||
--------------------------------------------------------------------------------
|
||
View Backend Description
|
||
---------------- ---------- ----------------------------------------------------
|
||
notify notify nvim-notify with level=nil, replace=false,
|
||
merge=false
|
||
|
||
split split horizontal split
|
||
|
||
vsplit split vertical split
|
||
|
||
popup popup simple popup
|
||
|
||
mini mini minimal view, by default bottom right, right-aligned
|
||
|
||
cmdline popup bottom line, similar to the classic cmdline
|
||
|
||
cmdline_popup popup fancy cmdline popup, with different styles according
|
||
to the cmdline mode
|
||
|
||
cmdline_output split split used by config.presets.cmdline_output_to_split
|
||
|
||
messages split split used for :messages
|
||
|
||
confirm popup popup used for confirm events
|
||
|
||
hover popup popup used for lsp signature help and hover
|
||
|
||
popupmenu nui.menu special view with the options used to render the
|
||
popupmenu when backend is nui
|
||
--------------------------------------------------------------------------------
|
||
Please refer to noice.config.views
|
||
<https://github.com/folke/noice.nvim/blob/main/lua/noice/config/views.lua> to
|
||
see the options. Any options passed to existing views in `config.views`, will
|
||
override those options only. You can configure completely new views and use
|
||
them in custom routes.
|
||
|
||
Example: ~
|
||
|
||
>lua
|
||
-- override the default split view to always enter the split when it opens
|
||
require("noice").setup({
|
||
views = {
|
||
split = {
|
||
enter = true,
|
||
},
|
||
},
|
||
})
|
||
<
|
||
|
||
|
||
All built-in Noice views have the filetype `noice`
|
||
|
||
NUI OPTIONS ~
|
||
|
||
See the Nui documentation for Popup
|
||
<https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/popup> and Split
|
||
<https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/split>.
|
||
|
||
OptionDescriptionsize, positionSize, position and their constituents can additionally be specified as "auto", to use the message height and width.win_options.winhighlightString or can also be a table like:
|
||
|
||
>lua
|
||
{
|
||
win_options = {
|
||
winhighlight = {
|
||
Normal = "NormalFloat",
|
||
FloatBorder = "FloatBorder"
|
||
},
|
||
}
|
||
}
|
||
<
|
||
|
||
scrollbarSet to false to hide the scrollbar.
|
||
NOTIFY OPTIONS ~
|
||
|
||
-------------------------------------------------------------------------------------------------
|
||
Option Type Default Description
|
||
--------- ---------------- ---------------- -----------------------------------------------------
|
||
title string "Notification" title to be used for the notification. Uses
|
||
Message.title if available.
|
||
|
||
replace boolean false when true, messages routing to the same notify
|
||
instance will replace existing messages instead of
|
||
pushing a new notification every time
|
||
|
||
merge boolean false Merge messages into one Notification or create
|
||
separate notifications
|
||
|
||
level number\|string nil notification level. Uses Message.level if available.
|
||
-------------------------------------------------------------------------------------------------
|
||
|
||
VIRTUAL TEXT OPTIONS ~
|
||
|
||
Right now there’s only an option to set the `hl_group` used to render the
|
||
virtual text.
|
||
|
||
|
||
FORMATTING *noice.nvim-noice-(nice,-noise,-notice)-formatting*
|
||
|
||
Formatting options can be specified with `config.format`. For a list of the
|
||
defaults, please refer to config.format
|
||
<https://github.com/folke/noice.nvim/blob/main/lua/noice/config/format.lua>
|
||
|
||
**Noice** includes the following formatters:
|
||
|
||
- **level**message level with optional `icon` and `hl_group` per level
|
||
- **text**any text with optional `hl_group`
|
||
- **title**message title with optional `hl_group`
|
||
- **event**message event with optional `hl_group`
|
||
- **kind**message kind with optional `hl_group`
|
||
- **date**formatted date with optional date format string
|
||
- **message**message content itself with optional `hl_group` to override message highlights
|
||
- **confirm**only useful for `confirm` messages. Will format the choices as buttons.
|
||
- **cmdline**will render the cmdline in the message that generated the message.
|
||
- **progress**progress bar used by lsp progress
|
||
- **spinner**spinners used by lsp progress
|
||
- **data**render any custom data from `Message.opts`. Useful in combination with the opts passed to `vim.notify`
|
||
|
||
Formatters are used in `format` definitions. **Noice** includes the following
|
||
built-in formats:
|
||
|
||
>lua
|
||
{
|
||
-- default format
|
||
default = { "{level} ", "{title} ", "{message}" },
|
||
-- default format for vim.notify views
|
||
notify = { "{message}" },
|
||
-- default format for the history
|
||
details = {
|
||
"{level} ",
|
||
"{date} ",
|
||
"{event}",
|
||
{ "{kind}", before = { ".", hl_group = "NoiceFormatKind" } },
|
||
" ",
|
||
"{title} ",
|
||
"{cmdline} ",
|
||
"{message}",
|
||
},
|
||
telescope = ..., -- formatter used to display telescope results
|
||
telescope_preview = ..., -- formatter used to preview telescope results
|
||
fzf = ..., -- formatter used to display fzf results
|
||
fzf_preview = ..., -- formatter used to preview fzf results
|
||
lsp_progress = ..., -- formatter used by lsp progress
|
||
lsp_progress_done = ..., -- formatter used by lsp progress
|
||
}
|
||
<
|
||
|
||
Text before/after the formatter or in the before/after options, will only be
|
||
rendered if the formatter itself rendered something.
|
||
|
||
The `format` view option, can be either a `string` (one of the built-in
|
||
formats), or a table with a custom format definition.
|
||
|
||
To align text, you can use the `align` option for a view. Can be `center`,
|
||
`left` or `right`.
|
||
|
||
|
||
ROUTES *noice.nvim-noice-(nice,-noise,-notice)-routes*
|
||
|
||
A **route** has a `filter`, `view` and optional `opts` attribute.
|
||
|
||
- **view**one of the views (built-in or custom)
|
||
- **filter** a filter for messages matching this route
|
||
- **opts**options for the view and the route
|
||
|
||
Route options can be any of the view options above, or one of:
|
||
|
||
------------------------------------------------------------------------------------------
|
||
Option Type Default Description
|
||
-------- --------- --------- -------------------------------------------------------------
|
||
skip boolean false messages matching this filter will be skipped and not shown
|
||
in any views
|
||
|
||
stop boolean true When false and a route matches the filter, then other routes
|
||
can still process the message too. Useful if you want certain
|
||
messages to be shown in multiple views.
|
||
------------------------------------------------------------------------------------------
|
||
Please refer to noice.config.routes
|
||
<https://github.com/folke/noice.nvim/blob/main/lua/noice/config/routes.lua> for
|
||
an overview of the default routes. **Routes** passed to `setup()` will be
|
||
prepended to the default routes.
|
||
|
||
Example ~
|
||
|
||
>lua
|
||
-- skip search_count messages instead of showing them as virtual text
|
||
require("noice").setup({
|
||
routes = {
|
||
{
|
||
filter = { event = "msg_show", kind = "search_count" },
|
||
opts = { skip = true },
|
||
},
|
||
},
|
||
})
|
||
|
||
-- always route any messages with more than 20 lines to the split view
|
||
require("noice").setup({
|
||
routes = {
|
||
{
|
||
view = "split",
|
||
filter = { event = "msg_show", min_height = 20 },
|
||
},
|
||
},
|
||
})
|
||
<
|
||
|
||
|
||
STATUSLINE COMPONENTS*noice.nvim-noice-(nice,-noise,-notice)-statusline-components*
|
||
|
||
**Noice** comes with the following statusline components:
|
||
|
||
- **ruler**
|
||
- **message**last line of the last message (`event=show_msg`)
|
||
- **command**`showcmd`
|
||
- **mode**`showmode` (@recording messages)
|
||
- **search**search count messages
|
||
|
||
See noice.config.status
|
||
<https://github.com/folke/noice.nvim/blob/main/lua/noice/config/status.lua> for
|
||
the default config.
|
||
|
||
You can add custom statusline components in setup under the `status` key.
|
||
|
||
Statusline components have the following methods:
|
||
|
||
- **get**gets the content of the message **without** highlights
|
||
- **get_hl**gets the content of the message **with** highlights
|
||
- **has**checks if the component is available
|
||
|
||
Example of configuring lualine.nvim ~
|
||
|
||
>lua
|
||
require("lualine").setup({
|
||
sections = {
|
||
lualine_x = {
|
||
{
|
||
require("noice").api.status.message.get_hl,
|
||
cond = require("noice").api.status.message.has,
|
||
},
|
||
{
|
||
require("noice").api.status.command.get,
|
||
cond = require("noice").api.status.command.has,
|
||
color = { fg = "#ff9e64" },
|
||
},
|
||
{
|
||
require("noice").api.status.mode.get,
|
||
cond = require("noice").api.status.mode.has,
|
||
color = { fg = "#ff9e64" },
|
||
},
|
||
{
|
||
require("noice").api.status.search.get,
|
||
cond = require("noice").api.status.search.has,
|
||
color = { fg = "#ff9e64" },
|
||
},
|
||
},
|
||
},
|
||
})
|
||
<
|
||
|
||
|
||
PICKERS *noice.nvim-noice-(nice,-noise,-notice)-pickers*
|
||
|
||
For convenience, you can do `:Noice pick`, which will open a picker with all
|
||
the messages in the history, either with `telescope` or `fzf-lua`.
|
||
|
||
|
||
TELESCOPE *noice.nvim-noice-(nice,-noise,-notice)-telescope*
|
||
|
||
In order to use **Noice** in **Telescope**, you can either do `:Noice
|
||
telescope`, or register the extension and use `:Telescope noice`. The results
|
||
panel is formatted using `config.format.formatters.telescope`. The preview is
|
||
formatted with `config.format.formatters.telescope_preview`
|
||
|
||
>lua
|
||
require("telescope").load_extension("noice")
|
||
<
|
||
|
||
|
||
FZF LUA *noice.nvim-noice-(nice,-noise,-notice)-fzf-lua*
|
||
|
||
In order to use **Noice** in **FzfLua**, you can do `:Noice fzf`. The results
|
||
panel is formatted using `config.format.formatters.fzf`. The preview is
|
||
formatted with `config.format.formatters.telescope_fzf`
|
||
|
||
|
||
USAGE *noice.nvim-noice-(nice,-noise,-notice)-usage*
|
||
|
||
- `:Noice` or `:Noice history` shows the message history
|
||
- `:Noice last` shows the last message in a popup
|
||
- `:Noice dismiss` dismiss all visible messages
|
||
- `:Noice errors` shows the error messages in a split. Last errors on top
|
||
- `:Noice disable` disables **Noice**
|
||
- `:Noice enable` enables **Noice**
|
||
- `:Noice stats` shows debugging stats
|
||
- `:Noice telescope` opens message history in Telescope
|
||
|
||
Alternatively, all commands also exist as a full name like `:NoiceLast`,
|
||
`:NoiceDisable`.
|
||
|
||
You can also use `Lua` equivalents.
|
||
|
||
>lua
|
||
vim.keymap.set("n", "<leader>nl", function()
|
||
require("noice").cmd("last")
|
||
end)
|
||
|
||
vim.keymap.set("n", "<leader>nh", function()
|
||
require("noice").cmd("history")
|
||
end)
|
||
<
|
||
|
||
|
||
You can add custom commands with `config.commands`
|
||
|
||
COMMAND REDIRECTION ~
|
||
|
||
Sometimes it’s useful to redirect the messages generated by a command or
|
||
function to a different view. That can be easily achieved with command
|
||
redirection.
|
||
|
||
The redirect API can taken an optional `routes` parameter, which defaults to
|
||
`{config.redirect}`.
|
||
|
||
>lua
|
||
-- redirect ":hi"
|
||
require("noice").redirect("hi")
|
||
|
||
-- redirect some function
|
||
require("noice").redirect(function()
|
||
print("test")
|
||
end)
|
||
<
|
||
|
||
Adding the following keymap, will redirect the active cmdline when pressing
|
||
`<S-Enter>`. The cmdline stays open, so you can change the command and execute
|
||
it again. When exiting the cmdline, the popup window will be focused.
|
||
|
||
>lua
|
||
vim.keymap.set("c", "<S-Enter>", function()
|
||
require("noice").redirect(vim.fn.getcmdline())
|
||
end, { desc = "Redirect Cmdline" })
|
||
<
|
||
|
||
|
||
LSP HOVER DOC SCROLLING ~
|
||
|
||
>lua
|
||
vim.keymap.set({ "n", "i", "s" }, "<c-f>", function()
|
||
if not require("noice.lsp").scroll(4) then
|
||
return "<c-f>"
|
||
end
|
||
end, { silent = true, expr = true })
|
||
|
||
vim.keymap.set({ "n", "i", "s" }, "<c-b>", function()
|
||
if not require("noice.lsp").scroll(-4) then
|
||
return "<c-b>"
|
||
end
|
||
end, { silent = true, expr = true })
|
||
<
|
||
|
||
|
||
HIGHLIGHT GROUPS *noice.nvim-noice-(nice,-noise,-notice)-highlight-groups*
|
||
|
||
Click to see all highlight groups ~
|
||
|
||
---------------------------------------------------------------------------------------------------
|
||
Highlight Group Default Group Description
|
||
------------------------------------ -------------------------------- -----------------------------
|
||
NoiceCmdline MsgArea Normal for the classic
|
||
cmdline area at the bottom”
|
||
|
||
NoiceCmdlineIcon DiagnosticSignInfo Cmdline icon
|
||
|
||
NoiceCmdlineIconCalculator NoiceCmdlineIcon
|
||
|
||
NoiceCmdlineIconCmdline NoiceCmdlineIcon
|
||
|
||
NoiceCmdlineIconFilter NoiceCmdlineIcon
|
||
|
||
NoiceCmdlineIconHelp NoiceCmdlineIcon
|
||
|
||
NoiceCmdlineIconIncRename NoiceCmdlineIcon
|
||
|
||
NoiceCmdlineIconInput NoiceCmdlineIcon
|
||
|
||
NoiceCmdlineIconLua NoiceCmdlineIcon
|
||
|
||
NoiceCmdlineIconSearch DiagnosticSignWarn Cmdline search icon (/ and ?)
|
||
|
||
NoiceCmdlinePopup Normal Normal for the cmdline popup
|
||
|
||
NoiceCmdlinePopupBorder DiagnosticSignInfo Cmdline popup border
|
||
|
||
NoiceCmdlinePopupBorderCalculator NoiceCmdlinePopupBorder
|
||
|
||
NoiceCmdlinePopupBorderCmdline NoiceCmdlinePopupBorder
|
||
|
||
NoiceCmdlinePopupBorderFilter NoiceCmdlinePopupBorder
|
||
|
||
NoiceCmdlinePopupBorderHelp NoiceCmdlinePopupBorder
|
||
|
||
NoiceCmdlinePopupBorderIncRename NoiceCmdlinePopupBorder
|
||
|
||
NoiceCmdlinePopupBorderInput NoiceCmdlinePopupBorder
|
||
|
||
NoiceCmdlinePopupBorderLua NoiceCmdlinePopupBorder
|
||
|
||
NoiceCmdlinePopupBorderSearch DiagnosticSignWarn Cmdline popup border for
|
||
search
|
||
|
||
NoiceCmdlinePopupTitle DiagnosticSignInfo Cmdline popup border
|
||
|
||
NoiceCmdlinePrompt Title prompt for input()
|
||
|
||
NoiceCompletionItemKindClass NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindColor NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindConstant NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindConstructor NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindDefault Special
|
||
|
||
NoiceCompletionItemKindEnum NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindEnumMember NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindField NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindFile NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindFolder NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindFunction NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindInterface NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindKeyword NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindMethod NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindModule NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindProperty NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindSnippet NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindStruct NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindText NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindUnit NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindValue NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemKindVariable NoiceCompletionItemKindDefault
|
||
|
||
NoiceCompletionItemMenu none Normal for the popupmenu
|
||
|
||
NoiceCompletionItemWord none Normal for the popupmenu
|
||
|
||
NoiceConfirm Normal Normal for the confirm view
|
||
|
||
NoiceConfirmBorder DiagnosticSignInfo Border for the confirm view
|
||
|
||
NoiceCursor Cursor Fake Cursor
|
||
|
||
NoiceFormatConfirm CursorLine
|
||
|
||
NoiceFormatConfirmDefault Visual
|
||
|
||
NoiceFormatDate Special
|
||
|
||
NoiceFormatEvent NonText
|
||
|
||
NoiceFormatKind NonText
|
||
|
||
NoiceFormatLevelDebug NonText
|
||
|
||
NoiceFormatLevelError DiagnosticVirtualTextError
|
||
|
||
NoiceFormatLevelInfo DiagnosticVirtualTextInfo
|
||
|
||
NoiceFormatLevelOff NonText
|
||
|
||
NoiceFormatLevelTrace NonText
|
||
|
||
NoiceFormatLevelWarn DiagnosticVirtualTextWarn
|
||
|
||
NoiceFormatProgressDone Search Progress bar done
|
||
|
||
NoiceFormatProgressTodo CursorLine progress bar todo
|
||
|
||
NoiceFormatTitle Title
|
||
|
||
NoiceLspProgressClient Title Lsp progress client name
|
||
|
||
NoiceLspProgressSpinner Constant Lsp progress spinner
|
||
|
||
NoiceLspProgressTitle NonText Lsp progress title
|
||
|
||
NoiceMini MsgArea Normal for mini view
|
||
|
||
NoicePopup NormalFloat Normal for popup views
|
||
|
||
NoicePopupBorder FloatBorder Border for popup views
|
||
|
||
NoicePopupmenu Pmenu Normal for the popupmenu
|
||
|
||
NoicePopupmenuBorder FloatBorder Popupmenu border
|
||
|
||
NoicePopupmenuMatch Special Part of the item that matches
|
||
the input
|
||
|
||
NoicePopupmenuSelected PmenuSel Selected item in the
|
||
popupmenu
|
||
|
||
NoiceScrollbar PmenuSbar Normal for scrollbar
|
||
|
||
NoiceScrollbarThumb PmenuThumb Scrollbar thumb
|
||
|
||
NoiceSplit NormalFloat Normal for split views
|
||
|
||
NoiceSplitBorder FloatBorder Border for split views
|
||
|
||
NoiceVirtualText DiagnosticVirtualTextInfo Default hl group for
|
||
virtualtext views
|
||
---------------------------------------------------------------------------------------------------
|
||
==============================================================================
|
||
2. Links *noice.nvim-links*
|
||
|
||
1. *image*: https://user-images.githubusercontent.com/292349/193263220-791847b2-516c-4f23-9802-31dd6bec5f6a.png
|
||
2. *@recording*:
|
||
|
||
Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>
|
||
|
||
vim:tw=78:ts=8:noet:ft=help:norl:
|