-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added syntax for confluence wiki markup.
- Loading branch information
1 parent
a48ebe4
commit 7b85e10
Showing
1 changed file
with
205 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |