text: #!/usr/bin/env ruby
  #
  # noctu.vim - Dark color scheme for 16-color terminals
  #
  
  require_relative 'colorscheme'
  
  colorscheme 'noctu' do
    section 'Vim UI' do
      hi :Normal,       fg: foreground, bg: background
      hi :Cursor,       fg: black, bg: white
      hi :CursorLine,   bg: black
      hi :MatchParen,   fg: black, bg: magenta
      hi :Pmenu,        fg: bright_white, bg: black
      hi :PmenuThumb,   bg: white
      hi :PmenuSBar,    bg: bright_black
      hi :PmenuSel,     fg: black, bg: blue
      hi :ColorColumn,  bg: black
      hi :EndOfBuffer,  fg: black
      hi :SpellBad,     fg: bright_red, bg: NONE, underline: true
      hi :SpellCap,     fg: bright_green, bg: NONE, underline: true
      hi :SpellRare,    fg: bright_yellow, bg: NONE, underline: true
      hi :SpellLocal,   fg: bright_magenta, bg: NONE, underline: true
      hi :NonText,      fg: bright_black
      hi :LineNr,       fg: bright_black, bg: NONE
      hi :CursorLineNr, fg: bright_yellow, bg: black
      hi :Visual,       fg: black, bg: bright_blue
      hi :IncSearch,    fg: black, bg: bright_magenta
      hi :Search,       fg: black, bg: bright_green
      hi :StatusLine,   fg: white, bg: black, bold: true
      hi :StatusLineNC, fg: bright_black, bg: black, bold: true
      hi :VertSplit,    fg: black, bg: black
      hi :TabLine,      fg: bright_black, bg: black, bold: true
      hi :TabLineSel,   fg: black, bg: white, bold: true
      hi :Folded,       fg: bright_black, bg: black, bold: true
      hi :Conceal,      fg: cyan, bg: NONE
      hi :Directory,    fg: bright_blue
      hi :Title,        fg: yellow, bold: true
      hi :ErrorMsg,     fg: bright_white, bg: red
      hi :WarningMsg,   fg: bright_white, bg: yellow
      hi :DiffAdd,      fg: black, bg: green
      hi :DiffChange,   fg: black, bg: yellow
      hi :DiffDelete,   fg: black, bg: red
      hi :DiffText,     fg: black, bg: bright_yellow, bold: true
      hl :CursorColumn, :CursorLine
      hl :SignColumn,   :LineNr
      hl :WildMenu,     :Visual
      hl :FoldColumn,   :SignColumn
      hl :MoreMsg,      :Title
      hl :Question,     :MoreMsg
      hl :ModeMsg,      :NonText
      hl :TabLineFill,  :StatusLineNC
      hl :SpecialKey,   :NonText
    end
  
    section 'User' do
      hi :User1, fg: red, bg: black
      hi :User2, fg: blue, bg: black
      hi :User3, fg: green, bg: black
      hi :User4, fg: yellow, bg: black
      hi :User5, fg: magenta, bg: black
      hi :User6, fg: cyan, bg: black
      hi :User7, fg: white, bg: black
      hi :User8, fg: bright_black, bg: black
      hi :User9, fg: bright_white, bg: magenta
    end
  
    section 'Generic Syntax' do
      hi :Comment,    fg: bright_black, italic: true
      hi :Constant,   fg: bright_magenta
      hi :Function,   fg: NONE, italic: true
      hi :Ignore,     fg: black
      hi :Keyword,    fg: green
      hi :Number,     fg: bright_blue
      hi :PreProc,    fg: bright_black, bold: true
      hi :Statement,  fg: green, bold: true
      hi :String,     fg: bright_yellow
      hi :Todo,       fg: bright_white, bg: NONE, bold: true, underline: true
      hi :Type,       fg: blue
      hi :Underlined, fg: blue, underline: true
      hl :Boolean,    :Type
      hl :Delimiter,  :Normal
      hl :Error,      :ErrorMsg
      hl :Identifier, :Normal
      hl :Operator,   :Delimiter
      hl :Special,    :Constant
    end
  
    section 'Diff' do
      hi :diffAdded,   fg: green
      hi :diffRemoved, fg: red
      hl :diffFile,    :PreProc
      hl :diffLine,    :Title
  
      hi :SignifySignAdd,             fg: green, bg: NONE
      hi :SignifySignChange,          fg: yellow, bg: NONE
      hi :SignifySignDelete,          fg: red, bg: NONE
      hl :SignifySignChangeDelete,    :SignifySignChange
      hl :SignifySignDeleteFirstLine, :SignifySignDelete
    end
  
    section 'Quickfix Window' do
      hl :qfSeparator,     :PreProc
      hl :qfRedundantPath, :Delimiter
    end
  
    section 'HTML' do
      hi :htmlTagName,              fg: green
      hi :htmlTag,                  fg: green
      hi :htmlArg,                  fg: bright_green
      hi :htmlH1,                   bold: true
      hi :htmlBold,                 bold: true
      hi :htmlItalic,               italic: true
      hi :htmlUnderline,            underline: true
      hi :htmlBoldItalic,           bold: true, italic: true
      hi :htmlBoldUnderline,        bold: true, underline: true
      hi :htmlUnderlineItalic,      underline: true, italic: true
      hi :htmlBoldUnderlineItalic,  bold: true, underline: true, italic: true
      hl :htmlLink,   :Underlined
      hl :htmlEndTag, :htmlTag
    end
  
    section 'XML' do
      hi :xmlTagName, fg: blue
      hi :xmlTag,     fg: bright_blue
      hl :xmlString, :xmlTagName
      hl :xmlAttrib, :xmlTag
      hl :xmlEndTag, :xmlTag
      hl :xmlEqual,  :xmlTag
    end
  
    section 'JavaScript' do
      hl :javaScript,       :Normal
      hl :javaScriptBraces, :Delimiter
    end
  
    section 'PHP' do
      hi :phpIdentifier,      fg: bright_yellow
      hl :phpSpecialFunction, :Function
      hl :phpVarSelector,     :phpIdentifier
      hl :phpHereDoc,         :String
      hl :phpDefine,          :Statement
      hl :phpDocTags,         :PreProc
    end
  
    section 'Markdown' do
      hl :markdownHeadingRule,       :NonText
      hl :markdownHeadingDelimiter,  :markdownHeadingRule
      hl :markdownLinkDelimiter,     :Delimiter
      hl :markdownURLDelimiter,      :Delimiter
      hl :markdownCodeDelimiter,     :NonText
      hl :markdownLinkTextDelimiter, :markdownLinkDelimiter
      hl :markdownUrl,               :markdownLinkText
      hl :markdownAutomaticLink,     :markdownLinkText
      hl :markdownCodeBlock,         :String
      hl :markdownCode,              :String
      hi :markdownBold,              bold: true
      hi :markdownItalic,            italic: true
      # Polyglot ftplugin
      hl :mkdListItem,               :htmlTagName
      # Custom extension
      hi :markdownBlockquoteLevel1,  fg: blue
      hi :markdownBlockquoteLevel2,  fg: green
      hi :markdownBlockquoteLevel3,  fg: magenta
    end
  
    section 'Ruby' do
      hl :rubyDefine,                :Statement
      hl :rubyLocalVariableOrMethod, :Identifier
      hl :rubyConstant,              :Constant
      hl :rubyInstanceVariable,      :Number
      hl :rubyStringDelimiter,       :rubyString
      hl :yardGenericTag,            :PreProc
      hl :yardGenericDirective,      :yardGenericTag
    end
  
    section 'Git' do
      hi :gitCommitBranch,        fg: blue
      hi :gitCommitSelectedType,  fg: bright_green
      hi :gitCommitSelectedFile,  fg: green
      hi :gitCommitUnmergedType,  fg: bright_red
      hi :gitCommitUnmergedFile,  fg: red
      hl :gitCommitFile,          :Directory
      hl :gitCommitUntrackedFile, :gitCommitUnmergedFile
      hl :gitCommitDiscardedType, :gitCommitUnmergedType
      hl :gitCommitDiscardedFile, :gitCommitUnmergedFile
      hi :fugitiveHash,           fg: bright_black
      hl :gvSha,                  :fugitiveHash
    end
  
    section 'Vim' do
      hl :vimSetSep,   :Delimiter
      hl :vimContinue, :Delimiter
      hl :vimHiAttrib, :Constant
    end
  
    section 'CSS' do
      hi :cssIdentifier,               fg: bright_red
      hl :cssBraces,                   :Delimiter
      hl :cssProperty,                 :Normal
      hl :cssAnimationProp,            :cssProperty
      hl :cssBackgroundProp,           :cssProperty
      hl :cssBorderOutlineProp,        :cssProperty
      hl :cssBorderProp,               :cssProperty
      hl :cssBoxProp,                  :cssProperty
      hl :cssColorProp,                :cssProperty
      hl :cssContentForPagedMediaProp, :cssProperty
      hl :cssDimensionProp,            :cssProperty
      hl :cssFlexibleBoxProp,          :cssProperty
      hl :cssFontProp,                 :cssProperty
      hl :cssGeneratedContentProp,     :cssProperty
      hl :cssGridProp,                 :cssProperty
      hl :cssHyerlinkProp,             :cssProperty
      hl :cssLineboxProp,              :cssProperty
      hl :cssListProp,                 :cssProperty
      hl :cssMarginProp,               :cssProperty
      hl :cssMarqueeProp,              :cssProperty
      hl :cssMultiColumnProp,          :cssProperty
      hl :cssPaddingProp,              :cssProperty
      hl :cssPagedMediaProp,           :cssProperty
      hl :cssPageProp,                 :cssProperty
      hl :cssPositioningProp,          :cssProperty
      hl :cssPrintProp,                :cssProperty
      hl :cssRubyProp,                 :cssProperty
      hl :cssSpeechProp,               :cssProperty
      hl :cssTableProp,                :cssProperty
      hl :cssTextProp,                 :cssProperty
      hl :cssTransformProp,            :cssProperty
      hl :cssTransitionProp,           :cssProperty
      hl :cssUIProp,                   :cssProperty
      # LESS syntax file uses cssUIAttr instead of cssUIProp
      hl :cssUIAttr,                   :cssProperty
      hl :cssAuralProp,                :cssProperty
      hl :cssRenderProp,               :cssProperty
    end
  
    section 'Help' do
      hl :helpExample,        :String
      hl :helpHeadline,       :Title
      hl :helpSectionDelim,   :Comment
      hl :helpHyperTextEntry, :Statement
      hl :helpHyperTextJump,  :Underlined
      hl :helpURL,            :Underlined
    end
  
    section 'Mustache' do
      hi :mustacheSection,    fg: bright_magenta, bold: true
      hi :mustacheUnescape,   fg: bright_red
      hi :mustachePartial,    fg: bright_magenta
      hi :mustacheHandlebars, fg: magenta
    end
  
    section 'Shell' do
      hl :shDerefSimple, :String
      hl :shDerefVar, :shDerefSimple
    end
  
    section 'Ledger' do
      hl :ledgerAccount, :String
      hl :ledgerMetadata, :Comment
      hl :ledgerTransactionStatus, :Statement
    end
  
    section 'Plug' do
      hl :plugSha, :fugitiveHash
    end
  
    section 'Blade' do
      hl :bladeStructure, :PreProc
      hl :bladeParen,     :phpParent
      hl :bladeEchoDelim, :PreProc
    end
  
    section 'YAML' do
      hl :yamlPlainScalar, :String
      hl :yamlConstant,    :Constant
    end
  end
  