]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(xslt,xsd): speed up highlighting by optimizing lookbehinds in patterns
authorDmytro Meleshko <dmytro.meleshko@gmail.com>
Sun, 21 Jun 2026 18:47:22 +0000 (18:47 +0000)
committerChristian Brabandt <cb@256bit.org>
Sun, 21 Jun 2026 18:50:02 +0000 (18:50 +0000)
Move ownership to chrisbra/vim-xml-ftplugin

closes: #20436

Signed-off-by: Dmytro Meleshko <dmytro.meleshko@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
.github/MAINTAINERS
runtime/syntax/xsd.vim
runtime/syntax/xslt.vim

index f0266e77263897d1e57fb06eb4b4c5cc05f35f6f..86424a6d96f3d77b4884575b543f00d7e438cb2f 100644 (file)
@@ -734,8 +734,9 @@ runtime/syntax/wks.vim                                      @anakin4747
 runtime/syntax/xbl.vim                                 @dkearns
 runtime/syntax/xcompose.vim                            @ObserverOfTime
 runtime/syntax/xml.vim                                 @chrisbra
+runtime/syntax/xsd.vim                                 @chrisbra
 runtime/syntax/xs.vim                                  @petdance
-runtime/syntax/xslt.vim                                        @Boobies
+runtime/syntax/xslt.vim                                        @chrisbra
 runtime/syntax/zserio.vim                              @dpelle
 runtime/syntax/zsh.vim                                 @chrisbra
 runtime/tools/preproc_indent.vim                       @h-east
index 5ba6b4499a7e3acbcbd9e3e636ad8cec9602cb09..f5a0517601ed68a1bec01e46611c81e65e9c598f 100644 (file)
@@ -1,10 +1,10 @@
 " Vim syntax file
 " Language:    XSD (XML Schema)
-" Maintainer:  Johannes Zellner <johannes@zellner.org>
-" Last Change: Tue, 27 Apr 2004 14:54:59 CEST
+" Maintainer:  Christian Brabandt <cb@256bit.org>
+" Repository:  https://github.com/chrisbra/vim-xml-ftplugin
+" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: 21 Jun 2026
 " Filenames:   *.xsd
-" $Id: xsd.vim,v 1.1 2004/06/13 18:20:48 vimboss Exp $
-
 " REFERENCES:
 "   [1] http://www.w3.org/TR/xmlschema-0
 "
@@ -14,48 +14,26 @@ if exists("b:current_syntax")
     finish
 endif
 
-runtime syntax/xml.vim
+runtime! syntax/xml.vim
 
 syn cluster xmlTagHook add=xsdElement
 syn case match
 
-syn match xsdElement '\%(xsd:\)\@<=all'
-syn match xsdElement '\%(xsd:\)\@<=annotation'
-syn match xsdElement '\%(xsd:\)\@<=any'
-syn match xsdElement '\%(xsd:\)\@<=anyAttribute'
-syn match xsdElement '\%(xsd:\)\@<=appInfo'
-syn match xsdElement '\%(xsd:\)\@<=attribute'
-syn match xsdElement '\%(xsd:\)\@<=attributeGroup'
-syn match xsdElement '\%(xsd:\)\@<=choice'
-syn match xsdElement '\%(xsd:\)\@<=complexContent'
-syn match xsdElement '\%(xsd:\)\@<=complexType'
-syn match xsdElement '\%(xsd:\)\@<=documentation'
-syn match xsdElement '\%(xsd:\)\@<=element'
-syn match xsdElement '\%(xsd:\)\@<=enumeration'
-syn match xsdElement '\%(xsd:\)\@<=extension'
-syn match xsdElement '\%(xsd:\)\@<=field'
-syn match xsdElement '\%(xsd:\)\@<=group'
-syn match xsdElement '\%(xsd:\)\@<=import'
-syn match xsdElement '\%(xsd:\)\@<=include'
-syn match xsdElement '\%(xsd:\)\@<=key'
-syn match xsdElement '\%(xsd:\)\@<=keyref'
-syn match xsdElement '\%(xsd:\)\@<=length'
-syn match xsdElement '\%(xsd:\)\@<=list'
-syn match xsdElement '\%(xsd:\)\@<=maxInclusive'
-syn match xsdElement '\%(xsd:\)\@<=maxLength'
-syn match xsdElement '\%(xsd:\)\@<=minInclusive'
-syn match xsdElement '\%(xsd:\)\@<=minLength'
-syn match xsdElement '\%(xsd:\)\@<=pattern'
-syn match xsdElement '\%(xsd:\)\@<=redefine'
-syn match xsdElement '\%(xsd:\)\@<=restriction'
-syn match xsdElement '\%(xsd:\)\@<=schema'
-syn match xsdElement '\%(xsd:\)\@<=selector'
-syn match xsdElement '\%(xsd:\)\@<=sequence'
-syn match xsdElement '\%(xsd:\)\@<=simpleContent'
-syn match xsdElement '\%(xsd:\)\@<=simpleType'
-syn match xsdElement '\%(xsd:\)\@<=union'
-syn match xsdElement '\%(xsd:\)\@<=unique'
+for s:element in [
+    \ 'all', 'annotation', 'any', 'anyAttribute', 'appInfo', 'attribute',
+    \ 'attributeGroup', 'choice', 'complexContent', 'complexType',
+    \ 'documentation', 'element', 'enumeration', 'extension', 'field', 'group',
+    \ 'import', 'include', 'key', 'keyref', 'length', 'list', 'maxInclusive',
+    \ 'maxLength', 'minInclusive', 'minLength', 'pattern', 'redefine',
+    \ 'restriction', 'schema', 'selector', 'sequence', 'simpleContent',
+    \ 'simpleType', 'union', 'unique',
+    \ ]
+    execute 'syn match xsdElement contained /\%#=1\%([</]xsd:\)\@5<=' . s:element . '[^ /!?<>"'']\@!/'
+endfor
+unlet s:element
 
 hi def link xsdElement Statement
 
+let b:current_syntax = 'xsd'
+
 " vim: ts=8
index 900b8ca0490de313c0d15862524ba87c60fd0019..524c8369be1fd72ae7d1b45495f6d04c9ac3e733 100644 (file)
@@ -1,10 +1,11 @@
 " Vim syntax file
 " Language:    XSLT
-" Maintainer:   Bogdan Barbu <l4b.bogdan.barbu@gmail.com>
-" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
-" Last Change: Fri, 17 Jan 2020 07:15:37 +0200
+" Maintainer:  Christian Brabandt <cb@256bit.org>
+" Repository:  https://github.com/chrisbra/vim-xml-ftplugin
+" Previous Maintainer: Johannes Zellner <johannes@zellner.org>,
+"                      Bogdan Barbu <l4b.bogdan.barbu@gmail.com>
+" Last Change: 21 Jun 2026
 " Filenames:   *.xsl
-" $Id: xslt.vim,v 1.1 2004/06/13 15:52:10 vimboss Exp $
 
 " REFERENCES:
 "   [1] http://www.w3.org/TR/xslt
@@ -15,57 +16,28 @@ if exists("b:current_syntax")
     finish
 endif
 
-runtime syntax/xml.vim
+runtime! syntax/xml.vim
 
 syn cluster xmlTagHook add=xslElement
 syn case match
 
-syn match xslElement '\%(xsl:\)\@<=analyze-string'
-syn match xslElement '\%(xsl:\)\@<=apply-imports'
-syn match xslElement '\%(xsl:\)\@<=apply-templates'
-syn match xslElement '\%(xsl:\)\@<=attribute'
-syn match xslElement '\%(xsl:\)\@<=attribute-set'
-syn match xslElement '\%(xsl:\)\@<=call-template'
-syn match xslElement '\%(xsl:\)\@<=character-map'
-syn match xslElement '\%(xsl:\)\@<=choose'
-syn match xslElement '\%(xsl:\)\@<=comment'
-syn match xslElement '\%(xsl:\)\@<=copy'
-syn match xslElement '\%(xsl:\)\@<=copy-of'
-syn match xslElement '\%(xsl:\)\@<=decimal-format'
-syn match xslElement '\%(xsl:\)\@<=document'
-syn match xslElement '\%(xsl:\)\@<=element'
-syn match xslElement '\%(xsl:\)\@<=fallback'
-syn match xslElement '\%(xsl:\)\@<=for-each'
-syn match xslElement '\%(xsl:\)\@<=for-each-group'
-syn match xslElement '\%(xsl:\)\@<=function'
-syn match xslElement '\%(xsl:\)\@<=if'
-syn match xslElement '\%(xsl:\)\@<=include'
-syn match xslElement '\%(xsl:\)\@<=import'
-syn match xslElement '\%(xsl:\)\@<=import-schema'
-syn match xslElement '\%(xsl:\)\@<=key'
-syn match xslElement '\%(xsl:\)\@<=message'
-syn match xslElement '\%(xsl:\)\@<=namespace'
-syn match xslElement '\%(xsl:\)\@<=namespace-alias'
-syn match xslElement '\%(xsl:\)\@<=number'
-syn match xslElement '\%(xsl:\)\@<=otherwise'
-syn match xslElement '\%(xsl:\)\@<=output'
-syn match xslElement '\%(xsl:\)\@<=param'
-syn match xslElement '\%(xsl:\)\@<=perform-sort'
-syn match xslElement '\%(xsl:\)\@<=processing-instruction'
-syn match xslElement '\%(xsl:\)\@<=preserve-space'
-syn match xslElement '\%(xsl:\)\@<=script'
-syn match xslElement '\%(xsl:\)\@<=sequence'
-syn match xslElement '\%(xsl:\)\@<=sort'
-syn match xslElement '\%(xsl:\)\@<=strip-space'
-syn match xslElement '\%(xsl:\)\@<=stylesheet'
-syn match xslElement '\%(xsl:\)\@<=template'
-syn match xslElement '\%(xsl:\)\@<=transform'
-syn match xslElement '\%(xsl:\)\@<=text'
-syn match xslElement '\%(xsl:\)\@<=value-of'
-syn match xslElement '\%(xsl:\)\@<=variable'
-syn match xslElement '\%(xsl:\)\@<=when'
-syn match xslElement '\%(xsl:\)\@<=with-param'
+for s:element in [
+    \ 'analyze-string', 'apply-imports', 'apply-templates', 'attribute',
+    \ 'attribute-set', 'call-template', 'character-map', 'choose', 'comment',
+    \ 'copy', 'copy-of', 'decimal-format', 'document', 'element', 'fallback',
+    \ 'for-each', 'for-each-group', 'function', 'if', 'include', 'import',
+    \ 'import-schema', 'key', 'message', 'namespace', 'namespace-alias',
+    \ 'number', 'otherwise', 'output', 'param', 'perform-sort',
+    \ 'processing-instruction', 'preserve-space', 'script', 'sequence', 'sort',
+    \ 'strip-space', 'stylesheet', 'template', 'transform', 'text', 'value-of',
+    \ 'variable', 'when', 'with-param',
+    \ ]
+    execute 'syn match xslElement contained /\%#=1\%([</]xsl:\)\@5<=' . s:element . '[^ /!?<>"'']\@!/'
+endfor
+unlet s:element
 
 hi def link xslElement Statement
 
+let b:current_syntax = 'xslt'
+
 " vim: ts=8