summaryrefslogtreecommitdiff
path: root/.config/nvim/colors/dracula.vim
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/colors/dracula.vim')
-rw-r--r--.config/nvim/colors/dracula.vim400
1 files changed, 400 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: