diff options
| author | Andrew Guschin <guschin@altlinux.org> | 2023-10-16 15:50:52 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin@altlinux.org> | 2023-10-16 15:50:52 +0400 |
| commit | b2b1f661e55c2a1139aef1f8f8aa4a11b10d3b01 (patch) | |
| tree | 200094a27a17f2a74f31128786726514181108e1 | |
Initial commit
| -rw-r--r-- | colors/ayu.vim | 280 | ||||
| -rw-r--r-- | colors/molokai.vim | 276 | ||||
| -rw-r--r-- | init.lua | 79 | ||||
| -rw-r--r-- | lazy-lock.json | 8 | ||||
| -rw-r--r-- | lua/filetype-config.lua | 8 | ||||
| -rw-r--r-- | lua/keybindings.lua | 44 | ||||
| -rw-r--r-- | lua/plugins.lua | 56 |
7 files changed, 751 insertions, 0 deletions
diff --git a/colors/ayu.vim b/colors/ayu.vim new file mode 100644 index 0000000..4c9ced5 --- /dev/null +++ b/colors/ayu.vim @@ -0,0 +1,280 @@ +" Initialisation:"{{{ +" ---------------------------------------------------------------------------- +hi clear +if exists("syntax_on") + syntax reset +endif + +let s:style = get(g:, 'ayucolor', 'dark') +let g:colors_name = "ayu" +"}}} + +" Palettes:"{{{ +" ---------------------------------------------------------------------------- + +let s:palette = {} + +let s:palette.bg = {'dark': "#0F1419", 'light': "#FAFAFA", 'mirage': "#212733"} + +let s:palette.comment = {'dark': "#5C6773", 'light': "#ABB0B6", 'mirage': "#5C6773"} +let s:palette.markup = {'dark': "#F07178", 'light': "#F07178", 'mirage': "#F07178"} +let s:palette.constant = {'dark': "#FFEE99", 'light': "#A37ACC", 'mirage': "#D4BFFF"} +let s:palette.operator = {'dark': "#E7C547", 'light': "#E7C547", 'mirage': "#80D4FF"} +let s:palette.tag = {'dark': "#36A3D9", 'light': "#36A3D9", 'mirage': "#5CCFE6"} +let s:palette.regexp = {'dark': "#95E6CB", 'light': "#4CBF99", 'mirage': "#95E6CB"} +let s:palette.string = {'dark': "#B8CC52", 'light': "#86B300", 'mirage': "#BBE67E"} +let s:palette.function = {'dark': "#FFB454", 'light': "#F29718", 'mirage': "#FFD57F"} +let s:palette.special = {'dark': "#E6B673", 'light': "#E6B673", 'mirage': "#FFC44C"} +let s:palette.keyword = {'dark': "#FF7733", 'light': "#FF7733", 'mirage': "#FFAE57"} + +let s:palette.error = {'dark': "#FF3333", 'light': "#FF3333", 'mirage': "#FF3333"} +let s:palette.accent = {'dark': "#F29718", 'light': "#FF6A00", 'mirage': "#FFCC66"} +let s:palette.panel = {'dark': "#14191F", 'light': "#FFFFFF", 'mirage': "#272D38"} +let s:palette.guide = {'dark': "#2D3640", 'light': "#D9D8D7", 'mirage': "#3D4751"} +let s:palette.line = {'dark': "#151A1E", 'light': "#F3F3F3", 'mirage': "#242B38"} +let s:palette.selection = {'dark': "#253340", 'light': "#F0EEE4", 'mirage': "#343F4C"} +let s:palette.fg = {'dark': "#E6E1CF", 'light': "#5C6773", 'mirage': "#D9D7CE"} +let s:palette.fg_idle = {'dark': "#3E4B59", 'light': "#828C99", 'mirage': "#607080"} + +"}}} + +" Highlighting Primitives:"{{{ +" ---------------------------------------------------------------------------- + +function! s:build_prim(hi_elem, field) + let l:vname = "s:" . a:hi_elem . "_" . a:field " s:bg_gray + let l:gui_assign = "gui".a:hi_elem."=".s:palette[a:field][s:style] " guibg=... + exe "let " . l:vname . " = ' " . l:gui_assign . "'" +endfunction + +let s:bg_none = ' guibg=NONE ctermbg=NONE' +let s:fg_none = ' guifg=NONE ctermfg=NONE' +for [key_name, d_value] in items(s:palette) + call s:build_prim('bg', key_name) + call s:build_prim('fg', key_name) +endfor +" }}} + +" Formatting Options:"{{{ +" ---------------------------------------------------------------------------- +let s:none = "NONE" +let s:t_none = "NONE" +let s:n = "NONE" +let s:c = ",undercurl" +let s:r = ",reverse" +let s:s = ",standout" +let s:b = ",bold" +let s:u = ",underline" +let s:i = ",italic" + +exe "let s:fmt_none = ' gui=NONE". " cterm=NONE". " term=NONE" ."'" +exe "let s:fmt_bold = ' gui=NONE".s:b. " cterm=NONE".s:b. " term=NONE".s:b ."'" +exe "let s:fmt_bldi = ' gui=NONE".s:b. " cterm=NONE".s:b. " term=NONE".s:b ."'" +exe "let s:fmt_undr = ' gui=NONE".s:u. " cterm=NONE".s:u. " term=NONE".s:u ."'" +exe "let s:fmt_undb = ' gui=NONE".s:u.s:b. " cterm=NONE".s:u.s:b. " term=NONE".s:u.s:b."'" +exe "let s:fmt_undi = ' gui=NONE".s:u. " cterm=NONE".s:u. " term=NONE".s:u ."'" +exe "let s:fmt_curl = ' gui=NONE".s:c. " cterm=NONE".s:c. " term=NONE".s:c ."'" +exe "let s:fmt_ital = ' gui=NONE".s:i. " cterm=NONE".s:i. " term=NONE".s:i ."'" +exe "let s:fmt_stnd = ' gui=NONE".s:s. " cterm=NONE".s:s. " term=NONE".s:s ."'" +exe "let s:fmt_revr = ' gui=NONE".s:r. " cterm=NONE".s:r. " term=NONE".s:r ."'" +exe "let s:fmt_revb = ' gui=NONE".s:r.s:b. " cterm=NONE".s:r.s:b. " term=NONE".s:r.s:b."'" +"}}} + + +" Vim Highlighting: (see :help highlight-groups)"{{{ +" ---------------------------------------------------------------------------- +" Vim's terminal window +exe "hi! Terminal" .s:fg_fg .s:bg_bg .s:fmt_none + +exe "hi! Normal" .s:fg_fg .s:bg_bg .s:fmt_none +exe "hi! ColorColumn" .s:fg_none .s:bg_line .s:fmt_none +" Conceal, Cursor, CursorIM +exe "hi! CursorColumn" .s:fg_none .s:bg_line .s:fmt_none +exe "hi! CursorLine" .s:fg_none .s:bg_line .s:fmt_none +exe "hi! CursorLineNr" .s:fg_accent .s:bg_line .s:fmt_none +exe "hi! LineNr" .s:fg_guide .s:bg_none .s:fmt_none + +exe "hi! Directory" .s:fg_fg_idle .s:bg_none .s:fmt_none +exe "hi! DiffAdd" .s:fg_string .s:bg_panel .s:fmt_none +exe "hi! DiffChange" .s:fg_tag .s:bg_panel .s:fmt_none +exe "hi! DiffText" .s:fg_fg .s:bg_panel .s:fmt_none +exe "hi! ErrorMsg" .s:fg_fg .s:bg_error .s:fmt_stnd +exe "hi! VertSplit" .s:fg_bg .s:bg_none .s:fmt_none +exe "hi! Folded" .s:fg_fg_idle .s:bg_panel .s:fmt_none +exe "hi! FoldColumn" .s:fg_none .s:bg_panel .s:fmt_none +exe "hi! SignColumn" .s:fg_none .s:bg_panel .s:fmt_none +" Incsearch" + +exe "hi! MatchParen" .s:fg_fg .s:bg_bg .s:fmt_undr +exe "hi! ModeMsg" .s:fg_string .s:bg_none .s:fmt_none +exe "hi! MoreMsg" .s:fg_string .s:bg_none .s:fmt_none +exe "hi! NonText" .s:fg_guide .s:bg_none .s:fmt_none +exe "hi! Pmenu" .s:fg_fg .s:bg_selection .s:fmt_none +exe "hi! PmenuSel" .s:fg_fg .s:bg_selection .s:fmt_revr +" PmenuSbar" +" PmenuThumb" +exe "hi! Question" .s:fg_string .s:bg_none .s:fmt_none +exe "hi! Search" .s:fg_bg .s:bg_constant .s:fmt_none +exe "hi! SpecialKey" .s:fg_selection .s:bg_none .s:fmt_none +exe "hi! SpellCap" .s:fg_tag .s:bg_none .s:fmt_undr +exe "hi! SpellLocal" .s:fg_keyword .s:bg_none .s:fmt_undr +exe "hi! SpellBad" .s:fg_error .s:bg_none .s:fmt_undr +exe "hi! SpellRare" .s:fg_regexp .s:bg_none .s:fmt_undr +exe "hi! StatusLine" .s:fg_fg .s:bg_panel .s:fmt_none +exe "hi! StatusLineNC" .s:fg_fg_idle .s:bg_panel .s:fmt_none +exe "hi! WildMenu" .s:fg_bg .s:bg_markup .s:fmt_none +exe "hi! TabLine" .s:fg_fg .s:bg_panel .s:fmt_revr +" TabLineFill" +" TabLineSel" +exe "hi! Title" .s:fg_keyword .s:bg_none .s:fmt_none +exe "hi! Visual" .s:fg_none .s:bg_selection .s:fmt_none +" VisualNos" +exe "hi! WarningMsg" .s:fg_error .s:bg_none .s:fmt_none + +" TODO LongLineWarning to use variables instead of hardcoding +hi LongLineWarning guifg=NONE guibg=#371F1C gui=underline ctermfg=NONE ctermbg=NONE cterm=underline +" WildMenu" + +"}}} + +" Generic Syntax Highlighting: (see :help group-name)"{{{ +" ---------------------------------------------------------------------------- +exe "hi! Comment" .s:fg_comment .s:bg_none .s:fmt_none + +exe "hi! Constant" .s:fg_constant .s:bg_none .s:fmt_none +exe "hi! String" .s:fg_string .s:bg_none .s:fmt_none +" Character" +" Number" +" Boolean" +" Float" + +exe "hi! Identifier" .s:fg_tag .s:bg_none .s:fmt_none +exe "hi! Function" .s:fg_function .s:bg_none .s:fmt_none + +exe "hi! Statement" .s:fg_keyword .s:bg_none .s:fmt_none +" Conditional" +" Repeat" +" Label" +exe "hi! Operator" .s:fg_operator .s:bg_none .s:fmt_none +" Keyword" +" Exception" + +exe "hi! PreProc" .s:fg_special .s:bg_none .s:fmt_none +" Include" +" Define" +" Macro" +" PreCondit" + +exe "hi! Type" .s:fg_tag .s:bg_none .s:fmt_none +" StorageClass" +exe "hi! Structure" .s:fg_special .s:bg_none .s:fmt_none +" Typedef" + +exe "hi! Special" .s:fg_special .s:bg_none .s:fmt_none +" SpecialChar" +" Tag" +" Delimiter" +" SpecialComment" +" Debug" +" +exe "hi! Underlined" .s:fg_tag .s:bg_none .s:fmt_undr + +exe "hi! Ignore" .s:fg_none .s:bg_none .s:fmt_none + +exe "hi! Error" .s:fg_fg .s:bg_error .s:fmt_none + +exe "hi! Todo" .s:fg_markup .s:bg_none .s:fmt_none + +" Quickfix window highlighting +exe "hi! qfLineNr" .s:fg_keyword .s:bg_none .s:fmt_none +" qfFileName" +" qfLineNr" +" qfError" + +exe "hi! Conceal" .s:fg_guide .s:bg_none .s:fmt_none +exe "hi! CursorLineConceal" .s:fg_guide .s:bg_line .s:fmt_none + + +" Terminal +" --------- +if has("nvim") + let g:terminal_color_0 = s:palette.bg[s:style] + let g:terminal_color_1 = s:palette.markup[s:style] + let g:terminal_color_2 = s:palette.string[s:style] + let g:terminal_color_3 = s:palette.accent[s:style] + let g:terminal_color_4 = s:palette.tag[s:style] + let g:terminal_color_5 = s:palette.constant[s:style] + let g:terminal_color_6 = s:palette.regexp[s:style] + let g:terminal_color_7 = "#FFFFFF" + let g:terminal_color_8 = s:palette.fg_idle[s:style] + let g:terminal_color_9 = s:palette.error[s:style] + let g:terminal_color_10 = s:palette.string[s:style] + let g:terminal_color_11 = s:palette.accent[s:style] + let g:terminal_color_12 = s:palette.tag[s:style] + let g:terminal_color_13 = s:palette.constant[s:style] + let g:terminal_color_14 = s:palette.regexp[s:style] + let g:terminal_color_15 = s:palette.comment[s:style] + let g:terminal_color_background = g:terminal_color_0 + let g:terminal_color_foreground = s:palette.fg[s:style] +else + let g:terminal_ansi_colors = [s:palette.bg[s:style], s:palette.markup[s:style]] + let g:terminal_ansi_colors += [s:palette.string[s:style], s:palette.accent[s:style]] + let g:terminal_ansi_colors += [s:palette.tag[s:style], s:palette.constant[s:style]] + let g:terminal_ansi_colors += [s:palette.regexp[s:style], "#FFFFFF"] + let g:terminal_ansi_colors += [s:palette.fg_idle[s:style], s:palette.error[s:style]] + let g:terminal_ansi_colors += [s:palette.string[s:style], s:palette.accent[s:style]] + let g:terminal_ansi_colors += [s:palette.tag[s:style], s:palette.constant[s:style]] + let g:terminal_ansi_colors += [s:palette.regexp[s:style], s:palette.comment[s:style]] +endif + + +" NerdTree +" --------- +exe "hi! NERDTreeOpenable" .s:fg_fg_idle .s:bg_none .s:fmt_none +exe "hi! NERDTreeClosable" .s:fg_accent .s:bg_none .s:fmt_none +" exe "hi! NERDTreeBookmarksHeader" .s:fg_pink .s:bg_none .s:fmt_none +" exe "hi! NERDTreeBookmarksLeader" .s:fg_bg .s:bg_none .s:fmt_none +" exe "hi! NERDTreeBookmarkName" .s:fg_keyword .s:bg_none .s:fmt_none +" exe "hi! NERDTreeCWD" .s:fg_pink .s:bg_none .s:fmt_none +exe "hi! NERDTreeUp" .s:fg_fg_idle .s:bg_none .s:fmt_none +exe "hi! NERDTreeDir" .s:fg_function .s:bg_none .s:fmt_none +exe "hi! NERDTreeFile" .s:fg_none .s:bg_none .s:fmt_none +exe "hi! NERDTreeDirSlash" .s:fg_accent .s:bg_none .s:fmt_none + + +" GitGutter +" --------- +exe "hi! GitGutterAdd" .s:fg_string .s:bg_none .s:fmt_none +exe "hi! GitGutterChange" .s:fg_tag .s:bg_none .s:fmt_none +exe "hi! GitGutterDelete" .s:fg_markup .s:bg_none .s:fmt_none +exe "hi! GitGutterChangeDelete" .s:fg_function .s:bg_none .s:fmt_none + +"}}} + +" Diff Syntax Highlighting:"{{{ +" ---------------------------------------------------------------------------- +" Diff +" diffOldFile +" diffNewFile +" diffFile +" diffOnly +" diffIdentical +" diffDiffer +" diffBDiffer +" diffIsA +" diffNoEOL +" diffCommon +hi! link diffRemoved Constant +" diffChanged +hi! link diffAdded String +" diffLine +" diffSubname +" diffComment + +"}}} +" +" This is needed for some reason: {{{ + +let &background = s:style + +" }}} diff --git a/colors/molokai.vim b/colors/molokai.vim new file mode 100644 index 0000000..6d97053 --- /dev/null +++ b/colors/molokai.vim @@ -0,0 +1,276 @@ +" Vim color file +" +" Author: Tomas Restrepo <tomas@winterdom.com> +" https://github.com/tomasr/molokai +" +" Note: Based on the Monokai theme for TextMate +" by Wimer Hazenberg and its darker variant +" by Hamish Stuart Macpherson +" + +hi clear + +if version > 580 + " no guarantees for version 5.8 and below, but this makes it stop + " complaining + hi clear + if exists("syntax_on") + syntax reset + endif +endif +let g:colors_name="molokai" + +if exists("g:molokai_original") + let s:molokai_original = g:molokai_original +else + let s:molokai_original = 0 +endif + + +hi Boolean guifg=#AE81FF +hi Character guifg=#E6DB74 +hi Number guifg=#AE81FF +hi String guifg=#E6DB74 +hi Conditional guifg=#F92672 gui=bold +hi Constant guifg=#AE81FF gui=bold +hi Cursor guifg=#000000 guibg=#F8F8F0 +hi iCursor guifg=#000000 guibg=#F8F8F0 +hi Debug guifg=#BCA3A3 gui=bold +hi Define guifg=#66D9EF +hi Delimiter guifg=#8F8F8F +hi DiffAdd guibg=#13354A +hi DiffChange guifg=#89807D guibg=#4C4745 +hi DiffDelete guifg=#960050 guibg=#1E0010 +hi DiffText guibg=#4C4745 gui=italic,bold + +hi Directory guifg=#A6E22E gui=bold +hi Error guifg=#E6DB74 guibg=#1E0010 +hi ErrorMsg guifg=#F92672 guibg=#232526 gui=bold +hi Exception guifg=#A6E22E gui=bold +hi Float guifg=#AE81FF +hi FoldColumn guifg=#465457 guibg=#000000 +hi Folded guifg=#465457 guibg=#000000 +hi Function guifg=#A6E22E +hi Identifier guifg=#FD971F +hi Ignore guifg=#808080 guibg=bg +hi IncSearch guifg=#C4BE89 guibg=#000000 + +hi Keyword guifg=#F92672 gui=bold +hi Label guifg=#E6DB74 gui=none +hi Macro guifg=#C4BE89 gui=italic +hi SpecialKey guifg=#66D9EF gui=italic + +hi MatchParen guifg=#000000 guibg=#FD971F gui=bold +hi ModeMsg guifg=#E6DB74 +hi MoreMsg guifg=#E6DB74 +hi Operator guifg=#F92672 + +" complete menu +hi Pmenu guifg=#66D9EF guibg=#000000 +hi PmenuSel guibg=#808080 +hi PmenuSbar guibg=#080808 +hi PmenuThumb guifg=#66D9EF + +hi PreCondit guifg=#A6E22E gui=bold +hi PreProc guifg=#A6E22E +hi Question guifg=#66D9EF +hi Repeat guifg=#F92672 gui=bold +hi Search guifg=#000000 guibg=#FFE792 +" marks +hi SignColumn guifg=#A6E22E guibg=#232526 +hi SpecialChar guifg=#F92672 gui=bold +hi SpecialComment guifg=#7E8E91 gui=bold +hi Special guifg=#66D9EF guibg=bg gui=italic +if has("spell") + hi SpellBad guisp=#FF0000 gui=undercurl + hi SpellCap guisp=#7070F0 gui=undercurl + hi SpellLocal guisp=#70F0F0 gui=undercurl + hi SpellRare guisp=#FFFFFF gui=undercurl +endif +hi Statement guifg=#F92672 gui=bold +hi StatusLine guifg=#455354 guibg=fg +hi StatusLineNC guifg=#808080 guibg=#080808 +hi StorageClass guifg=#FD971F gui=italic +hi Structure guifg=#66D9EF +hi Tag guifg=#F92672 gui=italic +hi Title guifg=#ef5939 +hi Todo guifg=#FFFFFF guibg=bg gui=bold + +hi Typedef guifg=#66D9EF +hi Type guifg=#66D9EF gui=none +hi Underlined guifg=#808080 gui=underline + +hi VertSplit guifg=#808080 guibg=#080808 gui=bold +hi VisualNOS guibg=#403D3D +hi Visual guibg=#403D3D +hi WarningMsg guifg=#FFFFFF guibg=#333333 gui=bold +hi WildMenu guifg=#66D9EF guibg=#000000 + +hi TabLineFill guifg=#1B1D1E guibg=#1B1D1E +hi TabLine guibg=#1B1D1E guifg=#808080 gui=none + +if s:molokai_original == 1 + hi Normal guifg=#F8F8F2 guibg=#272822 + hi Comment guifg=#75715E + hi CursorLine guibg=#3E3D32 + hi CursorLineNr guifg=#FD971F gui=none + hi CursorColumn guibg=#3E3D32 + hi ColorColumn guibg=#3B3A32 + hi LineNr guifg=#BCBCBC guibg=#3B3A32 + hi NonText guifg=#75715E + hi SpecialKey guifg=#75715E +else + hi Normal guifg=#F8F8F2 guibg=#1B1D1E + hi Comment guifg=#7E8E91 + hi CursorLine guibg=#293739 + hi CursorLineNr guifg=#FD971F gui=none + hi CursorColumn guibg=#293739 + hi ColorColumn guibg=#232526 + hi LineNr guifg=#465457 guibg=#232526 + hi NonText guifg=#465457 + hi SpecialKey guifg=#465457 +end + +" +" Support for 256-color terminal +" +if &t_Co > 255 + if s:molokai_original == 1 + hi Normal ctermbg=234 + hi CursorLine ctermbg=235 cterm=none + hi CursorLineNr ctermfg=208 cterm=none + else + hi Normal ctermfg=252 ctermbg=233 + hi CursorLine ctermbg=234 cterm=none + hi CursorLineNr ctermfg=208 cterm=none + endif + hi Boolean ctermfg=135 + hi Character ctermfg=144 + hi Number ctermfg=135 + hi String ctermfg=144 + hi Conditional ctermfg=161 cterm=bold + hi Constant ctermfg=135 cterm=bold + hi Cursor ctermfg=16 ctermbg=253 + hi Debug ctermfg=225 cterm=bold + hi Define ctermfg=81 + hi Delimiter ctermfg=241 + + hi DiffAdd ctermbg=24 + hi DiffChange ctermfg=181 ctermbg=239 + hi DiffDelete ctermfg=162 ctermbg=53 + hi DiffText ctermbg=102 cterm=bold + + hi Directory ctermfg=118 cterm=bold + hi Error ctermfg=219 ctermbg=89 + hi ErrorMsg ctermfg=199 ctermbg=16 cterm=bold + hi Exception ctermfg=118 cterm=bold + hi Float ctermfg=135 + hi FoldColumn ctermfg=67 ctermbg=16 + hi Folded ctermfg=67 ctermbg=16 + hi Function ctermfg=118 + hi Identifier ctermfg=208 cterm=none + hi Ignore ctermfg=244 ctermbg=232 + hi IncSearch ctermfg=193 ctermbg=16 + + hi keyword ctermfg=161 cterm=bold + hi Label ctermfg=229 cterm=none + hi Macro ctermfg=193 + hi SpecialKey ctermfg=81 + + hi MatchParen ctermfg=233 ctermbg=208 cterm=bold + hi ModeMsg ctermfg=229 + hi MoreMsg ctermfg=229 + hi Operator ctermfg=161 + + " complete menu + hi Pmenu ctermfg=81 ctermbg=16 + hi PmenuSel ctermfg=255 ctermbg=242 + hi PmenuSbar ctermbg=232 + hi PmenuThumb ctermfg=81 + + hi PreCondit ctermfg=118 cterm=bold + hi PreProc ctermfg=118 + hi Question ctermfg=81 + hi Repeat ctermfg=161 cterm=bold + hi Search ctermfg=0 ctermbg=222 cterm=NONE + + " marks column + hi SignColumn ctermfg=118 ctermbg=235 + hi SpecialChar ctermfg=161 cterm=bold + hi SpecialComment ctermfg=245 cterm=bold + hi Special ctermfg=81 + if has("spell") + hi SpellBad ctermbg=52 + hi SpellCap ctermbg=17 + hi SpellLocal ctermbg=17 + hi SpellRare ctermfg=none ctermbg=none cterm=reverse + endif + hi Statement ctermfg=161 cterm=bold + hi StatusLine ctermfg=238 ctermbg=253 + hi StatusLineNC ctermfg=244 ctermbg=232 + hi StorageClass ctermfg=208 + hi Structure ctermfg=81 + hi Tag ctermfg=161 + hi Title ctermfg=166 + hi Todo ctermfg=231 ctermbg=232 cterm=bold + + hi Typedef ctermfg=81 + hi Type ctermfg=81 cterm=none + hi Underlined ctermfg=244 cterm=underline + + hi VertSplit ctermfg=244 ctermbg=232 cterm=bold + hi VisualNOS ctermbg=238 + hi Visual ctermbg=235 + hi WarningMsg ctermfg=231 ctermbg=238 cterm=bold + hi WildMenu ctermfg=81 ctermbg=16 + + hi Comment ctermfg=59 + hi CursorColumn ctermbg=236 + hi ColorColumn ctermbg=236 + hi LineNr ctermfg=250 ctermbg=236 + hi NonText ctermfg=59 + + hi SpecialKey ctermfg=59 + + if exists("g:rehash256") && g:rehash256 == 1 + hi Normal ctermfg=252 ctermbg=234 + hi CursorLine ctermbg=236 cterm=none + hi CursorLineNr ctermfg=208 cterm=none + + hi Boolean ctermfg=141 + hi Character ctermfg=222 + hi Number ctermfg=141 + hi String ctermfg=222 + hi Conditional ctermfg=197 cterm=bold + hi Constant ctermfg=141 cterm=bold + + hi DiffDelete ctermfg=125 ctermbg=233 + + hi Directory ctermfg=154 cterm=bold + hi Error ctermfg=222 ctermbg=233 + hi Exception ctermfg=154 cterm=bold + hi Float ctermfg=141 + hi Function ctermfg=154 + hi Identifier ctermfg=208 + + hi Keyword ctermfg=197 cterm=bold + hi Operator ctermfg=197 + hi PreCondit ctermfg=154 cterm=bold + hi PreProc ctermfg=154 + hi Repeat ctermfg=197 cterm=bold + + hi Statement ctermfg=197 cterm=bold + hi Tag ctermfg=197 + hi Title ctermfg=203 + hi Visual ctermbg=238 + + hi Comment ctermfg=244 + hi LineNr ctermfg=239 ctermbg=235 + hi NonText ctermfg=239 + hi SpecialKey ctermfg=239 + endif +end + +" Must be at the end, because of ctermbg=234 bug. +" https://groups.google.com/forum/#!msg/vim_dev/afPqwAFNdrU/nqh6tOM87QUJ +set background=dark diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..632a76c --- /dev/null +++ b/init.lua @@ -0,0 +1,79 @@ +-- Change color scheme +-- set background=dark +-- if has("gui_running") +-- set guioptions-=m " remove menu bar +-- set guioptions-=T " remove toolbar +-- set guioptions-=r " remove right-hand scroll bar +-- set guioptions-=L " remove left-hand scroll bar +-- set guioptions-=e " vim looking tabs +-- set antialias +-- " set macligatures +-- set guiligatures=!\"#$%&()*+-./:<=>?@[]^_{\|~ +-- set guioptions+=k +-- let &guifont="Fira Code:h17" +-- colorscheme ayu +-- else +-- colorscheme molokai +-- endif +vim.opt.termguicolors = true +vim.cmd.colorscheme("molokai") + +-- Tab configuration +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 +vim.opt.expandtab = true +vim.opt.backspace = {"indent", "eol", "start"} + +-- Show whitespace characters +vim.opt.listchars = { + tab = "├─┤", + trail = "␠", + nbsp = "⎵", + lead = "·" +} +vim.opt.list = true + +-- Set line numbering rules +vim.wo.number = true +vim.wo.relativenumber = true +vim.api.nvim_create_autocmd("InsertEnter", { + pattern = "*", + callback = function (ev) + vim.wo.number = true + vim.wo.relativenumber = false + end +}) +vim.api.nvim_create_autocmd("InsertLeave", { + pattern = "*", + callback = function (ev) + vim.wo.number = true + vim.wo.relativenumber = true + end +}) + +-- Automatically change current directory to be the same as the file editing +vim.opt.autochdir = true + +-- Remove conceal for all files +vim.opt.conceallevel = 0 + +-- Paragraph formatter +-- let &formatprg="par -w80" + +-- Encodings +vim.opt.fileencodings = {"utf8", "cp1251", "koi8-r", "latin1"} + +-- " Spelling +-- set spell spelllang=ru,en + +-- Add vertical rulers +vim.opt.colorcolumn = {81, 121} + +-- netrw +vim.g.netrw_banner = false +vim.g.netrw_liststyle = 1 + +require("keybindings") +require("filetype-config") +require("plugins") diff --git a/lazy-lock.json b/lazy-lock.json new file mode 100644 index 0000000..283dc27 --- /dev/null +++ b/lazy-lock.json @@ -0,0 +1,8 @@ +{ + "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" }, + "lazy.nvim": { "branch": "main", "commit": "28a80136b5253a8de6dea87f335919ac9f67116d" }, + "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" }, + "nvim-treesitter": { "branch": "master", "commit": "691fdc61a13ecca2f5cf0c2abda4b5da87c54893" }, + "vim-plugin-ruscmd": { "branch": "master", "commit": "e952abbea092e420b128936a0c284fb522612c3a" }, + "vimtex": { "branch": "master", "commit": "a59a49b54ae039f1a439c9a16c2ea7b461b8e925" } +}
\ No newline at end of file diff --git a/lua/filetype-config.lua b/lua/filetype-config.lua new file mode 100644 index 0000000..132913b --- /dev/null +++ b/lua/filetype-config.lua @@ -0,0 +1,8 @@ +vim.api.nvim_create_autocmd("FileType", { + pattern = {"tex", "json", "haskell", "markdown", "lua"}, + callback = function () + vim.opt_local.tabstop = 2 + vim.opt_local.softtabstop = 2 + vim.opt_local.shiftwidth = 2 + end +}) diff --git a/lua/keybindings.lua b/lua/keybindings.lua new file mode 100644 index 0000000..e10e458 --- /dev/null +++ b/lua/keybindings.lua @@ -0,0 +1,44 @@ +vim.g.mapleader = " " + +-- Splits keybindings +vim.keymap.set("n", "<leader>s", "<ESC>:vsplit<CR>") +vim.keymap.set("n", "<leader>vs", "<ESC>:split<CR>") + +-- Splits shortcuts +vim.keymap.set("n", "<leader>j", "<C-W><C-J>") +vim.keymap.set("n", "<leader>k", "<C-W><C-K>") +vim.keymap.set("n", "<leader>l", "<C-W><C-L>") +vim.keymap.set("n", "<leader>h", "<C-W><C-H>") + +-- Horizontal window resizing +vim.keymap.set("n", "<leader>.", "<C-W>>") +vim.keymap.set("n", "<leader>,", "<C-W><") + +-- Copy to system clipboard +vim.keymap.set("n", "<leader>y", '"+y') +vim.keymap.set("v", "<leader>y", '"+y') +vim.keymap.set("n", "<leader>d", '"+d') +vim.keymap.set("v", "<leader>d", '"+d') + +-- Terminal mode +-- au TerminalOpen * setlocal nospell +vim.keymap.set('t', "<leader><ESC>", "<C-\\><C-n>") +vim.keymap.set('t', "<S-space>", "<space>") + +-- Tabs +vim.keymap.set("n", "<leader>tn", ":tabnew<CR>") +vim.keymap.set("n", "<leader>tt", ":tabnew | term<CR>") +vim.keymap.set("n", "<leader>th", ":tabprevious<CR>") +vim.keymap.set("n", "<leader>tl", ":tabnext<CR>") +vim.keymap.set("n", "<leader>tc", ":tabclose<CR>") +vim.keymap.set("n", "<leader>t,", ":tabmove -1<CR>") +vim.keymap.set("n", "<leader>t.", ":tabmove +1<CR>") + +-- Trailing whitespace trimmer +function trim_whitespace() + local view = vim.fn.winsaveview() + vim.cmd.retab() + vim.cmd[[keeppatterns %s/\s\+$//e]] + vim.fn.winrestview(view) +end +vim.keymap.set("n", "<leader>f", trim_whitespace) diff --git a/lua/plugins.lua b/lua/plugins.lua new file mode 100644 index 0000000..0a22d75 --- /dev/null +++ b/lua/plugins.lua @@ -0,0 +1,56 @@ +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", + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +-- Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } +-- Plug 'junegunn/fzf.vim' +-- Plug 'tpope/vim-fugitive' +-- Plug 'hrsh7th/vim-vsnip' +-- +-- " Languages +-- Plug 'prabirshrestha/vim-lsp' + + +require("lazy").setup({ + { "numToStr/Comment.nvim", lazy = false, opts = {} }, + { + "nvim-lualine/lualine.nvim", + lazy = false, + opts = { + options = { + icons_enabled = false, + theme = "powerline", + }, + } + }, + { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + config = function () + local configs = require("nvim-treesitter.configs") + configs.setup({ + ensure_installed = { + "c", "cpp", "lua", "vimdoc", "haskell", "bibtex", "markdown_inline", + "cmake", "rust", "glsl", "python", "bash", "arduino", "css", "diff", + "dockerfile", "json", "vim", "kconfig", "latex", "make", "markdown", + "go", "html", "ocaml", "org", "norg", "toml", "vue", "xml", "yaml", + }, + sync_install = false, + highlight = { enable = true }, + indent = { enable = true }, + }) + end + }, + "lervag/vimtex", + "powerman/vim-plugin-ruscmd", +}) + |