@@ -581,130 +581,163 @@ syn region pandocYAMLHeader start=/\%(\%^\|\_^\s*\n\)\@<=\_^-\{3}\ze\n.\+/ end=/
581581"  }}}1
582582
583583"  Styling:  {{{1
584- hi  link  pandocOperator  Operator 
585- 
586- "  override this for consistency
587- hi  pandocTitleBlock term = italic  gui = italic 
588- hi  link  pandocTitleBlockTitle  Directory 
589- hi  link  pandocAtxHeader  Title 
590- hi  link  pandocAtxStart  Operator 
591- hi  link  pandocSetexHeader  Title 
592- hi  link  pandocHeaderAttr  Comment 
593- hi  link  pandocHeaderID  Identifier 
594- 
595- hi  link  pandocLaTexSectionCmd  texSection 
596- hi  link  pandocLaTeXDelimiter  texDelimiter 
597- 
598- hi  link  pandocHTMLComment  Comment 
599- hi  link  pandocHTMLCommentStart  Delimiter 
600- hi  link  pandocHTMLCommentEnd  Delimiter 
601- hi  link  pandocBlockQuote  Comment 
602- hi  link  pandocBlockQuoteMark  Comment 
603- hi  link  pandocAmpersandEscape  Special 
604- 
605- "  if the user sets g:pandoc#syntax#codeblocks#ignore to contain
606- "  a codeblock type, don't highlight it so that it remains Normal
607- if  index (g: pandocsyntax #codeblocks#ignore , ' definition' ==  -1 
608-   hi  link  pandocCodeBlockInsideIndent  String 
609- endif 
610- 
611- if  index (g: pandocsyntax #codeblocks#ignore , ' delimited' ==  -1 
612-   hi  link  pandocDelimitedCodeBlock  Special 
613- endif 
614- 
615- hi  link  pandocDelimitedCodeBlockStart  Delimiter 
616- hi  link  pandocDelimitedCodeBlockEnd  Delimiter 
617- hi  link  pandocDelimitedCodeBlockLanguage  Comment 
618- hi  link  pandocBlockQuoteinDelimitedCodeBlock  pandocBlockQuote 
619- hi  link  pandocCodePre  String 
620- 
621- hi  link  pandocLineBlockDelimiter  Delimiter 
622- 
623- hi  link  pandocListItemBullet  Operator 
624- hi  link  pandocUListItemBullet  Operator 
625- hi  link  pandocListItemBulletId  Identifier 
626- 
627- hi  link  pandocReferenceLabel  Label 
628- hi  link  pandocReferenceURL  Underlined 
629- hi  link  pandocLinkTip  Identifier 
630- hi  link  pandocImageIcon  Operator 
631- 
632- hi  link  pandocReferenceDefinition  Operator 
633- hi  link  pandocReferenceDefinitionLabel  Label 
634- hi  link  pandocReferenceDefinitionAddress  Underlined 
635- hi  link  pandocReferenceDefinitionTip  Identifier 
636- 
637- hi  link  pandocAutomaticLink  Underlined 
638- 
639- hi  link  pandocDefinitionBlockTerm  Identifier 
640- hi  link  pandocDefinitionBlockMark  Operator 
641- 
642- hi  link  pandocSimpleTableDelims  Delimiter 
643- hi  link  pandocSimpleTableHeader  pandocStrong 
644- hi  link  pandocTableMultilineHeader  pandocStrong 
645- hi  link  pandocTableDelims  Delimiter 
646- hi  link  pandocGridTableDelims  Delimiter 
647- hi  link  pandocGridTableHeader  Delimiter 
648- hi  link  pandocPipeTableDelims  Delimiter 
649- hi  link  pandocPipeTableHeader  Delimiter 
650- hi  link  pandocTableHeaderWord  pandocStrong 
651- 
652- hi  link  pandocAbbreviationHead  Type 
653- hi  link  pandocAbbreviation  Label 
654- hi  link  pandocAbbreviationTail  Type 
655- hi  link  pandocAbbreviationSeparator  Identifier 
656- hi  link  pandocAbbreviationDefinition  Comment 
657- 
658- hi  link  pandocFootnoteID  Label 
659- hi  link  pandocFootnoteIDHead  Type 
660- hi  link  pandocFootnoteIDTail  Type 
661- hi  link  pandocFootnoteDef  Comment 
662- hi  link  pandocFootnoteDefHead  Type 
663- hi  link  pandocFootnoteDefTail  Type 
664- hi  link  pandocFootnoteBlock  Comment 
665- hi  link  pandocFootnoteBlockSeparator  Operator 
666- 
667- hi  link  pandocPCite  Operator 
668- hi  link  pandocICite  Operator 
669- hi  link  pandocCiteKey  Label 
670- hi  link  pandocCiteAnchor  Operator 
671- hi  link  pandocCiteLocator  Operator 
672- 
673- if  g: pandocsyntax #style#emphases ==  1 
674-     hi  pandocEmphasis gui = italic  cterm= italic 
675-     hi  pandocStrong gui = bold  cterm= bold 
676-     hi  pandocStrongEmphasis gui = bold ,italic  cterm= bold ,italic 
677-     hi  pandocStrongInEmphasis gui = bold ,italic  cterm= bold ,italic 
678-     hi  pandocEmphasisInStrong gui = bold ,italic  cterm= bold ,italic 
679-     if  ! exists (' s:hi_tail' 
680-         let  s: fg=  ' '  "  Vint can't figure ou these get set dynamically 
681-         let  s: bg=  ' '  "  so initialize them manually first 
682-         for  s: iin  [' fg' ' bg' 
683-             let  s: tmp_val=  synIDattr (synIDtrans (hlID (' String' s: i
684-             let  s: tmp_ui=   has (' gui_running' ||  (has (' termguicolors' &&  &termguicolors ) ? ' gui' ' cterm' 
685-             if  ! empty (s: tmp_val&&  s: tmp_val!=  -1 
686-                 exe  ' let s:' s: i'  = "' s: tmp_uis: i' =' s: tmp_val' "' 
687-             else 
688-                 exe  ' let s:' s: i'  = ""' 
689-             endif 
690-         endfor 
691-         let  s: hi_tail=  '  ' s: fg'  ' s: bg
692-     endif 
693-     exe  ' hi pandocNoFormattedInEmphasis gui=italic cterm=italic' s: hi_tail
694-     exe  ' hi pandocNoFormattedInStrong gui=bold cterm=bold' s: hi_tail
695- endif 
696- hi  link  pandocNoFormatted  String 
697- hi  link  pandocNoFormattedAttrs  Comment 
698- hi  link  pandocSubscriptMark  Operator 
699- hi  link  pandocSuperscriptMark  Operator 
700- hi  link  pandocStrikeoutMark  Operator 
701- if  g: pandocsyntax #style#underline_special ==  1 
702-     hi  pandocSubscript gui = underline  cterm= underline 
703-     hi  pandocSuperscript gui = underline  cterm= underline 
704-     hi  pandocStrikeout gui = underline  cterm= underline 
705- endif 
706- hi  link  pandocNewLine  Error 
707- hi  link  pandocHRule  Delimiter 
584+ function !  s: SetupPandocHighlights
585+ 
586+   hi  link  pandocOperator  Operator 
587+ 
588+   "  override this for consistency 
589+   hi  pandocTitleBlock term = italic  gui = italic 
590+   hi  link  pandocTitleBlockTitle  Directory 
591+   hi  link  pandocAtxHeader  Title 
592+   hi  link  pandocAtxStart  Operator 
593+   hi  link  pandocSetexHeader  Title 
594+   hi  link  pandocHeaderAttr  Comment 
595+   hi  link  pandocHeaderID  Identifier 
596+ 
597+   hi  link  pandocLaTexSectionCmd  texSection 
598+   hi  link  pandocLaTeXDelimiter  texDelimiter 
599+ 
600+   hi  link  pandocHTMLComment  Comment 
601+   hi  link  pandocHTMLCommentStart  Delimiter 
602+   hi  link  pandocHTMLCommentEnd  Delimiter 
603+   hi  link  pandocBlockQuote  Comment 
604+   hi  link  pandocBlockQuoteMark  Comment 
605+   hi  link  pandocAmpersandEscape  Special 
606+ 
607+   "  if the user sets g:pandoc#syntax#codeblocks#ignore to contain 
608+   "  a codeblock type, don't highlight it so that it remains Normal 
609+   if  index (g: pandocsyntax #codeblocks#ignore , ' definition' ==  -1 
610+     hi  link  pandocCodeBlockInsideIndent  String 
611+   endif 
612+ 
613+   if  index (g: pandocsyntax #codeblocks#ignore , ' delimited' ==  -1 
614+     hi  link  pandocDelimitedCodeBlock  Special 
615+   endif 
616+ 
617+   hi  link  pandocDelimitedCodeBlockStart  Delimiter 
618+   hi  link  pandocDelimitedCodeBlockEnd  Delimiter 
619+   hi  link  pandocDelimitedCodeBlockLanguage  Comment 
620+   hi  link  pandocBlockQuoteinDelimitedCodeBlock  pandocBlockQuote 
621+   hi  link  pandocCodePre  String 
622+ 
623+   hi  link  pandocLineBlockDelimiter  Delimiter 
624+ 
625+   hi  link  pandocListItemBullet  Operator 
626+   hi  link  pandocUListItemBullet  Operator 
627+   hi  link  pandocListItemBulletId  Identifier 
628+ 
629+   hi  link  pandocReferenceLabel  Label 
630+   hi  link  pandocReferenceURL  Underlined 
631+   hi  link  pandocLinkTip  Identifier 
632+   hi  link  pandocImageIcon  Operator 
633+ 
634+   hi  link  pandocReferenceDefinition  Operator 
635+   hi  link  pandocReferenceDefinitionLabel  Label 
636+   hi  link  pandocReferenceDefinitionAddress  Underlined 
637+   hi  link  pandocReferenceDefinitionTip  Identifier 
638+ 
639+   hi  link  pandocAutomaticLink  Underlined 
640+ 
641+   hi  link  pandocDefinitionBlockTerm  Identifier 
642+   hi  link  pandocDefinitionBlockMark  Operator 
643+ 
644+   hi  link  pandocSimpleTableDelims  Delimiter 
645+   hi  link  pandocSimpleTableHeader  pandocStrong 
646+   hi  link  pandocTableMultilineHeader  pandocStrong 
647+   hi  link  pandocTableDelims  Delimiter 
648+   hi  link  pandocGridTableDelims  Delimiter 
649+   hi  link  pandocGridTableHeader  Delimiter 
650+   hi  link  pandocPipeTableDelims  Delimiter 
651+   hi  link  pandocPipeTableHeader  Delimiter 
652+   hi  link  pandocTableHeaderWord  pandocStrong 
653+ 
654+   hi  link  pandocAbbreviationHead  Type 
655+   hi  link  pandocAbbreviation  Label 
656+   hi  link  pandocAbbreviationTail  Type 
657+   hi  link  pandocAbbreviationSeparator  Identifier 
658+   hi  link  pandocAbbreviationDefinition  Comment 
659+ 
660+   hi  link  pandocFootnoteID  Label 
661+   hi  link  pandocFootnoteIDHead  Type 
662+   hi  link  pandocFootnoteIDTail  Type 
663+   hi  link  pandocFootnoteDef  Comment 
664+   hi  link  pandocFootnoteDefHead  Type 
665+   hi  link  pandocFootnoteDefTail  Type 
666+   hi  link  pandocFootnoteBlock  Comment 
667+   hi  link  pandocFootnoteBlockSeparator  Operator 
668+ 
669+   hi  link  pandocPCite  Operator 
670+   hi  link  pandocICite  Operator 
671+   hi  link  pandocCiteKey  Label 
672+   hi  link  pandocCiteAnchor  Operator 
673+   hi  link  pandocCiteLocator  Operator 
674+ 
675+   if  g: pandocsyntax #style#emphases ==  1 
676+       hi  pandocEmphasis gui = italic  cterm= italic 
677+       hi  pandocStrong gui = bold  cterm= bold 
678+       hi  pandocStrongEmphasis gui = bold ,italic  cterm= bold ,italic 
679+       hi  pandocStrongInEmphasis gui = bold ,italic  cterm= bold ,italic 
680+       hi  pandocEmphasisInStrong gui = bold ,italic  cterm= bold ,italic 
681+       if  ! exists (' s:hi_tail' 
682+           let  s: fg=  ' '  "  Vint can't figure ou these get set dynamically 
683+           let  s: bg=  ' '  "  so initialize them manually first 
684+           for  s: iin  [' fg' ' bg' 
685+               let  s: tmp_val=  synIDattr (synIDtrans (hlID (' String' s: i
686+               let  s: tmp_ui=   has (' gui_running' ||  (has (' termguicolors' &&  &termguicolors ) ? ' gui' ' cterm' 
687+               if  ! empty (s: tmp_val&&  s: tmp_val!=  -1 
688+                   exe  ' let s:' s: i'  = "' s: tmp_uis: i' =' s: tmp_val' "' 
689+               else 
690+                   exe  ' let s:' s: i'  = ""' 
691+               endif 
692+           endfor 
693+           let  s: hi_tail=  '  ' s: fg'  ' s: bg
694+       endif 
695+       exe  ' hi pandocNoFormattedInEmphasis gui=italic cterm=italic' s: hi_tail
696+       exe  ' hi pandocNoFormattedInStrong gui=bold cterm=bold' s: hi_tail
697+   endif 
698+   hi  link  pandocNoFormatted  String 
699+   hi  link  pandocNoFormattedAttrs  Comment 
700+   hi  link  pandocSubscriptMark  Operator 
701+   hi  link  pandocSuperscriptMark  Operator 
702+   hi  link  pandocStrikeoutMark  Operator 
703+   if  g: pandocsyntax #style#underline_special ==  1 
704+       hi  pandocSubscript gui = underline  cterm= underline 
705+       hi  pandocSuperscript gui = underline  cterm= underline 
706+       hi  pandocStrikeout gui = underline  cterm= underline 
707+   endif 
708+   hi  link  pandocNewLine  Error 
709+   hi  link  pandocHRule  Delimiter 
710+ 
711+ endfunction 
712+ 
713+ "  Whenever the colorscheme changes, all highlights are cleared.
714+ " 
715+ "  The most common circumstance is that the vimrc picks a colorscheme *at
716+ "  startup*, then a file is opened and the syntax is set based on that file. So
717+ "  the most common situation is that the colorscheme runs, then the syntax
718+ "  runs, and that's that. So if the code for the syntax (e.g., this code here
719+ "  in vim-pandoc-syntax) *adds* new highlighting groups that weren't defined in
720+ "  the colorscheme, that's almost always fine because the colorscheme rarely
721+ "  changes after startup.
722+ " 
723+ "  But the colorscheme *can* change after startup. This happens for example any
724+ "  time the user toggles their background (:set bg=light or :set bg=dark), or
725+ "  picks another colorscheme (:colorscheme something_else). In these cases, the
726+ "  new colorscheme calls `:highlight clear`, clearing any custom pandoc
727+ "  highlighting groups.
728+ " 
729+ "  The solution is to register an autocommand that runs whenever the
730+ "  ColorScheme changes, so that we can re-register vim-pandoc-syntax's custom
731+ "  highlighting groups, after the new colorscheme has cleared them.
732+ " 
733+ "  (This also affects popular plugins like goyo.vim, which call `:colorscheme`
734+ "  with your chosen colorscheme to approximate undoing any custom highlighting
735+ "  modifications that they've made.)
736+ augroup  vim - pandoc- syntax 
737+   autocmd ! 
738+   autocmd  ColorScheme  *  call  s: SetupPandocHighlights
739+ augroup  end 
740+ call  s: SetupPandocHighlights
708741
709742"  }}}1
710743
0 commit comments