Mercurial > vim
view runtime/syntax/hostconf.vim @ 23043:6616bf17dc94 v8.2.2068
patch 8.2.2068: transparent syntax item uses start/end of containing region
Commit: https://github.com/vim/vim/commit/b46f57e87b3706a8c4b97d8e03f7853a7938b061
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Nov 29 14:11:41 2020 +0100
patch 8.2.2068: transparent syntax item uses start/end of containing region
Problem: Transparent syntax item uses start/end of containing region.
Solution: Do not change the startpos and endpos of a transparent region to
that of its containing region. (Adrian Ghizaru, closes #7349,
closes #7391)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 29 Nov 2020 14:15:05 +0100 |
parents | 1218c5353e2b |
children |
line wrap: on
line source
" Vim syntax file " Language: host.conf(5) configuration file " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2007-06-25 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword hostconfTodo \ contained \ TODO \ FIXME \ XXX \ NOTE syn match hostconfComment \ display \ contained \ '\s*#.*' \ contains=hostconfTodo, \ @Spell syn match hostconfBegin \ display \ '^' \ nextgroup=hostconfComment,hostconfKeyword \ skipwhite syn keyword hostconfKeyword \ contained \ order \ nextgroup=hostconfLookupOrder \ skipwhite let s:orders = ['bind', 'hosts', 'nis'] function s:permute_suffixes(list) if empty(a:list) return [] elseif len(a:list) == 1 return a:list[0] else let i = 0 let n = len(a:list) let sub_permutations = [] while i < n let list_copy = copy(a:list) let removed = list_copy[i] call remove(list_copy, i) call add(sub_permutations, [removed, s:permute_suffixes(list_copy)]) let i += 1 endwhile return sub_permutations endif endfunction function s:generate_suffix_groups(list_of_order_of_orders, context, trailing_context) for order_of_orders in a:list_of_order_of_orders let order = order_of_orders[0] let trailing_context = a:trailing_context . toupper(order[0]) . order[1:] let nextgroup = 'hostconfLookupOrder' . trailing_context let nextgroup_delimiter = nextgroup . 'Delimiter' let group = 'hostconfLookupOrder' . a:context execute 'syn keyword' group 'contained' order 'nextgroup=' . nextgroup_delimiter 'skipwhite' execute 'syn match' nextgroup_delimiter 'contained display "," nextgroup=' . nextgroup 'skipwhite' if a:context != "" execute 'hi def link' group 'hostconfLookupOrder' endif execute 'hi def link' nextgroup_delimiter 'hostconfLookupOrderDelimiter' let context = trailing_context if type(order_of_orders[1]) == type([]) call s:generate_suffix_groups(order_of_orders[1], context, trailing_context) else execute 'syn keyword hostconfLookupOrder' . context 'contained' order_of_orders[-1] execute 'hi def link hostconfLookupOrder' . context 'hostconfLookupOrder' endif endfor endfunction call s:generate_suffix_groups(s:permute_suffixes(s:orders), "", "") delfunction s:generate_suffix_groups delfunction s:permute_suffixes syn keyword hostconfKeyword \ contained \ trim \ nextgroup=hostconfDomain \ skipwhite syn match hostconfDomain \ contained \ '\.[^:;,[:space:]]\+' \ nextgroup=hostconfDomainDelimiter \ skipwhite syn match hostconfDomainDelimiter \ contained \ display \ '[:;,]' \ nextgroup=hostconfDomain \ skipwhite syn keyword hostconfKeyword \ contained \ multi \ nospoof \ spoofalert \ reorder \ nextgroup=hostconfBoolean \ skipwhite syn keyword hostconfBoolean \ contained \ on \ off syn keyword hostconfKeyword \ contained \ spoof \ nextgroup=hostconfSpoofValue \ skipwhite syn keyword hostconfSpoofValue \ contained \ off \ nowarn \ warn hi def link hostconfTodo Todo hi def link hostconfComment Comment hi def link hostconfKeyword Keyword hi def link hostconfLookupOrder Identifier hi def link hostconfLookupOrderDelimiter Delimiter hi def link hostconfDomain String hi def link hostconfDomainDelimiter Delimiter hi def link hostconfBoolean Boolean hi def link hostconfSpoofValue hostconfBoolean let b:current_syntax = "hostconf" let &cpo = s:cpo_save unlet s:cpo_save