Problem: the original ya2s/nvim-nonicons fork diverged enough that maintaining it as a fork was pointless. The set_icon() approach broke with modern nvim-web-devicons, and the extensions directory coupled integrations that belong in user config. Solution: from-scratch rewrite with function wrapping + table mutation override engine, vim.g.nonicons config pattern, vendored mapping with integer codepoints, health check, vimdoc with recipes, and no built-in plugin integrations.
180 lines
3.7 KiB
Markdown
180 lines
3.7 KiB
Markdown
# nonicons.nvim
|
|
|
|
**Nonicons for Neovim**
|
|
|
|
Replace [nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons)
|
|
glyphs with icons from the [nonicons](https://github.com/yamatsum/nonicons)
|
|
font. Any plugin that uses nvim-web-devicons automatically displays nonicons
|
|
glyphs.
|
|
|
|
## Requirements
|
|
|
|
- [nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons)
|
|
- [nonicons font](https://github.com/yamatsum/nonicons/releases) installed in
|
|
your terminal
|
|
|
|
## Installation
|
|
|
|
Install the nonicons font and configure your terminal to use it as a fallback:
|
|
|
|
**ghostty**
|
|
|
|
```
|
|
font-family = Nonicons
|
|
font-family = YourMainFont
|
|
```
|
|
|
|
**kitty**
|
|
|
|
```
|
|
symbol_map U+F101-U+F219 Nonicons
|
|
```
|
|
|
|
**wezterm**
|
|
|
|
```lua
|
|
config.font = wezterm.font_with_fallback({
|
|
'YourMainFont',
|
|
'Nonicons',
|
|
})
|
|
```
|
|
|
|
Install with your package manager of choice or via
|
|
[luarocks](https://luarocks.org/modules/barrettruth/nonicons.nvim):
|
|
|
|
```
|
|
luarocks install nonicons.nvim
|
|
```
|
|
|
|
**lazy.nvim**
|
|
|
|
```lua
|
|
{
|
|
'barrettruth/nonicons.nvim',
|
|
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
|
}
|
|
```
|
|
|
|
The plugin applies overrides automatically. No `setup()` call is needed.
|
|
|
|
## Configuration
|
|
|
|
Configure via `vim.g.nonicons` before the plugin loads:
|
|
|
|
```lua
|
|
vim.g.nonicons = {
|
|
override = true, -- default; set false to disable devicons wrapping
|
|
}
|
|
```
|
|
|
|
## Usage
|
|
|
|
```lua
|
|
local get = require('nonicons').get
|
|
|
|
get('lua') -- returns the nonicons lua character
|
|
get('python') -- returns the nonicons python character
|
|
get('git-branch') -- returns the nonicons git-branch character
|
|
```
|
|
|
|
The raw mapping table is available for advanced use:
|
|
|
|
```lua
|
|
local code = require('nonicons').mapping['lua']
|
|
local icon = vim.fn.nr2char(code)
|
|
```
|
|
|
|
## Recipes
|
|
|
|
**lualine** — mode icons:
|
|
|
|
```lua
|
|
local get = require('nonicons').get
|
|
|
|
require('lualine').setup({
|
|
sections = {
|
|
lualine_a = {
|
|
{
|
|
'mode',
|
|
fmt = function(mode)
|
|
local map = {
|
|
NORMAL = get('vim-normal-mode'),
|
|
INSERT = get('vim-insert-mode'),
|
|
VISUAL = get('vim-visual-mode'),
|
|
REPLACE = get('vim-replace-mode'),
|
|
COMMAND = get('vim-command-mode'),
|
|
}
|
|
return map[mode] or mode
|
|
end,
|
|
},
|
|
},
|
|
},
|
|
})
|
|
```
|
|
|
|
**nvim-notify**:
|
|
|
|
```lua
|
|
require('notify').setup({
|
|
icons = {
|
|
ERROR = require('nonicons').get('x-circle'),
|
|
WARN = require('nonicons').get('alert'),
|
|
INFO = require('nonicons').get('info'),
|
|
DEBUG = require('nonicons').get('bug'),
|
|
TRACE = require('nonicons').get('play'),
|
|
},
|
|
})
|
|
```
|
|
|
|
**mason.nvim**:
|
|
|
|
```lua
|
|
require('mason').setup({
|
|
ui = {
|
|
icons = {
|
|
package_installed = require('nonicons').get('check'),
|
|
package_pending = require('nonicons').get('sync'),
|
|
package_uninstalled = require('nonicons').get('x'),
|
|
},
|
|
},
|
|
})
|
|
```
|
|
|
|
**oil.nvim**, **fzf-lua**, **telescope.nvim** — no configuration needed. These
|
|
plugins read from nvim-web-devicons which nonicons.nvim wraps automatically.
|
|
|
|
**nvim-tree**:
|
|
|
|
```lua
|
|
local get = require('nonicons').get
|
|
|
|
require('nvim-tree').setup({
|
|
renderer = {
|
|
icons = {
|
|
glyphs = {
|
|
default = get('file'),
|
|
symlink = get('file-symlink-file'),
|
|
folder = {
|
|
default = get('file-directory-fill'),
|
|
open = get('file-directory-open-fill'),
|
|
symlink = get('file-submodule'),
|
|
empty = get('file-directory-outline'),
|
|
arrow_open = get('chevron-down'),
|
|
arrow_closed = get('chevron-right'),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
})
|
|
```
|
|
|
|
## Documentation
|
|
|
|
```vim
|
|
:help nonicons.nvim
|
|
```
|
|
|
|
## Acknowledgements
|
|
|
|
- [yamatsum/nonicons](https://github.com/yamatsum/nonicons) — icon font
|
|
- [ya2s/nvim-nonicons](https://github.com/ya2s/nvim-nonicons) — original plugin
|