diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:40:16 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:40:16 +0000 |
| commit | b94eefa6b58f274bb61db4e792105c3959cf2022 (patch) | |
| tree | 3d2896fb46ebc769e4fea8cf4f02ce3104e1f974 | |
57 files changed, 4835 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..b1a6159 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ + diff --git a/bore.vim/.DS_Store b/bore.vim/.DS_Store Binary files differnew file mode 100644 index 0000000..083af40 --- /dev/null +++ b/bore.vim/.DS_Store diff --git a/bore.vim/.editorconfig b/bore.vim/.editorconfig new file mode 100644 index 0000000..8e948bf --- /dev/null +++ b/bore.vim/.editorconfig @@ -0,0 +1,5 @@ +root = true + +[*.vim] +indent_size = 2 +indent_style = space
\ No newline at end of file diff --git a/bore.vim/.gitignore b/bore.vim/.gitignore new file mode 100644 index 0000000..2c2aaa6 --- /dev/null +++ b/bore.vim/.gitignore @@ -0,0 +1 @@ +*.un
\ No newline at end of file diff --git a/bore.vim/LICENSE.txt b/bore.vim/LICENSE.txt new file mode 100644 index 0000000..6db1557 --- /dev/null +++ b/bore.vim/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2022 Ethan Morgan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bore.vim/README.md b/bore.vim/README.md new file mode 100644 index 0000000..e861d73 --- /dev/null +++ b/bore.vim/README.md @@ -0,0 +1,74 @@ +# Bore + +<p align="center"> + <img src="./images/screenshot.png" alt="Screenshot"> +</p> + +<p align="center"> + <em>Bore is a modern and minimal NeoVim dark theme with bright colors. The theme is based on the great theme <a href="https://github.com/AhmedAbdulrahman/aylin.vim">Aylin Theme</a>. See Credits for a detailed lineage.</em> +</p> + +Note: This relies heavily on Treesitter and will not look exactly as presented without it. Sorry + +## Installation + +You can install `bore.vim` with whatever package manager you use. For example: + +- [Pathogen][vimpathogen] +- [Vundle][vundle] +- [NeoBundle][neobundle] +- [VIM Plug][vimplug] + +For example: + +- Pathogen + - `git clone https://github.com/gweithio/vim-bore.git ~/.vim/bundle/vim-bore` +- Vundle + - Add `Plugin 'gweithio/vim-bore'` to your .vimrc and run `:PluginInstall` +- NeoBundle + - Add `NeoBundle 'gweithio/vim-bore'` to your .vimrc and run `:NeoBundleInstall` +- vim-plug + - Add `Plug 'gweithio/vim-bore'` to your .vimrc and run `:PlugInstall` +- Vim-8 + - `git clone https://github.com/gweithio/vim-bore.git ~/.vim/pack/default/start/vim-bore` + +> > If you don't use a plugin manager just copy the content of vim/colors/ to ~/.vim/colors. + +## Usage + +In your Vim `(~/.vimrc)` or Neovim `(.config/nvim/init.vim)` configuration, place the following two lines: + +```vim +set background=dark +colorscheme bore +``` + +### True Colors + +To provide the best user experience possible, I recommend enabling true colors. To experience the blissfulness of your editor's true colors, place this in your `.vimrc` or `~/.config/nvim/init.vim` file: + +```vim +if (has("nvim")) + "For Neovim 0.1.3 and 0.1.4 < https://github.com/neovim/neovim/pull/2198 > + let $NVIM_TUI_ENABLE_TRUE_COLOR=1 +endif + +"For Neovim > 0.1.5 and Vim > patch 7.4.1799 < https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162 > +"Based on Vim patch 7.4.1770 (`guicolors` option) < https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd > +" < https://github.com/neovim/neovim/wiki/Following-HEAD#20160511 > +if (has("termguicolors")) + set termguicolors +endif +``` + +## Contributing + +All forms of contribution are welcome: bug reports, bug fixes, pull requests and simple suggestions. Thanks! + +## Credits + +Credit goes to the [Aylin]. I ended up changing colors and their mappings. + +## License + +MIT License © 2022 Ethan Morgan. See [LICENSE.txt](./LICENSE.txt) for more information. diff --git a/bore.vim/colors/bore.vim b/bore.vim/colors/bore.vim new file mode 100644 index 0000000..9f33397 --- /dev/null +++ b/bore.vim/colors/bore.vim @@ -0,0 +1,858 @@ +" Vim Color File" +" Name: bore.vim" +" Author: Ethan Morgan (@sixfourtwelve)" +" Maintainer: https://github.com/sixfourtwelve/bore.vim" +" License: The MIT License (MIT)" + +" === Colors ===" +" --------------------------" +:let _white = '#ffffff' +:let _l_white = '#cacadd' +:let _d_white = '#c8c8db' +:let _gray_light = '#74778c' +:let _gray = '#606375' +:let _gray_dark = '#535560' +:let _semigray = '#42444b' +:let _lightblack = '#313e52' +:let _semiblack = '#262f3e' +:let _black = '#0e0e0e' + +:let _aubergine = '#FD98B9' +:let _marzipan = '#ecc48d' +:let _d_turquoise = '#7fdbca' +:let _l_sky = '#9fd4ff' +:let _sky = '#6cbeff' +:let _sap = '#ebff00' +:let _purple = '#c792ea' +:let _pink = '#f45c7f' +:let _green = '#addb67' + +" Clear any other set colors" +highlight clear + +if exists("syntax_on") + syntax reset +endif + +set t_Co=256 + +let g:colors_name="bore" + +" Not all terminals support italics properly. If yours does, opt-in." +if !exists("g:bore_terminal_italics") + let g:bore_terminal_italics = 0 +endif + +" === Functions ===" +" Returns a darkened color using given color and the percent to darken it by." +" Example: color_helper#hex_color_darken('#FFFFFF', 0.10)" +" Returns: '#E5E5E5'" + +function! s:hex_color_darken(color, percent) + let l:rgb = s:hex_color_to_rgb(a:color) + let l:rgb_darkened = [] + + for i in l:rgb + call add(l:rgb_darkened, float2nr(i * (1 - a:percent))) + endfor + + return s:rgb_color_to_hex(l:rgb_darkened) +endfunction + + +function! s:hex_color_to_rgb(hex_color) + let l:rgb = [] + + let l:red = s:hex_to_dec(strpart(a:hex_color, 1, 2)) + let l:green = s:hex_to_dec(strpart(a:hex_color, 3, 2)) + let l:blue = s:hex_to_dec(strpart(a:hex_color, 5, 2)) + let l:rgb = [l:red, l:green, l:blue] + + return l:rgb +endfunction + +function! s:hex_to_dec(arg) + return (a:arg =~? '^0x') ? a:arg + 0 : ('0x'.a:arg) + 0 +endfunction + +function! s:dec_to_hex(arg, padding) + return toupper(printf('%0' . a:padding . 'x', a:arg + 0)) +endfunction + +function! s:rgb_color_to_hex(rgb_color) + let l:hex_color = '#' + let l:hex_color .= s:dec_to_hex(a:rgb_color[0], 2) " red" + let l:hex_color .= s:dec_to_hex(a:rgb_color[1], 2) " green" + let l:hex_color .= s:dec_to_hex(a:rgb_color[2], 2) " blue" + + return l:hex_color +endfunction + +let colorgroup = {} +let colorgroup['Normal'] = {"GUIFG": _l_white, "GUIBG": _black} +let colorgroup['NormalNC'] = {"GUIFG": _l_white, "GUIBG": _black} +let colorgroup['NormalSB'] = {"GUIFG": _d_white, "GUIBG": _semiblack} +let colorgroup['NormalFloat'] = {"GUIFG": _l_white, "GUIBG": _black} +let colorgroup['FloatBorder'] = {"GUIFG": _lightblack} +let colorgroup['Darker'] = {"GUIFG": _gray, "GUIBG": _black} +let colorgroup['ColorColumn'] = {"GUIFG": _black, "GUIBG": _aubergine} +let colorgroup['Conceal'] = {"GUIFG": _sap, "GUI": "bold"} +let colorgroup['Cursor'] = {"GUIFG": _black, "GUIBG": _aubergine} +let colorgroup['iCursor'] = {"GUIFG": _black, "GUIBG": _marzipan} +let colorgroup['CursorLine'] = {"GUIFG": "NONE", "GUIBG": _semiblack} +let colorgroup['CursorLineNr'] = {"GUIFG": _gray_dark, "GUIBG": _black} +let colorgroup['Directory'] = {"GUIFG": _marzipan, "GUIBG": _black} +let colorgroup['ErrorMsg'] = {"GUIFG": _black, "GUIBG": _aubergine} +let colorgroup['FoldColumn'] = { "GUIBG": _black} +let colorgroup['Folded'] = {"GUIFG": _l_white, "GUIBG": _semiblack} +let colorgroup['LineNr'] = {"GUIFG": _lightblack, "GUIBG": _black} +if &background == "light" + let colorgroup['LineNr'] = {"GUIFG": _gray, "GUIBG": _black} +endif +let colorgroup['MatchParen'] = {"GUIFG": _black, "GUIBG": _l_white} +let colorgroup['ModeMsg'] = {"GUIFG": _black, "GUIBG": _marzipan} +let colorgroup['Whitespace'] = {"GUIFG": _semiblack, "CTERMFG":235} + +"Popup menu: normal item" +let colorgroup['Pmenu'] = {"GUIFG": _l_white, "GUIBG": _semiblack} +"Popup menu: selected item" +let colorgroup['PmenuSel'] = {"GUIBG": _gray_dark} +"Popup menu: scrollbar" +let colorgroup['PmenuSbar'] = {"GUIBG": _black} +"Thumb of the scrollbar." +let colorgroup['PmenuThumb'] = {"GUIBG": _black} + +let colorgroup['Search'] = {"GUIBG": _gray_dark, "GUI": "underline"} +let colorgroup['SignColumn'] = {"GUIBG": _black} +let colorgroup['StatusLine'] = {"GUIFG": _gray, "GUIBG": _semiblack} +let colorgroup['StatusLineNC'] = {"GUIFG": _gray_dark, "GUIBG": _semiblack} +let colorgroup['Tabline'] = {"GUIFG": _gray, "GUIBG": _semiblack} +let colorgroup['TablineFill'] = {"GUIBG": _black} +let colorgroup['TabLineSel'] = {"GUIFG": _l_sky, "GUIBG": _black, "CTERM": "reverse", "GUI": "reverse"} +let colorgroup['Title'] = {"GUIFG": _marzipan, "GUI": "bold"} +let colorgroup['Todo'] = {"GUIFG": _black, "GUIBG": _sky, "GUI": "italic"} +let colorgroup['VertSplit'] = {"GUIFG": _lightblack} +let colorgroup['Visual'] = {"GUIBG": _gray_dark} +let colorgroup['WarningMsg'] = {"GUIFG": _pink, "GUIBG": _black} + +" === Other highlighting groups ===" +let colorgroup['Access'] = {"GUIFG": _marzipan, "GUI": "bold"} +let colorgroup['Character'] = {"GUIFG": _sky} +let colorgroup['Define'] = {"GUIFG": _gray_light} +let colorgroup['Function'] = {"GUIFG": _d_turquoise} +let colorgroup['Label'] = {"GUIFG": _d_turquoise} +let colorgroup['Module'] = {"GUIFG": _aubergine, "GUI": "underline"} +let colorgroup['NonText'] = {"GUIFG": _gray_dark} +let colorgroup['String'] = {"GUIFG": _marzipan} +let colorgroup['Structure'] = {"GUIFG": _white} +let colorgroup['Object'] = {"GUIFG": _gray} +let colorgroup['Xml'] = {"GUIFG": _purple} +let colorgroup['Punctuation'] = {"GUIFG": _purple} +let colorgroup['Attr'] = {"GUIFG": _d_turquoise} + +" === Syntax ===" +let colorgroup['Comment'] = {"GUIFG": _gray_light, "CTERMFG":244, "CTERMBG":"NONE", "GUIBG": "NONE", "GUISP":"NONE", "CTERM":"NONE", "GUI":"NONE"} +let colorgroup['Constant'] = {"GUIFG": _l_sky, "GUI": "bold"} +let colorgroup['Identifier'] = {"GUIFG": _aubergine} +let colorgroup['Operator'] = {"GUIFG": _gray_light} +let colorgroup['Statement'] = {"GUIFG": _l_sky} +let colorgroup['PreProc'] = {"GUIFG": _white} +let colorgroup['Type'] = {"GUIFG": _white} +let colorgroup['Special'] = {"GUIFG": _l_sky} +let colorgroup['Underlined'] = {"GUIFG": _marzipan, "GUI": "underline"} +let colorgroup['Error'] = {"GUIFG": _black, "GUIBG": _aubergine} +let colorgroup['MarkdownH1'] = {"GUIFG": _sky, "GUI": "bold"} +let colorgroup['MarkdownH2'] = {"GUIFG": _l_sky, "GUI": "bold"} +let colorgroup['MarkdownLinkText'] = {"GUIFG": _l_sky, "GUI": "underline"} + +" === Own highlighting groups ===" +let colorgroup['UnderlinedBold'] = {"GUIFG": _marzipan, "GUI": "underline,bold"} + +" === GitGutter highlighting groups ===" +let colorgroup['GitGutterAdd'] = {"GUIFG": _green, "GUIBG": _black} +let colorgroup['GitGutterChange'] = {"GUIFG": _sap, "GUIBG": _black} +let colorgroup['GitGutterDelete'] = {"GUIFG": _pink, "GUIBG": _black} +let colorgroup['GitGutterChangeDelete'] = {"GUIFG": _sap, "GUIBG": _black} + +" === Git highlighting groups ===" +let colorgroup['DiffAdd'] = {"GUIFG": _green, "GUIBG": _black, "GUI":"NONE"} +let colorgroup['DiffChange'] = {"GUIFG": _white, "GUIBG": _black, "GUI":"NONE"} +let colorgroup['DiffDelete'] = {"GUIFG": _pink, "GUIBG": _black, "GUI":"NONE"} +let colorgroup['DiffText'] = {"GUIFG": _pink, "GUIBG": _black, "GUI":"NONE"} + +" === NvimTree highlighting groups ===" +let colorgroup['NvimTreeNormal'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeNormalNC'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeRootFolder'] = {"GUIFG": _gray_light, "GUIBG": _black, "GUI":"bold"} +let colorgroup['NvimTreeFolderName'] = {"GUIFG": _gray_light, "GUIBG": _black } +let colorgroup['NvimTreeOpenedFolderName'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeGitDirty'] = {"GUIFG": _marzipan, "GUIBG": _black } +let colorgroup['NvimTreeGitNew'] = {"GUIFG": _green, "GUIBG": _black } +let colorgroup['NvimTreeGitDeleted'] = {"GUIFG": _pink, "GUIBG": _black } +let colorgroup['NvimTreeSpecialFile'] = {"GUIFG": _d_turquoise, "GUIBG": _black, "GUI":"underline"} +let colorgroup['NvimTreeIndentMarker'] = {"GUIFG": _lightblack, "GUIBG": _black} +let colorgroup['NvimTreeImageFile'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeSymlink'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeGitStaged'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeGitMerge'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeGitRenamed'] = {"GUIFG": _d_white, "GUIBG": _black } + +" === COMPLETION highlighting groups ===" +let colorgroup['CmpDocumentation'] = {"GUIFG": _d_white, "GUIBG": _black, "GUI":"NONE" } +let colorgroup['CmpDocumentationBorder'] = {"GUIFG": _d_white, "GUIBG": _d_white, "GUI":"NONE" } +"uncompleted item that may be good for completion" +let colorgroup['CmpItemAbbr'] = {"GUIFG": _d_white, "GUIBG": _black, "GUI":"NONE" } +let colorgroup['CmpItemAbbrDeprecated'] = {"GUIFG": _d_white, "GUIBG": _black, "GUI":"NONE" } +"matched item (what you typed until present)" +let colorgroup['CmpItemAbbrMatch'] = {"GUIFG": _aubergine, "GUIBG": _black, "GUI":"NONE" } +"fuzzy match for what you typed" +let colorgroup['CmpItemAbbrMatchFuzzy'] = {"GUIFG": _black, "GUIBG": _black, "GUI":"NONE" } +let colorgroup['CmpItemKind'] = {"GUIFG": _aubergine, "GUIBG": _black, "GUI":"NONE" } +let colorgroup['CmpItemMenu'] = {"GUIFG": _d_white, "GUIBG": _black, "GUI":"NONE" } + +let colorgroup['LspDiagnosticsDefaultError'] = {"GUIFG": _pink, "GUIBG": _black } +let colorgroup['LspDiagnosticsDefaultWarning'] = {"GUIFG": _marzipan, "GUIBG": _black } +let colorgroup['LspDiagnosticsDefaultHint'] = {"GUIFG": _d_white, "GUIBG": _black } + +let colorgroup['LspFloatWinNormal'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['LspFloatWinBorder'] = {"GUIFG": _black, "GUIBG": _black } +let colorgroup['LspFloatWinBorder'] = {"GUIFG": _black, "GUIBG": _black } +let colorgroup['LspFloatWinBorder'] = {"GUIFG": _black, "GUIBG": _black } + + let colorgroup['BufferLineIndicatorSelected'] = {"GUIFG": _l_sky} + let colorgroup['BufferLineFill'] = {"GUIBG": _pink} + +"used for highlighting the current line in terminal-debug" +let colorgroup['debugPC'] = {"GUIBG": _black} +"used for breakpoint colors in terminal-debug" +let colorgroup['debugBreakpoint'] = {"GUIBG": _semiblack} + +"These groups are for the native LSP client. Some other LSP clients may" +"use these groups, or use their own. Consult your LSP client's" +"documentation." + +"used for highlighting 'text' references" +let colorgroup['LspReferenceText'] = {"GUIBG": _gray_light } +"used for highlighting 'read' references" +let colorgroup['LspReferenceRead'] = {"GUIBG": _gray_light } +"used for highlighting 'write' references" +let colorgroup['LspReferenceWrite'] = {"GUIBG": _gray_light } + +let colorgroup['DiagnosticError'] = {"GUIFG": _pink, "GUIBG": _black} +let colorgroup['DiagnosticWarn'] = {"GUIFG": _marzipan, "GUIBG": _black } +let colorgroup['DiagnosticInfo'] = {"GUIFG": _sky, "GUIBG": _black } +let colorgroup['DiagnosticHint'] = {"GUIFG": _d_turquoise, "GUIBG": _black } + +let colorgroup['DiagnosticVirtualTextError'] = {"GUIFG": _pink, "GUIBG": _black } +let colorgroup['DiagnosticVirtualTextWarn'] = {"GUIFG": _marzipan, "GUIBG": _black } +let colorgroup['DiagnosticVirtualTextInfo'] = {"GUIFG": _sky, "GUIBG": _black } +let colorgroup['DiagnosticVirtualTextHint'] = {"GUIFG": _d_turquoise, "GUIBG": _black } + +let colorgroup['DiagnosticUnderlineError'] = {"style": "undercurl", "sp": _pink } +let colorgroup['DiagnosticUnderlineWarn'] = {"style": "undercurl", "sp": _marzipan } +let colorgroup['DiagnosticUnderlineInfo'] = {"style": "undercurl", "sp": _sky } +let colorgroup['DiagnosticUnderlineHint'] = {"style": "undercurl", "sp": _d_turquoise } + +" === Highlighting Links ===" +hi link Boolean Number +hi link Class Constant +hi link Delimiter Define +hi link Debug Special +hi link Conditional Define +hi link Exception PreProc +hi link Float Number +hi link Include PreProc +hi link Macro PreProc +hi link Number Identifier +hi link Operator Identifier +hi link PreCondit PreProc +hi link Repeat Statement +hi link SpecialChar Special +hi link SpecialComment Special +hi link SpecialKey Define +hi link StorageClass Identifier +hi link Symbol PreProc +hi link Tag Normal +hi link Typedef Type + +" === Highlighting Plugins ===" + +" CtrlP " +hi link CtrlPMatch Character + +" Git commit " +hi link gitcommitBranch Constant +hi link gitcommitSelectedFile Statement +hi link gitcommitDiscardedFile Structure +hi link gitcommitUntrackedFile Structure +hi link gitcommitSummary String + +" GitGutter " +hi link GitGutterAdd GitGutterAdd +hi link GitGutterChange GitGutterChange +hi link GitGutterDelete GitGutterDelete +hi link GitGutterChangeDelete GitGutterChangeDelete + +" Signify " +hi link SignifySignAdd GitGutterAdd +hi link SignifySignChange GitGutterChange +hi link SignifySignChangeDelete GitGutterChangeDelete +hi link SignifySignDelete GitGutterDelete +hi link SignifySignDeleteFirstLine SignifySignDelete + +" NERDtree " +hi link NerdTreeCWD Character +hi link NerdTreeHelpKey Character +hi link NerdTreeHelpTitle Statement +hi link NerdTreeOpenable NerdTreeCWD +hi link NerdTreeClosable Statement +hi link NerdTreeDir Normal +hi link NerdTreeDirSlash NerdTreeDir + +" PlainTasks (.todo) " +hi link ptCompleteTask Number +hi link ptContext Type +hi link ptSection Title +hi link ptTask Normal + +" VimPlug " +hi link plugName Character + +" Startify " +hi link StartifyNumber Character +hi link StartifyBracket StartifyNumber +hi link StartifySection Title +hi link StartifyPath Define +hi link StartifySlash StartifyPath +hi link StartifyFile Normal + +" === Highlighting Languages/Tools ===" + +" highlight clear ALEErrorSign " +if exists('g:ale_enabled') + hi! link ALEError WarningMsg + hi! link ALEWarning WarningMsg + hi! link ALEInfo WarningMsg + + hi! link ALEErrorSign WarningMsg + hi! link ALEWarningSign WarningMsg + hi! link ALEInfoSign WarningMsg + hi! link ALEVirtualTextWarning WarningMsg + hi! link ALEVirtualTextError WarningMsg +endif + +" Apache " +hi link apacheDeclaration PreProc + +" CoffeeScript " +hi link coffeeExtendedOp Character +hi link coffeeObject Statement +hi link coffeeObjAssign Character +hi link coffeeParen Character + +" CSS " +hi link cssAttr Identifier +hi link cssColor Normal +hi link cssClassName String +hi link cssProp Function +hi link cssPseudoClass Character +hi link cssPseudoClassId Character +hi link cssSelectorOp Character +hi link cssTagName Identifier +hi link cssDefinition Identifier +hi link cssNoise Punctuation +hi link cssBraces Punctuation +hi link cssIdentifier Punctuation +hi link cssIncludeKeyword Punctuation +hi link cssUnitDecorators String + +" GraphQL " +hi link graphqlName Function +hi link graphqlString Comment + +" HAML " +hi link hamlTag Character + +" HTML " +"hi link javaScript Normal" +hi link htmlTag Label +hi link htmlEndTag Label +hi link htmlTagName Label +hi link htmlScriptTag Label +hi link htmlArg Attr +hi link htmlTitle Normal +hi link htmlH1 Normal +hi link htmlH2 htmlH1 +hi link htmlH3 htmlH1 +hi link htmlH4 htmlH1 +hi link htmlH5 htmlH1 +hi link htmlH6 htmlH1 + +" JavaScript " +hi link javascriptFuncArg Character +hi link javascriptFuncComma Punctuation +hi link javascriptFuncDef Statement +hi link javascriptFuncKeyword Statement +hi link javascriptOpSymbols Type +hi link javascriptParens Punctuation +hi link javascriptEndcolons Character +hi link jsArrowFuncArgs Normal +hi link jsArrowFunction Identifier +hi link jsBraces Punctuation +hi link jsBrackets Punctuation +hi link jsClassBraces Punctuation +hi link jsClassDefinition Class +hi link jsClassFuncName Function +hi link jsClassKeyword Identifier +hi link jsClassProperty Normal +hi link jsClassBlock Identifier +hi link jsDecorator Normal +hi link jsDestructuringBraces Punctuation +hi link jsExtendsKeyword jsClassKeyword +hi link jsExport Identifier +hi link jsImport Module +hi link jsFrom Identifier +hi link jsFuncBraces Punctuation +hi link jsFunction Identifier +hi link jsFuncCall Function +hi link jsFuncParens Punctuation +hi link jsFunctionKey Function +hi link jsGlobalObjects Identifier +hi link jsGlobalNodeObjects Identifier +hi link jsIfElseBraces Punctuation +hi link jsModuleBraces Normal +hi link jsModuleKeyword Tag +hi link jsNoise Delimiter +hi link jsObjectBraces Punctuation +hi link jsObjectKey Normal +hi link jsObjectValue PreProc +hi link jsObjectProp Function +hi link jsObjectColon Punctuation +hi link jsObjectShorthandProp Punctuation +hi link jsParens Punctuation +hi link jsReturn Identifier +hi link jsSpreadOperator Identifier +hi link jsThis Identifier + +" JSON " +hi link jsonKeyword Attr +hi link jsonKeywordMatch Punctuation +hi link jsonQuote Attr +hi link jsonNoise Punctuation +hi link jsonString Punctuation +hi link jsonBraces Normal +hi link jsonBoolean WarningMsg + +hi link jsonNumError Comment +hi link jsonCommentError Comment +hi link jsonSemicolonError Comment +hi link jsonTrailingCommaError Comment +hi link jsonMissingCommaError Comment +hi link jsonStringSQError Comment +hi link jsonNoQuotesError Punctuation +hi link jsonTripleQuotesError Punctuation + +" hi link texSpecialChar Special " +" Markdown " +hi link markdownHeadingDelimiter Identifier +hi link markdownCode Identifier +hi link markdownIndentCode Identifier +hi link markdownLineBreak Statement +hi link markdownH1 MarkdownH1 +hi link markdownH2 MarkdownH2 +hi link markdownLinkText markdownLinkText + +" MatchTagAlways " +hi link MatchTag Identifier + +" PHP " +hi link phpRegion Comment +hi link phpConstant WarningMsg +hi link phpCoreConstant WarningMsg +hi link phpComment Comment +hi link phpDocTags WarningMsg +hi link phpDocCustomTags WarningMsg +hi link phpException WarningMsg +hi link phpBoolean WarningMsg +hi link phpClass String +hi link phpStaticClasses String +hi link phpClassDelimiter WarningMsg +hi link phpFunction Label "Custom functions" +hi link phpFunctions Character "Built-in functions" +hi link phpSuperglobals Normal "Global functions" +hi link phpMagicConstants Normal "__CLASS__" +hi link phpServerVars WarningMsg +hi link phpMethods WarningMsg +hi link phpMethodsVar Label +hi link phpSplatOperator Label +hi link phpStringDelimiter String "String Quotes" +hi link phpStructure Label +hi link phpStringSingle String +hi link phpStringDouble Identifier +hi link phpBacktick Identifier +hi link phpNumber Identifier +hi link phpFloat WarningMsg +hi link phpBaselib Identifier +hi link phpRepeat WarningMsg +hi link phpStatement Identifier +hi link phpKeyword Identifier "function" +hi link phpSCKeyword Identifier +hi link phpFCKeyword Identifier +hi link phpYieldFromKeyword Identifier +hi link phpDocNamespaceSeparator WarningMsg +hi link phpClassNamespaceSeparator WarningMsg +hi link phpUseNamespaceSeparator WarningMsg +hi link phpType Identifier "public, privat, protected" +hi link phpInclude Identifier +hi link phpDefine WarningMsg +hi link phpBackslashSequences WarningMsg +hi link phpBackslashDoubleQuote WarningMsg +hi link phpBackslashSingleQuote WarningMsg +hi link phpParent Punctuation +hi link phpBrackets Punctuation +hi link phpIdentifierConst WarningMsg +hi link phpParentError WarningMsg +hi link phpOctalError WarningMsg +hi link phpInterpSimpleError WarningMsg +hi link phpInterpBogusDollarCurley WarningMsg +hi link phpInterpDollarCurly1 WarningMsg +hi link phpInterpDollarCurly2 WarningMsg +hi link phpInterpSimpleBracketsInner WarningMsg +hi link phpInterpSimpleCurly WarningMsg +hi link phpInterpVarname WarningMsg +hi link phpIntVar Punctuation +hi link phpVarSelector PreProc "$ sign" +hi link phpMemberSelector Identifier "->" +hi link phpIdentifier PreProc +hi link phpTodo Identifier +hi link phpDocTodo Identifier +hi link phpOperator Identifier "+, -, x, *" +hi link phpRelation WarningMsg +hi link phpIdentifierSimply WarningMsg + +"Pug" +hi link pugHtmlConditionalComment WarningMsg + +" Python " +hi link pythonMagic Identifier +hi link pythonBuiltin Identifier +hi link pythonStatement Identifier +hi link pythonOperator Punctuation +hi link pythonFunction Character +hi link pythonString Label +hi link pythonImport Identifier +hi link pythonDef Punctuation +hi link pythonAs Punctuation +hi link pythonDocstring Punctuation +hi link pythonSpecial Punctuation +hi link pythonDecorator Punctuation +hi link pythonExceptions Punctuation + +" Ruby " +hi link rubyAccess Access +hi link rubyBlockParameterList PreProc +hi link rubyCallback Character +hi link rubyClass Label +hi link rubyClassName UnderlinedBold +hi link rubyControl Statement +hi link rubyConstant Constant +hi link rubyEntity Character +hi link rubyInclude Include +hi link rubyInterpolation Identifier +hi link rubyMacro Character +hi link rubyModule Module +hi link rubyStringDelimiter rubyString +hi link rubySymbol Symbol +hi link rubyRoute Type + +" SASS " +hi link sassClassChar Type +hi link sassClass Type +hi link sassIdChar Type +hi link sassId Type +hi link sassProperty Type +hi link scssProperty Identifier +hi link scssMixin Identifier +hi link scssVariable Attr +hi link scssInclude Identifier +hi link scssExtend Identifier +hi link scssFunctionDefinition Identifier +hi link scssReturn Identifier +hi link scssEachKeyword Identifier +hi link scssForKeyword Identifier +hi link scssImport Identifier +hi link scssSemicolon Punctuation +hi link scssAtRoot Identifier +hi link scssSelectorName String + +" Slim " +hi link slimBegin Normal +hi link slimClass Character +hi link slimClassChar Character +hi link slimId Character +hi link slimIdChar Character +hi link rubyKeyword PreProc +hi link slimText Normal + +" TypeScript " +hi link typescriptBOM Normal +hi link typescriptBraces Punctuation +hi link typescriptParens Punctuation +hi link typescriptTypeReference String +hi link typescriptAsyncFuncKeyword Identifier +hi link typescriptAsyncFunc Identifier +hi link typescriptArrowFunc Identifier +hi link typescriptFuncKeyword Identifier +hi link typescriptArrowFuncArg Identifier +hi link typescriptFuncName Function +hi link typescriptFuncArg Identifier +hi link typescriptFuncComma Identifier +hi link typescriptFuncTypeArrow String +hi link typescriptTemplate Attr +hi link typescriptTemplateSB Attr +hi link typescriptObjectLabel Normal +hi link typescriptDestructureLabel Attr +hi link typescriptObjectAsyncKeyword Attr +hi link typescriptInterfaceKeyword Identifier +hi link typescriptInterfaceExtends Identifier +hi link typescriptInterfaceName String +hi link typescriptImport Identifier +hi link typescriptImportType Normal +hi link typescriptExport Identifier +hi link typescriptExportType Normal +"Types=> key:value" +hi link typescriptMember Normal +hi link typescriptPredefinedType Attr +hi link typescriptStringMember Normal +hi link typescriptString String +hi link typescriptConditional Identifier +hi link typescriptConditionalElse Identifier +"default" +hi link typescriptCase Identifier +hi link typescriptDefault Identifier +hi link typescriptMethodAccessor String +hi link typescriptKeywordOp String +"return" +hi link typescriptStatementKeyword Identifier +hi link typescriptNull Attr +hi link typescriptBoolean Attr +hi link typescriptConstructorType Attr +hi link typescriptTypeQuery Attr +hi link typescriptAccessibilityModifier Attr +hi link typescriptOptionalMark Attr +hi link typescriptReadonlyModifier Attr +hi link typescriptTypeParameter Attr + +" VimL " +hi link vimCmdSep Character + +" YAML " +hi link yamlBlockMappingKey Punctuation +hi link yamlDocumentStart Punctuation +hi link yamlKeyValueDelimiter Punctuation +hi link yamlPlainScalar Punctuation + +" XML " +" hi link xmlAttrib Normal" +hi link xmlTag Xml +hi link xmlTagName Identifier +hi link xmlEndTag Tag +hi link xmlAttrib Attr + +" === Expand colorgroups === " + +let s:colors = {} +" http://choorucode.com/2011/07/29/vim-chart-of-color-names/" + +let valid_cterm_colors = + \ [ + \ 'Black', 'DarkBlue', 'DarkGreen', 'DarkCyan', + \ 'DarkRed', 'DarkMagenta', 'Brown', 'DarkYellow', + \ 'LightGray', 'LightGrey', 'Gray', 'Grey', + \ 'DarkGray', 'DarkGrey', 'Blue', 'LightBlue', + \ 'Green', 'LightGreen', 'Cyan', 'LightCyan', + \ 'Red', 'LightRed', 'Magenta', 'LightMagenta', + \ 'Yellow', 'LightYellow', 'White', + \ ] +for key in keys(colorgroup) + let s:colors = colorgroup[key] + if has_key(s:colors, 'TERM') + let term = s:colors['TERM'] + else + let term = 'NONE' + endif + if has_key(s:colors, 'GUI') + let gui = s:colors['GUI'] + else + let gui='NONE' + endif + if has_key(s:colors, 'GUIFG') + let guifg = s:colors['GUIFG'] + else + let guifg='NONE' + endif + if has_key(s:colors, 'GUIBG') + let guibg = s:colors['GUIBG'] + else + let guibg='NONE' + endif + if g:bore_terminal_italics == 0 + if has_key(s:colors, 'CTERM') && s:colors["CTERM"] == "italic" + unlet a:colors.CTERM + endif + if has_key(s:colors, "GUI") && s:colors["GUI"] == "italic" + unlet s:colors.GUI + endif + endif + if has_key(s:colors, 'CTERM') + let cterm = s:colors['CTERM'] + else + let cterm=gui + endif + if has_key(s:colors, 'CTERMFG') + let ctermfg = s:colors['CTERMFG'] + else + if index(valid_cterm_colors, guifg) != -1 + let ctermfg=guifg + else + let ctermfg='Blue' + endif + endif + if has_key(s:colors, 'CTERMBG') + let ctermbg = s:colors['CTERMBG'] + else + if index(valid_cterm_colors, guibg) != -1 + let ctermbg=guibg + else + let ctermbg='NONE' + endif + endif + if has_key(s:colors, 'GUISP') + let guisp = s:colors['GUISP'] + else + let guisp='NONE' + endif + if key =~ '^\k*$' + execute "hi ".key." term=".term." cterm=".cterm." gui=".gui." ctermfg=".ctermfg." guifg=".guifg." ctermbg=".ctermbg." guibg=".guibg." guisp=".guisp + endif +endfor + +hi DiffAdd ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi DiffChange ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi DiffDelete ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi DiffText ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi IncSearch ctermbg=8 ctermfg=NONE cterm=NONE guibg=#272727 guifg=NONE gui=NONE +hi Search ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi Directory ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#808080 gui=NONE +hi MatchParen ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi SpellBad ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE guisp=#b3646e +hi SpellCap ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE guisp=#7fa7c9 +hi SpellLocal ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE guisp=#a2a6d4 +hi SpellRare ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE guisp=#91cecf +hi ColorColumn ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi SignColumn ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi ErrorMsg ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi ModeMsg ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi MoreMsg ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi Question ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi Cursor ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi CursorColumn ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi QuickFixLine ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi Conceal ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi ToolbarLine ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi ToolbarButton ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi debugPC ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi debugBreakpoint ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi VimHiGroup ctermbg=NONE ctermfg=12 cterm=NONE guibg=NONE guifg=#7fa7c9 gui=NONE +hi VimVar ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#e0e0e0 gui=NONE +hi VimAutoEvent ctermbg=NONE ctermfg=12 cterm=NONE guibg=NONE guifg=#7fa7c9 gui=NONE +hi VimFunction ctermbg=NONE ctermfg=13 cterm=NONE guibg=NONE guifg=#a2a6d4 gui=NONE +hi vimVar ctermbg=NONE ctermfg=13 cterm=NONE guibg=NONE guifg=#a2a6d4 gui=NONE +hi vimMapMod ctermbg=NONE ctermfg=12 cterm=NONE guibg=NONE guifg=#7fa7c9 gui=NONE +hi vimMapModKey ctermbg=NONE ctermfg=12 cterm=NONE guibg=NONE guifg=#7fa7c9 gui=NONE +hi vimBracket ctermbg=NONE ctermfg=13 cterm=NONE guibg=NONE guifg=#a2a6d4 gui=NONE +hi vimNotation ctermbg=NONE ctermfg=13 cterm=NONE guibg=NONE guifg=#a2a6d4 gui=NONE +hi StatusText ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#e0e0e0 gui=NONE +hi StatusBackground ctermbg=NONE ctermfg=0 cterm=NONE guibg=NONE guifg=#0d0d0d gui=NONE +hi StatusFileName ctermbg=NONE ctermfg=12 cterm=bold guibg=NONE guifg=#7fa7c9 gui=bold +hi StatusFileType ctermbg=NONE ctermfg=10 cterm=bold guibg=NONE guifg=#a0bc8d gui=bold +hi StatusFileModified ctermbg=NONE ctermfg=11 cterm=bold guibg=NONE guifg=#c9b16f gui=bold +hi StatusFileReadonly ctermbg=NONE ctermfg=11 cterm=bold guibg=NONE guifg=#c9b16f gui=bold +hi StatusFileLocation ctermbg=NONE ctermfg=13 cterm=bold guibg=NONE guifg=#a2a6d4 gui=bold +hi StatusFileEncoding ctermbg=NONE ctermfg=14 cterm=bold guibg=NONE guifg=#91cecf gui=bold +hi StatusWarning ctermbg=NONE ctermfg=11 cterm=bold guibg=NONE guifg=#c9b16f gui=bold +hi StatusError ctermbg=NONE ctermfg=9 cterm=bold guibg=NONE guifg=#d0d0d0 gui=bold +hi TabLineTitle ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#808080 gui=NONE +hi TabLineTitleActive ctermbg=NONE ctermfg=12 cterm=bold guibg=NONE guifg=#7fa7c9 gui=bold +hi SignifySignAdd ctermbg=NONE ctermfg=10 cterm=NONE guibg=NONE guifg=#a0bc8d gui=NONE +hi SignifySignDelete ctermbg=NONE ctermfg=9 cterm=NONE guibg=NONE guifg=#b3646e gui=NONE +hi SignifySignChange ctermbg=NONE ctermfg=11 cterm=NONE guibg=NONE guifg=#c9b16f gui=NONE + +" hi CocExplorerGitPathChange ctermbg=NONE ctermfg=10 cterm=NONE guibg=NONE guifg=#a0bc8d gui=NONE +" hi CocExplorerGitContentChange ctermbg=NONE ctermfg=11 cterm=NONE guibg=NONE guifg=#c9b16f gui=NONE + +" hi CocErrorSign ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#d0d0d0 gui=NONE +" hi CocInfoSign ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#c9b16f gui=NONE +" hi CocWarningSign ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#c9b16f gui=NONE + +" hi CocErrorFloat ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#b3646e gui=NONE +" hi CocInfoFloat ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#d0d0d0 gui=NONE +" hi CocWarningFloat ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#c9b16f gui=NONE + +hi Pmenu ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#808080 gui=NONE +hi PmenuSbar ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi PmenuSel ctermbg=8 ctermfg=15 cterm=NONE guibg=#202020 guifg=#d0d0d0 gui=NONE +hi PmenuThumb ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE + +hi StatusLine ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#808080 gui=NONE +hi StatusLineNC ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#505050 gui=NONE +hi VertSplit ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#272727 gui=NONE +hi TabLine ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi TabLineFill ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi TabLineSel ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE + +" Treesitter specific highlighting +hi @type guifg=#ffffff gui=NONE cterm=NONE +hi @type.builtin guifg=#ffffff gui=NONE cterm=NONE +hi @type.qualifier guifg=#ffffff gui=NONE cterm=NONE +hi @type.definition guifg=#ffffff gui=NONE cterm=NONE + +hi link @parameter _pink +hi link @parameter.builtin _pink +hi link @variable.argument _pink +hi link @lsp.type.parameter _pink + +hi @tag guifg=#6cbeff gui=NONE cterm=NONE +hi @tag.builtin guifg=#FD98B9 gui=NONE cterm=NONE +hi @tag.attribute guifg=#7fdbca gui=NONE cterm=NONE +hi @module guifg=#6cbeff gui=NONE cterm=NONE + +hi @constant guifg=#7fdbca gui=NONE cterm=NONE +hi link @variable.parameter NONE +hi @variable.parameter guifg=#FD98B9 gui=NONE cterm=NONE +hi @variable guifg=#FD98B9 gui=NONE cterm=NONE +hi @function.call guifg=#7fdbca gui=NONE cterm=NONE +hi @function.builtin guifg=#7fdbca gui=NONE cterm=NONE +hi @function.method.call guifg=#7fdbca gui=NONE cterm=NONE +hi @variable.member guifg=#7fdbca gui=NONE cterm=NONE +hi link @variable.parameter Identifier +hi link @variable.parameter _pink +hi @keyword.modifier guifg=#75778C gui=NONE cterm=NONE +hi @keyword.operator guifg=#75778C gui=NONE cterm=NONE +hi @constructor guifg=#7fdbca gui=NONE cterm=NONE +hi @property guifg=#7fdbca gui=NONE cterm=NONE +hi @boolean guifg=#6cbeff gui=NONE cterm=NONE +hi @punctuation.bracket guifg=#75778c gui=NONE cterm=NONE +hi @punctuation.delimiter guifg=#75778c gui=NONE cterm=NONE +hi @attribute guifg=#6cbeff gui=NONE cterm=NONE + +let colorgroup['@variable.parameter'] = {"GUIFG": _pink} +let colorgroup['@parameter'] = {"GUIFG": _pink} +let colorgroup['@lsp.type.parameter'] = {"GUIFG": _pink} +let colorgroup['Structure'] = {"GUIFG": _white} +let colorgroup['@type'] = {"GUIFG": _white} + + +" Must appear at the end of the file to work around this oddity: +" https://groups.google.com/forum/#!msg/vim_dev/afPqwAFNdrU/nqh6tOM87QUJ +set background=dark diff --git a/bore.vim/images/screenshot.png b/bore.vim/images/screenshot.png Binary files differnew file mode 100644 index 0000000..dbe4b54 --- /dev/null +++ b/bore.vim/images/screenshot.png diff --git a/fonts/IoskeleyMono-Bold.ttf b/fonts/IoskeleyMono-Bold.ttf Binary files differnew file mode 100644 index 0000000..046a114 --- /dev/null +++ b/fonts/IoskeleyMono-Bold.ttf diff --git a/fonts/IoskeleyMono-BoldItalic.ttf b/fonts/IoskeleyMono-BoldItalic.ttf Binary files differnew file mode 100644 index 0000000..812cd0a --- /dev/null +++ b/fonts/IoskeleyMono-BoldItalic.ttf diff --git a/fonts/IoskeleyMono-ExtraBold.ttf b/fonts/IoskeleyMono-ExtraBold.ttf Binary files differnew file mode 100644 index 0000000..a334734 --- /dev/null +++ b/fonts/IoskeleyMono-ExtraBold.ttf diff --git a/fonts/IoskeleyMono-ExtraBoldItalic.ttf b/fonts/IoskeleyMono-ExtraBoldItalic.ttf Binary files differnew file mode 100644 index 0000000..0acc758 --- /dev/null +++ b/fonts/IoskeleyMono-ExtraBoldItalic.ttf diff --git a/fonts/IoskeleyMono-Italic.ttf b/fonts/IoskeleyMono-Italic.ttf Binary files differnew file mode 100644 index 0000000..f5a377d --- /dev/null +++ b/fonts/IoskeleyMono-Italic.ttf diff --git a/fonts/IoskeleyMono-Light.ttf b/fonts/IoskeleyMono-Light.ttf Binary files differnew file mode 100644 index 0000000..0eee122 --- /dev/null +++ b/fonts/IoskeleyMono-Light.ttf diff --git a/fonts/IoskeleyMono-LightItalic.ttf b/fonts/IoskeleyMono-LightItalic.ttf Binary files differnew file mode 100644 index 0000000..275d0d6 --- /dev/null +++ b/fonts/IoskeleyMono-LightItalic.ttf diff --git a/fonts/IoskeleyMono-Medium.ttf b/fonts/IoskeleyMono-Medium.ttf Binary files differnew file mode 100644 index 0000000..ee70f0d --- /dev/null +++ b/fonts/IoskeleyMono-Medium.ttf diff --git a/fonts/IoskeleyMono-MediumItalic.ttf b/fonts/IoskeleyMono-MediumItalic.ttf Binary files differnew file mode 100644 index 0000000..777fe70 --- /dev/null +++ b/fonts/IoskeleyMono-MediumItalic.ttf diff --git a/fonts/IoskeleyMono-Regular.ttf b/fonts/IoskeleyMono-Regular.ttf Binary files differnew file mode 100644 index 0000000..d0cdd2a --- /dev/null +++ b/fonts/IoskeleyMono-Regular.ttf diff --git a/fonts/IoskeleyMono-SemiBold.ttf b/fonts/IoskeleyMono-SemiBold.ttf Binary files differnew file mode 100644 index 0000000..7b1dbd4 --- /dev/null +++ b/fonts/IoskeleyMono-SemiBold.ttf diff --git a/fonts/IoskeleyMono-SemiBoldItalic.ttf b/fonts/IoskeleyMono-SemiBoldItalic.ttf Binary files differnew file mode 100644 index 0000000..7748779 --- /dev/null +++ b/fonts/IoskeleyMono-SemiBoldItalic.ttf diff --git a/ghostty/config.txt b/ghostty/config.txt new file mode 100644 index 0000000..472cbe0 --- /dev/null +++ b/ghostty/config.txt @@ -0,0 +1,77 @@ + +palette = 0=#090E13 +palette = 1=#c4746e +palette = 2=#8a9a7b +palette = 3=#c4b28a +palette = 4=#8ba4b0 +palette = 5=#a292a3 +palette = 6=#8ea4a2 +palette = 7=#a4a7a4 +palette = 8=#5C6066 +palette = 9=#e46876 +palette = 10=#87a987 +palette = 11=#e6c384 +palette = 12=#7fb4ca +palette = 13=#938aa9 +palette = 14=#7aa89f +palette = 15=#c5c9c7 + +background = #090E13 +foreground = #c5c9c7 +cursor-color = #c5c9c7 +selection-background = #22262D +selection-foreground = #c5c9c7 + + +font-family-italic = Ioskeley Mono +font-family-bold-italic = Ioskeley Mono +font-family-bold = Ioskeley Mono +font-family = Ioskeley Mono +#font-feature = -calt, -liga, -dlig + +# Font size + +font-size = 22 +font-thicken = true +font-thicken-strength=255 +bold-is-bright = true + +# macos options + +#macos-option-as-alt = true +macos-titlebar-style = tabs + +# Always show ghostty as the title + +title = Ogrimmar + +# Opacity of split windows + +unfocused-split-opacity = 0.97 + +# Set the background-opacity to be fully opaque + +background-opacity = 1.0 + +# Cursor style + +cursor-style-blink = true + +# Clipboard settings + +clipboard-read = allow +clipboard-write = allow + +macos-titlebar-proxy-icon = hidden + +# Window settings + +#window-decoration = none +macos-titlebar-style = hidden +window-width = 90 +window-height = 30 +window-colorspace = display-p3 +window-padding-color = background +window-padding-balance = true +window-padding-x = 16 +window-padding-y = 16
\ No newline at end of file diff --git a/meme.jpg b/meme.jpg Binary files differnew file mode 100644 index 0000000..10146bd --- /dev/null +++ b/meme.jpg diff --git a/nvim/.DS_Store b/nvim/.DS_Store Binary files differnew file mode 100644 index 0000000..3b62c48 --- /dev/null +++ b/nvim/.DS_Store diff --git a/nvim/.luarc.json b/nvim/.luarc.json new file mode 100644 index 0000000..4a2c971 --- /dev/null +++ b/nvim/.luarc.json @@ -0,0 +1,10 @@ +{ + "diagnostics.globals": [ + "vim", + "bufnr" + ], + "diagnostics.disable": [ + "unused-local", + "undefined-global" + ] +}
\ No newline at end of file diff --git a/nvim/after/plugin/autopairs.lua b/nvim/after/plugin/autopairs.lua new file mode 100644 index 0000000..4de6add --- /dev/null +++ b/nvim/after/plugin/autopairs.lua @@ -0,0 +1 @@ +require("nvim-autopairs").setup() diff --git a/nvim/after/plugin/fidget.lua b/nvim/after/plugin/fidget.lua new file mode 100644 index 0000000..107d424 --- /dev/null +++ b/nvim/after/plugin/fidget.lua @@ -0,0 +1,83 @@ +require("fidget").setup { + progress = { + poll_rate = 0, -- How and when to poll for progress messages + suppress_on_insert = true, -- Suppress new messages while in insert mode + ignore_done_already = true, -- Ignore new tasks that are already complete + ignore_empty_message = true, -- Ignore new tasks that don't contain a message + clear_on_detach = -- Clear notification group when LSP server detaches + function(client_id) + local client = vim.lsp.get_client_by_id(client_id) + return client and client.name or nil + end, + notification_group = -- How to get a progress message's notification group key + function(msg) return msg.lsp_client.name end, + ignore = {}, -- List of LSP servers to ignore + + -- Options related to how LSP progress messages are displayed as notifications + display = { + render_limit = 3, -- How many LSP messages to show at once + done_ttl = 3, -- How long a message should persist after completion + done_icon = "✔", -- Icon shown when all LSP progress tasks are complete + done_style = "Constant", -- Highlight group for completed LSP tasks + progress_ttl = math.huge, -- How long a message should persist when in progress + progress_icon = -- Icon shown when LSP progress tasks are in progress + { pattern = "dots", period = 1 }, + progress_style = -- Highlight group for in-progress LSP tasks + "WarningMsg", + group_style = "Title", -- Highlight group for group name (LSP server name) + icon_style = "Question", -- Highlight group for group icons + priority = 30, -- Ordering priority for LSP notification group + skip_history = true, -- Whether progress notifications should be omitted from history + format_message = -- How to format a progress message + require("fidget.progress.display").default_format_message, + format_annote = -- How to format a progress annotation + function(msg) return msg.title end, + format_group_name = -- How to format a progress notification group's name + function(group) return tostring(group) end, + overrides = { -- Override options from the default notification config + rust_analyzer = { name = "rust-analyzer" }, + }, + }, + + -- Options related to Neovim's built-in LSP client + lsp = { + progress_ringbuf_size = 0, -- Configure the nvim's LSP progress ring buffer size + log_handler = false, -- Log `$/progress` handler invocations (for debugging) + }, + }, + + -- Options related to notification subsystem + notification = { + window = { + normal_hl = "Comment", -- Base highlight group in the notification window + winblend = 0, -- Background color opacity in the notification window + border = "none", -- Border around the notification window + zindex = 45, -- Stacking priority of the notification window + max_width = 0, -- Maximum width of the notification window + max_height = 0, -- Maximum height of the notification window + x_padding = 1, -- Padding from right edge of window boundary + y_padding = 0, -- Padding from bottom edge of window boundary + align = "bottom", -- How to align the notification window + relative = "editor", -- What the notification window position is relative to + }, + }, + + -- Options related to integrating with other plugins + integration = { + ["nvim-tree"] = { + enable = true, -- Integrate with nvim-tree/nvim-tree.lua (if installed) + }, + ["xcodebuild-nvim"] = { + enable = true, -- Integrate with wojciech-kulik/xcodebuild.nvim (if installed) + }, + }, + + -- Options related to logging + logger = { + level = vim.log.levels.WARN, -- Minimum logging level + max_size = 10000, -- Maximum log file size, in KB + float_precision = 0.01, -- Limit the number of decimals displayed for floats + path = -- Where Fidget writes its logs to + string.format("%s/fidget.nvim.log", vim.fn.stdpath("cache")), + }, +} diff --git a/nvim/after/plugin/fugitive.lua b/nvim/after/plugin/fugitive.lua new file mode 100644 index 0000000..80c9070 --- /dev/null +++ b/nvim/after/plugin/fugitive.lua @@ -0,0 +1 @@ +vim.keymap.set("n", "<leader>gs", vim.cmd.Git) diff --git a/nvim/after/plugin/lsp.lua b/nvim/after/plugin/lsp.lua new file mode 100644 index 0000000..6487a8e --- /dev/null +++ b/nvim/after/plugin/lsp.lua @@ -0,0 +1,277 @@ +local lspkind = require('lspkind') +local lspconfig = require("lspconfig") +local cmp = require('cmp') +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +require("mason").setup({ + registries = { + "github:mason-org/mason-registry", + "github:Crashdummyy/mason-registry", + }, +}) + +require("mason-lspconfig").setup() + +cmp.setup({ + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + ['<C-b>'] = cmp.mapping.scroll_docs(-4), + ['<C-f>'] = cmp.mapping.scroll_docs(4), + ['<C-Space>'] = cmp.mapping.complete(), + ['<C-e>'] = cmp.mapping.abort(), + ['<C-x>'] = cmp.mapping.confirm({ select = true }), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + { name = 'buffer' }, + { name = 'path' }, + }), + formatting = { + format = lspkind.cmp_format({ + mode = 'symbol_text', + maxwidth = 50, + ellipsis_char = '...', + show_labelDetails = true, + }) + }, + window = { + completion = { + winhighlight = "Normal:CmpNormal,FloatBorder:CmpBorder", + border = { + { "╭", "CmpBorder" }, + { "─", "CmpBorder" }, + { "╮", "CmpBorder" }, + { "│", "CmpBorder" }, + { "╯", "CmpBorder" }, + { "─", "CmpBorder" }, + { "╰", "CmpBorder" }, + { "│", "CmpBorder" }, + }, + scrollbar = false, + }, + documentation = { + winhighlight = "Normal:CmpDocNormal,FloatBorder:CmpDocBorder", + border = { + { "╭", "CmpDocBorder" }, + { "─", "CmpDocBorder" }, + { "╮", "CmpDocBorder" }, + { "│", "CmpDocBorder" }, + { "╯", "CmpDocBorder" }, + { "─", "CmpDocBorder" }, + { "╰", "CmpDocBorder" }, + { "│", "CmpDocBorder" }, + }, + }, + }, +}) + +-- vim.api.nvim_set_hl(0, "CmpNormal", { bg = "#E0E2EB", blend = 0 }) +-- vim.api.nvim_set_hl(0, "CmpBorder", { fg = "#E0E2EB", bg = "#E0E2EB", blend = 0 }) +-- vim.api.nvim_set_hl(0, "CmpDocNormal", { bg = "#E0E2EB", blend = 0 }) +-- vim.api.nvim_set_hl(0, "CmpDocBorder", { fg = "#E0E2EB", bg = "#E0E2EB", blend = 0 }) + +local options = { buffer = bufnr, remap = false } +local on_attach = function(client, bufnr) + -- if vim.bo.filetype == 'csharp' or vim.bo.filetype == 'cs' or vim.bo.filetype == "c" or vim.bo.filetype == "cpp" or vim.bo.filetype == "swift" or vim.bo.filetype == "swiftinterface" or vim.bo.filetype == 'zig' then + client.server_capabilities.semanticTokensProvider = nil + -- end + vim.keymap.set('n', 'gd', '<cmd>lua require"telescope.builtin".lsp_definitions({jump_type="vsplit"})<CR>', options) + -- vim.keymap.set('n', 'gd', function() vim.lsp.buf.definition() end, options) + vim.keymap.set("n", "gr", function() vim.lsp.buf.references() end, options) + vim.keymap.set("n", "bh", function() vim.lsp.buf.hover() end, options) + vim.keymap.set("n", "ca", function() vim.lsp.buf.code_action() end, options) + vim.keymap.set("n", "cr", function() vim.lsp.buf.rename() end, options) + vim.keymap.set("n", "gv", function() vim.lsp.buf.signature_help() end, options) + vim.keymap.set("n", "gl", function() vim.diagnostic.open_float() end, options) + vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, options) + vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, options) +end + +vim.lsp.config("roslyn", { + on_attach = on_attach, + capabilities = capabilities, + settings = { + ["csharp|inlay_hints"] = { + csharp_enable_inlay_hints_for_implicit_object_creation = true, + csharp_enable_inlay_hints_for_implicit_variable_types = true, + }, + ["csharp|code_lens"] = { + dotnet_enable_references_code_lens = true, + }, + }, +}) + +vim.api.nvim_create_autocmd('BufWritePre', { + callback = function() + vim.lsp.buf.format { + async = false, + } + end, +}) + +vim.api.nvim_create_autocmd('LspAttach', { + callback = function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + client.server_capabilities.semanticTokensProvider = nil + end +}) + +vim.lsp.config("eslint_lsp", + { + experimental = { + useFlatConfig = true + }, + on_attach = function(_client, bufnr) + vim.api.nvim_create_autocmd("BufWritePre", { + buffer = bufnr, + command = "EslintFixAll", + }) + on_attach(_client, bufnr) + end, + filetypes = { + "javascript", + "javascriptreact", + "javascript.jsx", + "typescript", + "typescriptreact", + "typescript.tsx", + "vue", + "html", + "markdown", + "json", + "jsonc", + "yaml", + "toml", + "xml", + "gql", + "graphql", + "astro", + "svelte", + "css", + "less", + "scss", + "pcss", + "postcss" + }, + } +) + +vim.lsp.config('rust_analyzer', { + on_attach = on_attach, + capabilities = capabilities, + settings = { + ['rust-analyzer'] = { + diagnostics = { + enable = false; + } + } + } +}) + +vim.lsp.config('ocamllsp', { + on_attach = on_attach, + capabilities = capabilities, + cmd = { 'ocamllsp' }, + filetypes = { 'ocaml', 'reason' }, +}) + +vim.lsp.enable('ocamllsp') + +vim.lsp.config('alive', { + on_attach = on_attach, + capabilities = capabilities, + filetypes = { 'lisp' }, + cmd = { 'alive-lsp' }, +}) + +vim.lsp.enable('alive') + +vim.lsp.enable('rust_analyzer') + +vim.lsp.config("ols", { + on_attach = on_attach, + capabilities = capabilities, + init_options = { + checker_args = "-strict-style", + collections = { + { name = "shared", path = vim.fn.expand('$HOME/Odin/shared') } + }, + }, +}) + +vim.lsp.enable("ols") + +vim.lsp.config('hls', { + -- settings = { + -- haskell = { + -- cabalFormattingProvider = "cabal-fmt", + -- formattingProvider = "ormolu", + -- }, + -- }, + filetypes = { 'haskell', 'lhaskell', 'cabal' }, +}) + +vim.lsp.enable('hls') + +local servers = { + "elixir-ls", + "ada_ls", + "zls", + "bashls", + "gopls", + "clangd", + "lua_ls", + "fortls", + "prettier", + "rubyfmt", + "tailwindcss", + "cmake", + "dockerls", + "ts_ls", + "eslint", + "ruby_lsp", + "yamlls", + "yamlfix", + "yamlfmt", + "yamllint", + "erlangls", + "jsonls", +} + +for _, lsp in ipairs(servers) do + vim.lsp.config(lsp, { + on_attach = on_attach, + capabilities = capabilities + }) + vim.lsp.enable(lsp) +end + +vim.diagnostic.config({ + virtual_text = true +}) + +vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( + vim.lsp.diagnostic.on_publish_diagnostics, { + virtual_text = true + } +) + +vim.lsp.inlay_hint.enable(false) + +vim.lsp.commands["editor.action.showReferences"] = function(command, ctx) + local locations = command.arguments[3] + local client = vim.lsp.get_client_by_id(ctx.client_id) + if locations and #locations > 0 then + local items = vim.lsp.util.locations_to_items(locations, client.offset_encoding) + vim.fn.setloclist(0, {}, " ", { title = "References", items = items, context = ctx }) + vim.api.nvim_command("lopen") + end +end + + + diff --git a/nvim/after/plugin/noice.lua b/nvim/after/plugin/noice.lua new file mode 100644 index 0000000..25ae102 --- /dev/null +++ b/nvim/after/plugin/noice.lua @@ -0,0 +1,30 @@ +require("noice").setup({ + lsp = { + override = { + ["vim.lsp.util.convert_input_to_markdown_lines"] = true, + ["vim.lsp.util.stylize_markdown"] = true, + ["cmp.entry.get_documentation"] = true, + }, + progress = { + enabled = false, + format = "lsp_progress", + format_done = "lsp_progress_done", + throttle = 1000 / 30, + view = "mini", + }, + }, + views = { + mini = { + win_options = { + winblend = 0 + } + }, + }, + presets = { + bottom_search = true, + command_palette = true, + long_message_to_split = true, + inc_rename = false, + lsp_doc_border = true, + }, +}) diff --git a/nvim/after/plugin/origami.lua b/nvim/after/plugin/origami.lua new file mode 100644 index 0000000..f18f9ca --- /dev/null +++ b/nvim/after/plugin/origami.lua @@ -0,0 +1,22 @@ +-- require("origami").setup { +-- useLspFoldsWithTreesitterFallback = true, -- required for `autoFold` +-- pauseFoldsOnSearch = true, +-- foldtext = { +-- enabled = true, +-- padding = 3, +-- lineCount = { +-- template = "%d lines", -- `%d` is replaced with the number of folded lines +-- hlgroup = "Comment", +-- }, +-- diagnosticsCount = true, -- uses hlgroups and icons from `vim.diagnostic.config().signs` +-- gitsignsCount = true, -- requires `gitsigns.nvim` +-- }, +-- autoFold = { +-- enabled = false, +-- kinds = { "comment" }, ---@type lsp.FoldingRangeKind[] +-- }, +-- foldKeymaps = { +-- setup = true, -- modifies `h` and `l` +-- hOnlyOpensOnFirstColumn = false, +-- }, +-- } diff --git a/nvim/after/plugin/telescope.lua b/nvim/after/plugin/telescope.lua new file mode 100644 index 0000000..0ceff37 --- /dev/null +++ b/nvim/after/plugin/telescope.lua @@ -0,0 +1,14 @@ +require("telescope").setup { + defaults = { + file_ignore_patterns = { "yarn.lock", "node_modules/*", "_build/*", "ios/*", "android/*" }, + preview = { + treesitter = true, + }, + } +} + +local builtin = require("telescope.builtin") + +vim.keymap.set('n', '<leader>pf', builtin.find_files, {}) +vim.keymap.set('n', '<C-p>', builtin.git_files, {}) +vim.keymap.set('n', '<C-f>', builtin.live_grep, {}) diff --git a/nvim/after/plugin/tree.lua b/nvim/after/plugin/tree.lua new file mode 100644 index 0000000..555e223 --- /dev/null +++ b/nvim/after/plugin/tree.lua @@ -0,0 +1,35 @@ +require 'nvim-web-devicons'.setup { + strict = true, + override_by_extension = { + ["re"] = { + icon = "", + color = "#DC4C39", + name = "ReasonML" + }, + ["rei"] = { + icon = "", + color = "#B8383C", + name = "ReasonMLInterface" + } + }, +} + +require 'nvim-tree'.setup { + git = { + ignore = false + }, + update_focused_file = { + enable = true, + }, + view = { + width = 24, + adaptive_size = true, + float = { + quit_on_focus_loss = true, + enable = true + } + } +} + +vim.keymap.set('n', '<C-n>', vim.cmd.NvimTreeToggle) +vim.keymap.set('n', '<leader>ff', vim.cmd.NvimTreeFindFile) diff --git a/nvim/after/plugin/treesitter.lua b/nvim/after/plugin/treesitter.lua new file mode 100644 index 0000000..817febf --- /dev/null +++ b/nvim/after/plugin/treesitter.lua @@ -0,0 +1,61 @@ +require('nvim-treesitter.configs').setup { + ensure_installed = { "typescript", "cpp", "javascript", "lua", "ocaml", "go", "dockerfile", "php", "perl", "json", "yaml", "toml", "html", "css", "bash", "tsx", "python", "rust", "haskell" }, + sync_install = false, + auto_install = true, + indent = { + enable = false, + }, + highlight = { + enable = true, + additional_vim_regex_highlighting = false, + }, +} + +local parser_config = require "nvim-treesitter.parsers".get_parser_configs() +parser_config.crystal = { + install_info = { + url = "https://github.com/crystal-lang-tools/tree-sitter-crystal", + files = { "src/parser.c", "src/scanner.c" }, + branch = "main", + }, + filetype = "crystal", +} + +local list = require("nvim-treesitter.parsers").get_parser_configs() +list.reason = { + install_info = { + url = "https://github.com/reasonml-editor/tree-sitter-reason", + files = { "src/parser.c", "src/scanner.c" }, + branch = "master", + }, +} + +vim.filetype.add { + extension = { + re = "reason", + }, +} + +vim.treesitter.language.add("reason", { filetype = "reason" }) + +require('treesitter-context').setup { + enable = false +} + +local parser_config2 = require "nvim-treesitter.parsers".get_parser_configs() +parser_config2.haxe = { + install_info = { + url = "https://github.com/vantreeseba/tree-sitter-haxe", + files = { "src/parser.c", "src/scanner.c" }, + -- optional entries: + branch = "main", + }, + filetype = "haxe", +} + +vim.opt.foldmethod = "expr" +vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()" +vim.opt.foldcolumn = "0" +vim.opt.foldtext = "" +vim.opt.foldlevel = 99 +vim.opt.foldnestmax = 4 diff --git a/nvim/after/plugin/undotree.lua b/nvim/after/plugin/undotree.lua new file mode 100644 index 0000000..b6b9276 --- /dev/null +++ b/nvim/after/plugin/undotree.lua @@ -0,0 +1 @@ +vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle) diff --git a/nvim/colors/bore.vim b/nvim/colors/bore.vim new file mode 100644 index 0000000..436ffeb --- /dev/null +++ b/nvim/colors/bore.vim @@ -0,0 +1,873 @@ +" Vim Color File" +" Name: bore.vim" +" Author: Ethan Morgan (@sixfourtwelve)" +" Maintainer: https://github.com/sixfourtwelve/bore.vim" +" License: The MIT License (MIT)" + +" === Colors ===" +" --------------------------" +:let _white = '#ffffff' +:let _l_white = '#cacadd' +:let _d_white = '#c8c8db' +:let _gray_light = '#74778c' +:let _gray = '#606375' +:let _gray_dark = '#535560' +:let _semigray = '#42444b' +:let _lightblack = '#313e52' +:let _semiblack = '#262f3e' +:let _black = '#101010' + +:let _aubergine = '#FD98B9' +:let _marzipan = '#ecc48d' +:let _d_turquoise = '#7fdbca' +:let _l_sky = '#9fd4ff' +:let _sky = '#6cbeff' +:let _sap = '#ebff00' +:let _purple = '#c792ea' +:let _pink = '#f45c7f' +:let _green = '#addb67' + +" Clear any other set colors" +highlight clear + +if exists("syntax_on") + syntax reset +endif + +set t_Co=256 + +let g:colors_name="bore" + +" Not all terminals support italics properly. If yours does, opt-in." +if !exists("g:bore_terminal_italics") + let g:bore_terminal_italics = 0 +endif + +" === Functions ===" +" Returns a darkened color using given color and the percent to darken it by." +" Example: color_helper#hex_color_darken('#FFFFFF', 0.10)" +" Returns: '#E5E5E5'" + +function! s:hex_color_darken(color, percent) + let l:rgb = s:hex_color_to_rgb(a:color) + let l:rgb_darkened = [] + + for i in l:rgb + call add(l:rgb_darkened, float2nr(i * (1 - a:percent))) + endfor + + return s:rgb_color_to_hex(l:rgb_darkened) +endfunction + + +function! s:hex_color_to_rgb(hex_color) + let l:rgb = [] + + let l:red = s:hex_to_dec(strpart(a:hex_color, 1, 2)) + let l:green = s:hex_to_dec(strpart(a:hex_color, 3, 2)) + let l:blue = s:hex_to_dec(strpart(a:hex_color, 5, 2)) + let l:rgb = [l:red, l:green, l:blue] + + return l:rgb +endfunction + +function! s:hex_to_dec(arg) + return (a:arg =~? '^0x') ? a:arg + 0 : ('0x'.a:arg) + 0 +endfunction + +function! s:dec_to_hex(arg, padding) + return toupper(printf('%0' . a:padding . 'x', a:arg + 0)) +endfunction + +function! s:rgb_color_to_hex(rgb_color) + let l:hex_color = '#' + let l:hex_color .= s:dec_to_hex(a:rgb_color[0], 2) " red" + let l:hex_color .= s:dec_to_hex(a:rgb_color[1], 2) " green" + let l:hex_color .= s:dec_to_hex(a:rgb_color[2], 2) " blue" + + return l:hex_color +endfunction + +let colorgroup = {} +let colorgroup['Normal'] = {"GUIFG": _l_white, "GUIBG": _black} +let colorgroup['NormalNC'] = {"GUIFG": _l_white, "GUIBG": _black} +let colorgroup['NormalSB'] = {"GUIFG": _d_white, "GUIBG": _semiblack} +let colorgroup['NormalFloat'] = {"GUIFG": _l_white, "GUIBG": _black} +let colorgroup['FloatBorder'] = {"GUIFG": _lightblack} +let colorgroup['Darker'] = {"GUIFG": _gray, "GUIBG": _black} +let colorgroup['ColorColumn'] = {"GUIFG": _black, "GUIBG": _aubergine} +"let colorgroup['Conceal'] = {"GUIFG": _sap, "GUI": "bold"} +let colorgroup['Conceal'] = {"GUIFG": _sap } +let colorgroup['Cursor'] = {"GUIFG": _black, "GUIBG": _aubergine} +let colorgroup['iCursor'] = {"GUIFG": _black, "GUIBG": _marzipan} +let colorgroup['CursorLine'] = {"GUIFG": "NONE", "GUIBG": _semiblack} +let colorgroup['CursorLineNr'] = {"GUIFG": _gray_dark, "GUIBG": _black} +let colorgroup['Directory'] = {"GUIFG": _marzipan, "GUIBG": _black} +let colorgroup['ErrorMsg'] = {"GUIFG": _black, "GUIBG": _aubergine} +let colorgroup['FoldColumn'] = { "GUIBG": _black} +let colorgroup['Folded'] = {"GUIFG": _l_white, "GUIBG": _semiblack} +let colorgroup['LineNr'] = {"GUIFG": _lightblack, "GUIBG": _black} +if &background == "light" + let colorgroup['LineNr'] = {"GUIFG": _gray, "GUIBG": _black} +endif +let colorgroup['MatchParen'] = {"GUIFG": _black, "GUIBG": _l_white} +let colorgroup['ModeMsg'] = {"GUIFG": _black, "GUIBG": _marzipan} +let colorgroup['Whitespace'] = {"GUIFG": _semiblack, "CTERMFG":235} + +"Popup menu: normal item" +let colorgroup['Pmenu'] = {"GUIFG": _l_white, "GUIBG": _semiblack} +"Popup menu: selected item" +let colorgroup['PmenuSel'] = {"GUIBG": _gray_dark} +"Popup menu: scrollbar" +let colorgroup['PmenuSbar'] = {"GUIBG": _black} +"Thumb of the scrollbar." +let colorgroup['PmenuThumb'] = {"GUIBG": _black} + +let colorgroup['Search'] = {"GUIBG": _gray_dark, "GUI": "underline"} +let colorgroup['SignColumn'] = {"GUIBG": _black} +let colorgroup['StatusLine'] = {"GUIFG": _gray, "GUIBG": _semiblack} +let colorgroup['StatusLineNC'] = {"GUIFG": _gray_dark, "GUIBG": _semiblack} +let colorgroup['Tabline'] = {"GUIFG": _gray, "GUIBG": _semiblack} +let colorgroup['TablineFill'] = {"GUIBG": _black} +let colorgroup['TabLineSel'] = {"GUIFG": _gray_dark, "GUIBG": _black} +"let colorgroup['Title'] = {"GUIFG": _marzipan, "GUI": "bold"} +let colorgroup['Title'] = {"GUIFG": _marzipan} +let colorgroup['Todo'] = {"GUIFG": _black, "GUIBG": _sky, "GUI": "italic"} +let colorgroup['VertSplit'] = {"GUIFG": _lightblack} +let colorgroup['Visual'] = {"GUIBG": _gray_dark} +let colorgroup['WarningMsg'] = {"GUIFG": _pink, "GUIBG": _black} + +" === Other highlighting groups ===" +"let colorgroup['Access'] = {"GUIFG": _marzipan, "GUI": "bold"} +let colorgroup['Access'] = {"GUIFG": _marzipan } +let colorgroup['Character'] = {"GUIFG": _sky} +let colorgroup['Define'] = {"GUIFG": _gray_light} +let colorgroup['Function'] = {"GUIFG": _d_turquoise} +let colorgroup['Label'] = {"GUIFG": _d_turquoise} +let colorgroup['Module'] = {"GUIFG": _aubergine, "GUI": "underline"} +let colorgroup['NonText'] = {"GUIFG": _gray_dark} +let colorgroup['String'] = {"GUIFG": _marzipan} +let colorgroup['Structure'] = {"GUIFG": _white} +let colorgroup['Object'] = {"GUIFG": _gray} +let colorgroup['Xml'] = {"GUIFG": _purple} +let colorgroup['Punctuation'] = {"GUIFG": _purple} +let colorgroup['Attr'] = {"GUIFG": _d_turquoise} + +" === Syntax ===" +let colorgroup['Comment'] = {"GUIFG": _gray_light, "CTERMFG":244, "CTERMBG":"NONE", "GUIBG": "NONE", "GUISP":"NONE", "CTERM":"NONE", "GUI":"NONE"} +"let colorgroup['Constant'] = {"GUIFG": _l_sky, "GUI": "bold"} +let colorgroup['Constant'] = {"GUIFG": _l_sky} +let colorgroup['Identifier'] = {"GUIFG": _aubergine} +let colorgroup['Operator'] = {"GUIFG": _gray_light} +let colorgroup['Statement'] = {"GUIFG": _l_sky} +let colorgroup['PreProc'] = {"GUIFG": _white} +let colorgroup['Type'] = {"GUIFG": _white} +let colorgroup['Special'] = {"GUIFG": _l_sky} +let colorgroup['Underlined'] = {"GUIFG": _marzipan, "GUI": "underline"} +let colorgroup['Error'] = {"GUIFG": _black, "GUIBG": _aubergine} +let colorgroup['MarkdownH1'] = {"GUIFG": _sky, "GUI": "bold"} +let colorgroup['MarkdownH2'] = {"GUIFG": _l_sky, "GUI": "bold"} +let colorgroup['MarkdownLinkText'] = {"GUIFG": _l_sky, "GUI": "underline"} + +" === Own highlighting groups ===" +let colorgroup['UnderlinedBold'] = {"GUIFG": _marzipan, "GUI": "underline,bold"} + +" === GitGutter highlighting groups ===" +let colorgroup['GitGutterAdd'] = {"GUIFG": _green, "GUIBG": _black} +let colorgroup['GitGutterChange'] = {"GUIFG": _sap, "GUIBG": _black} +let colorgroup['GitGutterDelete'] = {"GUIFG": _pink, "GUIBG": _black} +let colorgroup['GitGutterChangeDelete'] = {"GUIFG": _sap, "GUIBG": _black} + +" === Git highlighting groups ===" +let colorgroup['DiffAdd'] = {"GUIFG": _green, "GUIBG": _black, "GUI":"NONE"} +let colorgroup['DiffChange'] = {"GUIFG": _white, "GUIBG": _black, "GUI":"NONE"} +let colorgroup['DiffDelete'] = {"GUIFG": _pink, "GUIBG": _black, "GUI":"NONE"} +let colorgroup['DiffText'] = {"GUIFG": _pink, "GUIBG": _black, "GUI":"NONE"} + +" === NvimTree highlighting groups ===" +let colorgroup['NvimTreeNormal'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeNormalNC'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeRootFolder'] = {"GUIFG": _gray_light, "GUIBG": _black, "GUI":"bold"} +let colorgroup['NvimTreeFolderName'] = {"GUIFG": _gray_light, "GUIBG": _black } +let colorgroup['NvimTreeOpenedFolderName'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeGitDirty'] = {"GUIFG": _marzipan, "GUIBG": _black } +let colorgroup['NvimTreeGitNew'] = {"GUIFG": _green, "GUIBG": _black } +let colorgroup['NvimTreeGitDeleted'] = {"GUIFG": _pink, "GUIBG": _black } +let colorgroup['NvimTreeSpecialFile'] = {"GUIFG": _d_turquoise, "GUIBG": _black, "GUI":"underline"} +let colorgroup['NvimTreeIndentMarker'] = {"GUIFG": _lightblack, "GUIBG": _black} +let colorgroup['NvimTreeImageFile'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeSymlink'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeGitStaged'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeGitMerge'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['NvimTreeGitRenamed'] = {"GUIFG": _d_white, "GUIBG": _black } + +" === COMPLETION highlighting groups ===" +let colorgroup['CmpDocumentation'] = {"GUIFG": _d_white, "GUIBG": _black, "GUI":"NONE" } +let colorgroup['CmpDocumentationBorder'] = {"GUIFG": _d_white, "GUIBG": _d_white, "GUI":"NONE" } +"uncompleted item that may be good for completion" +let colorgroup['CmpItemAbbr'] = {"GUIFG": _d_white, "GUIBG": _black, "GUI":"NONE" } +let colorgroup['CmpItemAbbrDeprecated'] = {"GUIFG": _d_white, "GUIBG": _black, "GUI":"NONE" } +"matched item (what you typed until present)" +let colorgroup['CmpItemAbbrMatch'] = {"GUIFG": _aubergine, "GUIBG": _black, "GUI":"NONE" } +"fuzzy match for what you typed" +let colorgroup['CmpItemAbbrMatchFuzzy'] = {"GUIFG": _black, "GUIBG": _black, "GUI":"NONE" } +let colorgroup['CmpItemKind'] = {"GUIFG": _aubergine, "GUIBG": _black, "GUI":"NONE" } +let colorgroup['CmpItemMenu'] = {"GUIFG": _d_white, "GUIBG": _black, "GUI":"NONE" } + +let colorgroup['LspDiagnosticsDefaultError'] = {"GUIFG": _pink, "GUIBG": _black } +let colorgroup['LspDiagnosticsDefaultWarning'] = {"GUIFG": _marzipan, "GUIBG": _black } +let colorgroup['LspDiagnosticsDefaultHint'] = {"GUIFG": _d_white, "GUIBG": _black } + +let colorgroup['LspFloatWinNormal'] = {"GUIFG": _d_white, "GUIBG": _black } +let colorgroup['LspFloatWinBorder'] = {"GUIFG": _black, "GUIBG": _black } +let colorgroup['LspFloatWinBorder'] = {"GUIFG": _black, "GUIBG": _black } +let colorgroup['LspFloatWinBorder'] = {"GUIFG": _black, "GUIBG": _black } + + let colorgroup['BufferLineIndicatorSelected'] = {"GUIFG": _l_sky} + let colorgroup['BufferLineFill'] = {"GUIBG": _pink} + +"used for highlighting the current line in terminal-debug" +let colorgroup['debugPC'] = {"GUIBG": _black} +"used for breakpoint colors in terminal-debug" +let colorgroup['debugBreakpoint'] = {"GUIBG": _semiblack} + +"These groups are for the native LSP client. Some other LSP clients may" +"use these groups, or use their own. Consult your LSP client's" +"documentation." + +"used for highlighting 'text' references" +let colorgroup['LspReferenceText'] = {"GUIBG": _gray_light } +"used for highlighting 'read' references" +let colorgroup['LspReferenceRead'] = {"GUIBG": _gray_light } +"used for highlighting 'write' references" +let colorgroup['LspReferenceWrite'] = {"GUIBG": _gray_light } + +let colorgroup['DiagnosticError'] = {"GUIFG": _pink, "GUIBG": _black} +let colorgroup['DiagnosticWarn'] = {"GUIFG": _marzipan, "GUIBG": _black } +let colorgroup['DiagnosticInfo'] = {"GUIFG": _sky, "GUIBG": _black } +let colorgroup['DiagnosticHint'] = {"GUIFG": _d_turquoise, "GUIBG": _black } + +let colorgroup['DiagnosticVirtualTextError'] = {"GUIFG": _pink, "GUIBG": _black } +let colorgroup['DiagnosticVirtualTextWarn'] = {"GUIFG": _marzipan, "GUIBG": _black } +let colorgroup['DiagnosticVirtualTextInfo'] = {"GUIFG": _sky, "GUIBG": _black } +let colorgroup['DiagnosticVirtualTextHint'] = {"GUIFG": _d_turquoise, "GUIBG": _black } + +let colorgroup['DiagnosticUnderlineError'] = {"style": "undercurl", "sp": _pink } +let colorgroup['DiagnosticUnderlineWarn'] = {"style": "undercurl", "sp": _marzipan } +let colorgroup['DiagnosticUnderlineInfo'] = {"style": "undercurl", "sp": _sky } +let colorgroup['DiagnosticUnderlineHint'] = {"style": "undercurl", "sp": _d_turquoise } + +" === Highlighting Links ===" +hi link Boolean Number +hi link Class Constant +hi link Delimiter Define +hi link Debug Special +hi link Conditional Define +hi link Exception PreProc +hi link Float Number +hi link Include PreProc +hi link Macro PreProc +hi link Number Identifier +hi link Operator Identifier +hi link PreCondit PreProc +hi link Repeat Statement +hi link SpecialChar Special +hi link SpecialComment Special +hi link SpecialKey Define +hi link StorageClass Identifier +hi link Symbol PreProc +hi link Tag Normal +hi link Typedef Type + +" === Highlighting Plugins ===" + +" CtrlP " +hi link CtrlPMatch Character + +" Git commit " +hi link gitcommitBranch Constant +hi link gitcommitSelectedFile Statement +hi link gitcommitDiscardedFile Structure +hi link gitcommitUntrackedFile Structure +hi link gitcommitSummary String + +" GitGutter " +hi link GitGutterAdd GitGutterAdd +hi link GitGutterChange GitGutterChange +hi link GitGutterDelete GitGutterDelete +hi link GitGutterChangeDelete GitGutterChangeDelete + +" Signify " +hi link SignifySignAdd GitGutterAdd +hi link SignifySignChange GitGutterChange +hi link SignifySignChangeDelete GitGutterChangeDelete +hi link SignifySignDelete GitGutterDelete +hi link SignifySignDeleteFirstLine SignifySignDelete + +" NERDtree " +hi link NerdTreeCWD Character +hi link NerdTreeHelpKey Character +hi link NerdTreeHelpTitle Statement +hi link NerdTreeOpenable NerdTreeCWD +hi link NerdTreeClosable Statement +hi link NerdTreeDir Normal +hi link NerdTreeDirSlash NerdTreeDir + +" PlainTasks (.todo) " +hi link ptCompleteTask Number +hi link ptContext Type +hi link ptSection Title +hi link ptTask Normal + +" VimPlug " +hi link plugName Character + +" Startify " +hi link StartifyNumber Character +hi link StartifyBracket StartifyNumber +hi link StartifySection Title +hi link StartifyPath Define +hi link StartifySlash StartifyPath +hi link StartifyFile Normal + +" === Highlighting Languages/Tools ===" + +" highlight clear ALEErrorSign " +if exists('g:ale_enabled') + hi! link ALEError WarningMsg + hi! link ALEWarning WarningMsg + hi! link ALEInfo WarningMsg + + hi! link ALEErrorSign WarningMsg + hi! link ALEWarningSign WarningMsg + hi! link ALEInfoSign WarningMsg + hi! link ALEVirtualTextWarning WarningMsg + hi! link ALEVirtualTextError WarningMsg +endif + +" Apache " +hi link apacheDeclaration PreProc + +" CoffeeScript " +hi link coffeeExtendedOp Character +hi link coffeeObject Statement +hi link coffeeObjAssign Character +hi link coffeeParen Character + +" CSS " +hi link cssAttr Identifier +hi link cssColor Normal +hi link cssClassName String +hi link cssProp Function +hi link cssPseudoClass Character +hi link cssPseudoClassId Character +hi link cssSelectorOp Character +hi link cssTagName Identifier +hi link cssDefinition Identifier +hi link cssNoise Punctuation +hi link cssBraces Punctuation +hi link cssIdentifier Punctuation +hi link cssIncludeKeyword Punctuation +hi link cssUnitDecorators String + +" GraphQL " +hi link graphqlName Function +hi link graphqlString Comment + +" HAML " +hi link hamlTag Character + +" HTML " +"hi link javaScript Normal" +hi link htmlTag Label +hi link htmlEndTag Label +hi link htmlTagName Label +hi link htmlScriptTag Label +hi link htmlArg Attr +hi link htmlTitle Normal +hi link htmlH1 Normal +hi link htmlH2 htmlH1 +hi link htmlH3 htmlH1 +hi link htmlH4 htmlH1 +hi link htmlH5 htmlH1 +hi link htmlH6 htmlH1 + +" JavaScript " +hi link javascriptFuncArg Character +hi link javascriptFuncComma Punctuation +hi link javascriptFuncDef Statement +hi link javascriptFuncKeyword Statement +hi link javascriptOpSymbols Type +hi link javascriptParens Punctuation +hi link javascriptEndcolons Character +hi link jsArrowFuncArgs Normal +hi link jsArrowFunction Identifier +hi link jsBraces Punctuation +hi link jsBrackets Punctuation +hi link jsClassBraces Punctuation +hi link jsClassDefinition Class +hi link jsClassFuncName Function +hi link jsClassKeyword Identifier +hi link jsClassProperty Normal +hi link jsClassBlock Identifier +hi link jsDecorator Normal +hi link jsDestructuringBraces Punctuation +hi link jsExtendsKeyword jsClassKeyword +hi link jsExport Identifier +hi link jsImport Module +hi link jsFrom Identifier +hi link jsFuncBraces Punctuation +hi link jsFunction Identifier +hi link jsFuncCall Function +hi link jsFuncParens Punctuation +hi link jsFunctionKey Function +hi link jsGlobalObjects Identifier +hi link jsGlobalNodeObjects Identifier +hi link jsIfElseBraces Punctuation +hi link jsModuleBraces Normal +hi link jsModuleKeyword Tag +hi link jsNoise Delimiter +hi link jsObjectBraces Punctuation +hi link jsObjectKey Normal +hi link jsObjectValue PreProc +hi link jsObjectProp Function +hi link jsObjectColon Punctuation +hi link jsObjectShorthandProp Punctuation +hi link jsParens Punctuation +hi link jsReturn Identifier +hi link jsSpreadOperator Identifier +hi link jsThis Identifier + +" JSON " +hi link jsonKeyword Attr +hi link jsonKeywordMatch Punctuation +hi link jsonQuote Attr +hi link jsonNoise Punctuation +hi link jsonString Punctuation +hi link jsonBraces Normal +hi link jsonBoolean WarningMsg + +hi link jsonNumError Comment +hi link jsonCommentError Comment +hi link jsonSemicolonError Comment +hi link jsonTrailingCommaError Comment +hi link jsonMissingCommaError Comment +hi link jsonStringSQError Comment +hi link jsonNoQuotesError Punctuation +hi link jsonTripleQuotesError Punctuation + +" hi link texSpecialChar Special " +" Markdown " +hi link markdownHeadingDelimiter Identifier +hi link markdownCode Identifier +hi link markdownIndentCode Identifier +hi link markdownLineBreak Statement +hi link markdownH1 MarkdownH1 +hi link markdownH2 MarkdownH2 +hi link markdownLinkText markdownLinkText + +" MatchTagAlways " +hi link MatchTag Identifier + +" PHP " +hi link phpRegion Comment +hi link phpConstant WarningMsg +hi link phpCoreConstant WarningMsg +hi link phpComment Comment +hi link phpDocTags WarningMsg +hi link phpDocCustomTags WarningMsg +hi link phpException WarningMsg +hi link phpBoolean WarningMsg +hi link phpClass String +hi link phpStaticClasses String +hi link phpClassDelimiter WarningMsg +hi link phpFunction Label "Custom functions" +hi link phpFunctions Character "Built-in functions" +hi link phpSuperglobals Normal "Global functions" +hi link phpMagicConstants Normal "__CLASS__" +hi link phpServerVars WarningMsg +hi link phpMethods WarningMsg +hi link phpMethodsVar Label +hi link phpSplatOperator Label +hi link phpStringDelimiter String "String Quotes" +hi link phpStructure Label +hi link phpStringSingle String +hi link phpStringDouble Identifier +hi link phpBacktick Identifier +hi link phpNumber Identifier +hi link phpFloat WarningMsg +hi link phpBaselib Identifier +hi link phpRepeat WarningMsg +hi link phpStatement Identifier +hi link phpKeyword Identifier "function" +hi link phpSCKeyword Identifier +hi link phpFCKeyword Identifier +hi link phpYieldFromKeyword Identifier +hi link phpDocNamespaceSeparator WarningMsg +hi link phpClassNamespaceSeparator WarningMsg +hi link phpUseNamespaceSeparator WarningMsg +hi link phpType Identifier "public, privat, protected" +hi link phpInclude Identifier +hi link phpDefine WarningMsg +hi link phpBackslashSequences WarningMsg +hi link phpBackslashDoubleQuote WarningMsg +hi link phpBackslashSingleQuote WarningMsg +hi link phpParent Punctuation +hi link phpBrackets Punctuation +hi link phpIdentifierConst WarningMsg +hi link phpParentError WarningMsg +hi link phpOctalError WarningMsg +hi link phpInterpSimpleError WarningMsg +hi link phpInterpBogusDollarCurley WarningMsg +hi link phpInterpDollarCurly1 WarningMsg +hi link phpInterpDollarCurly2 WarningMsg +hi link phpInterpSimpleBracketsInner WarningMsg +hi link phpInterpSimpleCurly WarningMsg +hi link phpInterpVarname WarningMsg +hi link phpIntVar Punctuation +hi link phpVarSelector PreProc "$ sign" +hi link phpMemberSelector Identifier "->" +hi link phpIdentifier PreProc +hi link phpTodo Identifier +hi link phpDocTodo Identifier +hi link phpOperator Identifier "+, -, x, *" +hi link phpRelation WarningMsg +hi link phpIdentifierSimply WarningMsg + +"Pug" +hi link pugHtmlConditionalComment WarningMsg + +" Python " +hi link pythonMagic Identifier +hi link pythonBuiltin Identifier +hi link pythonStatement Identifier +hi link pythonOperator Punctuation +hi link pythonFunction Character +hi link pythonString Label +hi link pythonImport Identifier +hi link pythonDef Punctuation +hi link pythonAs Punctuation +hi link pythonDocstring Punctuation +hi link pythonSpecial Punctuation +hi link pythonDecorator Punctuation +hi link pythonExceptions Punctuation + +" Ruby " +hi link rubyAccess Access +hi link rubyBlockParameterList PreProc +hi link rubyCallback Character +hi link rubyClass Label +hi link rubyClassName UnderlinedBold +hi link rubyControl Statement +hi link rubyConstant Constant +hi link rubyEntity Character +hi link rubyInclude Include +hi link rubyInterpolation Identifier +hi link rubyMacro Character +hi link rubyModule Module +hi link rubyStringDelimiter rubyString +hi link rubySymbol Symbol +hi link rubyRoute Type + +" SASS " +hi link sassClassChar Type +hi link sassClass Type +hi link sassIdChar Type +hi link sassId Type +hi link sassProperty Type +hi link scssProperty Identifier +hi link scssMixin Identifier +hi link scssVariable Attr +hi link scssInclude Identifier +hi link scssExtend Identifier +hi link scssFunctionDefinition Identifier +hi link scssReturn Identifier +hi link scssEachKeyword Identifier +hi link scssForKeyword Identifier +hi link scssImport Identifier +hi link scssSemicolon Punctuation +hi link scssAtRoot Identifier +hi link scssSelectorName String + +" Slim " +hi link slimBegin Normal +hi link slimClass Character +hi link slimClassChar Character +hi link slimId Character +hi link slimIdChar Character +hi link rubyKeyword PreProc +hi link slimText Normal + +" TypeScript " +hi link typescriptBOM Normal +hi link typescriptBraces Punctuation +hi link typescriptParens Punctuation +hi link typescriptTypeReference String +hi link typescriptAsyncFuncKeyword Identifier +hi link typescriptAsyncFunc Identifier +hi link typescriptArrowFunc Identifier +hi link typescriptFuncKeyword Identifier +hi link typescriptArrowFuncArg Identifier +hi link typescriptFuncName Function +hi link typescriptFuncArg Identifier +hi link typescriptFuncComma Identifier +hi link typescriptFuncTypeArrow String +hi link typescriptTemplate Attr +hi link typescriptTemplateSB Attr +hi link typescriptObjectLabel Normal +hi link typescriptDestructureLabel Attr +hi link typescriptObjectAsyncKeyword Attr +hi link typescriptInterfaceKeyword Identifier +hi link typescriptInterfaceExtends Identifier +hi link typescriptInterfaceName String +hi link typescriptImport Identifier +hi link typescriptImportType Normal +hi link typescriptExport Identifier +hi link typescriptExportType Normal +"Types=> key:value" +hi link typescriptMember Normal +hi link typescriptPredefinedType Attr +hi link typescriptStringMember Normal +hi link typescriptString String +hi link typescriptConditional Identifier +hi link typescriptConditionalElse Identifier +"default" +hi link typescriptCase Identifier +hi link typescriptDefault Identifier +hi link typescriptMethodAccessor String +hi link typescriptKeywordOp String +"return" +hi link typescriptStatementKeyword Identifier +hi link typescriptNull Attr +hi link typescriptBoolean Attr +hi link typescriptConstructorType Attr +hi link typescriptTypeQuery Attr +hi link typescriptAccessibilityModifier Attr +hi link typescriptOptionalMark Attr +hi link typescriptReadonlyModifier Attr +hi link typescriptTypeParameter Attr + +" VimL " +hi link vimCmdSep Character + +" YAML " +hi link yamlBlockMappingKey Punctuation +hi link yamlDocumentStart Punctuation +hi link yamlKeyValueDelimiter Punctuation +hi link yamlPlainScalar Punctuation + +" XML " +" hi link xmlAttrib Normal" +hi link xmlTag Xml +hi link xmlTagName Identifier +hi link xmlEndTag Tag +hi link xmlAttrib Attr + +" === Expand colorgroups === " + +let s:colors = {} +" http://choorucode.com/2011/07/29/vim-chart-of-color-names/" + +let valid_cterm_colors = + \ [ + \ 'Black', 'DarkBlue', 'DarkGreen', 'DarkCyan', + \ 'DarkRed', 'DarkMagenta', 'Brown', 'DarkYellow', + \ 'LightGray', 'LightGrey', 'Gray', 'Grey', + \ 'DarkGray', 'DarkGrey', 'Blue', 'LightBlue', + \ 'Green', 'LightGreen', 'Cyan', 'LightCyan', + \ 'Red', 'LightRed', 'Magenta', 'LightMagenta', + \ 'Yellow', 'LightYellow', 'White', + \ ] +for key in keys(colorgroup) + let s:colors = colorgroup[key] + if has_key(s:colors, 'TERM') + let term = s:colors['TERM'] + else + let term = 'NONE' + endif + if has_key(s:colors, 'GUI') + let gui = s:colors['GUI'] + else + let gui='NONE' + endif + if has_key(s:colors, 'GUIFG') + let guifg = s:colors['GUIFG'] + else + let guifg='NONE' + endif + if has_key(s:colors, 'GUIBG') + let guibg = s:colors['GUIBG'] + else + let guibg='NONE' + endif + if g:bore_terminal_italics == 0 + if has_key(s:colors, 'CTERM') && s:colors["CTERM"] == "italic" + unlet a:colors.CTERM + endif + if has_key(s:colors, "GUI") && s:colors["GUI"] == "italic" + unlet s:colors.GUI + endif + endif + if has_key(s:colors, 'CTERM') + let cterm = s:colors['CTERM'] + else + let cterm=gui + endif + if has_key(s:colors, 'CTERMFG') + let ctermfg = s:colors['CTERMFG'] + else + if index(valid_cterm_colors, guifg) != -1 + let ctermfg=guifg + else + let ctermfg='Blue' + endif + endif + if has_key(s:colors, 'CTERMBG') + let ctermbg = s:colors['CTERMBG'] + else + if index(valid_cterm_colors, guibg) != -1 + let ctermbg=guibg + else + let ctermbg='NONE' + endif + endif + if has_key(s:colors, 'GUISP') + let guisp = s:colors['GUISP'] + else + let guisp='NONE' + endif + if key =~ '^\k*$' + execute "hi ".key." term=".term." cterm=".cterm." gui=".gui." ctermfg=".ctermfg." guifg=".guifg." ctermbg=".ctermbg." guibg=".guibg." guisp=".guisp + endif +endfor + +hi DiffAdd ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi DiffChange ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi DiffDelete ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi DiffText ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi IncSearch ctermbg=8 ctermfg=NONE cterm=NONE guibg=#272727 guifg=NONE gui=NONE +hi Search ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi Directory ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#808080 gui=NONE +hi MatchParen ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi SpellBad ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE guisp=#b3646e +hi SpellCap ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE guisp=#7fa7c9 +hi SpellLocal ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE guisp=#a2a6d4 +hi SpellRare ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE guisp=#91cecf +hi ColorColumn ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi SignColumn ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi ErrorMsg ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi ModeMsg ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi MoreMsg ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi Question ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi Cursor ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi CursorColumn ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi QuickFixLine ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi Conceal ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi ToolbarLine ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi ToolbarButton ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi debugPC ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi debugBreakpoint ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi VimHiGroup ctermbg=NONE ctermfg=12 cterm=NONE guibg=NONE guifg=#7fa7c9 gui=NONE +hi VimVar ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#e0e0e0 gui=NONE +hi VimAutoEvent ctermbg=NONE ctermfg=12 cterm=NONE guibg=NONE guifg=#7fa7c9 gui=NONE +hi VimFunction ctermbg=NONE ctermfg=13 cterm=NONE guibg=NONE guifg=#a2a6d4 gui=NONE +hi vimVar ctermbg=NONE ctermfg=13 cterm=NONE guibg=NONE guifg=#a2a6d4 gui=NONE +hi vimMapMod ctermbg=NONE ctermfg=12 cterm=NONE guibg=NONE guifg=#7fa7c9 gui=NONE +hi vimMapModKey ctermbg=NONE ctermfg=12 cterm=NONE guibg=NONE guifg=#7fa7c9 gui=NONE +hi vimBracket ctermbg=NONE ctermfg=13 cterm=NONE guibg=NONE guifg=#a2a6d4 gui=NONE +hi vimNotation ctermbg=NONE ctermfg=13 cterm=NONE guibg=NONE guifg=#a2a6d4 gui=NONE +hi StatusText ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#e0e0e0 gui=NONE +hi StatusBackground ctermbg=NONE ctermfg=0 cterm=NONE guibg=NONE guifg=#0d0d0d gui=NONE +hi StatusFileName ctermbg=NONE ctermfg=12 cterm=NONE guibg=NONE guifg=#7fa7c9 gui=NONE +hi StatusFileType ctermbg=NONE ctermfg=10 cterm=NONE guibg=NONE guifg=#a0bc8d gui=NONE +hi StatusFileModified ctermbg=NONE ctermfg=11 cterm=NONE guibg=NONE guifg=#c9b16f gui=NONE +hi StatusFileReadonly ctermbg=NONE ctermfg=11 cterm=NONE guibg=NONE guifg=#c9b16f gui=NONE +hi StatusFileLocation ctermbg=NONE ctermfg=13 cterm=NONE guibg=NONE guifg=#a2a6d4 gui=NONE +hi StatusFileEncoding ctermbg=NONE ctermfg=14 cterm=NONE guibg=NONE guifg=#91cecf gui=NONE +hi StatusWarning ctermbg=NONE ctermfg=11 cterm=NONE guibg=NONE guifg=#c9b16f gui=NONE +hi StatusError ctermbg=NONE ctermfg=9 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi TabLineTitle ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#E9E9E9 gui=NONE +hi TabLineTitleActive ctermbg=NONE ctermfg=12 cterm=NONE guibg=NONE guifg=#FFFFFF gui=NONE +hi SignifySignAdd ctermbg=NONE ctermfg=10 cterm=NONE guibg=NONE guifg=#a0bc8d gui=NONE +hi SignifySignDelete ctermbg=NONE ctermfg=9 cterm=NONE guibg=NONE guifg=#b3646e gui=NONE +hi SignifySignChange ctermbg=NONE ctermfg=11 cterm=NONE guibg=NONE guifg=#c9b16f gui=NONE + +" hi CocExplorerGitPathChange ctermbg=NONE ctermfg=10 cterm=NONE guibg=NONE guifg=#a0bc8d gui=NONE +" hi CocExplorerGitContentChange ctermbg=NONE ctermfg=11 cterm=NONE guibg=NONE guifg=#c9b16f gui=NONE + +" hi CocErrorSign ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#d0d0d0 gui=NONE +" hi CocInfoSign ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#c9b16f gui=NONE +" hi CocWarningSign ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#c9b16f gui=NONE + +" hi CocErrorFloat ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#b3646e gui=NONE +" hi CocInfoFloat ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#d0d0d0 gui=NONE +" hi CocWarningFloat ctermbg=NONE ctermfg=8 cterm=NONE guibg=#0a0a0a guifg=#c9b16f gui=NONE + +hi Pmenu ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#808080 gui=NONE +hi PmenuSbar ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi PmenuSel ctermbg=8 ctermfg=15 cterm=NONE guibg=#202020 guifg=#d0d0d0 gui=NONE +hi PmenuThumb ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE + +hi StatusLine ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#808080 gui=NONE +hi StatusLineNC ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#505050 gui=NONE +hi VertSplit ctermbg=NONE ctermfg=8 cterm=NONE guibg=NONE guifg=#272727 gui=NONE +hi TabLine ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#202020 gui=NONE +hi TabLineFill ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE +hi TabLineSel ctermbg=8 ctermfg=15 cterm=NONE guibg=NONE guifg=#d0d0d0 gui=NONE + +" Treesitter specific highlighting +hi @type guifg=#ffffff gui=NONE cterm=NONE +hi @type.builtin guifg=#ffffff gui=NONE cterm=NONE +hi @type.qualifier guifg=#ffffff gui=NONE cterm=NONE +hi @type.definition guifg=#ffffff gui=NONE cterm=NONE + +hi link @parameter _pink +hi link @parameter.builtin _pink +hi link @variable.argument _pink +hi link @lsp.type.parameter _pink + +hi @tag guifg=#6cbeff gui=NONE cterm=NONE +hi @tag.builtin guifg=#FD98B9 gui=NONE cterm=NONE +hi @tag.attribute guifg=#7fdbca gui=NONE cterm=NONE +"hi @module guifg=#6cbeff gui=NONE cterm=NONE +hi @module guifg=#75778C gui=NONE cterm=NONE +"hi @module guifg=#3E3F4A gui=NONE cterm=NONE +"hi @module guifg=#FD98B9 gui=NONE cterm=NONE + +" #3E3F4A to replace constants and others +hi @constant guifg=#7fdbca gui=NONE cterm=NONE +hi link @variable.parameter NONE +hi @variable.parameter guifg=#FD98B9 gui=NONE cterm=NONE +hi @variable guifg=#FD98B9 gui=NONE cterm=NONE +hi @function.call guifg=#7fdbca gui=NONE cterm=NONE +hi @function.builtin guifg=#7fdbca gui=NONE cterm=NONE +hi @function.method.call guifg=#7fdbca gui=NONE cterm=NONE +hi @variable.member guifg=#7fdbca gui=NONE cterm=NONE +hi link @variable.parameter Identifier +hi link @variable.parameter _pink +hi @keyword.modifier guifg=#3E3F4A gui=NONE cterm=NONE +hi @keyword.operator guifg=#3E3F4A gui=NONE cterm=NONE +hi @constructor guifg=#7fdbca gui=NONE cterm=NONE +hi @property guifg=#7fdbca gui=NONE cterm=NONE +hi @boolean guifg=#6cbeff gui=NONE cterm=NONE +hi @punctuation.bracket guifg=#3E3F4A gui=NONE cterm=NONE +hi @punctuation.delimiter guifg=#3E3F4A gui=NONE cterm=NONE +hi @lispList guifg=#E3F4A gui=NONE cterm=NONE +hi @lispParen guifg=#3E3F4A gui=NONE cterm=NONE +hi @keyword.directive guifg=#3E3F4A gui=NONE cterm=NONE + +let colorgroup['@variable.parameter'] = {"GUIFG": _pink} +let colorgroup['@parameter'] = {"GUIFG": _pink} +let colorgroup['@lsp.type.parameter'] = {"GUIFG": _pink} +let colorgroup['Structure'] = {"GUIFG": _white} +let colorgroup['@type'] = {"GUIFG": _white} +let colorgroup['@lispList'] = {"GUIFG": '#75778C'} +let colorgroup['@lispParen'] = {"GUIFG": '#75778C'} +highlight @keyword.modifier guifg=#3E3F4A +highlight @punctuation.special guifg=#3E3F4A +hi @attribute guifg=#3E3F4A gui=NONE cterm=NONE + + +" Must appear at the end of the file to work around this oddity: +" https://groups.google.com/forum/#!msg/vim_dev/afPqwAFNdrU/nqh6tOM87QUJ +set background=dark diff --git a/nvim/colors/minimal-dark.vim b/nvim/colors/minimal-dark.vim new file mode 100644 index 0000000..f55f689 --- /dev/null +++ b/nvim/colors/minimal-dark.vim @@ -0,0 +1,110 @@ +set background=dark +highlight clear + +if exists("syntax_on") + syntax reset +endif + +let g:colors_name = "minimal-dark" + +" Core UI highlight groups +hi! StatusLine ctermfg=black ctermbg=NONE guifg=#000000 guibg=NONE +hi! StatusLineNC ctermfg=black ctermbg=NONE guifg=#000000 guibg=NONE +hi! Normal ctermbg=NONE guibg=NONE +hi! Special ctermfg=cyan guifg=#00ffff +hi! LineNr ctermfg=black ctermbg=NONE guifg=#000000 guibg=NONE +hi! SpecialKey ctermfg=black ctermbg=NONE guifg=#000000 guibg=NONE +hi! ModeMsg ctermfg=black ctermbg=NONE guifg=#000000 guibg=NONE gui=NONE +hi! MoreMsg ctermfg=black ctermbg=NONE guifg=#000000 guibg=NONE +hi! NonText ctermfg=black ctermbg=NONE guifg=#000000 guibg=NONE +hi! vimGlobal ctermfg=black ctermbg=NONE guifg=#000000 guibg=NONE +hi! Comment ctermfg=black ctermbg=NONE guifg=#000000 guibg=NONE +hi! ErrorMsg ctermbg=234 ctermfg=darkred guibg=#1c1c1c guifg=#8b0000 gui=NONE +hi! Error ctermbg=234 ctermfg=darkred guibg=#1c1c1c guifg=#8b0000 gui=NONE +hi! SpellBad ctermbg=234 ctermfg=darkred guibg=#1c1c1c guifg=#8b0000 gui=NONE +hi! SpellRare ctermbg=234 ctermfg=darkred guibg=#1c1c1c guifg=#8b0000 gui=NONE +hi! Search ctermbg=236 ctermfg=darkred guibg=#303030 guifg=#8b0000 +hi! vimTodo ctermbg=236 ctermfg=darkred guibg=#303030 guifg=#8b0000 +hi! Todo ctermbg=236 ctermfg=darkred guibg=#303030 guifg=#8b0000 +hi! IncSearch ctermbg=236 ctermfg=darkred guibg=#303030 guifg=#8b0000 gui=NONE +hi! MatchParen ctermbg=236 ctermfg=darkred guibg=#303030 guifg=#8b0000 +hi! WinBar ctermfg=black ctermbg=NONE guifg=#000000 guibg=NONE gui=NONE +hi! SignColumn ctermbg=NONE guibg=NONE +hi! TabLineFill guibg=#121111 guifg=#000000 ctermbg=233 ctermfg=black + +" Pmenu and float colors +hi! Pmenu ctermfg=0 ctermbg=2 guibg=#121212 +hi! PmenuSel ctermfg=15 ctermbg=2 guibg=#121212 +hi! NormalFloat gui=NONE guibg=#121212 +hi! CocFloating gui=NONE guibg=#121212 +hi! FloatBorder guifg=#5c6370 guibg=NONE + +" Syntax highlighting groups - match Vim defaults +hi! Constant ctermfg=3 guifg=#FFFF00 +hi! String ctermfg=1 guifg=#FF6B6B +hi! Character ctermfg=1 guifg=#FF6B6B +hi! Number ctermfg=3 guifg=#FFFF00 +hi! Boolean ctermfg=3 guifg=#FFFF00 +hi! Float ctermfg=3 guifg=#FFFF00 + +hi! Identifier ctermfg=2 guifg=#00FF00 +hi! Function ctermfg=2 guifg=#00FF00 + +hi! Statement ctermfg=2 guifg=#00FF00 +hi! Conditional ctermfg=2 guifg=#00FF00 +hi! Repeat ctermfg=2 guifg=#00FF00 +hi! Label ctermfg=2 guifg=#00FF00 +hi! Operator ctermfg=3 guifg=#FFFF00 +hi! Keyword ctermfg=2 guifg=#00FF00 +hi! Exception ctermfg=1 guifg=#FF6B6B + +hi! PreProc ctermfg=1 guifg=#FF6B6B +hi! Include ctermfg=1 guifg=#FF6B6B +hi! Define ctermfg=1 guifg=#FF6B6B +hi! Macro ctermfg=1 guifg=#FF6B6B +hi! PreCondit ctermfg=1 guifg=#FF6B6B + +hi! Type ctermfg=2 guifg=#00FF00 +hi! StorageClass ctermfg=2 guifg=#00FF00 +hi! Structure ctermfg=2 guifg=#00FF00 +hi! Typedef ctermfg=2 guifg=#00FF00 + +hi! Underlined cterm=underline gui=underline ctermfg=6 guifg=#00FFFF + +" Links +hi! link ocamlKwErr Statement + +" FileType specific overrides +augroup MinimalDarkColorScheme + autocmd! + au FileType * hi! StatusLine ctermfg=black ctermbg=NONE + au FileType * hi! StatusLineNC ctermfg=black ctermbg=NONE + au FileType * hi! Normal ctermbg=NONE + au FileType * hi! Special ctermfg=cyan + au FileType * hi! LineNr ctermfg=black ctermbg=NONE + au FileType * hi! SpecialKey ctermfg=black ctermbg=NONE + au FileType * hi! ModeMsg ctermfg=black cterm=NONE ctermbg=NONE + au FileType * hi! MoreMsg ctermfg=black ctermbg=NONE + au FileType * hi! NonText ctermfg=black ctermbg=NONE + au FileType * hi! vimGlobal ctermfg=black ctermbg=NONE + au FileType * hi! Comment ctermfg=black ctermbg=NONE + au FileType * hi! ErrorMsg ctermbg=234 ctermfg=darkred cterm=NONE + au FileType * hi! Error ctermbg=234 ctermfg=darkred cterm=NONE + au FileType * hi! SpellBad ctermbg=234 ctermfg=darkred cterm=NONE + au FileType * hi! SpellRare ctermbg=234 ctermfg=darkred cterm=NONE + au FileType * hi! Search ctermbg=236 ctermfg=darkred + au FileType * hi! vimTodo ctermbg=236 ctermfg=darkred + au FileType * hi! Todo ctermbg=236 ctermfg=darkred + au FileType * hi! MatchParen ctermbg=236 ctermfg=darkred + au FileType markdown,pandoc hi! Title ctermfg=yellow ctermbg=NONE + au FileType markdown,pandoc hi! Operator ctermfg=yellow ctermbg=NONE + au FileType markdown,pandoc set tw=0 + au FileType markdown,pandoc set wrap + au FileType yaml hi! yamlBlockMappingKey ctermfg=NONE + au FileType yaml set sw=2 + au FileType sh,bash set sw=2 + au FileType c set sw=8 + au FileType markdown,pandoc,asciidoc noremap j gj + au FileType markdown,pandoc,asciidoc noremap k gk + au FileType sh,bash set noet +augroup END diff --git a/nvim/colors/paige-dark.vim b/nvim/colors/paige-dark.vim new file mode 100644 index 0000000..9573054 --- /dev/null +++ b/nvim/colors/paige-dark.vim @@ -0,0 +1,274 @@ +" +" ▄▄▄▄▄▄ ██ +" ██▀▀▀▀█▄ ▀▀ +" ██ ██ ▄█████▄ ████ ▄███▄██ ▄████▄ +" ██████▀ ▀ ▄▄▄██ ██ ██▀ ▀██ ██▄▄▄▄██ +" ██ ▄██▀▀▀██ ██ ██ ██ ██▀▀▀▀▀▀ +" ██ ██▄▄▄███ ▄▄▄██▄▄▄ ▀██▄▄███ ▀██▄▄▄▄█ +" ▀▀ ▀▀▀▀ ▀▀ ▀▀▀▀▀▀▀▀ ▄▀▀▀ ██ ▀▀▀▀▀ +" ▀████▀▀ +" File: paige-dark.vim +" Maintainer: Leon Henrik Plickat <leonhenrik.plickat@stud.uni-goettingen.de> +" License: GPLv3 + +if !has('gui_running') && &t_Co < 256 + finish +endif + +highlight clear + +if exists("syntax_on") + syntax reset +endif + +set background=dark + +let g:colors_name = "paige-dark" + +if exists("*<SID>PaigeHighlight") + delf <SID>PaigeHighlight +endif + +" Fancy highlight wrapper function, because some highlight groups, like Normal +" apparently do not like being linked. It is not perfect, but it solves the +" problem. +function! <SID>PaigeHighlight(group, type) + if !empty(a:type[0]) + exec "highlight " . a:group . " ctermbg=" . a:type[0] + endif + if !empty(a:type[1]) + exec "highlight " . a:group . " ctermfg=" . a:type[1] + endif + if !empty(a:type[2]) + exec "highlight " . a:group . " cterm=" . a:type[2] + endif + if !empty(a:type[3]) + exec "highlight " . a:group . " guibg=" . a:type[3] + endif + if !empty(a:type[4]) + exec "highlight " . a:group . " guifg=" . a:type[4] + endif + if !empty(a:type[5]) + exec "highlight " . a:group . " gui=" . a:type[5] + endif +endfunction + +" Types -> [ ctermbg, ctermfg, cterm, guibg, guifg, gui ] +let s:default_text = [ '232', '231', '', '#080808', '#ffffff', '' ] +let s:default_text_bold = [ '232', '231', 'bold', '#080808', '#ffffff', 'bold' ] +let s:default_text_italic = [ '232', '231', 'italic', '#080808', '#ffffff', 'italic' ] +let s:default_text_underline = [ '232', '231', 'underline', '#080808', '#ffffff', 'underline' ] + +let s:alt_fg_text = [ '232', '238', '', '#080808', '#444444', '' ] +let s:alt_fg_text_none = [ '232', '238', 'none', '#080808', '#444444', 'none' ] +let s:alt_fg_text_2 = [ '232', '248', '', '#080808', '#a8a8a8', '' ] + +let s:alt_bg_text = [ '235', '231', '', '#262626', '#ffffff', '' ] +let s:alt_bg_text_bold = [ '235', '231', 'bold', '#262626', '#ffffff', 'bold' ] +let s:alt_bg_text_italic = [ '235', '231', 'italic', '#262626', '#ffffff', 'italic' ] +let s:alt_bg_text_underline = [ '235', '231', 'underline', '#262626', '#ffffff', 'underline' ] +let s:alt_bg_text_no_override = [ '235', '', 'none', '#262626', '', 'none' ] +let s:alt_bg_text_none = [ '235', '231', 'none', '#262626', '#ffffff', 'none' ] +let s:alt_bg_no_fg = [ '235', '235', 'none', '#262626', '#e4e4e4', 'none' ] + +let s:green_bg_text = [ '106', '231', '', '#87af00', '#ffffff', '' ] +let s:red_bg_text = [ '160', '231', '', '#d70000', '#ffffff', '' ] +let s:yellow_bg_text = [ '178', '231', '', '#d7af00', '#ffffff', '' ] +let s:blue_bg_text = [ '39', '231', '', '#00afff', '#ffffff', '' ] +let s:purple_bg_text_none = [ '141', '231', 'none', '#af87ff', '#ffffff', 'none' ] +let s:alt_purple_bg_text_none = [ '139', '231', 'none', '#af87af', '#ffffff', 'none' ] + +let s:red_fg_text = [ '232', '196', '', '#080808', '#ff0000', '' ] +let s:green_fg_text = [ '232', '34', '', '#080808', '#00af00', '' ] +let s:blue_fg_text = [ '232', '27', '', '#080808', '#005fff', '' ] +let s:blue_fg_text_underline = [ '232', '27', 'underline', '#080808', '#005fff', 'underline' ] + +let s:menu_select = [ '70', '231', 'bold', '#5faf00', '#ffffff', '' ] +let s:menu_no_select = [ '240', '231', '', '#585858', '#ffffff', '' ] +let s:menu_scroll_bar = [ '240', '240', '', '#585858', '#585858', '' ] +let s:menu_scroll_bar_thumb = [ '202', '202', '', '#585858', '#ff5f00', '' ] + +" UI +call <sid>PaigeHighlight('Normal', s:default_text) +call <sid>PaigeHighlight('Folded', s:alt_bg_text) +call <sid>PaigeHighlight('CursorLine', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('CursorColumn', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('ColorColumn', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('SignColumn', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('Visual', s:blue_bg_text) +call <sid>PaigeHighlight('VisualNOS', s:blue_bg_text) +call <sid>PaigeHighlight('VertSplit', s:alt_bg_text_bold) +call <sid>PaigeHighlight('Pmenu', s:menu_no_select) +call <sid>PaigeHighlight('PmenuSel', s:menu_select) +call <sid>PaigeHighlight('PmenuSbar', s:menu_scroll_bar) +call <sid>PaigeHighlight('PmenuThumb', s:menu_scroll_bar_thumb) +call <sid>PaigeHighlight('WildMenu', s:menu_select) +call <sid>PaigeHighlight('ModeMsg', s:alt_fg_text_none) +call <sid>PaigeHighlight('StatusLine', s:alt_bg_text_bold) +call <sid>PaigeHighlight('StatusLineNC', s:alt_bg_text_none) +call <sid>PaigeHighlight('StatusLineTerm', s:alt_bg_text_bold) +call <sid>PaigeHighlight('StatusLineTermNC', s:alt_bg_text_none) +call <sid>PaigeHighlight('Search', s:purple_bg_text_none) +call <sid>PaigeHighlight('IncSearch', s:alt_purple_bg_text_none) +call <sid>PaigeHighlight('TabLineFill', s:alt_bg_no_fg) +call <sid>PaigeHighlight('TabLineSel', s:menu_select) +call <sid>PaigeHighlight('TabLine', s:alt_bg_text_none) +call <sid>PaigeHighlight('EndOfBuffer', s:alt_fg_text) +call <sid>PaigeHighlight('LineNr', s:alt_bg_text) +call <sid>PaigeHighlight('CursorLineNr', s:alt_bg_text) +call <sid>PaigeHighlight('MatchParen', s:yellow_bg_text) +call <sid>PaigeHighlight('Conceal', s:default_text) +call <sid>PaigeHighlight('Error', s:red_bg_text) +call <sid>PaigeHighlight('ErrorMsg', s:red_bg_text) +call <sid>PaigeHighlight('WarningMsg', s:yellow_bg_text) + +" Diff +call <sid>PaigeHighlight('DiffChange', s:yellow_bg_text) +call <sid>PaigeHighlight('DiffAdd', s:green_bg_text) +call <sid>PaigeHighlight('DiffDelete', s:red_bg_text) +call <sid>PaigeHighlight('diffAdded', s:green_fg_text) +call <sid>PaigeHighlight('diffRemoved', s:red_fg_text) +call <sid>PaigeHighlight('diffLine', s:blue_fg_text) + +" Spell +call <sid>PaigeHighlight('SpellBad', s:red_bg_text) +call <sid>PaigeHighlight('SpellCap', s:yellow_bg_text) +call <sid>PaigeHighlight('SpellLocal', s:yellow_bg_text) +call <sid>PaigeHighlight('SpellRare', s:yellow_bg_text) + +" netrw +call <sid>PaigeHighlight('netrwDir', s:blue_fg_text) +call <sid>PaigeHighlight('netrwClassify', s:default_text_bold) +call <sid>PaigeHighlight('netrwExe', s:green_fg_text) + +" quickfix +call <sid>PaigeHighlight('qfLineNr', s:default_text_bold) +call <sid>PaigeHighlight('qfFilename', s:default_text_bold) + +" Generic Syntax +call <sid>PaigeHighlight('Todo', s:yellow_bg_text) +call <sid>PaigeHighlight('Comment', s:alt_fg_text_2) +call <sid>PaigeHighlight('Title', s:alt_bg_text_bold) +call <sid>PaigeHighlight('PreProc', s:default_text_bold) +call <sid>PaigeHighlight('Identifier', s:default_text_bold) +call <sid>PaigeHighlight('Statement', s:default_text_bold) +call <sid>PaigeHighlight('Special', s:default_text_bold) +call <sid>PaigeHighlight('Type', s:default_text_bold) +call <sid>PaigeHighlight('NonText', s:alt_fg_text_2) " NonText includes listchars: eol, extends, prescedes +call <sid>PaigeHighlight('SpecialKey', s:alt_fg_text_2) " SpecialKey includes listchars: tabs, spaces, nbsp +call <sid>PaigeHighlight('Conditional', s:default_text_bold) +call <sid>PaigeHighlight('Repeat', s:default_text_bold) +call <sid>PaigeHighlight('Logical', s:default_text_bold) +call <sid>PaigeHighlight('Compare', s:default_text_bold) +call <sid>PaigeHighlight('Label', s:default_text_underline) +call <sid>PaigeHighlight('Constant', s:default_text) +call <sid>PaigeHighlight('Pointer', s:default_text) +call <sid>PaigeHighlight('Delimiter', s:default_text) + +" HTML +call <sid>PaigeHighlight('htmlTag', s:default_text_bold) +call <sid>PaigeHighlight('htmlEndTag', s:default_text_bold) +call <sid>PaigeHighlight('htmlTagName', s:default_text_bold) +call <sid>PaigeHighlight('htmlSpecialTagName', s:default_text_bold) +call <sid>PaigeHighlight('htmlComment', s:alt_fg_text_2) +call <sid>PaigeHighlight('htmlCommentPart', s:alt_fg_text_2) +call <sid>PaigeHighlight('htmlArg', s:default_text_bold) +call <sid>PaigeHighlight('htmlString', s:default_text) +call <sid>PaigeHighlight('htmlLink', s:blue_fg_text_underline) +call <sid>PaigeHighlight('htmlBold', s:default_text_bold) +call <sid>PaigeHighlight('htmlItalic', s:default_text_italic) + +" CSS +call <sid>PaigeHighlight('cssBraces', s:default_text) +call <sid>PaigeHighlight('cssNoise', s:default_text) +call <sid>PaigeHighlight('cssBoxProp', s:default_text_bold) +call <sid>PaigeHighlight('cssBoxAttr', s:default_text) +call <sid>PaigeHighlight('cssTextProp', s:default_text_bold) +call <sid>PaigeHighlight('cssTextAttr', s:default_text) +call <sid>PaigeHighlight('cssValueLength', s:default_text) +call <sid>PaigeHighlight('cssValueNumber', s:default_text) +call <sid>PaigeHighlight('cssUnitDecorators', s:default_text) +call <sid>PaigeHighlight('cssAtRule', s:default_text_bold) +call <sid>PaigeHighlight('cssAtRuleLogical', s:default_text_bold) +call <sid>PaigeHighlight('cssMediaType', s:default_text_bold) +call <sid>PaigeHighlight('cssMediaProp', s:default_text_bold) + +" meson +call <sid>PaigeHighlight('mesonString', s:default_text) + +" Vim +call <sid>PaigeHighlight('vimHiGroup', s:default_text) + +" C +call <sid>PaigeHighlight('cErrInParen', s:default_text) + +" Scheme +call <sid>PaigeHighlight('schemeSyntax', s:default_text_bold) +call <sid>PaigeHighlight('schemeFunction', s:default_text_bold) +call <sid>PaigeHighlight('schemeParentheses', s:default_text) +call <sid>PaigeHighlight('schemeNumber', s:default_text) +call <sid>PaigeHighlight('schemeString', s:default_text) + +" (La)Tex / vimtex +call <sid>PaigeHighlight('texComment', s:alt_fg_text_2) +call <sid>PaigeHighlight('texSection', s:default_text_bold) +call <sid>PaigeHighlight('texParen', s:default_text) +call <sid>PaigeHighlight('texCmdArgs', s:default_text) +call <sid>PaigeHighlight('texBeginEnd', s:default_text) +call <sid>PaigeHighlight('texBeginEndName', s:default_text_bold) + +" markdown +call <sid>PaigeHighlight('markdownH1', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH1Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH2', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH2Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH3', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH3Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH4', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH4Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH5', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH5Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH6', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH6Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownListMarker', s:default_text_bold) +call <sid>PaigeHighlight('markdownError', s:default_text) +call <sid>PaigeHighlight('markdownCodeBlock', s:green_fg_text) + +" git commit +call <sid>PaigeHighlight('gitcommitSummary', s:alt_bg_text_bold) +call <sid>PaigeHighlight('gitcommitFirstLine', s:alt_bg_text_bold) +call <sid>PaigeHighlight('gitcommitBlank', s:red_bg_text) +call <sid>PaigeHighlight('gitcommitComment', s:alt_fg_text_2) +call <sid>PaigeHighlight('gitcommitHeader', s:default_text_bold) + +" .desktop files +call <sid>PaigeHighlight('dtGroup', s:alt_bg_text_bold) +call <sid>PaigeHighlight('dtTypeKey', s:default_text_bold) +call <sid>PaigeHighlight('dtExecKey', s:default_text_bold) +call <sid>PaigeHighlight('dtLocaleKey', s:default_text_bold) +call <sid>PaigeHighlight('dtBooleanKey', s:default_text_bold) +call <sid>PaigeHighlight('dtStringKey', s:default_text_bold) +call <sid>PaigeHighlight('dtDelim', s:alt_fg_text_2) + +" scdoc +call <sid>PaigeHighlight('scdocHeader', s:alt_bg_text_bold) +call <sid>PaigeHighlight('scdocPreambleName', s:alt_bg_text_bold) +call <sid>PaigeHighlight('scdocPreambleExtra', s:alt_bg_text) +call <sid>PaigeHighlight('scdocBold', s:default_text_bold) + +" man +call <sid>PaigeHighlight('manHeader', s:alt_bg_text_bold) +call <sid>PaigeHighlight('manSectionHeading', s:alt_bg_text_bold) +call <sid>PaigeHighlight('manReference', s:default_text_bold) +call <sid>PaigeHighlight('manOptionDesc', s:default_text_bold) +call <sid>PaigeHighlight('manLongOptionDesc', s:default_text_bold) + +" ALE +call <sid>PaigeHighlight('ALEErrorSign', s:red_bg_text) +call <sid>PaigeHighlight('ALEWarningSign', s:green_fg_text) + +" quickfix +call <sid>PaigeHighlight('qfFilename', s:default_text_bold) +call <sid>PaigeHighlight('qfSeparator', s:default_text) +call <sid>PaigeHighlight('qfLineNr', s:default_text_bold) + diff --git a/nvim/colors/paige-system.vim b/nvim/colors/paige-system.vim new file mode 100644 index 0000000..1553bdb --- /dev/null +++ b/nvim/colors/paige-system.vim @@ -0,0 +1,268 @@ +" +" ▄▄▄▄▄▄ ██ +" ██▀▀▀▀█▄ ▀▀ +" ██ ██ ▄█████▄ ████ ▄███▄██ ▄████▄ +" ██████▀ ▀ ▄▄▄██ ██ ██▀ ▀██ ██▄▄▄▄██ +" ██ ▄██▀▀▀██ ██ ██ ██ ██▀▀▀▀▀▀ +" ██ ██▄▄▄███ ▄▄▄██▄▄▄ ▀██▄▄███ ▀██▄▄▄▄█ +" ▀▀ ▀▀▀▀ ▀▀ ▀▀▀▀▀▀▀▀ ▄▀▀▀ ██ ▀▀▀▀▀ +" ▀████▀▀ +" File: paige-system.vim +" Maintainer: Leon Henrik Plickat <leonhenrik.plickat@stud.uni-goettingen.de> +" License: GPLv3 + +if !has('gui_running') && &t_Co < 256 + finish +endif + +highlight clear + +if exists("syntax_on") + syntax reset +endif + +set background=light + +let g:colors_name = "paige" + +if exists("*<SID>PaigeHighlight") + delf <SID>PaigeHighlight +endif + +" Fancy highlight wrapper function, because some highlight groups, like Normal +" apparently do not like being linked. It is not perfect, but it solves the +" problem. +function! <SID>PaigeHighlight(group, type) + if !empty(a:type[0]) + exec "highlight " . a:group . " ctermbg=" . a:type[0] + endif + if !empty(a:type[1]) + exec "highlight " . a:group . " ctermfg=" . a:type[1] + endif + if !empty(a:type[2]) + exec "highlight " . a:group . " cterm=" . a:type[2] + endif + if !empty(a:type[3]) + exec "highlight " . a:group . " guibg=" . a:type[3] + endif + if !empty(a:type[4]) + exec "highlight " . a:group . " guifg=" . a:type[4] + endif + if !empty(a:type[5]) + exec "highlight " . a:group . " gui=" . a:type[5] + endif +endfunction + +" Types -> [ ctermbg, ctermfg, cterm, guibg, guifg, gui ] +let s:default_text = [ '0', '7', '', '#ffffff', '#080808', '' ] +let s:default_text_bold = [ '0', '7', 'bold', '#ffffff', '#080808', 'bold' ] +let s:default_text_italic = [ '0', '7', 'italic', '#ffffff', '#080808', 'italic' ] +let s:default_text_underline = [ '0', '7', 'underline', '#ffffff', '#080808', 'underline' ] + +let s:alt_fg_text = [ '0', '245', '', '#ffffff', '#8a8a8a', '' ] +let s:alt_fg_text_none = [ '0', '245', 'none', '#ffffff', '#8a8a8a', 'none' ] +let s:alt_fg_text_2 = [ '0', '248', '', '#ffffff', '#a8a8a8', '' ] + +let s:alt_bg_text = [ '254', '7', '', '#e4e4e4', '#080808', '' ] +let s:alt_bg_text_bold = [ '254', '7', 'bold', '#e4e4e4', '#080808', 'bold' ] +let s:alt_bg_text_italic = [ '254', '7', 'italic', '#e4e4e4', '#080808', 'italic' ] +let s:alt_bg_text_underline = [ '254', '7', 'underline', '#e4e4e4', '#080808', 'underline' ] +let s:alt_bg_text_no_override = [ '254', '', 'none', '#e4e4e4', '', 'none' ] +let s:alt_bg_text_none = [ '254', '7', 'none', '#e4e4e4', '#080808', 'none' ] +let s:alt_bg_no_fg = [ '254', '254', 'none', '#e4e4e4', '#e4e4e4', 'none' ] + +let s:green_bg_text = [ '148', '7', '', '#afd700', '#080808', '' ] +let s:red_bg_text = [ '197', '7', '', '#ff005f', '#080808', '' ] +let s:yellow_bg_text = [ '220', '7', '', '#ffd700', '#080808', '' ] +let s:blue_bg_text = [ '39', '7', '', '#00afff', '#080808', '' ] +let s:purple_bg_text_none = [ '141', '7', 'none', '#af87ff', '#080808', 'none' ] +let s:alt_purple_bg_text_none = [ '139', '7', 'none', '#af87af', '#080808', 'none' ] + +let s:red_fg_text = [ '0', '196', '', '#ffffff', '#ff0000', '' ] +let s:green_fg_text = [ '0', '34', '', '#ffffff', '#00af00', '' ] +let s:blue_fg_text = [ '0', '21', '', '#ffffff', '#0000ff', '' ] +let s:blue_fg_text_underline = [ '0', '21', 'underline', '#ffffff', '#0000ff', 'underline' ] + +let s:menu_select = [ '70 ', '0', 'bold', '#5faf00', '#ffffff', '' ] +let s:menu_no_select = [ '240', '0', '', '#585858', '#ffffff', '' ] +let s:menu_scroll_bar = [ '240', '240', '', '#585858', '#585858', '' ] +let s:menu_scroll_bar_thumb = [ '202', '202', '', '#585858', '#ff5f00', '' ] + +" UI +call <sid>PaigeHighlight('Normal', s:default_text) +call <sid>PaigeHighlight('Folded', s:alt_bg_text) +call <sid>PaigeHighlight('CursorLine', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('CursorColumn', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('ColorColumn', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('SignColumn', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('Visual', s:blue_bg_text) +call <sid>PaigeHighlight('VisualNOS', s:blue_bg_text) +call <sid>PaigeHighlight('VertSplit', s:alt_bg_text_bold) +call <sid>PaigeHighlight('Pmenu', s:menu_no_select) +call <sid>PaigeHighlight('PmenuSel', s:menu_select) +call <sid>PaigeHighlight('PmenuSbar', s:menu_scroll_bar) +call <sid>PaigeHighlight('PmenuThumb', s:menu_scroll_bar_thumb) +call <sid>PaigeHighlight('WildMenu', s:menu_select) +call <sid>PaigeHighlight('ModeMsg', s:alt_fg_text_none) +call <sid>PaigeHighlight('StatusLine', s:alt_bg_text_bold) +call <sid>PaigeHighlight('StatusLineNC', s:alt_bg_text_none) +call <sid>PaigeHighlight('StatusLineTerm', s:alt_bg_text_bold) +call <sid>PaigeHighlight('StatusLineTermNC', s:alt_bg_text_none) +call <sid>PaigeHighlight('Search', s:purple_bg_text_none) +call <sid>PaigeHighlight('IncSearch', s:alt_purple_bg_text_none) +call <sid>PaigeHighlight('TabLineFill', s:alt_bg_no_fg) +call <sid>PaigeHighlight('TabLineSel', s:menu_select) +call <sid>PaigeHighlight('TabLine', s:alt_bg_text_none) +call <sid>PaigeHighlight('EndOfBuffer', s:alt_fg_text) +call <sid>PaigeHighlight('LineNr', s:alt_bg_text) +call <sid>PaigeHighlight('CursorLineNr', s:alt_bg_text) +call <sid>PaigeHighlight('MatchParen', s:yellow_bg_text) +call <sid>PaigeHighlight('Conceal', s:default_text) +call <sid>PaigeHighlight('Error', s:red_bg_text) +call <sid>PaigeHighlight('ErrorMsg', s:red_bg_text) +call <sid>PaigeHighlight('WarningMsg', s:yellow_bg_text) + +" Diff +call <sid>PaigeHighlight('DiffChange', s:yellow_bg_text) +call <sid>PaigeHighlight('DiffAdd', s:green_bg_text) +call <sid>PaigeHighlight('DiffDelete', s:red_bg_text) +call <sid>PaigeHighlight('diffAdded', s:green_fg_text) +call <sid>PaigeHighlight('diffRemoved', s:red_fg_text) +call <sid>PaigeHighlight('diffLine', s:blue_fg_text) + +" Spell +call <sid>PaigeHighlight('SpellBad', s:red_bg_text) +call <sid>PaigeHighlight('SpellCap', s:yellow_bg_text) +call <sid>PaigeHighlight('SpellLocal', s:yellow_bg_text) +call <sid>PaigeHighlight('SpellRare', s:yellow_bg_text) + +" netrw +call <sid>PaigeHighlight('netrwDir', s:blue_fg_text) +call <sid>PaigeHighlight('netrwClassify', s:default_text_bold) +call <sid>PaigeHighlight('netrwExe', s:green_fg_text) + +" quickfix +call <sid>PaigeHighlight('qfLineNr', s:default_text_bold) +call <sid>PaigeHighlight('qfFilename', s:default_text_bold) + +" Generic Syntax +call <sid>PaigeHighlight('Todo', s:yellow_bg_text) +call <sid>PaigeHighlight('Comment', s:alt_fg_text_2) +call <sid>PaigeHighlight('Title', s:alt_bg_text_bold) +call <sid>PaigeHighlight('PreProc', s:default_text_bold) +call <sid>PaigeHighlight('Identifier', s:default_text_bold) +call <sid>PaigeHighlight('Statement', s:default_text_bold) +call <sid>PaigeHighlight('Special', s:default_text_bold) +call <sid>PaigeHighlight('Type', s:default_text_bold) +call <sid>PaigeHighlight('NonText', s:alt_fg_text_2) " NonText includes listchars: eol, extends, prescedes +call <sid>PaigeHighlight('SpecialKey', s:alt_fg_text_2) " SpecialKey includes listchars: tabs, spaces, nbsp +call <sid>PaigeHighlight('Conditional', s:default_text_bold) +call <sid>PaigeHighlight('Repeat', s:default_text_bold) +call <sid>PaigeHighlight('Logical', s:default_text_bold) +call <sid>PaigeHighlight('Compare', s:default_text_bold) +call <sid>PaigeHighlight('Label', s:default_text_underline) +call <sid>PaigeHighlight('Constant', s:default_text) +call <sid>PaigeHighlight('Pointer', s:default_text) +call <sid>PaigeHighlight('Delimiter', s:default_text) + +" HTML +call <sid>PaigeHighlight('htmlTag', s:default_text_bold) +call <sid>PaigeHighlight('htmlEndTag', s:default_text_bold) +call <sid>PaigeHighlight('htmlTagName', s:default_text_bold) +call <sid>PaigeHighlight('htmlSpecialTagName', s:default_text_bold) +call <sid>PaigeHighlight('htmlComment', s:alt_fg_text_2) +call <sid>PaigeHighlight('htmlCommentPart', s:alt_fg_text_2) +call <sid>PaigeHighlight('htmlArg', s:default_text_bold) +call <sid>PaigeHighlight('htmlString', s:default_text) +call <sid>PaigeHighlight('htmlLink', s:blue_fg_text_underline) +call <sid>PaigeHighlight('htmlBold', s:default_text_bold) +call <sid>PaigeHighlight('htmlItalic', s:default_text_italic) + +" CSS +call <sid>PaigeHighlight('cssBraces', s:default_text) +call <sid>PaigeHighlight('cssNoise', s:default_text) +call <sid>PaigeHighlight('cssBoxProp', s:default_text_bold) +call <sid>PaigeHighlight('cssBoxAttr', s:default_text) +call <sid>PaigeHighlight('cssTextProp', s:default_text_bold) +call <sid>PaigeHighlight('cssTextAttr', s:default_text) +call <sid>PaigeHighlight('cssValueLength', s:default_text) +call <sid>PaigeHighlight('cssValueNumber', s:default_text) +call <sid>PaigeHighlight('cssUnitDecorators', s:default_text) +call <sid>PaigeHighlight('cssAtRule', s:default_text_bold) +call <sid>PaigeHighlight('cssAtRuleLogical', s:default_text_bold) +call <sid>PaigeHighlight('cssMediaType', s:default_text_bold) +call <sid>PaigeHighlight('cssMediaProp', s:default_text_bold) + +" meson +call <sid>PaigeHighlight('mesonString', s:default_text) + +" Vim +call <sid>PaigeHighlight('vimHiGroup', s:default_text) + +" C +call <sid>PaigeHighlight('cErrInParen', s:default_text) + +" Scheme +call <sid>PaigeHighlight('schemeSyntax', s:default_text_bold) +call <sid>PaigeHighlight('schemeFunction', s:default_text_bold) +call <sid>PaigeHighlight('schemeParentheses', s:default_text) +call <sid>PaigeHighlight('schemeNumber', s:default_text) +call <sid>PaigeHighlight('schemeString', s:default_text) + +" (La)Tex / vimtex +call <sid>PaigeHighlight('texComment', s:alt_fg_text_2) +call <sid>PaigeHighlight('texSection', s:default_text_bold) +call <sid>PaigeHighlight('texParen', s:default_text) +call <sid>PaigeHighlight('texCmdArgs', s:default_text) +call <sid>PaigeHighlight('texBeginEnd', s:default_text) +call <sid>PaigeHighlight('texBeginEndName', s:default_text_bold) + +" markdown +call <sid>PaigeHighlight('markdownH1', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH1Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH2', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH2Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH3', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH3Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH4', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH4Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH5', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH5Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH6', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH6Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownListMarker', s:default_text_bold) +call <sid>PaigeHighlight('markdownError', s:default_text) +call <sid>PaigeHighlight('markdownCodeBlock', s:green_fg_text) + +" git commit +call <sid>PaigeHighlight('gitcommitSummary', s:alt_bg_text_bold) +call <sid>PaigeHighlight('gitcommitFirstLine', s:alt_bg_text_bold) +call <sid>PaigeHighlight('gitcommitBlank', s:red_bg_text) +call <sid>PaigeHighlight('gitcommitComment', s:alt_fg_text_2) +call <sid>PaigeHighlight('gitcommitHeader', s:default_text_bold) + +" .desktop files +call <sid>PaigeHighlight('dtGroup', s:alt_bg_text_bold) +call <sid>PaigeHighlight('dtTypeKey', s:default_text_bold) +call <sid>PaigeHighlight('dtExecKey', s:default_text_bold) +call <sid>PaigeHighlight('dtLocaleKey', s:default_text_bold) +call <sid>PaigeHighlight('dtBooleanKey', s:default_text_bold) +call <sid>PaigeHighlight('dtStringKey', s:default_text_bold) +call <sid>PaigeHighlight('dtDelim', s:alt_fg_text_2) + +" scdoc +call <sid>PaigeHighlight('scdocHeader', s:alt_bg_text_bold) +call <sid>PaigeHighlight('scdocPreambleName', s:alt_bg_text_bold) +call <sid>PaigeHighlight('scdocPreambleExtra', s:alt_bg_text) +call <sid>PaigeHighlight('scdocBold', s:default_text_bold) + +" man +call <sid>PaigeHighlight('manHeader', s:alt_bg_text_bold) +call <sid>PaigeHighlight('manSectionHeading', s:alt_bg_text_bold) +call <sid>PaigeHighlight('manReference', s:default_text_bold) +call <sid>PaigeHighlight('manOptionDesc', s:default_text_bold) +call <sid>PaigeHighlight('manLongOptionDesc', s:default_text_bold) + +" ALE +call <sid>PaigeHighlight('ALEErrorSign', s:red_bg_text) +call <sid>PaigeHighlight('ALEWarningSign', s:green_fg_text) diff --git a/nvim/colors/paige.vim b/nvim/colors/paige.vim new file mode 100644 index 0000000..c793f18 --- /dev/null +++ b/nvim/colors/paige.vim @@ -0,0 +1,268 @@ +" +" ▄▄▄▄▄▄ ██ +" ██▀▀▀▀█▄ ▀▀ +" ██ ██ ▄█████▄ ████ ▄███▄██ ▄████▄ +" ██████▀ ▀ ▄▄▄██ ██ ██▀ ▀██ ██▄▄▄▄██ +" ██ ▄██▀▀▀██ ██ ██ ██ ██▀▀▀▀▀▀ +" ██ ██▄▄▄███ ▄▄▄██▄▄▄ ▀██▄▄███ ▀██▄▄▄▄█ +" ▀▀ ▀▀▀▀ ▀▀ ▀▀▀▀▀▀▀▀ ▄▀▀▀ ██ ▀▀▀▀▀ +" ▀████▀▀ +" File: paige.vim +" Maintainer: Leon Henrik Plickat <leonhenrik.plickat@stud.uni-goettingen.de> +" License: GPLv3 + +if !has('gui_running') && &t_Co < 256 + finish +endif + +highlight clear + +if exists("syntax_on") + syntax reset +endif + +set background=light + +let g:colors_name = "paige" + +if exists("*<SID>PaigeHighlight") + delf <SID>PaigeHighlight +endif + +" Fancy highlight wrapper function, because some highlight groups, like Normal +" apparently do not like being linked. It is not perfect, but it solves the +" problem. +function! <SID>PaigeHighlight(group, type) + if !empty(a:type[0]) + exec "highlight " . a:group . " ctermbg=" . a:type[0] + endif + if !empty(a:type[1]) + exec "highlight " . a:group . " ctermfg=" . a:type[1] + endif + if !empty(a:type[2]) + exec "highlight " . a:group . " cterm=" . a:type[2] + endif + if !empty(a:type[3]) + exec "highlight " . a:group . " guibg=" . a:type[3] + endif + if !empty(a:type[4]) + exec "highlight " . a:group . " guifg=" . a:type[4] + endif + if !empty(a:type[5]) + exec "highlight " . a:group . " gui=" . a:type[5] + endif +endfunction + +" Types -> [ ctermbg, ctermfg, cterm, guibg, guifg, gui ] +let s:default_text = [ '231', '232', '', '#ffffff', '#080808', '' ] +let s:default_text_bold = [ '231', '232', 'bold', '#ffffff', '#080808', 'bold' ] +let s:default_text_italic = [ '231', '232', 'italic', '#ffffff', '#080808', 'italic' ] +let s:default_text_underline = [ '231', '232', 'underline', '#ffffff', '#080808', 'underline' ] + +let s:alt_fg_text = [ '231', '245', '', '#ffffff', '#8a8a8a', '' ] +let s:alt_fg_text_none = [ '231', '245', 'none', '#ffffff', '#8a8a8a', 'none' ] +let s:alt_fg_text_2 = [ '231', '248', '', '#ffffff', '#a8a8a8', '' ] + +let s:alt_bg_text = [ '254', '232', '', '#e4e4e4', '#080808', '' ] +let s:alt_bg_text_bold = [ '254', '232', 'bold', '#e4e4e4', '#080808', 'bold' ] +let s:alt_bg_text_italic = [ '254', '232', 'italic', '#e4e4e4', '#080808', 'italic' ] +let s:alt_bg_text_underline = [ '254', '232', 'underline', '#e4e4e4', '#080808', 'underline' ] +let s:alt_bg_text_no_override = [ '254', '', 'none', '#e4e4e4', '', 'none' ] +let s:alt_bg_text_none = [ '254', '232', 'none', '#e4e4e4', '#080808', 'none' ] +let s:alt_bg_no_fg = [ '254', '254', 'none', '#e4e4e4', '#e4e4e4', 'none' ] + +let s:green_bg_text = [ '148', '232', '', '#afd700', '#080808', '' ] +let s:red_bg_text = [ '197', '232', '', '#ff005f', '#080808', '' ] +let s:yellow_bg_text = [ '220', '232', '', '#ffd700', '#080808', '' ] +let s:blue_bg_text = [ '39', '232', '', '#00afff', '#080808', '' ] +let s:purple_bg_text_none = [ '141', '232', 'none', '#af87ff', '#080808', 'none' ] +let s:alt_purple_bg_text_none = [ '139', '232', 'none', '#af87af', '#080808', 'none' ] + +let s:red_fg_text = [ '231', '196', '', '#ffffff', '#ff0000', '' ] +let s:green_fg_text = [ '231', '34', '', '#ffffff', '#00af00', '' ] +let s:blue_fg_text = [ '231', '21', '', '#ffffff', '#0000ff', '' ] +let s:blue_fg_text_underline = [ '231', '21', 'underline', '#ffffff', '#0000ff', 'underline' ] + +let s:menu_select = [ '70 ', '231', 'bold', '#5faf00', '#ffffff', '' ] +let s:menu_no_select = [ '240', '231', '', '#585858', '#ffffff', '' ] +let s:menu_scroll_bar = [ '240', '240', '', '#585858', '#585858', '' ] +let s:menu_scroll_bar_thumb = [ '202', '202', '', '#585858', '#ff5f00', '' ] + +" UI +call <sid>PaigeHighlight('Normal', s:default_text) +call <sid>PaigeHighlight('Folded', s:alt_bg_text) +call <sid>PaigeHighlight('CursorLine', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('CursorColumn', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('ColorColumn', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('SignColumn', s:alt_bg_text_no_override) +call <sid>PaigeHighlight('Visual', s:blue_bg_text) +call <sid>PaigeHighlight('VisualNOS', s:blue_bg_text) +call <sid>PaigeHighlight('VertSplit', s:alt_bg_text_bold) +call <sid>PaigeHighlight('Pmenu', s:menu_no_select) +call <sid>PaigeHighlight('PmenuSel', s:menu_select) +call <sid>PaigeHighlight('PmenuSbar', s:menu_scroll_bar) +call <sid>PaigeHighlight('PmenuThumb', s:menu_scroll_bar_thumb) +call <sid>PaigeHighlight('WildMenu', s:menu_select) +call <sid>PaigeHighlight('ModeMsg', s:alt_fg_text_none) +call <sid>PaigeHighlight('StatusLine', s:alt_bg_text_bold) +call <sid>PaigeHighlight('StatusLineNC', s:alt_bg_text_none) +call <sid>PaigeHighlight('StatusLineTerm', s:alt_bg_text_bold) +call <sid>PaigeHighlight('StatusLineTermNC', s:alt_bg_text_none) +call <sid>PaigeHighlight('Search', s:purple_bg_text_none) +call <sid>PaigeHighlight('IncSearch', s:alt_purple_bg_text_none) +call <sid>PaigeHighlight('TabLineFill', s:alt_bg_no_fg) +call <sid>PaigeHighlight('TabLineSel', s:menu_select) +call <sid>PaigeHighlight('TabLine', s:alt_bg_text_none) +call <sid>PaigeHighlight('EndOfBuffer', s:alt_fg_text) +call <sid>PaigeHighlight('LineNr', s:alt_bg_text) +call <sid>PaigeHighlight('CursorLineNr', s:alt_bg_text) +call <sid>PaigeHighlight('MatchParen', s:yellow_bg_text) +call <sid>PaigeHighlight('Conceal', s:default_text) +call <sid>PaigeHighlight('Error', s:red_bg_text) +call <sid>PaigeHighlight('ErrorMsg', s:red_bg_text) +call <sid>PaigeHighlight('WarningMsg', s:yellow_bg_text) + +" Diff +call <sid>PaigeHighlight('DiffChange', s:yellow_bg_text) +call <sid>PaigeHighlight('DiffAdd', s:green_bg_text) +call <sid>PaigeHighlight('DiffDelete', s:red_bg_text) +call <sid>PaigeHighlight('diffAdded', s:green_fg_text) +call <sid>PaigeHighlight('diffRemoved', s:red_fg_text) +call <sid>PaigeHighlight('diffLine', s:blue_fg_text) + +" Spell +call <sid>PaigeHighlight('SpellBad', s:red_bg_text) +call <sid>PaigeHighlight('SpellCap', s:yellow_bg_text) +call <sid>PaigeHighlight('SpellLocal', s:yellow_bg_text) +call <sid>PaigeHighlight('SpellRare', s:yellow_bg_text) + +" netrw +call <sid>PaigeHighlight('netrwDir', s:blue_fg_text) +call <sid>PaigeHighlight('netrwClassify', s:default_text_bold) +call <sid>PaigeHighlight('netrwExe', s:green_fg_text) + +" quickfix +call <sid>PaigeHighlight('qfLineNr', s:default_text_bold) +call <sid>PaigeHighlight('qfFilename', s:default_text_bold) + +" Generic Syntax +call <sid>PaigeHighlight('Todo', s:yellow_bg_text) +call <sid>PaigeHighlight('Comment', s:alt_fg_text_2) +call <sid>PaigeHighlight('Title', s:alt_bg_text_bold) +call <sid>PaigeHighlight('PreProc', s:default_text_bold) +call <sid>PaigeHighlight('Identifier', s:default_text_bold) +call <sid>PaigeHighlight('Statement', s:default_text_bold) +call <sid>PaigeHighlight('Special', s:default_text_bold) +call <sid>PaigeHighlight('Type', s:default_text_bold) +call <sid>PaigeHighlight('NonText', s:alt_fg_text_2) " NonText includes listchars: eol, extends, prescedes +call <sid>PaigeHighlight('SpecialKey', s:alt_fg_text_2) " SpecialKey includes listchars: tabs, spaces, nbsp +call <sid>PaigeHighlight('Conditional', s:default_text_bold) +call <sid>PaigeHighlight('Repeat', s:default_text_bold) +call <sid>PaigeHighlight('Logical', s:default_text_bold) +call <sid>PaigeHighlight('Compare', s:default_text_bold) +call <sid>PaigeHighlight('Label', s:default_text_underline) +call <sid>PaigeHighlight('Constant', s:default_text) +call <sid>PaigeHighlight('Pointer', s:default_text) +call <sid>PaigeHighlight('Delimiter', s:default_text) + +" HTML +call <sid>PaigeHighlight('htmlTag', s:default_text_bold) +call <sid>PaigeHighlight('htmlEndTag', s:default_text_bold) +call <sid>PaigeHighlight('htmlTagName', s:default_text_bold) +call <sid>PaigeHighlight('htmlSpecialTagName', s:default_text_bold) +call <sid>PaigeHighlight('htmlComment', s:alt_fg_text_2) +call <sid>PaigeHighlight('htmlCommentPart', s:alt_fg_text_2) +call <sid>PaigeHighlight('htmlArg', s:default_text_bold) +call <sid>PaigeHighlight('htmlString', s:default_text) +call <sid>PaigeHighlight('htmlLink', s:blue_fg_text_underline) +call <sid>PaigeHighlight('htmlBold', s:default_text_bold) +call <sid>PaigeHighlight('htmlItalic', s:default_text_italic) + +" CSS +call <sid>PaigeHighlight('cssBraces', s:default_text) +call <sid>PaigeHighlight('cssNoise', s:default_text) +call <sid>PaigeHighlight('cssBoxProp', s:default_text_bold) +call <sid>PaigeHighlight('cssBoxAttr', s:default_text) +call <sid>PaigeHighlight('cssTextProp', s:default_text_bold) +call <sid>PaigeHighlight('cssTextAttr', s:default_text) +call <sid>PaigeHighlight('cssValueLength', s:default_text) +call <sid>PaigeHighlight('cssValueNumber', s:default_text) +call <sid>PaigeHighlight('cssUnitDecorators', s:default_text) +call <sid>PaigeHighlight('cssAtRule', s:default_text_bold) +call <sid>PaigeHighlight('cssAtRuleLogical', s:default_text_bold) +call <sid>PaigeHighlight('cssMediaType', s:default_text_bold) +call <sid>PaigeHighlight('cssMediaProp', s:default_text_bold) + +" meson +call <sid>PaigeHighlight('mesonString', s:default_text) + +" Vim +call <sid>PaigeHighlight('vimHiGroup', s:default_text) + +" C +call <sid>PaigeHighlight('cErrInParen', s:default_text) + +" Scheme +call <sid>PaigeHighlight('schemeSyntax', s:default_text_bold) +call <sid>PaigeHighlight('schemeFunction', s:default_text_bold) +call <sid>PaigeHighlight('schemeParentheses', s:default_text) +call <sid>PaigeHighlight('schemeNumber', s:default_text) +call <sid>PaigeHighlight('schemeString', s:default_text) + +" (La)Tex / vimtex +call <sid>PaigeHighlight('texComment', s:alt_fg_text_2) +call <sid>PaigeHighlight('texSection', s:default_text_bold) +call <sid>PaigeHighlight('texParen', s:default_text) +call <sid>PaigeHighlight('texCmdArgs', s:default_text) +call <sid>PaigeHighlight('texBeginEnd', s:default_text) +call <sid>PaigeHighlight('texBeginEndName', s:default_text_bold) + +" markdown +call <sid>PaigeHighlight('markdownH1', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH1Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH2', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH2Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH3', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH3Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH4', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH4Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH5', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH5Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH6', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownH6Delimiter', s:alt_bg_text_bold) +call <sid>PaigeHighlight('markdownListMarker', s:default_text_bold) +call <sid>PaigeHighlight('markdownError', s:default_text) +call <sid>PaigeHighlight('markdownCodeBlock', s:green_fg_text) + +" git commit +call <sid>PaigeHighlight('gitcommitSummary', s:alt_bg_text_bold) +call <sid>PaigeHighlight('gitcommitFirstLine', s:alt_bg_text_bold) +call <sid>PaigeHighlight('gitcommitBlank', s:red_bg_text) +call <sid>PaigeHighlight('gitcommitComment', s:alt_fg_text_2) +call <sid>PaigeHighlight('gitcommitHeader', s:default_text_bold) + +" .desktop files +call <sid>PaigeHighlight('dtGroup', s:alt_bg_text_bold) +call <sid>PaigeHighlight('dtTypeKey', s:default_text_bold) +call <sid>PaigeHighlight('dtExecKey', s:default_text_bold) +call <sid>PaigeHighlight('dtLocaleKey', s:default_text_bold) +call <sid>PaigeHighlight('dtBooleanKey', s:default_text_bold) +call <sid>PaigeHighlight('dtStringKey', s:default_text_bold) +call <sid>PaigeHighlight('dtDelim', s:alt_fg_text_2) + +" scdoc +call <sid>PaigeHighlight('scdocHeader', s:alt_bg_text_bold) +call <sid>PaigeHighlight('scdocPreambleName', s:alt_bg_text_bold) +call <sid>PaigeHighlight('scdocPreambleExtra', s:alt_bg_text) +call <sid>PaigeHighlight('scdocBold', s:default_text_bold) + +" man +call <sid>PaigeHighlight('manHeader', s:alt_bg_text_bold) +call <sid>PaigeHighlight('manSectionHeading', s:alt_bg_text_bold) +call <sid>PaigeHighlight('manReference', s:default_text_bold) +call <sid>PaigeHighlight('manOptionDesc', s:default_text_bold) +call <sid>PaigeHighlight('manLongOptionDesc', s:default_text_bold) + +" ALE +call <sid>PaigeHighlight('ALEErrorSign', s:red_bg_text) +call <sid>PaigeHighlight('ALEWarningSign', s:green_fg_text) diff --git a/nvim/colors/peachpuff-legacy.vim b/nvim/colors/peachpuff-legacy.vim new file mode 100644 index 0000000..10e3a7d --- /dev/null +++ b/nvim/colors/peachpuff-legacy.vim @@ -0,0 +1,59 @@ +" Vim color file +" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz> +" Last Change: 2003-04-23 +" URL: http://trific.ath.cx/Ftp/vim/colors/peachpuff.vim + +" This color scheme uses a peachpuff background (what you've expected when it's +" called peachpuff?). +" +" Note: Only GUI colors differ from default, on terminal it's just `light'. + +" First remove all existing highlighting. +set background=light +hi clear +if exists("syntax_on") + syntax reset +endif + +let colors_name = "peachpuff-legacy" + +hi Normal guibg=PeachPuff guifg=Black + +hi SpecialKey term=bold ctermfg=4 guifg=Blue +hi NonText term=bold cterm=bold ctermfg=4 gui=bold guifg=Blue +hi Directory term=bold ctermfg=4 guifg=Blue +hi ErrorMsg term=standout cterm=bold ctermfg=7 ctermbg=1 gui=bold guifg=White guibg=Red +hi IncSearch term=reverse cterm=reverse gui=reverse +hi Search term=reverse ctermbg=3 guibg=Gold2 +hi MoreMsg term=bold ctermfg=2 gui=bold guifg=SeaGreen +hi ModeMsg term=bold cterm=bold gui=bold +hi LineNr term=underline ctermfg=3 guifg=Red3 +hi Question term=standout ctermfg=2 gui=bold guifg=SeaGreen +hi StatusLine term=bold,reverse cterm=bold,reverse gui=bold guifg=White guibg=Black +hi StatusLineNC term=reverse cterm=reverse gui=bold guifg=PeachPuff guibg=Gray45 +hi VertSplit term=reverse cterm=reverse gui=bold guifg=White guibg=Gray45 +hi Title term=bold ctermfg=5 gui=bold guifg=DeepPink3 +hi Visual term=reverse cterm=reverse gui=reverse guifg=Grey80 guibg=fg +hi VisualNOS term=bold,underline cterm=bold,underline gui=bold,underline +hi WarningMsg term=standout ctermfg=1 gui=bold guifg=Red +hi WildMenu term=standout ctermfg=0 ctermbg=3 guifg=Black guibg=Yellow +hi Folded term=standout ctermfg=4 ctermbg=7 guifg=Black guibg=#e3c1a5 +hi FoldColumn term=standout ctermfg=4 ctermbg=7 guifg=DarkBlue guibg=Gray80 +hi DiffAdd term=bold ctermbg=4 guibg=White +hi DiffChange term=bold ctermbg=5 guibg=#edb5cd +hi DiffDelete term=bold cterm=bold ctermfg=4 ctermbg=6 gui=bold guifg=LightBlue guibg=#f6e8d0 +hi DiffText term=reverse cterm=bold ctermbg=1 gui=bold guibg=#ff8060 +hi Cursor guifg=bg guibg=fg +hi lCursor guifg=bg guibg=fg + +" Colors for syntax highlighting +hi Comment term=bold ctermfg=4 guifg=#406090 +hi Constant term=underline ctermfg=1 guifg=#c00058 +hi Special term=bold ctermfg=5 guifg=SlateBlue +hi Identifier term=underline ctermfg=6 guifg=DarkCyan +hi Statement term=bold ctermfg=3 gui=bold guifg=Brown +hi PreProc term=underline ctermfg=5 guifg=Magenta3 +hi Type term=underline ctermfg=2 gui=bold guifg=SeaGreen +hi Ignore cterm=bold ctermfg=7 guifg=bg +hi Error term=reverse cterm=bold ctermfg=7 ctermbg=1 gui=bold guifg=White guibg=Red +hi Todo term=standout ctermfg=0 ctermbg=3 guifg=Blue guibg=Yellow diff --git a/nvim/ftdetect/astro.lua b/nvim/ftdetect/astro.lua new file mode 100644 index 0000000..af28385 --- /dev/null +++ b/nvim/ftdetect/astro.lua @@ -0,0 +1,5 @@ +vim.filetype.add({ + extension = { + astro = "astro" + } +}) diff --git a/nvim/ftdetect/haxe.vim b/nvim/ftdetect/haxe.vim new file mode 100644 index 0000000..a492c36 --- /dev/null +++ b/nvim/ftdetect/haxe.vim @@ -0,0 +1 @@ +autocmd BufNewFile,BufRead *.hx setf haxe diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..d27f5f1 --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,97 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +require("sixfourtwelve") + +local formatter_ocamlformat = { + function() + return { + exe = "ocamlformat", + args = { vim.api.nvim_buf_get_name(0) }, + stdin = true + } + end +} + +require('formatter').setup({ + logging = true, + filetype = { + ocamlformat = formatter_ocamlformat, + } +}) + +vim.api.nvim_exec([[ +let g:go_fmt_autosave = 1 +let g:go_fmt_command = "goimports" +let g:go_highlight_fields = 1 +let g:go_highlight_functions = 1 +let g:go_highlight_function_calls = 1 +let g:go_highlight_extra_types = 1 +let g:go_highlight_operators = 1 +]], true) + +vim.cmd([[ + augroup CppModulesHighlight + autocmd! + autocmd FileType cpp syntax keyword cppModulesKeyword module import export + autocmd FileType cpp highlight def link cppModulesKeyword Statement + augroup END +]]) + +vim.api.nvim_exec([[ + autocmd BufNewFile,BufRead *.m set filetype=objc +]], true) + +vim.o.background = "dark" + +require("tokyonight").setup({ + style = "moon", + transparent = true, +}) + +-- vim.cmd("colorscheme bore") + +vim.api.nvim_command( + "autocmd BufWritePre *.json,*.ex,*.go,*.lua,*.rb,*.hs,*.py,*.ml,*.mli,*.c,*.h,*.cc,*.hh,*.cpp,*.hpp,*.m,*.mm,*.php,*.odin,*.rs,*.cs,*.java,*.re,*.rei,*.res,*.resi,*.scala,*.sbt,*.gleam,*.ts,*.tsx,*.test.ts,*.test.tsx,*.js,*.jsx,*.test.js,*.test.jsx,*.cr,*.odin,*.astro,*.zig,*.clj,*.cljc,*.cljs lua vim.lsp.buf.format()") + + +vim.api.nvim_set_option("clipboard", "unnamed") + +require("ts-error-translator").setup() +require('illuminate').configure({ + providers = { + 'lsp', + 'treesitter', + 'regex', + }, +}) + +-- require('.lua.sixfourtwelve.knixstatusline').setup() + +require("lualine").setup({ +options = { + theme = "kanso", + icons_enabled = true, + globalstatus = true, + component_separators = { left = " ", right = " " }, + section_separators = { left = "█", right = "█" }, + sections = { + lualine_a = {'mode'}, + lualine_b = {'branch', 'diff', 'diagnostics'}, + lualine_c = {'filename', 'branch', 'diff', 'diagnostics'}, + lualine_x = {'encoding', 'fileformat', 'filetype'}, + lualine_y = {'progress'}, + lualine_z = {'location'} + }, +}, +}) diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json new file mode 100644 index 0000000..b42e182 --- /dev/null +++ b/nvim/lazy-lock.json @@ -0,0 +1,59 @@ +{ + "Colorizer": { "branch": "master", "commit": "f5d69c0dea9f36e2eb025c7d86cc62b5a0d8af62" }, + "LuaSnip": { "branch": "master", "commit": "dae4f5aaa3574bd0c2b9dd20fb9542a02c10471c" }, + "NeoSolarized.nvim": { "branch": "master", "commit": "3c55ad358c062aa4879950c4f83b4deeac6b72df" }, + "catppuccin": { "branch": "main", "commit": "beaf41a30c26fd7d6c386d383155cbd65dd554cd" }, + "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" }, + "cmp-nvim-lua": { "branch": "main", "commit": "e3a22cb071eb9d6508a156306b102c45cd2d573d" }, + "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, + "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, + "conjure": { "branch": "main", "commit": "403639610bcb9b6a5dfc494dc3179cc19773a471" }, + "csharpls-extended-lsp.nvim": { "branch": "master", "commit": "6eb1308c8f74adbcaa0d681a742f39d4165d063d" }, + "dropbar.nvim": { "branch": "master", "commit": "ce202248134e3949aac375fd66c28e5207785b10" }, + "fidget.nvim": { "branch": "main", "commit": "7fa433a83118a70fe24c1ce88d5f0bd3453c0970" }, + "formatter.nvim": { "branch": "master", "commit": "b9d7f853da1197b83b8edb4cc4952f7ad3a42e41" }, + "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, + "git-blame.nvim": { "branch": "main", "commit": "5c536e2d4134d064aa3f41575280bc8a2a0e03d7" }, + "gitsigns.nvim": { "branch": "main", "commit": "abf82a65f185bd54adc0679f74b7d6e1ada690c9" }, + "harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" }, + "incline.nvim": { "branch": "main", "commit": "8b54c59bcb23366645ae10edca6edfb9d3a0853e" }, + "kanso.nvim": { "branch": "main", "commit": "26f5c9686b17a27541c98551cf0cd2587627e387" }, + "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, + "lsp-zero.nvim": { "branch": "v4.x", "commit": "d388e2b71834c826e61a3eba48caec53d7602510" }, + "lspkind.nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" }, + "lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" }, + "markview.nvim": { "branch": "main", "commit": "c81ce9ed129387fc5fdec91abe9818a1b0e6fcac" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "3d89e7c92fbd96c5e10e0298fc2b006f21cf9428" }, + "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, + "mini.nvim": { "branch": "main", "commit": "9b935c218ddba02e5dc75c94f90143bce1f7c646" }, + "neoscroll.nvim": { "branch": "master", "commit": "c8d29979cb0cb3a2437a8e0ae683fd82f340d3b8" }, + "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" }, + "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, + "nvim-autopairs": { "branch": "master", "commit": "007047febaa3681a8d2f3dd5126fdb9c6e81f393" }, + "nvim-cmp": { "branch": "main", "commit": "da88697d7f45d16852c6b2769dc52387d1ddc45f" }, + "nvim-lspconfig": { "branch": "master", "commit": "238583bb00770b079c68c69a860d65e5d1d8acf9" }, + "nvim-metals": { "branch": "main", "commit": "7ed47cd3095508e80423e30922385d5b9988f9d6" }, + "nvim-tree.lua": { "branch": "master", "commit": "c07ce43527e5f0242121f4eb1feb7ac0ecea8275" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-treesitter-context": { "branch": "master", "commit": "64dd4cf3f6fd0ab17622c5ce15c91fc539c3f24a" }, + "nvim-web-devicons": { "branch": "master", "commit": "803353450c374192393f5387b6a0176d0972b848" }, + "ocaml_mlx.nvim": { "branch": "main", "commit": "1f25e599fc713c033f3faf95aab8fbe5efd0897b" }, + "outline.nvim": { "branch": "main", "commit": "1967ef50036b0b1eac4977aeede55915a741afe0" }, + "playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "roslyn.nvim": { "branch": "main", "commit": "0687e3c12731e3d76d3d8bfb5aa873b736105981" }, + "snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" }, + "telescope.nvim": { "branch": "master", "commit": "ad7d9580338354ccc136e5b8f0aa4f880434dcdc" }, + "tmuxline.vim": { "branch": "master", "commit": "4119c553923212cc67f4e135e6f946dc3ec0a4d6" }, + "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" }, + "ts-error-translator.nvim": { "branch": "main", "commit": "558abff11b9e8f4cefc0de09df780c56841c7a4b" }, + "twilight.nvim": { "branch": "main", "commit": "664e752f4a219801265cc3fc18782b457b58c1e1" }, + "undotree": { "branch": "master", "commit": "178d19e00a643f825ea11d581b1684745d0c4eda" }, + "vim-fugitive": { "branch": "master", "commit": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4" }, + "vim-haxe": { "branch": "master", "commit": "8efc705db41a01713d67d437f29866a1ff831e8a" }, + "vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" }, + "vim-reason-plus": { "branch": "master", "commit": "c11a2940f8f3e3915e472c366fe460b0fe008bac" }, + "vim-solarized8": { "branch": "master", "commit": "43e0b11c31f8f31fe76a795d3119046e4f9f151e" } +} diff --git a/nvim/lua/sixfourtwelve/autocmds.lua b/nvim/lua/sixfourtwelve/autocmds.lua new file mode 100644 index 0000000..43ebcf0 --- /dev/null +++ b/nvim/lua/sixfourtwelve/autocmds.lua @@ -0,0 +1,56 @@ +vim.api.nvim_create_augroup('setIndent', { clear = true }) + +vim.api.nvim_create_autocmd('Filetype', { + group = 'setIndent', + pattern = { 'c' }, + command = 'setlocal shiftwidth=4 tabstop=4' +}) + +vim.api.nvim_create_autocmd('Filetype', { + group = 'setIndent', + pattern = { 'cpp' }, + command = 'setlocal shiftwidth=2 tabstop=2' +}) + +vim.api.nvim_create_autocmd('Filetype', { + group = 'setIndent', + pattern = { 'fsharp' }, + command = 'setlocal shiftwidth=4 tabstop=4' +}) + +vim.api.nvim_create_autocmd('Filetype', { + group = 'setIndent', + pattern = { 'objc', 'objcpp' }, + command = 'setlocal shiftwidth=8 tabstop=8' +}) + +vim.api.nvim_create_autocmd('Filetype', { + group = 'setIndent', + pattern = { 'cs' }, + command = 'setlocal shiftwidth=4 tabstop=4' +}) + +vim.api.nvim_create_autocmd('Filetype', { + group = 'setIndent', + pattern = { 'zig' }, + command = 'setlocal shiftwidth=4 tabstop=4' +}) + +vim.api.nvim_create_autocmd('Filetype', { + group = 'setIndent', + pattern = { 'go' }, + command = 'setlocal shiftwidth=8 tabstop=8' +}) + + +vim.api.nvim_create_autocmd('Filetype', { + group = 'setIndent', + pattern = { 'odin' }, + command = 'setlocal shiftwidth=8 tabstop=8' +}) + +vim.api.nvim_create_autocmd('Filetype', { + group = 'setIndent', + pattern = { 'ada' }, + command = 'setlocal shiftwidth=3 tabstop=3' +}) diff --git a/nvim/lua/sixfourtwelve/filetype.lua b/nvim/lua/sixfourtwelve/filetype.lua new file mode 100644 index 0000000..2e44fb1 --- /dev/null +++ b/nvim/lua/sixfourtwelve/filetype.lua @@ -0,0 +1,5 @@ +vim.filetype.add({ + extension = { + hx = 'haxe', + }, +}) diff --git a/nvim/lua/sixfourtwelve/init.lua b/nvim/lua/sixfourtwelve/init.lua new file mode 100644 index 0000000..aed9fd0 --- /dev/null +++ b/nvim/lua/sixfourtwelve/init.lua @@ -0,0 +1,4 @@ +require("sixfourtwelve.remap") +require("sixfourtwelve.set") +require("sixfourtwelve.lazy") +require("sixfourtwelve.autocmds") diff --git a/nvim/lua/sixfourtwelve/knixstatusline.lua b/nvim/lua/sixfourtwelve/knixstatusline.lua new file mode 100644 index 0000000..8791484 --- /dev/null +++ b/nvim/lua/sixfourtwelve/knixstatusline.lua @@ -0,0 +1,73 @@ +local M = {} + +M.Palette = { + black = "#090e13", + red = "#c4746e", + green = "#8a9a7b", + yellow = "#c4b28a", + blue = "#8ba4b0", + magenta = "#a292a3", + cyan = "#8ea4a2", + white = "#a4a7a4", + bright_black = "#5c6066", + bright_red = "#e46876", + bright_green = "#87a987", + bright_yellow = "#e6c384", + bright_blue = "#7fb4ca", + bright_magenta = "#938aa9", + bright_cyan = "#7aa89f", + bright_white = "#c5c9c7", + background = "#090e13", + foreground = "#c5c9c7", + cursor_color = "#c5c9c7", + selection_background = "#22262d", + selection_foreground = "#c5c9c7", + + background_light = '#111a23' +} + +vim.cmd [[ +set fillchars=vert:│ + +" Optional: give split separators a highlight group +highlight WinSeparator guifg=#c5c9c7 guibg=NONE +set winhighlight=VertSplit:WinSeparator +]] + +M.setup = function() + vim.api.nvim_set_hl(0, 'User1', { fg = M.Palette.green, bg = M.background_light }) + vim.api.nvim_set_hl(0, 'User2', { fg = M.Palette.foreground, bg = M.background_light }) + vim.api.nvim_set_hl(0, 'User3', { fg = M.Palette.red, bg = M.background_light }) + vim.api.nvim_set_hl(0, 'User4', { fg = M.Palette.white, bg = M.background_light }) + vim.api.nvim_set_hl(0, 'User6', { fg = M.Palette.yellow, bg = M.background_light }) + --vim.api.nvim_set_hl(0, 'StatusLine', { bg = M.background_light }) + + local inspirations = { + 'every second counts', + 'Hello, World!', + 'this is water', + 'leaf', + 'timshel' + } + math.randomseed(os.time()) + local random_index = math.random(#inspirations) + local inspiration = inspirations[random_index] + local s = '%1* ' .. inspiration .. '%*' + + vim.o.laststatus = 2 + vim.o.statusline = '' + -- set statusline+=%6*\ %<%F%* "full path + vim.cmd [[ + set statusline+=%3*%m%* "modified flag + set statusline+=%4*\ %y%* "file type + ]] + vim.o.statusline = vim.o.statusline .. s + vim.cmd [[ + set statusline+=%1*%=%5l%* "current line + set statusline+=%2*/%L%* "total lines + set statusline+=%1*%4v\ %* "virtual column number + set statusline+=%6*0x%04B\ %* "character under cursor + ]] +end + +return M diff --git a/nvim/lua/sixfourtwelve/lazy.lua b/nvim/lua/sixfourtwelve/lazy.lua new file mode 100644 index 0000000..a89a964 --- /dev/null +++ b/nvim/lua/sixfourtwelve/lazy.lua @@ -0,0 +1,272 @@ +---@diagnostic disable: undefined-global +--- +vim.g.mapleader = " " +vim.g.maplocalleader = "," + +return require("lazy").setup({ + { + 'b0o/incline.nvim', + config = function() + local helpers = require 'incline.helpers' + local devicons = require 'nvim-web-devicons' + require('incline').setup({ + render = function(props) + local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ':t') + if filename == '' then + filename = '[No Name]' + end + local ft_icon, ft_color = devicons.get_icon_color(filename) + return { + ft_icon and { ' ', ft_icon, ' ', guibg = "", guifg = helpers.contrast_color(ft_color) } or '', + ' ', + { filename }, + ' ', + guibg = '', + } + end, + }) + end, + event = 'VeryLazy', + }, + { + 'Bekaboo/dropbar.nvim', + -- optional, but required for fuzzy finder support + dependencies = { + 'nvim-telescope/telescope-fzf-native.nvim', + build = 'make' + }, + config = function() + local dropbar_api = require('dropbar.api') + vim.keymap.set('n', '<Leader>;', dropbar_api.pick, { desc = 'Pick symbols in winbar' }) + vim.keymap.set('n', '[;', dropbar_api.goto_context_start, { desc = 'Go to start of current context' }) + vim.keymap.set('n', '];', dropbar_api.select_next_context, { desc = 'Select next context' }) + end + }, + { + "webhooked/kanso.nvim", + lazy = false, + priority = 1000, + config = function() + require("kanso").setup { + bold = false, + italics = false, + keywordStyle = { italic = false }, + background = { + dark = "zen", + light = "pearl" + }, + foreground = { + -- dark = "saturated", + -- light = "saturated" + } + } + vim.cmd("colorscheme kanso") + vim.defer_fn(function() + for _, group in ipairs({ + "DiagnosticUnderlineError", + "DiagnosticUnderlineWarn", + "DiagnosticUnderlineInfo", + "DiagnosticUnderlineHint", + }) do + local hl = vim.api.nvim_get_hl(0, { name = group }) + hl.undercurl = false + hl.underline = true + hl.bold = false + vim.api.nvim_set_hl(0, group, hl) + end + end, 50) + + end + }, + {"folke/twilight.nvim"}, + {"edkolev/tmuxline.vim"}, + {"nvim-lualine/lualine.nvim"}, + {"Tsuzat/NeoSolarized.nvim"}, + {"lifepillar/vim-solarized8"}, + { + "seblyng/roslyn.nvim", + ---@module 'roslyn.config' + ---@type RoslynNvimConfig + opts = {}, + }, + { "Decodetalkers/csharpls-extended-lsp.nvim" }, + { + "folke/snacks.nvim", + opts = { + indent = { + indent = { + enabled = false, + }, + chunk = { + enabled = true, + char = { + horizontal = '─', + vertical = '│', + corner_top = '╭', + corner_bottom = '╰', + arrow = '─', + }, + }, + }, + }, + }, + { "onsails/lspkind.nvim" }, + { "RRethy/vim-illuminate" }, +-- {"windwp/windline.nvim", +-- config = function() +-- require("wlsample.airline") +-- end, +-- }, + { + "scalameta/nvim-metals", + dependencies = { + "nvim-lua/plenary.nvim", + }, + ft = { "scala", "sbt", "java" }, + opts = function() + local metals_config = require("metals").bare_config() + + local options = { buffer = bufnr, remap = false } + metals_config.on_attach = function(client, bufnr) + vim.keymap.set('n', 'gd', '<cmd>lua require"telescope.builtin".lsp_definitions({jump_type="vsplit"})<CR>', + options) + -- vim.keymap.set('n', 'gd', function() vim.lsp.buf.definition() end, options) + vim.keymap.set("n", "gr", function() vim.lsp.buf.references() end, options) + vim.keymap.set("n", "bh", function() vim.lsp.buf.hover() end, options) + vim.keymap.set("n", "ca", function() vim.lsp.buf.code_action() end, options) + vim.keymap.set("n", "cr", function() vim.lsp.buf.rename() end, options) + vim.keymap.set("n", "gv", function() vim.lsp.buf.signature_help() end, options) + vim.keymap.set("n", "gl", function() vim.diagnostic.open_float() end, options) + vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, options) + vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, options) + end + + return metals_config + end, + config = function(self, metals_config) + local nvim_metals_group = vim.api.nvim_create_augroup("nvim-metals", { clear = true }) + vim.api.nvim_create_autocmd("FileType", { + pattern = self.ft, + callback = function() + require("metals").initialize_or_attach(metals_config) + end, + group = nvim_metals_group, + }) + end + }, + { "reasonml-editor/vim-reason-plus" }, + { + 'echasnovski/mini.nvim', + config = function() + require('mini.ai').setup { n_lines = 500 } + require('mini.sessions').setup({}) + + require('mini.icons').setup({ + style = 'glyph', + }) + -- require('mini.tabline').setup({ + -- show_icons = true, + -- tabpage_section = 'right', + -- }) + -- + local starter = require('mini.starter') + starter.setup({ + evaluate_single = true, + items = { + starter.sections.builtin_actions(), + starter.sections.recent_files(10, false), + starter.sections.recent_files(10, true), + starter.sections.sessions(5, true) + }, + content_hooks = { + starter.gen_hook.adding_bullet(), + starter.gen_hook.indexing('all', { 'Builtin actions' }), + starter.gen_hook.padding(3, 2), + }, + }) + end + }, + { "folke/tokyonight.nvim" }, + { 'dmmulroy/ts-error-translator.nvim' }, + { + 'Olical/conjure', + ft = { "clojure", "fennel", "racket", "scheme", "lisp" }, + lazy = true, + enabled = true, + }, + { "ocaml-mlx/ocaml_mlx.nvim" }, + { + "karb94/neoscroll.nvim", + config = function() + require('neoscroll').setup({}) + end + }, + -- { 'fatih/vim-go' }, + { "nvim-treesitter/nvim-treesitter", build = ':TSUpdate', lazy = false, dependencies = { "OXY2DEV/markview.nvim" } }, + { "nvim-treesitter/playground" }, + { + "ThePrimeagen/harpoon", + lazy = true, + }, + { "tpope/vim-fugitive" }, + { "chrisbra/Colorizer" }, + { "lewis6991/gitsigns.nvim" }, + { "f-person/git-blame.nvim" }, + { "j-hui/fidget.nvim" }, + { 'MunifTanjim/nui.nvim' }, + { "folke/noice.nvim" }, + { + "hedyhli/outline.nvim", + config = function() + vim.keymap.set("n", "<leader>o", "<cmd>Outline<CR>", + { desc = "Toggle Outline" }) + + require("outline").setup { + outline_window = { + width = 25, + relative_width = true, + focus_on_open = true, + auto_jump = false + }, + preview_window = { + auto_preview = true, + open_hover_on_preview = true, + width = 50, + min_width = 50, + relative_width = true, + border = 'single', + winhl = 'NormalFloat:', + }, + } + end, + }, + { 'windwp/nvim-autopairs' }, + { 'neovim/nvim-lspconfig' }, + { + 'williamboman/mason.nvim', + }, + { 'williamboman/mason-lspconfig.nvim' }, + + { 'hrsh7th/nvim-cmp' }, + { 'hrsh7th/cmp-buffer' }, + { 'hrsh7th/cmp-path' }, + { 'saadparwaiz1/cmp_luasnip' }, + { 'hrsh7th/cmp-nvim-lsp' }, + { 'hrsh7th/cmp-nvim-lua' }, + + { 'L3MON4D3/LuaSnip' }, + { 'rafamadriz/friendly-snippets' }, + + { + 'VonHeikemen/lsp-zero.nvim', + lazy = false, + -- branch = 'v1.x', + }, + { "kyazdani42/nvim-web-devicons" }, + { 'mhartington/formatter.nvim' }, + { 'kyazdani42/nvim-tree.lua' }, + { 'nvim-telescope/telescope.nvim', dependencies = { { 'nvim-lua/plenary.nvim' } } }, + { "mbbill/undotree" }, + { "nvim-treesitter/nvim-treesitter-context" }, + { "catppuccin/nvim", name = "catppuccin", priority = 1000 }, +}, opts) diff --git a/nvim/lua/sixfourtwelve/remap.lua b/nvim/lua/sixfourtwelve/remap.lua new file mode 100644 index 0000000..dd00385 --- /dev/null +++ b/nvim/lua/sixfourtwelve/remap.lua @@ -0,0 +1,22 @@ +vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv") +vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv") + +vim.keymap.set("n", "<C-d>", "<C-d>zz") +vim.keymap.set("n", "<C-u>", "<C-u>zz") + +vim.keymap.set("n", "n", "nzzzv") +vim.keymap.set("n", "N", "Nzzzv") + +vim.keymap.set("x", "<leader>p", [["_dP]]) +vim.keymap.set("n", "<C-j>", "<cmd>cnext<CR>zz") +vim.keymap.set("n", "<C-k>", "<cmd>cprev<CR>zz") +vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz") + +vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz") +vim.api.nvim_set_keymap('n', 's', 'xi', { noremap = true }) + + +vim.keymap.set("n", "<C-a>", "<cmd>:bprev<CR>zz") +vim.keymap.set("n", "<C-s>", "<cmd>:bnext<CR>zz") +-- vim.keymap.set("n", "<C-w>", "<cmd>:bdelete<CR>zz") +vim.keymap.set("n", "<C-c>", "<cmd>:w<CR>zz") diff --git a/nvim/lua/sixfourtwelve/set.lua b/nvim/lua/sixfourtwelve/set.lua new file mode 100644 index 0000000..a69215d --- /dev/null +++ b/nvim/lua/sixfourtwelve/set.lua @@ -0,0 +1,30 @@ +vim.o.number = true +vim.o.laststatus = 2 +vim.o.numberwidth = 1 +vim.o.relativenumber = false +vim.o.tabstop = 2 +vim.o.shiftwidth = 2 +vim.o.expandtab = true +vim.o.shiftround = true +vim.o.mouse = "a" +vim.o.wrap = true + +vim.o.signcolumn = "yes" +vim.o.syntax = "on" +vim.o.termguicolors = true + +vim.opt.smartindent = false + +vim.opt.wrap = true + +vim.opt.hlsearch = false +vim.opt.incsearch = true + +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.undodir = os.getenv("HOME") .. "/.nvim/undodir" +vim.opt.undofile = true + +vim.opt.scrolloff = 8 + +vim.opt.updatetime = 5 diff --git a/nvim/syntax/haxe.vim b/nvim/syntax/haxe.vim new file mode 100644 index 0000000..ec950b9 --- /dev/null +++ b/nvim/syntax/haxe.vim @@ -0,0 +1,427 @@ +" Vim syntax file +" Language: haxe +" Derived from: +" http://tech.motion-twin.com/zip/haxe.vim +" and http://www.cactusflower.org/haxe.vim +" Please check :help haxe.vim for comments on some of the options available. + +set errorformat=%f\:%l\:\ characters\ %c-%*[^\ ]\ %m,%f\:%l\:\ %m + +" Quit when a syntax file was already loaded +if !exists("main_syntax") + if version < 600 + syntax clear + elseif exists("b:current_syntax") + finish + endif + let main_syntax='haxe' +endif + +if version < 508 + command! -nargs=+ HaxeHiLink hi link <args> +else + command! -nargs=+ HaxeHiLink hi def link <args> +endif + +" some characters that cannot be in a haxe program (outside a string) +syn match haxeError "[\\@`]" +syn match haxeError "<<<\|=>\|<>\|||=\|&&=\|\*\/" + +" use separate name so that it can be deleted in haxecc.vim +syn match haxeError2 "#\|=<" +HaxeHiLink haxeError2 haxeError + +syn keyword haxeExternal import extern using +syn keyword haxeDefine package +syn keyword haxeConditional if else switch +syn keyword haxeRepeat while for do in +syn keyword haxeBoolean true false +syn keyword haxeConstant null +syn keyword haxeTypedef this super +syn keyword haxeOperator new cast +syn keyword haxeCoreType Void Bool Int Float Dynamic +syn keyword haxeStatement return + +syn keyword haxeTypedef1 typedef +syn keyword haxeStructure var enum +syn keyword haxeScopeDecl private public +syn keyword haxeScopeDecl2 static override final dynamic +syn keyword haxeFunctionDef function + +syn keyword haxeExceptions throw try catch finally untyped +syn keyword haxeAssert assert +syn keyword haxeMethodDecl synchronized throws +syn keyword haxeClassDecl extends implements interface +syn match haxeDelimiter "[;:=\.]" +syn match haxeOperator "\(\.\.\.\|\*\|+\|-\|<<\|>>\|\/\|!\|||\|&&\|%\)" +syn match haxeComparison "\(==\|<=\|>=\|<\|>\|!=\)" +syn match haxeOptionalVars contained "?[a-zA-Z_]\+" + +syn match haxeFunctionRef "[_$a-zA-Z][_$a-zA-Z0-9_]*("me=e-1 + +" We use a match here to differentiate the keyword class from MyClass.class +syn match haxeTypedef "\.\s*\<class\>"ms=s+1 +syn match haxeClassDecl "^class\>" +syn match haxeClassDecl "[^.]\s*\<class\>"ms=s+1 +syn keyword haxeBranch break continue nextgroup=haxeUserLabelRef skipwhite +syn match haxeUserLabelRef "\k\+" contained +syn match haxeClassDef "\(^\s*class\s*\)\@<=[_$a-zA-Z][_$a-zA-Z0-9_]*" contains=haxeTypedef,haxeClassDecl + +syn match haxeLangClass "\<System\>" +syn keyword haxeLangClass Array ArrayAccess Class Date DateTools EReg Enum +syn keyword haxeLangClass Hash IntHash IntIter Iterable Iterator Lambda +syn keyword haxeLangClass List Math Null Reflect Std String StringBug +syn keyword haxeLangClass StringTools Type UInt ValueType Xml XmlType + +syn keyword haxeFlashTop flash +syn keyword haxeFlashInner accessibility deskdop display errors events +syn keyword haxeFlashInner external filters geom media net printing sampler +syn keyword haxeFlashInner system text ui utils xml display engine +syn keyword haxeFlashFinal BitmapData ExternalInterface BevelFilter +syn keyword haxeFlashFinal BitmapFilter BlurFilter ColorMatrixFilter ConvolutionFilter +syn keyword haxeFlashFinal DisplacementMapFilter DropShadowFilter GlowFilter GradientBevelFilter +syn keyword haxeFlashFinal GradientGlowFilter ColorTransform Matrix Point Rectangle Transform +syn keyword haxeFlashFinal FileReference FileReferenceList Capabilities IME Security StyleSheet +syn keyword haxeFlashFinal TextRenderer Accessibility Boot Button Camera Color ContextMenu +syn keyword haxeFlashFinal ContextMenuItem ExtendedKey Key Lib LoadVars +syn keyword haxeFlashFinal LocalConnection Microphone Mouse MovieClip +syn keyword haxeFlashFinal MovieClipLoader NetConnection NetStream PrintJob +syn keyword haxeFlashFinal Selection SelectionListener SharedObject Sound +syn keyword haxeFlashFinal Stage System TextField TextFormat TextSnapshot +syn keyword haxeFlashFinal Video XMLRequest XMLSocket +syn keyword haxeFlash9Final Accessibility AccessibilityImplementation +syn keyword haxeFlash9Final AccessibilityProperties Clipboard +syn keyword haxeFlash9Final ClipboardFormats ClipboardTransferMode AVM1Movie +syn keyword haxeFlash9Final ActionScriptVersion Bitmap BitmapData +syn keyword haxeFlash9Final BitmapDataChannel BlendMode CapsStyle +syn keyword haxeFlash9Final DisplayObject DisplayObjectContainer FrameLabel +syn keyword haxeFlash9Final GradientType Graphics GraphicsBitmapFill +syn keyword haxeFlash9Final GraphicsEndFill GraphicsGradientFill GraphicsPath +syn keyword haxeFlash9Final GraphicsPathCommand GraphicsPathWinding +syn keyword haxeFlash9Final GraphicsShaderFill GraphicsSolidFill +syn keyword haxeFlash9Final GraphicsStroke GraphicsTrianglePath +syn keyword haxeFlash9Final IBitmapDrawable IGraphicsData IGraphicsFill +syn keyword haxeFlash9Final IGraphicsPath IGraphicsStroke InteractiveObject +syn keyword haxeFlash9Final InterpolationMethod JointStyle +syn keyword haxeFlash9Final LineScaleMode Loader LoaderInfo MorphShape +syn keyword haxeFlash9Final MovieClip PixelSnapping SWFVersion +syn keyword haxeFlash9Final Scene Shader ShaderData ShaderInput ShaderJob ShaderParameter +syn keyword haxeFlash9Final ShaderParameterType ShaderPrecision Shape +syn keyword haxeFlash9Final SimpleButton SpreadMethod Sprite +syn keyword haxeFlash9Final Stage StageAlign StageDisplayState StageQuality +syn keyword haxeFlash9Final StageScaleMode TriangleCulling +syn keyword haxeFlash9Final EOFError Error IOError Illegal OperationError +syn keyword haxeFlash9Final InvalidSWFError MemoryError ScriptTimeoutError +syn keyword haxeFlash9Final StackOverflowError ActivityEventAsyncErrorEvent +syn keyword haxeFlash9Final ContextMenuEvent DataEvent ErrorEvent Event +syn keyword haxeFlash9Final EventDispatcher EventPhase FocusEvent +syn keyword haxeFlash9Final FullScreenEvent HTTPStatusEvent IEventDispatcher IMEEvent +syn keyword haxeFlash9Final IOErrorEvent KeyboardEvent MouseEvent +syn keyword haxeFlash9Final NetFilterEvent NetStatusEvent ProgressEvent +syn keyword haxeFlash9Final SampleDataEvent SecurityErrorEvent ShaderEvent StatusEvent +syn keyword haxeFlash9Final SyncEvent TextEvent TimerEvent WeakFunctionClosure WeakMethodClosure +syn keyword haxeFlash9Final ExternalInterface BevelFilter BitmapFilter +syn keyword haxeFlash9Final BitmapFilterQuality BitmapFilterType +syn keyword haxeFlash9Final BlurFilter ColorMatrixFilter ConvolutionFilter DisplacementMapFilter +syn keyword haxeFlash9Final DisplacementMapFilterMode DropShadowFilter +syn keyword haxeFlash9Final GlowFilter GradientBevelFilter +syn keyword haxeFlash9Final GradientGlowFilter ShaderFilter ColorTransform +syn keyword haxeFlash9Final Matrix Matrix3D Orientation3D +syn keyword haxeFlash9Final PerspectiveProjection Point Rectangle Transform +syn keyword haxeFlash9Final Utils3D Vector3D Camera ID3Info +syn keyword haxeFlash9Final Microphone Sound SoundChannel SoundCodec SoundLoaderContext SoundMixer +syn keyword haxeFlash9Final SoundTransform Video DynamicPropertyOutput FileFilter FileReference +syn keyword haxeFlash9Final FileReferenceList IDynamicPropertyOutput +syn keyword haxeFlash9Final IDynamicPropertyWriter LocalConnection +syn keyword haxeFlash9Final NetConnection NetStream NetStreamInfo NetSTreamPlayOptions +syn keyword haxeFlash9Final NetSTreamPlayTransitions ObjectEncoding Responder SharedObject +syn keyword haxeFlash9Final SharedObjectFlushStatus Socket URLLoader URLLoaderDataFormat URLRequest +syn keyword haxeFlash9Final URLRequestHeader URLRequestMethod URLStream +syn keyword haxeFlash9Final URLVariables XMLSocket PrintJob +syn keyword haxeFlash9Final PrintJobOptions PrintJobOrientation Api +syn keyword haxeFlash9Final DeleteObjectSample NewObjectSample +syn keyword haxeFlash9Final Sample StackFrame ApplicationDomain Capabilities FSCommand IME +syn keyword haxeFlash9Final IMEConversionMode JPEGLoaderContext +syn keyword haxeFlash9Final LoaderContext Security SecurityDomain +syn keyword haxeFlash9Final SecurityPanel System +syn keyword haxeFlash9Final BreakOpportunity CFFHinting ContentElement +syn keyword haxeFlash9Final DigitCase DigitWidth EastAsianJustifier ElementFormat FontDescription +syn keyword haxeFlash9Final FontLookup FontMetrics FontPosture FontWeight +syn keyword haxeFlash9Final GraphicElement GroupElement +syn keyword haxeFlash9Final JustificationStyle Kerning LIgatureLevel +syn keyword haxeFlash9Final LineJustification RenderingMode +syn keyword haxeFlash9Final SpaceJustifier TabAlignment TabStop TextBaseline TextBlock TextElement +syn keyword haxeFlash9Final TextJustifier TextLine TextLineCreationResult TextLineMirrorRegion +syn keyword haxeFlash9Final TextLineValidity TextRotation TypographicCase +syn keyword haxeFlash9Final AntiAliasType CSMSettings Font +syn keyword haxeFlash9Final FontStyle FontType GridFitType StaticText StyleSheet TextColorType +syn keyword haxeFlash9Final TextDisplayMode TextExtent TextField +syn keyword haxeFlash9Final TextFieldAutoSize TextFieldType TextFormat +syn keyword haxeFlash9Final TextFormatAlign TextFormatDisplay TextLineMetrics TextRenderer TextRun +syn keyword haxeFlash9Final TextSnapshot Trace ContextMenu ContextMenuBuiltInItems +syn keyword haxeFlash9Final ContextMenuClipboardItems ContextMenuItem KeyLocation Keyboard Mouse +syn keyword haxeFlash9Final MouseCursor ByteArray Dictionary Endian +syn keyword haxeFlash9Final IDataInput IDataOutput IExternalizable +syn keyword haxeFlash9Final Namespace ObjectInput ObjectOutput Proxy QName SetIntervalTimer Timer +syn keyword haxeFlash9Final TypedDictionary XML XMLDocument XMLList XMLNode +syn keyword haxeFlash9Final XMLNodeType XMLParser XMLTag +syn keyword haxeFlash9Final Boot Lib Memory Vector + +HaxeHiLink haxeLangObject haxeConstant +syn cluster haxeTop add=haxeLangObject,haxeLangClass +syn cluster haxeClasses add=haxeLangClass,haxeFlashClass + +if filereadable(expand("<sfile>:p:h")."/haxeid.vim") + source <sfile>:p:h/haxeid.vim +endif + +if !exists("haxe_no_trail_space_error") + syn match haxeSpaceError "\s\+$" +endif +if !exists("haxe_no_tab_space_error") + syn match haxeSpaceError " \+\t"me=e-1 +endif + +syn region haxeLabelRegion transparent matchgroup=haxeLabel start="\<case\>" + \ matchgroup=NONE end=":" + \ contains=haxeNumber,haxeChr,haxeNumber2 +syn match haxeUserLabel "\({\s*\|^\s*\|,\s*\)\@<=[_$a-zA-Z][_$a-zA-Z0-9_]*:\s"he=e-1 contains=haxeDelimiter + \ contains=haxeLabel +syn keyword haxeLabel default never + +" Everything - used in parenthases checking or something +syn cluster haxeTop add=haxeExternal,haxeError,haxeError,haxeBranch, + \ haxeLabelRegion,haxeLabel,haxeConditional, + \ haxeRepeat,haxeBoolean,haxeConstant, + \ haxeTypedef,haxeOperator,haxeType,haxeCoreType, + \ haxeStatement,haxeStorageClass,haxeAssert, + \ haxeExceptions,haxeMethodDecl,haxeClassDecl, + \ haxeClassDecl,haxeClassDecl,haxeScopeDecl, + \ haxeError,haxeError2,haxeUserLabel, + \ haxeLangObject,haxeFlashTop,haxeFlashInner, + \ haxeFlashFinal,haxeFlash9Final,haxeFunctionRef, + \ haxeComparison,haxeOptionalVars + +" Comments +syn keyword haxeTodo contained TODO FIXME XXX +if exists("haxe_comment_strings") + syn region haxeCmString contained start=+"+ end=+"+ end=+$+ + \ end=+\*/+me=s-1,he=s-1 + \ contains=haxeSpecial,haxeCmStar,haxeSpecChr,@Spell + syn region haxeCm2String contained start=+"+ end=+$\|"+ + \ contains=haxeSpecial,haxeSpecChr,@Spell + syn match haxeCmCharacter contained "'\\[^']\{1,6\}'" contains=haxeSpecChr + syn match haxeCmCharacter contained "'\\''" contains=haxeSpecChr + syn match haxeCmCharacter contained "'[^\\]'" + syn cluster haxeCmSpecial add=haxeCmString,haxeCmCharacter,haxeNumber,haxeNumber2 + syn cluster haxeCmSpecial2 add=haxeCm2String,haxeCmCharacter,haxeNumber,haxeNumber2 +endif +syn region haxeCm start="/\*" end="\*/" + \ contains=@haxeCmSpecial,haxeTodo,@Spell +syn match haxeCmStar contained "^\s*\*[^/]"me=e-1 +syn match haxeCmStar contained "^\s*\*$" +syn match haxeLineCm "//.*" contains=@haxeCmSpecial2,haxeTodo,@Spell +HaxeHiLink haxeCmString haxeDocTags +HaxeHiLink haxeCm2String haxeString +HaxeHiLink haxeCmCharacter haxeChr +syn cluster haxeTop add=haxeCm,haxeLineCm +if exists("haxe_haxedoc") || main_syntax == 'jsp' + syntax case ignore + " syntax coloring for haxedoc comments (HTML) + " syntax include @haxeHtml <sfile>:p:h/html.vim + " unlet b:current_syntax + syn region haxeDocCm start="/\*\*" end="\*/" keepend + \ contains=haxeCmTitle,@haxeHtml,haxeDocTags,haxeTodo,@Spell,haxeProposedTags + syn region haxeCmTitle contained matchgroup=haxeDocCm start="/\*\*" + \ matchgroup=haxeCmTitle keepend end="\.$" + \ end="\.[ \t\r<]"me=e-1 + \ end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 + \ contains=@haxeHtml,haxeCmStar,haxeTodo,@Spell,haxeDocTags,haxeProposedTags + syn region haxeDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" + \ end="}" + syn match haxeDocTags contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+" + \ contains=haxeDocParam + syn match haxeDocParam contained "\s\S\+" + syn match haxeDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>" + syn match haxeProposedTags contained "@\(category\|example\|tutorial\|index\|exclude\|todo\|internal\|obsolete\)\>" + syntax case match +endif +syn match haxeCm "/\*\*/" " Edge case + + +" Strings and constants +syn match haxeSpecError contained "\\." +"syn match haxeSpecChrError contained "[^']" +syn match haxeSpecChr contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" +syn match haxeEregEscape contained "\(\\\\\|\\/\)" +syn region haxeEreg start=+\~\/+ end=+\/[gims]*+ contains=haxeEregEscape + +syn region haxeString start=+"+ end=+"+ contains=haxeSpecChr,haxeSpecError,@Spell +syn region haxeSingleString start=+'+ end=+'+ +syn match haxeChr "'[^']*'" contains=haxeSpecChr,haxeSpecChrError +syn match haxeChr "'\\''" contains=haxeSpecChr +syn match haxeChr "'[^\\]'" +syn match haxeNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" contains=haxeSpecNum +"syn match haxeNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" +syn match haxeNumber2 "\(\<\d\+\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" contains=haxeSpecNum +syn match haxeNumber2 "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" contains=haxeSpecNum +syn match haxeNumber2 "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" contains=haxeSpecNum +syn match haxeSpecNum contained "\(0[xX]\|[\.+-]\)" + +syn region haxeCondIf start="#if \+!\?" end="\(\W\|$\)" skip="([A-Za-z0-9_ |&!]\+)" +syn region haxeCondElseIf start="#elseif \+!\?" end="\(\W\|$\)" skip="([A-Za-z0-9_ |&!]\+)" +syn match haxeCondElse "#else\s*$" +syn match haxeCondEnd "#end" +syn match haxeCondError "#else .*$" + +" unicode characters +syn match haxeSpecial "\\u\d\{4\}" + +syn match haxeType ":[a-zA-Z_\.]\+" + \ contains=haxeDelimiter,haxeCoreType,haxeFlashTop,haxeFlashInner,haxeFlashFinal,haxeFlash9Final + +syn cluster haxeTop add=haxeString,haxeChr,haxeNumber,haxeNumber2 +syn cluster haxeTop add=haxeSpecial,haxeStringError,haxeDelimiter,haxeType + +syn keyword haxeTraceFun trace contained +syn region haxeTrace start=+\(^\s*\)\@<=trace(+ end=+);+ contains=haxeTraceFun + +if exists("haxe_highlight_functions") + if haxe_highlight_functions == "indent" + syn match haxeFuncDef "^\(\t\| \{4\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" + \ contains=haxeType,haxeStorageClass,@haxeClasses + syn region haxeFuncDef start=+^\(\t\| \{4\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ + \ end=+)+ contains=haxeType,haxeStorageClass,@haxeClasses + syn match haxeFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" + \ contains=haxeType,haxeStorageClass,@haxeClasses + syn region haxeFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ + \ end=+)+ + \ contains=haxeType,haxeStorageClass,@haxeClasses + else + " This line catches method declarations at any indentation>0, but it assumes + " two things: + " 1. class names are always capitalized (ie: Button) + " 2. method names are never capitalized (except constructors, of course) + syn region haxeFuncDef start=+\s\+\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*(+ + \ end=+)+ + \ contains=haxeType,haxeStorageClass,haxeCm,haxeLineCm,@haxeClasses + endif + syn match haxeBraces "[{}]" + syn cluster haxeTop add=haxeFuncDef,haxeBraces +endif + +if exists("haxe_mark_braces_in_parens_as_errors") + syn match haxeInParen contained "[{}]" + HaxeHiLink haxeInParen haxeError + syn cluster haxeTop add=haxeInParen +endif + +" catch errors caused by wrong parenthesis +syn region haxeParenT transparent matchgroup=haxeParen start="(" + \ end=")" contains=@haxeTop,haxeParenT1 +syn region haxeParenT1 transparent matchgroup=haxeParen1 start="(" + \ end=")" contains=@haxeTop,haxeParenT2 contained +syn region haxeParenT2 transparent matchgroup=haxeParen2 start="(" + \ end=")" contains=@haxeTop,haxeParenT contained +syn match haxeParenError ")" +HaxeHiLink haxeParenError haxeError + + +if !exists("haxe_minlines") + let haxe_minlines = 5000 +endif +exec "syn sync ccomment haxeCm minlines=" . haxe_minlines +syn sync linebreaks=30 + +" The default highlighting. +if version >= 508 || !exists("did_haxe_syn_inits") + if version < 508 + let did_haxe_syn_inits = 1 + endif + + HaxeHiLink haxeFunctionDef Identifier + HaxeHiLink haxeFuncDef Identifier + HaxeHiLink haxeFunctionRef Function + HaxeHiLink haxeBraces Function + HaxeHiLink haxeBranch Conditional + HaxeHiLink haxeUserLabelRef haxeUserLabel + HaxeHiLink haxeLabel Label + HaxeHiLink haxeUserLabel Label + HaxeHiLink haxeConditional Conditional + HaxeHiLink haxeRepeat Repeat + HaxeHiLink haxeExceptions Exception + HaxeHiLink haxeAssert Statement + + HaxeHiLink haxeClassDef Underlined + HaxeHiLink haxeStructure Structure + HaxeHiLink haxeMethodDecl haxeStorageClass + HaxeHiLink haxeClassDecl Structure + HaxeHiLink haxeScopeDecl StorageClass + HaxeHiLink haxeScopeDecl2 Tag + HaxeHiLink haxeBoolean Boolean + HaxeHiLink haxeSpecial Special + HaxeHiLink haxeSpecError Error + HaxeHiLink haxeSpecChrError Error + HaxeHiLink haxeString String + HaxeHiLink haxeSingleString Character + + HaxeHiLink haxeEreg Number + HaxeHiLink haxeEregEscape Debug + HaxeHiLink haxeChr Character + HaxeHiLink haxeSpecChr SpecialChar + HaxeHiLink haxeNumber Number + HaxeHiLink haxeNumber2 Float + HaxeHiLink haxeSpecNum Boolean + HaxeHiLink haxeError Error + HaxeHiLink haxeStringError Debug + HaxeHiLink haxeStatement Statement + HaxeHiLink haxeOperator Operator + HaxeHiLink haxeComparison Repeat + HaxeHiLink haxeTraceFun SpecialComment + HaxeHiLink haxeTrace Comment + HaxeHiLink haxeDelimiter Delimiter + + HaxeHiLink haxeCm Comment + HaxeHiLink haxeDocCm Comment + HaxeHiLink haxeLineCm Comment + HaxeHiLink haxeConstant Constant + HaxeHiLink haxeTypedef Typedef + HaxeHiLink haxeTypedef1 Typedef + HaxeHiLink haxeTodo Todo + HaxeHiLink haxeLangClass Special + HaxeHiLink haxeFlashClass Keyword + HaxeHiLink haxeFunction Function + HaxeHiLink haxeCmTitle Special + HaxeHiLink haxeDocTags SpecialComment + HaxeHiLink haxeProposedTags SpecialComment + HaxeHiLink haxeCmStar Comment + + HaxeHiLink haxeDocParam Function + HaxeHiLink haxeCoreType Keyword + HaxeHiLink haxeType Type + HaxeHiLink haxeExternal Include + HaxeHiLink haxeDefine Define + HaxeHiLink htmlComment Special + HaxeHiLink htmlCommentPart Special + HaxeHiLink haxeSpaceError Error + HaxeHiLink haxeCondIf PreCondit + HaxeHiLink haxeCondElseIf PreCondit + HaxeHiLink haxeCondElse PreProc + HaxeHiLink haxeCondEnd PreProc + + HaxeHiLink haxeCondError Error + + HaxeHiLink haxeFlashTop PreProc + HaxeHiLink haxeFlashInner Macro + HaxeHiLink haxeFlashFinal Define + HaxeHiLink haxeFlash9Final Define + + HaxeHiLink haxeOptionalVars Identifier +endif + +delcommand HaxeHiLink +let b:current_syntax = "haxe" +if main_syntax == 'haxe' + unlet main_syntax +endif +let b:spell_options="contained" diff --git a/nvim/syntax/jank.vim b/nvim/syntax/jank.vim new file mode 100644 index 0000000..b22db5c --- /dev/null +++ b/nvim/syntax/jank.vim @@ -0,0 +1,225 @@ +" Vim indent file +" Language: Clojure +" Maintainer: Alex Vear <alex@vear.uk> +" Former Maintainers: Sung Pae <self@sungpae.com> +" Meikel Brandmeyer <mb@kotka.de> +" Toralf Wittner <toralf.wittner@gmail.com> +" Contributors: Joel Holdbrooks <cjholdbrooks@gmail.com> (Regexp support, bug fixes) +" URL: https://github.com/clojure-vim/clojure.vim +" License: Vim (see :h license) +" Last Change: 2022-03-24 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_sav = &cpo +set cpo&vim + +if has("folding") && exists("g:clojure_fold") && g:clojure_fold > 0 + setlocal foldmethod=syntax +endif + +" -*- KEYWORDS -*- +" Generated from https://github.com/clojure-vim/clojure.vim/blob/fd280e33e84c88e97860930557dba3ff80b1a82d/clj/src/vim_clojure_static/generate.clj +" Clojure version 1.11.0 +let s:clojure_syntax_keywords = { + \ 'clojureBoolean': ["false","true"], + \ 'clojureCond': ["case","case*","clojure.core/case","clojure.core/cond","clojure.core/cond->","clojure.core/cond->>","clojure.core/condp","clojure.core/if-let","clojure.core/if-not","clojure.core/if-some","clojure.core/when","clojure.core/when-first","clojure.core/when-let","clojure.core/when-not","clojure.core/when-some","cond","cond->","cond->>","condp","if","if-let","if-not","if-some","when","when-first","when-let","when-not","when-some"], + \ 'clojureConstant': ["nil"], + \ 'clojureDefine': ["clojure.core/definline","clojure.core/definterface","clojure.core/defmacro","clojure.core/defmethod","clojure.core/defmulti","clojure.core/defn","clojure.core/defn-","clojure.core/defonce","clojure.core/defprotocol","clojure.core/defrecord","clojure.core/defstruct","clojure.core/deftype","def","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","deftype*"], + \ 'clojureException': ["catch","finally","throw","try"], + \ 'clojureFunc': ["*","*'","+","+'","-","-'","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","/","<","<=","=","==",">",">=","NaN?","PrintWriter-on","StackTraceElement->vec","Throwable->map","abs","accessor","aclone","add-classpath","add-tap","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","ancestors","any?","apply","array-map","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","cast","cat","char","char-array","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","clojure.core/*","clojure.core/*'","clojure.core/+","clojure.core/+'","clojure.core/-","clojure.core/-'","clojure.core/->ArrayChunk","clojure.core/->Eduction","clojure.core/->Vec","clojure.core/->VecNode","clojure.core/->VecSeq","clojure.core/-cache-protocol-fn","clojure.core/-reset-methods","clojure.core//","clojure.core/<","clojure.core/<=","clojure.core/=","clojure.core/==","clojure.core/>","clojure.core/>=","clojure.core/NaN?","clojure.core/PrintWriter-on","clojure.core/StackTraceElement->vec","clojure.core/Throwable->map","clojure.core/abs","clojure.core/accessor","clojure.core/aclone","clojure.core/add-classpath","clojure.core/add-tap","clojure.core/add-watch","clojure.core/agent","clojure.core/agent-error","clojure.core/agent-errors","clojure.core/aget","clojure.core/alength","clojure.core/alias","clojure.core/all-ns","clojure.core/alter","clojure.core/alter-meta!","clojure.core/alter-var-root","clojure.core/ancestors","clojure.core/any?","clojure.core/apply","clojure.core/array-map","clojure.core/aset","clojure.core/aset-boolean","clojure.core/aset-byte","clojure.core/aset-char","clojure.core/aset-double","clojure.core/aset-float","clojure.core/aset-int","clojure.core/aset-long","clojure.core/aset-short","clojure.core/assoc","clojure.core/assoc!","clojure.core/assoc-in","clojure.core/associative?","clojure.core/atom","clojure.core/await","clojure.core/await-for","clojure.core/await1","clojure.core/bases","clojure.core/bean","clojure.core/bigdec","clojure.core/bigint","clojure.core/biginteger","clojure.core/bit-and","clojure.core/bit-and-not","clojure.core/bit-clear","clojure.core/bit-flip","clojure.core/bit-not","clojure.core/bit-or","clojure.core/bit-set","clojure.core/bit-shift-left","clojure.core/bit-shift-right","clojure.core/bit-test","clojure.core/bit-xor","clojure.core/boolean","clojure.core/boolean-array","clojure.core/boolean?","clojure.core/booleans","clojure.core/bound-fn*","clojure.core/bound?","clojure.core/bounded-count","clojure.core/butlast","clojure.core/byte","clojure.core/byte-array","clojure.core/bytes","clojure.core/bytes?","clojure.core/cast","clojure.core/cat","clojure.core/char","clojure.core/char-array","clojure.core/char?","clojure.core/chars","clojure.core/chunk","clojure.core/chunk-append","clojure.core/chunk-buffer","clojure.core/chunk-cons","clojure.core/chunk-first","clojure.core/chunk-next","clojure.core/chunk-rest","clojure.core/chunked-seq?","clojure.core/class","clojure.core/class?","clojure.core/clear-agent-errors","clojure.core/clojure-version","clojure.core/coll?","clojure.core/commute","clojure.core/comp","clojure.core/comparator","clojure.core/compare","clojure.core/compare-and-set!","clojure.core/compile","clojure.core/complement","clojure.core/completing","clojure.core/concat","clojure.core/conj","clojure.core/conj!","clojure.core/cons","clojure.core/constantly","clojure.core/construct-proxy","clojure.core/contains?","clojure.core/count","clojure.core/counted?","clojure.core/create-ns","clojure.core/create-struct","clojure.core/cycle","clojure.core/dec","clojure.core/dec'","clojure.core/decimal?","clojure.core/dedupe","clojure.core/delay?","clojure.core/deliver","clojure.core/denominator","clojure.core/deref","clojure.core/derive","clojure.core/descendants","clojure.core/destructure","clojure.core/disj","clojure.core/disj!","clojure.core/dissoc","clojure.core/dissoc!","clojure.core/distinct","clojure.core/distinct?","clojure.core/doall","clojure.core/dorun","clojure.core/double","clojure.core/double-array","clojure.core/double?","clojure.core/doubles","clojure.core/drop","clojure.core/drop-last","clojure.core/drop-while","clojure.core/eduction","clojure.core/empty","clojure.core/empty?","clojure.core/ensure","clojure.core/ensure-reduced","clojure.core/enumeration-seq","clojure.core/error-handler","clojure.core/error-mode","clojure.core/eval","clojure.core/even?","clojure.core/every-pred","clojure.core/every?","clojure.core/ex-cause","clojure.core/ex-data","clojure.core/ex-info","clojure.core/ex-message","clojure.core/extend","clojure.core/extenders","clojure.core/extends?","clojure.core/false?","clojure.core/ffirst","clojure.core/file-seq","clojure.core/filter","clojure.core/filterv","clojure.core/find","clojure.core/find-keyword","clojure.core/find-ns","clojure.core/find-protocol-impl","clojure.core/find-protocol-method","clojure.core/find-var","clojure.core/first","clojure.core/flatten","clojure.core/float","clojure.core/float-array","clojure.core/float?","clojure.core/floats","clojure.core/flush","clojure.core/fn?","clojure.core/fnext","clojure.core/fnil","clojure.core/force","clojure.core/format","clojure.core/frequencies","clojure.core/future-call","clojure.core/future-cancel","clojure.core/future-cancelled?","clojure.core/future-done?","clojure.core/future?","clojure.core/gensym","clojure.core/get","clojure.core/get-in","clojure.core/get-method","clojure.core/get-proxy-class","clojure.core/get-thread-bindings","clojure.core/get-validator","clojure.core/group-by","clojure.core/halt-when","clojure.core/hash","clojure.core/hash-combine","clojure.core/hash-map","clojure.core/hash-ordered-coll","clojure.core/hash-set","clojure.core/hash-unordered-coll","clojure.core/ident?","clojure.core/identical?","clojure.core/identity","clojure.core/ifn?","clojure.core/in-ns","clojure.core/inc","clojure.core/inc'","clojure.core/indexed?","clojure.core/infinite?","clojure.core/init-proxy","clojure.core/inst-ms","clojure.core/inst-ms*","clojure.core/inst?","clojure.core/instance?","clojure.core/int","clojure.core/int-array","clojure.core/int?","clojure.core/integer?","clojure.core/interleave","clojure.core/intern","clojure.core/interpose","clojure.core/into","clojure.core/into-array","clojure.core/ints","clojure.core/isa?","clojure.core/iterate","clojure.core/iteration","clojure.core/iterator-seq","clojure.core/juxt","clojure.core/keep","clojure.core/keep-indexed","clojure.core/key","clojure.core/keys","clojure.core/keyword","clojure.core/keyword?","clojure.core/last","clojure.core/line-seq","clojure.core/list","clojure.core/list*","clojure.core/list?","clojure.core/load","clojure.core/load-file","clojure.core/load-reader","clojure.core/load-string","clojure.core/loaded-libs","clojure.core/long","clojure.core/long-array","clojure.core/longs","clojure.core/macroexpand","clojure.core/macroexpand-1","clojure.core/make-array","clojure.core/make-hierarchy","clojure.core/map","clojure.core/map-entry?","clojure.core/map-indexed","clojure.core/map?","clojure.core/mapcat","clojure.core/mapv","clojure.core/max","clojure.core/max-key","clojure.core/memoize","clojure.core/merge","clojure.core/merge-with","clojure.core/meta","clojure.core/method-sig","clojure.core/methods","clojure.core/min","clojure.core/min-key","clojure.core/mix-collection-hash","clojure.core/mod","clojure.core/munge","clojure.core/name","clojure.core/namespace","clojure.core/namespace-munge","clojure.core/nat-int?","clojure.core/neg-int?","clojure.core/neg?","clojure.core/newline","clojure.core/next","clojure.core/nfirst","clojure.core/nil?","clojure.core/nnext","clojure.core/not","clojure.core/not-any?","clojure.core/not-empty","clojure.core/not-every?","clojure.core/not=","clojure.core/ns-aliases","clojure.core/ns-imports","clojure.core/ns-interns","clojure.core/ns-map","clojure.core/ns-name","clojure.core/ns-publics","clojure.core/ns-refers","clojure.core/ns-resolve","clojure.core/ns-unalias","clojure.core/ns-unmap","clojure.core/nth","clojure.core/nthnext","clojure.core/nthrest","clojure.core/num","clojure.core/number?","clojure.core/numerator","clojure.core/object-array","clojure.core/odd?","clojure.core/parents","clojure.core/parse-boolean","clojure.core/parse-double","clojure.core/parse-long","clojure.core/parse-uuid","clojure.core/partial","clojure.core/partition","clojure.core/partition-all","clojure.core/partition-by","clojure.core/pcalls","clojure.core/peek","clojure.core/persistent!","clojure.core/pmap","clojure.core/pop","clojure.core/pop!","clojure.core/pop-thread-bindings","clojure.core/pos-int?","clojure.core/pos?","clojure.core/pr","clojure.core/pr-str","clojure.core/prefer-method","clojure.core/prefers","clojure.core/print","clojure.core/print-ctor","clojure.core/print-dup","clojure.core/print-method","clojure.core/print-simple","clojure.core/print-str","clojure.core/printf","clojure.core/println","clojure.core/println-str","clojure.core/prn","clojure.core/prn-str","clojure.core/promise","clojure.core/proxy-call-with-super","clojure.core/proxy-mappings","clojure.core/proxy-name","clojure.core/push-thread-bindings","clojure.core/qualified-ident?","clojure.core/qualified-keyword?","clojure.core/qualified-symbol?","clojure.core/quot","clojure.core/rand","clojure.core/rand-int","clojure.core/rand-nth","clojure.core/random-sample","clojure.core/random-uuid","clojure.core/range","clojure.core/ratio?","clojure.core/rational?","clojure.core/rationalize","clojure.core/re-find","clojure.core/re-groups","clojure.core/re-matcher","clojure.core/re-matches","clojure.core/re-pattern","clojure.core/re-seq","clojure.core/read","clojure.core/read+string","clojure.core/read-line","clojure.core/read-string","clojure.core/reader-conditional","clojure.core/reader-conditional?","clojure.core/realized?","clojure.core/record?","clojure.core/reduce","clojure.core/reduce-kv","clojure.core/reduced","clojure.core/reduced?","clojure.core/reductions","clojure.core/ref","clojure.core/ref-history-count","clojure.core/ref-max-history","clojure.core/ref-min-history","clojure.core/ref-set","clojure.core/refer","clojure.core/release-pending-sends","clojure.core/rem","clojure.core/remove","clojure.core/remove-all-methods","clojure.core/remove-method","clojure.core/remove-ns","clojure.core/remove-tap","clojure.core/remove-watch","clojure.core/repeat","clojure.core/repeatedly","clojure.core/replace","clojure.core/replicate","clojure.core/require","clojure.core/requiring-resolve","clojure.core/reset!","clojure.core/reset-meta!","clojure.core/reset-vals!","clojure.core/resolve","clojure.core/rest","clojure.core/restart-agent","clojure.core/resultset-seq","clojure.core/reverse","clojure.core/reversible?","clojure.core/rseq","clojure.core/rsubseq","clojure.core/run!","clojure.core/satisfies?","clojure.core/second","clojure.core/select-keys","clojure.core/send","clojure.core/send-off","clojure.core/send-via","clojure.core/seq","clojure.core/seq-to-map-for-destructuring","clojure.core/seq?","clojure.core/seqable?","clojure.core/seque","clojure.core/sequence","clojure.core/sequential?","clojure.core/set","clojure.core/set-agent-send-executor!","clojure.core/set-agent-send-off-executor!","clojure.core/set-error-handler!","clojure.core/set-error-mode!","clojure.core/set-validator!","clojure.core/set?","clojure.core/short","clojure.core/short-array","clojure.core/shorts","clojure.core/shuffle","clojure.core/shutdown-agents","clojure.core/simple-ident?","clojure.core/simple-keyword?","clojure.core/simple-symbol?","clojure.core/slurp","clojure.core/some","clojure.core/some-fn","clojure.core/some?","clojure.core/sort","clojure.core/sort-by","clojure.core/sorted-map","clojure.core/sorted-map-by","clojure.core/sorted-set","clojure.core/sorted-set-by","clojure.core/sorted?","clojure.core/special-symbol?","clojure.core/spit","clojure.core/split-at","clojure.core/split-with","clojure.core/str","clojure.core/string?","clojure.core/struct","clojure.core/struct-map","clojure.core/subs","clojure.core/subseq","clojure.core/subvec","clojure.core/supers","clojure.core/swap!","clojure.core/swap-vals!","clojure.core/symbol","clojure.core/symbol?","clojure.core/tagged-literal","clojure.core/tagged-literal?","clojure.core/take","clojure.core/take-last","clojure.core/take-nth","clojure.core/take-while","clojure.core/tap>","clojure.core/test","clojure.core/the-ns","clojure.core/thread-bound?","clojure.core/to-array","clojure.core/to-array-2d","clojure.core/trampoline","clojure.core/transduce","clojure.core/transient","clojure.core/tree-seq","clojure.core/true?","clojure.core/type","clojure.core/unchecked-add","clojure.core/unchecked-add-int","clojure.core/unchecked-byte","clojure.core/unchecked-char","clojure.core/unchecked-dec","clojure.core/unchecked-dec-int","clojure.core/unchecked-divide-int","clojure.core/unchecked-double","clojure.core/unchecked-float","clojure.core/unchecked-inc","clojure.core/unchecked-inc-int","clojure.core/unchecked-int","clojure.core/unchecked-long","clojure.core/unchecked-multiply","clojure.core/unchecked-multiply-int","clojure.core/unchecked-negate","clojure.core/unchecked-negate-int","clojure.core/unchecked-remainder-int","clojure.core/unchecked-short","clojure.core/unchecked-subtract","clojure.core/unchecked-subtract-int","clojure.core/underive","clojure.core/unreduced","clojure.core/unsigned-bit-shift-right","clojure.core/update","clojure.core/update-in","clojure.core/update-keys","clojure.core/update-proxy","clojure.core/update-vals","clojure.core/uri?","clojure.core/use","clojure.core/uuid?","clojure.core/val","clojure.core/vals","clojure.core/var-get","clojure.core/var-set","clojure.core/var?","clojure.core/vary-meta","clojure.core/vec","clojure.core/vector","clojure.core/vector-of","clojure.core/vector?","clojure.core/volatile!","clojure.core/volatile?","clojure.core/vreset!","clojure.core/with-bindings*","clojure.core/with-meta","clojure.core/with-redefs-fn","clojure.core/xml-seq","clojure.core/zero?","clojure.core/zipmap","coll?","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","dedupe","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-cause","ex-data","ex-info","ex-message","extend","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn?","fnext","fnil","force","format","frequencies","future-call","future-cancel","future-cancelled?","future-done?","future?","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","ifn?","in-ns","inc","inc'","indexed?","infinite?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","isa?","iterate","iteration","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","long","long-array","longs","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","parents","parse-boolean","parse-double","parse-long","parse-uuid","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy-call-with-super","proxy-mappings","proxy-name","push-thread-bindings","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","random-uuid","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read+string","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-tap","remove-watch","repeat","repeatedly","replace","replicate","require","requiring-resolve","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq-to-map-for-destructuring","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","tap>","test","the-ns","thread-bound?","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unreduced","unsigned-bit-shift-right","update","update-in","update-keys","update-proxy","update-vals","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","with-bindings*","with-meta","with-redefs-fn","xml-seq","zero?","zipmap"], + \ 'clojureMacro': ["->","->>","..","amap","and","areduce","as->","assert","binding","bound-fn","clojure.core/->","clojure.core/->>","clojure.core/..","clojure.core/amap","clojure.core/and","clojure.core/areduce","clojure.core/as->","clojure.core/assert","clojure.core/binding","clojure.core/bound-fn","clojure.core/comment","clojure.core/declare","clojure.core/delay","clojure.core/dosync","clojure.core/doto","clojure.core/extend-protocol","clojure.core/extend-type","clojure.core/for","clojure.core/future","clojure.core/gen-class","clojure.core/gen-interface","clojure.core/import","clojure.core/io!","clojure.core/lazy-cat","clojure.core/lazy-seq","clojure.core/locking","clojure.core/memfn","clojure.core/ns","clojure.core/or","clojure.core/proxy","clojure.core/proxy-super","clojure.core/pvalues","clojure.core/refer-clojure","clojure.core/reify","clojure.core/some->","clojure.core/some->>","clojure.core/sync","clojure.core/time","clojure.core/vswap!","clojure.core/with-bindings","clojure.core/with-in-str","clojure.core/with-loading-context","clojure.core/with-local-vars","clojure.core/with-open","clojure.core/with-out-str","clojure.core/with-precision","clojure.core/with-redefs","comment","declare","delay","dosync","doto","extend-protocol","extend-type","for","future","gen-class","gen-interface","import","io!","lazy-cat","lazy-seq","locking","memfn","ns","or","proxy","proxy-super","pvalues","refer-clojure","reify","some->","some->>","sync","time","vswap!","with-bindings","with-in-str","with-loading-context","with-local-vars","with-open","with-out-str","with-precision","with-redefs"], + \ 'clojureRepeat': ["clojure.core/doseq","clojure.core/dotimes","clojure.core/loop","clojure.core/while","doseq","dotimes","loop","loop*","recur","while"], + \ 'clojureSpecial': ["&",".","clojure.core/fn","clojure.core/import*","clojure.core/let","clojure.core/letfn","do","fn","fn*","let","let*","letfn","letfn*","monitor-enter","monitor-exit","new","quote","reify*","set!","var"], + \ 'clojureVariable': ["*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","EMPTY-NODE","Inst","char-escape-string","char-name-string","clojure.core/*1","clojure.core/*2","clojure.core/*3","clojure.core/*agent*","clojure.core/*allow-unresolved-vars*","clojure.core/*assert*","clojure.core/*clojure-version*","clojure.core/*command-line-args*","clojure.core/*compile-files*","clojure.core/*compile-path*","clojure.core/*compiler-options*","clojure.core/*data-readers*","clojure.core/*default-data-reader-fn*","clojure.core/*e","clojure.core/*err*","clojure.core/*file*","clojure.core/*flush-on-newline*","clojure.core/*fn-loader*","clojure.core/*in*","clojure.core/*math-context*","clojure.core/*ns*","clojure.core/*out*","clojure.core/*print-dup*","clojure.core/*print-length*","clojure.core/*print-level*","clojure.core/*print-meta*","clojure.core/*print-namespace-maps*","clojure.core/*print-readably*","clojure.core/*read-eval*","clojure.core/*reader-resolver*","clojure.core/*source-path*","clojure.core/*suppress-read*","clojure.core/*unchecked-math*","clojure.core/*use-context-classloader*","clojure.core/*verbose-defrecords*","clojure.core/*warn-on-reflection*","clojure.core/EMPTY-NODE","clojure.core/Inst","clojure.core/char-escape-string","clojure.core/char-name-string","clojure.core/default-data-readers","clojure.core/primitives-classnames","clojure.core/print-dup","clojure.core/print-method","clojure.core/unquote","clojure.core/unquote-splicing","default-data-readers","primitives-classnames","print-dup","print-method","unquote","unquote-splicing"] + \ } + +function! s:syntax_keyword(dict) + for key in keys(a:dict) + execute 'syntax keyword' key join(a:dict[key], ' ') + endfor +endfunction + +if exists('b:clojure_syntax_without_core_keywords') && b:clojure_syntax_without_core_keywords + " Only match language specials and primitives + for s:key in ['clojureBoolean', 'clojureConstant', 'clojureException', 'clojureSpecial'] + execute 'syntax keyword' s:key join(s:clojure_syntax_keywords[s:key], ' ') + endfor +else + call s:syntax_keyword(s:clojure_syntax_keywords) +endif + +if exists('g:clojure_syntax_keywords') + call s:syntax_keyword(g:clojure_syntax_keywords) +endif + +if exists('b:clojure_syntax_keywords') + call s:syntax_keyword(b:clojure_syntax_keywords) +endif + +unlet! s:key +delfunction s:syntax_keyword + +" Keywords are symbols: +" static Pattern symbolPat = Pattern.compile("[:]?([\\D&&[^/]].*/)?([\\D&&[^/]][^/]*)"); +" But they: +" * Must not end in a : or / +" * Must not have two adjacent colons except at the beginning +" * Must not contain any reader metacharacters except for ' and # +syntax match clojureKeyword "\v<:{1,2}([^ \n\r\t()\[\]{}";@^`~\\/]+/)*[^ \n\r\t()\[\]{}";@^`~\\/]+:@1<!>" + +syntax match clojureStringEscape "\v\\%([\\btnfr"]|u\x{4}|[0-3]\o{2}|\o{1,2})" contained + +syntax region clojureString matchgroup=clojureStringDelimiter start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=clojureStringEscape,@Spell + +syntax match clojureCharacter "\v\\%(o%([0-3]\o{2}|\o{1,2})|u\x{4}|newline|tab|space|return|backspace|formfeed|.)" + +syntax match clojureSymbol "\v%([a-zA-Z!$&*_+=|<.>?-]|[^\x00-\x7F])+%(:?%([a-zA-Z0-9!#$%&*_+=|'<.>/?-]|[^\x00-\x7F]))*[#:]@1<!" + +" NB. Correct matching of radix literals was removed for better performance. +syntax match clojureNumber "\v<[-+]?%(%([2-9]|[12]\d|3[0-6])[rR][[:alnum:]]+|%(0\o*|0x\x+|[1-9]\d*)N?|%(0|[1-9]\d*|%(0|[1-9]\d*)\.\d*)%(M|[eE][-+]?\d+)?|%(0|[1-9]\d*)/%(0|[1-9]\d*))>" + +syntax match clojureQuote "\v['`]" +syntax match clojureUnquote "\v\~\@?" +syntax match clojureMeta "\^" +syntax match clojureDeref "@" +syntax match clojureDispatch "\v#[\^'=<_]?" + +" Clojure permits no more than 20 anonymous params. +syntax match clojureAnonArg "%\(20\|1\d\|[1-9]\|&\)\?" + +syntax match clojureRegexpEscape "\v\\%([\\tnrfae.()\[\]{}^$*?+]|c\u|0[0-3]?\o{1,2}|x%(\x{2}|\{\x{1,6}\})|u\x{4})" contained display +syntax region clojureRegexpQuoted start=/\\Q/ms=e+1 skip=/\\\\\|\\"/ end=/\\E/me=s-1 end=/"/me=s-1 contained +syntax region clojureRegexpQuote start=/\\Q/ skip=/\\\\\|\\"/ end=/\\E/ end=/"/me=s-1 contains=clojureRegexpQuoted keepend contained + +" -*- CHARACTER PROPERTY CLASSES -*- +" Generated from https://github.com/clojure-vim/clojure.vim/blob/fd280e33e84c88e97860930557dba3ff80b1a82d/clj/src/vim_clojure_static/generate.clj +" Java version 17.0.2 +syntax match clojureRegexpPosixCharClass "\v\\[pP]\{%(Cntrl|A%(l%(pha|num)|SCII)|Space|Graph|Upper|P%(rint|unct)|Blank|XDigit|Digit|Lower)\}" contained display +syntax match clojureRegexpJavaCharClass "\v\\[pP]\{java%(Whitespace|JavaIdentifier%(Part|Start)|SpaceChar|Mirrored|TitleCase|I%(SOControl|de%(ographic|ntifierIgnorable))|D%(efined|igit)|U%(pperCase|nicodeIdentifier%(Part|Start))|L%(etter%(OrDigit)?|owerCase)|Alphabetic)\}" contained display +syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\cIs%(l%(owercase|etter)|hex%(digit|_digit)|w%(hite%(_space|space)|ord)|noncharacter%(_code_point|codepoint)|p%(rint|unctuation)|ideographic|graph|a%(l%(num|phabetic)|ssigned)|uppercase|join%(control|_control)|titlecase|blank|digit|control)\}" contained display +syntax match clojureRegexpUnicodeCharClass "\v\\[pP][NSCMZPL]" contained display +syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{%(N[dlo]?|P[dcifeos]?|C[ncfos]?|M[nce]?|Z[lsp]?|S[mcko]?|L[muCDlto]?)\}" contained display +syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{%(Is|gc\=|general_category\=)?%(N[dlo]?|P[dcifeos]?|C[ncfos]?|M[nce]?|Z[lsp]?|S[mcko]?|L[muCDlto]?)\}" contained display +syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\c%(Is|sc\=|script\=)%(k%(its|h%(oj%(ki)?|m%(r|er)|itan_small_script|udawadi|ar%(oshthi)?)|a%(li|n%(a|nada)|takana%(_or_hiragana)?|yah_li|ithi)|nda|thi)|r%(ohg|un%(ic|r)|ejang|jng)|l%(epc%(ha)?|i%(mbu?|n%([ab]|ear_[ab])|su)|y%([dc]i%(an)?)|a%(t%(n|in)|na|oo?))|t%(elu%(gu)?|ha%(i|a%(na)?)|i%(finagh|rh%(uta)?|b%(t|etan))|fng|glg|a%(i_%(le|tham|viet)|g%(alog|b%(anwa)?)|vt|kri?|ng%(ut)?|l[ue]|m%(il|l)))|vaii?|y%(i%(ii)?|ezi%(di)?)|e%(thi%(opic)?|l%(ym%(aic)?|ba%(san)?)|gyp%(tian_hieroglyphs)?)|u%(gar%(itic)?|nknown)|h%(ung|ira%(gana)?|rkt|mn[gp]|a%(n%(i%(fi_rohingya)?|unoo|o|g%(ul)?)?|tr%(an)?)|luw|ebr%(ew)?)|g%(r%(e%(k|ek)|an%(tha)?)|lag%(olitic)?|eor%(gian)?|o%(n[mg]|th%(ic)?)|u%(j%(arati|r)|r%(u|mukhi)|njala_gondi))|m%(lym|a%(n%(d%(aic)?|i%(chaean)?)|saram_gondi|h%(ajani|j)|ka%(sar)?|rc%(hen)?|layalam)|o%(di|ng%(olian)?)|e%(r%(c|o%(itic_%(hieroglyphs|cursive))?)|etei_mayek|nd%(e_kikakui)?|d%(f|efaidrin))|roo?|y%(anmar|mr)|tei|iao|ult%(ani)?)|d%(upl%(oyan)?|srt|i%(ak|ves_akuru)|ogra?|e%(seret|va%(nagari)?))|z%(an%(abazar_square|b)|inh|yyy|zzz)|n%(yiakeng_puachue_hmong|bat|koo?|ew%(_tai_lue|a)|ushu|shu|a%(bataean|rb|nd%(inagari)?))|s%(h%(rd|a%(vian|rada|w))|o%(yo%(mbo)?|g%(d%(ian)?|o)|ra%(_sompeng)?)|i%(n%(d|h%(ala)?)|dd%(ham)?|gnwriting)|a%(ur%(ashtra)?|m%(r|aritan)|rb)|y%(r%(c|iac)|lo%(ti_nagri)?)|und%(anese)?|gnw)|w%(cho|a%(ncho|ra%(ng_citi)?))|c%(y%(priot|r%(l|illic))|h%(er%(okee)?|a%(m|kma)|rs|orasmian)|a%(km|ucasian_albanian|n%(adian_aboriginal|s)|ri%(an)?)|prt|uneiform|o%(pt%(ic)?|mmon))|i%(n%(scriptional_pa%(rthian|hlavi)|herited)|mperial_aramaic|tal)|p%(h%(l[ip]|oenician|ag%(s_pa)?|nx)|a%(lm%(yrene)?|u%(_cin_hau|c)|hawh_hmong)|rti|salter_pahlavi|lrd|erm)|x%(peo|sux)|b%(eng%(ali)?|ra%(i%(lle)?|h%(mi)?)|opo%(mofo)?|u%(gi%(nese)?|h%(d|id))|h%(ks|aiksuki)|a%(ss%(a_vah)?|t%(ak|k)|li%(nese)?|mum?))|java%(nese)?|o%(g%(am|ham)|s%(age|ge|ma%(nya)?)|l%(d_%(hungarian|north_arabian|so%(gdian|uth_arabian)|per%(mic|sian)|italic|turkic)|ck|_chiki)|r%(iya|kh|ya))|a%(r%(ab%(ic)?|m%([ni]|enian))|dl%(m|am)|natolian_hieroglyphs|hom|v%(st|estan)|ghb))\}" contained display +syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\c%(In|blk\=|block\=)%(zanabazar%([ _]square|square)|javanese|h%(a%(lfwidth%( and fullwidth forms|andfullwidthforms|_and_fullwidth_forms)|tran|n%(unoo|gul%(compatibilityjamo|syllables|jamo%(extended\-[ab])?|_%(syllables|jamo%(_extended_[ab])?|compatibility_jamo)| %(syllables|compatibility jamo|jamo%( extended\-[ab])?))|ifi%([_ ]rohingya|rohingya)))|i%(ragana|gh%( %(private use surrogates|surrogates)|_%(private_use_surrogates|surrogates)|surrogates|privateusesurrogates))|ebrew)|i%(pa%([ _]extensions|extensions)|n%(scriptional%(%([ _]pa%(rthian|hlavi))|pa%(rthian|hlavi))|dic%(siyaqnumbers|_siyaq_numbers| siyaq numbers))|deographic%(symbolsandpunctuation|_%(description_characters|symbols_and_punctuation)| %(description characters|symbols and punctuation)|descriptioncharacters)|mperial%(aramaic|[_ ]aramaic))|c%(o%(ntrol%(pictures|[ _]pictures)|ptic%(epactnumbers|_epact_numbers| epact numbers)?|m%(mon%(_indic_number_forms|indicnumberforms| indic number forms)|bining%(halfmarks|_%(diacritical_marks%(_%(supplement|for_symbols|extended))?|marks_for_symbols|half_marks)| %(half marks|diacritical marks%( %(supplement|for symbols|extended))?|marks for symbols)|diacriticalmarks%(supplement|forsymbols|extended)?|marksforsymbols))|unting%( rod numerals|_rod_numerals|rodnumerals))|a%(rian|ucasian%([ _]albanian|albanian))|jk%(unifiedideographs%(extension[dgacfbe])?|s%(ymbolsandpunctuation|trokes)|_%(s%(trokes|ymbols_and_punctuation)|radicals_supplement|unified_ideographs%(_extension_[dgacfbe])?|compatibility%(_%(forms|ideographs%(_supplement)?))?)|compatibility%(forms|ideographs%(supplement)?)?|radicalssupplement| %(compatibility%( %(ideographs%( supplement)?|forms))?|unified ideographs%( extension [dgacfbe])?|radicals supplement|s%(ymbols and punctuation|trokes)))|y%(rillic%(supplement%(ary)?| %(supplement%(ary)?|extended\-[acb])|extended\-[acb]|_%(extended_[acb]|supplement%(ary)?))?|priot%(syllabary|[ _]syllabary))|u%(rrency%([_ ]symbols|symbols)|neiform%(_numbers_and_punctuation|numbersandpunctuation| numbers and punctuation)?)|h%(e%(ss%([_ ]symbols|symbols)|rokee%(supplement|[ _]supplement)?)|a%(m|kma)|orasmian))|g%(othic|u%(njala%(gondi|[_ ]gondi)|jarati|rmukhi)|lagolitic%(supplement|[ _]supplement)?|e%(o%(rgian%(supplement|%([_ ]%(supplement|extended))|extended)?|metric%( shapes%( extended)?|shapes%(extended)?|_shapes%(_extended)?))|neral%([_ ]punctuation|punctuation))|r%(eek%( %(and coptic|extended)|andcoptic|_%(and_coptic|extended)|extended)?|antha))|s%(h%(orthand%( format controls|_format_controls|formatcontrols)|a%(vian|rada))|u%(ndanese%(supplement|[ _]supplement)?|p%(erscripts%(_and_subscripts|andsubscripts| and subscripts)|plementa%(ry%(_private_use_area_[ab]|privateusearea\-[ab]| private use area\-[ab])|l%( %(mathematical operators|symbols and pictographs|punctuation|arrows\-[acb])|symbolsandpictographs|mathematicaloperators|punctuation|arrows\-[acb]|_%(arrows_[acb]|symbols_and_pictographs|mathematical_operators|punctuation))))|tton%(signwriting|[_ ]signwriting))|i%(nhala%( archaic numbers|archaicnumbers|_archaic_numbers)?|ddham)|y%(loti%([_ ]nagri|nagri)|mbols%( %(for legacy computing|and pictographs extended\-a)|forlegacycomputing|andpictographsextended\-a|_%(and_pictographs_extended_a|for_legacy_computing))|riac%(supplement|[ _]supplement)?)|p%(acing%(_modifier_letters| modifier letters|modifierletters)|ecials)|a%(maritan|urashtra)|o%(yombo|gdian|ra%(sompeng|[ _]sompeng))|mall%(kanaextension| %(kana extension|form variants)|_%(kana_extension|form_variants)|formvariants))|y%(i%(syllables|%([_ ]%(syllables|radicals))|radicals|jing%(hexagramsymbols| hexagram symbols|_hexagram_symbols))|ezidi)|p%(h%(o%(enician|netic%( extensions%( supplement)?|extensions%(supplement)?|_extensions%(_supplement)?))|a%(istos%([ _]disc|disc)|gs[_\-]pa))|laying%(cards|[_ ]cards)|rivate%(usearea| use area|_use_area)|a%(hawh%(hmong|[_ ]hmong)|u%(_cin_hau|cinhau| cin hau)|lmyrene)|salter%(pahlavi|[ _]pahlavi))|e%(l%(basan|ymaic)|arly%(_dynastic_cuneiform|dynasticcuneiform| dynastic cuneiform)|moticons|gyptian%(hieroglyph%(formatcontrols|s)| hieroglyph%( format controls|s)|_hieroglyph%(_format_controls|s))|nclosed%( %(cjk letters and months|ideographic supplement|alphanumeric%( supplement|s))|cjklettersandmonths|_%(ideographic_supplement|alphanumeric%(_supplement|s)|cjk_letters_and_months)|alphanumerics%(upplement)?|ideographicsupplement)|thiopic%(supplement|_%(supplement|extended%(_a)?)| %(supplement|extended%(\-a)?)|extended%(\-a)?)?)|r%(u%(nic|mi%(numeralsymbols| numeral symbols|_numeral_symbols))|ejang)|d%(o%(gra|mino%([ _]tiles|tiles))|e%(seret|vanagari%([ _]extended|extended)?)|uployan|i%(ngbats|ves%([_ ]akuru|akuru)))|m%(e%(defaidrin|nde%([ _]kikakui|kikakui)|etei%(mayek%(extensions)?|_mayek%(_extensions)?| mayek%( extensions)?)|roitic%(hieroglyphs|%([_ ]%(hieroglyphs|cursive))|cursive))|o%(ngolian%(supplement|[ _]supplement)?|di%(fier%(_tone_letters| tone letters|toneletters))?)|ro|u%(ltani|sical%([_ ]symbols|symbols))|i%(ao|scellaneous%(technical|symbols%(and%(pictographs|arrows))?|mathematicalsymbols\-[ab]| %(technical|mathematical symbols\-[ab]|symbols%( and %(pictographs|arrows))?)|_%(technical|symbols%(_and_%(pictographs|arrows))?|mathematical_symbols_[ab])))|yanmar%( extended\-[ab]|extended\-[ab]|_extended_[ab])?|a%(h%(ajani|jong%([ _]tiles|tiles))|rchen|n%(daic|ichaean)|yan%([_ ]numerals|numerals)|saram%(gondi|[_ ]gondi)|layalam|thematical%(alphanumericsymbols| %(alphanumeric symbols|operators)|_%(alphanumeric_symbols|operators)|operators)|kasar))|o%(s%(age|manya)|ttoman%(siyaqnumbers|_siyaq_numbers| siyaq numbers)|r%(namental%([ _]dingbats|dingbats)|iya)|ptical%( character recognition|_character_recognition|characterrecognition)|gham|l%([ _]chiki|d%(hungarian| %(hungarian|so%(uth arabian|gdian)|per%(mic|sian)|north arabian|italic|turkic)|per%(mic|sian)|so%(utharabian|gdian)|italic|turkic|_%(hungarian|north_arabian|so%(gdian|uth_arabian)|per%(mic|sian)|italic|turkic)|northarabian)|chiki))|n%(ew%(_tai_lue|a|tailue| tai lue)|ko|yiakeng%( puachue hmong|puachuehmong|_puachue_hmong)|a%(bataean|ndinagari)|u%(shu|mber%(forms|[ _]forms)))|b%(u%(ginese|hid)|a%(s%(sa%([ _]vah|vah)|ic%([ _]latin|latin))|linese|mum%(supplement|[ _]supplement)?|tak)|ra%(hmi|ille%(patterns|[_ ]patterns))|o%(x%([ _]drawing|drawing)|pomofo%([ _]extended|extended)?)|lock%([ _]elements|elements)|haiksuki|yzantine%( musical symbols|musicalsymbols|_musical_symbols)|engali)|l%(i%(mbu|near%(a| %(a|b %(ideograms|syllabary))|b%(ideograms|syllabary)|_%(a|b_%(ideograms|syllabary)))|su%(supplement|[ _]supplement)?)|a%(tin%(extended%(\-[dacbe]|additional)|_%(extended_%([dcbe]|a%(dditional)?)|1_supplement)|\-1%(supplement| supplement)| extended%(\-[dacbe]| additional))|o)|e%(tterlike%([_ ]symbols|symbols)|pcha)|ow%([_ ]surrogates|surrogates)|y[cd]ian)|k%(h%(aroshthi|ojki|mer%([_ ]symbols|symbols)?|udawadi|itan%( small script|smallscript|_small_script))|a%(takana%(_phonetic_extensions|phoneticextensions| phonetic extensions)?|n%(gxi%([_ ]radicals|radicals)|a%(extended\-a|supplement| %(extended\-a|supplement)|_%(supplement|extended_a))|bun|nada)|ithi|yah%([ _]li|li)))|wa%(ncho|rang%(citi|[ _]citi))|t%(elugu|ransport%( and map symbols|_and_map_symbols|andmapsymbols)|i%(rhuta|betan|finagh)|a%(mil%(supplement|[ _]supplement)?|kri|ngut%(supplement|%([ _]%(supplement|components))|components)?|i%(xuanjingsymbols|_%(le|xuan_jing_symbols|tham|viet)|le| %(xuan jing symbols|le|tham|viet)|tham|viet)|g%(alog|s|banwa))|ha%(i|ana))|a%(l%(chemical%([_ ]symbols|symbols)|phabetic%( presentation forms|_presentation_forms|presentationforms))|n%(cient%(_%(greek_%(musical_notation|numbers)|symbols)|greek%(numbers|musicalnotation)| %(greek %(numbers|musical notation)|symbols)|symbols)|atolian%([ _]hieroglyphs|hieroglyphs))|dlam|r%(menian|abic%(extended\-a|mathematicalalphabeticsymbols|supplement|_%(presentation_forms_[ab]|supplement|extended_a|mathematical_alphabetic_symbols)| %(extended\-a|mathematical alphabetic symbols|supplement|presentation forms\-[ab])|presentationforms\-[ab])?|rows)|egean%(numbers|[ _]numbers)|vestan|hom)|u%(garitic|nified%(canadianaboriginalsyllabics%(extended)?|_canadian_aboriginal_syllabics%(_extended)?| canadian aboriginal syllabics%( extended)?))|v%(a%(i|riation%( selectors%( supplement)?|selectors%(supplement)?|_selectors%(_supplement)?))|e%(rtical%(forms|[ _]forms)|dic%([ _]extensions|extensions))))\}" contained display + +syntax match clojureRegexpPredefinedCharClass "\v%(\\[dDsSwW]|\.)" contained display +syntax cluster clojureRegexpCharPropertyClasses contains=clojureRegexpPosixCharClass,clojureRegexpJavaCharClass,clojureRegexpUnicodeCharClass +syntax cluster clojureRegexpCharClasses contains=clojureRegexpPredefinedCharClass,clojureRegexpCharClass,@clojureRegexpCharPropertyClasses +syntax region clojureRegexpCharClass start="\[" skip=/\\\\\|\\]/ end="]" contained contains=clojureRegexpPredefinedCharClass,@clojureRegexpCharPropertyClasses +syntax match clojureRegexpBoundary "\\[bBAGZz]" contained display +syntax match clojureRegexpBoundary "[$^]" contained display +syntax match clojureRegexpQuantifier "[?*+][?+]\=" contained display +syntax match clojureRegexpQuantifier "\v\{\d+%(,|,\d+)?}\??" contained display +syntax match clojureRegexpOr "|" contained display +syntax match clojureRegexpBackRef "\v\\%([1-9]\d*|k\<[[:alpha:]]+\>)" contained display + +" Mode modifiers, mode-modified spans, lookaround, regular and atomic +" grouping, and named-capturing. +syntax match clojureRegexpMod "\v\(@<=\?:" contained display +syntax match clojureRegexpMod "\v\(@<=\?[xdsmiuU]*-?[xdsmiuU]+:?" contained display +syntax match clojureRegexpMod "\v\(@<=\?%(\<?[=!]|\>)" contained display +syntax match clojureRegexpMod "\v\(@<=\?\<[[:alpha:]]+\>" contained display + +syntax region clojureRegexpGroup start="(" skip=/\\\\\|\\)/ end=")" matchgroup=clojureRegexpGroup contained contains=clojureRegexpMod,clojureRegexpQuantifier,clojureRegexpBoundary,clojureRegexpEscape,@clojureRegexpCharClasses +syntax region clojureRegexp matchgroup=clojureRegexpDelimiter start=/\#"/ skip=/\\\\\|\\"/ end=/"/ contains=@clojureRegexpCharClasses,clojureRegexpEscape,clojureRegexpQuote,clojureRegexpBoundary,clojureRegexpQuantifier,clojureRegexpOr,clojureRegexpBackRef,clojureRegexpGroup keepend + +syntax keyword clojureCommentTodo contained FIXME XXX TODO BUG NOTE HACK FIXME: XXX: TODO: BUG: NOTE: HACK: + +syntax match clojureComment ";.*$" contains=clojureCommentTodo,@Spell +syntax match clojureComment "#!.*$" +syntax match clojureComment "," + +" Comment out discarded forms. <https://clojure.org/guides/weird_characters#_discard> +if exists('g:clojure_discard_macro') && g:clojure_discard_macro + syntax region clojureDiscard matchgroup=clojureDiscard start=/#_[ ,\t\n`'~]*/ end=/[, \t\n()\[\]{}";]/me=e-1 + syntax region clojureDiscard matchgroup=clojureDiscard start=/#_[ ,\t\n`'~]*"/ skip=/\\[\\"]/ end=/"/ + syntax region clojureDiscard matchgroup=clojureDiscard start=/#_[ ,\t\n`'~]*(/ end=/)/ contains=clojureDiscardForm + syntax region clojureDiscard matchgroup=clojureDiscard start=/#_[ ,\t\n`'~]*\[/ end=/\]/ contains=clojureDiscardForm + syntax region clojureDiscard matchgroup=clojureDiscard start=/#_[ ,\t\n`'~]*{/ end=/}/ contains=clojureDiscardForm + + syntax region clojureDiscardForm start="(" end=")" contained contains=clojureDiscardForm + syntax region clojureDiscardForm start="{" end="}" contained contains=clojureDiscardForm + syntax region clojureDiscardForm start="\[" end="\]" contained contains=clojureDiscardForm +endif + +" -*- TOP CLUSTER -*- +" Generated from https://github.com/clojure-vim/clojure.vim/blob/fd280e33e84c88e97860930557dba3ff80b1a82d/clj/src/vim_clojure_static/generate.clj +syntax cluster clojureTop contains=@Spell,clojureAnonArg,clojureBoolean,clojureCharacter,clojureComment,clojureCond,clojureConstant,clojureDefine,clojureDeref,clojureDiscard,clojureDispatch,clojureError,clojureException,clojureFunc,clojureKeyword,clojureMacro,clojureMap,clojureMeta,clojureNumber,clojureQuote,clojureRegexp,clojureRepeat,clojureSexp,clojureSpecial,clojureString,clojureSymbol,clojureUnquote,clojureVariable,clojureVector,jankNativeRaw + +syntax region clojureSexp matchgroup=clojureParen start="(" end=")" contains=@clojureTop fold +syntax region clojureVector matchgroup=clojureParen start="\[" end="]" contains=@clojureTop fold +syntax region clojureMap matchgroup=clojureParen start="{" end="}" contains=@clojureTop fold + +" Highlight superfluous closing parens, brackets and braces. +syntax match clojureError "]\|}\|)" + +syn include @CPP syntax/cpp.vim +"syntax region jankNativeRawString start=+"+ end=+"+ contained contains=@CPP +"syn match jankNativeRawString +"\zs[^"]*\ze"+ contains=@CPP +syn match jankNativeRawString +"\zs\_.\{-}\ze"+ contains=@CPP +"syn match jankNativeRawString +"\zs[^\"]\{-}\ze"+ contains=@CPP +syntax region jankNativeRaw matchgroup=Special start=+(native/raw+ end=+)+ contains=jankNativeRawString + +syntax sync fromstart + +highlight default link clojureConstant Constant +highlight default link clojureBoolean Boolean +highlight default link clojureCharacter Character +highlight default link clojureKeyword Keyword +highlight default link clojureNumber Number +highlight default link clojureString String +highlight default link clojureStringDelimiter String +highlight default link clojureStringEscape Character + +highlight default link clojureRegexp Constant +highlight default link clojureRegexpDelimiter Constant +highlight default link clojureRegexpEscape Character +highlight default link clojureRegexpCharClass SpecialChar +highlight default link clojureRegexpPosixCharClass clojureRegexpCharClass +highlight default link clojureRegexpJavaCharClass clojureRegexpCharClass +highlight default link clojureRegexpUnicodeCharClass clojureRegexpCharClass +highlight default link clojureRegexpPredefinedCharClass clojureRegexpCharClass +highlight default link clojureRegexpBoundary SpecialChar +highlight default link clojureRegexpQuantifier SpecialChar +highlight default link clojureRegexpMod SpecialChar +highlight default link clojureRegexpOr SpecialChar +highlight default link clojureRegexpBackRef SpecialChar +highlight default link clojureRegexpGroup clojureRegexp +highlight default link clojureRegexpQuoted clojureString +highlight default link clojureRegexpQuote clojureRegexpBoundary + +highlight default link clojureVariable Identifier +highlight default link clojureCond Conditional +highlight default link clojureDefine Define +highlight default link clojureException Exception +highlight default link clojureFunc Function +highlight default link clojureMacro Macro +highlight default link clojureRepeat Repeat + +highlight default link clojureSpecial Special +highlight default link clojureQuote SpecialChar +highlight default link clojureUnquote SpecialChar +highlight default link clojureMeta SpecialChar +highlight default link clojureDeref SpecialChar +highlight default link clojureAnonArg SpecialChar +highlight default link clojureDispatch SpecialChar + +highlight default link clojureComment Comment +highlight default link clojureCommentTodo Todo +highlight default link clojureDiscard clojureComment +highlight default link clojureDiscardForm clojureDiscard + +highlight default link clojureError Error + +highlight default link clojureParen Delimiter + +let b:current_syntax = "jank" + +let &cpo = s:cpo_sav +unlet! s:cpo_sav + +" vim:sts=8:sw=8:ts=8:noet
\ No newline at end of file diff --git a/tmux/.DS_Store b/tmux/.DS_Store Binary files differnew file mode 100644 index 0000000..585b8d1 --- /dev/null +++ b/tmux/.DS_Store diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf new file mode 100644 index 0000000..94e91f1 --- /dev/null +++ b/tmux/.tmux.conf @@ -0,0 +1,49 @@ +set -g base-index 1 +set -g pane-base-index 1 +set-window-option -g pane-base-index 1 +set-option -g renumber-windows on +set -g status-interval 1 +set -sg escape-time 0 + +set -g mouse on +set-window-option -g xterm-keys on + +bind-key Up select-pane -U +bind-key Down select-pane -D +bind-key Left select-pane -L +bind-key Right select-pane -R + +bind -n 'M-Up' select-pane -U +bind -n 'M-Down' select-pane -D +bind -n 'M-Left' select-pane -L +bind -n 'M-Right' select-pane -R + +set -g mouse on +set -g renumber-windows on +set -g set-titles off +set -g status-position bottom +set -g status on +set -g default-terminal "xterm-256color" +set -g terminal-overrides "xterm-256color:Tc" + +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'xamut/tmux-weather' +set -g @plugin 'tmux-plugins/tmux-sensible' +set -g @plugin 'tmux-plugins/tmux-yank' +set -g @plugin 'robhurring/tmux-spotify' +set -g @plugin 'tmux-plugins/tmux-battery' +set -g @plugin 'tukaloff/tmux-kanso' +set -g @plugin 'tmux-plugins/tmux-cpu' +set -g @plugin 'jamesoff/tmux-loadavg' + +# set -g @kanso_flavor "pearl" +set -g @kanso_window_status_style "basic" +set -g @kanso_window_current_text " #W" +set -g @kanso_window_text " #W" +# set -g @kanso_window_current_number_color "#22262D" + +run '~/.tmux/plugins/tpm/tpm' + +set -g pane-border-status bottom +set -g pane-border-style "fg=#090E13" +set -g pane-active-border-style "fg=#090E13" diff --git a/tmux/bore.tmux b/tmux/bore.tmux new file mode 100644 index 0000000..ab6ff26 --- /dev/null +++ b/tmux/bore.tmux @@ -0,0 +1,52 @@ +#!/bin/sh + +set -g @left_separator "\ue0b0" +set -g @left_alt_separator "\ue0b1" +set -g @right_separator "\ue0b2" +set -g @right_alt_separator "\ue0b3" + +set -g @base0 "#101010" +set -g @base1 "#131313" +set -g @base2 "#171717" +set -g @base3 "#1b1b1b" +set -g @base4 "#202020" +set -g @base5 "#2b2b2b" +set -g @base6 "#2d2d2d" +set -g @base7 "#3a3a3a" +set -g @base8 "#404040" + +set -g @gabriel0 "#0E0E0E" +set -g @gabriel1 "#ac616a" +set -g @gabriel2 "#98b386" +set -g @gabriel3 "#bfa86b" +set -g @gabriel4 "#7ba2c3" +set -g @gabriel5 "#999dd4" +set -g @gabriel6 "#8ac6c7" +set -g @gabriel7 "#7F8080" +set -g @gabrielwhite "#ffffff" +set -g @gabriel8 "#2b2b2b" +set -g @gabriel9 "#b3646e" +set -g @gabriel10 "#a0bc8d" +set -g @gabriel11 "#c9b16f" +set -g @gabriel12 "#7fa7c9" +set -g @gabriel13 "#a2a6d4" +set -g @gabriel14 "#91cecf" +set -g @gabriel15 "#91cecf" + +set -g pane-border-style fg="colour0" +set -g pane-active-border-style fg="colour8" + +set -g status-justify centre +set -g status-style bg="#0E0E0E",fg="colour0" + +set -g status-left-length 20 +set -g status-right-length 150 +set -g window-status-separator " " + +set -g window-status-format "#[fg=#{@gabriel7}]#W" +set -g window-status-current-format "#[fg=#{@base0},bg=#{@gabrielwhite},bold] #W " + +set -g status-left "#[fg=#{@gabrielwhite},bold] " +#set -g status-right "#[fg=#{@gabriel7},nobold] %H:%M %y-%m-%d | #(uptime | cut -f 4-5 -d ' ' | cut -f 1 -d ',') uptime | 💻 #[fg=#{@gabriel7}]#h " +#set -g status-right "#[fg=#{@gabriel7},nobold] 📅 %H:%M %y-%m-%d | 🎧 #{music_status} #{artist}: #{track} " +set -g status-right "#[fg=#{@gabriel7},nobold] 📅 %H:%M %y-%m-%d " diff --git a/tmux/theme.tmux b/tmux/theme.tmux new file mode 100644 index 0000000..b100070 --- /dev/null +++ b/tmux/theme.tmux @@ -0,0 +1,34 @@ +# theme.tmux — static segments with powerline arrows + +set -g status "on" +set -g status-justify "left" + +set -g status-style "none,bg=#eee8d5" +set -g status-left-style "none" +set -g status-right-style "none" +set -g status-left-length "100" +set -g status-right-length "100" + +set -g pane-border-style "fg=#eee8d5" +set -g pane-active-border-style "fg=#eee8d5" +set -g message-style "fg=#073642,bg=#eee8d5" +set -g message-command-style "fg=#073642,bg=#eee8d5" + +setw -g window-status-separator "" +setw -g window-status-style "none,fg=#586e75,bg=#eee8d5" +setw -g window-status-activity-style "none" + +# Status left/right with arrows (unchanged conceptually) +set -g status-left "#[fg=#eee8d5,bg=#073642] #S #[fg=#073642,bg=#eee8d5,nobold,nounderscore,noitalics]" +set -g status-right "#[fg=#eee8d5,bg=#eee8d5,nobold,nounderscore,noitalics]#[fg=#073642,bg=#eee8d5] %Y-%m-%d %H:%M #[fg=#073642,bg=#eee8d5,nobold,nounderscore,noitalics]#[fg=#eee8d5,bg=#073642] #h " + +# Powerline-style window segments, but identical width structure for normal and current +# We add a left arrow from the status bg (#eee8d5) into the window segment bg (#eee8d5) — same bg, so it visually keeps spacing consistent +# Then the content block, then a right arrow back to the status bg — both formats have the same arrows. + +# Normal window +setw -g window-status-format "#[fg=#eee8d5,bg=#eee8d5,nobold,nounderscore,noitalics]#[fg=#586e75,bg=#eee8d5] #I #W #[fg=#eee8d5,bg=#eee8d5,nobold,nounderscore,noitalics]" + +# Current window (only fg/bold changes; arrows and backgrounds are identical) +setw -g window-status-current-format "#[fg=#eee8d5,bg=#eee8d5,nobold,nounderscore,noitalics]#[fg=#073642,bg=#eee8d5,bold] #I #W #[fg=#eee8d5,bg=#eee8d5,nobold,nounderscore,noitalics]" + |