blob: 3e1da36790e16337e055fa36d6eb95d28219f163 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
if !has_key(g:polyglot_is_disabled, 'dlang')
finish
endif
if &filetype == "ddoc"
"ddoc file type
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
" Support cpoptions
let s:cpo_save = &cpo
set cpo&vim
" Set the current syntax to be known as ddoc
let b:current_syntax = "ddoc"
syn match ddocIdentifier "\$(\zs\a\w*\ze\_W*" display conceal contained
syn match ddocIdentifierDecl "^\s*\zs\a\w*\ze\s*=" display contained
syn region ddocDecl start="^\s*\a\w*\s*=" end="\(\n\_^\s*\_$\|\n^\s*\a\w*\s*=\)" transparent fold contains=ddocIdentifierDecl,ddocIdentifier
"use html comment when fold method is marker
set commentstring=<!--%s-->
hi! def link ddocIdentifier Macro
hi! def link ddocIdentifierDecl Macro
let &cpo = s:cpo_save
unlet s:cpo_save
elseif &filetype == "dd" || &filetype == "d" && getline(1) =~ "^Ddoc"
"Ddoc source file or .d File begining with Ddoc
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
" Support cpoptions
let s:cpo_save = &cpo
set cpo&vim
" Set the current syntax to be known as ddoc
let b:current_syntax = "ddoc"
syn match ddocKeyword "\%^Ddoc" display
syn keyword ddocKeyword MACROS contained
syn match ddocIdentifier "\$(\zs\a\w*\ze\_W*" display conceal
syn match ddocIdentifierDecl "^\s*\zs\a\w*\ze\s*=" display contained
"can slow down to much
"syn match ddocIdentifierDecl "\(^\s*MACROS:\s\+\)\@<=\zs\a\w*\ze\s*=" display contained
syn region ddocDecl start="^\s*MACROS:\_s\+" end="\%$" transparent fold contains=ddocKeyword,ddocIdentifierDecl,ddocIdentifier
"use html comment when fold method is marker
set commentstring=<!--%s-->
" highlight only ddoc Identifiers
hi! def link ddocIdentifier Macro
hi! def link ddocIdentifierDecl Macro
hi! def link ddocKeyword Macro
let &cpo = s:cpo_save
unlet s:cpo_save
finish
elseif &filetype == "d"
"Ddoc inside comments
syn keyword ddocKeyword MACROS contained
syn match ddocIdentifier "\$(\zs\a\w*\ze\_W*" display contained conceal containedin=@ddocComment
syn match ddocIdentifierBlockDecl "^\*\=\s*\a\w*\ze\s*=" display contained
"can slow down to much
"syn match ddocIdentifierBlockDecl "\(^*\=\s*MACROS:\s\+\)\@<=\zs\a\w*\ze\s*=" display contained
syn region ddocBlockDecl start="^\*\=\s*\zsMACROS:\_s\+" end="\ze\*/" transparent fold contained containedin=ddocBlockComment contains=ddocKeyword,ddocIdentifierBlockDecl,ddocIdentifier
syn match ddocIdentifierNestedDecl "^+\=\s*\a\w*\ze\s*=" display contained
"can slow down to much
"syn match ddocIdentifierNestedDecl "\(^+\=\s*MACROS:\s\+\)\@<=\zs\a\w*\ze\s*=" display contained
syn region ddocNestedDecl start="^+\=\s*\zsMACROS:\_s\+" end="\ze+/" transparent fold contained containedin=ddocNestedComment contains=ddocKeyword,ddocIdentifierNestedDecl,ddocIdentifier
"reset to default commentstring
set commentstring=/*%s*/
hi! def link ddocIdentifier Macro
hi! def link ddocIdentifierBlockDecl Macro
hi! def link ddocIdentifierNestedDecl Macro
hi! def link ddocKeyword Macro
endif
|