hemisu.vim 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. " hemisu.vim - Vim color scheme
  2. " ----------------------------------------------------------
  3. " Author: Noah Frederick (http://noahfrederick.com/)
  4. " Version: 3.4
  5. " License: Creative Commons Attribution-NonCommercial
  6. " 3.0 Unported License (see README.md)
  7. " ----------------------------------------------------------
  8. " Setup ----------------------------------------------------{{{
  9. " Reset syntax highlighting
  10. hi clear
  11. if exists("syntax_on")
  12. syntax reset
  13. endif
  14. " Declare theme name
  15. let g:colors_name="hemisu"
  16. "}}}
  17. " The Colors -----------------------------------------------{{{
  18. " Define reusable colors
  19. let s:black= { "gui": "#000000", "cterm": "16" }
  20. let s:white= { "gui": "#FFFFFF", "cterm": "231" }
  21. let s:almostWhite= { "gui": "#EEEEEE", "cterm": "255" }
  22. let s:almostBlack= { "gui": "#111111", "cterm": "233" }
  23. let s:middleDarkGrey= { "gui": "#777777", "cterm": "241" }
  24. let s:middleLightGrey= { "gui": "#999999", "cterm": "246" }
  25. let s:lightGrey= { "gui": "#BBBBBB", "cterm": "249" }
  26. let s:darkGrey= { "gui": "#444444", "cterm": "238" }
  27. let s:darkPink= { "gui": "#63001C", "cterm": "88" }
  28. let s:middleDarkPink= { "gui": "#FF0055", "cterm": "197" }
  29. let s:middleLightPink= { "gui": "#D65E76", "cterm": "167" }
  30. let s:lightPink= { "gui": "#FFAFAF", "cterm": "217" }
  31. let s:darkBlue= { "gui": "#005F87", "cterm": "24" }
  32. let s:middleDarkBlue= { "gui": "#538192", "cterm": "24" }
  33. let s:middleLightBlue= { "gui": "#9FD3E6", "cterm": "116" }
  34. let s:lightBlue= { "gui": "#CBE4EE", "cterm": "195" }
  35. let s:darkGreen= { "gui": "#5F5F00", "cterm": "58" }
  36. let s:middleDarkGreen= { "gui": "#739200", "cterm": "64" }
  37. let s:middleLightGreen={ "gui": "#B1D631", "cterm": "149" }
  38. let s:lightGreen= { "gui": "#BBFFAA", "cterm": "157" }
  39. let s:darkTan= { "gui": "#503D15", "cterm": "52" }
  40. let s:lightTan= { "gui": "#ECE1C8", "cterm": "230" }
  41. " Assign to semantic categories based on background color
  42. if &background=="dark"
  43. " Dark theme
  44. let s:bg=s:black
  45. let s:norm=s:almostWhite
  46. let s:comment=s:middleDarkGrey
  47. let s:dimmed=s:middleLightGrey
  48. let s:subtle=s:darkGrey
  49. let s:faint=s:almostBlack
  50. let s:accent1=s:middleLightBlue
  51. let s:accent2=s:middleLightGreen
  52. let s:accent3=s:lightGreen
  53. let s:accent4=s:lightTan
  54. let s:normRed=s:middleLightPink
  55. let s:normGreen=s:middleLightGreen
  56. let s:normBlue=s:middleLightBlue
  57. let s:faintRed=s:darkPink
  58. let s:faintGreen=s:darkGreen
  59. let s:faintBlue=s:darkBlue
  60. else
  61. " Light theme
  62. let s:bg=s:white
  63. let s:norm=s:almostBlack
  64. let s:comment=s:middleLightGrey
  65. let s:dimmed=s:middleDarkGrey
  66. let s:subtle=s:lightGrey
  67. let s:faint=s:almostWhite
  68. let s:accent1=s:middleDarkBlue
  69. let s:accent2=s:middleDarkGreen
  70. let s:accent3=s:middleDarkPink
  71. let s:accent4=s:darkTan
  72. let s:normRed=s:middleDarkPink
  73. let s:normGreen=s:middleDarkGreen
  74. let s:normBlue=s:middleDarkBlue
  75. let s:faintRed=s:lightPink
  76. let s:faintGreen=s:lightGreen
  77. let s:faintBlue=s:lightBlue
  78. endif
  79. "}}}
  80. " Utilility Function ---------------------------------------{{{
  81. function! s:h(group, style)
  82. execute "highlight" a:group
  83. \ "guifg=" (has_key(a:style, "fg") ? a:style.fg.gui : "NONE")
  84. \ "guibg=" (has_key(a:style, "bg") ? a:style.bg.gui : "NONE")
  85. \ "guisp=" (has_key(a:style, "sp") ? a:style.sp.gui : "NONE")
  86. \ "gui=" (has_key(a:style, "gui") ? a:style.gui : "NONE")
  87. \ "ctermfg=" (has_key(a:style, "fg") ? a:style.fg.cterm : "NONE")
  88. \ "ctermbg=" (has_key(a:style, "bg") ? a:style.bg.cterm : "NONE")
  89. \ "cterm=" (has_key(a:style, "cterm") ? a:style.cterm : "NONE")
  90. endfunction
  91. "}}}
  92. " Highlights - Vim >= 7 ------------------------------------{{{
  93. if version >= 700
  94. call s:h("CursorLine", { "bg": s:faint })
  95. call s:h("MatchParen", { "fg": s:accent1, "bg": s:faint, "gui": "bold" })
  96. call s:h("Pmenu", { "bg": s:faint })
  97. call s:h("PmenuThumb", { "bg": s:norm })
  98. call s:h("PmenuSBar", { "bg": s:subtle })
  99. call s:h("PmenuSel", { "bg": s:faintBlue })
  100. call s:h("ColorColumn", { "bg": s:faintRed })
  101. call s:h("SpellBad", { "sp": s:normRed, "gui": "undercurl" })
  102. call s:h("SpellCap", { "sp": s:accent1, "gui": "undercurl" })
  103. call s:h("SpellRare", { "sp": s:normGreen, "gui": "undercurl" })
  104. call s:h("SpellLocal", { "sp": s:accent4, "gui": "undercurl" })
  105. hi! link CursorColumn CursorLine
  106. " Use background for cterm Spell*, which does not support undercurl
  107. execute "hi! SpellBad ctermbg=" s:faintRed.cterm
  108. execute "hi! SpellCap ctermbg=" s:faintBlue.cterm
  109. execute "hi! SpellRare ctermbg=" s:faintGreen.cterm
  110. execute "hi! SpellLocal ctermbg=" s:faint.cterm
  111. endif
  112. "}}}
  113. " Highlights - UI ------------------------------------------{{{
  114. call s:h("Normal", { "fg": s:norm, "bg": s:bg })
  115. call s:h("NonText", { "fg": s:subtle })
  116. call s:h("Cursor", { "fg": s:bg, "bg": s:accent3 })
  117. call s:h("Visual", { "bg": s:faintBlue })
  118. call s:h("IncSearch", { "bg": s:faintBlue })
  119. call s:h("Search", { "bg": s:faintGreen })
  120. call s:h("StatusLine", { "fg": s:norm, "bg": s:faint, "gui": "bold", "cterm": "bold" })
  121. call s:h("StatusLineNC", { "fg": s:dimmed, "bg": s:faint })
  122. call s:h("SignColumn", { "fg": s:norm })
  123. call s:h("VertSplit", { "fg": s:subtle, "bg": s:faint })
  124. call s:h("TabLine", { "fg": s:dimmed, "bg": s:faint })
  125. call s:h("TabLineSel", { "gui": "bold", "cterm": "bold" })
  126. call s:h("Folded", { "fg": s:comment, "bg": s:faint })
  127. call s:h("Directory", { "fg": s:accent1 })
  128. call s:h("Title", { "fg": s:accent4, "gui": "bold", "cterm": "bold" })
  129. call s:h("ErrorMsg", { "bg": s:faintRed })
  130. call s:h("DiffAdd", { "bg": s:faintGreen })
  131. call s:h("DiffChange", { "bg": s:faintRed })
  132. call s:h("DiffDelete", { "fg": s:normRed, "bg": s:faintRed })
  133. call s:h("DiffText", { "bg": s:faintRed, "gui": "bold", "cterm": "bold" })
  134. call s:h("User1", { "fg": s:bg, "bg": s:normGreen })
  135. call s:h("User2", { "fg": s:bg, "bg": s:normRed })
  136. call s:h("User3", { "fg": s:bg, "bg": s:normBlue })
  137. hi! link WildMenu IncSearch
  138. hi! link FoldColumn SignColumn
  139. hi! link WarningMsg ErrorMsg
  140. hi! link MoreMsg Title
  141. hi! link Question MoreMsg
  142. hi! link ModeMsg MoreMsg
  143. hi! link TabLineFill StatusLineNC
  144. hi! link LineNr NonText
  145. hi! link SpecialKey NonText
  146. "}}}
  147. " Highlights - Generic Syntax ------------------------------{{{
  148. call s:h("Delimiter", { "fg": s:dimmed })
  149. call s:h("Comment", { "fg": s:comment, "gui": "italic" })
  150. call s:h("Underlined", { "fg": s:accent1, "gui": "underline", "cterm": "underline" })
  151. call s:h("Type", { "fg": s:accent3 })
  152. call s:h("String", { "fg": s:accent2 })
  153. call s:h("Keyword", { "fg": s:accent2, "gui": "bold", "cterm": "bold" })
  154. call s:h("Todo", { "fg": s:normRed, "gui": "bold", "cterm": "bold" })
  155. call s:h("Function", { "gui": "bold", "cterm": "bold" })
  156. hi! link Identifier Function
  157. hi! link Statement Type
  158. hi! link Constant Directory
  159. hi! link Number Constant
  160. hi! link Special Constant
  161. hi! link PreProc Constant
  162. hi! link Error ErrorMsg
  163. "}}}
  164. " Highlights - HTML ----------------------------------------{{{
  165. hi! link htmlLink Underlined
  166. hi! link htmlTag Type
  167. hi! link htmlEndTag htmlTag
  168. "}}}
  169. " Highlights - CSS -----------------------------------------{{{
  170. hi! link cssBraces Delimiter
  171. hi! link cssSelectorOp cssBraces
  172. hi! link cssClassName Normal
  173. "}}}
  174. " Highlights - Markdown ------------------------------------{{{
  175. hi! link mkdListItem mkdDelimiter
  176. "}}}
  177. " Highlights - Shell ---------------------------------------{{{
  178. hi! link shOperator Delimiter
  179. hi! link shCaseBar Delimiter
  180. "}}}
  181. " Highlights - JavaScript ----------------------------------{{{
  182. hi! link javaScriptValue Constant
  183. hi! link javaScriptNull Constant
  184. hi! link javaScriptBraces Normal
  185. "}}}
  186. " Highlights - Help ----------------------------------------{{{
  187. hi! link helpExample String
  188. hi! link helpHeadline Title
  189. hi! link helpSectionDelim Comment
  190. hi! link helpHyperTextEntry Statement
  191. hi! link helpHyperTextJump Underlined
  192. hi! link helpURL Underlined
  193. "}}}
  194. " vim: fdm=marker