"Fossies" - the Fresh Open Source Software Archive

Member "vim-8.2.1354/runtime/syntax/sgml.vim" (2 Aug 2020, 8866 Bytes) of package /linux/misc/vim-8.2.1354.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) vimscript source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 " Vim syntax file
    2 " Language: SGML
    3 " Maintainer:   Johannes Zellner <johannes@zellner.org>
    4 " Last Change:  Tue, 27 Apr 2004 15:05:21 CEST
    5 " Filenames:    *.sgml,*.sgm
    6 " $Id: sgml.vim,v 1.1 2004/06/13 17:52:57 vimboss Exp $
    7 
    8 " quit when a syntax file was already loaded
    9 if exists("b:current_syntax")
   10   finish
   11 endif
   12 
   13 let s:sgml_cpo_save = &cpo
   14 set cpo&vim
   15 
   16 syn case match
   17 
   18 " mark illegal characters
   19 syn match sgmlError "[<&]"
   20 
   21 
   22 " unicode numbers:
   23 " provide different highlithing for unicode characters
   24 " inside strings and in plain text (character data).
   25 "
   26 " EXAMPLE:
   27 "
   28 " \u4e88
   29 "
   30 syn match   sgmlUnicodeNumberAttr    +\\u\x\{4}+ contained contains=sgmlUnicodeSpecifierAttr
   31 syn match   sgmlUnicodeSpecifierAttr +\\u+ contained
   32 syn match   sgmlUnicodeNumberData    +\\u\x\{4}+ contained contains=sgmlUnicodeSpecifierData
   33 syn match   sgmlUnicodeSpecifierData +\\u+ contained
   34 
   35 
   36 " strings inside character data or comments
   37 "
   38 syn region  sgmlString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=sgmlEntity,sgmlUnicodeNumberAttr display
   39 syn region  sgmlString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=sgmlEntity,sgmlUnicodeNumberAttr display
   40 
   41 " punctuation (within attributes) e.g. <tag sgml:foo.attribute ...>
   42 "                       ^   ^
   43 syn match   sgmlAttribPunct +[:.]+ contained display
   44 
   45 
   46 " no highlighting for sgmlEqual (sgmlEqual has no highlighting group)
   47 syn match   sgmlEqual +=+
   48 
   49 
   50 " attribute, everything before the '='
   51 "
   52 " PROVIDES: @sgmlAttribHook
   53 "
   54 " EXAMPLE:
   55 "
   56 " <tag foo.attribute = "value">
   57 "      ^^^^^^^^^^^^^
   58 "
   59 syn match   sgmlAttrib
   60     \ +[^-'"<]\@<=\<[a-zA-Z0-9.:]\+\>\([^'">]\@=\|$\)+
   61     \ contained
   62     \ contains=sgmlAttribPunct,@sgmlAttribHook
   63     \ display
   64 
   65 
   66 " UNQUOTED value (not including the '=' -- sgmlEqual)
   67 "
   68 " PROVIDES: @sgmlValueHook
   69 "
   70 " EXAMPLE:
   71 "
   72 " <tag foo.attribute = value>
   73 "              ^^^^^
   74 "
   75 syn match   sgmlValue
   76     \ +[^"' =/!?<>][^ =/!?<>]*+
   77     \ contained
   78     \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook
   79     \ display
   80 
   81 
   82 " QUOTED value (not including the '=' -- sgmlEqual)
   83 "
   84 " PROVIDES: @sgmlValueHook
   85 "
   86 " EXAMPLE:
   87 "
   88 " <tag foo.attribute = "value">
   89 "              ^^^^^^^
   90 " <tag foo.attribute = 'value'>
   91 "              ^^^^^^^
   92 "
   93 syn region  sgmlValue contained start=+"+ skip=+\\\\\|\\"+ end=+"+
   94         \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook
   95 syn region  sgmlValue contained start=+'+ skip=+\\\\\|\\'+ end=+'+
   96         \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook
   97 
   98 
   99 " value, everything after (and including) the '='
  100 " no highlighting!
  101 "
  102 " EXAMPLE:
  103 "
  104 " <tag foo.attribute = "value">
  105 "            ^^^^^^^^^
  106 " <tag foo.attribute = value>
  107 "            ^^^^^^^
  108 "
  109 syn match   sgmlEqualValue
  110     \ +=\s*[^ =/!?<>]\++
  111     \ contained
  112     \ contains=sgmlEqual,sgmlString,sgmlValue
  113     \ display
  114 
  115 
  116 " start tag
  117 " use matchgroup=sgmlTag to skip over the leading '<'
  118 " see also sgmlEmptyTag below.
  119 "
  120 " PROVIDES: @sgmlTagHook
  121 "
  122 syn region   sgmlTag
  123     \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+
  124     \ matchgroup=sgmlTag end=+>+
  125     \ contained
  126     \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook
  127 
  128 
  129 " tag content for empty tags. This is the same as sgmlTag
  130 " above, except the `matchgroup=sgmlEndTag for highlighting
  131 " the end '/>' differently.
  132 "
  133 " PROVIDES: @sgmlTagHook
  134 "
  135 syn region   sgmlEmptyTag
  136     \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+
  137     \ matchgroup=sgmlEndTag end=+/>+
  138     \ contained
  139     \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook
  140 
  141 
  142 " end tag
  143 " highlight everything but not the trailing '>' which
  144 " was already highlighted by the containing sgmlRegion.
  145 "
  146 " PROVIDES: @sgmlTagHook
  147 " (should we provide a separate @sgmlEndTagHook ?)
  148 "
  149 syn match   sgmlEndTag
  150     \ +</[^ /!?>"']\+>+
  151     \ contained
  152     \ contains=@sgmlTagHook
  153 
  154 
  155 " [-- SGML SPECIFIC --]
  156 
  157 " SGML specific
  158 " tag content for abbreviated regions
  159 "
  160 " PROVIDES: @sgmlTagHook
  161 "
  162 syn region   sgmlAbbrTag
  163     \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+
  164     \ matchgroup=sgmlTag end=+/+
  165     \ contained
  166     \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook
  167 
  168 
  169 " SGML specific
  170 " just highlight the trailing '/'
  171 syn match   sgmlAbbrEndTag +/+
  172 
  173 
  174 " SGML specific
  175 " abbreviated regions
  176 "
  177 " No highlighing, highlighing is done by contained elements.
  178 "
  179 " PROVIDES: @sgmlRegionHook
  180 "
  181 " EXAMPLE:
  182 "
  183 " <bold/Im Anfang war das Wort/
  184 "
  185 syn match   sgmlAbbrRegion
  186     \ +<[^/!?>"']\+/\_[^/]\+/+
  187     \ contains=sgmlAbbrTag,sgmlAbbrEndTag,sgmlCdata,sgmlComment,sgmlEntity,sgmlUnicodeNumberData,@sgmlRegionHook
  188 
  189 " [-- END OF SGML SPECIFIC --]
  190 
  191 
  192 " real (non-empty) elements. We cannot do syntax folding
  193 " as in xml, because end tags may be optional in sgml depending
  194 " on the dtd.
  195 " No highlighing, highlighing is done by contained elements.
  196 "
  197 " PROVIDES: @sgmlRegionHook
  198 "
  199 " EXAMPLE:
  200 "
  201 " <tag id="whoops">
  202 "   <!-- comment -->
  203 "   <another.tag></another.tag>
  204 "   <another.tag/>
  205 "   some data
  206 " </tag>
  207 "
  208 " SGML specific:
  209 " compared to xmlRegion:
  210 "   - removed folding
  211 "   - added a single '/'in the start pattern
  212 "
  213 syn region   sgmlRegion
  214     \ start=+<\z([^ /!?>"']\+\)\(\(\_[^/>]*[^/!?]>\)\|>\)+
  215     \ end=+</\z1>+
  216     \ contains=sgmlTag,sgmlEndTag,sgmlCdata,@sgmlRegionCluster,sgmlComment,sgmlEntity,sgmlUnicodeNumberData,@sgmlRegionHook
  217     \ keepend
  218     \ extend
  219 
  220 
  221 " empty tags. Just a container, no highlighting.
  222 " Compare this with sgmlTag.
  223 "
  224 " EXAMPLE:
  225 "
  226 " <tag id="lola"/>
  227 "
  228 " TODO use sgmlEmptyTag intead of sgmlTag
  229 syn match    sgmlEmptyRegion
  230     \ +<[^ /!?>"']\(\_[^"'<>]\|"\_[^"]*"\|'\_[^']*'\)*/>+
  231     \ contains=sgmlEmptyTag
  232 
  233 
  234 " cluster which contains the above two elements
  235 syn cluster sgmlRegionCluster contains=sgmlRegion,sgmlEmptyRegion,sgmlAbbrRegion
  236 
  237 
  238 " &entities; compare with dtd
  239 syn match   sgmlEntity             "&[^; \t]*;" contains=sgmlEntityPunct
  240 syn match   sgmlEntityPunct  contained "[&.;]"
  241 
  242 
  243 " The real comments (this implements the comments as defined by sgml,
  244 " but not all sgml pages actually conform to it. Errors are flagged.
  245 syn region  sgmlComment                start=+<!+        end=+>+ contains=sgmlCommentPart,sgmlString,sgmlCommentError,sgmlTodo
  246 syn keyword sgmlTodo         contained TODO FIXME XXX display
  247 syn match   sgmlCommentError contained "[^><!]"
  248 syn region  sgmlCommentPart  contained start=+--+        end=+--+
  249 
  250 
  251 " CData sections
  252 "
  253 " PROVIDES: @sgmlCdataHook
  254 "
  255 syn region    sgmlCdata
  256     \ start=+<!\[CDATA\[+
  257     \ end=+]]>+
  258     \ contains=sgmlCdataStart,sgmlCdataEnd,@sgmlCdataHook
  259     \ keepend
  260     \ extend
  261 " using the following line instead leads to corrupt folding at CDATA regions
  262 " syn match    sgmlCdata      +<!\[CDATA\[\_.\{-}]]>+  contains=sgmlCdataStart,sgmlCdataEnd,@sgmlCdataHook
  263 syn match    sgmlCdataStart +<!\[CDATA\[+  contained contains=sgmlCdataCdata
  264 syn keyword  sgmlCdataCdata CDATA          contained
  265 syn match    sgmlCdataEnd   +]]>+          contained
  266 
  267 
  268 " Processing instructions
  269 " This allows "?>" inside strings -- good idea?
  270 syn region  sgmlProcessing matchgroup=sgmlProcessingDelim start="<?" end="?>" contains=sgmlAttrib,sgmlEqualValue
  271 
  272 
  273 " DTD -- we use dtd.vim here
  274 syn region  sgmlDocType matchgroup=sgmlDocTypeDecl start="\c<!DOCTYPE"he=s+2,rs=s+2 end=">" contains=sgmlDocTypeKeyword,sgmlInlineDTD,sgmlString
  275 syn keyword sgmlDocTypeKeyword contained DOCTYPE PUBLIC SYSTEM
  276 syn region  sgmlInlineDTD contained start="\[" end="]" contains=@sgmlDTD
  277 syn include @sgmlDTD <sfile>:p:h/dtd.vim
  278 
  279 
  280 " synchronizing
  281 " TODO !!! to be improved !!!
  282 
  283 syn sync match sgmlSyncDT grouphere  sgmlDocType +\_.\(<!DOCTYPE\)\@=+
  284 " syn sync match sgmlSyncDT groupthere  NONE       +]>+
  285 
  286 syn sync match sgmlSync grouphere   sgmlRegion  +\_.\(<[^ /!?>"']\+\)\@=+
  287 " syn sync match sgmlSync grouphere  sgmlRegion "<[^ /!?>"']*>"
  288 syn sync match sgmlSync groupthere  sgmlRegion  +</[^ /!?>"']\+>+
  289 
  290 syn sync minlines=100
  291 
  292 
  293 " The default highlighting.
  294 hi def link sgmlTodo            Todo
  295 hi def link sgmlTag         Function
  296 hi def link sgmlEndTag          Identifier
  297 " SGML specifig
  298 hi def link sgmlAbbrEndTag      Identifier
  299 hi def link sgmlEmptyTag        Function
  300 hi def link sgmlEntity          Statement
  301 hi def link sgmlEntityPunct     Type
  302 
  303 hi def link sgmlAttribPunct     Comment
  304 hi def link sgmlAttrib          Type
  305 
  306 hi def link sgmlValue           String
  307 hi def link sgmlString          String
  308 hi def link sgmlComment         Comment
  309 hi def link sgmlCommentPart     Comment
  310 hi def link sgmlCommentError        Error
  311 hi def link sgmlError           Error
  312 
  313 hi def link sgmlProcessingDelim     Comment
  314 hi def link sgmlProcessing      Type
  315 
  316 hi def link sgmlCdata           String
  317 hi def link sgmlCdataCdata      Statement
  318 hi def link sgmlCdataStart      Type
  319 hi def link sgmlCdataEnd        Type
  320 
  321 hi def link sgmlDocTypeDecl     Function
  322 hi def link sgmlDocTypeKeyword      Statement
  323 hi def link sgmlInlineDTD       Function
  324 hi def link sgmlUnicodeNumberAttr   Number
  325 hi def link sgmlUnicodeSpecifierAttr    SpecialChar
  326 hi def link sgmlUnicodeNumberData   Number
  327 hi def link sgmlUnicodeSpecifierData    SpecialChar
  328 
  329 let b:current_syntax = "sgml"
  330 
  331 let &cpo = s:sgml_cpo_save
  332 unlet s:sgml_cpo_save
  333 
  334 " vim: ts=8