135 lines · 5.3 KB · Text
RawDownload
" Vim syntax file" Language:     FlexWiki, http://www.flexwiki.com/" Maintainer:   George V. Reilly  <george@reilly.org>" Home:         http://www.georgevreilly.com/vim/flexwiki/" Other Home:   http://www.vim.org/scripts/script.php?script_id=1529" Author:       George V. Reilly" Filenames:    *.wiki" Last Change: Wed Apr 26 11:00 PM 2006 P" Version:      0.3 " Note: The horrible regexps were reverse-engineered from" FlexWikiCore\EngineSource\Formatter.cs, with help from the Regex Analyzer" in The Regulator, http://regulator.sourceforge.net/  .NET uses Perl-style" regexes, which use a different syntax than Vim (fewer \s)." The primary test case is FlexWiki\FormattingRules.wiki " Quit if syntax file is already loadedif version < 600    syntax clearelseif exists("b:current_syntax")    finishendif " A WikiWord (unqualifiedWikiName)syntax 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]*\)\)/" A [bracketed wiki word]syntax match  flexwikiWord          /\[[[:alnum:]\s]\+\]/ " text: "this is a link (optional tooltip)":http://www.microsoft.com" TODO: check URL syntax against RFCsyntax match flexwikiLink           `\("[^"(]\+\((\([^)]\+\))\)\?":\)\?\(https\?\|ftp\|gopher\|telnet\|file\|notes\|ms-help\):\(\(\(//\)\|\(\\\\\)\)\+[A-Za-z0-9:#@%/;$~_?+-=.&\-\\\\]*\)` " text: *strong* syntax match flexwikiBold           /\(^\|\W\)\zs\*\([^ ].\{-}\)\*/" '''bold'''syntax match flexwikiBold           /'''\([^'].\{-}\)'''/ " text: _emphasis_syntax match flexwikiItalic         /\(^\|\W\)\zs_\([^ ].\{-}\)_/" ''italic''syntax match flexwikiItalic         /''\([^'].\{-}\)''/ " ``deemphasis``syntax match flexwikiDeEmphasis     /``\([^`].\{-}\)``/ " text: @code@ syntax match flexwikiCode           /\(^\|\s\|(\|\[\)\zs@\([^@]\+\)@/ "   text: -deleted text- syntax match flexwikiDelText        /\(^\|\s\+\)\zs-\([^ <a ]\|[^ <img ]\|[^ -].*\)-/ "   text: +inserted text+ syntax match flexwikiInsText        /\(^\|\W\)\zs+\([^ ].\{-}\)+/ "   text: ^superscript^ syntax match flexwikiSuperScript    /\(^\|\W\)\zs^\([^ ].\{-}\)^/ "   text: ~subscript~ syntax match flexwikiSubScript      /\(^\|\W\)\zs\~\([^ ].\{-}\)\~/ "   text: ??citation?? syntax match flexwikiCitation       /\(^\|\W\)\zs??\([^ ].\{-}\)??/ " Emoticons: must come after the Textilisms, as later rules take precedence" over earlier ones. This match is an approximation for the ~70 distinct" patterns that FlexWiki knows.syntax match flexwikiEmoticons      /\((.)\|:[()|$@]\|:-[DOPS()\]|$@]\|;)\|:'(\)/ " Aggregate all the regular text highlighting into flexwikiTextsyntax cluster flexwikiText contains=flexwikiItalic,flexwikiBold,flexwikiCode,flexwikiDeEmphasis,flexwikiDelText,flexwikiInsText,flexwikiSuperScript,flexwikiSubScript,flexwikiCitation,flexwikiLink,flexwikiWord,flexwikiEmoticons " single-line WikiPropertyssyntax match flexwikiSingleLineProperty /^:\?[A-Z_][_a-zA-Z0-9]\+:/ " TODO: multi-line WikiPropertys " Header levels, 1-6syntax match flexwikiH1             /^!.*$/syntax match flexwikiH2             /^!!.*$/syntax match flexwikiH3             /^!!!.*$/syntax match flexwikiH4             /^!!!!.*$/syntax match flexwikiH5             /^!!!!!.*$/syntax match flexwikiH6             /^!!!!!!.*$/ " <hr>, horizontal rulesyntax match flexwikiHR             /^----.*$/ " Formatting can be turned off by ""enclosing it in pairs of double quotes""syntax match flexwikiEscape         /"".\{-}""/ " Tables. Each line starts and ends with '||'; each cell is separated by '||'syntax match flexwikiTable          /||/ " Bulleted list items start with one or tabs, followed by whitespace, then '*'" Numeric  list items start with one or tabs, followed by whitespace, then '1.'" Eight spaces at the beginning of the line is equivalent to the leading tab.syntax match flexwikiList           /^\(\t\| \{8}\)\s*\(\*\|1\.\).*$/   contains=@flexwikiText " Treat all other lines that start with spaces as PRE-formatted text.syntax match flexwikiPre            /^[ \t]\+[^ \t*1].*$/  " Link FlexWiki syntax items to colorshi def link flexwikiH1                    Titlehi def link flexwikiH2                    flexwikiH1hi def link flexwikiH3                    flexwikiH2hi def link flexwikiH4                    flexwikiH3hi def link flexwikiH5                    flexwikiH4hi def link flexwikiH6                    flexwikiH5hi def link flexwikiHR                    flexwikiH6    hi def flexwikiBold                       term=bold cterm=bold gui=boldhi def flexwikiItalic                     term=italic cterm=italic gui=italic hi def link flexwikiCode                  Statementhi def link flexwikiWord                  Underlined hi def link flexwikiEscape                Todohi def link flexwikiPre                   PreProchi def link flexwikiLink                  Underlinedhi def link flexwikiList                  Typehi def link flexwikiTable                 Typehi def link flexwikiEmoticons             Constanthi def link flexwikiDelText               Commenthi def link flexwikiDeEmphasis            Commenthi def link flexwikiInsText               Constanthi def link flexwikiSuperScript           Constanthi def link flexwikiSubScript             Constanthi def link flexwikiCitation              Constant hi def link flexwikiSingleLineProperty    Identifier let b:current_syntax="FlexWiki" " vim:tw=0: