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