~ubuntu-branches/ubuntu/vivid/vim/vivid

« back to all changes in this revision

Viewing changes to runtime/syntax/hostconf.vim

  • Committer: Bazaar Package Importer
  • Author(s): Soren Hansen
  • Date: 2008-11-05 11:37:43 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20081105113743-9i4urcsm3n44mhqe
Tags: 2:7.2.025-2ubuntu1
* Merge from debian unstable, remaining changes:
  - runtime/syntax/debcontrol.vim:
    + Add "metapackages" to the list of valid sections.
  - runtime/syntax/debchangelog.vim:
    + Add "jaunty" to the list of valid suites.
  - Drop vim-lesstif package and lesstif2-dev build-dependency.
  - Enable Python interpreter on basic builds.
  - Create a .pot file for translations.
  - Disable autoindent, line-wrapping, and backup files by default.
  - runtime/syntax/debsources.vim:
    + Add "jaunty" to debsourcesDistrKeyword
  - runtime/syntax/grub.vim:
    + Add Ubuntu-specific 'quiet' keyword.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
" Vim syntax file
 
2
" Language:         host.conf(5) configuration file
 
3
" Maintainer:       Nikolai Weibull <now@bitwi.se>
 
4
" Latest Revision:  2007-06-25
 
5
 
 
6
if exists("b:current_syntax")
 
7
  finish
 
8
endif
 
9
 
 
10
let s:cpo_save = &cpo
 
11
set cpo&vim
 
12
 
 
13
syn keyword hostconfTodo
 
14
      \ contained
 
15
      \ TODO
 
16
      \ FIXME
 
17
      \ XXX
 
18
      \ NOTE
 
19
 
 
20
syn match   hostconfComment
 
21
      \ display
 
22
      \ contained
 
23
      \ '\s*#.*'
 
24
      \ contains=hostconfTodo,
 
25
      \          @Spell
 
26
 
 
27
syn match   hostconfBegin
 
28
      \ display
 
29
      \ '^'
 
30
      \ nextgroup=hostconfComment,hostconfKeyword
 
31
      \ skipwhite
 
32
 
 
33
syn keyword hostconfKeyword
 
34
      \ contained
 
35
      \ order
 
36
      \ nextgroup=hostconfLookupOrder
 
37
      \ skipwhite
 
38
 
 
39
let s:orders = ['bind', 'hosts', 'nis']
 
40
 
 
41
function s:permute_suffixes(list)
 
42
  if empty(a:list)
 
43
    return []
 
44
  elseif len(a:list) == 1
 
45
    return a:list[0]
 
46
  else
 
47
    let i = 0
 
48
    let n = len(a:list)
 
49
    let sub_permutations = []
 
50
    while i < n
 
51
      let list_copy = copy(a:list)
 
52
      let removed = list_copy[i]
 
53
      call remove(list_copy, i)
 
54
      call add(sub_permutations, [removed, s:permute_suffixes(list_copy)])
 
55
      let i += 1
 
56
    endwhile
 
57
    return sub_permutations
 
58
  endif
 
59
endfunction
 
60
 
 
61
function s:generate_suffix_groups(list_of_order_of_orders, context, trailing_context)
 
62
  for order_of_orders in a:list_of_order_of_orders
 
63
    let order = order_of_orders[0]
 
64
    let trailing_context = a:trailing_context . toupper(order[0]) . order[1:]
 
65
    let nextgroup = 'hostconfLookupOrder' . trailing_context
 
66
    let nextgroup_delimiter = nextgroup . 'Delimiter'
 
67
    let group = 'hostconfLookupOrder' . a:context
 
68
    execute 'syn keyword' group 'contained' order 'nextgroup=' . nextgroup_delimiter 'skipwhite'
 
69
    execute 'syn match' nextgroup_delimiter 'contained display "," nextgroup=' . nextgroup 'skipwhite'
 
70
    if a:context != ""
 
71
      execute 'hi def link' group 'hostconfLookupOrder'
 
72
    endif
 
73
    execute 'hi def link' nextgroup_delimiter 'hostconfLookupOrderDelimiter'
 
74
    let context = trailing_context
 
75
    if type(order_of_orders[1]) == type([])
 
76
      call s:generate_suffix_groups(order_of_orders[1], context, trailing_context)
 
77
    else
 
78
      execute 'syn keyword hostconfLookupOrder' . context 'contained' order_of_orders[-1]
 
79
      execute 'hi def link hostconfLookupOrder' . context 'hostconfLookupOrder'
 
80
    endif
 
81
  endfor
 
82
endfunction
 
83
 
 
84
call s:generate_suffix_groups(s:permute_suffixes(s:orders), "", "")
 
85
 
 
86
delfunction s:generate_suffix_groups
 
87
delfunction s:permute_suffixes
 
88
 
 
89
syn keyword hostconfKeyword
 
90
      \ contained
 
91
      \ trim
 
92
      \ nextgroup=hostconfDomain
 
93
      \ skipwhite
 
94
 
 
95
syn match   hostconfDomain
 
96
      \ contained
 
97
      \ '\.[^:;,[:space:]]\+'
 
98
      \ nextgroup=hostconfDomainDelimiter
 
99
      \ skipwhite
 
100
 
 
101
syn match   hostconfDomainDelimiter
 
102
      \ contained
 
103
      \ display
 
104
      \ '[:;,]'
 
105
      \ nextgroup=hostconfDomain
 
106
      \ skipwhite
 
107
 
 
108
syn keyword hostconfKeyword
 
109
      \ contained
 
110
      \ multi
 
111
      \ nospoof
 
112
      \ spoofalert
 
113
      \ reorder
 
114
      \ nextgroup=hostconfBoolean
 
115
      \ skipwhite
 
116
 
 
117
syn keyword hostconfBoolean
 
118
      \ contained
 
119
      \ on
 
120
      \ off
 
121
 
 
122
syn keyword hostconfKeyword
 
123
      \ contained
 
124
      \ spoof
 
125
      \ nextgroup=hostconfSpoofValue
 
126
      \ skipwhite
 
127
 
 
128
syn keyword hostconfSpoofValue
 
129
      \ contained
 
130
      \ off
 
131
      \ nowarn
 
132
      \ warn
 
133
 
 
134
hi def link hostconfTodo                  Todo
 
135
hi def link hostconfComment               Comment
 
136
hi def link hostconfKeyword               Keyword
 
137
hi def link hostconfLookupOrder           Identifier
 
138
hi def link hostconfLookupOrderDelimiter  Delimiter
 
139
hi def link hostconfDomain                String
 
140
hi def link hostconfDomainDelimiter       Delimiter
 
141
hi def link hostconfBoolean               Boolean
 
142
hi def link hostconfSpoofValue            hostconfBoolean
 
143
 
 
144
let b:current_syntax = "hostconf"
 
145
 
 
146
let &cpo = s:cpo_save
 
147
unlet s:cpo_save