Mercurial > vim
view runtime/syntax/gdresource.vim @ 31802:ddbc560ecc41 v9.0.1233
patch 9.0.1233: search() loops forever if "skip" is TRUE for all matches
Commit: https://github.com/vim/vim/commit/3d79f0a4309995956bd8889940cca22f7a15881d
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jan 22 20:14:26 2023 +0000
patch 9.0.1233: search() loops forever if "skip" is TRUE for all matches
Problem: search() loops forever if "skip" is TRUE for all matches.
Solution: Keep the position of the first match.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 22 Jan 2023 21:15:03 +0100 |
parents | ebed259f919f |
children |
line wrap: on
line source
" Vim syntax file for Godot resource (scenes) " Language: gdresource " Maintainer: Maxim Kim <habamax@gmail.com> " Filenames: *.tscn, *.tres " Website: https://github.com/habamax/vim-gdscript if exists("b:current_syntax") finish endif let s:keepcpo = &cpo set cpo&vim syn match gdResourceNumber "\<0x\%(_\=\x\)\+\>" syn match gdResourceNumber "\<0b\%(_\=[01]\)\+\>" syn match gdResourceNumber "\<\d\%(_\=\d\)*\>" syn match gdResourceNumber "\<\d\%(_\=\d\)*\%(e[+-]\=\d\%(_\=\d\)*\)\=\>" syn match gdResourceNumber "\<\d\%(_\=\d\)*\.\%(e[+-]\=\d\%(_\=\d\)*\)\=\%(\W\|$\)\@=" syn match gdResourceNumber "\%(^\|\W\)\@1<=\%(\d\%(_\=\d\)*\)\=\.\d\%(_\=\d\)*\%(e[+-]\=\d\%(_\=\d\)*\)\=\>" syn keyword gdResourceKeyword true false syn region gdResourceString \ start=+[uU]\="+ end='"' skip='\\\\\|\\"' \ contains=@Spell keepend " Section syn region gdResourceSection matchgroup=gdResourceSectionDelimiter \ start='^\[' end=']\s*$' \ oneline keepend \ contains=gdResourceSectionName,gdResourceSectionAttribute syn match gdResourceSectionName '\[\@<=\S\+' contained skipwhite syn match gdResourceSectionAttribute '\S\+\s*=\s*\S\+' \ skipwhite keepend contained \ contains=gdResourceSectionAttributeName,gdResourceSectionAttributeValue syn match gdResourceSectionAttributeName '\S\+\ze\(\s*=\)' skipwhite contained syn match gdResourceSectionAttributeValue '\(=\s*\)\zs\S\+\ze' skipwhite \ contained \ contains=gdResourceString,gdResourceNumber,gdResourceKeyword " Section body syn match gdResourceAttribute '^\s*\S\+\s*=.*$' \ skipwhite keepend \ contains=gdResourceAttributeName,gdResourceAttributeValue syn match gdResourceAttributeName '\S\+\ze\(\s*=\)' skipwhite contained syn match gdResourceAttributeValue '\(=\s*\)\zs.*$' skipwhite \ contained \ contains=gdResourceString,gdResourceNumber,gdResourceKeyword hi def link gdResourceNumber Constant hi def link gdResourceKeyword Constant hi def link gdResourceSectionName Statement hi def link gdResourceSectionDelimiter Delimiter hi def link gdResourceSectionAttributeName Type hi def link gdResourceAttributeName Identifier hi def link gdResourceString String let b:current_syntax = "gdresource" let &cpo = s:keepcpo unlet s:keepcpo