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