added vim-indent-object to make folds easier

This commit is contained in:
Venus
2025-09-28 12:20:25 -05:00
parent efbaa5d044
commit 2b63cdc1c7
4 changed files with 1995 additions and 0 deletions

345
colors/root-loops-dark.vim Normal file
View File

@@ -0,0 +1,345 @@
" Store the following config under ~/.config/nvim/colors/root-loops.vim
" then load it into neovim via ':colorscheme root-loops' or by declaring
" it as your colorscheme in your neovim config.
" root-loops.vim -- Root Loops Vim Color Scheme.
" Webpage: https://rootloops.sh?sugar=6&colors=10&sogginess=0&flavor=0&fruit=1&milk=0
" Description: A neovim color scheme for cereal lovers
hi clear
if exists("syntax_on")
syntax reset
endif
let colors_name = "root loops"
if ($TERM =~ '256' || &t_Co >= 256) || has("gui_running")
hi Normal ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
hi NonText ctermfg=0 guifg=#080808
hi Comment ctermfg=8 cterm=italic guifg=#525252 gui=italic
hi Constant ctermfg=3 guifg=#c16b00
hi Error ctermfg=1 guifg=#ed007e
hi Identifier ctermfg=9 guifg=#ff4593
hi Function ctermfg=4 guifg=#008dcf
hi Special ctermfg=13 guifg=#ad75ff
hi Delimiter ctermfg=15 guifg=#e2e2e2
hi Statement ctermfg=5 guifg=#9f4dff
hi String ctermfg=2 guifg=#798f00
hi Operator ctermfg=6 guifg=#009986
hi Boolean ctermfg=3 guifg=#c16b00
hi Label ctermfg=14 guifg=#00b19c
hi Keyword ctermfg=5 guifg=#9f4dff
hi Exception ctermfg=5 guifg=#9f4dff
hi Conditional ctermfg=5 guifg=#9f4dff
hi PreProc ctermfg=13 guifg=#ad75ff
hi Include ctermfg=5 guifg=#9f4dff
hi Macro ctermfg=5 guifg=#9f4dff
hi StorageClass ctermfg=11 guifg=#de7c00
hi Structure ctermfg=11 guifg=#de7c00
hi Todo ctermbg=12 ctermfg=0 cterm=bold guibg=#00a3ee guifg=#080808 gui=bold
hi Type ctermfg=11 guifg=#de7c00
hi Underlined cterm=underline gui=underline
hi Bold cterm=bold gui=bold
hi Italic cterm=italic gui=italic
hi Ignore ctermbg=NONE ctermfg=NONE cterm=NONE guibg=NONE guifg=NONE gui=NONE
hi StatusLine ctermbg=0 ctermfg=15 cterm=NONE guibg=#222222 guifg=#e2e2e2 gui=NONE
hi StatusLineNC ctermbg=0 ctermfg=15 cterm=NONE guibg=#080808 guifg=#f1f1f1 gui=NONE
hi VertSplit ctermfg=8 guifg=#525252
hi TabLine ctermbg=0 ctermfg=7 guibg=#222222 guifg=#b9b9b9
hi TabLineFill ctermbg=NONE ctermfg=0 guibg=NONE guifg=#222222
hi TabLineSel ctermbg=11 ctermfg=0 guibg=#de7c00 guifg=#222222
hi Title ctermfg=4 cterm=bold guifg=#008dcf gui=bold
hi CursorLine ctermbg=0 ctermfg=NONE guibg=#222222 guifg=NONE
hi Cursor ctermbg=15 ctermfg=0 guibg=#e2e2e2 guifg=#080808
hi CursorColumn ctermbg=0 guibg=#222222
hi LineNr ctermfg=8 guifg=#525252
hi CursorLineNr ctermfg=6 guifg=#009986
hi helpLeadBlank ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
hi helpNormal ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
hi Visual ctermbg=8 ctermfg=15 cterm=bold guibg=#525252 guifg=#e2e2e2 gui=bold
hi VisualNOS ctermbg=8 ctermfg=15 cterm=bold guibg=#525252 guifg=#e2e2e2 gui=bold
hi Pmenu ctermbg=0 ctermfg=15 guibg=#222222 guifg=#e2e2e2
hi PmenuSbar ctermbg=8 ctermfg=7 guibg=#525252 guifg=#b9b9b9
hi PmenuSel ctermbg=8 ctermfg=15 cterm=bold guibg=#525252 guifg=#e2e2e2 gui=bold
hi PmenuThumb ctermbg=7 ctermfg=NONE guibg=#b9b9b9 guifg=NONE
hi FoldColumn ctermfg=7 guifg=#b9b9b9
hi Folded ctermfg=12 guifg=#00a3ee
hi WildMenu ctermbg=0 ctermfg=15 cterm=NONE guibg=#222222 guifg=#e2e2e2 gui=NONE
hi SpecialKey ctermfg=0 guifg=#222222
hi IncSearch ctermbg=1 ctermfg=0 guibg=#ed007e guifg=#080808
hi CurSearch ctermbg=3 ctermfg=0 guibg=#c16b00 guifg=#080808
hi Search ctermbg=11 ctermfg=0 guibg=#de7c00 guifg=#080808
hi Directory ctermfg=4 guifg=#008dcf
hi MatchParen ctermbg=0 ctermfg=3 cterm=bold guibg=#222222 guifg=#c16b00 gui=bold
hi SpellBad cterm=undercurl gui=undercurl guisp=#ff4593
hi SpellCap cterm=undercurl gui=undercurl guisp=#de7c00
hi SpellLocal cterm=undercurl gui=undercurl guisp=#00a3ee
hi SpellRare cterm=undercurl gui=undercurl guisp=#8da600
hi ColorColumn ctermbg=8 guibg=#525252
hi SignColumn ctermfg=7 guifg=#b9b9b9
hi ModeMsg ctermbg=15 ctermfg=0 cterm=bold guibg=#f1f1f1 guifg=#222222 gui=bold
hi MoreMsg ctermfg=4 guifg=#008dcf
hi Question ctermfg=4 guifg=#008dcf
hi QuickFixLine ctermbg=0 ctermfg=14 guibg=#222222 guifg=#00b19c
hi Conceal ctermfg=8 guifg=#525252
hi ToolbarLine ctermbg=0 ctermfg=15 guibg=#222222 guifg=#f1f1f1
hi ToolbarButton ctermbg=8 ctermfg=15 guibg=#525252 guifg=#f1f1f1
hi debugPC ctermfg=7 guifg=#b9b9b9
hi debugBreakpoint ctermfg=8 guifg=#525252
hi ErrorMsg ctermfg=1 cterm=bold,italic guifg=#ed007e gui=bold,italic
hi WarningMsg ctermfg=11 guifg=#de7c00
hi DiffAdd ctermbg=10 ctermfg=0 guibg=#8da600 guifg=#080808
hi DiffChange ctermbg=12 ctermfg=0 guibg=#00a3ee guifg=#080808
hi DiffDelete ctermbg=9 ctermfg=0 guibg=#ff4593 guifg=#080808
hi DiffText ctermbg=14 ctermfg=0 guibg=#00b19c guifg=#080808
hi diffAdded ctermfg=10 guifg=#8da600
hi diffRemoved ctermfg=9 guifg=#ff4593
hi diffChanged ctermfg=12 guifg=#00a3ee
hi diffOldFile ctermfg=11 guifg=#de7c00
hi diffNewFile ctermfg=13 guifg=#ad75ff
hi diffFile ctermfg=12 guifg=#00a3ee
hi diffLine ctermfg=7 guifg=#b9b9b9
hi diffIndexLine ctermfg=14 guifg=#00b19c
hi healthError ctermfg=1 guifg=#ed007e
hi healthSuccess ctermfg=2 guifg=#798f00
hi healthWarning ctermfg=3 guifg=#c16b00
hi NormalFloat ctermbg=0 ctermfg=15 guibg=#080808 guifg=#e2e2e2
hi FloatBorder ctermbg=0 ctermfg=7 guibg=#080808 guifg=#b9b9b9
hi FloatShadow ctermbg=0 ctermfg=15 guibg=#222222 guifg=#e2e2e2
hi @variable ctermfg=15 guifg=#e2e2e2
hi @variable.builtin ctermfg=1 guifg=#ed007e
hi @variable.parameter ctermfg=1 guifg=#ed007e
hi @variable.member ctermfg=1 guifg=#ed007e
hi @constant.builtin ctermfg=5 guifg=#9f4dff
hi @string.regexp ctermfg=1 guifg=#ed007e
hi @string.escape ctermfg=6 guifg=#009986
hi @string.special.url ctermfg=4 cterm=underline guifg=#008dcf gui=underline
hi @string.special.symbol ctermfg=13 guifg=#ad75ff
hi @type.builtin ctermfg=3 guifg=#c16b00
hi @property ctermfg=1 guifg=#ed007e
hi @function.builtin ctermfg=5 guifg=#9f4dff
hi @constructor ctermfg=11 guifg=#de7c00
hi @keyword.function ctermfg=5 guifg=#9f4dff
hi @keyword.return ctermfg=5 guifg=#9f4dff
hi @keyword.export ctermfg=12 guifg=#00a3ee
hi @punctuation.bracket ctermfg=15 guifg=#e2e2e2
hi @comment.error ctermbg=9 ctermfg=0 guibg=#ff4593 guifg=#080808
hi @comment.warning ctermbg=11 ctermfg=0 guibg=#de7c00 guifg=#080808
hi @comment.todo ctermbg=12 ctermfg=0 guibg=#00a3ee guifg=#080808
hi @comment.note ctermbg=14 ctermfg=0 guibg=#00b19c guifg=#080808
hi @markup ctermfg=15 guifg=#e2e2e2
hi @markup.strong ctermfg=15 cterm=bold guifg=#e2e2e2 gui=bold
hi @markup.italic ctermfg=15 cterm=italic guifg=#e2e2e2 gui=italic
hi @markup.strikethrough ctermfg=15 cterm=strikethrough guifg=#e2e2e2 gui=strikethrough
hi @markup.heading ctermfg=4 cterm=bold guifg=#008dcf gui=bold
hi @markup.quote ctermfg=6 guifg=#009986
hi @markup.math ctermfg=4 guifg=#008dcf
hi @markup.link.url ctermfg=5 cterm=underline guifg=#9f4dff gui=underline
hi @markup.raw ctermfg=14 guifg=#00b19c
hi @markup.list.checked ctermfg=2 guifg=#798f00
hi @markup.list.unchecked ctermfg=7 guifg=#b9b9b9
hi @tag ctermfg=5 guifg=#9f4dff
hi @tag.builtin ctermfg=6 guifg=#009986
hi @tag.attribute ctermfg=4 guifg=#008dcf
hi @tag.delimiter ctermfg=15 guifg=#e2e2e2
elseif &t_Co == 8 || $TERM !~# '^linux' || &t_Co == 16
set t_Co=16
hi Normal ctermbg=NONE ctermfg=NONE
hi NonText ctermfg=0
hi Comment ctermfg=8 cterm=italic
hi Constant ctermfg=3
hi Error ctermfg=1
hi Identifier ctermfg=9
hi Function ctermfg=4
hi Special ctermfg=13
hi Delimiter ctermfg=15
hi Statement ctermfg=5
hi String ctermfg=2
hi Operator ctermfg=6
hi Boolean ctermfg=3
hi Label ctermfg=14
hi Keyword ctermfg=5
hi Exception ctermfg=5
hi Conditional ctermfg=5
hi PreProc ctermfg=13
hi Include ctermfg=5
hi Macro ctermfg=5
hi StorageClass ctermfg=11
hi Structure ctermfg=11
hi Todo ctermbg=12 ctermfg=0 cterm=bold
hi Type ctermfg=11
hi Underlined cterm=underline
hi Bold cterm=bold
hi Italic cterm=italic
hi Ignore ctermbg=NONE ctermfg=NONE cterm=NONE
hi StatusLine ctermbg=0 ctermfg=15 cterm=NONE
hi StatusLineNC ctermbg=0 ctermfg=15 cterm=NONE
hi VertSplit ctermfg=8
hi TabLine ctermbg=0 ctermfg=7
hi TabLineFill ctermbg=NONE ctermfg=0
hi TabLineSel ctermbg=11 ctermfg=0
hi Title ctermfg=4 cterm=bold
hi CursorLine ctermbg=0 ctermfg=NONE
hi Cursor ctermbg=15 ctermfg=0
hi CursorColumn ctermbg=0
hi LineNr ctermfg=8
hi CursorLineNr ctermfg=6
hi helpLeadBlank ctermbg=NONE ctermfg=NONE
hi helpNormal ctermbg=NONE ctermfg=NONE
hi Visual ctermbg=8 ctermfg=15 cterm=bold
hi VisualNOS ctermbg=8 ctermfg=15 cterm=bold
hi Pmenu ctermbg=0 ctermfg=15
hi PmenuSbar ctermbg=8 ctermfg=7
hi PmenuSel ctermbg=8 ctermfg=15 cterm=bold
hi PmenuThumb ctermbg=7 ctermfg=NONE
hi FoldColumn ctermfg=7
hi Folded ctermfg=12
hi WildMenu ctermbg=0 ctermfg=15 cterm=NONE
hi SpecialKey ctermfg=0
hi IncSearch ctermbg=1 ctermfg=0
hi CurSearch ctermbg=3 ctermfg=0
hi Search ctermbg=11 ctermfg=0
hi Directory ctermfg=4
hi MatchParen ctermbg=0 ctermfg=3 cterm=bold
hi SpellBad cterm=undercurl
hi SpellCap cterm=undercurl
hi SpellLocal cterm=undercurl
hi SpellRare cterm=undercurl
hi ColorColumn ctermbg=8
hi SignColumn ctermfg=7
hi ModeMsg ctermbg=15 ctermfg=0 cterm=bold
hi MoreMsg ctermfg=4
hi Question ctermfg=4
hi QuickFixLine ctermbg=0 ctermfg=14
hi Conceal ctermfg=8
hi ToolbarLine ctermbg=0 ctermfg=15
hi ToolbarButton ctermbg=8 ctermfg=15
hi debugPC ctermfg=7
hi debugBreakpoint ctermfg=8
hi ErrorMsg ctermfg=1 cterm=bold,italic
hi WarningMsg ctermfg=11
hi DiffAdd ctermbg=10 ctermfg=0
hi DiffChange ctermbg=12 ctermfg=0
hi DiffDelete ctermbg=9 ctermfg=0
hi DiffText ctermbg=14 ctermfg=0
hi diffAdded ctermfg=10
hi diffRemoved ctermfg=9
hi diffChanged ctermfg=12
hi diffOldFile ctermfg=11
hi diffNewFile ctermfg=13
hi diffFile ctermfg=12
hi diffLine ctermfg=7
hi diffIndexLine ctermfg=14
hi healthError ctermfg=1
hi healthSuccess ctermfg=2
hi healthWarning ctermfg=3
hi NormalFloat ctermbg=0 ctermfg=15
hi FloatBorder ctermbg=0 ctermfg=7
hi FloatShadow ctermbg=0 ctermfg=15
hi @variable ctermfg=15
hi @variable.builtin ctermfg=1
hi @variable.parameter ctermfg=1
hi @variable.member ctermfg=1
hi @constant.builtin ctermfg=5
hi @string.regexp ctermfg=1
hi @string.escape ctermfg=6
hi @string.special.url ctermfg=4 cterm=underline
hi @string.special.symbol ctermfg=13
hi @type.builtin ctermfg=3
hi @property ctermfg=1
hi @function.builtin ctermfg=5
hi @constructor ctermfg=11
hi @keyword.function ctermfg=5
hi @keyword.return ctermfg=5
hi @keyword.export ctermfg=12
hi @punctuation.bracket ctermfg=15
hi @comment.error ctermbg=9 ctermfg=0
hi @comment.warning ctermbg=11 ctermfg=0
hi @comment.todo ctermbg=12 ctermfg=0
hi @comment.note ctermbg=14 ctermfg=0
hi @markup ctermfg=15
hi @markup.strong ctermfg=15 cterm=bold
hi @markup.italic ctermfg=15 cterm=italic
hi @markup.strikethrough ctermfg=15 cterm=strikethrough
hi @markup.heading ctermfg=4 cterm=bold
hi @markup.quote ctermfg=6
hi @markup.math ctermfg=4
hi @markup.link.url ctermfg=5 cterm=underline
hi @markup.raw ctermfg=14
hi @markup.list.checked ctermfg=2
hi @markup.list.unchecked ctermfg=7
hi @tag ctermfg=5
hi @tag.builtin ctermfg=6
hi @tag.attribute ctermfg=4
hi @tag.delimiter ctermfg=15
endif
hi link EndOfBuffer NonText
hi link SpecialComment Special
hi link Define PreProc
hi link PreCondit PreProc
hi link Number Constant
hi link Float Number
hi link Typedef Type
hi link SpecialChar Special
hi link Debug Special
hi link StatusLineTerm StatusLine
hi link StatusLineTermNC StatusLineNC
hi link WinSeparator VertSplit
hi link WinBar StatusLine
hi link WinBarNC StatusLineNC
hi link lCursor Cursor
hi link CursorIM Cursor
hi link Terminal Normal
hi link @variable.parameter.builtin @variable.parameter
hi link @constant Constant
hi link @constant.macro Macro
hi link @module Structure
hi link @module.builtin Special
hi link @label Label
hi link @string String
hi link @string.special Special
hi link @character Character
hi link @character.special SpecialChar
hi link @boolean Boolean
hi link @number Number
hi link @number.float Float
hi link @type Type
hi link @type.definition Type
hi link @attribute Constant
hi link @attribute.builtin Constant
hi link @function Function
hi link @function.call Function
hi link @function.method Function
hi link @function.method.call Function
hi link @operator Operator
hi link @keyword Keyword
hi link @keyword.coroutine Keyword
hi link @keyword.operator Operator
hi link @keyword.import Include
hi link @keyword.type Keyword
hi link @keyword.modifier Keyword
hi link @keyword.repeat Repeat
hi link @keyword.debug Exception
hi link @keyword.exception Exception
hi link @keyword.conditional Conditional
hi link @keyword.conditional.ternary Operator
hi link @keyword.directive PreProc
hi link @keyword.directive.define Define
hi link @punctuation.delimiter Delimiter
hi link @punctuation.special Special
hi link @comment Comment
hi link @comment.documentation Comment
hi link @markup.underline underline
hi link @markup.link Tag
hi link @markup.link.label Label
hi link @markup.list Special
hi link @diff.plus diffAdded
hi link @diff.minus diffRemoved
hi link @diff.delta diffChanged
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = [ '#222222', '#ed007e', '#798f00', '#c16b00', '#008dcf', '#9f4dff', '#009986', '#b9b9b9', '#525252', '#ff4593', '#8da600', '#de7c00', '#00a3ee', '#ad75ff', '#00b19c', '#f1f1f1' ]
endif

345
colors/root-loops-old.vim Normal file
View File

@@ -0,0 +1,345 @@
" Store the following config under ~/.config/nvim/colors/root-loops.vim
" then load it into neovim via ':colorscheme root-loops' or by declaring
" it as your colorscheme in your neovim config.
" root-loops.vim -- Root Loops Vim Color Scheme.
" Webpage: https://rootloops.sh?sugar=6&colors=8&sogginess=10&flavor=1&fruit=10&milk=0
" Description: A neovim color scheme for cereal lovers
hi clear
if exists("syntax_on")
syntax reset
endif
let colors_name = "root loops"
if ($TERM =~ '256' || &t_Co >= 256) || has("gui_running")
hi Normal ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
hi NonText ctermfg=0 guifg=#0e0021
hi Comment ctermfg=8 cterm=italic guifg=#6a01bb gui=italic
hi Constant ctermfg=3 guifg=#ac7925
hi Error ctermfg=1 guifg=#db475f
hi Identifier ctermfg=9 guifg=#ed6677
hi Function ctermfg=4 guifg=#3d85dc
hi Special ctermfg=13 guifg=#c36ee7
hi Delimiter ctermfg=15 guifg=#e7dcff
hi Statement ctermfg=5 guifg=#b250d9
hi String ctermfg=2 guifg=#5f953c
hi Operator ctermfg=6 guifg=#2a9595
hi Boolean ctermfg=3 guifg=#ac7925
hi Label ctermfg=14 guifg=#33acac
hi Keyword ctermfg=5 guifg=#b250d9
hi Exception ctermfg=5 guifg=#b250d9
hi Conditional ctermfg=5 guifg=#b250d9
hi PreProc ctermfg=13 guifg=#c36ee7
hi Include ctermfg=5 guifg=#b250d9
hi Macro ctermfg=5 guifg=#b250d9
hi StorageClass ctermfg=11 guifg=#c68c2e
hi Structure ctermfg=11 guifg=#c68c2e
hi Todo ctermbg=12 ctermfg=0 cterm=bold guibg=#5a9bec guifg=#0e0021 gui=bold
hi Type ctermfg=11 guifg=#c68c2e
hi Underlined cterm=underline gui=underline
hi Bold cterm=bold gui=bold
hi Italic cterm=italic gui=italic
hi Ignore ctermbg=NONE ctermfg=NONE cterm=NONE guibg=NONE guifg=NONE gui=NONE
hi StatusLine ctermbg=0 ctermfg=15 cterm=NONE guibg=#2f0057 guifg=#e7dcff gui=NONE
hi StatusLineNC ctermbg=0 ctermfg=15 cterm=NONE guibg=#0e0021 guifg=#f3eeff gui=NONE
hi VertSplit ctermfg=8 guifg=#6a01bb
hi TabLine ctermbg=0 ctermfg=7 guibg=#2f0057 guifg=#c6a6ff
hi TabLineFill ctermbg=NONE ctermfg=0 guibg=NONE guifg=#2f0057
hi TabLineSel ctermbg=11 ctermfg=0 guibg=#c68c2e guifg=#2f0057
hi Title ctermfg=4 cterm=bold guifg=#3d85dc gui=bold
hi CursorLine ctermbg=0 ctermfg=NONE guibg=#2f0057 guifg=NONE
hi Cursor ctermbg=15 ctermfg=0 guibg=#e7dcff guifg=#0e0021
hi CursorColumn ctermbg=0 guibg=#2f0057
hi LineNr ctermfg=8 guifg=#6a01bb
hi CursorLineNr ctermfg=6 guifg=#2a9595
hi helpLeadBlank ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
hi helpNormal ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
hi Visual ctermbg=8 ctermfg=15 cterm=bold guibg=#6a01bb guifg=#e7dcff gui=bold
hi VisualNOS ctermbg=8 ctermfg=15 cterm=bold guibg=#6a01bb guifg=#e7dcff gui=bold
hi Pmenu ctermbg=0 ctermfg=15 guibg=#2f0057 guifg=#e7dcff
hi PmenuSbar ctermbg=8 ctermfg=7 guibg=#6a01bb guifg=#c6a6ff
hi PmenuSel ctermbg=8 ctermfg=15 cterm=bold guibg=#6a01bb guifg=#e7dcff gui=bold
hi PmenuThumb ctermbg=7 ctermfg=NONE guibg=#c6a6ff guifg=NONE
hi FoldColumn ctermfg=7 guifg=#c6a6ff
hi Folded ctermfg=12 guifg=#5a9bec
hi WildMenu ctermbg=0 ctermfg=15 cterm=NONE guibg=#2f0057 guifg=#e7dcff gui=NONE
hi SpecialKey ctermfg=0 guifg=#2f0057
hi IncSearch ctermbg=1 ctermfg=0 guibg=#db475f guifg=#0e0021
hi CurSearch ctermbg=3 ctermfg=0 guibg=#ac7925 guifg=#0e0021
hi Search ctermbg=11 ctermfg=0 guibg=#c68c2e guifg=#0e0021
hi Directory ctermfg=4 guifg=#3d85dc
hi MatchParen ctermbg=0 ctermfg=3 cterm=bold guibg=#2f0057 guifg=#ac7925 gui=bold
hi SpellBad cterm=undercurl gui=undercurl guisp=#ed6677
hi SpellCap cterm=undercurl gui=undercurl guisp=#c68c2e
hi SpellLocal cterm=undercurl gui=undercurl guisp=#5a9bec
hi SpellRare cterm=undercurl gui=undercurl guisp=#6ead47
hi ColorColumn ctermbg=8 guibg=#6a01bb
hi SignColumn ctermfg=7 guifg=#c6a6ff
hi ModeMsg ctermbg=15 ctermfg=0 cterm=bold guibg=#f3eeff guifg=#2f0057 gui=bold
hi MoreMsg ctermfg=4 guifg=#3d85dc
hi Question ctermfg=4 guifg=#3d85dc
hi QuickFixLine ctermbg=0 ctermfg=14 guibg=#2f0057 guifg=#33acac
hi Conceal ctermfg=8 guifg=#6a01bb
hi ToolbarLine ctermbg=0 ctermfg=15 guibg=#2f0057 guifg=#f3eeff
hi ToolbarButton ctermbg=8 ctermfg=15 guibg=#6a01bb guifg=#f3eeff
hi debugPC ctermfg=7 guifg=#c6a6ff
hi debugBreakpoint ctermfg=8 guifg=#6a01bb
hi ErrorMsg ctermfg=1 cterm=bold,italic guifg=#db475f gui=bold,italic
hi WarningMsg ctermfg=11 guifg=#c68c2e
hi DiffAdd ctermbg=10 ctermfg=0 guibg=#6ead47 guifg=#0e0021
hi DiffChange ctermbg=12 ctermfg=0 guibg=#5a9bec guifg=#0e0021
hi DiffDelete ctermbg=9 ctermfg=0 guibg=#ed6677 guifg=#0e0021
hi DiffText ctermbg=14 ctermfg=0 guibg=#33acac guifg=#0e0021
hi diffAdded ctermfg=10 guifg=#6ead47
hi diffRemoved ctermfg=9 guifg=#ed6677
hi diffChanged ctermfg=12 guifg=#5a9bec
hi diffOldFile ctermfg=11 guifg=#c68c2e
hi diffNewFile ctermfg=13 guifg=#c36ee7
hi diffFile ctermfg=12 guifg=#5a9bec
hi diffLine ctermfg=7 guifg=#c6a6ff
hi diffIndexLine ctermfg=14 guifg=#33acac
hi healthError ctermfg=1 guifg=#db475f
hi healthSuccess ctermfg=2 guifg=#5f953c
hi healthWarning ctermfg=3 guifg=#ac7925
hi NormalFloat ctermbg=0 ctermfg=15 guibg=#0e0021 guifg=#e7dcff
hi FloatBorder ctermbg=0 ctermfg=7 guibg=#0e0021 guifg=#c6a6ff
hi FloatShadow ctermbg=0 ctermfg=15 guibg=#2f0057 guifg=#e7dcff
hi @variable ctermfg=15 guifg=#e7dcff
hi @variable.builtin ctermfg=1 guifg=#db475f
hi @variable.parameter ctermfg=1 guifg=#db475f
hi @variable.member ctermfg=1 guifg=#db475f
hi @constant.builtin ctermfg=5 guifg=#b250d9
hi @string.regexp ctermfg=1 guifg=#db475f
hi @string.escape ctermfg=6 guifg=#2a9595
hi @string.special.url ctermfg=4 cterm=underline guifg=#3d85dc gui=underline
hi @string.special.symbol ctermfg=13 guifg=#c36ee7
hi @type.builtin ctermfg=3 guifg=#ac7925
hi @property ctermfg=1 guifg=#db475f
hi @function.builtin ctermfg=5 guifg=#b250d9
hi @constructor ctermfg=11 guifg=#c68c2e
hi @keyword.function ctermfg=5 guifg=#b250d9
hi @keyword.return ctermfg=5 guifg=#b250d9
hi @keyword.export ctermfg=12 guifg=#5a9bec
hi @punctuation.bracket ctermfg=15 guifg=#e7dcff
hi @comment.error ctermbg=9 ctermfg=0 guibg=#ed6677 guifg=#0e0021
hi @comment.warning ctermbg=11 ctermfg=0 guibg=#c68c2e guifg=#0e0021
hi @comment.todo ctermbg=12 ctermfg=0 guibg=#5a9bec guifg=#0e0021
hi @comment.note ctermbg=14 ctermfg=0 guibg=#33acac guifg=#0e0021
hi @markup ctermfg=15 guifg=#e7dcff
hi @markup.strong ctermfg=15 cterm=bold guifg=#e7dcff gui=bold
hi @markup.italic ctermfg=15 cterm=italic guifg=#e7dcff gui=italic
hi @markup.strikethrough ctermfg=15 cterm=strikethrough guifg=#e7dcff gui=strikethrough
hi @markup.heading ctermfg=4 cterm=bold guifg=#3d85dc gui=bold
hi @markup.quote ctermfg=6 guifg=#2a9595
hi @markup.math ctermfg=4 guifg=#3d85dc
hi @markup.link.url ctermfg=5 cterm=underline guifg=#b250d9 gui=underline
hi @markup.raw ctermfg=14 guifg=#33acac
hi @markup.list.checked ctermfg=2 guifg=#5f953c
hi @markup.list.unchecked ctermfg=7 guifg=#c6a6ff
hi @tag ctermfg=5 guifg=#b250d9
hi @tag.builtin ctermfg=6 guifg=#2a9595
hi @tag.attribute ctermfg=4 guifg=#3d85dc
hi @tag.delimiter ctermfg=15 guifg=#e7dcff
elseif &t_Co == 8 || $TERM !~# '^linux' || &t_Co == 16
set t_Co=16
hi Normal ctermbg=NONE ctermfg=NONE
hi NonText ctermfg=0
hi Comment ctermfg=8 cterm=italic
hi Constant ctermfg=3
hi Error ctermfg=1
hi Identifier ctermfg=9
hi Function ctermfg=4
hi Special ctermfg=13
hi Delimiter ctermfg=15
hi Statement ctermfg=5
hi String ctermfg=2
hi Operator ctermfg=6
hi Boolean ctermfg=3
hi Label ctermfg=14
hi Keyword ctermfg=5
hi Exception ctermfg=5
hi Conditional ctermfg=5
hi PreProc ctermfg=13
hi Include ctermfg=5
hi Macro ctermfg=5
hi StorageClass ctermfg=11
hi Structure ctermfg=11
hi Todo ctermbg=12 ctermfg=0 cterm=bold
hi Type ctermfg=11
hi Underlined cterm=underline
hi Bold cterm=bold
hi Italic cterm=italic
hi Ignore ctermbg=NONE ctermfg=NONE cterm=NONE
hi StatusLine ctermbg=0 ctermfg=15 cterm=NONE
hi StatusLineNC ctermbg=0 ctermfg=15 cterm=NONE
hi VertSplit ctermfg=8
hi TabLine ctermbg=0 ctermfg=7
hi TabLineFill ctermbg=NONE ctermfg=0
hi TabLineSel ctermbg=11 ctermfg=0
hi Title ctermfg=4 cterm=bold
hi CursorLine ctermbg=0 ctermfg=NONE
hi Cursor ctermbg=15 ctermfg=0
hi CursorColumn ctermbg=0
hi LineNr ctermfg=8
hi CursorLineNr ctermfg=6
hi helpLeadBlank ctermbg=NONE ctermfg=NONE
hi helpNormal ctermbg=NONE ctermfg=NONE
hi Visual ctermbg=8 ctermfg=15 cterm=bold
hi VisualNOS ctermbg=8 ctermfg=15 cterm=bold
hi Pmenu ctermbg=0 ctermfg=15
hi PmenuSbar ctermbg=8 ctermfg=7
hi PmenuSel ctermbg=8 ctermfg=15 cterm=bold
hi PmenuThumb ctermbg=7 ctermfg=NONE
hi FoldColumn ctermfg=7
hi Folded ctermfg=12
hi WildMenu ctermbg=0 ctermfg=15 cterm=NONE
hi SpecialKey ctermfg=0
hi IncSearch ctermbg=1 ctermfg=0
hi CurSearch ctermbg=3 ctermfg=0
hi Search ctermbg=11 ctermfg=0
hi Directory ctermfg=4
hi MatchParen ctermbg=0 ctermfg=3 cterm=bold
hi SpellBad cterm=undercurl
hi SpellCap cterm=undercurl
hi SpellLocal cterm=undercurl
hi SpellRare cterm=undercurl
hi ColorColumn ctermbg=8
hi SignColumn ctermfg=7
hi ModeMsg ctermbg=15 ctermfg=0 cterm=bold
hi MoreMsg ctermfg=4
hi Question ctermfg=4
hi QuickFixLine ctermbg=0 ctermfg=14
hi Conceal ctermfg=8
hi ToolbarLine ctermbg=0 ctermfg=15
hi ToolbarButton ctermbg=8 ctermfg=15
hi debugPC ctermfg=7
hi debugBreakpoint ctermfg=8
hi ErrorMsg ctermfg=1 cterm=bold,italic
hi WarningMsg ctermfg=11
hi DiffAdd ctermbg=10 ctermfg=0
hi DiffChange ctermbg=12 ctermfg=0
hi DiffDelete ctermbg=9 ctermfg=0
hi DiffText ctermbg=14 ctermfg=0
hi diffAdded ctermfg=10
hi diffRemoved ctermfg=9
hi diffChanged ctermfg=12
hi diffOldFile ctermfg=11
hi diffNewFile ctermfg=13
hi diffFile ctermfg=12
hi diffLine ctermfg=7
hi diffIndexLine ctermfg=14
hi healthError ctermfg=1
hi healthSuccess ctermfg=2
hi healthWarning ctermfg=3
hi NormalFloat ctermbg=0 ctermfg=15
hi FloatBorder ctermbg=0 ctermfg=7
hi FloatShadow ctermbg=0 ctermfg=15
hi @variable ctermfg=15
hi @variable.builtin ctermfg=1
hi @variable.parameter ctermfg=1
hi @variable.member ctermfg=1
hi @constant.builtin ctermfg=5
hi @string.regexp ctermfg=1
hi @string.escape ctermfg=6
hi @string.special.url ctermfg=4 cterm=underline
hi @string.special.symbol ctermfg=13
hi @type.builtin ctermfg=3
hi @property ctermfg=1
hi @function.builtin ctermfg=5
hi @constructor ctermfg=11
hi @keyword.function ctermfg=5
hi @keyword.return ctermfg=5
hi @keyword.export ctermfg=12
hi @punctuation.bracket ctermfg=15
hi @comment.error ctermbg=9 ctermfg=0
hi @comment.warning ctermbg=11 ctermfg=0
hi @comment.todo ctermbg=12 ctermfg=0
hi @comment.note ctermbg=14 ctermfg=0
hi @markup ctermfg=15
hi @markup.strong ctermfg=15 cterm=bold
hi @markup.italic ctermfg=15 cterm=italic
hi @markup.strikethrough ctermfg=15 cterm=strikethrough
hi @markup.heading ctermfg=4 cterm=bold
hi @markup.quote ctermfg=6
hi @markup.math ctermfg=4
hi @markup.link.url ctermfg=5 cterm=underline
hi @markup.raw ctermfg=14
hi @markup.list.checked ctermfg=2
hi @markup.list.unchecked ctermfg=7
hi @tag ctermfg=5
hi @tag.builtin ctermfg=6
hi @tag.attribute ctermfg=4
hi @tag.delimiter ctermfg=15
endif
hi link EndOfBuffer NonText
hi link SpecialComment Special
hi link Define PreProc
hi link PreCondit PreProc
hi link Number Constant
hi link Float Number
hi link Typedef Type
hi link SpecialChar Special
hi link Debug Special
hi link StatusLineTerm StatusLine
hi link StatusLineTermNC StatusLineNC
hi link WinSeparator VertSplit
hi link WinBar StatusLine
hi link WinBarNC StatusLineNC
hi link lCursor Cursor
hi link CursorIM Cursor
hi link Terminal Normal
hi link @variable.parameter.builtin @variable.parameter
hi link @constant Constant
hi link @constant.macro Macro
hi link @module Structure
hi link @module.builtin Special
hi link @label Label
hi link @string String
hi link @string.special Special
hi link @character Character
hi link @character.special SpecialChar
hi link @boolean Boolean
hi link @number Number
hi link @number.float Float
hi link @type Type
hi link @type.definition Type
hi link @attribute Constant
hi link @attribute.builtin Constant
hi link @function Function
hi link @function.call Function
hi link @function.method Function
hi link @function.method.call Function
hi link @operator Operator
hi link @keyword Keyword
hi link @keyword.coroutine Keyword
hi link @keyword.operator Operator
hi link @keyword.import Include
hi link @keyword.type Keyword
hi link @keyword.modifier Keyword
hi link @keyword.repeat Repeat
hi link @keyword.debug Exception
hi link @keyword.exception Exception
hi link @keyword.conditional Conditional
hi link @keyword.conditional.ternary Operator
hi link @keyword.directive PreProc
hi link @keyword.directive.define Define
hi link @punctuation.delimiter Delimiter
hi link @punctuation.special Special
hi link @comment Comment
hi link @comment.documentation Comment
hi link @markup.underline underline
hi link @markup.link Tag
hi link @markup.link.label Label
hi link @markup.list Special
hi link @diff.plus diffAdded
hi link @diff.minus diffRemoved
hi link @diff.delta diffChanged
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = [ '#2f0057', '#db475f', '#5f953c', '#ac7925', '#3d85dc', '#b250d9', '#2a9595', '#c6a6ff', '#6a01bb', '#ed6677', '#6ead47', '#c68c2e', '#5a9bec', '#c36ee7', '#33acac', '#f3eeff' ]
endif

345
colors/root-loops.vim Normal file
View File

@@ -0,0 +1,345 @@
" Store the following config under ~/.config/nvim/colors/root-loops.vim
" then load it into neovim via ':colorscheme root-loops' or by declaring
" it as your colorscheme in your neovim config.
" root-loops.vim -- Root Loops Vim Color Scheme.
" Webpage: https://rootloops.sh?sugar=7&colors=7&sogginess=10&flavor=0&fruit=10&milk=2
" Description: A neovim color scheme for cereal lovers
hi clear
if exists("syntax_on")
syntax reset
endif
let colors_name = "root loops"
if ($TERM =~ '256' || &t_Co >= 256) || has("gui_running")
hi Normal ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
hi NonText ctermfg=0 guifg=#e7dcff
hi Comment ctermfg=8 cterm=italic guifg=#b17eff gui=italic
hi Constant ctermfg=3 guifg=#cf8544
hi Error ctermfg=1 guifg=#e26b95
hi Identifier ctermfg=9 guifg=#ed8cab
hi Function ctermfg=4 guifg=#4fa1d7
hi Special ctermfg=13 guifg=#b99ded
hi Delimiter ctermfg=15 guifg=#2f0057
hi Statement ctermfg=5 guifg=#a782e5
hi String ctermfg=2 guifg=#8fa445
hi Operator ctermfg=6 guifg=#47ac9b
hi Boolean ctermfg=3 guifg=#cf8544
hi Label ctermfg=14 guifg=#56c4b1
hi Keyword ctermfg=5 guifg=#a782e5
hi Exception ctermfg=5 guifg=#a782e5
hi Conditional ctermfg=5 guifg=#a782e5
hi PreProc ctermfg=13 guifg=#b99ded
hi Include ctermfg=5 guifg=#a782e5
hi Macro ctermfg=5 guifg=#a782e5
hi StorageClass ctermfg=11 guifg=#e59b5d
hi Structure ctermfg=11 guifg=#e59b5d
hi Todo ctermbg=12 ctermfg=0 cterm=bold guibg=#6db7e9 guifg=#e7dcff gui=bold
hi Type ctermfg=11 guifg=#e59b5d
hi Underlined cterm=underline gui=underline
hi Bold cterm=bold gui=bold
hi Italic cterm=italic gui=italic
hi Ignore ctermbg=NONE ctermfg=NONE cterm=NONE guibg=NONE guifg=NONE gui=NONE
hi StatusLine ctermbg=0 ctermfg=15 cterm=NONE guibg=#dccaff guifg=#2f0057 gui=NONE
hi StatusLineNC ctermbg=0 ctermfg=15 cterm=NONE guibg=#e7dcff guifg=#0e0021 gui=NONE
hi VertSplit ctermfg=8 guifg=#b17eff
hi TabLine ctermbg=0 ctermfg=7 guibg=#dccaff guifg=#6a01bb
hi TabLineFill ctermbg=NONE ctermfg=0 guibg=NONE guifg=#dccaff
hi TabLineSel ctermbg=11 ctermfg=0 guibg=#e59b5d guifg=#dccaff
hi Title ctermfg=4 cterm=bold guifg=#4fa1d7 gui=bold
hi CursorLine ctermbg=0 ctermfg=NONE guibg=#dccaff guifg=NONE
hi Cursor ctermbg=15 ctermfg=0 guibg=#2f0057 guifg=#e7dcff
hi CursorColumn ctermbg=0 guibg=#dccaff
hi LineNr ctermfg=8 guifg=#b17eff
hi CursorLineNr ctermfg=6 guifg=#47ac9b
hi helpLeadBlank ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
hi helpNormal ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
hi Visual ctermbg=8 ctermfg=15 cterm=bold guibg=#b17eff guifg=#2f0057 gui=bold
hi VisualNOS ctermbg=8 ctermfg=15 cterm=bold guibg=#b17eff guifg=#2f0057 gui=bold
hi Pmenu ctermbg=0 ctermfg=15 guibg=#dccaff guifg=#2f0057
hi PmenuSbar ctermbg=8 ctermfg=7 guibg=#b17eff guifg=#6a01bb
hi PmenuSel ctermbg=8 ctermfg=15 cterm=bold guibg=#b17eff guifg=#2f0057 gui=bold
hi PmenuThumb ctermbg=7 ctermfg=NONE guibg=#6a01bb guifg=NONE
hi FoldColumn ctermfg=7 guifg=#6a01bb
hi Folded ctermfg=12 guifg=#6db7e9
hi WildMenu ctermbg=0 ctermfg=15 cterm=NONE guibg=#dccaff guifg=#2f0057 gui=NONE
hi SpecialKey ctermfg=0 guifg=#dccaff
hi IncSearch ctermbg=1 ctermfg=0 guibg=#e26b95 guifg=#e7dcff
hi CurSearch ctermbg=3 ctermfg=0 guibg=#cf8544 guifg=#e7dcff
hi Search ctermbg=11 ctermfg=0 guibg=#e59b5d guifg=#e7dcff
hi Directory ctermfg=4 guifg=#4fa1d7
hi MatchParen ctermbg=0 ctermfg=3 cterm=bold guibg=#dccaff guifg=#cf8544 gui=bold
hi SpellBad cterm=undercurl gui=undercurl guisp=#ed8cab
hi SpellCap cterm=undercurl gui=undercurl guisp=#e59b5d
hi SpellLocal cterm=undercurl gui=undercurl guisp=#6db7e9
hi SpellRare cterm=undercurl gui=undercurl guisp=#a4ba54
hi ColorColumn ctermbg=8 guibg=#b17eff
hi SignColumn ctermfg=7 guifg=#6a01bb
hi ModeMsg ctermbg=15 ctermfg=0 cterm=bold guibg=#0e0021 guifg=#dccaff gui=bold
hi MoreMsg ctermfg=4 guifg=#4fa1d7
hi Question ctermfg=4 guifg=#4fa1d7
hi QuickFixLine ctermbg=0 ctermfg=14 guibg=#dccaff guifg=#56c4b1
hi Conceal ctermfg=8 guifg=#b17eff
hi ToolbarLine ctermbg=0 ctermfg=15 guibg=#dccaff guifg=#0e0021
hi ToolbarButton ctermbg=8 ctermfg=15 guibg=#b17eff guifg=#0e0021
hi debugPC ctermfg=7 guifg=#6a01bb
hi debugBreakpoint ctermfg=8 guifg=#b17eff
hi ErrorMsg ctermfg=1 cterm=bold,italic guifg=#e26b95 gui=bold,italic
hi WarningMsg ctermfg=11 guifg=#e59b5d
hi DiffAdd ctermbg=10 ctermfg=0 guibg=#a4ba54 guifg=#e7dcff
hi DiffChange ctermbg=12 ctermfg=0 guibg=#6db7e9 guifg=#e7dcff
hi DiffDelete ctermbg=9 ctermfg=0 guibg=#ed8cab guifg=#e7dcff
hi DiffText ctermbg=14 ctermfg=0 guibg=#56c4b1 guifg=#e7dcff
hi diffAdded ctermfg=10 guifg=#a4ba54
hi diffRemoved ctermfg=9 guifg=#ed8cab
hi diffChanged ctermfg=12 guifg=#6db7e9
hi diffOldFile ctermfg=11 guifg=#e59b5d
hi diffNewFile ctermfg=13 guifg=#b99ded
hi diffFile ctermfg=12 guifg=#6db7e9
hi diffLine ctermfg=7 guifg=#6a01bb
hi diffIndexLine ctermfg=14 guifg=#56c4b1
hi healthError ctermfg=1 guifg=#e26b95
hi healthSuccess ctermfg=2 guifg=#8fa445
hi healthWarning ctermfg=3 guifg=#cf8544
hi NormalFloat ctermbg=0 ctermfg=15 guibg=#e7dcff guifg=#2f0057
hi FloatBorder ctermbg=0 ctermfg=7 guibg=#e7dcff guifg=#6a01bb
hi FloatShadow ctermbg=0 ctermfg=15 guibg=#dccaff guifg=#2f0057
hi @variable ctermfg=15 guifg=#2f0057
hi @variable.builtin ctermfg=1 guifg=#e26b95
hi @variable.parameter ctermfg=1 guifg=#e26b95
hi @variable.member ctermfg=1 guifg=#e26b95
hi @constant.builtin ctermfg=5 guifg=#a782e5
hi @string.regexp ctermfg=1 guifg=#e26b95
hi @string.escape ctermfg=6 guifg=#47ac9b
hi @string.special.url ctermfg=4 cterm=underline guifg=#4fa1d7 gui=underline
hi @string.special.symbol ctermfg=13 guifg=#b99ded
hi @type.builtin ctermfg=3 guifg=#cf8544
hi @property ctermfg=1 guifg=#e26b95
hi @function.builtin ctermfg=5 guifg=#a782e5
hi @constructor ctermfg=11 guifg=#e59b5d
hi @keyword.function ctermfg=5 guifg=#a782e5
hi @keyword.return ctermfg=5 guifg=#a782e5
hi @keyword.export ctermfg=12 guifg=#6db7e9
hi @punctuation.bracket ctermfg=15 guifg=#2f0057
hi @comment.error ctermbg=9 ctermfg=0 guibg=#ed8cab guifg=#e7dcff
hi @comment.warning ctermbg=11 ctermfg=0 guibg=#e59b5d guifg=#e7dcff
hi @comment.todo ctermbg=12 ctermfg=0 guibg=#6db7e9 guifg=#e7dcff
hi @comment.note ctermbg=14 ctermfg=0 guibg=#56c4b1 guifg=#e7dcff
hi @markup ctermfg=15 guifg=#2f0057
hi @markup.strong ctermfg=15 cterm=bold guifg=#2f0057 gui=bold
hi @markup.italic ctermfg=15 cterm=italic guifg=#2f0057 gui=italic
hi @markup.strikethrough ctermfg=15 cterm=strikethrough guifg=#2f0057 gui=strikethrough
hi @markup.heading ctermfg=4 cterm=bold guifg=#4fa1d7 gui=bold
hi @markup.quote ctermfg=6 guifg=#47ac9b
hi @markup.math ctermfg=4 guifg=#4fa1d7
hi @markup.link.url ctermfg=5 cterm=underline guifg=#a782e5 gui=underline
hi @markup.raw ctermfg=14 guifg=#56c4b1
hi @markup.list.checked ctermfg=2 guifg=#8fa445
hi @markup.list.unchecked ctermfg=7 guifg=#6a01bb
hi @tag ctermfg=5 guifg=#a782e5
hi @tag.builtin ctermfg=6 guifg=#47ac9b
hi @tag.attribute ctermfg=4 guifg=#4fa1d7
hi @tag.delimiter ctermfg=15 guifg=#2f0057
elseif &t_Co == 8 || $TERM !~# '^linux' || &t_Co == 16
set t_Co=16
hi Normal ctermbg=NONE ctermfg=NONE
hi NonText ctermfg=0
hi Comment ctermfg=8 cterm=italic
hi Constant ctermfg=3
hi Error ctermfg=1
hi Identifier ctermfg=9
hi Function ctermfg=4
hi Special ctermfg=13
hi Delimiter ctermfg=15
hi Statement ctermfg=5
hi String ctermfg=2
hi Operator ctermfg=6
hi Boolean ctermfg=3
hi Label ctermfg=14
hi Keyword ctermfg=5
hi Exception ctermfg=5
hi Conditional ctermfg=5
hi PreProc ctermfg=13
hi Include ctermfg=5
hi Macro ctermfg=5
hi StorageClass ctermfg=11
hi Structure ctermfg=11
hi Todo ctermbg=12 ctermfg=0 cterm=bold
hi Type ctermfg=11
hi Underlined cterm=underline
hi Bold cterm=bold
hi Italic cterm=italic
hi Ignore ctermbg=NONE ctermfg=NONE cterm=NONE
hi StatusLine ctermbg=0 ctermfg=15 cterm=NONE
hi StatusLineNC ctermbg=0 ctermfg=15 cterm=NONE
hi VertSplit ctermfg=8
hi TabLine ctermbg=0 ctermfg=7
hi TabLineFill ctermbg=NONE ctermfg=0
hi TabLineSel ctermbg=11 ctermfg=0
hi Title ctermfg=4 cterm=bold
hi CursorLine ctermbg=0 ctermfg=NONE
hi Cursor ctermbg=15 ctermfg=0
hi CursorColumn ctermbg=0
hi LineNr ctermfg=8
hi CursorLineNr ctermfg=6
hi helpLeadBlank ctermbg=NONE ctermfg=NONE
hi helpNormal ctermbg=NONE ctermfg=NONE
hi Visual ctermbg=8 ctermfg=15 cterm=bold
hi VisualNOS ctermbg=8 ctermfg=15 cterm=bold
hi Pmenu ctermbg=0 ctermfg=15
hi PmenuSbar ctermbg=8 ctermfg=7
hi PmenuSel ctermbg=8 ctermfg=15 cterm=bold
hi PmenuThumb ctermbg=7 ctermfg=NONE
hi FoldColumn ctermfg=7
hi Folded ctermfg=12
hi WildMenu ctermbg=0 ctermfg=15 cterm=NONE
hi SpecialKey ctermfg=0
hi IncSearch ctermbg=1 ctermfg=0
hi CurSearch ctermbg=3 ctermfg=0
hi Search ctermbg=11 ctermfg=0
hi Directory ctermfg=4
hi MatchParen ctermbg=0 ctermfg=3 cterm=bold
hi SpellBad cterm=undercurl
hi SpellCap cterm=undercurl
hi SpellLocal cterm=undercurl
hi SpellRare cterm=undercurl
hi ColorColumn ctermbg=8
hi SignColumn ctermfg=7
hi ModeMsg ctermbg=15 ctermfg=0 cterm=bold
hi MoreMsg ctermfg=4
hi Question ctermfg=4
hi QuickFixLine ctermbg=0 ctermfg=14
hi Conceal ctermfg=8
hi ToolbarLine ctermbg=0 ctermfg=15
hi ToolbarButton ctermbg=8 ctermfg=15
hi debugPC ctermfg=7
hi debugBreakpoint ctermfg=8
hi ErrorMsg ctermfg=1 cterm=bold,italic
hi WarningMsg ctermfg=11
hi DiffAdd ctermbg=10 ctermfg=0
hi DiffChange ctermbg=12 ctermfg=0
hi DiffDelete ctermbg=9 ctermfg=0
hi DiffText ctermbg=14 ctermfg=0
hi diffAdded ctermfg=10
hi diffRemoved ctermfg=9
hi diffChanged ctermfg=12
hi diffOldFile ctermfg=11
hi diffNewFile ctermfg=13
hi diffFile ctermfg=12
hi diffLine ctermfg=7
hi diffIndexLine ctermfg=14
hi healthError ctermfg=1
hi healthSuccess ctermfg=2
hi healthWarning ctermfg=3
hi NormalFloat ctermbg=0 ctermfg=15
hi FloatBorder ctermbg=0 ctermfg=7
hi FloatShadow ctermbg=0 ctermfg=15
hi @variable ctermfg=15
hi @variable.builtin ctermfg=1
hi @variable.parameter ctermfg=1
hi @variable.member ctermfg=1
hi @constant.builtin ctermfg=5
hi @string.regexp ctermfg=1
hi @string.escape ctermfg=6
hi @string.special.url ctermfg=4 cterm=underline
hi @string.special.symbol ctermfg=13
hi @type.builtin ctermfg=3
hi @property ctermfg=1
hi @function.builtin ctermfg=5
hi @constructor ctermfg=11
hi @keyword.function ctermfg=5
hi @keyword.return ctermfg=5
hi @keyword.export ctermfg=12
hi @punctuation.bracket ctermfg=15
hi @comment.error ctermbg=9 ctermfg=0
hi @comment.warning ctermbg=11 ctermfg=0
hi @comment.todo ctermbg=12 ctermfg=0
hi @comment.note ctermbg=14 ctermfg=0
hi @markup ctermfg=15
hi @markup.strong ctermfg=15 cterm=bold
hi @markup.italic ctermfg=15 cterm=italic
hi @markup.strikethrough ctermfg=15 cterm=strikethrough
hi @markup.heading ctermfg=4 cterm=bold
hi @markup.quote ctermfg=6
hi @markup.math ctermfg=4
hi @markup.link.url ctermfg=5 cterm=underline
hi @markup.raw ctermfg=14
hi @markup.list.checked ctermfg=2
hi @markup.list.unchecked ctermfg=7
hi @tag ctermfg=5
hi @tag.builtin ctermfg=6
hi @tag.attribute ctermfg=4
hi @tag.delimiter ctermfg=15
endif
hi link EndOfBuffer NonText
hi link SpecialComment Special
hi link Define PreProc
hi link PreCondit PreProc
hi link Number Constant
hi link Float Number
hi link Typedef Type
hi link SpecialChar Special
hi link Debug Special
hi link StatusLineTerm StatusLine
hi link StatusLineTermNC StatusLineNC
hi link WinSeparator VertSplit
hi link WinBar StatusLine
hi link WinBarNC StatusLineNC
hi link lCursor Cursor
hi link CursorIM Cursor
hi link Terminal Normal
hi link @variable.parameter.builtin @variable.parameter
hi link @constant Constant
hi link @constant.macro Macro
hi link @module Structure
hi link @module.builtin Special
hi link @label Label
hi link @string String
hi link @string.special Special
hi link @character Character
hi link @character.special SpecialChar
hi link @boolean Boolean
hi link @number Number
hi link @number.float Float
hi link @type Type
hi link @type.definition Type
hi link @attribute Constant
hi link @attribute.builtin Constant
hi link @function Function
hi link @function.call Function
hi link @function.method Function
hi link @function.method.call Function
hi link @operator Operator
hi link @keyword Keyword
hi link @keyword.coroutine Keyword
hi link @keyword.operator Operator
hi link @keyword.import Include
hi link @keyword.type Keyword
hi link @keyword.modifier Keyword
hi link @keyword.repeat Repeat
hi link @keyword.debug Exception
hi link @keyword.exception Exception
hi link @keyword.conditional Conditional
hi link @keyword.conditional.ternary Operator
hi link @keyword.directive PreProc
hi link @keyword.directive.define Define
hi link @punctuation.delimiter Delimiter
hi link @punctuation.special Special
hi link @comment Comment
hi link @comment.documentation Comment
hi link @markup.underline underline
hi link @markup.link Tag
hi link @markup.link.label Label
hi link @markup.list Special
hi link @diff.plus diffAdded
hi link @diff.minus diffRemoved
hi link @diff.delta diffChanged
if (has('termguicolors') && &termguicolors) || has('gui_running')
let g:terminal_ansi_colors = [ '#dccaff', '#e26b95', '#8fa445', '#cf8544', '#4fa1d7', '#a782e5', '#47ac9b', '#6a01bb', '#b17eff', '#ed8cab', '#a4ba54', '#e59b5d', '#6db7e9', '#b99ded', '#56c4b1', '#0e0021' ]
endif

960
init.lua
View File

@@ -0,0 +1,960 @@
--[[
=====================================================================
=====================================================================
=====================================================================
======== .-----. ========
======== .----------------------. | === | ========
======== |.-""""""""""""""""""-.| |-----| ========
======== || || | === | ========
======== || KICKSTART.NVIM || |-----| ========
======== || || | === | ========
======== || || |-----| ========
======== ||:Tutor || |:::::| ========
======== |'-..................-'| |____o| ========
======== `"")----------------(""` ___________ ========
======== /::::::::::| |::::::::::\ \ no mouse \ ========
======== /:::========| |==hjkl==:::\ \ required \ ========
======== '""""""""""""' '""""""""""""' '""""""""""' ========
======== ========
=====================================================================
=====================================================================
-- Set <space> as the leader key
-- See `:help mapleader`
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
-- Set to true if you have a Nerd Font installed and selected in the terminal
vim.g.have_nerd_font = false
-- [[ Setting options ]]
-- See `:help vim.o`
-- NOTE: You can change these options as you wish!
-- For more options, you can see `:help option-list`
-- Make line numbers default
vim.o.number = true
-- You can also add relative line numbers, to help with jumping.
-- Experiment for yourself to see if you like it!
vim.o.relativenumber = true
-- Enable mouse mode, can be useful for resizing splits for example!
-- vim.o.mouse = 'a'
-- Don't show the mode, since it's already in the status line
vim.o.showmode = false
-- Sync clipboard between OS and Neovim.
-- Schedule the setting after `UiEnter` because it can increase startup-time.
-- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'`
vim.schedule(function()
vim.o.clipboard = 'unnamedplus'
end)
-- Enable break indent
vim.o.breakindent = true
-- Save undo history
vim.o.undofile = true
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term
vim.o.ignorecase = true
vim.o.smartcase = true
-- Keep signcolumn on by default
vim.o.signcolumn = 'yes'
-- Decrease update time
vim.o.updatetime = 250
-- Decrease mapped sequence wait time
vim.o.timeoutlen = 300
-- Configure how new splits should be opened
vim.o.splitright = true
vim.o.splitbelow = true
-- Sets how neovim will display certain whitespace characters in the editor.
-- See `:help 'list'`
-- and `:help 'listchars'`
--
-- Notice listchars is set using `vim.opt` instead of `vim.o`.
-- It is very similar to `vim.o` but offers an interface for conveniently interacting with tables.
-- See `:help lua-options`
-- and `:help lua-options-guide`
vim.o.list = true
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '' }
-- Preview substitutions live, as you type!
vim.o.inccommand = 'split'
-- Show which line your cursor is on
vim.o.cursorline = true
-- Minimal number of screen lines to keep above and below the cursor.
vim.o.scrolloff = 25
-- if performing an operation that would fail due to unsaved changes in the buffer (like `:q`),
-- instead raise a dialog asking if you wish to save the current file(s)
-- See `:help 'confirm'`
vim.o.confirm = true
-- [[ Basic Keymaps ]]
-- See `:help vim.keymap.set()`
-- Clear highlights on search when pressing <Esc> in normal mode
-- See `:help hlsearch`
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
-- Diagnostic keymaps
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
-- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which
-- is not what someone will guess without a bit more experience.
--
-- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping
-- or just use <C-\><C-n> to exit terminal mode
vim.keymap.set('t', '<Esc><Esc>', '<C-\\><C-n>', { desc = 'Exit terminal mode' })
-- TIP: Disable arrow keys in normal mode
-- vim.keymap.set('n', '<left>', '<cmd>echo "Use h to move!!"<CR>')
-- vim.keymap.set('n', '<right>', '<cmd>echo "Use l to move!!"<CR>')
-- vim.keymap.set('n', '<up>', '<cmd>echo "Use k to move!!"<CR>')
-- vim.keymap.set('n', '<down>', '<cmd>echo "Use j to move!!"<CR>')
-- Keybinds to make split navigation easier.
-- Use CTRL+<hjkl> to switch between windows
--
-- See `:help wincmd` for a list of all window commands
vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' })
vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right window' })
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
-- NOTE: Some terminals have colliding keymaps or are not able to send distinct keycodes
-- vim.keymap.set("n", "<C-S-h>", "<C-w>H", { desc = "Move window to the left" })
-- vim.keymap.set("n", "<C-S-l>", "<C-w>L", { desc = "Move window to the right" })
-- vim.keymap.set("n", "<C-S-j>", "<C-w>J", { desc = "Move window to the lower" })
-- vim.keymap.set("n", "<C-S-k>", "<C-w>K", { desc = "Move window to the upper" })
-- [[ Basic Autocommands ]]
-- See `:help lua-guide-autocommands`
-- Highlight when yanking (copying) text
-- Try it with `yap` in normal mode
-- See `:help vim.hl.on_yank()`
vim.api.nvim_create_autocmd('TextYankPost', {
desc = 'Highlight when yanking (copying) text',
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
callback = function()
vim.hl.on_yank()
end,
})
-- [[ Install `lazy.nvim` plugin manager ]]
-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
if vim.v.shell_error ~= 0 then
error('Error cloning lazy.nvim:\n' .. out)
end
end
---@type vim.Option
local rtp = vim.opt.rtp
rtp:prepend(lazypath)
-- [[ Configure and install plugins ]]
--
-- To check the current status of your plugins, run
-- :Lazy
--
-- You can press `?` in this menu for help. Use `:q` to close the window
--
-- To update plugins you can run
-- :Lazy update
--
-- NOTE: Here is where you install your plugins.
require('lazy').setup({
-- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link).
'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically
-- NOTE: Plugins can also be added by using a table,
-- with the first argument being the link and the following
-- keys can be used to configure plugin behavior/loading/etc.
--
-- Use `opts = {}` to automatically pass options to a plugin's `setup()` function, forcing the plugin to be loaded.
--
{
'mg979/vim-visual-multi',
},
{
'soywod/iris.vim',
},
{
'michaeljsmith/vim-indent-object',
},
-- Alternatively, use `config = function() ... end` for full control over the configuration.
-- If you prefer to call `setup` explicitly, use:
-- {
-- 'lewis6991/gitsigns.nvim',
-- config = function()
-- require('gitsigns').setup({
-- -- Your gitsigns configuration here
-- })
-- end,
-- }
--
-- Here is a more advanced example where we pass configuration
-- options to `gitsigns.nvim`.
--
-- See `:help gitsigns` to understand what the configuration keys do
{ -- Adds git related signs to the gutter, as well as utilities for managing changes
'lewis6991/gitsigns.nvim',
opts = {
signs = {
add = { text = '+' },
change = { text = '~' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
},
},
},
-- NOTE: Plugins can also be configured to run Lua code when they are loaded.
--
-- This is often very useful to both group configuration, as well as handle
-- lazy loading plugins that don't need to be loaded immediately at startup.
--
-- For example, in the following configuration, we use:
-- event = 'VimEnter'
--
-- which loads which-key before all the UI elements are loaded. Events can be
-- normal autocommands events (`:help autocmd-events`).
--
-- Then, because we use the `opts` key (recommended), the configuration runs
-- after the plugin has been loaded as `require(MODULE).setup(opts)`.
{ -- Useful plugin to show you pending keybinds.
'folke/which-key.nvim',
event = 'VimEnter', -- Sets the loading event to 'VimEnter'
opts = {
-- delay between pressing a key and opening which-key (milliseconds)
-- this setting is independent of vim.o.timeoutlen
delay = 0,
icons = {
-- set icon mappings to true if you have a Nerd Font
mappings = vim.g.have_nerd_font,
-- If you are using a Nerd Font: set icons.keys to an empty table which will use the
-- default which-key.nvim defined Nerd Font icons, otherwise define a string table
keys = vim.g.have_nerd_font and {} or {
Up = '<Up> ',
Down = '<Down> ',
Left = '<Left> ',
Right = '<Right> ',
C = '<C-…> ',
M = '<M-…> ',
D = '<D-…> ',
S = '<S-…> ',
CR = '<CR> ',
Esc = '<Esc> ',
ScrollWheelDown = '<ScrollWheelDown> ',
ScrollWheelUp = '<ScrollWheelUp> ',
NL = '<NL> ',
BS = '<BS> ',
Space = '<Space> ',
Tab = '<Tab> ',
F1 = '<F1>',
F2 = '<F2>',
F3 = '<F3>',
F4 = '<F4>',
F5 = '<F5>',
F6 = '<F6>',
F7 = '<F7>',
F8 = '<F8>',
F9 = '<F9>',
F10 = '<F10>',
F11 = '<F11>',
F12 = '<F12>',
},
},
-- Document existing key chains
spec = {
{ '<leader>s', group = '[S]earch' },
{ '<leader>t', group = '[T]oggle' },
{ '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } },
},
},
},
-- NOTE: Plugins can specify dependencies.
--
-- The dependencies are proper plugin specifications as well - anything
-- you do for a plugin at the top level, you can do for a dependency.
--
-- Use the `dependencies` key to specify the dependencies of a particular plugin
{ -- Fuzzy Finder (files, lsp, etc)
'nvim-telescope/telescope.nvim',
event = 'VimEnter',
dependencies = {
'nvim-lua/plenary.nvim',
{ -- If encountering errors, see telescope-fzf-native README for installation instructions
'nvim-telescope/telescope-fzf-native.nvim',
-- `build` is used to run some command when the plugin is installed/updated.
-- This is only run then, not every time Neovim starts up.
build = 'make',
-- `cond` is a condition used to determine whether this plugin should be
-- installed and loaded.
cond = function()
return vim.fn.executable 'make' == 1
end,
},
{ 'nvim-telescope/telescope-ui-select.nvim' },
-- Useful for getting pretty icons, but requires a Nerd Font.
{ 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font },
},
config = function()
-- Telescope is a fuzzy finder that comes with a lot of different things that
-- it can fuzzy find! It's more than just a "file finder", it can search
-- many different aspects of Neovim, your workspace, LSP, and more!
--
-- The easiest way to use Telescope, is to start by doing something like:
-- :Telescope help_tags
--
-- After running this command, a window will open up and you're able to
-- type in the prompt window. You'll see a list of `help_tags` options and
-- a corresponding preview of the help.
--
-- Two important keymaps to use while in Telescope are:
-- - Insert mode: <c-/>
-- - Normal mode: ?
--
-- This opens a window that shows you all of the keymaps for the current
-- Telescope picker. This is really useful to discover what Telescope can
-- do as well as how to actually do it!
-- [[ Configure Telescope ]]
-- See `:help telescope` and `:help telescope.setup()`
require('telescope').setup {
-- You can put your default mappings / updates / etc. in here
-- All the info you're looking for is in `:help telescope.setup()`
--
-- defaults = {
-- mappings = {
-- i = { ['<c-enter>'] = 'to_fuzzy_refine' },
-- },
-- },
-- pickers = {}
extensions = {
['ui-select'] = {
require('telescope.themes').get_dropdown(),
},
},
}
-- Enable Telescope extensions if they are installed
pcall(require('telescope').load_extension, 'fzf')
pcall(require('telescope').load_extension, 'ui-select')
-- See `:help telescope.builtin`
local builtin = require 'telescope.builtin'
vim.keymap.set('n', '<leader>sh', builtin.help_tags, { desc = '[S]earch [H]elp' })
vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' })
vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' })
vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' })
vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' })
vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
vim.keymap.set('n', '<leader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' })
-- Slightly advanced example of overriding default behavior and theme
vim.keymap.set('n', '<leader>/', function()
-- You can pass additional configuration to Telescope to change the theme, layout, etc.
builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
winblend = 10,
previewer = false,
})
end, { desc = '[/] Fuzzily search in current buffer' })
-- It's also possible to pass additional configuration options.
-- See `:help telescope.builtin.live_grep()` for information about particular keys
vim.keymap.set('n', '<leader>s/', function()
builtin.live_grep {
grep_open_files = true,
prompt_title = 'Live Grep in Open Files',
}
end, { desc = '[S]earch [/] in Open Files' })
-- Shortcut for searching your Neovim configuration files
vim.keymap.set('n', '<leader>sn', function()
builtin.find_files { cwd = vim.fn.stdpath 'config' }
end, { desc = '[S]earch [N]eovim files' })
end,
},
-- LSP Plugins
{
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
-- used for completion, annotations and signatures of Neovim apis
'folke/lazydev.nvim',
ft = 'lua',
opts = {
library = {
-- Load luvit types when the `vim.uv` word is found
{ path = '${3rd}/luv/library', words = { 'vim%.uv' } },
},
},
},
{
-- Main LSP Configuration
'neovim/nvim-lspconfig',
dependencies = {
-- Automatically install LSPs and related tools to stdpath for Neovim
-- Mason must be loaded before its dependents so we need to set it up here.
-- NOTE: `opts = {}` is the same as calling `require('mason').setup({})`
{ 'mason-org/mason.nvim', opts = {} },
'mason-org/mason-lspconfig.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim',
-- Useful status updates for LSP.
{ 'j-hui/fidget.nvim', opts = {} },
-- Allows extra capabilities provided by blink.cmp
'saghen/blink.cmp',
},
config = function()
-- Brief aside: **What is LSP?**
--
-- LSP is an initialism you've probably heard, but might not understand what it is.
--
-- LSP stands for Language Server Protocol. It's a protocol that helps editors
-- and language tooling communicate in a standardized fashion.
--
-- In general, you have a "server" which is some tool built to understand a particular
-- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers
-- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone
-- processes that communicate with some "client" - in this case, Neovim!
--
-- LSP provides Neovim with features like:
-- - Go to definition
-- - Find references
-- - Autocompletion
-- - Symbol Search
-- - and more!
--
-- Thus, Language Servers are external tools that must be installed separately from
-- Neovim. This is where `mason` and related plugins come into play.
--
-- If you're wondering about lsp vs treesitter, you can check out the wonderfully
-- and elegantly composed help section, `:help lsp-vs-treesitter`
-- This function gets run when an LSP attaches to a particular buffer.
-- That is to say, every time a new file is opened that is associated with
-- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this
-- function will be executed to configure the current buffer
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }),
callback = function(event)
-- NOTE: Remember that Lua is a real programming language, and as such it is possible
-- to define small helper and utility functions so you don't have to repeat yourself.
--
-- In this case, we create a function that lets us more easily define mappings specific
-- for LSP related items. It sets the mode, buffer and description for us each time.
local map = function(keys, func, desc, mode)
mode = mode or 'n'
vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
end
-- Rename the variable under your cursor.
-- Most Language Servers support renaming across files, etc.
map('grn', vim.lsp.buf.rename, '[R]e[n]ame')
-- Execute a code action, usually your cursor needs to be on top of an error
-- or a suggestion from your LSP for this to activate.
map('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' })
-- Find references for the word under your cursor.
map('grr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
-- Jump to the implementation of the word under your cursor.
-- Useful when your language has ways of declaring types without an actual implementation.
map('gri', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
-- Jump to the definition of the word under your cursor.
-- This is where a variable was first declared, or where a function is defined, etc.
-- To jump back, press <C-t>.
map('grd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
-- WARN: This is not Goto Definition, this is Goto Declaration.
-- For example, in C this would take you to the header.
map('grD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
-- Fuzzy find all the symbols in your current document.
-- Symbols are things like variables, functions, types, etc.
map('gO', require('telescope.builtin').lsp_document_symbols, 'Open Document Symbols')
-- Fuzzy find all the symbols in your current workspace.
-- Similar to document symbols, except searches over your entire project.
map('gW', require('telescope.builtin').lsp_dynamic_workspace_symbols, 'Open Workspace Symbols')
-- Jump to the type of the word under your cursor.
-- Useful when you're not sure what type a variable is and you want to see
-- the definition of its *type*, not where it was *defined*.
map('grt', require('telescope.builtin').lsp_type_definitions, '[G]oto [T]ype Definition')
-- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10)
---@param client vim.lsp.Client
---@param method vim.lsp.protocol.Method
---@param bufnr? integer some lsp support methods only in specific files
---@return boolean
local function client_supports_method(client, method, bufnr)
if vim.fn.has 'nvim-0.11' == 1 then
return client:supports_method(method, bufnr)
else
return client.supports_method(method, { bufnr = bufnr })
end
end
-- The following two autocommands are used to highlight references of the
-- word under your cursor when your cursor rests there for a little while.
-- See `:help CursorHold` for information about when this is executed
--
-- When you move your cursor, the highlights will be cleared (the second autocommand).
local client = vim.lsp.get_client_by_id(event.data.client_id)
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then
local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false })
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
buffer = event.buf,
group = highlight_augroup,
callback = vim.lsp.buf.document_highlight,
})
vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, {
buffer = event.buf,
group = highlight_augroup,
callback = vim.lsp.buf.clear_references,
})
vim.api.nvim_create_autocmd('LspDetach', {
group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }),
callback = function(event2)
vim.lsp.buf.clear_references()
vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf }
end,
})
end
-- The following code creates a keymap to toggle inlay hints in your
-- code, if the language server you are using supports them
--
-- This may be unwanted, since they displace some of your code
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then
map('<leader>th', function()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf })
end, '[T]oggle Inlay [H]ints')
end
end,
})
-- Diagnostic Config
-- See :help vim.diagnostic.Opts
vim.diagnostic.config {
severity_sort = true,
float = { border = 'rounded', source = 'if_many' },
underline = { severity = vim.diagnostic.severity.ERROR },
signs = vim.g.have_nerd_font and {
text = {
[vim.diagnostic.severity.ERROR] = '󰅚 ',
[vim.diagnostic.severity.WARN] = '󰀪 ',
[vim.diagnostic.severity.INFO] = '󰋽 ',
[vim.diagnostic.severity.HINT] = '󰌶 ',
},
} or {},
virtual_text = {
source = 'if_many',
spacing = 2,
format = function(diagnostic)
local diagnostic_message = {
[vim.diagnostic.severity.ERROR] = diagnostic.message,
[vim.diagnostic.severity.WARN] = diagnostic.message,
[vim.diagnostic.severity.INFO] = diagnostic.message,
[vim.diagnostic.severity.HINT] = diagnostic.message,
}
return diagnostic_message[diagnostic.severity]
end,
},
}
-- LSP servers and clients are able to communicate to each other what features they support.
-- By default, Neovim doesn't support everything that is in the LSP specification.
-- When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities.
-- So, we create new capabilities with blink.cmp, and then broadcast that to the servers.
local capabilities = require('blink.cmp').get_lsp_capabilities()
-- Enable the following language servers
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
--
-- Add any additional override configuration in the following tables. Available keys are:
-- - cmd (table): Override the default command used to start the server
-- - filetypes (table): Override the default list of associated filetypes for the server
-- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features.
-- - settings (table): Override the default settings passed when initializing the server.
-- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
local servers = {
clangd = {},
intelephense = {},
-- gopls = {},
pyright = {},
-- rust_analyzer = {},
-- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
--
-- Some languages (like typescript) have entire language plugins that can be useful:
-- https://github.com/pmizio/typescript-tools.nvim
--
-- But for many setups, the LSP (`ts_ls`) will work just fine
-- ts_ls = {},
--
lua_ls = {
-- cmd = { ... },
-- filetypes = { ... },
-- capabilities = {},
settings = {
Lua = {
completion = {
callSnippet = 'Replace',
},
-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
-- diagnostics = { disable = { 'missing-fields' } },
},
},
},
}
-- Ensure the servers and tools above are installed
--
-- To check the current status of installed tools and/or manually install
-- other tools, you can run
-- :Mason
--
-- You can press `g?` for help in this menu.
--
-- `mason` had to be setup earlier: to configure its options see the
-- `dependencies` table for `nvim-lspconfig` above.
--
-- You can add other tools here that you want Mason to install
-- for you, so that they are available from within Neovim.
local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, {
'stylua', -- Used to format Lua code
})
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
require('mason-lspconfig').setup {
ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)
automatic_installation = false,
handlers = {
function(server_name)
local server = servers[server_name] or {}
-- This handles overriding only values explicitly passed
-- by the server configuration above. Useful when disabling
-- certain features of an LSP (for example, turning off formatting for ts_ls)
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
require('lspconfig')[server_name].setup(server)
end,
},
}
end,
},
{ -- Autoformat
'stevearc/conform.nvim',
event = { 'BufWritePre' },
cmd = { 'ConformInfo' },
keys = {
{
'<leader>f',
function()
require('conform').format { async = true, lsp_format = 'fallback' }
end,
mode = '',
desc = '[F]ormat buffer',
},
},
opts = {
notify_on_error = false,
format_on_save = function(bufnr)
-- Disable "format_on_save lsp_fallback" for languages that don't
-- have a well standardized coding style. You can add additional
-- languages here or re-enable it for the disabled ones.
local disable_filetypes = { c = true, cpp = true }
if disable_filetypes[vim.bo[bufnr].filetype] then
return nil
else
return {
timeout_ms = 500,
lsp_format = 'fallback',
}
end
end,
formatters_by_ft = {
lua = { 'stylua' },
-- Conform can also run multiple formatters sequentially
-- python = { "isort", "black" },
--
-- You can use 'stop_after_first' to run the first available formatter from the list
-- javascript = { "prettierd", "prettier", stop_after_first = true },
},
},
},
{ -- Autocompletion
'saghen/blink.cmp',
event = 'VimEnter',
version = '1.*',
dependencies = {
-- Snippet Engine
{
'L3MON4D3/LuaSnip',
version = '2.*',
build = (function()
-- Build Step is needed for regex support in snippets.
-- This step is not supported in many windows environments.
-- Remove the below condition to re-enable on windows.
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
return
end
return 'make install_jsregexp'
end)(),
dependencies = {
-- `friendly-snippets` contains a variety of premade snippets.
-- See the README about individual language/framework/plugin snippets:
-- https://github.com/rafamadriz/friendly-snippets
-- {
-- 'rafamadriz/friendly-snippets',
-- config = function()
-- require('luasnip.loaders.from_vscode').lazy_load()
-- end,
-- },
},
opts = {},
},
'folke/lazydev.nvim',
},
--- @module 'blink.cmp'
--- @type blink.cmp.Config
opts = {
keymap = {
-- 'default' (recommended) for mappings similar to built-in completions
-- <c-y> to accept ([y]es) the completion.
-- This will auto-import if your LSP supports it.
-- This will expand snippets if the LSP sent a snippet.
-- 'super-tab' for tab to accept
-- 'enter' for enter to accept
-- 'none' for no mappings
--
-- For an understanding of why the 'default' preset is recommended,
-- you will need to read `:help ins-completion`
--
-- No, but seriously. Please read `:help ins-completion`, it is really good!
--
-- All presets have the following mappings:
-- <tab>/<s-tab>: move to right/left of your snippet expansion
-- <c-space>: Open menu or open docs if already open
-- <c-n>/<c-p> or <up>/<down>: Select next/previous item
-- <c-e>: Hide menu
-- <c-k>: Toggle signature help
--
-- See :h blink-cmp-config-keymap for defining your own keymap
preset = 'default',
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
},
appearance = {
-- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
-- Adjusts spacing to ensure icons are aligned
nerd_font_variant = 'mono',
},
completion = {
-- By default, you may press `<c-space>` to show the documentation.
-- Optionally, set `auto_show = true` to show the documentation after a delay.
documentation = { auto_show = false, auto_show_delay_ms = 500 },
},
sources = {
default = { 'lsp', 'path', 'snippets', 'lazydev' },
providers = {
lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 },
},
},
snippets = { preset = 'luasnip' },
-- Blink.cmp includes an optional, recommended rust fuzzy matcher,
-- which automatically downloads a prebuilt binary when enabled.
--
-- By default, we use the Lua implementation instead, but you may enable
-- the rust implementation via `'prefer_rust_with_warning'`
--
-- See :h blink-cmp-config-fuzzy for more information
fuzzy = { implementation = 'lua' },
-- Shows a signature help window while you type arguments for a function
signature = { enabled = true },
},
},
{ -- You can easily change to a different colorscheme.
-- Change the name of the colorscheme plugin below, and then
-- change the command in the config to whatever the name of that colorscheme is.
--
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
'folke/tokyonight.nvim',
priority = 1000, -- Make sure to load this before all the other start plugins.
config = function()
---@diagnostic disable-next-line: missing-fields
require('tokyonight').setup {
styles = {
comments = { italic = false }, -- Disable italics in comments
},
}
-- Load the colorscheme here.
-- Like many other themes, this one has different styles, and you could load
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
vim.cmd.colorscheme 'tokyonight-moon'
end,
},
-- Highlight todo, notes, etc in comments
{ 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } },
{ -- Collection of various small independent plugins/modules
'echasnovski/mini.nvim',
config = function()
-- Better Around/Inside textobjects
--
-- Examples:
-- - va) - [V]isually select [A]round [)]paren
-- - yinq - [Y]ank [I]nside [N]ext [Q]uote
-- - ci' - [C]hange [I]nside [']quote
require('mini.ai').setup { n_lines = 500 }
-- Add/delete/replace surroundings (brackets, quotes, etc.)
--
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
-- - sd' - [S]urround [D]elete [']quotes
-- - sr)' - [S]urround [R]eplace [)] [']
require('mini.surround').setup()
-- Simple and easy statusline.
-- You could remove this setup call if you don't like it,
-- and try some other statusline plugin
local statusline = require 'mini.statusline'
-- set use_icons to true if you have a Nerd Font
statusline.setup { use_icons = vim.g.have_nerd_font }
-- You can configure sections in the statusline by overriding their
-- default behavior. For example, here we set the section for
-- cursor location to LINE:COLUMN
---@diagnostic disable-next-line: duplicate-set-field
statusline.section_location = function()
return '%2l:%-2v'
end
-- ... and there is more!
-- Check out: https://github.com/echasnovski/mini.nvim
end,
},
{ -- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
main = 'nvim-treesitter.configs', -- Sets main module to use for opts
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
opts = {
ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
-- Autoinstall languages that are not installed
auto_install = true,
highlight = {
enable = true,
-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules.
-- If you are experiencing weird indenting issues, add the language to
-- the list of additional_vim_regex_highlighting and disabled languages for indent.
additional_vim_regex_highlighting = { 'ruby' },
},
indent = { enable = true, disable = { 'ruby' } },
},
-- There are additional nvim-treesitter modules that you can use to interact
-- with nvim-treesitter. You should go explore a few and see what interests you:
--
-- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
-- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
-- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
},
-- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the
-- init.lua. If you want these files, they are in the repository, so you can just download them and
-- place them in the correct locations.
-- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for Kickstart
--
-- Here are some example plugins that I've included in the Kickstart repository.
-- Uncomment any of the lines below to enable them (you will need to restart nvim).
--
-- require 'kickstart.plugins.debug',
-- require 'kickstart.plugins.indent_line',
-- require 'kickstart.plugins.lint',
-- require 'kickstart.plugins.autopairs',
-- require 'kickstart.plugins.neo-tree',
-- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
-- This is the easiest way to modularize your config.
--
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
-- { import = 'custom.plugins' },
--
-- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec`
-- Or use telescope!
-- In normal mode type `<space>sh` then write `lazy.nvim-plugin`
-- you can continue same window with `<space>sr` which resumes last telescope search
}, {
ui = {
-- If you are using a Nerd Font: set icons to an empty table which will use the
-- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table
icons = vim.g.have_nerd_font and {} or {
cmd = '',
config = '🛠',
event = '📅',
ft = '📂',
init = '',
keys = '🗝',
plugin = '🔌',
runtime = '💻',
require = '🌙',
source = '📄',
start = '🚀',
task = '📌',
lazy = '💤 ',
},
},
})
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et