1 " File: dracula.vim 2 " Maintainer: Crusoe Xia (crusoexia) 3 " URL: https://github.com/crusoexia/vim-dracula 4 " License: MIT 5 " 6 " Configuration: 7 " 8 " * Enable italic 9 " 10 " let g:dracula_italic = 1 11 12 " Initialisation 13 " -------------- 14 15 if ! has("gui_running") && &t_Co < 256 16 finish 17 endif 18 19 if ! exists("g:dracula_italic") 20 let g:dracula_italic = 0 21 endif 22 23 set background=dark 24 hi clear 25 26 if exists("syntax_on") 27 syntax reset 28 endif 29 30 let colors_name = "dracula" 31 32 " Palettes 33 " -------- 34 35 if has("gui_running") 36 let s:vmode = "gui" 37 let s:background = "#323342" 38 let s:foreground = "#F2F2EC" 39 let s:window = "#7272A5" 40 let s:linenr = "#898A8D" 41 let s:line = "#3C3E54" 42 let s:darkcolumn = "#2D2F3B" 43 let s:selection = "#54576A" 44 let s:comment = "#7283BF" 45 let s:error = "#5F0000" 46 47 let s:pink = "#FF79C6" 48 let s:green = "#50FA7B" 49 let s:aqua = "#8BE9FD" 50 let s:yellow = "#F1FA8C" 51 let s:orange = "#FFB86C" 52 let s:purple = "#BD93F9" 53 let s:red = "#FF5555" 54 55 let s:addfg = "#F8F8F2" 56 let s:addbg = "#468410" 57 let s:delfg = "#8B080B" 58 let s:changefg = "#F8F8F2" 59 let s:changebg = "#243A5F" 60 else 61 let s:vmode = "cterm" 62 let s:background = "235" 63 let s:foreground = "231" 64 let s:window = "60" 65 let s:linenr = "240" 66 let s:line = "236" 67 let s:darkcolumn = "234" 68 let s:selection = "238" 69 let s:comment = "61" 70 let s:error = "52" 71 72 let s:pink = "212" 73 let s:green = "84" 74 let s:aqua = "117" 75 let s:yellow = "228" 76 let s:orange = "215" 77 let s:purple = "141" 78 let s:red = "231" 79 80 let s:addfg = "231" 81 let s:addbg = "64" 82 let s:delfg = "88" 83 let s:changefg = "231" 84 let s:changebg = "23" 85 endif 86 87 " Formatting Options 88 " ------------------ 89 90 let s:none = "NONE" 91 let s:t_none = "NONE" 92 let s:n = "NONE" 93 let s:c = ",undercurl" 94 let s:r = ",reverse" 95 let s:s = ",standout" 96 let s:b = ",bold" 97 let s:u = ",underline" 98 let s:i = ",italic" 99 100 " Highlighting Primitives 101 " ----------------------- 102 103 exe "let s:bg_none = ' ".s:vmode."bg=".s:none ."'" 104 exe "let s:bg_foreground = ' ".s:vmode."bg=".s:foreground."'" 105 exe "let s:bg_background = ' ".s:vmode."bg=".s:background."'" 106 exe "let s:bg_selection = ' ".s:vmode."bg=".s:selection ."'" 107 exe "let s:bg_line = ' ".s:vmode."bg=".s:line ."'" 108 exe "let s:bg_linenr = ' ".s:vmode."bg=".s:linenr ."'" 109 exe "let s:bg_comment = ' ".s:vmode."bg=".s:comment ."'" 110 exe "let s:bg_red = ' ".s:vmode."bg=".s:red ."'" 111 exe "let s:bg_orange = ' ".s:vmode."bg=".s:orange ."'" 112 exe "let s:bg_yellow = ' ".s:vmode."bg=".s:yellow ."'" 113 exe "let s:bg_green = ' ".s:vmode."bg=".s:green ."'" 114 exe "let s:bg_aqua = ' ".s:vmode."bg=".s:aqua ."'" 115 exe "let s:bg_purple = ' ".s:vmode."bg=".s:purple ."'" 116 exe "let s:bg_pink = ' ".s:vmode."bg=".s:pink ."'" 117 exe "let s:bg_window = ' ".s:vmode."bg=".s:window ."'" 118 exe "let s:bg_darkcolumn = ' ".s:vmode."bg=".s:darkcolumn."'" 119 exe "let s:bg_addbg = ' ".s:vmode."bg=".s:addbg ."'" 120 exe "let s:bg_addfg = ' ".s:vmode."bg=".s:addfg ."'" 121 exe "let s:bg_changebg = ' ".s:vmode."bg=".s:changebg ."'" 122 exe "let s:bg_changefg = ' ".s:vmode."bg=".s:changefg ."'" 123 exe "let s:bg_error = ' ".s:vmode."bg=".s:error ."'" 124 125 exe "let s:fg_none = ' ".s:vmode."fg=".s:none ."'" 126 exe "let s:fg_foreground = ' ".s:vmode."fg=".s:foreground."'" 127 exe "let s:fg_background = ' ".s:vmode."fg=".s:background."'" 128 exe "let s:fg_selection = ' ".s:vmode."fg=".s:selection ."'" 129 exe "let s:fg_line = ' ".s:vmode."fg=".s:line ."'" 130 exe "let s:fg_linenr = ' ".s:vmode."fg=".s:linenr ."'" 131 exe "let s:fg_comment = ' ".s:vmode."fg=".s:comment ."'" 132 exe "let s:fg_red = ' ".s:vmode."fg=".s:red ."'" 133 exe "let s:fg_orange = ' ".s:vmode."fg=".s:orange ."'" 134 exe "let s:fg_yellow = ' ".s:vmode."fg=".s:yellow ."'" 135 exe "let s:fg_green = ' ".s:vmode."fg=".s:green ."'" 136 exe "let s:fg_aqua = ' ".s:vmode."fg=".s:aqua ."'" 137 exe "let s:fg_purple = ' ".s:vmode."fg=".s:purple ."'" 138 exe "let s:fg_pink = ' ".s:vmode."fg=".s:pink ."'" 139 exe "let s:fg_window = ' ".s:vmode."fg=".s:window ."'" 140 exe "let s:fg_darkcolumn = ' ".s:vmode."fg=".s:darkcolumn."'" 141 exe "let s:fg_addbg = ' ".s:vmode."fg=".s:addbg ."'" 142 exe "let s:fg_addfg = ' ".s:vmode."fg=".s:addfg ."'" 143 exe "let s:fg_delfg = ' ".s:vmode."fg=".s:delfg ."'" 144 exe "let s:fg_changebg = ' ".s:vmode."fg=".s:changebg ."'" 145 exe "let s:fg_changefg = ' ".s:vmode."fg=".s:changefg ."'" 146 exe "let s:fg_error = ' ".s:vmode."fg=".s:error ."'" 147 148 exe "let s:fmt_none = ' ".s:vmode."=NONE". " term=NONE" ."'" 149 exe "let s:fmt_bold = ' ".s:vmode."=NONE".s:b. " term=NONE".s:b ."'" 150 exe "let s:fmt_bldi = ' ".s:vmode."=NONE".s:b.s:i. " term=NONE".s:b.s:i."'" 151 exe "let s:fmt_undr = ' ".s:vmode."=NONE".s:u. " term=NONE".s:u ."'" 152 exe "let s:fmt_undb = ' ".s:vmode."=NONE".s:u.s:b. " term=NONE".s:u.s:b."'" 153 exe "let s:fmt_undi = ' ".s:vmode."=NONE".s:u.s:i. " term=NONE".s:u.s:i."'" 154 exe "let s:fmt_curl = ' ".s:vmode."=NONE".s:c. " term=NONE".s:c ."'" 155 exe "let s:fmt_ital = ' ".s:vmode."=NONE".s:i. " term=NONE".s:i ."'" 156 exe "let s:fmt_stnd = ' ".s:vmode."=NONE".s:s. " term=NONE".s:s ."'" 157 exe "let s:fmt_revr = ' ".s:vmode."=NONE".s:r. " term=NONE".s:r ."'" 158 exe "let s:fmt_revb = ' ".s:vmode."=NONE".s:r.s:b. " term=NONE".s:r.s:b."'" 159 160 " Highlighting 161 " ---------------- 162 163 " editor 164 exe "hi! Normal" .s:fg_foreground .s:bg_background .s:fmt_none 165 exe "hi! ColorColumn" .s:fg_none .s:bg_line .s:fmt_none 166 exe "hi! CursorColumn" .s:fg_none .s:bg_line .s:fmt_none 167 exe "hi! CursorLine" .s:fg_none .s:bg_line .s:fmt_none 168 exe "hi! CursorLineNr" .s:fg_orange .s:bg_none .s:fmt_bold 169 exe "hi! VertSplit" .s:fg_window .s:bg_none .s:fmt_none 170 exe "hi! NonText" .s:fg_selection .s:bg_none .s:fmt_none 171 exe "hi! SignColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none 172 exe "hi! LineNr" .s:fg_linenr .s:bg_none .s:fmt_none 173 exe "hi! StatusLine" .s:fg_comment .s:bg_background .s:fmt_revr 174 exe "hi! StatusLineNC" .s:fg_window .s:bg_comment .s:fmt_revr 175 "exe "hi! TabLine" .s:fg_foreground .s:bg_darkcolumn .s:fmt_revr 176 exe "hi! TabLine" .s:fg_window .s:bg_darkcolumn .s:fmt_revr 177 exe "hi! TabLineFill" .s:fg_window .s:bg_darkcolumn .s:fmt_revr 178 exe "hi! TabLineSel" .s:fg_background .s:bg_green .s:fmt_bldi 179 exe "hi! Visual" .s:fg_none .s:bg_selection .s:fmt_none 180 exe "hi! Search" .s:fg_green .s:bg_darkcolumn .s:fmt_bold 181 exe "hi! MatchParen" .s:fg_none .s:bg_purple .s:fmt_none 182 "exe "hi! MatchParen" .s:fg_background .s:bg_purple .s:fmt_none 183 exe "hi! Question" .s:fg_yellow .s:bg_none .s:fmt_none 184 exe "hi! ModeMsg" .s:fg_yellow .s:bg_none .s:fmt_none 185 exe "hi! MoreMsg" .s:fg_yellow .s:bg_none .s:fmt_none 186 exe "hi! ErrorMsg" .s:fg_background .s:bg_red .s:fmt_stnd 187 exe "hi! WarningMsg" .s:fg_red .s:bg_none .s:fmt_none 188 189 " misc 190 exe "hi! SpecialKey" .s:fg_selection .s:bg_none .s:fmt_none 191 exe "hi! Title" .s:fg_yellow .s:bg_none .s:fmt_none 192 exe "hi! Directory" .s:fg_aqua .s:bg_none .s:fmt_none 193 194 " diff 195 exe "hi! DiffAdd" .s:fg_addfg .s:bg_addbg .s:fmt_none 196 exe "hi! DiffDelete" .s:fg_delfg .s:bg_none .s:fmt_none 197 exe "hi! DiffChange" .s:fg_changefg .s:bg_changebg .s:fmt_none 198 exe "hi! DiffText" .s:fg_background .s:bg_aqua .s:fmt_none 199 200 " fold 201 exe "hi! Folded" .s:fg_comment .s:bg_darkcolumn .s:fmt_none 202 exe "hi! FoldColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none 203 " Incsearch" 204 205 " popup menu 206 exe "hi! Pmenu" .s:fg_foreground .s:bg_selection .s:fmt_none 207 exe "hi! PmenuSel" .s:fg_foreground .s:bg_selection .s:fmt_revr 208 " PmenuSbar" 209 " PmenuThumb" 210 211 " Generic Syntax Highlighting 212 " --------------------------- 213 214 if g:dracula_italic == 1 215 exe "hi! Constant" .s:fg_purple .s:bg_none .s:fmt_ital 216 else 217 exe "hi! Constant" .s:fg_purple .s:bg_none .s:fmt_none 218 endif 219 220 exe "hi! Number" .s:fg_purple .s:bg_none .s:fmt_none 221 exe "hi! Float" .s:fg_purple .s:bg_none .s:fmt_none 222 exe "hi! Boolean" .s:fg_purple .s:bg_none .s:fmt_none 223 exe "hi! Character" .s:fg_yellow .s:bg_none .s:fmt_none 224 exe "hi! String" .s:fg_yellow .s:bg_none .s:fmt_none 225 226 exe "hi! Type" .s:fg_aqua .s:bg_none .s:fmt_none 227 exe "hi! Identifier" .s:fg_aqua .s:bg_none .s:fmt_none 228 exe "hi! Function" .s:fg_green .s:bg_none .s:fmt_none 229 230 exe "hi! Statement" .s:fg_pink .s:bg_none .s:fmt_none 231 exe "hi! Operator" .s:fg_pink .s:bg_none .s:fmt_none 232 exe "hi! Label" .s:fg_yellow .s:bg_none .s:fmt_none 233 " Conditional" 234 " Repeat" 235 " Keyword" 236 " Exception" 237 238 exe "hi! PreProc" .s:fg_green .s:bg_none .s:fmt_none 239 " Include" 240 " Define" 241 " Macro" 242 " PreCondit" 243 244 exe "hi! Special" .s:fg_aqua .s:bg_none .s:fmt_none 245 " SpecialKey 246 " SpecialChar" 247 " Tag" 248 " Delimiter" 249 " SpecialComment" 250 " Debug" 251 252 exe "hi! Underlined" .s:fg_green .s:bg_none .s:fmt_none 253 exe "hi! Ignore" .s:fg_none .s:bg_none .s:fmt_none 254 exe "hi! Error" .s:fg_red .s:bg_error .s:fmt_undr 255 256 if g:dracula_italic == 1 257 exe "hi! Todo" .s:fg_orange .s:bg_none .s:fmt_bldi 258 exe "hi! Comment" .s:fg_comment .s:bg_none .s:fmt_ital 259 else 260 exe "hi! Todo" .s:fg_orange .s:bg_none .s:fmt_bold 261 exe "hi! Comment" .s:fg_comment .s:bg_none .s:fmt_none 262 endif 263 264 " NerdTree 265 " -------- 266 267 exe "hi! NERDTreeOpenable" .s:fg_yellow .s:bg_none .s:fmt_none 268 exe "hi! NERDTreeClosable" .s:fg_yellow .s:bg_none .s:fmt_none 269 exe "hi! NERDTreeHelp" .s:fg_green .s:bg_none .s:fmt_none 270 exe "hi! NERDTreeBookmarksHeader" .s:fg_purple .s:bg_none .s:fmt_bold 271 exe "hi! NERDTreeBookmarksLeader" .s:fg_purple .s:bg_none .s:fmt_none 272 exe "hi! NERDTreeBookmarkName" .s:fg_pink .s:bg_none .s:fmt_none 273 exe "hi! NERDTreeCWD" .s:fg_purple .s:bg_none .s:fmt_bold 274 exe "hi! NERDTreeDir" .s:fg_aqua .s:bg_none .s:fmt_none 275 exe "hi! NERDTreeUp" .s:fg_orange .s:bg_none .s:fmt_none 276 exe "hi! NERDTreeDirSlash" .s:fg_aqua .s:bg_none .s:fmt_none 277 278 " Syntastic 279 " --------- 280 281 hi! link SyntasticErrorSign Error 282 exe "hi! SyntasticWarningSign" .s:fg_orange .s:bg_darkcolumn .s:fmt_none 283 284 " Language highlight 285 " ------------------ 286 287 " Vim command 288 exe "hi! vimCommand" .s:fg_pink .s:bg_none .s:fmt_none 289 290 " Javascript (compliant with https://github.com/pangloss/vim-javascript) 291 exe "hi! jsFuncName" .s:fg_green .s:bg_none .s:fmt_none 292 exe "hi! jsThis" .s:fg_aqua .s:bg_none .s:fmt_none 293 exe "hi! jsRegexpString" .s:fg_purple .s:bg_none .s:fmt_none 294 exe "hi! jsFuncCall" .s:fg_none .s:bg_none .s:fmt_none 295 296 if g:dracula_italic == 1 297 exe "hi! jsFuncArgs" .s:fg_orange .s:bg_none .s:fmt_ital 298 else 299 exe "hi! jsFuncArgs" .s:fg_orange .s:bg_none .s:fmt_none 300 endif 301 302 " Html 303 exe "hi! htmlTag" .s:fg_foreground .s:bg_none .s:fmt_none 304 exe "hi! htmlEndTag" .s:fg_foreground .s:bg_none .s:fmt_none 305 exe "hi! htmlTagName" .s:fg_pink .s:bg_none .s:fmt_none 306 exe "hi! htmlArg" .s:fg_aqua .s:bg_none .s:fmt_none 307 exe "hi! htmlSpecialChar" .s:fg_purple .s:bg_none .s:fmt_none 308 309 " Xml 310 hi! link xmlTag htmlTag 311 hi! link xmlEndTag htmlEndTag 312 hi! link xmlTagName htmlTagName 313 hi! link xmlAttrib htmlArg 314 315 " CSS 316 if g:dracula_italic == 1 317 exe "hi! cssURL" .s:fg_orange .s:bg_none .s:fmt_undi 318 else 319 exe "hi! cssURL" .s:fg_orange .s:bg_none .s:fmt_undr 320 endif 321 exe "hi! cssFunctionName" .s:fg_aqua .s:bg_none .s:fmt_none 322 exe "hi! cssColor" .s:fg_purple .s:bg_none .s:fmt_none 323 exe "hi! cssPseudoClassId" .s:fg_purple .s:bg_none .s:fmt_none 324 exe "hi! cssClassName" .s:fg_green .s:bg_none .s:fmt_none 325 exe "hi! cssValueLength" .s:fg_purple .s:bg_none .s:fmt_none 326 exe "hi! cssCommonAttr" .s:fg_pink .s:bg_none .s:fmt_none 327 exe "hi! cssBraces" .s:fg_foreground .s:bg_none .s:fmt_none 328 329 " ruby 330 exe "hi! rubyInstanceVariable" .s:fg_none .s:bg_none .s:fmt_none 331 exe "hi! rubyInterpolationDelimiter" .s:fg_none .s:bg_none .s:fmt_none 332 exe "hi! rubyPseudoVariable" .s:fg_none .s:bg_none .s:fmt_none 333 exe "hi! rubyGlobalVariable" .s:fg_none .s:bg_none .s:fmt_none 334 exe "hi! rubyClassVariable" .s:fg_none .s:bg_none .s:fmt_none 335 exe "hi! rubyOperator" .s:fg_pink .s:bg_none .s:fmt_none 336 exe "hi! rubyFunction" .s:fg_green .s:bg_none .s:fmt_none 337 exe "hi! rubyStringDelimiter" .s:fg_yellow .s:bg_none .s:fmt_none 338 exe "hi! rubyRegexp" .s:fg_yellow .s:bg_none .s:fmt_none 339 exe "hi! rubyRegexpDelimiter" .s:fg_yellow .s:bg_none .s:fmt_none 340 exe "hi! rubySymbol" .s:fg_purple .s:bg_none .s:fmt_none 341 exe "hi! rubyEscape" .s:fg_purple .s:bg_none .s:fmt_none 342 exe "hi! rubyControl" .s:fg_aqua .s:bg_none .s:fmt_none 343 exe "hi! rubyInclude" .s:fg_aqua .s:bg_none .s:fmt_none 344 exe "hi! rubyClass" .s:fg_aqua .s:bg_none .s:fmt_none 345 exe "hi! rubyException" .s:fg_aqua .s:bg_none .s:fmt_none 346 exe "hi! rubyRailsARAssociationMethod" .s:fg_orange .s:bg_none .s:fmt_none 347 exe "hi! rubyRailsARMethod" .s:fg_orange .s:bg_none .s:fmt_none 348 exe "hi! rubyRailsRenderMethod" .s:fg_orange .s:bg_none .s:fmt_none 349 exe "hi! rubyRailsMethod" .s:fg_orange .s:bg_none .s:fmt_none 350 351 if g:dracula_italic == 1 352 exe "hi! rubyBlockParameter" .s:fg_orange .s:bg_none .s:fmt_ital 353 exe "hi! rubyConstant" .s:fg_orange .s:bg_none .s:fmt_ital 354 exe "hi! rubyIdentifier" .s:fg_orange .s:bg_none .s:fmt_ital 355 else 356 exe "hi! rubyBlockParameter" .s:fg_orange .s:bg_none .s:fmt_none 357 exe "hi! rubyConstant" .s:fg_orange .s:bg_none .s:fmt_none 358 exe "hi! rubyIdentifier" .s:fg_orange .s:bg_none .s:fmt_none 359 endif 360 361 " eruby 362 exe "hi! erubyDelimiter" .s:fg_none .s:bg_none .s:fmt_none 363 exe "hi! erubyComment" .s:fg_comment .s:bg_none .s:fmt_none 364 exe "hi! erubyRailsMethod" .s:fg_aqua .s:bg_none .s:fmt_none