xref: /vim-8.2.3635/runtime/syntax/flexwiki.vim (revision 89bcfda6)
1437df8f4SBram Moolenaar" Vim syntax file
2437df8f4SBram Moolenaar" Language:     FlexWiki, http://www.flexwiki.com/
3437df8f4SBram Moolenaar" Maintainer:   George V. Reilly  <[email protected]>
4437df8f4SBram Moolenaar" Home:         http://www.georgevreilly.com/vim/flexwiki/
5437df8f4SBram Moolenaar" Other Home:   http://www.vim.org/scripts/script.php?script_id=1529
6437df8f4SBram Moolenaar" Author:       George V. Reilly
7437df8f4SBram Moolenaar" Filenames:    *.wiki
8437df8f4SBram Moolenaar" Last Change: Wed Apr 26 11:00 PM 2006 P
9437df8f4SBram Moolenaar" Version:      0.3
10437df8f4SBram Moolenaar
11437df8f4SBram Moolenaar" Note: The horrible regexps were reverse-engineered from
12437df8f4SBram Moolenaar" FlexWikiCore\EngineSource\Formatter.cs, with help from the Regex Analyzer
13437df8f4SBram Moolenaar" in The Regulator, http://regulator.sourceforge.net/  .NET uses Perl-style
14437df8f4SBram Moolenaar" regexes, which use a different syntax than Vim (fewer \s).
15437df8f4SBram Moolenaar" The primary test case is FlexWiki\FormattingRules.wiki
16437df8f4SBram Moolenaar
17*89bcfda6SBram Moolenaar" quit when a syntax file was already loaded
18*89bcfda6SBram Moolenaarif exists("b:current_syntax")
19437df8f4SBram Moolenaar    finish
20437df8f4SBram Moolenaarendif
21437df8f4SBram Moolenaar
22437df8f4SBram Moolenaar" A WikiWord (unqualifiedWikiName)
23437df8f4SBram Moolenaarsyntax match  flexwikiWord          /\%(_\?\([A-Z]\{2,}[a-z0-9]\+[A-Za-z0-9]*\)\|\([A-Z][a-z0-9]\+[A-Za-z0-9]*[A-Z]\+[A-Za-z0-9]*\)\)/
24437df8f4SBram Moolenaar" A [bracketed wiki word]
25437df8f4SBram Moolenaarsyntax match  flexwikiWord          /\[[[:alnum:]\s]\+\]/
26437df8f4SBram Moolenaar
27437df8f4SBram Moolenaar" text: "this is a link (optional tooltip)":http://www.microsoft.com
28437df8f4SBram Moolenaar" TODO: check URL syntax against RFC
29437df8f4SBram Moolenaarsyntax match flexwikiLink           `\("[^"(]\+\((\([^)]\+\))\)\?":\)\?\(https\?\|ftp\|gopher\|telnet\|file\|notes\|ms-help\):\(\(\(//\)\|\(\\\\\)\)\+[A-Za-z0-9:#@%/;$~_?+-=.&\-\\\\]*\)`
30437df8f4SBram Moolenaar
31437df8f4SBram Moolenaar" text: *strong*
32437df8f4SBram Moolenaarsyntax match flexwikiBold           /\(^\|\W\)\zs\*\([^ ].\{-}\)\*/
33437df8f4SBram Moolenaar" '''bold'''
34437df8f4SBram Moolenaarsyntax match flexwikiBold           /'''\([^'].\{-}\)'''/
35437df8f4SBram Moolenaar
36437df8f4SBram Moolenaar" text: _emphasis_
37437df8f4SBram Moolenaarsyntax match flexwikiItalic         /\(^\|\W\)\zs_\([^ ].\{-}\)_/
38437df8f4SBram Moolenaar" ''italic''
39437df8f4SBram Moolenaarsyntax match flexwikiItalic         /''\([^'].\{-}\)''/
40437df8f4SBram Moolenaar
41437df8f4SBram Moolenaar" ``deemphasis``
42437df8f4SBram Moolenaarsyntax match flexwikiDeEmphasis     /``\([^`].\{-}\)``/
43437df8f4SBram Moolenaar
44437df8f4SBram Moolenaar" text: @code@
45437df8f4SBram Moolenaarsyntax match flexwikiCode           /\(^\|\s\|(\|\[\)\zs@\([^@]\+\)@/
46437df8f4SBram Moolenaar
47437df8f4SBram Moolenaar"   text: -deleted text-
48437df8f4SBram Moolenaarsyntax match flexwikiDelText        /\(^\|\s\+\)\zs-\([^ <a ]\|[^ <img ]\|[^ -].*\)-/
49437df8f4SBram Moolenaar
50437df8f4SBram Moolenaar"   text: +inserted text+
51437df8f4SBram Moolenaarsyntax match flexwikiInsText        /\(^\|\W\)\zs+\([^ ].\{-}\)+/
52437df8f4SBram Moolenaar
53437df8f4SBram Moolenaar"   text: ^superscript^
54437df8f4SBram Moolenaarsyntax match flexwikiSuperScript    /\(^\|\W\)\zs^\([^ ].\{-}\)^/
55437df8f4SBram Moolenaar
56437df8f4SBram Moolenaar"   text: ~subscript~
57437df8f4SBram Moolenaarsyntax match flexwikiSubScript      /\(^\|\W\)\zs\~\([^ ].\{-}\)\~/
58437df8f4SBram Moolenaar
59437df8f4SBram Moolenaar"   text: ??citation??
60437df8f4SBram Moolenaarsyntax match flexwikiCitation       /\(^\|\W\)\zs??\([^ ].\{-}\)??/
61437df8f4SBram Moolenaar
62437df8f4SBram Moolenaar" Emoticons: must come after the Textilisms, as later rules take precedence
63437df8f4SBram Moolenaar" over earlier ones. This match is an approximation for the ~70 distinct
64437df8f4SBram Moolenaar" patterns that FlexWiki knows.
65437df8f4SBram Moolenaarsyntax match flexwikiEmoticons      /\((.)\|:[()|$@]\|:-[DOPS()\]|$@]\|;)\|:'(\)/
66437df8f4SBram Moolenaar
67437df8f4SBram Moolenaar" Aggregate all the regular text highlighting into flexwikiText
68437df8f4SBram Moolenaarsyntax cluster flexwikiText contains=flexwikiItalic,flexwikiBold,flexwikiCode,flexwikiDeEmphasis,flexwikiDelText,flexwikiInsText,flexwikiSuperScript,flexwikiSubScript,flexwikiCitation,flexwikiLink,flexwikiWord,flexwikiEmoticons
69437df8f4SBram Moolenaar
70437df8f4SBram Moolenaar" single-line WikiPropertys
71437df8f4SBram Moolenaarsyntax match flexwikiSingleLineProperty /^:\?[A-Z_][_a-zA-Z0-9]\+:/
72437df8f4SBram Moolenaar
73437df8f4SBram Moolenaar" TODO: multi-line WikiPropertys
74437df8f4SBram Moolenaar
75437df8f4SBram Moolenaar" Header levels, 1-6
76437df8f4SBram Moolenaarsyntax match flexwikiH1             /^!.*$/
77437df8f4SBram Moolenaarsyntax match flexwikiH2             /^!!.*$/
78437df8f4SBram Moolenaarsyntax match flexwikiH3             /^!!!.*$/
79437df8f4SBram Moolenaarsyntax match flexwikiH4             /^!!!!.*$/
80437df8f4SBram Moolenaarsyntax match flexwikiH5             /^!!!!!.*$/
81437df8f4SBram Moolenaarsyntax match flexwikiH6             /^!!!!!!.*$/
82437df8f4SBram Moolenaar
83437df8f4SBram Moolenaar" <hr>, horizontal rule
84437df8f4SBram Moolenaarsyntax match flexwikiHR             /^----.*$/
85437df8f4SBram Moolenaar
86437df8f4SBram Moolenaar" Formatting can be turned off by ""enclosing it in pairs of double quotes""
87437df8f4SBram Moolenaarsyntax match flexwikiEscape         /"".\{-}""/
88437df8f4SBram Moolenaar
89437df8f4SBram Moolenaar" Tables. Each line starts and ends with '||'; each cell is separated by '||'
90437df8f4SBram Moolenaarsyntax match flexwikiTable          /||/
91437df8f4SBram Moolenaar
92437df8f4SBram Moolenaar" Bulleted list items start with one or tabs, followed by whitespace, then '*'
93437df8f4SBram Moolenaar" Numeric  list items start with one or tabs, followed by whitespace, then '1.'
94437df8f4SBram Moolenaar" Eight spaces at the beginning of the line is equivalent to the leading tab.
95437df8f4SBram Moolenaarsyntax match flexwikiList           /^\(\t\| \{8}\)\s*\(\*\|1\.\).*$/   contains=@flexwikiText
96437df8f4SBram Moolenaar
97437df8f4SBram Moolenaar" Treat all other lines that start with spaces as PRE-formatted text.
98437df8f4SBram Moolenaarsyntax match flexwikiPre            /^[ \t]\+[^ \t*1].*$/
99437df8f4SBram Moolenaar
100437df8f4SBram Moolenaar
101437df8f4SBram Moolenaar" Link FlexWiki syntax items to colors
102437df8f4SBram Moolenaarhi def link flexwikiH1                    Title
103437df8f4SBram Moolenaarhi def link flexwikiH2                    flexwikiH1
104437df8f4SBram Moolenaarhi def link flexwikiH3                    flexwikiH2
105437df8f4SBram Moolenaarhi def link flexwikiH4                    flexwikiH3
106437df8f4SBram Moolenaarhi def link flexwikiH5                    flexwikiH4
107437df8f4SBram Moolenaarhi def link flexwikiH6                    flexwikiH5
108437df8f4SBram Moolenaarhi def link flexwikiHR                    flexwikiH6
109437df8f4SBram Moolenaar
110437df8f4SBram Moolenaarhi def flexwikiBold                       term=bold cterm=bold gui=bold
111437df8f4SBram Moolenaarhi def flexwikiItalic                     term=italic cterm=italic gui=italic
112437df8f4SBram Moolenaar
113437df8f4SBram Moolenaarhi def link flexwikiCode                  Statement
114437df8f4SBram Moolenaarhi def link flexwikiWord                  Underlined
115437df8f4SBram Moolenaar
116437df8f4SBram Moolenaarhi def link flexwikiEscape                Todo
117437df8f4SBram Moolenaarhi def link flexwikiPre                   PreProc
118437df8f4SBram Moolenaarhi def link flexwikiLink                  Underlined
119437df8f4SBram Moolenaarhi def link flexwikiList                  Type
120437df8f4SBram Moolenaarhi def link flexwikiTable                 Type
121437df8f4SBram Moolenaarhi def link flexwikiEmoticons             Constant
122437df8f4SBram Moolenaarhi def link flexwikiDelText               Comment
123437df8f4SBram Moolenaarhi def link flexwikiDeEmphasis            Comment
124437df8f4SBram Moolenaarhi def link flexwikiInsText               Constant
125437df8f4SBram Moolenaarhi def link flexwikiSuperScript           Constant
126437df8f4SBram Moolenaarhi def link flexwikiSubScript             Constant
127437df8f4SBram Moolenaarhi def link flexwikiCitation              Constant
128437df8f4SBram Moolenaar
129437df8f4SBram Moolenaarhi def link flexwikiSingleLineProperty    Identifier
130437df8f4SBram Moolenaar
131437df8f4SBram Moolenaarlet b:current_syntax="FlexWiki"
132437df8f4SBram Moolenaar
133437df8f4SBram Moolenaar" vim:tw=0:
134