summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Luevano Alvarado <david@luevano.xyz>2022-04-17 13:37:29 -0600
committerDavid Luevano Alvarado <david@luevano.xyz>2022-04-17 13:37:29 -0600
commit593acd3a3f57224b6b195ebc519bc40983ac1382 (patch)
tree1852008ebb394668cdb74db8ade33599acf57b9a
parent50be8b1cd2f42b257bd2704c538de3a81ac17189 (diff)
add vim config
this is compatible both with nvim and vim
-rw-r--r--.config/nvim/colors/dracula.vim400
-rw-r--r--.config/nvim/colors/paramount.vim224
-rw-r--r--.config/nvim/init.vim89
l---------.vim/colors1
l---------.vimrc1
5 files changed, 715 insertions, 0 deletions
diff --git a/.config/nvim/colors/dracula.vim b/.config/nvim/colors/dracula.vim
new file mode 100644
index 0000000..1695cb0
--- /dev/null
+++ b/.config/nvim/colors/dracula.vim
@@ -0,0 +1,400 @@
+" Dracula Theme: {{{
+" Taken from https://github.com/dracula/vim/blob/master/colors/dracula.vim
+"
+" https://github.com/zenorocha/dracula-theme
+"
+" Copyright 2016, All rights reserved
+"
+" Code licensed under the MIT license
+" http://zenorocha.mit-license.org
+"
+" @author Trevor Heins <@heinst>
+" @author Éverton Ribeiro <nuxlli@gmail.com>
+" @author Derek Sifford <dereksifford@gmail.com>
+" @author Zeno Rocha <hi@zenorocha.com>
+scriptencoding utf8
+" }}}
+
+" Configuration: {{{
+
+if v:version > 580
+ highlight clear
+ if exists('syntax_on')
+ syntax reset
+ endif
+endif
+
+let g:colors_name = 'dracula'
+
+if !(has('termguicolors') && &termguicolors) && !has('gui_running') && &t_Co != 256
+ finish
+endif
+
+" Actual Palette: {{{
+" Taken from https://github.com/dracula/vim/blob/master/autoload/dracula.vim
+
+let g:dracula#palette = {}
+let g:dracula#palette.fg = ['#F8F8F2', 253]
+
+let g:dracula#palette.bglighter = ['#424450', 238]
+let g:dracula#palette.bglight = ['#343746', 237]
+let g:dracula#palette.bg = ['#282A36', 236]
+let g:dracula#palette.bgdark = ['#21222C', 235]
+let g:dracula#palette.bgdarker = ['#191A21', 234]
+
+let g:dracula#palette.comment = ['#6272A4', 61]
+let g:dracula#palette.selection = ['#44475A', 239]
+let g:dracula#palette.subtle = ['#424450', 238]
+
+let g:dracula#palette.cyan = ['#8BE9FD', 117]
+let g:dracula#palette.green = ['#50FA7B', 84]
+let g:dracula#palette.orange = ['#FFB86C', 215]
+let g:dracula#palette.pink = ['#FF79C6', 212]
+let g:dracula#palette.purple = ['#BD93F9', 141]
+let g:dracula#palette.red = ['#FF5555', 203]
+let g:dracula#palette.yellow = ['#F1FA8C', 228]
+
+"
+" ANSI
+"
+let g:dracula#palette.color_0 = '#21222C'
+let g:dracula#palette.color_1 = '#FF5555'
+let g:dracula#palette.color_2 = '#50FA7B'
+let g:dracula#palette.color_3 = '#F1FA8C'
+let g:dracula#palette.color_4 = '#BD93F9'
+let g:dracula#palette.color_5 = '#FF79C6'
+let g:dracula#palette.color_6 = '#8BE9FD'
+let g:dracula#palette.color_7 = '#F8F8F2'
+let g:dracula#palette.color_8 = '#6272A4'
+let g:dracula#palette.color_9 = '#FF6E6E'
+let g:dracula#palette.color_10 = '#69FF94'
+let g:dracula#palette.color_11 = '#FFFFA5'
+let g:dracula#palette.color_12 = '#D6ACFF'
+let g:dracula#palette.color_13 = '#FF92DF'
+let g:dracula#palette.color_14 = '#A4FFFF'
+let g:dracula#palette.color_15 = '#FFFFFF'
+
+
+" Helper function that takes a variadic list of filetypes as args and returns
+" whether or not the execution of the ftplugin should be aborted.
+func! dracula#should_abort(...)
+ if ! exists('g:colors_name') || g:colors_name !=# 'dracula'
+ return 1
+ elseif a:0 > 0 && (! exists('b:current_syntax') || index(a:000, b:current_syntax) == -1)
+ return 1
+ endif
+ return 0
+endfunction
+" }}}
+
+" Palette: {{{2
+
+let s:fg = g:dracula#palette.fg
+
+let s:bglighter = g:dracula#palette.bglighter
+let s:bglight = g:dracula#palette.bglight
+let s:bg = g:dracula#palette.bg
+let s:bgdark = g:dracula#palette.bgdark
+let s:bgdarker = g:dracula#palette.bgdarker
+
+let s:comment = g:dracula#palette.comment
+let s:selection = g:dracula#palette.selection
+let s:subtle = g:dracula#palette.subtle
+
+let s:cyan = g:dracula#palette.cyan
+let s:green = g:dracula#palette.green
+let s:orange = g:dracula#palette.orange
+let s:pink = g:dracula#palette.pink
+let s:purple = g:dracula#palette.purple
+let s:red = g:dracula#palette.red
+let s:yellow = g:dracula#palette.yellow
+
+let s:none = ['NONE', 'NONE']
+
+if has('nvim')
+ for s:i in range(16)
+ let g:terminal_color_{s:i} = g:dracula#palette['color_' . s:i]
+ endfor
+endif
+
+if has('terminal')
+ let g:terminal_ansi_colors = []
+ for s:i in range(16)
+ call add(g:terminal_ansi_colors, g:dracula#palette['color_' . s:i])
+ endfor
+endif
+
+" }}}2
+" User Configuration: {{{2
+
+if !exists('g:dracula_bold')
+ let g:dracula_bold = 1
+endif
+
+if !exists('g:dracula_italic')
+ let g:dracula_italic = 1
+endif
+
+if !exists('g:dracula_underline')
+ let g:dracula_underline = 1
+endif
+
+if !exists('g:dracula_undercurl')
+ let g:dracula_undercurl = g:dracula_underline
+endif
+
+if !exists('g:dracula_full_special_attrs_support')
+ let g:dracula_full_special_attrs_support = has('gui_running')
+endif
+
+if !exists('g:dracula_inverse')
+ let g:dracula_inverse = 1
+endif
+
+if !exists('g:dracula_colorterm')
+ let g:dracula_colorterm = 1
+endif
+
+"}}}2
+" Script Helpers: {{{2
+
+let s:attrs = {
+ \ 'bold': g:dracula_bold == 1 ? 'bold' : 0,
+ \ 'italic': g:dracula_italic == 1 ? 'italic' : 0,
+ \ 'underline': g:dracula_underline == 1 ? 'underline' : 0,
+ \ 'undercurl': g:dracula_undercurl == 1 ? 'undercurl' : 0,
+ \ 'inverse': g:dracula_inverse == 1 ? 'inverse' : 0,
+ \}
+
+function! s:h(scope, fg, ...) " bg, attr_list, special
+ let l:fg = copy(a:fg)
+ let l:bg = get(a:, 1, ['NONE', 'NONE'])
+
+ let l:attr_list = filter(get(a:, 2, ['NONE']), 'type(v:val) == 1')
+ let l:attrs = len(l:attr_list) > 0 ? join(l:attr_list, ',') : 'NONE'
+
+ " If the UI does not have full support for special attributes (like underline and
+ " undercurl) and the highlight does not explicitly set the foreground color,
+ " make the foreground the same as the attribute color to ensure the user will
+ " get some highlight if the attribute is not supported. The default behavior
+ " is to assume that terminals do not have full support, but the user can set
+ " the global variable `g:dracula_full_special_attrs_support` explicitly if the
+ " default behavior is not desirable.
+ let l:special = get(a:, 3, ['NONE', 'NONE'])
+ if l:special[0] !=# 'NONE' && l:fg[0] ==# 'NONE' && !g:dracula_full_special_attrs_support
+ let l:fg[0] = l:special[0]
+ let l:fg[1] = l:special[1]
+ endif
+
+ let l:hl_string = [
+ \ 'highlight', a:scope,
+ \ 'guifg=' . l:fg[0], 'ctermfg=' . l:fg[1],
+ \ 'guibg=' . l:bg[0], 'ctermbg=' . l:bg[1],
+ \ 'gui=' . l:attrs, 'cterm=' . l:attrs,
+ \ 'guisp=' . l:special[0],
+ \]
+
+ execute join(l:hl_string, ' ')
+endfunction
+
+"}}}2
+" Dracula Highlight Groups: {{{2
+
+call s:h('DraculaBgLight', s:none, s:bglight)
+call s:h('DraculaBgLighter', s:none, s:bglighter)
+call s:h('DraculaBgDark', s:none, s:bgdark)
+call s:h('DraculaBgDarker', s:none, s:bgdarker)
+
+call s:h('DraculaFg', s:fg)
+call s:h('DraculaFgUnderline', s:fg, s:none, [s:attrs.underline])
+call s:h('DraculaFgBold', s:fg, s:none, [s:attrs.bold])
+
+call s:h('DraculaComment', s:comment)
+call s:h('DraculaCommentBold', s:comment, s:none, [s:attrs.bold])
+
+call s:h('DraculaSelection', s:none, s:selection)
+
+call s:h('DraculaSubtle', s:subtle)
+
+call s:h('DraculaCyan', s:cyan)
+call s:h('DraculaCyanItalic', s:cyan, s:none, [s:attrs.italic])
+
+call s:h('DraculaGreen', s:green)
+call s:h('DraculaGreenBold', s:green, s:none, [s:attrs.bold])
+call s:h('DraculaGreenItalic', s:green, s:none, [s:attrs.italic])
+call s:h('DraculaGreenItalicUnderline', s:green, s:none, [s:attrs.italic, s:attrs.underline])
+
+call s:h('DraculaOrange', s:orange)
+call s:h('DraculaOrangeBold', s:orange, s:none, [s:attrs.bold])
+call s:h('DraculaOrangeItalic', s:orange, s:none, [s:attrs.italic])
+call s:h('DraculaOrangeBoldItalic', s:orange, s:none, [s:attrs.bold, s:attrs.italic])
+call s:h('DraculaOrangeInverse', s:bg, s:orange)
+
+call s:h('DraculaPink', s:pink)
+call s:h('DraculaPinkItalic', s:pink, s:none, [s:attrs.italic])
+
+call s:h('DraculaPurple', s:purple)
+call s:h('DraculaPurpleBold', s:purple, s:none, [s:attrs.bold])
+call s:h('DraculaPurpleItalic', s:purple, s:none, [s:attrs.italic])
+
+call s:h('DraculaRed', s:red)
+call s:h('DraculaRedInverse', s:fg, s:red)
+
+call s:h('DraculaYellow', s:yellow)
+call s:h('DraculaYellowItalic', s:yellow, s:none, [s:attrs.italic])
+
+call s:h('DraculaError', s:red, s:none, [], s:red)
+
+call s:h('DraculaErrorLine', s:none, s:none, [s:attrs.undercurl], s:red)
+call s:h('DraculaWarnLine', s:none, s:none, [s:attrs.undercurl], s:orange)
+call s:h('DraculaInfoLine', s:none, s:none, [s:attrs.undercurl], s:cyan)
+
+call s:h('DraculaTodo', s:cyan, s:none, [s:attrs.bold, s:attrs.inverse])
+call s:h('DraculaSearch', s:green, s:none, [s:attrs.inverse])
+call s:h('DraculaBoundary', s:comment, s:bgdark)
+call s:h('DraculaWinSeparator', s:comment, s:bgdark)
+call s:h('DraculaLink', s:cyan, s:none, [s:attrs.underline])
+
+call s:h('DraculaDiffChange', s:orange, s:none)
+call s:h('DraculaDiffText', s:bg, s:orange)
+call s:h('DraculaDiffDelete', s:red, s:bgdark)
+
+" }}}2
+
+" }}}
+" User Interface: {{{
+
+set background=dark
+
+" Required as some plugins will overwrite
+call s:h('Normal', s:fg, g:dracula_colorterm || has('gui_running') ? s:bg : s:none )
+call s:h('StatusLine', s:none, s:bglighter, [s:attrs.bold])
+call s:h('StatusLineNC', s:none, s:bglight)
+call s:h('StatusLineTerm', s:none, s:bglighter, [s:attrs.bold])
+call s:h('StatusLineTermNC', s:none, s:bglight)
+call s:h('WildMenu', s:bg, s:purple, [s:attrs.bold])
+call s:h('CursorLine', s:none, s:subtle)
+
+hi! link ColorColumn DraculaBgDark
+hi! link CursorColumn CursorLine
+hi! link CursorLineNr DraculaYellow
+hi! link DiffAdd DraculaGreen
+hi! link DiffAdded DiffAdd
+hi! link DiffChange DraculaDiffChange
+hi! link DiffDelete DraculaDiffDelete
+hi! link DiffRemoved DiffDelete
+hi! link DiffText DraculaDiffText
+hi! link Directory DraculaPurpleBold
+hi! link ErrorMsg DraculaRedInverse
+hi! link FoldColumn DraculaSubtle
+hi! link Folded DraculaBoundary
+hi! link IncSearch DraculaOrangeInverse
+call s:h('LineNr', s:comment)
+hi! link MoreMsg DraculaFgBold
+hi! link NonText DraculaSubtle
+hi! link Pmenu DraculaBgDark
+hi! link PmenuSbar DraculaBgDark
+hi! link PmenuSel DraculaSelection
+hi! link PmenuThumb DraculaSelection
+hi! link Question DraculaFgBold
+hi! link Search DraculaSearch
+call s:h('SignColumn', s:comment)
+hi! link TabLine DraculaBoundary
+hi! link TabLineFill DraculaBgDark
+hi! link TabLineSel Normal
+hi! link Title DraculaGreenBold
+hi! link VertSplit DraculaWinSeparator
+hi! link Visual DraculaSelection
+hi! link VisualNOS Visual
+hi! link WarningMsg DraculaOrangeInverse
+
+" }}}
+" Syntax: {{{
+
+" Required as some plugins will overwrite
+call s:h('MatchParen', s:green, s:none, [s:attrs.underline])
+call s:h('Conceal', s:cyan, s:none)
+
+" Neovim uses SpecialKey for escape characters only. Vim uses it for that, plus whitespace.
+if has('nvim')
+ hi! link SpecialKey DraculaRed
+ hi! link LspReferenceText DraculaSelection
+ hi! link LspReferenceRead DraculaSelection
+ hi! link LspReferenceWrite DraculaSelection
+ " Link old 'LspDiagnosticsDefault*' hl groups
+ " for backward compatibility with neovim v0.5.x
+ hi! link LspDiagnosticsDefaultInformation DiagnosticInfo
+ hi! link LspDiagnosticsDefaultHint DiagnosticHint
+ hi! link LspDiagnosticsDefaultError DiagnosticError
+ hi! link LspDiagnosticsDefaultWarning DiagnosticWarn
+ hi! link LspDiagnosticsUnderlineError DiagnosticUnderlineError
+ hi! link LspDiagnosticsUnderlineHint DiagnosticUnderlineHint
+ hi! link LspDiagnosticsUnderlineInformation DiagnosticUnderlineInfo
+ hi! link LspDiagnosticsUnderlineWarning DiagnosticUnderlineWarn
+
+ hi! link DiagnosticInfo DraculaCyan
+ hi! link DiagnosticHint DraculaCyan
+ hi! link DiagnosticError DraculaError
+ hi! link DiagnosticWarn DraculaOrange
+ hi! link DiagnosticUnderlineError DraculaErrorLine
+ hi! link DiagnosticUnderlineHint DraculaInfoLine
+ hi! link DiagnosticUnderlineInfo DraculaInfoLine
+ hi! link DiagnosticUnderlineWarn DraculaWarnLine
+
+ hi! link WinSeparator DraculaWinSeparator
+else
+ hi! link SpecialKey DraculaPink
+endif
+
+hi! link Comment DraculaComment
+hi! link Underlined DraculaFgUnderline
+hi! link Todo DraculaTodo
+
+hi! link Error DraculaError
+hi! link SpellBad DraculaErrorLine
+hi! link SpellLocal DraculaWarnLine
+hi! link SpellCap DraculaInfoLine
+hi! link SpellRare DraculaInfoLine
+
+hi! link Constant DraculaPurple
+hi! link String DraculaYellow
+hi! link Character DraculaPink
+hi! link Number Constant
+hi! link Boolean Constant
+hi! link Float Constant
+
+hi! link Identifier DraculaFg
+hi! link Function DraculaGreen
+
+hi! link Statement DraculaPink
+hi! link Conditional DraculaPink
+hi! link Repeat DraculaPink
+hi! link Label DraculaPink
+hi! link Operator DraculaPink
+hi! link Keyword DraculaPink
+hi! link Exception DraculaPink
+
+hi! link PreProc DraculaPink
+hi! link Include DraculaPink
+hi! link Define DraculaPink
+hi! link Macro DraculaPink
+hi! link PreCondit DraculaPink
+hi! link StorageClass DraculaPink
+hi! link Structure DraculaPink
+hi! link Typedef DraculaPink
+
+hi! link Type DraculaCyanItalic
+
+hi! link Delimiter DraculaFg
+
+hi! link Special DraculaPink
+hi! link SpecialComment DraculaCyanItalic
+hi! link Tag DraculaCyan
+hi! link helpHyperTextJump DraculaLink
+hi! link helpCommand DraculaPurple
+hi! link helpExample DraculaGreen
+hi! link helpBacktick Special
+
+"}}}
+
+" vim: fdm=marker ts=2 sts=2 sw=2 fdl=0 et:
diff --git a/.config/nvim/colors/paramount.vim b/.config/nvim/colors/paramount.vim
new file mode 100644
index 0000000..c3e60cc
--- /dev/null
+++ b/.config/nvim/colors/paramount.vim
@@ -0,0 +1,224 @@
+" Name: paramount.vim
+" Version: 0.1.0
+" Maintainer: github.com/owickstrom
+" License: The MIT License (MIT)
+"
+" A minimal colorscheme for Vim that only puts emphasis on the paramount.
+"
+" Based on the pencil and off colorschemes:
+"
+" https://github.com/reedes/vim-colors-pencil
+" https://github.com/reedes/vim-colors-off
+"
+"""
+hi clear
+
+if exists('syntax on')
+ syntax reset
+endif
+
+let g:colors_name='paramount'
+
+let s:black = { "gui": "#000000", "cterm": "232" }
+let s:medium_gray = { "gui": "#767676", "cterm": "243" }
+let s:white = { "gui": "#F1F1F1", "cterm": "15" }
+let s:actual_white = { "gui": "#FFFFFF", "cterm": "231" }
+let s:subtle_black = { "gui": "#303030", "cterm": "236" }
+let s:light_black = { "gui": "#262626", "cterm": "235" }
+let s:lighter_black = { "gui": "#4E4E4E", "cterm": "239" }
+let s:light_gray = { "gui": "#A8A8A8", "cterm": "248" }
+let s:lighter_gray = { "gui": "#C6C6C6", "cterm": "251" }
+let s:lightest_gray = { "gui": "#EEEEEE", "cterm": "255" }
+let s:pink = { "gui": "#fb007a", "cterm": "9" }
+let s:dark_red = { "gui": "#C30771", "cterm": "1" }
+let s:light_red = { "gui": "#E32791", "cterm": "1" }
+let s:orange = { "gui": "#D75F5F", "cterm": "167" }
+let s:darker_blue = { "gui": "#005F87", "cterm": "18" }
+let s:dark_blue = { "gui": "#008EC4", "cterm": "32" }
+let s:blue = { "gui": "#20BBFC", "cterm": "12" }
+let s:light_blue = { "gui": "#b6d6fd", "cterm": "153" }
+let s:dark_cyan = { "gui": "#20A5BA", "cterm": "6" }
+let s:light_cyan = { "gui": "#4FB8CC", "cterm": "14" }
+let s:dark_green = { "gui": "#10A778", "cterm": "2" }
+let s:light_green = { "gui": "#5FD7A7", "cterm": "10" }
+let s:dark_purple = { "gui": "#af5fd7", "cterm": "134" }
+let s:light_purple = { "gui": "#a790d5", "cterm": "140" }
+let s:yellow = { "gui": "#F3E430", "cterm": "11" }
+let s:light_yellow = { "gui": "#ffff87", "cterm": "228" }
+let s:dark_yellow = { "gui": "#A89C14", "cterm": "3" }
+
+let s:background = &background
+
+if &background == "dark"
+ let s:bg = s:black
+ let s:bg_subtle = s:lighter_black
+ let s:bg_very_subtle = s:subtle_black
+ let s:norm = s:lighter_gray
+ let s:norm_subtle = s:medium_gray
+ let s:purple = s:light_purple
+ let s:cyan = s:light_cyan
+ let s:green = s:light_green
+ let s:red = s:light_red
+ let s:visual = s:light_purple
+ let s:yellow = s:light_yellow
+else
+ let s:bg = s:actual_white
+ let s:bg_subtle = s:light_gray
+ let s:bg_very_subtle = s:lightest_gray
+ let s:norm = s:light_black
+ let s:norm_subtle = s:medium_gray
+ let s:purple = s:dark_purple
+ let s:cyan = s:dark_cyan
+ let s:green = s:dark_green
+ let s:red = s:dark_red
+ let s:visual = s:dark_purple
+ let s:yellow = s:dark_yellow
+endif
+
+" https://github.com/noahfrederick/vim-hemisu/
+function! s:h(group, style)
+ execute "highlight" a:group
+ \ "guifg=" (has_key(a:style, "fg") ? a:style.fg.gui : "NONE")
+ \ "guibg=" (has_key(a:style, "bg") ? a:style.bg.gui : "NONE")
+ \ "guisp=" (has_key(a:style, "sp") ? a:style.sp.gui : "NONE")
+ \ "gui=" (has_key(a:style, "gui") ? a:style.gui : "NONE")
+ \ "ctermfg=" (has_key(a:style, "fg") ? a:style.fg.cterm : "NONE")
+ \ "ctermbg=" (has_key(a:style, "bg") ? a:style.bg.cterm : "NONE")
+ \ "cterm=" (has_key(a:style, "cterm") ? a:style.cterm : "NONE")
+endfunction
+
+call s:h("Normal", {"bg": s:bg, "fg": s:norm})
+
+" restore &background's value in case changing Normal changed &background (:help :hi-normal-cterm)
+if &background != s:background
+ execute "set background=" . s:background
+endif
+
+call s:h("Cursor", {"bg": s:purple, "fg": s:norm })
+call s:h("Comment", {"fg": s:bg_subtle, "gui": "italic"})
+
+call s:h("Constant", {"fg": s:purple})
+hi! link Character Constant
+hi! link Number Constant
+hi! link Boolean Constant
+hi! link Float Constant
+hi! link String Constant
+
+"call s:h("Identifier", {"fg": s:dark_blue})
+hi! link Identifier Normal
+hi! link Function Identifier
+
+call s:h("Statement", {"fg": s:norm_subtle})
+hi! link Conditonal Statement
+hi! link Repeat Statement
+hi! link Label Statement
+hi! link Keyword Statement
+hi! link Exception Statement
+
+call s:h("Operator", {"fg": s:norm, "cterm": "bold", "gui": "bold"})
+
+call s:h("PreProc", {"fg": s:norm_subtle})
+hi! link Include PreProc
+hi! link Define PreProc
+hi! link Macro PreProc
+hi! link PreCondit PreProc
+
+call s:h("Type", {"fg": s:norm})
+hi! link StorageClass Type
+hi! link Structure Type
+hi! link Typedef Type
+
+call s:h("Special", {"fg": s:norm_subtle, "gui": "italic"})
+hi! link SpecialChar Special
+hi! link Tag Special
+hi! link Delimiter Special
+hi! link SpecialComment Special
+hi! link Debug Special
+
+call s:h("Underlined", {"fg": s:norm, "gui": "underline", "cterm": "underline"})
+call s:h("Ignore", {"fg": s:bg})
+call s:h("Error", {"fg": s:actual_white, "bg": s:red, "cterm": "bold"})
+call s:h("Todo", {"fg": s:purple, "gui": "underline", "cterm": "underline"})
+call s:h("SpecialKey", {"fg": s:light_green})
+call s:h("NonText", {"fg": s:medium_gray})
+call s:h("Directory", {"fg": s:dark_blue})
+call s:h("ErrorMsg", {"fg": s:red})
+call s:h("IncSearch", {"bg": s:yellow, "fg": s:light_black})
+call s:h("Search", {"bg": s:light_green, "fg": s:light_black})
+call s:h("MoreMsg", {"fg": s:medium_gray, "cterm": "bold", "gui": "bold"})
+hi! link ModeMsg MoreMsg
+call s:h("LineNr", {"fg": s:bg_subtle})
+call s:h("CursorLineNr", {"fg": s:purple, "bg": s:bg_very_subtle})
+call s:h("Question", {"fg": s:red})
+call s:h("StatusLine", {"bg": s:bg_very_subtle})
+call s:h("StatusLineNC", {"bg": s:bg_very_subtle, "fg": s:medium_gray})
+call s:h("VertSplit", {"bg": s:bg_very_subtle, "fg": s:bg_very_subtle})
+call s:h("Title", {"fg": s:dark_blue})
+call s:h("Visual", {"fg": s:norm, "bg": s:visual})
+call s:h("VisualNOS", {"bg": s:bg_subtle})
+call s:h("WarningMsg", {"fg": s:yellow})
+call s:h("WildMenu", {"fg": s:bg, "bg": s:norm})
+call s:h("Folded", {"fg": s:medium_gray})
+call s:h("FoldColumn", {"fg": s:bg_subtle})
+call s:h("DiffAdd", {"fg": s:green})
+call s:h("DiffDelete", {"fg": s:red})
+call s:h("DiffChange", {"fg": s:dark_yellow})
+call s:h("DiffText", {"fg": s:dark_blue})
+call s:h("SignColumn", {"fg": s:light_green})
+
+
+if has("gui_running")
+ call s:h("SpellBad", {"gui": "underline", "sp": s:red})
+ call s:h("SpellCap", {"gui": "underline", "sp": s:light_green})
+ call s:h("SpellRare", {"gui": "underline", "sp": s:pink})
+ call s:h("SpellLocal", {"gui": "underline", "sp": s:dark_green})
+else
+ call s:h("SpellBad", {"cterm": "underline", "fg": s:red})
+ call s:h("SpellCap", {"cterm": "underline", "fg": s:light_green})
+ call s:h("SpellRare", {"cterm": "underline", "fg": s:pink})
+ call s:h("SpellLocal", {"cterm": "underline", "fg": s:dark_green})
+endif
+
+call s:h("Pmenu", {"fg": s:norm, "bg": s:bg_subtle})
+call s:h("PmenuSel", {"fg": s:norm, "bg": s:purple})
+call s:h("PmenuSbar", {"fg": s:norm, "bg": s:bg_subtle})
+call s:h("PmenuThumb", {"fg": s:norm, "bg": s:bg_subtle})
+call s:h("TabLine", {"fg": s:norm, "bg": s:bg_very_subtle})
+call s:h("TabLineSel", {"fg": s:purple, "bg": s:bg_subtle, "gui": "bold", "cterm": "bold"})
+call s:h("TabLineFill", {"fg": s:norm, "bg": s:bg_very_subtle})
+call s:h("CursorColumn", {"bg": s:bg_very_subtle})
+call s:h("CursorLine", {"bg": s:bg_very_subtle})
+call s:h("ColorColumn", {"bg": s:bg_subtle})
+
+call s:h("MatchParen", {"bg": s:bg_subtle, "fg": s:norm})
+call s:h("qfLineNr", {"fg": s:medium_gray})
+
+call s:h("htmlH1", {"bg": s:bg, "fg": s:norm})
+call s:h("htmlH2", {"bg": s:bg, "fg": s:norm})
+call s:h("htmlH3", {"bg": s:bg, "fg": s:norm})
+call s:h("htmlH4", {"bg": s:bg, "fg": s:norm})
+call s:h("htmlH5", {"bg": s:bg, "fg": s:norm})
+call s:h("htmlH6", {"bg": s:bg, "fg": s:norm})
+
+" Synatastic
+call s:h("SyntasticWarningSign", {"fg": s:yellow})
+call s:h("SyntasticWarning", {"bg": s:yellow, "fg": s:black, "gui": "bold", "cterm": "bold"})
+call s:h("SyntasticErrorSign", {"fg": s:red})
+call s:h("SyntasticError", {"bg": s:red, "fg": s:white, "gui": "bold", "cterm": "bold"})
+
+" Neomake
+hi link NeomakeWarningSign SyntasticWarningSign
+hi link NeomakeErrorSign SyntasticErrorSign
+
+" ALE
+hi link ALEWarningSign SyntasticWarningSign
+hi link ALEErrorSign SyntasticErrorSign
+
+" Signify, git-gutter
+hi link SignifySignAdd LineNr
+hi link SignifySignDelete LineNr
+hi link SignifySignChange LineNr
+hi link GitGutterAdd LineNr
+hi link GitGutterDelete LineNr
+hi link GitGutterChange LineNr
+hi link GitGutterChangeDelete LineNr
diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim
new file mode 100644
index 0000000..e220b2a
--- /dev/null
+++ b/.config/nvim/init.vim
@@ -0,0 +1,89 @@
+if has('nvim')
+ " Neovim specific commands
+else
+ " Standard vim specific commands
+endif
+
+" Mutual commands after this
+let mapleader=','
+set showcmd
+syntax enable
+
+set background=dark
+colorscheme dracula
+highlight BadWhitespace ctermbg=red
+
+set title
+set encoding=utf-8
+set number relativenumber
+set cursorline
+set clipboard+=unnamedplus
+
+filetype plugin indent on
+set tabstop=4
+set shiftwidth=4
+set foldmethod=indent
+set foldlevel=99
+
+" es_mx not always supported
+" set spelllang=es_mx,en_us
+set spelllang=en_us
+set showbreak=↪\
+set listchars=eol:↲,nbsp:␣,tab:»\ ,trail:•,precedes:⟨,extends:⟩
+
+
+" functions
+" Toggle spellchecking
+function! ToggleSpellCheck()
+ set spell!
+ if &spell
+ echo "Spellcheck ON"
+ else
+ echo "Spellcheck OFF"
+ endif
+endfunction
+
+" Toggle listchars
+function! ToggleListChars()
+ set list!
+ if &list
+ echo "Listchars ON"
+ else
+ echo "Listchars OFF"
+ endif
+endfunction
+
+" keybindings
+" reload vim
+nmap <F5> :source ~/.config/nvim/init.vim<CR>
+
+" toggle relative line number
+nmap <F2> :set number invrelativenumber<CR>
+
+" buffers
+nnoremap gb :ls<CR>:buffer<Space>
+nmap <Leader>a :badd<Space>
+nmap <Leader>l :ls<CR>
+
+" split navigation
+nmap <C-h> <C-w>h
+nmap <C-j> <C-w>j
+nmap <C-k> <C-w>k
+nmap <C-l> <C-w>l
+nnoremap <C-left> :vertical resize -5<cr>
+nnoremap <C-down> :resize +5<cr>
+nnoremap <C-up> :resize -5<cr>
+nnoremap <C-right> :vertical resize +5<cr>
+
+" tab manipulation
+nmap <Leader>t :tabe<CR>
+nmap <Leader>y :tabclose<CR>
+
+" enable folding with the spacebar
+nnoremap <Space> za
+
+" spell checking
+nmap <Leader>s :call ToggleSpellCheck()<CR>
+
+" listchars
+nmap <Leader>c :call ToggleListChars()<CR>
diff --git a/.vim/colors b/.vim/colors
new file mode 120000
index 0000000..adee101
--- /dev/null
+++ b/.vim/colors
@@ -0,0 +1 @@
+../.config/nvim/colors/ \ No newline at end of file
diff --git a/.vimrc b/.vimrc
new file mode 120000
index 0000000..25b6a3b
--- /dev/null
+++ b/.vimrc
@@ -0,0 +1 @@
+.config/nvim/init.vim \ No newline at end of file