mirror of
https://github.com/rose-pine/neovim.git
synced 2025-10-15 12:38:53 +02:00
Updated Recipes (markdown)
parent
f1e945e2b2
commit
27b074aaeb
1 changed files with 2 additions and 245 deletions
247
Recipes.md
247
Recipes.md
|
|
@ -16,254 +16,11 @@ require("rose-pine").setup({
|
|||
})
|
||||
```
|
||||
|
||||
## Rose-pine custom statusline
|
||||
## Roseline
|
||||
|
||||

|
||||
|
||||
### dependencies
|
||||
|
||||
- [gitsigns](lewis6991/gitsigns.nvim)
|
||||
- [lsp](neovim/nvim-lspconfig)
|
||||
- [nerd-font](https://www.nerdfonts.com/)
|
||||
|
||||
<details>
|
||||
<summary>source code</summary>
|
||||
|
||||
```lua
|
||||
vim.opt.statusline = "%!v:lua.require('core.statusline').setup()"
|
||||
```
|
||||
|
||||
```lua
|
||||
local M = {}
|
||||
|
||||
local icons = {
|
||||
vim = '',
|
||||
git = {
|
||||
head = '',
|
||||
added = '',
|
||||
changed = '',
|
||||
removed = '',
|
||||
},
|
||||
diagnostic = {
|
||||
Error = '',
|
||||
Warning = '',
|
||||
Information = '',
|
||||
Question = '',
|
||||
Hint = '',
|
||||
Debug = '',
|
||||
Ok = '',
|
||||
},
|
||||
default = { left = '', right = '' },
|
||||
block = { left = '█', right = '█' },
|
||||
round = { left = '', right = '' },
|
||||
}
|
||||
|
||||
---@param item string
|
||||
---@param group_name string
|
||||
---@return string
|
||||
local function color(item, group_name)
|
||||
return '%#' .. group_name .. '#' .. item .. '%*'
|
||||
end
|
||||
|
||||
local function set_highlight()
|
||||
local group = 'St'
|
||||
local colors = require 'rose-pine.palette'
|
||||
local hl = vim.api.nvim_set_hl
|
||||
|
||||
hl(0, group .. 'Primary', { fg = colors.foam, bg = colors.base })
|
||||
hl(0, group .. 'Neovim', { fg = colors.foam, reverse = true })
|
||||
hl(0, group .. 'GitHead', { fg = colors.iris, bg = colors.base })
|
||||
hl(0, group .. 'GitAdded', { link = 'GitSignsAdd' })
|
||||
hl(0, group .. 'GitRemoved', { link = 'GitSignsDelete' })
|
||||
hl(0, group .. 'GitChanged', { link = 'GitSignsChange' })
|
||||
hl(0, group .. 'DiagnosticError', { fg = colors.love, reverse = true })
|
||||
hl(0, group .. 'DiagnosticWarn', { fg = colors.gold, reverse = true })
|
||||
hl(0, group .. 'DiagnosticHint', { fg = colors.iris, reverse = true })
|
||||
hl(0, group .. 'DiagnosticInfo', { fg = colors.foam, reverse = true })
|
||||
hl(0, group .. 'Lsp', { fg = colors.foam, bg = colors.base })
|
||||
hl(0, group .. 'LspReverse', { fg = colors.foam, reverse = true })
|
||||
hl(0, group .. 'Info', { fg = colors.foam, bg = colors.base })
|
||||
hl(0, group .. 'InfoReverse', { fg = colors.foam, reverse = true })
|
||||
end
|
||||
|
||||
--- mode
|
||||
---@return string
|
||||
local function layout_a()
|
||||
local modes = {
|
||||
['n'] = 'NORMAL',
|
||||
['no'] = 'NORMAL (no)',
|
||||
['nov'] = 'NORMAL (nov)',
|
||||
['noV'] = 'NORMAL (noV)',
|
||||
['noCTRL-V'] = 'NORMAL',
|
||||
['niI'] = 'NORMAL i',
|
||||
['niR'] = 'NORMAL r',
|
||||
['niV'] = 'NORMAL v',
|
||||
['nt'] = 'NTERMINAL',
|
||||
['ntT'] = 'NTERMINAL (ntT)',
|
||||
['v'] = 'VISUAL',
|
||||
['vs'] = 'V-CHAR (Ctrl O)',
|
||||
['V'] = 'V-LINE',
|
||||
['Vs'] = 'V-LINE',
|
||||
[''] = 'V-BLOCK',
|
||||
['i'] = 'INSERT',
|
||||
['ic'] = 'INSERT (completion)',
|
||||
['ix'] = 'INSERT completion',
|
||||
['t'] = 'TERMINAL',
|
||||
['R'] = 'REPLACE',
|
||||
['Rc'] = 'REPLACE (Rc)',
|
||||
['Rx'] = 'REPLACEa (Rx)',
|
||||
['Rv'] = 'V-REPLACE',
|
||||
['Rvc'] = 'V-REPLACE (Rvc)',
|
||||
['Rvx'] = 'V-REPLACE (Rvx)',
|
||||
['s'] = 'SELECT',
|
||||
['S'] = 'S-LINE',
|
||||
[''] = 'S-BLOCK',
|
||||
['c'] = 'COMMAND',
|
||||
['cv'] = 'COMMAND',
|
||||
['ce'] = 'COMMAND',
|
||||
['r'] = 'PROMPT',
|
||||
['rm'] = 'MORE',
|
||||
['r?'] = 'CONFIRM',
|
||||
['x'] = 'CONFIRM',
|
||||
['!'] = 'SHELL',
|
||||
}
|
||||
|
||||
local block = color(icons.block.left, 'StPrimary')
|
||||
local neovim = color(icons.vim, 'StNeovim')
|
||||
local mode = color(modes[vim.fn.mode()], 'StNeovim')
|
||||
local default_right = color(icons.default.right, 'StPrimary')
|
||||
return string.format('%s%s%s%s%s', block, neovim, block, mode, default_right)
|
||||
end
|
||||
|
||||
--- git sign
|
||||
---@return string
|
||||
local function layout_b()
|
||||
---@diagnostic disable-next-line: undefined-field
|
||||
local git = vim.b.gitsigns_status_dict or {}
|
||||
local head = ''
|
||||
local added = ''
|
||||
local changed = ''
|
||||
local removed = ''
|
||||
|
||||
if git then
|
||||
if git.head then
|
||||
head = string.format('%s %s', icons.git.head, git.head)
|
||||
head = color(head, 'StGitHead')
|
||||
end
|
||||
|
||||
if git.added and git.added ~= 0 then
|
||||
added = string.format('%s %s', icons.git.added, git.added)
|
||||
added = color(added, 'StGitAdded')
|
||||
end
|
||||
|
||||
if git.changed and git.changed ~= 0 then
|
||||
changed = string.format('%s %s', icons.git.changed, git.changed)
|
||||
changed = color(changed, 'StGitChanged')
|
||||
end
|
||||
|
||||
if git.removed and git.removed ~= 0 then
|
||||
removed = string.format('%s %s', icons.git.removed, git.removed)
|
||||
removed = color(removed, 'StGitRemoved')
|
||||
end
|
||||
end
|
||||
|
||||
return string.format('%s %s %s %s', head, added, changed, removed)
|
||||
end
|
||||
|
||||
--- lsp and diagnostic
|
||||
---@return string
|
||||
local function layout_d()
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local clients = vim.lsp.get_active_clients { bufnr = bufnr }
|
||||
local client_name = ''
|
||||
local default_msg = icons.diagnostic.Ok .. ' No Active Client'
|
||||
|
||||
if clients and vim.tbl_isempty(clients) then
|
||||
return default_msg
|
||||
end
|
||||
|
||||
for _, client in pairs(clients) do
|
||||
if client.name ~= 'null-ls' then
|
||||
client_name = client.name
|
||||
end
|
||||
end
|
||||
|
||||
if client_name == '' then
|
||||
return default_msg
|
||||
end
|
||||
|
||||
local errors = #vim.diagnostic.get(bufnr, { severity = vim.diagnostic.severity.ERROR })
|
||||
local warnings = #vim.diagnostic.get(bufnr, { severity = vim.diagnostic.severity.WARN })
|
||||
local hints = #vim.diagnostic.get(bufnr, { severity = vim.diagnostic.severity.HINT })
|
||||
local info = #vim.diagnostic.get(bufnr, { severity = vim.diagnostic.severity.INFO })
|
||||
|
||||
local error_msg = (errors and errors > 0) and (icons.diagnostic.Error .. ' ' .. errors) or nil
|
||||
local warning_msg = (warnings and warnings > 0) and (icons.diagnostic.Warning .. ' ' .. warnings)
|
||||
or nil
|
||||
local hint_msg = (hints and hints > 0) and (icons.diagnostic.Hint .. ' ' .. hints) or nil
|
||||
local info_msg = (info and info > 0) and (icons.diagnostic.Information .. ' ' .. info) or nil
|
||||
|
||||
---@param msg string
|
||||
---@param severity string
|
||||
---@return string
|
||||
local function diagnostic_message(msg, severity)
|
||||
return string.format(
|
||||
'%s%s%s %s',
|
||||
color(icons.round.left, 'Diagnostic' .. severity),
|
||||
color(msg, 'StDiagnostic' .. severity),
|
||||
color(icons.block.right, 'Diagnostic' .. severity),
|
||||
color(client_name, 'Diagnostic' .. severity)
|
||||
)
|
||||
end
|
||||
|
||||
if error_msg then
|
||||
return diagnostic_message(error_msg, 'Error')
|
||||
elseif warning_msg then
|
||||
return diagnostic_message(warning_msg, 'Warn')
|
||||
elseif hint_msg then
|
||||
return diagnostic_message(hint_msg, 'Hint')
|
||||
elseif info_msg then
|
||||
return diagnostic_message(info_msg, 'Info')
|
||||
end
|
||||
|
||||
return string.format(
|
||||
'%s%s%s %s',
|
||||
color(icons.round.left, 'StLsp'),
|
||||
color(icons.diagnostic.Ok, 'StLspReverse'),
|
||||
color(icons.block.right, 'StLsp'),
|
||||
color(client_name, 'StLsp')
|
||||
)
|
||||
end
|
||||
|
||||
local function layout_e()
|
||||
return string.format(
|
||||
'%s%s%s %s',
|
||||
color(icons.round.left, 'StInfo'),
|
||||
color('%l:%L', 'StInfoReverse'),
|
||||
color(icons.block.right, 'StInfo'),
|
||||
color('%t', 'StInfo')
|
||||
)
|
||||
end
|
||||
|
||||
function M.setup()
|
||||
set_highlight()
|
||||
|
||||
local layout = {
|
||||
a = layout_a(),
|
||||
b = layout_b(),
|
||||
c = '',
|
||||
d = layout_d(),
|
||||
e = layout_e(),
|
||||
}
|
||||
|
||||
return string.format('%s %s %%= %s %%= %s %s', layout.a, layout.b, layout.c, layout.d, layout.e)
|
||||
end
|
||||
|
||||
return M
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
[repo](https://github.com/maxmx03/roseline)
|
||||
|
||||
## Transparent telescope.nvim
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue