mirror of
https://github.com/neovim/neovim.git
synced 2026-01-03 01:46:31 +10:00
This reverts commits:
- 6b652a785033fd4164e049492a7327c1ed7c3e5f
- 2f689d5abde0ccddca9e20d8c93a0299bd054e32
- a025a46d4169587145fb54f04af349cd05cb6122
Several email addresses that are known to be valid caused bounces
due to an issue with my email setup. The previous commits incorrectly
marked these addresses as invalid. So revert the whole thing again.
62d8f3dab5
N/A patch:
vim-patch:2f689d5: runtime: mark more invalid email addresses
Co-authored-by: Christian Brabandt <cb@256bit.org>
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 specific
|
|
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
|