Rename {Language.Symantic => Symantic}
[doclang.git] / vim / syntax / tct.vim
index dddaa49636b4681137d507ef82c3483560a5318a..23553c1dc0abc5796c20e5aa4b272e2d01447f84 100644 (file)
@@ -1,15 +1,15 @@
 " Language:    Texte Convivial Technique (TCT)
 " License:     GNU General Public License, version 3 or later (at your option)
-" Maintainer:  Julien Moutinho <julm+tct@autogeree.net>
-" URL:         http://autogeree.net/pad/edition/tct/
-" Version:     v2017-08-24
+" Maintainer:  Julien Moutinho <julm+hdoc@autogeree.net>
+" URL:         git://git.autogeree.net/hdoc
+" Version:     v2018-10-11
 " Installation:
 "  Copy this file to ~/.vim/syntax/tct.vim
 "  then add this line to ~/.vimrc :
 "  autocmd BufNewFile,BufRead *.tct set filetype=tct
 
 if exists("b:current_syntax")
-       "finish
+       finish
  endif
 
 syn clear
@@ -21,32 +21,32 @@ syn match tctPlain /.\+/ contains=@tctInline
 hi def link tctPlain Normal
 
 " Block
-syn match   tctPath          /^\( *\([^<>:=| *`«»/"_,.;@^!?~%(){}[\]\\#&+-]* *[:>]\|\[[^]]*\]\|- \|\( *\d\+\.\)\+\)\)* *\ze\([^<>:=| *`«»/"_,.;@^!?~%(){}[\]\\#&+-]* *\([>=|@]\|: \|:$\)\|\[[^]]*\]\|-- \|- \|\( *\d\+\.\)\+\|#\+ \)/
-    \ contains=tctNodeBird,tctNodeColon,tctNodeComment,tctNodeUL,tctNodeOL,tctNodeBracket
-    \ nextgroup=@tctKeyPath
-syn cluster tctKeyPath
-    \ contains=tctKeyAt,tctKeyBird,tctKeyColon,tctKeyEqual,tctKeyBar,tctKeyComment,tctKeyUL,tctKeyOL,tctKeyBracket,tctKeySection
-syn match   tctKeyAt         /[^<>:=| ]* *@/   contained contains=tctNodeAt      nextgroup=tctValueAt
-syn match   tctKeyBar        /[^<>:=| ]* *|/   contained contains=tctNodeBar     nextgroup=tctValueBar
-syn match   tctKeyBird       /[^<>:=| ]* *>/   contained contains=tctNodeBird    nextgroup=tctValueBird
-syn match   tctKeyColon      /[^<>:=| ]* *:\ze\( \|$\)/ contained contains=tctNodeColon nextgroup=tctValueColon
-syn match   tctKeyEqual      /[^<>:=| ]* *=/   contained contains=tctNodeEqual   nextgroup=tctValueEqual
-syn match   tctKeyBracket    /\[[^]]*\]/       contained contains=tctNodeBracket nextgroup=tctValueBracket
-syn match   tctKeyComment    /-- /             contained contains=tctNodeComment nextgroup=tctValueComment
-syn match   tctKeyUL         /-\ze /           contained contains=tctNodeUL      nextgroup=tctValueUL
-syn match   tctKeyOL         /\( *\d\+\.\)\+\ze\( \|$\)/ contained contains=tctNodeOL nextgroup=tctValueOL
-syn match   tctKeySection    /#\+\ze /         contained contains=tctNodeSection nextgroup=tctValueSection
-
-syn match   tctNodeAt        /[^<>:=| ]* *@/   contained contains=tctSymAt,tctSymDot
-syn match   tctNodeBar       /[^<>:=| ]* *|/   contained contains=tctSymBar,tctSymDot
-syn match   tctNodeBird      /[^<>:=| ]* *>/   contained contains=tctSymBird,tctSymDot
-syn match   tctNodeColon     /[^<>:=| ]* *:\ze\( \|$\)/ contained contains=tctSymColon,@tctColons,tctSymDot
-syn match   tctNodeEqual     /[^<>:=| ]* *=/   contained contains=tctSymEqual,tctSymDot
-syn match   tctNodeBracket   /\[[^]]*\]/       contained contains=tctSymBracket,@tctInline
-syn match   tctNodeComment   /--/              contained
-syn match   tctNodeUL        /-/               contained
-syn match   tctNodeOL        /\( *\d\+\.\)\+/  contained contains=tctSymDot
-syn match   tctNodeSection   /#\+/             contained
+syn match   tctPath          /^\( *\([^<>:=|  *`«»/"_,.;@^!?~%(){}[\]\\#&+]* *[:>]\|\[[^]]*\]\|- \|\( *\d\+\.\)\+\)\)* *\ze\([^<>:=|  *`«»/"_,.;@^!?~%(){}[\]\\#&+]*\(@ \| *[>=|]\| *: \| *:$\)\|\[[^]]*\]\|-- \|- \|\( *\d\+\.\)\+\|@ \|#\+ \)/
+    \ contains=tctHeaderBird,tctHeaderColon,tctHeaderComment,tctHeaderUL,tctHeaderOL,tctHeaderBracket
+    \ nextgroup=@tctRowPath
+syn cluster tctRowPath
+    \ contains=tctRowAt,tctRowBird,tctRowColon,tctRowEqual,tctRowBar,tctRowComment,tctRowUL,tctRowOL,tctRowBracket,tctRowSection
+syn match   tctRowAt         /[^<>:=|         ]*@ /    contained contains=tctHeaderAt      nextgroup=tctValueAt
+syn match   tctRowBar        /[^<>:=|         ]* *|/   contained contains=tctHeaderBar     nextgroup=tctValueBar
+syn match   tctRowBird       /[^<>:=|         ]* *>/   contained contains=tctHeaderBird    nextgroup=tctValueBird
+syn match   tctRowColon      /[^<>:=|         ]* *:\ze\( \|$\)/ contained contains=tctHeaderColon nextgroup=tctValueColon
+syn match   tctRowEqual      /[^<>:=|         ]* *=/   contained contains=tctHeaderEqual   nextgroup=tctValueEqual
+syn match   tctRowBracket    /\[[^]]*\]/         contained contains=tctHeaderBracket nextgroup=tctValueBracket
+syn match   tctRowComment    /-- /               contained contains=tctHeaderComment nextgroup=tctValueComment
+syn match   tctRowUL         /-\ze /             contained contains=tctHeaderUL      nextgroup=tctValueUL
+syn match   tctRowOL         /\( *\d\+\.\)\+\ze\( \|$\)/ contained contains=tctHeaderOL nextgroup=tctValueOL
+syn match   tctRowSection    /#\+\ze /           contained contains=tctHeaderSection nextgroup=tctValueSection
+
+syn match   tctHeaderAt        /[^<>:=|       ]*@ /  contained contains=tctSymAt,tctSymDot
+syn match   tctHeaderBar       /[^<>:=|       ]* *|/ contained contains=tctSymBar,tctSymDot
+syn match   tctHeaderBird      /[^<>:=|       ]* *>/ contained contains=tctSymBird,tctSymDot
+syn match   tctHeaderColon     /[^<>:=|       ]* *:\ze\( \|$\)/ contained contains=tctSymColon,@tctColons,tctSymDot
+syn match   tctHeaderEqual     /[^<>:=|       ]* *=/ contained contains=tctSymEqual,tctSymDot
+syn match   tctHeaderBracket   /\[[^]]*\]/       contained contains=tctSymBracket,@tctInline
+syn match   tctHeaderComment   /--/              contained
+syn match   tctHeaderUL        /-/               contained
+syn match   tctHeaderOL        /\( *\d\+\.\)\+/  contained contains=tctSymDot
+syn match   tctHeaderSection   /#\+/             contained
 
 syn match   tctSymAt         /@/   contained
 syn match   tctSymBar        /|/   contained
@@ -70,16 +70,16 @@ syn match   tctValueSection  /.*/ contained contains=@tctInline
 "syn match   tctSection       /^ *#\+ .*/ contains=@tctInline
 
 
-hi tctNodeAt       cterm=NONE ctermfg=yellow      guifg=yellow
-hi tctNodeBar      cterm=NONE ctermfg=DarkYellow  guifg=yellow
-hi tctNodeBird     cterm=NONE ctermfg=DarkYellow  guifg=yellow
-hi tctNodeColon    cterm=bold ctermfg=yellow      guifg=yellow
-hi tctNodeEqual    cterm=bold ctermfg=DarkGrey    guifg=yellow
-hi tctNodeBracket  cterm=NONE ctermfg=NONE        guifg=NONE
-hi tctNodeComment  cterm=bold ctermfg=DarkGrey    guifg=grey
-hi tctNodeUL       cterm=bold ctermfg=yellow      guifg=yellow
-hi tctNodeOL       cterm=bold ctermfg=yellow      guifg=yellow
-hi tctNodeSection  cterm=bold ctermfg=magenta     guifg=magenta gui=bold
+hi tctHeaderAt       cterm=NONE ctermfg=yellow      guifg=yellow
+hi tctHeaderBar      cterm=NONE ctermfg=DarkYellow  guifg=yellow
+hi tctHeaderBird     cterm=NONE ctermfg=DarkYellow  guifg=yellow
+hi tctHeaderColon    cterm=bold ctermfg=yellow      guifg=yellow
+hi tctHeaderEqual    cterm=bold ctermfg=DarkGrey    guifg=yellow
+hi tctHeaderBracket  cterm=NONE ctermfg=NONE        guifg=NONE
+hi tctHeaderComment  cterm=bold ctermfg=DarkGrey    guifg=grey
+hi tctHeaderUL       cterm=bold ctermfg=yellow      guifg=yellow
+hi tctHeaderOL       cterm=bold ctermfg=yellow      guifg=yellow
+hi tctHeaderSection  cterm=bold ctermfg=magenta     guifg=magenta gui=bold
 
 hi tctSymAt        cterm=bold ctermfg=cyan     guifg=cyan
 hi tctSymBar       cterm=bold ctermfg=cyan     guifg=cyan
@@ -99,7 +99,7 @@ hi tctValueUL      cterm=NONE gui=NONE
 hi tctValueOL      cterm=NONE gui=NONE
 
 hi tctComment      cterm=bold ctermfg=DarkGrey guifg=grey
-hi tctKeySection   cterm=bold ctermfg=magenta  guifg=magenta gui=bold
+hi tctRowSection   cterm=bold ctermfg=magenta  guifg=magenta gui=bold
 hi tctValueSection cterm=bold ctermfg=magenta  guifg=magenta gui=bold
 
 
@@ -116,10 +116,10 @@ syn cluster tctBlock contains=tctPath,tctSection
 
 " Inline
 syn match tctBold
-    \ /\(^\|[  `’«»/"|_,.:;@^!?=~%(){}[\]\\&+-]\)\zs\*[^ *]\([^*]*[^ *]\)\?\*\ze\([  `’«»/"|_,.:;@^!?=~%(){}[\]\\&+-]\|$\)/
+    \ /\(^\|[  `’«»/"|,.:…;@^!?=~%(){}[\]\\&+]\)\zs\*[^ *]\([^*]*[^ *]\)\?\*\ze\([  `’«»/"|,.:…;@^!?=~%(){}[\]\\&+]\|$\)/
     \ contained contains=@tctInline
 syn match tctCode
-    \ /\(^\|[  *’«»/"|_,.:;@^!?=~%(){}[\]\\&+-]\)\zs`[^ `]\([^`]*[^ `]\)\?`\ze\([  *’«»/"|_,.:;@^!?=~%(){}[\]\\&+-]\|$\)/
+    \ /\(^\|[  *’«»/"|,.:…;@^!?=~%(){}[\]\\&+]\)\zs`[^ `]\([^`]*[^ `]\)\?`\ze\([  *’«»/"|,.:…;@^!?=~%(){}[\]\\&+]\|$\)/
     \ contained contains=@tctInline
 syn match tctE
     \ /<\/\?[^ >]\+\/\?>/
@@ -134,16 +134,22 @@ syn match tctQuoteFrench
     \ /«.\{-}»/
     \ contained contains=@tctInline
 syn match tctItalic
-    \ /\(^\|[  *`’«»"'’|_,.:;@^!?=~<>%(){}[\]\\#&+-]\)\zs\/[^ /]\([^/]*[^ /]\)\?\/\ze\([  *`’«»"'’|_,.:;@^!?=~<>%(){}[\]\\#&+-]\|$\)/
+    \ /\(^\|[  *`’«»"'’|,.:…;@^!?=~<>%(){}[\]\\#&+]\)\zs\/[^ /]\([^/]*[^ /]\)\?\/\ze\([  *`’«»"'’|,.:…;@^!?=~<>%(){}[\]\\#&+]\|$\)/
     \ contained contains=@tctInline
 syn match tctQuote
-    \ /\(^\|[  *`’«»/'’|_,.:;@^!?=~<>%(){}[\]\\#&+-]\)\zs"[^ "]\([^"]*[^ "]\)\?"\ze\([  *`’«»/'’|_,.:;@^!?=~<>%(){}[\]\\#&+-]\|$\)/
+    \ /\(^\|[  *`’«»/'’|,.:…;@^!?=~<>%(){}[\]\\#&+]\)\zs"[^ "]\([^"]*[^ "]\)\?"\ze\([  *`’«»/'’|,.:…;@^!?=~<>%(){}[\]\\#&+]\|$\)/
+    \ contained contains=@tctInline
+syn match tctAt
+    \ /\(^\|[  *`’«»/"'’|,.:…;^!?=~<>%(){}[\]\\#&+]\)\zs@\([^ @]\([^@]*[^ @]\)\?@\|[^@ *`’«»/"'’|,.:…;^!?=~<>%(){}[\]\\#&+]*[^@ *`’«»/"'’|,.:…;^!?=~<>%(){}[\]\\#&+]\)\ze\([  *`’«»/"'’|,.:…;^!?=~<>%(){}[\]\\#&+]\|$\)/
     \ contained contains=@tctInline
 syn match tctTag
-    \ /\(^\|[  *`’«»/"'’|_,.:;@^!?=~<>%(){}[\]\&+-]\)\zs#\([^ #]\([^#]*[^ #]\)\?#\|[^ #]*[^# *`’«»/"'’|_,.:;@^!?=~<>%(){}[\]\&+-]\)\ze\([  *`’«»/"'’|_,.:;@^!?=~<>%(){}[\]\&+-]\|$\)/
+    \ /\(^\|[  *`’«»/"'’|,.:…;@^!?=~<>%(){}[\]\\&+]\)\zs#\([^ #]\([^#]*[^ #]\)\?#\|[^# *`’«»/"'’|,.:…;@^!?=~<>%(){}[\]\\&+]*[^# *`’«»/"'’|,.:…;@^!?=~<>%(){}[\]\\&+]\)\ze\([  *`’«»/"'’|,.:…;@^!?=~<>%(){}[\]\\&+]\|$\)/
+    \ contained contains=@tctInline
+syn match tctRef
+    \ /\(^\|[  *`’«»/"'’|,.:…;@^!?=~<>%(){}\\#&+]\)\zs\[[^[\]        ]*\]\ze\([  *`’«»/"'’|,.:…;@^!?=~<>%(){}\\#&+]\|$\)/
     \ contained contains=@tctInline
 syn match tctUnderline
-    \ /\(^\|[  *`’«»/"'’|,.:;@!?=~<>%(){}[\]\\#&+-]\)\zs_.*_\ze\([  *`’«»/"'’|,.:;@!?=~<>%(){}[\]\\#&+-]\|$\)/
+    \ /\(^\|[  *`’«»/"'’|,.:…;@!?=~<>%(){}[\]\\#&+]\)\zs_.*_\ze\([  *`’«»/"'’|,.:…;@!?=~<>%(){}[\]\\#&+]\|$\)/
     \ contained contains=@tctInline
 syn match tctURL
     \ /[a-z+-]\+:\/\/[^| \t[\]]*\(\[[^\]]*\]\)\?/
@@ -175,7 +181,7 @@ syn region tctAttrValue contained start=+"+ end=+"+ contains=tctEntity
 syn region tctAttrValue contained start=+'+ end=+'+ contains=tctEntity
 
 
-syn cluster tctInline contains=tctBold,tctCode,tctElem,tctElemEnd,tctEntity,tctQuoteFrench,tctItalic,tctQuote,tctTag,tctUnderline,tctURL
+syn cluster tctInline contains=tctBold,tctCode,tctElem,tctElemEnd,tctEntity,tctQuoteFrench,tctItalic,tctQuote,tctAt,tctTag,tctRef,tctUnderline,tctURL
 
 
 hi def link tctAttr         Type
@@ -187,9 +193,11 @@ hi def link tctEntity       Statement
 hi def link tctEntityPunct  Type
 hi          tctItalic       cterm=italic gui=italic
 hi def link tctNamespace    Tag
-hi          tctQuote        cterm=bold ctermfg=cyan        guifg=cyan
-hi          tctQuoteFrench  cterm=bold ctermfg=green       guifg=green
-hi          tctTag          cterm=bold ctermfg=cyan        guifg=cyan
+hi          tctQuote        cterm=bold ctermfg=cyan   guifg=cyan
+hi          tctQuoteFrench  cterm=bold ctermfg=green  guifg=green
+hi          tctTag          cterm=bold ctermfg=cyan   guifg=cyan
+hi          tctAt           ctermfg=red  cterm=NONE   guifg=DarkRed
+hi          tctRef          ctermfg=cyan cterm=NONE   guifg=DarkCyan
 hi def link tctElem         Function
 hi def link tctElemEnd      Identifier
 hi          tctElemName     cterm=bold ctermfg=yellow      guifg=yellow