Skip to content
Browse files

confluence syntax

  • Loading branch information...
1 parent fb60558 commit c80933f8b3caa34470fc814173497e727f02be21 @daveray committed May 23, 2012
Showing with 205 additions and 0 deletions.
  1. +205 −0 syntax/confluencewiki.vim
View
205 syntax/confluencewiki.vim
@@ -0,0 +1,205 @@
+"============================================================================
+"
+" Confluence WIKI syntax file
+"
+" Language: Confluence WIKI
+" Version: 0.1.0
+" Maintainer: Daniel Grana <daniel{AT}insophia{DOT}com>
+" Thanks: Ingo Karkat <swdev{AT}ingo-karkat{DOT}de>
+" License: GPL (http://www.gnu.org/licenses/gpl.txt)
+" Copyright (C) 2004 Rainer Thierfelder
+"
+" This program is free software; you can redistribute it and/or modify
+" it under the terms of the GNU General Public License as published by
+" the Free Software Foundation; either version 2 of the License, or
+" (at your option) any later version.
+"
+" This program is distributed in the hope that it will be useful,
+" but WITHOUT ANY WARRANTY; without even the implied warranty of
+" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+" GNU General Public License for more details.
+"
+" You should have received a copy of the GNU General Public License
+" along with this program; if not, write to the Free Software
+" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+"
+"============================================================================
+"
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if !exists("main_syntax")
+ if version < 600
+ syntax clear
+ elseif exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'confluencewiki'
+endif
+
+" Don't use standard HiLink, it will not work with included syntax files
+if version < 508
+ command! -nargs=+ ConfluenceHiLink highlight link <args>
+ command! -nargs=+ ConfluenceSynColor highlight <args>
+else
+ command! -nargs=+ ConfluenceHiLink highlight default link <args>
+ command! -nargs=+ ConfluenceSynColor highlight default <args>
+endif
+
+if v:version >= 700
+ syntax spell toplevel
+endif
+
+
+"============================================================================
+" Group Definitions:
+"============================================================================
+
+" Emphasis:
+function! s:ConfluenceCreateEmphasis(token, name)
+ execute 'syntax region confluence'.a:name.
+ \' oneline start="\(^\|[ ]\)\zs'.a:token.'\%('.a:token.'\)\@!'.
+ \'" end="'.a:token.'\ze\([,. ?!()[\]{}:\-]\|$\)"'
+endfunction
+
+syntax region confluenceFixed oneline start="\(^\|[ ]\)\zs{{" end="}}\ze\([,. ?!()[\]{}):\-]\|$\)"
+" Note: Confluence 2.10.1 ignores escaping of \{{monospaced}} (same as {{monospaced}}).
+syntax region confluenceFixed oneline start="{{" end="}}\ze\([,. ?!()[\]{}):\-]\|$\)" contained
+
+call s:ConfluenceCreateEmphasis('\*', 'Bold')
+call s:ConfluenceCreateEmphasis('_', 'Italic')
+call s:ConfluenceCreateEmphasis('??', 'Citation')
+call s:ConfluenceCreateEmphasis('-', 'Strike')
+call s:ConfluenceCreateEmphasis('+', 'Underlined')
+call s:ConfluenceCreateEmphasis('\^', 'Superscript')
+call s:ConfluenceCreateEmphasis('\~', 'Subscript')
+
+
+" Syntax:
+" Note: Confluence 2.10.1 ignores escaping of \{{monospaced}} (same as {{monospaced}}).
+"syntax match confluenceEscaping "\\\%(??\|{{\|[*_\-+^~{!\[(]\)" contains=confluenceEscapeCharacter
+syntax match confluenceEscaping "\\\%(??\|{{\|[*_\-+^~{!\[(]\)" contains=confluenceEscapeCharacter,confluenceFixed
+syntax match confluenceEscapeCharacter "\\" contained
+syntax match confluenceDelimiter "|"
+syntax match confluenceDelimiter "||[^|]" contains=confluenceTableHeader
+syntax match confluenceDelimiter "[^|]||"
+syntax match confluenceTableHeader "||\zs[^|]\+\ze||" contained contains=ALLBUT,confluenceDelimiter
+syntax match confluenceSymbols "\%(^\|\s\)\zs-\{2,3}\ze\%($\|\s\)"
+syntax match confluenceSeparator "^\s*----\s*$"
+syntax match confluenceList "^[*#]\+\ze "
+syntax match confluenceSingleList "^-\ze "
+
+"syntax match confluenceVariable "\([^!]\|^\)\zs%\w\+%"
+
+" tag support is a limited to no white spaces in tag parameters
+syntax match confluenceTagParameterName "[:|]\zs\w\+=\?[^|}]\+" contained contains=@NoSpell,confluenceTagParameterValue
+syntax match confluenceTagParameterValue "\w\+=\zs[^|}]\+" contained contains=@NoSpell
+syntax match confluenceTag "{\%(\w\|-\)\+\(:\(\w\+=\?[^|}]\+|\?\)*\)\?}" contains=@NoSpell,confluenceTagParameterName
+
+syntax region confluenceComment start="{HTMLcomment\%(:hidden\)\?}" end="{HTMLcomment}" keepend contains=TOP
+
+syntax match confluenceCodeTag "{code\(:\(\w\+=\?[^|}]\+|\?\)*\)\?}" contains=confluenceTagParameterName,@NoSpell contained
+syntax region confluenceCode start="{code\(:\(\w\+=\?[^|}]\+|\?\)*\)\?}" end="{code}" keepend contains=confluenceCodeTag
+syntax match confluenceVerbatimTag "{noformat\(:\(\w\+=\?[^|}]\+|\?\)*\)\?}" contains=confluenceTagParameterName,@NoSpell contained
+syntax region confluenceVerbatim start="{noformat\(:\(\w\+=\?[^|}]\+|\?\)*\)\?}" end="{noformat}" keepend contains=confluenceVerbatimTag
+
+syntax match confluenceQuoteMarker "^bq. " contains=@NoSpell contained
+syntax match confluenceQuote "^bq. .*$" contains=confluenceQuoteMarker
+syntax region confluenceQuote start="{quote}" end="{quote}" keepend contains=TOP
+
+syntax match confluenceHeadingMarker "^h[1-6]. " contains=@NoSpell contained
+syntax match confluenceHeading "^h[1-6]. .*$" contains=confluenceHeadingMarker
+
+" Note: Confluence 2.10.1 does not escape smileys \:) \:( \:P \:D \;)
+syntax match confluenceEmoticons "\%(^\|\s\)\zs\%(:)\|:(\|:P\|:D\|;)\)\ze\%($\|\s\)"
+syntax match confluenceEmoticons "\%(^\|[^\\]\)\zs([yni/x!+-?*])\|(\%(on\|off\))"
+
+let s:wikiWord = '\u[a-z0-9]\+\(\u[a-z0-9]\+\)\+'
+
+execute 'syntax match confluenceAnchor +^#'.s:wikiWord.'\ze\(\>\|_\)+'
+execute 'syntax match confluenceWord +\(\s\|^\)\zs\(\u\l\+\.\)\='.s:wikiWord.'\(#'.s:wikiWord.'\)\=\ze\(\>\|_\)+'
+" Regex guide: ^pre ^web name ^wikiword ^anchor ^ post
+
+" Images:
+syntax match confluenceImageParameterName "[,|]\zs\w\+=\?[^,!]\+" contained contains=confluenceImageParameterValue,@NoSpell
+syntax match confluenceImageParameterValue "\w\+=\zs[^,!]\+" contained contains=@NoSpell
+syntax match confluenceImageLink "!\zs\S[^|!]*" contained contains=@NoSpell
+syntax match confluenceImage "!\S[^!]*\S!" contains=confluenceImageLink,confluenceImageParameterName
+
+" Links:
+syntax match confluenceLink "\[[^|\]]\+\]" contains=confluenceLinkStart,confluenceLinkEnd,@NoSpell
+syntax match confluenceLink "\[[^|\]]\+|[^|\]]\+\]" contains=confluenceLinkMarker,confluenceLinkEnd,confluenceLinkLabel,@NoSpell
+syntax match confluenceLink "\[[^|\]]\+|[^|\]]\+|[^|\]]\+\]" contains=confluenceLinkMarker,confluenceLinkLabel,confluenceLinkTip,@NoSpell
+
+syntax match confluenceLinkLabel "\[[^|\]]\+\ze|" contained contains=confluenceLinkStart
+syntax match confluenceLinkTip "[^|\]]\+\]" contained contains=confluenceLinkEnd
+syntax match confluenceLinkMarker "|" contained
+syntax match confluenceLinkStart "\[" contained
+syntax match confluenceLinkEnd "\]" contained
+
+"============================================================================
+" Group Linking:
+"============================================================================
+
+ConfluenceHiLink confluenceEscapeCharacter Type
+ConfluenceHiLink confluenceHeading Title
+ConfluenceHiLink confluenceHeadingMarker Type
+ConfluenceHiLink confluenceVariable PreProc
+ConfluenceHiLink confluenceTagParameterName Type
+ConfluenceHiLink confluenceTagParameterValue Constant
+ConfluenceHiLink confluenceCodeTag PreProc
+ConfluenceHiLink confluenceVerbatimTag PreProc
+ConfluenceHiLink confluenceTag PreProc
+ConfluenceHiLink confluenceQuoteMarker Type
+ConfluenceHiLink confluenceQuote String
+ConfluenceHiLink confluenceComment Comment
+ConfluenceHiLink confluenceWord Tag
+ConfluenceHiLink confluenceAnchor PreProc
+ConfluenceHiLink confluenceVerbatim Constant
+ConfluenceHiLink confluenceCode Constant
+ConfluenceHiLink confluenceList Type
+ConfluenceHiLink confluenceSingleList Type
+ConfluenceSynColor confluenceTableHeader term=bold cterm=bold gui=bold
+
+ConfluenceHiLink confluenceDelimiter Type
+ConfluenceHiLink confluenceSeparator Type
+
+ConfluenceHiLink confluenceEmoticons Special
+ConfluenceHiLink confluenceSymbols Special
+
+" Images
+ConfluenceHiLink confluenceImageParameterName Type
+ConfluenceHiLink confluenceImageParameterValue Constant
+ConfluenceHiLink confluenceImageLink Underlined
+ConfluenceHiLink confluenceImage PreProc
+
+" Links
+ConfluenceHiLink confluenceLinkMarker Type
+ConfluenceHiLink confluenceLinkStart Type
+ConfluenceHiLink confluenceLinkEnd Type
+ConfluenceHiLink confluenceLink Underlined
+ConfluenceHiLink confluenceLinkLabel Identifier
+ConfluenceHiLink confluenceLinkTip NonText
+
+" Emphasis
+ConfluenceHiLink confluenceFixed Constant
+ConfluenceSynColor confluenceBold term=bold cterm=bold gui=bold
+ConfluenceSynColor confluenceItalic term=italic cterm=italic gui=italic
+ConfluenceHiLink confluenceCitation String
+ConfluenceHiLink confluenceStrike Special
+ConfluenceSynColor confluenceUnderlined term=underline cterm=underline gui=underline
+ConfluenceHiLink confluenceSuperscript Special
+ConfluenceHiLink confluenceSubscript Special
+
+"============================================================================}" Clean Up: {{{1
+"============================================================================
+
+delcommand ConfluenceHiLink
+delcommand ConfluenceSynColor
+
+if main_syntax == 'confluencewiki'
+ unlet main_syntax
+endif
+
+let b:current_syntax = "confluencewiki"
+
+" vim:fdm=marker

0 comments on commit c80933f

Please sign in to comment.
Something went wrong with that request. Please try again.