mirror of
https://github.com/neovim/neovim.git
synced 2024-12-25 13:45:15 -07:00
5fd21b8d3e
Update runtime files
6c391a74fe
omit autoload/getscript.vim
skip doc/eval.txt (needs 8.2.2468)
skip doc/various.txt (needs 8.2.3400)
(typofixes courtesy of @dundargoc)
335 lines
8.7 KiB
VimL
335 lines
8.7 KiB
VimL
" Vim syntax file
|
|
" Language: SGML
|
|
" Maintainer: Johannes Zellner <johannes@zellner.org>
|
|
" Last Change: Tue, 27 Apr 2004 15:05:21 CEST
|
|
" Filenames: *.sgml,*.sgm
|
|
" $Id: sgml.vim,v 1.1 2004/06/13 17:52:57 vimboss Exp $
|
|
|
|
" quit when a syntax file was already loaded
|
|
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
let s:sgml_cpo_save = &cpo
|
|
set cpo&vim
|
|
|
|
syn case match
|
|
|
|
" mark illegal characters
|
|
syn match sgmlError "[<&]"
|
|
|
|
|
|
" unicode numbers:
|
|
" provide different highlithing for unicode characters
|
|
" inside strings and in plain text (character data).
|
|
"
|
|
" EXAMPLE:
|
|
"
|
|
" \u4e88
|
|
"
|
|
syn match sgmlUnicodeNumberAttr +\\u\x\{4}+ contained contains=sgmlUnicodeSpecifierAttr
|
|
syn match sgmlUnicodeSpecifierAttr +\\u+ contained
|
|
syn match sgmlUnicodeNumberData +\\u\x\{4}+ contained contains=sgmlUnicodeSpecifierData
|
|
syn match sgmlUnicodeSpecifierData +\\u+ contained
|
|
|
|
|
|
" strings inside character data or comments
|
|
"
|
|
syn region sgmlString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=sgmlEntity,sgmlUnicodeNumberAttr display
|
|
syn region sgmlString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=sgmlEntity,sgmlUnicodeNumberAttr display
|
|
|
|
" punctuation (within attributes) e.g. <tag sgml:foo.attribute ...>
|
|
" ^ ^
|
|
syn match sgmlAttribPunct +[:.]+ contained display
|
|
|
|
|
|
" no highlighting for sgmlEqual (sgmlEqual has no highlighting group)
|
|
syn match sgmlEqual +=+
|
|
|
|
|
|
" attribute, everything before the '='
|
|
"
|
|
" PROVIDES: @sgmlAttribHook
|
|
"
|
|
" EXAMPLE:
|
|
"
|
|
" <tag foo.attribute = "value">
|
|
" ^^^^^^^^^^^^^
|
|
"
|
|
syn match sgmlAttrib
|
|
\ +[^-'"<]\@<=\<[a-zA-Z0-9.:]\+\>\([^'">]\@=\|$\)+
|
|
\ contained
|
|
\ contains=sgmlAttribPunct,@sgmlAttribHook
|
|
\ display
|
|
|
|
|
|
" UNQUOTED value (not including the '=' -- sgmlEqual)
|
|
"
|
|
" PROVIDES: @sgmlValueHook
|
|
"
|
|
" EXAMPLE:
|
|
"
|
|
" <tag foo.attribute = value>
|
|
" ^^^^^
|
|
"
|
|
syn match sgmlValue
|
|
\ +[^"' =/!?<>][^ =/!?<>]*+
|
|
\ contained
|
|
\ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook
|
|
\ display
|
|
|
|
|
|
" QUOTED value (not including the '=' -- sgmlEqual)
|
|
"
|
|
" PROVIDES: @sgmlValueHook
|
|
"
|
|
" EXAMPLE:
|
|
"
|
|
" <tag foo.attribute = "value">
|
|
" ^^^^^^^
|
|
" <tag foo.attribute = 'value'>
|
|
" ^^^^^^^
|
|
"
|
|
syn region sgmlValue contained start=+"+ skip=+\\\\\|\\"+ end=+"+
|
|
\ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook
|
|
syn region sgmlValue contained start=+'+ skip=+\\\\\|\\'+ end=+'+
|
|
\ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook
|
|
|
|
|
|
" value, everything after (and including) the '='
|
|
" no highlighting!
|
|
"
|
|
" EXAMPLE:
|
|
"
|
|
" <tag foo.attribute = "value">
|
|
" ^^^^^^^^^
|
|
" <tag foo.attribute = value>
|
|
" ^^^^^^^
|
|
"
|
|
syn match sgmlEqualValue
|
|
\ +=\s*[^ =/!?<>]\++
|
|
\ contained
|
|
\ contains=sgmlEqual,sgmlString,sgmlValue
|
|
\ display
|
|
|
|
|
|
" start tag
|
|
" use matchgroup=sgmlTag to skip over the leading '<'
|
|
" see also sgmlEmptyTag below.
|
|
"
|
|
" PROVIDES: @sgmlTagHook
|
|
"
|
|
syn region sgmlTag
|
|
\ matchgroup=sgmlTag start=+<[^ /!?"']\@=+
|
|
\ matchgroup=sgmlTag end=+>+
|
|
\ contained
|
|
\ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook
|
|
|
|
|
|
" tag content for empty tags. This is the same as sgmlTag
|
|
" above, except the `matchgroup=sgmlEndTag for highlighting
|
|
" the end '/>' differently.
|
|
"
|
|
" PROVIDES: @sgmlTagHook
|
|
"
|
|
syn region sgmlEmptyTag
|
|
\ matchgroup=sgmlTag start=+<[^ /!?"']\@=+
|
|
\ matchgroup=sgmlEndTag end=+/>+
|
|
\ contained
|
|
\ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook
|
|
|
|
|
|
" end tag
|
|
" highlight everything but not the trailing '>' which
|
|
" was already highlighted by the containing sgmlRegion.
|
|
"
|
|
" PROVIDES: @sgmlTagHook
|
|
" (should we provide a separate @sgmlEndTagHook ?)
|
|
"
|
|
syn match sgmlEndTag
|
|
\ +</[^ /!?>"']\+>+
|
|
\ contained
|
|
\ contains=@sgmlTagHook
|
|
|
|
|
|
" [-- SGML SPECIFIC --]
|
|
|
|
" SGML specific
|
|
" tag content for abbreviated regions
|
|
"
|
|
" PROVIDES: @sgmlTagHook
|
|
"
|
|
syn region sgmlAbbrTag
|
|
\ matchgroup=sgmlTag start=+<[^ /!?"']\@=+
|
|
\ matchgroup=sgmlTag end=+/+
|
|
\ contained
|
|
\ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook
|
|
|
|
|
|
" SGML specific
|
|
" just highlight the trailing '/'
|
|
syn match sgmlAbbrEndTag +/+
|
|
|
|
|
|
" SGML specific
|
|
" abbreviated regions
|
|
"
|
|
" No highlighting, highlighting is done by contained elements.
|
|
"
|
|
" PROVIDES: @sgmlRegionHook
|
|
"
|
|
" EXAMPLE:
|
|
"
|
|
" <bold/Im Anfang war das Wort/
|
|
"
|
|
syn match sgmlAbbrRegion
|
|
\ +<[^/!?>"']\+/\_[^/]\+/+
|
|
\ contains=sgmlAbbrTag,sgmlAbbrEndTag,sgmlCdata,sgmlComment,sgmlEntity,sgmlUnicodeNumberData,@sgmlRegionHook
|
|
|
|
" [-- END OF SGML SPECIFIC --]
|
|
|
|
|
|
" real (non-empty) elements. We cannot do syntax folding
|
|
" as in xml, because end tags may be optional in sgml depending
|
|
" on the dtd.
|
|
" No highlighting, highlighting is done by contained elements.
|
|
"
|
|
" PROVIDES: @sgmlRegionHook
|
|
"
|
|
" EXAMPLE:
|
|
"
|
|
" <tag id="whoops">
|
|
" <!-- comment -->
|
|
" <another.tag></another.tag>
|
|
" <another.tag/>
|
|
" some data
|
|
" </tag>
|
|
"
|
|
" SGML specific:
|
|
" compared to xmlRegion:
|
|
" - removed folding
|
|
" - added a single '/'in the start pattern
|
|
"
|
|
syn region sgmlRegion
|
|
\ start=+<\z([^ /!?>"']\+\)\(\(\_[^/>]*[^/!?]>\)\|>\)+
|
|
\ end=+</\z1>+
|
|
\ contains=sgmlTag,sgmlEndTag,sgmlCdata,@sgmlRegionCluster,sgmlComment,sgmlEntity,sgmlUnicodeNumberData,@sgmlRegionHook
|
|
\ keepend
|
|
\ extend
|
|
|
|
|
|
" empty tags. Just a container, no highlighting.
|
|
" Compare this with sgmlTag.
|
|
"
|
|
" EXAMPLE:
|
|
"
|
|
" <tag id="lola"/>
|
|
"
|
|
" TODO use sgmlEmptyTag instead of sgmlTag
|
|
syn match sgmlEmptyRegion
|
|
\ +<[^ /!?>"']\(\_[^"'<>]\|"\_[^"]*"\|'\_[^']*'\)*/>+
|
|
\ contains=sgmlEmptyTag
|
|
|
|
|
|
" cluster which contains the above two elements
|
|
syn cluster sgmlRegionCluster contains=sgmlRegion,sgmlEmptyRegion,sgmlAbbrRegion
|
|
|
|
|
|
" &entities; compare with dtd
|
|
syn match sgmlEntity "&[^; \t]*;" contains=sgmlEntityPunct
|
|
syn match sgmlEntityPunct contained "[&.;]"
|
|
|
|
|
|
" The real comments (this implements the comments as defined by sgml,
|
|
" but not all sgml pages actually conform to it. Errors are flagged.
|
|
syn region sgmlComment start=+<!+ end=+>+ contains=sgmlCommentPart,sgmlString,sgmlCommentError,sgmlTodo
|
|
syn keyword sgmlTodo contained TODO FIXME XXX display
|
|
syn match sgmlCommentError contained "[^><!]"
|
|
syn region sgmlCommentPart contained start=+--+ end=+--+
|
|
|
|
|
|
" CData sections
|
|
"
|
|
" PROVIDES: @sgmlCdataHook
|
|
"
|
|
syn region sgmlCdata
|
|
\ start=+<!\[CDATA\[+
|
|
\ end=+]]>+
|
|
\ contains=sgmlCdataStart,sgmlCdataEnd,@sgmlCdataHook
|
|
\ keepend
|
|
\ extend
|
|
" using the following line instead leads to corrupt folding at CDATA regions
|
|
" syn match sgmlCdata +<!\[CDATA\[\_.\{-}]]>+ contains=sgmlCdataStart,sgmlCdataEnd,@sgmlCdataHook
|
|
syn match sgmlCdataStart +<!\[CDATA\[+ contained contains=sgmlCdataCdata
|
|
syn keyword sgmlCdataCdata CDATA contained
|
|
syn match sgmlCdataEnd +]]>+ contained
|
|
|
|
|
|
" Processing instructions
|
|
" This allows "?>" inside strings -- good idea?
|
|
syn region sgmlProcessing matchgroup=sgmlProcessingDelim start="<?" end="?>" contains=sgmlAttrib,sgmlEqualValue
|
|
|
|
|
|
" DTD -- we use dtd.vim here
|
|
syn region sgmlDocType matchgroup=sgmlDocTypeDecl start="\c<!DOCTYPE"he=s+2,rs=s+2 end=">" contains=sgmlDocTypeKeyword,sgmlInlineDTD,sgmlString
|
|
syn keyword sgmlDocTypeKeyword contained DOCTYPE PUBLIC SYSTEM
|
|
syn region sgmlInlineDTD contained start="\[" end="]" contains=@sgmlDTD
|
|
syn include @sgmlDTD <sfile>:p:h/dtd.vim
|
|
|
|
|
|
" synchronizing
|
|
" TODO !!! to be improved !!!
|
|
|
|
syn sync match sgmlSyncDT grouphere sgmlDocType +\_.\(<!DOCTYPE\)\@=+
|
|
" syn sync match sgmlSyncDT groupthere NONE +]>+
|
|
|
|
syn sync match sgmlSync grouphere sgmlRegion +\_.\(<[^ /!?>"']\+\)\@=+
|
|
" syn sync match sgmlSync grouphere sgmlRegion "<[^ /!?>"']*>"
|
|
syn sync match sgmlSync groupthere sgmlRegion +</[^ /!?>"']\+>+
|
|
|
|
syn sync minlines=100
|
|
|
|
|
|
" The default highlighting.
|
|
hi def link sgmlTodo Todo
|
|
hi def link sgmlTag Function
|
|
hi def link sgmlEndTag Identifier
|
|
" SGML specifig
|
|
hi def link sgmlAbbrEndTag Identifier
|
|
hi def link sgmlEmptyTag Function
|
|
hi def link sgmlEntity Statement
|
|
hi def link sgmlEntityPunct Type
|
|
|
|
hi def link sgmlAttribPunct Comment
|
|
hi def link sgmlAttrib Type
|
|
|
|
hi def link sgmlValue String
|
|
hi def link sgmlString String
|
|
hi def link sgmlComment Comment
|
|
hi def link sgmlCommentPart Comment
|
|
hi def link sgmlCommentError Error
|
|
hi def link sgmlError Error
|
|
|
|
hi def link sgmlProcessingDelim Comment
|
|
hi def link sgmlProcessing Type
|
|
|
|
hi def link sgmlCdata String
|
|
hi def link sgmlCdataCdata Statement
|
|
hi def link sgmlCdataStart Type
|
|
hi def link sgmlCdataEnd Type
|
|
|
|
hi def link sgmlDocTypeDecl Function
|
|
hi def link sgmlDocTypeKeyword Statement
|
|
hi def link sgmlInlineDTD Function
|
|
hi def link sgmlUnicodeNumberAttr Number
|
|
hi def link sgmlUnicodeSpecifierAttr SpecialChar
|
|
hi def link sgmlUnicodeNumberData Number
|
|
hi def link sgmlUnicodeSpecifierData SpecialChar
|
|
|
|
let b:current_syntax = "sgml"
|
|
|
|
let &cpo = s:sgml_cpo_save
|
|
unlet s:sgml_cpo_save
|
|
|
|
" vim: ts=8
|