summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Guschin <guschin@altlinux.org>2023-10-16 15:50:52 +0400
committerAndrew Guschin <guschin@altlinux.org>2023-10-16 15:50:52 +0400
commitb2b1f661e55c2a1139aef1f8f8aa4a11b10d3b01 (patch)
tree200094a27a17f2a74f31128786726514181108e1
Initial commit
-rw-r--r--colors/ayu.vim280
-rw-r--r--colors/molokai.vim276
-rw-r--r--init.lua79
-rw-r--r--lazy-lock.json8
-rw-r--r--lua/filetype-config.lua8
-rw-r--r--lua/keybindings.lua44
-rw-r--r--lua/plugins.lua56
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",
+})
+