diff options
Diffstat (limited to 'base/vim')
-rw-r--r-- | base/vim/after/syntax/html.vim | 23 | ||||
-rw-r--r-- | base/vim/doc/.gitignore | 1 | ||||
-rw-r--r-- | base/vim/doc/git-vim.txt | 95 | ||||
-rw-r--r-- | base/vim/ftdetect/mediawiki.vim | 6 | ||||
-rw-r--r-- | base/vim/plugin/git.vim | 372 | ||||
-rw-r--r-- | base/vim/syntax/git-diff.vim | 8 | ||||
-rw-r--r-- | base/vim/syntax/git-log.vim | 3 | ||||
-rw-r--r-- | base/vim/syntax/git-status.vim | 18 | ||||
-rw-r--r-- | base/vim/syntax/mediawiki.vim | 293 |
9 files changed, 819 insertions, 0 deletions
diff --git a/base/vim/after/syntax/html.vim b/base/vim/after/syntax/html.vim new file mode 100644 index 0000000..20740b2 --- /dev/null +++ b/base/vim/after/syntax/html.vim @@ -0,0 +1,23 @@ +" Vim syntax file +" Language: HTML (version 5) +" Maintainer: Rodrigo Machado <rcmachado@gmail.com> +" URL: http://rm.blog.br/vim/syntax/html.vim +" Last Change: 2009 Aug 19 +" License: Public domain +" (but let me know if you liked it :) ) +" +" Note: This file just adds the new tags from HTML 5 +" and don't replace default html.vim syntax file + +" HTML 5 tags +syn keyword htmlTagName contained article aside audio bb canvas command datagrid +syn keyword htmlTagName contained datalist details dialog embed figure footer +syn keyword htmlTagName contained header hgroup keygen mark meter nav output +syn keyword htmlTagName contained progress time ruby rt rp section time video + +" HTML 5 arguments +syn keyword htmlArg contained autofocus placeholder min max step +syn keyword htmlArg contained contenteditable contextmenu draggable hidden item +syn keyword htmlArg contained itemprop list subject spellcheck +" this doesn't work because default syntax file alredy define a 'data' attribute +syn match htmlArg "\<\(data-[\-a-zA-Z0-9_]\+\)=" contained diff --git a/base/vim/doc/.gitignore b/base/vim/doc/.gitignore new file mode 100644 index 0000000..6e92f57 --- /dev/null +++ b/base/vim/doc/.gitignore @@ -0,0 +1 @@ +tags diff --git a/base/vim/doc/git-vim.txt b/base/vim/doc/git-vim.txt new file mode 100644 index 0000000..5fba807 --- /dev/null +++ b/base/vim/doc/git-vim.txt @@ -0,0 +1,95 @@ +*git-vim.txt* Git Bindings for Vim + +============================================================================== +CONTENTS *git-vim-contents* + + 1. Introduction.............................|git-vim| + 2. Commands.................................|git-vim-commands| + 3. Keymaps..................................|git-vim-keymaps| + 4. License..................................|git-vim-license| + +============================================================================== +1. Introduction *git-vim* + +Git-vim provides: + +* Plugin files for calling git functions from inside Vim +* Syntax files for git displays + +============================================================================== +2. Commands *git-vim-commands* + +:GitAdd <file> + git-add <file> or current file if not specified. + +:GitCommit <args> + git-commit. + +:GitStatus + Show git-status of current file or repository. + +:GitLog + Show git-log of current file or repository. + +:GitCheckout <args> + git-checkout. Completes git commits. + +:GitDiff <args> + git-diff. Completes git commits. + +:GitPull <args> + git-pull. + +:GitPullRebase + git-pull —rebase. + +:GitPush <args> + git-push. Defaults to +git push origin <current-branch>+. + +:GitCatFile <args> + git-cat-file. + +:Git <args> + Does any git command. + +:GitVimDiffMerge + Experimental. Call this command on unmerged file to enter vimdiff mode. + +:GitVimDiffMergeDone + Call this command after merging. + +============================================================================== +3. Keymaps *git-vim-keymaps* + +<Leader>gd + :GitDiff + +<Leader>gD + :GitDiff —cached + +<Leader>gs + :GitStatus + +<Leader>gl + :GitLog + +<Leader>ga + :GitAdd + +<Leader>gA + :GitAdd <cfile> + +<Leader>gc + :GitCommit + +In the git-status buffer: + +<Enter> + :GitAdd <cfile> + +============================================================================== +4. License *git-vim-license* + +The MIT License + + vim:tw=78:ts=8:ft=help diff --git a/base/vim/ftdetect/mediawiki.vim b/base/vim/ftdetect/mediawiki.vim new file mode 100644 index 0000000..2f1bc69 --- /dev/null +++ b/base/vim/ftdetect/mediawiki.vim @@ -0,0 +1,6 @@ +if has("autocmd") + au BufRead,BufNewFile *.wiki set filetype=mediawiki + au BufRead,BufNewFile *.wikipedia.org* set filetype=mediawiki + au BufRead,BufNewFile *.wikibooks.org* set filetype=mediawiki + au BufRead,BufNewFile *.wikimedia.org* set filetype=mediawiki +endif diff --git a/base/vim/plugin/git.vim b/base/vim/plugin/git.vim new file mode 100644 index 0000000..a88329b --- /dev/null +++ b/base/vim/plugin/git.vim @@ -0,0 +1,372 @@ +" Author: motemen <motemen@gmail.com> +" License: The MIT License +" URL: http://github.com/motemen/git-vim/ + +if !exists('g:git_command_edit') + let g:git_command_edit = 'new' +endif + +if !exists('g:git_bufhidden') + let g:git_bufhidden = '' +endif + +if !exists('g:git_bin') + let g:git_bin = 'git' +endif + +if !exists('g:git_author_highlight') + let g:git_author_highlight = { } +endif + +if !exists('g:git_highlight_blame') + let g:git_highlight_blame = 0 +endif + +if !exists('g:git_no_map_default') || !g:git_no_map_default + nnoremap <Leader>gd :GitDiff<Enter> + nnoremap <Leader>gD :GitDiff --cached<Enter> + nnoremap <Leader>gs :GitStatus<Enter> + nnoremap <Leader>gl :GitLog<Enter> + nnoremap <Leader>ga :GitAdd<Enter> + nnoremap <Leader>gA :GitAdd <cfile><Enter> + nnoremap <Leader>gc :GitCommit<Enter> + nnoremap <Leader>gp :GitPullRebase<Enter> + nnoremap <Leader>gb :GitBlame<Enter> +endif + +" Ensure b:git_dir exists. +function! s:GetGitDir() + if !exists('b:git_dir') + let b:git_dir = s:SystemGit('rev-parse --git-dir') + if !v:shell_error + let b:git_dir = fnamemodify(split(b:git_dir, "\n")[0], ':p') . '/' + endif + endif + return b:git_dir +endfunction + +" Returns current git branch. +" Call inside 'statusline' or 'titlestring'. +function! GitBranch() + let git_dir = <SID>GetGitDir() + + if strlen(git_dir) && filereadable(git_dir . '/HEAD') + let lines = readfile(git_dir . '/HEAD') + if !len(lines) + return '' + else + return matchstr(lines[0], 'refs/heads/\zs.\+$') + endif + else + return '' + endif +endfunction + +" List all git local branches. +function! ListGitBranches(arg_lead, cmd_line, cursor_pos) + let branches = split(s:SystemGit('branch'), '\n') + if v:shell_error + return [] + endif + + return map(branches, 'matchstr(v:val, ''^[* ] \zs.*'')') +endfunction + +" List all git commits. +function! ListGitCommits(arg_lead, cmd_line, cursor_pos) + let commits = split(s:SystemGit('log --pretty=format:%h')) + if v:shell_error + return [] + endif + + let commits = ['HEAD'] + ListGitBranches(a:arg_lead, a:cmd_line, a:cursor_pos) + commits + + if a:cmd_line =~ '^GitDiff' + " GitDiff accepts <commit>..<commit> + if a:arg_lead =~ '\.\.' + let pre = matchstr(a:arg_lead, '.*\.\.\ze') + let commits = map(commits, 'pre . v:val') + endif + endif + + return filter(commits, 'match(v:val, ''\v'' . a:arg_lead) == 0') +endfunction + +" Show diff. +function! GitDiff(args) + let git_output = s:SystemGit('diff ' . a:args . ' -- ' . s:Expand('%')) + if !strlen(git_output) + echo "No output from git command" + return + endif + + call <SID>OpenGitBuffer(git_output) + setlocal filetype=git-diff +endfunction + +" Show Status. +function! GitStatus() + let git_output = s:SystemGit('status') + call <SID>OpenGitBuffer(git_output) + setlocal filetype=git-status + nnoremap <buffer> <Enter> :GitAdd <cfile><Enter>:call <SID>RefreshGitStatus()<Enter> + nnoremap <buffer> - :silent !git reset HEAD -- =expand('<cfile>')<Enter><Enter>:call <SID>RefreshGitStatus()<Enter> +endfunction + +function! s:RefreshGitStatus() + let pos_save = getpos('.') + GitStatus + call setpos('.', pos_save) +endfunction + +" Show Log. +function! GitLog(args) + let git_output = s:SystemGit('log ' . a:args . ' -- ' . s:Expand('%')) + call <SID>OpenGitBuffer(git_output) + setlocal filetype=git-log +endfunction + +" Add file to index. +function! GitAdd(expr) + let file = s:Expand(strlen(a:expr) ? a:expr : '%') + + call GitDoCommand('add ' . file) +endfunction + +" Commit. +function! GitCommit(args) + let git_dir = <SID>GetGitDir() + + let args = a:args + + if args !~ '\v\k@<!(-a|--all)>' && s:SystemGit('diff --cached --stat') =~ '^\(\s\|\n\)*$' + let args .= ' -a' + endif + + " Create COMMIT_EDITMSG file + let editor_save = $EDITOR + let $EDITOR = '' + let git_output = s:SystemGit('commit ' . args) + let $EDITOR = editor_save + + let cur_dir = getcwd() + execute printf('%s %sCOMMIT_EDITMSG', g:git_command_edit, git_dir) + execute printf("lcd %s", cur_dir) + + setlocal filetype=git-status bufhidden=wipe + augroup GitCommit + autocmd BufWritePre <buffer> g/^#\|^\s*$/d | setlocal fileencoding=utf-8 + execute printf("autocmd BufEnter <buffer> lcd %s", cur_dir) + execute printf("autocmd BufWritePost <buffer> call GitDoCommand('commit %s -F ' . expand('%%')) | autocmd! GitCommit * <buffer>", args) + augroup END +endfunction + +" Checkout. +function! GitCheckout(args) + call GitDoCommand('checkout ' . a:args) +endfunction + +" Push. +function! GitPush(args) +" call GitDoCommand('push ' . a:args) + " Wanna see progress... + let args = a:args + if args =~ '^\s*$' + let args = 'origin ' . GitBranch() + endif + execute '!' g:git_bin 'push' args +endfunction + +" Pull. +function! GitPull(args) +" call GitDoCommand('pull ' . a:args) + " Wanna see progress... + execute '!' g:git_bin 'pull' a:args +endfunction + +" Show commit, tree, blobs. +function! GitCatFile(file) + let file = s:Expand(a:file) + let git_output = s:SystemGit('cat-file -p ' . file) + if !strlen(git_output) + echo "No output from git command" + return + endif + + call <SID>OpenGitBuffer(git_output) +endfunction + +" Show revision and author for each line. +function! GitBlame(...) + let git_output = s:SystemGit('blame -- ' . expand('%')) + if !strlen(git_output) + echo "No output from git command" + return + endif + + let l:git_blame_width = 20 + if strlen(a:1) + let l:git_blame_width = a:1 + elseif exists('g:git_blame_width') && g:git_blame_width + let l:git_blame_width = g:git_blame_width + endif + + setlocal noscrollbind + + " :/ + let git_command_edit_save = g:git_command_edit + let g:git_command_edit = 'leftabove vnew' + call <SID>OpenGitBuffer(git_output) + let g:git_command_edit = git_command_edit_save + + setlocal modifiable + silent %s/\d\d\d\d\zs \+\d\+).*// + exe 'vertical resize ' . git_blame_width + setlocal nomodifiable + setlocal nowrap scrollbind + + if g:git_highlight_blame + call s:DoHighlightGitBlame() + endif + + wincmd p + setlocal nowrap scrollbind + + syncbind +endfunction + +" Experimental +function! s:DoHighlightGitBlame() + for l in range(1, line('$')) + let line = getline(l) + let [commit, author] = matchlist(line, '\(\x\+\) (\(.\{-}\)\s* \d\d\d\d-\d\d-\d\d')[1:2] + call s:LoadSyntaxRuleFor({ 'author': author }) + endfor +endfunction + +function! s:LoadSyntaxRuleFor(params) + let author = a:params.author + let name = 'gitBlameAuthor_' . substitute(author, '\s', '_', 'g') + if (!hlID(name)) + if has_key(g:git_author_highlight, author) + execute 'highlight' name g:git_author_highlight[author] + else + let [n1, n2] = [0, 1] + for c in split(author, '\zs') + let n1 = (n1 + char2nr(c)) % 8 + let n2 = (n2 + char2nr(c) * 3) % 8 + endfor + if n1 == n2 + let n1 = (n2 + 1) % 8 + endif + execute 'highlight' name printf('ctermfg=%d ctermbg=%d', n1, n2) + endif + execute 'syntax match' name '"\V\^\x\+ (' . escape(author, '\') . '\.\*"' + endif +endfunction + +function! GitDoCommand(args) + let git_output = s:SystemGit(a:args) + let git_output = substitute(git_output, '\n*$', '', '') + if v:shell_error + echohl Error + echo git_output + echohl None + else + echo git_output + endif +endfunction + +function! s:SystemGit(args) + " workardound for MacVim, on which shell does not inherit environment + " variables + if has('mac') && &shell =~ 'sh$' + return system('EDITOR="" '. g:git_bin . ' ' . a:args) + else + return system(g:git_bin . ' ' . a:args) + endif +endfunction + +" Show vimdiff for merge. (experimental) +function! GitVimDiffMerge() + let file = s:Expand('%') + let filetype = &filetype + let t:git_vimdiff_original_bufnr = bufnr('%') + let t:git_vimdiff_buffers = [] + + topleft new + setlocal buftype=nofile + file `=':2:' . file` + call add(t:git_vimdiff_buffers, bufnr('%')) + execute 'silent read!git show :2:' . file + 0d + diffthis + let &filetype = filetype + + rightbelow vnew + setlocal buftype=nofile + file `=':3:' . file` + call add(t:git_vimdiff_buffers, bufnr('%')) + execute 'silent read!git show :3:' . file + 0d + diffthis + let &filetype = filetype +endfunction + +function! GitVimDiffMergeDone() + if exists('t:git_vimdiff_original_bufnr') && exists('t:git_vimdiff_buffers') + if getbufline(t:git_vimdiff_buffers[0], 1, '$') == getbufline(t:git_vimdiff_buffers[1], 1, '$') + execute 'sbuffer ' . t:git_vimdiff_original_bufnr + 0put=getbufline(t:git_vimdiff_buffers[0], 1, '$') + normal! jdG + update + execute 'bdelete ' . t:git_vimdiff_buffers[0] + execute 'bdelete ' . t:git_vimdiff_buffers[1] + close + else + echohl Error + echo 'There still remains conflict' + echohl None + endif + endif +endfunction + +function! s:OpenGitBuffer(content) + if exists('b:is_git_msg_buffer') && b:is_git_msg_buffer + enew! + else + execute g:git_command_edit + endif + + setlocal buftype=nofile readonly modifiable + execute 'setlocal bufhidden=' . g:git_bufhidden + + silent put=a:content + keepjumps 0d + setlocal nomodifiable + + let b:is_git_msg_buffer = 1 +endfunction + +function! s:Expand(expr) + if has('win32') + return substitute(expand(a:expr), '\', '/', 'g') + else + return expand(a:expr) + endif +endfunction + +command! -nargs=1 -complete=customlist,ListGitCommits GitCheckout call GitCheckout(<q-args>) +command! -nargs=* -complete=customlist,ListGitCommits GitDiff call GitDiff(<q-args>) +command! GitStatus call GitStatus() +command! -nargs=? GitAdd call GitAdd(<q-args>) +command! -nargs=* GitLog call GitLog(<q-args>) +command! -nargs=* GitCommit call GitCommit(<q-args>) +command! -nargs=1 GitCatFile call GitCatFile(<q-args>) +command! -nargs=? GitBlame call GitBlame(<q-args>) +command! -nargs=+ Git call GitDoCommand(<q-args>) +command! GitVimDiffMerge call GitVimDiffMerge() +command! GitVimDiffMergeDone call GitVimDiffMergeDone() +command! -nargs=* GitPull call GitPull(<q-args>) +command! GitPullRebase call GitPull('--rebase') +command! -nargs=* GitPush call GitPush(<q-args>) diff --git a/base/vim/syntax/git-diff.vim b/base/vim/syntax/git-diff.vim new file mode 100644 index 0000000..54a97ec --- /dev/null +++ b/base/vim/syntax/git-diff.vim @@ -0,0 +1,8 @@ +runtime syntax/diff.vim + +syntax match gitDiffStatLine /^ .\{-}\zs[+-]\+$/ contains=gitDiffStatAdd,gitDiffStatDelete +syntax match gitDiffStatAdd /+/ contained +syntax match gitDiffStatDelete /-/ contained + +highlight gitDiffStatAdd ctermfg=2 +highlight gitDiffStatDelete ctermfg=5 diff --git a/base/vim/syntax/git-log.vim b/base/vim/syntax/git-log.vim new file mode 100644 index 0000000..571b28a --- /dev/null +++ b/base/vim/syntax/git-log.vim @@ -0,0 +1,3 @@ +syntax match gitLogCommit +^commit \x\{40}+ + +highlight link gitLogCommit Statement diff --git a/base/vim/syntax/git-status.vim b/base/vim/syntax/git-status.vim new file mode 100644 index 0000000..4cf05e5 --- /dev/null +++ b/base/vim/syntax/git-status.vim @@ -0,0 +1,18 @@ +runtime syntax/diff.vim +setlocal filetype= + +syntax match gitStatusComment +^#.*+ contains=ALL + +syntax match gitStatusBranch +On branch .\++ + +syntax match gitStatusUndracked +\t\zs.\++ +syntax match gitStatusNewFile +\t\zsnew file: .\++ +syntax match gitStatusModified +\t\zsmodified: .\++ + +highlight link gitStatusComment Comment + +highlight link gitStatusBranch Title + +highlight link gitStatusUndracked diffOnly +highlight link gitStatusNewFile diffAdded +highlight link gitStatusModified diffChanged diff --git a/base/vim/syntax/mediawiki.vim b/base/vim/syntax/mediawiki.vim new file mode 100644 index 0000000..5551dc5 --- /dev/null +++ b/base/vim/syntax/mediawiki.vim @@ -0,0 +1,293 @@ +" mediawiki.vim (formerly named Wikipedia.vim) +" +" Vim syntax file +" Language: MediaWiki, http://www.mediawiki.org/ +" Maintainer: This syntax file needs a maintainer in order to ship +" with Vim. Please contact [[User:Unforgettableid]] if you want +" to volunteer. +" Home: http://en.wikipedia.org/wiki/Wikipedia:Text_editor_support#Vim +" Last Change: 2011 Sep 19 +" Credits: [[User:Aepd87]], [[User:Danny373]], [[User:Ingo Karkat]], et al. +" +" Published on Wikipedia in 2003-04 and declared authorless. +" +" Based on the HTML syntax file. Probably too closely based, in fact. +" There may well be name collisions everywhere, but ignorance is bliss, +" so they say. +" +" To do: plug-in support for downloading and uploading to the server. + +if !exists("main_syntax") + if version < 600 + syntax clear + elseif exists("b:current_syntax") + finish + endif + let main_syntax = "html" +endif + +syntax case ignore +if v:version >= 700 + syntax spell toplevel +endif + +" Mark illegal characters +sy match htmlError "[<>&]" + +" Tags +sy region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,@htmlPreproc +sy region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,@htmlPreproc +sy match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=@htmlPreproc +sy region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError +sy region htmlTag start=+<[^/]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster +sy match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster +sy match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster +sy match htmlTagError contained "[^>]<"ms=s+1 + +" Allowed HTML tag names +sy keyword htmlTagName contained big blockquote br caption center cite code +sy keyword htmlTagName contained dd del div dl dt font hr ins li +sy keyword htmlTagName contained ol p pre rb rp rt ruby s small span strike sub +sy keyword htmlTagName contained sup table td th tr tt ul var +sy match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\)\>" +" Allowed Wiki tag names +sy keyword htmlTagName contained math nowiki references source syntaxhighlight + +" Allowed arg names +sy keyword htmlArg contained align lang dir width height nowrap bgcolor clear +sy keyword htmlArg contained noshade cite datetime size face color type start +sy keyword htmlArg contained value compact summary border frame rules +sy keyword htmlArg contained cellspacing cellpadding valign char charoff +sy keyword htmlArg contained colgroup col span abbr axis headers scope rowspan +sy keyword htmlArg contained colspan id class name style title + +" Special characters +sy match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};" + +" Comments +sy region htmlComment start=+<!+ end=+>+ contains=htmlCommentPart,htmlCommentError +sy match htmlCommentError contained "[^><!]" +sy region htmlCommentPart contained start=+--+ end=+--\s*+ contains=@htmlPreProc +sy region htmlComment start=+<!DOCTYPE+ keepend end=+>+ + +if !exists("html_no_rendering") + sy cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,@htmlPreproc + + sy region htmlBold start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic + sy region htmlBold start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic + sy region htmlBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic + sy region htmlBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlBoldItalicUnderline + sy region htmlBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlBoldItalicUnderline + sy region htmlBoldUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop + sy region htmlBoldUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop + sy region htmlBoldItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic + + sy region htmlUnderline start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic + sy region htmlUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlUnderlineBoldItalic + sy region htmlUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlUnderlineBoldItalic + sy region htmlUnderlineItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlUnderlineItalicBold + sy region htmlUnderlineItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop,htmlUnderlineItalicBold + sy region htmlUnderlineItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop + sy region htmlUnderlineItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop + sy region htmlUnderlineBoldItalic contained start="<i\>" end="</i>"me=e-4 contains=@htmlTop + sy region htmlUnderlineBoldItalic contained start="<em\>" end="</em>"me=e-5 contains=@htmlTop + + sy region htmlItalic start="<i\>" end="</i>"me=e-4 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline + sy region htmlItalic start="<em\>" end="</em>"me=e-5 contains=@htmlTop + sy region htmlItalicBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlItalicBoldUnderline + sy region htmlItalicBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlItalicBoldUnderline + sy region htmlItalicBoldUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop + sy region htmlItalicUnderline contained start="<u\>" end="</u>"me=e-4 contains=@htmlTop,htmlItalicUnderlineBold + sy region htmlItalicUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop + sy region htmlItalicUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop + + sy region htmlH1 start="<h1\>" end="</h1>"me=e-5 contains=@htmlTop + sy region htmlH2 start="<h2\>" end="</h2>"me=e-5 contains=@htmlTop + sy region htmlH3 start="<h3\>" end="</h3>"me=e-5 contains=@htmlTop + sy region htmlH4 start="<h4\>" end="</h4>"me=e-5 contains=@htmlTop + sy region htmlH5 start="<h5\>" end="</h5>"me=e-5 contains=@htmlTop + sy region htmlH6 start="<h6\>" end="</h6>"me=e-5 contains=@htmlTop +endif + + +" No htmlTop and wikiPre inside HTML preformatted areas, because +" MediaWiki renders everything in there literally (HTML tags and +" entities, too): <pre> tags work as the combination of <nowiki> and +" the standard HTML <pre> tag: the content will preformatted, and it +" will not be parsed, but shown as in the wikitext source. +" +" With wikiPre, indented lines would be rendered differently from +" unindented lines. +sy match htmlPreTag /<pre>/ contains=htmlTag +sy match htmlPreEndTag /<\/pre>/ contains=htmlEndTag +sy match wikiNowikiTag /<nowiki>/ contains=htmlTag +sy match wikiNowikiEndTag /<\/nowiki>/ contains=htmlEndTag +sy match wikiSourceTag /<source\s\+[^>]\+>/ contains=htmlTag +sy match wikiSourceEndTag /<\/source>/ contains=htmlEndTag +sy match wikiSyntaxHLTag /<syntaxhighlight\s\+[^>]\+>/ contains=htmlTag +sy match wikiSyntaxHLEndTag /<\/syntaxhighlight>/ contains=htmlEndTag + +" Note: Cannot use 'start="<pre>"rs=e', so still have the <pre> tag +" highlighted correctly via separate sy-match. Unfortunately, this will +" also highlight <pre> tags inside the preformatted region. +sy region htmlPre start="<pre>" end="<\/pre>"me=e-6 contains=htmlPreTag +sy region wikiNowiki start="<nowiki>" end="<\/nowiki>"me=e-9 contains=wikiNowikiTag +sy region wikiSource start="<source\s\+[^>]\+>" keepend end="<\/source>"me=e-9 contains=wikiSourceTag +sy region wikiSyntaxHL start="<syntaxhighlight\s\+[^>]\+>" keepend end="<\/syntaxhighlight>"me=e-18 contains=wikiSyntaxHLTag + +sy include @TeX syntax/tex.vim +sy region wikiTeX matchgroup=htmlTag start="<math>" end="<\/math>" contains=@texMathZoneGroup,wikiNowiki,wikiNowikiEndTag +sy region wikiRef matchgroup=htmlTag start="<ref>" end="<\/ref>" contains=wikiNowiki,wikiNowikiEndTag + +sy cluster wikiTop contains=@Spell,wikiLink,wikiNowiki,wikiNowikiEndTag + +sy region wikiItalic start=+'\@<!'''\@!+ end=+''+ oneline contains=@wikiTop,wikiItalicBold +sy region wikiBold start=+'''+ end=+'''+ oneline contains=@wikiTop,wikiBoldItalic +sy region wikiBoldAndItalic start=+'''''+ end=+'''''+ oneline contains=@wikiTop + +sy region wikiBoldItalic contained start=+'\@<!'''\@!+ end=+''+ oneline contains=@wikiTop +sy region wikiItalicBold contained start=+'''+ end=+'''+ oneline contains=@wikiTop + +sy region wikiH1 start="^=" end="=" oneline contains=@wikiTop +sy region wikiH2 start="^==" end="==" oneline contains=@wikiTop +sy region wikiH3 start="^===" end="===" oneline contains=@wikiTop +sy region wikiH4 start="^====" end="====" oneline contains=@wikiTop +sy region wikiH5 start="^=====" end="=====" oneline contains=@wikiTop +sy region wikiH6 start="^======" end="======" oneline contains=@wikiTop + +sy region wikiLink start="\[\[" end="\]\]\(s\|'s\|es\|ing\|\)" oneline contains=wikiLink,wikiNowiki,wikiNowikiEndTag + +sy region wikiLink start="\[http:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag +sy region wikiLink start="\[https:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag +sy region wikiLink start="\[ftp:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag +sy region wikiLink start="\[gopher:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag +sy region wikiLink start="\[news:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag +sy region wikiLink start="\[mailto:" end="\]" oneline contains=wikiNowiki,wikiNowikiEndTag + +sy region wikiTemplate start="{{" end="}}" contains=wikiNowiki,wikiNowikiEndTag + +sy match wikiParaFormatChar /^[\:|\*|;|#]\+/ +sy match wikiParaFormatChar /^-----*/ +sy match wikiPre /^\ .*$/ contains=wikiNowiki,wikiNowikiEndTag + + +" HTML highlighting + +if version < 508 + command! -nargs=+ HtmlHiLink hi link <args> +else + command! -nargs=+ HtmlHiLink hi def link <args> +endif + +if version >= 508 || !exists("did_html_syn_inits") + HtmlHiLink htmlTag Function + HtmlHiLink htmlEndTag Identifier + HtmlHiLink htmlArg Type + HtmlHiLink htmlTagName htmlStatement + HtmlHiLink htmlSpecialTagName Exception + HtmlHiLink htmlValue String + HtmlHiLink htmlSpecialChar Special + + if !exists("html_no_rendering") + HtmlHiLink htmlTitle Title + HtmlHiLink htmlH1 htmlTitle + HtmlHiLink htmlH2 htmlTitle + HtmlHiLink htmlH3 htmlTitle + HtmlHiLink htmlH4 htmlTitle + HtmlHiLink htmlH5 htmlTitle + HtmlHiLink htmlH6 htmlTitle + + HtmlHiLink htmlPreProc PreProc + HtmlHiLink htmlHead htmlPreProc + HtmlHiLink htmlPreProcAttrName htmlPreProc + HtmlHiLink htmlPreStmt htmlPreProc + + HtmlHiLink htmlSpecial Special + HtmlHiLink htmlCssDefinition htmlSpecial + HtmlHiLink htmlEvent htmlSpecial + HtmlHiLink htmlSpecialChar htmlSpecial + + HtmlHiLink htmlComment Comment + HtmlHiLink htmlCommentPart htmlComment + HtmlHiLink htmlCssStyleComment htmlComment + + HtmlHiLink htmlString String + HtmlHiLink htmlPreAttr htmlString + HtmlHiLink htmlValue htmlString + + HtmlHiLink htmlError Error + HtmlHiLink htmlBadArg htmlError + HtmlHiLink htmlBadTag htmlError + HtmlHiLink htmlCommentError htmlError + HtmlHiLink htmlPreError htmlError + HtmlHiLink htmlPreProcAttrError htmlError + HtmlHiLink htmlTagError htmlError + + HtmlHiLink htmlStatement Statement + + HtmlHiLink htmlConstant Constant + + HtmlHiLink htmlBoldItalicUnderline htmlBoldUnderlineItalic + HtmlHiLink htmlUnderlineItalicBold htmlBoldUnderlineItalic + HtmlHiLink htmlUnderlineBoldItalic htmlBoldUnderlineItalic + HtmlHiLink htmlItalicBoldUnderline htmlBoldUnderlineItalic + HtmlHiLink htmlItalicUnderlineBold htmlBoldUnderlineItalic + + HtmlHiLink htmlItalicBold htmlBoldItalic + HtmlHiLink htmlItalicUnderline htmlUnderlineItalic + HtmlHiLink htmlUnderlineBold htmlBoldUnderline + + HtmlHiLink htmlLink Underlined + + if !exists("html_my_rendering") + hi def htmlBold term=bold cterm=bold gui=bold + hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline + hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic + hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline + hi def htmlUnderline term=underline cterm=underline gui=underline + hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline + hi def htmlItalic term=italic cterm=italic gui=italic + endif + + endif " !exists("html_no_rendering") + + if version < 508 + let did_html_syn_inits = 1 + endif + +endif " version >= 508 || !exists("did_html_syn_inits") + +" Wiki highlighting + +HtmlHiLink wikiItalic htmlItalic +HtmlHiLink wikiBold htmlBold +HtmlHiLink wikiBoldItalic htmlBoldItalic +HtmlHiLink wikiItalicBold htmlBoldItalic +HtmlHiLink wikiBoldAndItalic htmlBoldItalic + +HtmlHiLink wikiH1 htmlTitle +HtmlHiLink wikiH2 htmlTitle +HtmlHiLink wikiH3 htmlTitle +HtmlHiLink wikiH4 htmlTitle +HtmlHiLink wikiH5 htmlTitle +HtmlHiLink wikiH6 htmlTitle + +HtmlHiLink wikiLink htmlLink +HtmlHiLink wikiTemplate htmlSpecial +HtmlHiLink wikiParaFormatChar htmlSpecial +HtmlHiLink wikiPre htmlConstant +HtmlHiLink wikiRef htmlComment + +HtmlHiLink wikiSource wikiPre +HtmlHiLink wikiSyntaxHL wikiPre + + +let b:current_syntax = "html" + +delcommand HtmlHiLink + +if main_syntax == "html" + unlet main_syntax +endif + +" vim: set et sts=2 sw=2: |