commit 1833ec1ad9b9cb53c13ea8e958e8d4d825fbf138
parent a9580e05e1a9959cc5e8ebb763a363f67e5d10bd
Author: Maxim Kim <habamax@gmail.com>
Date: Tue, 20 Jan 2009 00:00:00 +0000
Version 0.5.3
* FIX: Fixed :VimwikiRenameWord. Error when g:vimwiki_home had whitespaces in path.
* FIX: :VimwikiSplitWord and :VimwikiVSplitWord didn't work.
Diffstat:
D | vimwiki_0_5_2.vba | | | 2038 | ------------------------------------------------------------------------------- |
A | vimwiki_0_5_3.vba | | | 2044 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
2 files changed, 2044 insertions(+), 2038 deletions(-)
diff --git a/vimwiki_0_5_2.vba b/vimwiki_0_5_2.vba
@@ -1,2038 +0,0 @@
-" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.
-UseVimball
-finish
-doc\vimwiki.txt [[[1
-602
-*vimwiki.txt* A Personal Wiki for Vim
-
- __ __ ______ __ __ ______ __ __ ______ ~
- /\ \/\ \/\__ _\ /'\_/`\/\ \ __/\ \/\__ _\ /\ \/\ \ /\__ _\ ~
- \ \ \ \ \/_/\ \/ /\ \ \ \/\ \ \ \/_/\ \/ \ \ \/'/'\/_/\ \/ ~
- \ \ \ \ \ \ \ \ \ \ \__\ \ \ \ \ \ \ \ \ \ \ \ \ , < \ \ \ ~
- \ \ \_/ \ \_\ \__\ \ \_/\ \ \ \_/ \_\ \ \_\ \__\ \ \\`\ \_\ \__ ~
- \ `\___/ /\_____\\ \_\\ \_\ `\___x___/ /\_____\\ \_\ \_\ /\_____\~
- `\/__/ \/_____/ \/_/ \/_/'\/__//__/ \/_____/ \/_/\/_/ \/_____/~
-
-
- Let the help begins ...~
-
- Version: 0.5.2 ~
-
-==============================================================================
-CONTENTS *vimwiki-contents*
-
- 1. Intro ...................................|vimwiki|
- 2. Prerequisites ...........................|vimwiki-prerequisites|
- 3. Mappings ................................|vimwiki-mappings|
- 3.1. Global mappings .....................|vimwiki-global-mappings|
- 3.2. Local mappings ......................|vimwiki-local-mappings|
- 4. Commands ................................|vimwiki-commands|
- 4.1. Global commands .....................|vimwiki-global-commands|
- 4.2. Local commands ......................|vimwiki-local-commands|
- 5. Wiki syntax .............................|vimwiki-syntax|
- 5.1. Typeface ............................|vimwiki-typeface|
- 5.2. Links ...............................|vimwiki-links|
- 5.3. Headers .............................|vimwiki-headers|
- 5.4. Paragraphs...........................|vimwiki-paragraphs|
- 5.5. Lists ...............................|vimwiki-lists|
- 5.6. Tables ..............................|vimwiki-tables|
- 5.7. Pre .................................|vimwiki-pre|
- 6. Options .................................|vimwiki-options|
- 7. Help ....................................|vimwiki-help|
- 8. Author ..................................|vimwiki-author|
- 9. Changelog ...............................|vimwiki-changelog|
- 10. License ................................|vimwiki-license|
-
-
-==============================================================================
-1. Intro *vimwiki*
-
-Vimwiki being a personal wiki for Vim allows you to organize text information
-using hyper links. To do a quick start add the following to your vimrc: >
- :let g:vimwiki_home = "~/mywiki/"
-
-Change "~/mywiki/" to whatever path you prefer. Make sure it exists and you
-can read and write to that path.
-
-Now restart Vim and press <Leader>ww to go to your index wiki file.
-Feed it with the following example (copy&paste without and between ---) :
-
----
-! My knowledge base
- * MyUrgentTasks -- things to be done _yesterday_!!!
- * ProjectGutenberg -- good books are power.
- * MusicILike, MusicIHate.
----
-
-Notice that ProjectGutenberg, MyUrgentTasks, MusicILike and MusicIHate
-highlighted as errors. These WikiWords (WikiWord or WikiPage --
-capitalized word connected with other capitalized words) do not exist yet.
-
-Place cursor on ProjectGutenberg and press Enter. Now you are in
-ProjectGutenberg. Edit and save it, then press Backspace to return
-to previous WikiPage. You should see the difference in highlighting now.
-
-Now begin to add your own information ...
-
-==============================================================================
-2. Prerequisites *vimwiki-prerequisites*
-
-Make sure you have these settings in your vimrc file: >
- set nocompatible
- filetype plugin on
- syntax on
-
-Without them Vimwiki will not work properly.
-
-
-==============================================================================
-3. Mappings *vimwiki-mappings*
-
-There are global and local mappings in vimwiki.
-
-------------------------------------------------------------------------------
-3.1. Global mappings *vimwiki-global-mappings*
-
-<Leader>ww or <Plug>VimwikiGoHome
- Open vimwiki's main file.
- To redefine: >
- :map <Leader>w <Plug>VimwikiGoHome
-<
-See also|:VimwikiGoHome|
-
-<Leader>wt or <Plug>VimwikiTabGoHome
- Open vimwiki's main file in a new tab.
- To redefine: >
- :map <Leader>t <Plug>VimwikiTabGoHome
-<
-See also|:VimwikiTabGoHome|
-
-<Leader>wh or <Plug>VimwikiExploreHome
- Open vimwiki's home directory.
- To redefine: >
- :map <Leader>h <Plug>VimwikiExploreHome
-<
-See also|:VimwikiExploreHome|
-
-------------------------------------------------------------------------------
-3.1. Local mappings *vimwiki-local-mappings*
-
-Normal mode (Keyboard):~
-<CR> Follow/Create WikiWord.
- Maps to|:VimwikiFollowWord|.
-
-<S-CR> Split and follow/create WikiWord
- Maps to|:VimwikiSplitWord|.
-
-<C-CR> Vertical split and follow/create WikiWord
- Maps to|:VimwikiVSplitWord|.
-
-<Backspace> Go back to previous WikiWord
- Maps to|:VimwikiGoBackWord|.
-
-<Tab> Find next WikiWord
- Maps to|:VimwikiNextWord|.
-
-<S-Tab> Find previous WikiWord
- Maps to|:VimwikiPrevWord|.
-
-<Leader>wd Delete WikiWord you are in.
- Maps to|:VimwikiDeleteWord|.
-
-<Leader>wr Rename WikiWord you are in.
- Maps to|:VimwikiRenameWord|.
-
-
-Normal mode (Mouse): ~
-<2-LeftMouse> Follow/Create WikiWord
-<S-2-LeftMouse> Split and follow/create WikiWord
-<C-2-LeftMouse> Vertical split and follow/create WikiWord
-<RightMouse><LeftMouse> Go back to previous WikiWord
-
-Note: <2-LeftMouse> is just left double click.
-
-
-==============================================================================
-4. Commands *vimwiki-commands*
-
-------------------------------------------------------------------------------
-4.1. Global Commands *vimwiki-global-commands*
-
-*:VimwikiGoHome*
- Open vimwiki's main file.
-
-*:VimwikiTabGoHome*
- Open vimwiki's main file in a new tab.
-
-*:VimwikiExploreHome*
- Open vimwiki's home directory.
-
-------------------------------------------------------------------------------
-4.2. Local commands *vimwiki-local-commands*
-
-*:VimwikiFollowWord*
- Follow/create WikiWord.
-
-*:VimwikiGoBackWord*
- Go back to previous WikiWord you come from.
-
-*:VimwikiSplitWord*
- Split and follow/create WikiWord.
-
-*:VimwikiVSplitWord*
- Vertical split and follow/create WikiWord.
-
-*:VimwikiNextWord*
- Find next WikiWord.
-
-*:VimwikiPrevWord*
- Find previous WikiWord.
-
-*:VimwikiDeleteWord*
- Delete WikiWord you are in.
-
-*:VimwikiRenameWord*
- Rename WikiWord you are in.
-
-*:Vimwiki2HTML*
- Convert current WikiPage to HTML.
-
-*:VimwikiAll2HTML*
- Convert all WikiPages to HTML.
-
-Note that in order 2HTML commands to work you should set up & create html
-directory. By default it is g:vimwiki_home/html/ so just go to g:vimwiki_home
-and create html directory there.
-
-
-==============================================================================
-5. Wiki syntax *vimwiki-syntax*
-
-There are a lot of different wikies out there. Most of them have their own
-syntax and vimwiki is not an exception here. Default vimwiki's syntax is quite
-similar to what google's wiki has. With the noticeable difference in headings
-markup.
-
-As for MediaWiki's syntax -- the most used wiki syntax in the world -- it is
-not that convenient for non English keyboard layouts to emphasize text as it
-uses a lot of '''''' to do it. You have to switch layouts every time you want
-some bold non English text. This is the answer to "Why not MediaWiki?"
-
-Nevertheless, there is MediaWiki syntax file included in the distribution (it
-doesn't have all the fancy stuff original MediaWiki syntax has though). As the
-Google's one. To switch add the following to your vimrc: >
- let g:vimwiki_syntax = "media"
-or: >
- let g:vimwiki_syntax = "google"
-
-
-------------------------------------------------------------------------------
-5.1. Typeface *vimwiki-typeface*
-
-There are a few typefaces that gives you a bit of control on how your
-text should be decorated: >
- *bold text*
- _italic text_
- ~~strikeout text~~
- `code (no syntax) text`
- super^script^
- sub,,script,,
-
-------------------------------------------------------------------------------
-5.2. Links *vimwiki-links*
-
-Internal links:
- CapitalizedWordsConnected
-or:
- [[This is a link]]
-
-External links effects are visible after export to HTML.
-Plain link:
- http://code.google.com/p/vimwiki
-
-Link with description
- [http://habamax.ru/blog habamax home page]
-
-Image link is the link with one of jpg, png or gif endings.
-Plain image link:
- http://someaddr.com/picture.jpg
-
-Image thumbnail link:
- [http://someaddr.com/bigpicture.jpg http://someaddr.com/thumbnail.jpg]
-
-------------------------------------------------------------------------------
-5.3. Headers *vimwiki-headers*
-! Header level 1
-!! Header level 2
-!!! Header level 3
-!!!! Header level 4
-!!!!! Header level 5
-!!!!!! Header level 6
-
-------------------------------------------------------------------------------
-5.4. Paragraphs *vimwiki-paragraphs*
-
-Every line started from column 0 (zero) is a paragraph if it is not a list,
-table or preformatted text.
-
-------------------------------------------------------------------------------
-5.5. Lists *vimwiki-lists*
-Indent lists with at least one space:
- * Bulleted list item 1
- * Bulleted list item 2
- * Bulleted list sub item 1
- * Bulleted list sub item 2
- * more ...
- * and more ...
- * ...
- * Bulleted list sub item 3
- * etc.
-
-The same goes for numbered lists:
- # Numbered list item 1
- # Numbered list item 2
- # Numbered list sub item 1
- # Numbered list sub item 2
- # more ...
- # and more ...
- # ...
- # Numbered list sub item 3
- # etc.
-
-It is possible to mix bulleted and numbered lists.
-
-------------------------------------------------------------------------------
-5.6. Tables *vimwiki-tables*
-
-Tables are created by entering the content of each cell separated by ||
-delimiters. You can insert other inline wiki syntax in table cells, including
-typeface formatting and links.
-For example:
-
-||*Year*s||*Temperature (low)*||*Temperature (high)*||
-||1900 ||-10 ||25 ||
-||1910 ||-15 ||30 ||
-||1920 ||-10 ||32 ||
-||1930 ||_N/A_ ||_N/A_ ||
-||1940 ||-2 ||40 ||
-
-
-------------------------------------------------------------------------------
-5.7. Pre *vimwiki-pre*
-
-If the line started from whitespace and is not a list it is "preformatted" text.
-For example: >
-
- Tyger! Tyger! burning bright
- In the forests of the night,
- What immortal hand or eye
- Could frame thy fearful symmetry?
- In what distant deeps or skies
- Burnt the fire of thine eyes?
- On what wings dare he aspire?
- What the hand dare sieze the fire?
- ...
- ...
-
-Or use {{{ and }}} to define pre:
-{{{ >
- Tyger! Tyger! burning bright
- In the forests of the night,
- What immortal hand or eye
- Could frame thy fearful symmetry?
- In what distant deeps or skies
- Burnt the fire of thine eyes?
- On what wings dare he aspire?
- What the hand dare sieze the fire?
-}}}
-
-It could be started from column 0.
-
-
-==============================================================================
-6. Options *vimwiki-options*
-
-------------------------------------------------------------------------------
-Default: "" *g:vimwiki_home*
-Values: path
-
-Set your wiki files home directory: >
- let g:vimwiki_home = "~/mywiki/"
-
-Change "~/mywiki/" to whatever you prefer -- "d:/vimwiki/" for example.
-Make sure it exists and you can read and write to that path.
-
-Note: this option is a MUST.
-
-------------------------------------------------------------------------------
-Default: g:vimwiki_home."html" *g:vimwiki_home_html*
-Values: path
-
-Set up directory for wiki files converted to HTML: >
- let g:vimwiki_home_html = '~/my wiki/html/'
-
-------------------------------------------------------------------------------
-Default: "index" *g:vimwiki_index*
-Values: filename without extension
-
-If you don't like index.wiki as the main wiki file change it: >
- let g:vimwiki_index = "homesweethome"
-
-Note: there is NO .wiki extension
-
-------------------------------------------------------------------------------
-Default: ".wiki" *g:vimwiki_ext*
-Values: file extension
-
-If you don't want .wiki extension change it: >
- let g:vimwiki_ext = ".shmiki"
-
-
-------------------------------------------------------------------------------
-Default: "default" *g:vimwiki_syntax*
-Values: "default", "media" or "google"
-
-You can use different markup languages (currently default vimwiki, google and
-MediaWiki) but only vimwiki's default markup could be converted to HTML at the
-moment.
-To use MediaWiki's wiki markup: >
- let g:vimwiki_syntax = "media"
-
-To use google's wiki markup: >
- let g:vimwiki_syntax = "google"
-
-------------------------------------------------------------------------------
-Default: "A-ZА-Я" *g:vimwiki_upper*
-Values: Upper letters (ranges)
-
-This affects WikiWord detection.
-By default WikiWord detection uses English and Russian letters.
-You can set up your own: >
- let g:vimwiki_upper="A-Z"
-
-------------------------------------------------------------------------------
-Default: "a-zа-я" *g:vimwiki_lower*
-Values: Lower letters ranges
-
-See |g:vimwiki_upper|: >
- let g:vimwiki_lower="a-z"
-
-------------------------------------------------------------------------------
-Default: 1 *g:vimwiki_smartCR*
-Values: 0, 1, 2
-
-This option affects the behaviour of <CR> in INSERT mode while adding new
-|vimwiki-lists|items.
-
-let g:vimwiki_smartCR=1~
-Imagine you have the following list (cursor stands on | ): >
- * List item 1
- * List item 2 |
-
-Now if you press <CR>: >
- * List item 1
- * List item 2
- * |
-
-New list item appear. Now press <CR> again: >
- * List item 1
- * List item 2
- |
-
-It is disappeared. That's it. Try it with cursor on any part of the list. It
-also works for |o| and |O|.
-
-let g:vimwiki_smartCR=2~
-It only adds new list item. Nothing more. It uses Vim comments facility such
-as: >
- :h comments
- :h formatoptions.
-
-To turn it off: >
- let g:vimwiki_smartCR = 0
-
-------------------------------------------------------------------------------
-Default: 1 *g:vimwiki_maxhi*
-Values: 0, 1
-
-Non-existent WikiWord highlighting could be quite slow and if you don't want
-it set g:vimwiki_maxhi to 0: >
- let g:vimwiki_maxhi = 0
-
-------------------------------------------------------------------------------
-Default: "_" *g:vimwiki_stripsym*
-Values: symbol
-
-Change strip symbol -- in Windows you cannot use /*?<>:" in file names so
-vimwiki replaces them with symbol given below: (_ is default): >
- let g:vimwiki_stripsym = '_'
-
-------------------------------------------------------------------------------
-Default: "split" *g:vimwiki_gohome*
-Values: split, vsplit, tabe
-
-This option controls the way |:VimwikiGoHome| command works.
-For instance you have 'No write since last change' buffer. After <Leader>ww
-(or :VimwikiGoHome) vimwiki index file will be splitted with it. Or vertically
-splitted. Or opened in a new tab.
-
-
-==============================================================================
-7. Help *vimwiki-help*
-
-As you could see I am not native English speaker (not a writer as well).
-Please send me correct phrases instead of that incorrect stuff I have used
-here.
-
-Any help is really appreciated!
-
-==============================================================================
-8. Author *vimwiki-author*
-
-I live in Moscow and you may believe me -- there are no polar bears (no brown
-too) here in the streets.
-
-I do not do programming for a living. So don't blame me for an ugly
-ineffective code. :)
-
-Maxim Kim
-e-mail: habamax@gmail.com~
-
-Vimwiki's website: http://code.google.com/p/vimwiki/
-Vim plugins website: http://www.Vim.org/scripts/script.php?script_id=2226
-
-==============================================================================
-9. Changelog *vimwiki-changelog*
-
-0.5.2
- * [new] Added |:VimwikiGoHome|, |:VimwikiTabGoHome| and
- |:VimwikiExploreHome| commands.
- * [new] Added <Leader>wt mapping to open vimwiki index file in a new tab.
- * [new] Added g:vimwiki_gohome option that controls how|:VimwikiGoHome|
- works when current buffer is changed. (Thanks Timur Zaripov)
- * [fix] Fixed |:VimwikiRenameWord|. Very bad behaviour when autochdir isn't
- set up.
- * [fix] Fixed commands :Wiki2HTML and :WikiAll2HTML to be available only for
- vimwiki buffers.
- * [fix] Renamed :Wiki2HTML and :WikiAll2HTML to |:Vimwiki2HTML| and
- |:VimwikiAll2HTML| commands.
- * [fix] Help file corrections.
-
-0.5.1
- * [new] This help is created.
- * [new] Now you can fold headers.
- * [new] <Plug>VimwikiGoHome and <Plug>VimwikiExploreHome were added.
- * [fix] Bug with {{{HelloWikiWord}}} export to HTML is fixed.
- * [del] Sync option removed from: Syntax highlighting for preformatted text
- {{{ }}}.
-
-0.5
- * [new] vimwiki default markup to HTML conversion improved.
- * [new] Added basic GoogleWiki and MediaWiki markup languages.
- * [new] Chinese [[complex wiki words]].
-
-0.4
- * [new] vimwiki=>HTML converter in plain Vim language.
- * [new] Plugin autoload.
-
-0.3.4
- * [fix] Backup files (.wiki~) caused a bunch of errors while opening wiki
- files.
-
-0.3.3
- * FIXED: [[wiki word with dots at the end...]] didn't work.
- * [new] Added error handling for delete wiki word function.
- * [new] Added keybindings o and O for list items when g:vimwiki_smartCR=1.
- * [new] Added keybinding <Leader>wh to visit wiki home directory.
-
-0.3.2
- * [fix] Renaming -- error if complex wiki word contains %.
- * [fix] Syntax highlighting for preformatted text {{{ }}}. Sync option
- added.
- * [fix] smartCR bug fix.
-
-0.3.1
- * [fix] Renaming -- [[hello world?]] to [[hello? world]] links are not
- updated.
- * [fix] Buffers menu is a bit awkward after renaming.
- * [new] Use mouse to follow links. Left double-click to follow WikiWord,
- Rightclick then Leftclick to go back.
-
-0.3
- * [new] Highlight non-existent WikiWords.
- * [new] Delete current WikiWord (<Leader>wd).
- * [new] g:vimwiki_smartCR=2 => use Vim comments (see :h comments :h
- formatoptions) feature to deal with list items. (thx -- Dmitry Alexandrov)
- * [new] Highlight TODO:, DONE:, FIXED:, FIXME:.
- * [new] Rename current WikiWord -- be careful on Windows you cannot rename
- wikiword to WikiWord. After renaming update all links to that renamed
- WikiWord.
- * [fix] Bug -- do not duplicate WikiWords in wiki history.
- * [fix] after renaming [[wiki word]] twice buffers are not deleted.
- * [fix] when renaming from [[wiki word]] to WikiWord result is [[WikiWord]]
- * [fix] more than one complex words on one line is bugging each other when
- try go to one of them. [[bla bla bla]] [[dodo dodo dodo]] becomes
- bla bla bla]] [[dodo dodo dodo.
-
-
-0.2.2
- * [new] Added keybinding <S-CR> -- split WikiWord
- * [new] Added keybinding <C-CR> -- vertical split WikiWord
-
-0.2.1
- * [new] Install on Linux now works.
-
-0.2
- * [new] Added part of Google's Wiki syntax.
- * [new] Added auto insert # with ENTER.
- * [new] On/Off auto insert bullet with ENTER.
- * [new] Strip [[complex wiki name]] from symbols that cannot be used in file
- names.
- * [new] Links to non-wiki files. Non wiki files are files with extensions ie
- [[hello world.txt]] or [[my homesite.html]]
-
-0.1
- * First public version.
-
-==============================================================================
-10. License *vimwiki-license*
-
-GNU General Public License v2
-http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-
-To be frank I didn't read it myself. It is not that easy reading. But I hope
-it's free enough to suit your needs.
-
-
- vim:tw=78:ts=8:ft=help:fdm=marker:
-plugin\vimwiki.vim [[[1
-73
-" VimWiki plugin file
-" Language: Wiki
-" Author: Maxim Kim (habamax at gmail dot com)
-" Home: http://code.google.com/p/vimwiki/
-" Filenames: *.wiki
-" Last Change: 19.01.2009 14:21
-" Version: 0.5.2
-
-
-if exists("loaded_vimwiki") || &cp
- finish
-endif
-let loaded_vimwiki = 1
-
-let s:save_cpo = &cpo
-set cpo&vim
-
-function! s:default(varname,value)
- if !exists('g:vimwiki_'.a:varname)
- let g:vimwiki_{a:varname} = a:value
- endif
-endfunction
-
-"" Could be redefined by users
-call s:default('home',"")
-call s:default('index',"index")
-call s:default('ext','.wiki')
-call s:default('upper','A-ZА-Я')
-call s:default('lower','a-zа-я')
-call s:default('other','0-9_')
-call s:default('maxhi','1')
-call s:default('stripsym','_')
-call s:default('smartCR',1)
-call s:default('home_html',g:vimwiki_home."html/")
-call s:default('syntax','default')
-call s:default('gohome','split')
-
-call s:default('history',[])
-
-let upp = g:vimwiki_upper
-let low = g:vimwiki_lower
-let oth = g:vimwiki_other
-let nup = low.oth
-let nlo = upp.oth
-let any = upp.nup
-
-let g:vimwiki_word1 = '\C\<['.upp.']['.nlo.']*['.low.']['.nup.']*['.upp.']['.any.']*\>'
-" let g:vimwiki_word2 = '\[\[['.upp.low.oth.'[:punct:][:space:]]\{-}\]\]'
-let g:vimwiki_word2 = '\[\[[^\]]\+\]\]'
-let g:vimwiki_rxWikiWord = g:vimwiki_word1.'\|'.g:vimwiki_word2
-
-execute 'autocmd! BufNewFile,BufReadPost,BufEnter *'.g:vimwiki_ext.' set ft=vimwiki'
-
-
-command! VimwikiGoHome call vimwiki#WikiGoHome()
-command! VimwikiTabGoHome tabedit <bar> call vimwiki#WikiGoHome()
-command! VimwikiExploreHome execute "Explore ".g:vimwiki_home
-
-if !hasmapto('<Plug>VimwikiGoHome')
- map <silent><unique> <Leader>ww <Plug>VimwikiGoHome
-endif
-noremap <unique><script> <Plug>VimwikiGoHome :VimwikiGoHome<CR>
-
-if !hasmapto('<Plug>VimwikiTabGoHome')
- map <silent><unique> <Leader>wt <Plug>VimwikiTabGoHome
-endif
-noremap <unique><script> <Plug>VimwikiTabGoHome :VimwikiTabGoHome<CR>
-
-if !hasmapto('<Plug>VimwikiExploreHome')
- map <silent><unique> <Leader>wh <Plug>VimwikiExploreHome
-endif
-noremap <unique><script> <Plug>VimwikiExploreHome :VimwikiExploreHome<CR>
-
-ftplugin\vimwiki.vim [[[1
-98
-" Vim filetype plugin file
-" Language: Wiki
-" Author: Maxim Kim (habamax at gmail dot com)
-" Home: http://code.google.com/p/vimwiki/
-" Filenames: *.wiki
-" Last Change: 19.01.2009 14:20
-" Version: 0.5.2
-
-if exists("b:did_ftplugin")
- finish
-endif
-
-let b:did_ftplugin = 1 " Don't load another plugin for this buffer
-
-
-"" Defaults
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-" Reset the following options to undo this plugin.
-let b:undo_ftplugin = "setl tw< wrap< lbr< fenc< ff< sua< isf< awa< com< fo< fdt< fdm< fde< commentstring<"
-
-setlocal textwidth=0
-setlocal wrap
-setlocal linebreak
-setlocal fileencoding=utf-8
-setlocal fileformat=unix
-setlocal autowriteall
-" for gf
-execute 'setlocal suffixesadd='.g:vimwiki_ext
-setlocal isfname-=[,]
-
-if g:vimwiki_smartCR>=2
- setlocal comments=b:*,b:#
- setlocal formatoptions=ctnqro
-endif
-
-" folding for Headers using syntax fold method.
-setlocal fdm=syntax
-
-setlocal commentstring=<!--%s-->
-
-"" commands {{{2
-command! -buffer Vimwiki2HTML call vimwiki#Wiki2HTML(g:vimwiki_home_html, expand('%'))
-command! -buffer VimwikiAll2HTML call vimwiki#WikiAll2HTML(g:vimwiki_home_html)
-
-command! -buffer VimwikiNextWord call vimwiki#WikiNextWord()
-command! -buffer VimwikiPrevWord call vimwiki#WikiPrevWord()
-command! -buffer VimwikiDeleteWord call vimwiki#WikiDeleteWord()
-command! -buffer VimwikiRenameWord call vimwiki#WikiRenameWord()
-command! -buffer VimwikiFollowWord call vimwiki#WikiFollowWord('nosplit')
-command! -buffer VimwikiGoBackWord call vimwiki#WikiGoBackWord()
-command! -buffer VimwikiSplitWord call vimwiki#WikiSplitWord('split')
-command! -buffer VimwikiVSplitWord call vimwiki#WikiVSplitWord('vsplit')
-
-"" commands 2}}}
-
-"" keybindings {{{
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-nmap <buffer> <Up> gk
-nmap <buffer> k gk
-vmap <buffer> <Up> gk
-vmap <buffer> k gk
-
-nmap <buffer> <Down> gj
-nmap <buffer> j gj
-vmap <buffer> <Down> gj
-vmap <buffer> j gj
-
-imap <buffer> <Down> <C-o>gj
-imap <buffer> <Up> <C-o>gk
-
-nmap <silent><buffer> <CR> :VimwikiFollowWord<CR>
-nmap <silent><buffer> <S-CR> :VimwikiSplitWord<CR>
-nmap <silent><buffer> <C-CR> :VimwikiVSplitWord<CR>
-
-nmap <buffer> <S-LeftMouse> <NOP>
-nmap <buffer> <C-LeftMouse> <NOP>
-noremap <silent><buffer> <2-LeftMouse> :VimwikiFollowWord<CR>
-noremap <silent><buffer> <S-2-LeftMouse> <LeftMouse>:VimwikiSplitWord<CR>
-noremap <silent><buffer> <C-2-LeftMouse> <LeftMouse>:VimwikiVSplitWord<CR>
-
-nmap <silent><buffer> <BS> :VimwikiGoBackWord<CR>
-"<BS> mapping doesn't work in vim console
-nmap <silent><buffer> <C-h> :VimwikiGoBackWord<CR>
-nmap <silent><buffer> <RightMouse><LeftMouse> :VimwikiGoBackWord<CR>
-
-nmap <silent><buffer> <TAB> :VimwikiNextWord<CR>
-nmap <silent><buffer> <S-TAB> :VimwikiPrevWord<CR>
-
-nmap <silent><buffer> <Leader>wd :VimwikiDeleteWord<CR>
-nmap <silent><buffer> <Leader>wr :VimwikiRenameWord<CR>
-
-if g:vimwiki_smartCR==1
- inoremap <silent><buffer><CR> <CR><Space><C-O>:call vimwiki#WikiNewLine('checkup')<CR>
- noremap <silent><buffer>o o<Space><C-O>:call vimwiki#WikiNewLine('checkup')<CR>
- noremap <silent><buffer>O O<Space><C-O>:call vimwiki#WikiNewLine('checkdown')<CR>
-endif
-" keybindings }}}
-autoload\vimwiki.vim [[[1
-933
-" VimWiki plugin file
-" Language: Wiki
-" Author: Maxim Kim (habamax at gmail dot com)
-" Home: http://code.google.com/p/vimwiki/
-" Filenames: *.wiki
-" Last Change: 19.01.2009 14:19
-" Version: 0.5.2
-
-if exists("g:loaded_vimwiki_auto") || &cp
- finish
-endif
-let g:loaded_vimwiki_auto = 1
-
-let s:wiki_badsymbols = '[<>|?*/\:"]'
-
-"" vimwiki functions {{{2
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-function! s:msg(message) "{{{
- echohl WarningMsg
- echomsg 'vimwiki: '.a:message
- echohl None
-endfunction "}}}
-
-function! s:getFileNameOnly(filename) "{{{
- let word = substitute(a:filename, '\'.g:vimwiki_ext, "", "g")
- let word = substitute(word, '.*[/\\]', "", "g")
- return word
-endfunction "}}}
-
-function! s:editfile(command, filename) "{{{
- let fname = escape(a:filename, '% ')
- execute a:command.' '.fname
-
- " if fname is new
- " if g:vimwiki_addheading!=0 && glob(fname) == ''
- " execute 'normal I! '.s:getfilename(fname)
- " update
- " endif
-endfunction "}}}
-
-function! s:SearchWord(wikiRx,cmd) "{{{
- let hl = &hls
- let lasts = @/
- let @/ = a:wikiRx
- set nohls
- try
- :silent exe 'normal ' a:cmd
- catch /Pattern not found/
- call s:msg('WikiWord not found')
- endt
- let @/ = lasts
- let &hls = hl
-endfunction "}}}
-
-function! s:WikiGetWordAtCursor(wikiRX) "{{{
- let col = col('.') - 1
- let line = getline('.')
- let ebeg = -1
- let cont = match(line, a:wikiRX, 0)
- while (ebeg >= 0 || (0 <= cont) && (cont <= col))
- let contn = matchend(line, a:wikiRX, cont)
- if (cont <= col) && (col < contn)
- let ebeg = match(line, a:wikiRX, cont)
- let elen = contn - ebeg
- break
- else
- let cont = match(line, a:wikiRX, contn)
- endif
- endwh
- if ebeg >= 0
- return strpart(line, ebeg, elen)
- else
- return ""
- endif
-endf "}}}
-
-function! s:WikiStripWord(word, sym) "{{{
- function! s:WikiStripWordHelper(word, sym)
- return substitute(a:word, s:wiki_badsymbols, a:sym, 'g')
- endfunction
-
- let result = a:word
- if strpart(a:word, 0, 2) == "[["
- let result = s:WikiStripWordHelper(strpart(a:word, 2, strlen(a:word)-4), a:sym)
- endif
- return result
-endfunction "}}}
-
-function! s:WikiIsLinkToNonWikiFile(word) "{{{
- " Check if word is link to a non-wiki file.
- " The easiest way is to check if it has extension like .txt or .html
- if a:word =~ '\.\w\{1,4}$'
- return 1
- endif
- return 0
-endfunction "}}}
-
-"" WikiWord history helper functions {{{
-" history is [['WikiWord.wiki', 11], ['AnotherWikiWord', 3] ... etc]
-" where numbers are column positions we should return to when coming back.
-function! s:GetHistoryWord(historyItem)
- return get(a:historyItem, 0)
-endfunction
-function! s:GetHistoryColumn(historyItem)
- return get(a:historyItem, 1)
-endfunction
-"}}}
-
-function! vimwiki#WikiNextWord() "{{{
- call s:SearchWord(g:vimwiki_rxWikiWord, 'n')
-endfunction "}}}
-
-function! vimwiki#WikiPrevWord() "{{{
- call s:SearchWord(g:vimwiki_rxWikiWord, 'N')
-endfunction "}}}
-
-function! vimwiki#WikiFollowWord(split) "{{{
- if a:split == "split"
- let cmd = ":split "
- elseif a:split == "vsplit"
- let cmd = ":vsplit "
- else
- let cmd = ":e "
- endif
- let word = s:WikiStripWord(s:WikiGetWordAtCursor(g:vimwiki_rxWikiWord), g:vimwiki_stripsym)
- " insert doesn't work properly inside :if. Check :help :if.
- if word == ""
- execute "normal! \n"
- return
- endif
- if s:WikiIsLinkToNonWikiFile(word)
- call s:editfile(cmd, word)
- else
- call insert(g:vimwiki_history, [expand('%:p'), col('.')])
- call s:editfile(cmd, g:vimwiki_home.word.g:vimwiki_ext)
- endif
-endfunction "}}}
-
-function! vimwiki#WikiGoBackWord() "{{{
- if !empty(g:vimwiki_history)
- let word = remove(g:vimwiki_history, 0)
- " go back to saved WikiWord
- execute ":e ".s:GetHistoryWord(word)
- call cursor(line('.'), s:GetHistoryColumn(word))
- endif
-endfunction "}}}
-
-function! vimwiki#WikiNewLine(direction) "{{{
- "" direction == checkup - use previous line for checking
- "" direction == checkdown - use next line for checking
- function! s:WikiAutoListItemInsert(listSym, dir)
- let sym = escape(a:listSym, '*')
- if a:dir=='checkup'
- let linenum = line('.')-1
- else
- let linenum = line('.')+1
- end
- let prevline = getline(linenum)
- if prevline =~ '^\s\+'.sym
- let curline = substitute(getline('.'),'^\s\+',"","g")
- if prevline =~ '^\s*'.sym.'\s*$'
- " there should be easier way ...
- execute 'normal kA '."\<ESC>".'"_dF'.a:listSym.'JX'
- return 1
- endif
- let ind = indent(linenum)
- call setline(line('.'), strpart(prevline, 0, ind).a:listSym.' '.curline)
- call cursor(line('.'), ind+3)
- return 1
- endif
- return 0
- endfunction
-
- if s:WikiAutoListItemInsert('*', a:direction)
- return
- endif
-
- if s:WikiAutoListItemInsert('#', a:direction)
- return
- endif
-
- " delete <space>
- if getline('.') =~ '^\s\+$'
- execute 'normal x'
- else
- execute 'normal X'
- endif
-endfunction "}}}
-
-function! vimwiki#WikiHighlightWords() "{{{
- let wikies = glob(g:vimwiki_home.'*')
- "" remove .wiki extensions
- let wikies = substitute(wikies, '\'.g:vimwiki_ext, "", "g")
- let g:vimwiki_wikiwords = split(wikies, '\n')
- "" remove paths
- call map(g:vimwiki_wikiwords, 'substitute(v:val, ''.*[/\\]'', "", "g")')
- "" remove backup files (.wiki~)
- call filter(g:vimwiki_wikiwords, 'v:val !~ ''.*\~$''')
-
- for word in g:vimwiki_wikiwords
- if word =~ g:vimwiki_word1 && !s:WikiIsLinkToNonWikiFile(word)
- execute 'syntax match wikiWord /\<'.word.'\>/'
- else
- execute 'syntax match wikiWord /\[\['.substitute(word, g:vimwiki_stripsym, s:wiki_badsymbols, "g").'\]\]/'
- endif
- endfor
-endfunction "}}}
-
-function! vimwiki#WikiGoHome()"{{{
- try
- execute ':e '.g:vimwiki_home.g:vimwiki_index.g:vimwiki_ext
- catch /E37/ " catch 'No write since last change' error
- " this is really unsecure!!!
- execute ':'.g:vimwiki_gohome.' '.g:vimwiki_home.g:vimwiki_index.g:vimwiki_ext
- endtry
- let g:vimwiki_history = []
-endfunction"}}}
-
-function! vimwiki#WikiDeleteWord() "{{{
- "" file system funcs
- "" Delete WikiWord you are in from filesystem
- let val = input('Delete ['.expand('%').'] (y/n)? ', "")
- if val!='y'
- return
- endif
- let fname = expand('%:p')
- " call WikiGoBackWord()
- try
- call delete(fname)
- catch /.*/
- call s:msg('Cannot delete "'.expand('%:r').'"!')
- return
- endtry
- execute "bdelete! ".escape(fname, " ")
-
- " delete from g:vimwiki_history list
- call filter (g:vimwiki_history, 's:GetHistoryWord(v:val) != fname')
- " as we got back to previous WikiWord - delete it from history - as much
- " as possible
- let hword = ""
- while !empty(g:vimwiki_history) && hword == s:GetHistoryWord(g:vimwiki_history[0])
- let hword = s:GetHistoryWord(remove(g:vimwiki_history, 0))
- endwhile
-
- " reread buffer => deleted WikiWord should appear as non-existent
- execute "e"
-endfunction "}}}
-
-function! vimwiki#WikiRenameWord() "{{{
- "" Rename WikiWord, update all links to renamed WikiWord
- let wwtorename = expand('%:r')
- let isOldWordComplex = 0
- if wwtorename !~ g:vimwiki_word1
- let wwtorename = substitute(wwtorename, g:vimwiki_stripsym, s:wiki_badsymbols, "g")
- let isOldWordComplex = 1
- endif
-
- " there is no file (new one maybe)
- " if glob(g:vimwiki_home.expand('%')) == ''
- " it seems that linux and windows does expand('%') in a different way
- if glob(expand('%:p')) == ''
- call s:msg('Cannot rename "'.expand('%:p').'". It does not exist! (New file? Save it before renaming.)')
- return
- endif
-
- let val = input('Rename "'.expand('%:r').'" (y/n)? ', "")
- if val!='y'
- return
- endif
- let newWord = input('Enter new name: ', "")
- " check newWord - it should be 'good', not empty
- if substitute(newWord, '\s', '', 'g') == ''
- call s:msg('Cannot rename to an empty filename!')
- return
- endif
- if s:WikiIsLinkToNonWikiFile(newWord)
- call s:msg('Cannot rename to a filename with extension (ie .txt .html)!')
- return
- endif
-
- if newWord !~ g:vimwiki_word1
- " if newWord is 'complex wiki word' then add [[]]
- let newWord = '[['.newWord.']]'
- endif
- let newFileName = s:WikiStripWord(newWord, g:vimwiki_stripsym).g:vimwiki_ext
-
- " do not rename if word with such name exists
- let fname = glob(g:vimwiki_home.newFileName)
- if fname != ''
- call s:msg('Cannot rename to "'.newFileName.'". File with that name exist!')
- return
- endif
- " rename WikiWord file
- try
- echomsg "Renaming ".expand('%')
- let res = rename(expand('%'), g:vimwiki_home.newFileName)
- if res == 0
- bd
- else
- throw "Cannot rename!"
- end
- catch /.*/
- call s:msg('Cannot rename "'.expand('%:r').'" to "'.newFileName.'"')
- return
- endtry
-
- " save open buffers
- let openbuffers = []
- let bcount = 1
- while bcount<=bufnr("$")
- if bufexists(bcount)
- call add(openbuffers, bufname(bcount))
- endif
- let bcount = bcount + 1
- endwhile
-
- " update links
- echomsg "Updating links to ".newWord."..."
- execute ':silent args '.g:vimwiki_home.'*'.g:vimwiki_ext
- if isOldWordComplex
- execute ':silent argdo %sm/\[\['.wwtorename.'\]\]/'.newWord.'/geI | update'
- else
- execute ':silent argdo %sm/\<'.wwtorename.'\>/'.newWord.'/geI | update'
- endif
- execute ':argd *'.g:vimwiki_ext
-
- " restore open buffers
- let bcount = 1
- while bcount<=bufnr("$")
- if bufexists(bcount)
- if index(openbuffers, bufname(bcount)) == -1
- execute 'silent bdelete '.escape(bufname(bcount), " ")
- end
- endif
- let bcount = bcount + 1
- endwhile
-
- call s:editfile('e', g:vimwiki_home.newFileName)
-
- "" DONE: after renaming GUI caption is a bit corrupted?
- "" FIXED: buffers menu is also not in the "normal" state, howto Refresh menu?
- "" TODO: Localized version of Gvim gives error -- Refresh menu doesn't exist
- execute "silent! emenu Buffers.Refresh\ menu"
-
- echomsg wwtorename." is renamed to ".newWord
-endfunction "}}}
-
-" Functions 2}}}
-
-"" vimwiki html functions {{{2
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-function! s:WikiCreateDefaultCSS(path) " {{{
- if glob(a:path.'style.css') == ""
- let lines = ['body { margin: 1em 5em 1em 5em; font-size: 120%; line-height: 1.5;}']
- call add(lines, 'p, ul, ol {margin: 0.3em auto;}')
- call add(lines, '.todo {font-weight: bold; text-decoration: underline; color: #FF0000; }')
- call add(lines, '.strike {text-decoration: line-through; }')
- call add(lines, 'h1 {font-size: 2.0em;}')
- call add(lines, 'h2 {font-size: 1.4em;}')
- call add(lines, 'h3 {font-size: 1.0em;}')
- call add(lines, 'h4 {font-size: 0.8em;}')
- call add(lines, 'h5 {font-size: 0.7em;}')
- call add(lines, 'h6 {font-size: 0.6em;}')
- call add(lines, 'h1 { border-bottom: 1px solid #3366cc; text-align: left; padding: 0em 1em 0.3em 0em; }')
- call add(lines, 'h3 { background: #e5ecf9; border-top: 1px solid #3366cc; padding: 0.1em 0.3em 0.1em 0.5em; }')
- call add(lines, 'ul { margin-left: 2em; padding-left: 0.5em; }')
- call add(lines, 'pre { border-left: 0.2em solid #ccc; margin-left: 2em; padding-left: 0.5em; }')
- call add(lines, 'td { border: 1px solid #ccc; padding: 0.3em; }')
- call add(lines, 'hr { border: none; border-top: 1px solid #ccc; }')
-
- call writefile(lines, a:path.'style.css')
- echomsg "Default style.css is created."
- endif
-endfunction "}}}
-
-function! s:syntax_supported()
- return g:vimwiki_syntax == "default"
-endfunction
-
-function! vimwiki#WikiAll2HTML(path) "{{{
- if !s:syntax_supported()
- call s:msg('Wiki2Html: Only vimwiki_default syntax supported!!!')
- return
- endif
-
- if !isdirectory(a:path)
- call s:msg('Please create '.a:path.' directory first!')
- return
- endif
-
- let setting_more = &more
- setlocal nomore
-
- let wikifiles = split(glob(g:vimwiki_home.'*'.g:vimwiki_ext), '\n')
- for wikifile in wikifiles
- echomsg 'Processing '.wikifile
- call vimwiki#Wiki2HTML(a:path, wikifile)
- endfor
- call s:WikiCreateDefaultCSS(g:vimwiki_home_html)
- echomsg 'Wikifiles converted.'
-
- let &more = setting_more
-endfunction "}}}
-
-function! vimwiki#Wiki2HTML(path, wikifile) "{{{
- if !s:syntax_supported()
- call s:msg('Wiki2Html: Only vimwiki_default syntax supported!!!')
- return
- endif
-
- if !isdirectory(a:path)
- call s:msg('Please create '.a:path.' directory first!')
- return
- endif
-
- "" helper funcs
- function! s:isWebLink(lnk) "{{{
- if a:lnk =~ '^\(http://\|www.\|ftp://\)'
- return 1
- endif
- return 0
- endfunction "}}}
- function! s:isImgLink(lnk) "{{{
- if a:lnk =~ '.\(png\|jpg\|gif\|jpeg\)$'
- return 1
- endif
- return 0
- endfunction "}}}
-
- function! s:HTMLHeader(title, charset) "{{{
- let lines=[]
- call add(lines, "")
- call add(lines, '<html>')
- call add(lines, '<head>')
- call add(lines, '<link rel="Stylesheet" type="text/css" href="style.css" />')
- call add(lines, '<title>'.a:title.'</title>')
- call add(lines, '<meta http-equiv="Content-Type" content="text/html; charset='.a:charset.'" />')
- call add(lines, '</head>')
- call add(lines, '<body>')
- return lines
- endfunction "}}}
-
- function! s:HTMLFooter() "{{{
- let lines=[]
- call add(lines, "")
- call add(lines, '</body>')
- call add(lines, '</html>')
- return lines
- endfunction "}}}
-
- function! s:closeCode(code, ldest) "{{{
- if a:code
- call add(a:ldest, "</pre></code>")
- return 0
- endif
- return a:code
- endfunction "}}}
-
- function! s:closePre(pre, ldest) "{{{
- if a:pre
- call add(a:ldest, "</pre>")
- return 0
- endif
- return a:pre
- endfunction "}}}
-
- function! s:closeTable(table, ldest) "{{{
- if a:table
- call add(a:ldest, "</table>")
- return 0
- endif
- return a:table
- endfunction "}}}
-
- function! s:closeList(lists, ldest) "{{{
- while len(a:lists)
- let item = remove(a:lists, -1)
- call add(a:ldest, item[0])
- endwhile
- endfunction! "}}}
-
- " TODO: сделать так, чтобы {{{WikiWord}}} нормально отрабатывал
- function! s:processCode(line, code) "{{{
- let lines = []
- let code = a:code
- let processed = 0
- if !code && a:line =~ '^{{{\s*$'
- " if !code && a:line =~ g:vimwiki_rxPreStart
- let code = 1
- call add(lines, "<code><pre>")
- let processed = 1
- elseif code && a:line =~ '^}}}\s*$'
- " elseif code && a:line =~ g:vimwiki_rxPreEnd
- let code = 0
- call add(lines, "</pre></code>")
- let processed = 1
- elseif code
- let processed = 1
- call add(lines, a:line)
- endif
- return [processed, lines, code]
- endfunction "}}}
-
- function! s:processPre(line, pre) "{{{
- let lines = []
- let pre = a:pre
- let processed = 0
- if a:line =~ '^\s\+[^[:blank:]*#]'
- if !pre
- call add(lines, "<pre>")
- let pre = 1
- endif
- let processed = 1
- call add(lines, a:line)
- elseif pre && a:line =~ '^\s*$'
- let processed = 1
- call add(lines, a:line)
- elseif pre
- call add(lines, "</pre>")
- let pre = 0
- endif
- return [processed, lines, pre]
- endfunction "}}}
-
- function! s:processList(line, lists) "{{{
- let lines = []
- let lstSym = ''
- let lstTagOpen = ''
- let lstTagClose = ''
- let lstRegExp = ''
- let processed = 0
- if a:line =~ '^\s\+\*'
- let lstSym = '*'
- let lstTagOpen = '<ul>'
- let lstTagClose = '</ul>'
- let lstRegExp = '^\s\+\*'
- let processed = 1
- elseif a:line =~ '^\s\+#'
- let lstSym = '#'
- let lstTagOpen = '<ol>'
- let lstTagClose = '</ol>'
- let lstRegExp = '^\s\+#'
- let processed = 1
- endif
- if lstSym != ''
- let indent = stridx(a:line, lstSym)
- let cnt = len(a:lists)
- if !cnt || (cnt && indent > a:lists[-1][1])
- call add(a:lists, [lstTagClose, indent])
- call add(lines, lstTagOpen)
- elseif (cnt && indent < a:lists[-1][1])
- while indent < a:lists[-1][1]
- let item = remove(a:lists, -1)
- call add(lines, item[0])
- endwhile
- endif
- call add(lines, '<li>'.substitute(a:line, lstRegExp, '', '').'</li>')
- else
- while len(a:lists)
- let item = remove(a:lists, -1)
- call add(lines, item[0])
- endwhile
- endif
- return [processed, lines]
- endfunction "}}}
-
- function! s:processP(line) "{{{
- let lines = []
- if a:line =~ '^\S'
- call add(lines, '<p>'.a:line.'</p>')
- return [1, lines]
- endif
- return [0, lines]
- endfunction "}}}
-
- function! s:processHeading(line) "{{{
- let line = a:line
- let processed = 0
- if a:line =~ g:vimwiki_rxH6
- let line = '<h6>'.strpart(a:line, 6).'</h6>'
- let processed = 1
- elseif a:line =~ g:vimwiki_rxH5
- let line = '<h5>'.strpart(a:line, 5).'</h5>'
- let processed = 1
- elseif a:line =~ g:vimwiki_rxH4
- let line = '<h4>'.strpart(a:line, 4).'</h4>'
- let processed = 1
- elseif a:line =~ g:vimwiki_rxH3
- let line = '<h3>'.strpart(a:line, 3).'</h3>'
- let processed = 1
- elseif a:line =~ g:vimwiki_rxH2
- let line = '<h2>'.strpart(a:line, 2).'</h2>'
- let processed = 1
- elseif a:line =~ g:vimwiki_rxH1
- let line = '<h1>'.strpart(a:line, 1).'</h1>'
- let processed = 1
- endif
- return [processed, line]
- endfunction "}}}
-
- function! s:processHR(line) "{{{
- let line = a:line
- let processed = 0
- if a:line =~ '^-----*$'
- let line = '<hr />'
- let processed = 1
- endif
- return [processed, line]
- endfunction "}}}
-
- function! s:processTable(line, table) "{{{
- let table = a:table
- let lines = []
- let processed = 0
- if a:line =~ '^||.\+||.*'
- if !table
- call add(lines, "<table>")
- let table = 1
- endif
- let processed = 1
-
- call add(lines, "<tr>")
- let pos1 = 0
- let pos2 = 0
- let done = 0
- while !done
- let pos1 = stridx(a:line, '||', pos2)
- let pos2 = stridx(a:line, '||', pos1+2)
- if pos1==-1 || pos2==-1
- let done = 1
- let pos2 = len(a:line)
- endif
- let line = strpart(a:line, pos1+2, pos2-pos1-2)
- if line != ''
- call add(lines, "<td>".line."</td>")
- endif
- endwhile
- call add(lines, "</tr>")
-
- elseif table
- call add(lines, "</table>")
- let table = 0
- endif
- return [processed, lines, table]
- endfunction "}}}
-
- "" change dangerous html symbols - < > & (line)
- function! s:safeHTML(line) "{{{
- let line = substitute(a:line, '&', '\&', 'g')
- let line = substitute(line, '<', '\<', 'g')
- let line = substitute(line, '>', '\>', 'g')
- return line
- endfunction "}}}
-
- "" Substitute text found by regexp_match with tagOpen.regexp_subst.tagClose
- function! s:MakeTagHelper(line, regexp_match, tagOpen, tagClose, cSymRemove, func) " {{{
- let pos = 0
- let lines = split(a:line, a:regexp_match, 1)
- let res_line = ""
- for line in lines
- let res_line = res_line.line
- let matched = matchstr(a:line, a:regexp_match, pos)
- if matched != ""
- let toReplace = strpart(matched, a:cSymRemove, len(matched)-2*a:cSymRemove)
- if a:func!=""
- let toReplace = {a:func}(escape(toReplace, '\&*[]?%'))
- else
- " let toReplace = a:tagOpen.escape(toReplace, '\&*[]?%').a:tagClose
- let toReplace = a:tagOpen.toReplace.a:tagClose
- endif
- let res_line = res_line.toReplace
- endif
- let pos = matchend(a:line, a:regexp_match, pos)
- endfor
- return res_line
-
- endfunction " }}}
-
- "" Make tags only if not in ` ... `
- "" ... should be function that process regexp_match deeper.
- function! s:MakeTag(line, regexp_match, tagOpen, tagClose, ...) " {{{
- "check if additional function exists
- let func = ""
- let cSym = 1
- if a:0 == 2
- let cSym = a:1
- let func = a:2
- elseif a:0 == 1
- let cSym = a:1
- endif
-
- let patt_splitter = g:vimwiki_rxCode
- " let patt_splitter = '\('.g:vimwiki_rxCode.'\)\|\(<a href.\{-}</a>\)\|\(<img src.\{-}/>\)'
- " TODO: make one regexp from g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd
- let patt_splitter = '\('.g:vimwiki_rxCode.'\)\|\('.g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd.'\)\|\(<a href.\{-}</a>\)\|\(<img src.\{-}/>\)'
- if g:vimwiki_rxCode == a:regexp_match || g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd == a:regexp_match
- let res_line = s:MakeTagHelper(a:line, a:regexp_match, a:tagOpen, a:tagClose, cSym, func)
- else
- let pos = 0
- let lines = split(a:line, patt_splitter, 1)
- let res_line = ""
- for line in lines
- let res_line = res_line.s:MakeTagHelper(line, a:regexp_match, a:tagOpen, a:tagClose, cSym, func)
- let res_line = res_line.matchstr(a:line, patt_splitter, pos)
- let pos = matchend(a:line, patt_splitter, pos)
- endfor
- endif
- return res_line
- endfunction " }}}
-
- "" Make <a href="link">link desc</a>
- "" from [link link desc]
- function! s:MakeExternalLink(entag) "{{{
- let line = ''
- if s:isWebLink(a:entag)
- let lnkElements = split(a:entag)
- let head = lnkElements[0]
- let rest = join(lnkElements[1:])
- if rest==""
- let rest=head
- endif
- if s:isImgLink(rest)
- if rest!=head
- let line = '<a href="'.head.'"><img src="'.rest.'" /></a>'
- else
- let line = '<img src="'.rest.'" />'
- endif
- else
- let line = '<a href="'.head.'">'.rest.'</a>'
- endif
- else
- if s:isImgLink(a:entag)
- let line = '<img src="'.a:entag.'" />'
- else
- let line = '<a href="'.a:entag.'">'.a:entag.'</a>'
- endif
- endif
- return line
- endfunction "}}}
-
- "" Make <a href="This is a link">This is a link</a>
- "" from [[This is a link]]
- function! s:MakeInternalLink(entag) "{{{
- let line = ''
- if s:isImgLink(a:entag)
- let line = '<img src="'.a:entag.'" />'
- else
- let line = '<a href="'.a:entag.'.html">'.a:entag.'</a>'
- endif
- return line
- endfunction "}}}
-
- "" Make <a href="WikiWord">WikiWord</a>
- "" from WikiWord
- function! s:MakeWikiWordLink(entag) "{{{
- let line = '<a href="'.a:entag.'.html">'.a:entag.'</a>'
- return line
- endfunction "}}}
-
- "" Make <a href="http://habamax.ru">http://habamax.ru</a>
- "" from http://habamax.ru
- function! s:MakeBareBoneLink(entag) "{{{
- if s:isImgLink(a:entag)
- let line = '<img src="'.a:entag.'" />'
- else
- let line = '<a href="'.a:entag.'">'.a:entag.'</a>'
- endif
- return line
- endfunction "}}}
-
- let lsource=readfile(a:wikifile)
- let ldest = s:HTMLHeader(s:getFileNameOnly(a:wikifile), &encoding)
-
- let pre = 0
- let code = 0
- let table = 0
- let lists = []
-
- for line in lsource
- let processed = 0
- let lines = []
-
- let line = s:safeHTML(line)
-
- "" Code
- if !processed
- let [processed, lines, code] = s:processCode(line, code)
- if processed && len(lists)
- call s:closeList(lists, ldest)
- endif
- if processed && table
- let table = s:closeTable(table, ldest)
- endif
- if processed && pre
- let pre = s:closePre(pre, ldest)
- endif
- call extend(ldest, lines)
- endif
-
- "" Pre
- if !processed
- let [processed, lines, pre] = s:processPre(line, pre)
- if processed && len(lists)
- call s:closeList(lists, ldest)
- endif
- if processed && table
- let table = s:closeTable(table, ldest)
- endif
- if processed && code
- let code = s:closeCode(code, ldest)
- endif
- call extend(ldest, lines)
- endif
-
-
- "" list
- if !processed
- let [processed, lines] = s:processList(line, lists)
- if processed && pre
- let pre = s:closePre(pre, ldest)
- endif
- if processed && code
- let code = s:closeCode(code, ldest)
- endif
- if processed && table
- let table = s:closeTable(table, ldest)
- endif
- call map(lines, 's:MakeTag(v:val, ''\[\[.\{-}\]\]'', '''', '''', 2, ''s:MakeInternalLink'')')
- call map(lines, 's:MakeTag(v:val, ''\[.\{-}\]'', '''', '''', 1, ''s:MakeExternalLink'')')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWeblink, '''', '''', 0, ''s:MakeBareBoneLink'')')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWikiWord, '''', '''', 0, ''s:MakeWikiWordLink'')')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxItalic, ''<em>'', ''</em>'')')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxBold, ''<strong>'', ''</strong>'')')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxTodo, ''<span class="todo">'', ''</span>'', 0)')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxDelText, ''<span class="strike">'', ''</span>'', 2)')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSuperScript, ''<sup><small>'', ''</small></sup>'', 1)')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSubScript, ''<sub><small>'', ''</small></sub>'', 2)')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxCode, ''<code>'', ''</code>'')')
- " TODO: change MakeTag function: delete cSym parameter -- count of symbols
- " to strip from 2 sides of tag. Add 2 new instead -- OpenWikiTag length
- " and CloseWikiTag length as for preformatted text there could be {{{,}}} and <pre>,</pre>.
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxPreStart.''.\+''.g:vimwiki_rxPreEnd, ''<code>'', ''</code>'', 3)')
- call extend(ldest, lines)
- endif
-
- "" table
- if !processed
- let [processed, lines, table] = s:processTable(line, table)
- call map(lines, 's:MakeTag(v:val, ''\[\[.\{-}\]\]'', '''', '''', 2, ''s:MakeInternalLink'')')
- call map(lines, 's:MakeTag(v:val, ''\[.\{-}\]'', '''', '''', 1, ''s:MakeExternalLink'')')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWeblink, '''', '''', 0, ''s:MakeBareBoneLink'')')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWikiWord, '''', '''', 0, ''s:MakeWikiWordLink'')')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxItalic, ''<em>'', ''</em>'')')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxBold, ''<strong>'', ''</strong>'')')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxTodo, ''<span class="todo">'', ''</span>'', 0)')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxDelText, ''<span class="strike">'', ''</span>'', 2)')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSuperScript, ''<sup><small>'', ''</small></sup>'', 1)')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSubScript, ''<sub><small>'', ''</small></sub>'', 2)')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxCode, ''<code>'', ''</code>'')')
- call map(lines, 's:MakeTag(v:val, g:vimwiki_rxPreStart.''.\+''.g:vimwiki_rxPreEnd, ''<code>'', ''</code>'', 3)')
- call extend(ldest, lines)
- endif
-
- if !processed
- let [processed, line] = s:processHeading(line)
- if processed
- call s:closeList(lists, ldest)
- let table = s:closeTable(table, ldest)
- let code = s:closeCode(code, ldest)
- call add(ldest, line)
- endif
- endif
-
- if !processed
- let [processed, line] = s:processHR(line)
- if processed
- call s:closeList(lists, ldest)
- let table = s:closeTable(table, ldest)
- let code = s:closeCode(code, ldest)
- call add(ldest, line)
- endif
- endif
-
- "" P
- if !processed
- let line = s:MakeTag(line, '\[\[.\{-}\]\]', '', '', 2, 's:MakeInternalLink')
- let line = s:MakeTag(line, '\[.\{-}\]', '', '', 1, 's:MakeExternalLink')
- let line = s:MakeTag(line, g:vimwiki_rxWeblink, '', '', 0, 's:MakeBareBoneLink')
- let line = s:MakeTag(line, g:vimwiki_rxWikiWord, '', '', 0, 's:MakeWikiWordLink')
- let line = s:MakeTag(line, g:vimwiki_rxItalic, '<em>', '</em>')
- let line = s:MakeTag(line, g:vimwiki_rxBold, '<strong>', '</strong>')
- let line = s:MakeTag(line, g:vimwiki_rxTodo, '<span class="todo">', '</span>', 0)
- let line = s:MakeTag(line, g:vimwiki_rxDelText, '<span class="strike">', '</span>', 2)
- let line = s:MakeTag(line, g:vimwiki_rxSuperScript, '<sup><small>', '</small></sup>', 1)
- let line = s:MakeTag(line, g:vimwiki_rxSubScript, '<sub><small>', '</small></sub>', 2)
- let line = s:MakeTag(line, g:vimwiki_rxCode, '<code>', '</code>')
- let line = s:MakeTag(line, g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd, '<code>', '</code>', 3)
- let [processed, lines] = s:processP(line)
- if processed && pre
- let pre = s:closePre(pre, ldest)
- endif
- if processed && code
- let code = s:closeCode(code, ldest)
- endif
- if processed && table
- let table = s:closeTable(table, ldest)
- endif
- call extend(ldest, lines)
- endif
-
- "" add the rest
- if !processed
- call add(ldest, line)
- endif
- endfor
-
- "" process end of file
- "" close opened tags if any
- call s:closePre(pre, ldest)
- call s:closeCode(code, ldest)
- call s:closeList(lists, ldest)
- call s:closeTable(table, ldest)
-
-
- call extend(ldest, s:HTMLFooter())
-
- "" make html file.
- "" TODO: add html headings, css, etc.
- let wwFileNameOnly = s:getFileNameOnly(a:wikifile)
- call writefile(ldest, a:path.wwFileNameOnly.'.html')
-endfunction "}}}
-
-" 2}}}
-syntax\vimwiki.vim [[[1
-122
-" Vim syntax file
-" Language: Wiki
-" Author: Maxim Kim (habamax at gmail dot com)
-" Home: http://code.google.com/p/vimwiki/
-" Filenames: *.wiki
-" Last Change: 19.01.2009 14:22
-" Version: 0.5.2
-
-" Quit if syntax file is already loaded
-if version < 600
- syntax clear
-elseif exists("b:current_syntax")
- finish
-endif
-
-"" use max highlighting - could be quite slow if there are too many wikifiles
-if g:vimwiki_maxhi
- " Every WikiWord is nonexistent
- execute 'syntax match wikiNoExistsWord /'.g:vimwiki_word1.'/'
- execute 'syntax match wikiNoExistsWord /'.g:vimwiki_word2.'/'
- " till we find them in g:vimwiki_home
- call vimwiki#WikiHighlightWords()
-else
- " A WikiWord (unqualifiedWikiName)
- execute 'syntax match wikiWord /'.g:vimwiki_word1.'/'
- " A [[bracketed wiki word]]
- execute 'syntax match wikiWord /'.g:vimwiki_word2.'/'
-endif
-
-
-" text: "this is a link (optional tooltip)":http://www.microsoft.com
-" TODO: check URL syntax against RFC
-let g:vimwiki_rxWeblink = '\("[^"(]\+\((\([^)]\+\))\)\?":\)\?\(https\?\|ftp\|gopher\|telnet\|file\|notes\|ms-help\):\(\(\(//\)\|\(\\\\\)\)\+[A-Za-z0-9:#@%/;$~_?+-=.&\-\\\\]*\)'
-execute 'syntax match wikiLink `'.g:vimwiki_rxWeblink.'`'
-
-" Emoticons: must come after the Textilisms, as later rules take precedence
-" over earlier ones. This match is an approximation for the ~70 distinct
-syntax match wikiEmoticons /\((.)\|:[()|$@]\|:-[DOPS()\]|$@]\|;)\|:'(\)/
-
-let g:vimwiki_rxTodo = '\(TODO:\|DONE:\|FIXME:\|FIXED:\)'
-execute 'syntax match wikiTodo /'. g:vimwiki_rxTodo .'/'
-
-" Load concrete Wiki syntax
-execute 'runtime! syntax/vimwiki_'.g:vimwiki_syntax.'.vim'
-
-execute 'syntax match wikiBold /'.g:vimwiki_rxBold.'/'
-
-execute 'syntax match wikiItalic /'.g:vimwiki_rxItalic.'/'
-
-execute 'syntax match wikiBoldItalic /'.g:vimwiki_rxBoldItalic.'/'
-
-execute 'syntax match wikiDelText /'.g:vimwiki_rxDelText.'/'
-
-execute 'syntax match wikiSuperScript /'.g:vimwiki_rxSuperScript.'/'
-
-execute 'syntax match wikiSubScript /'.g:vimwiki_rxSubScript.'/'
-
-execute 'syntax match wikiCode /'.g:vimwiki_rxCode.'/'
-
-" Aggregate all the regular text highlighting into wikiText
-syntax cluster wikiText contains=wikiItalic,wikiBold,wikiCode,wikiDelText,wikiSuperScript,wikiSubScript,wikiWord,wikiEmoticons
-
-" Header levels, 1-6
-execute 'syntax match wikiH1 /'.g:vimwiki_rxH1.'/'
-execute 'syntax match wikiH2 /'.g:vimwiki_rxH2.'/'
-execute 'syntax match wikiH3 /'.g:vimwiki_rxH3.'/'
-execute 'syntax match wikiH4 /'.g:vimwiki_rxH4.'/'
-execute 'syntax match wikiH5 /'.g:vimwiki_rxH5.'/'
-execute 'syntax match wikiH6 /'.g:vimwiki_rxH6.'/'
-
-" <hr>, horizontal rule
-execute 'syntax match wikiHR /'.g:vimwiki_rxHR.'/'
-
-" Tables. Each line starts and ends with '||'; each cell is separated by '||'
-execute 'syntax match wikiTable /'.g:vimwiki_rxTable.'/'
-
-" Bulleted list items start with whitespace(s), then '*'
-" syntax match wikiList /^\s\+\(\*\|[1-9]\+0*\.\).*$/ contains=@wikiText
-" highlight only bullets and digits.
-execute 'syntax match wikiList /'.g:vimwiki_rxListBullet.'/'
-execute 'syntax match wikiList /'.g:vimwiki_rxListNumber.'/'
-
-" Treat all other lines that start with spaces as PRE-formatted text.
-execute 'syntax match wikiPre /'.g:vimwiki_rxPre1.'/'
-
-execute 'syntax region wikiPre start=/'.g:vimwiki_rxPreStart.'/ end=/'.g:vimwiki_rxPreEnd.'/'
-" FIXME: this is quite buggy...
-" execute 'syntax sync match wikiPreSync grouphere wikiPre /'.g:vimwiki_rxPreStart.'/'
-
-
-" Folding
-execute 'syntax region wikiHeaderFolding start=/'.g:vimwiki_rxFoldHeadingStart.'/ end=/'.g:vimwiki_rxFoldHeadingEnd.'/ transparent fold'
-
-hi def link wikiH1 Title
-hi def link wikiH2 wikiH1
-hi def link wikiH3 wikiH2
-hi def link wikiH4 wikiH3
-hi def link wikiH5 wikiH4
-hi def link wikiH6 wikiH5
-hi def link wikiHR wikiH6
-
-hi def wikiBold term=bold cterm=bold gui=bold
-hi def wikiItalic term=italic cterm=italic gui=italic
-hi def wikiBoldItalic term=bold cterm=bold gui=bold,italic
-
-hi def link wikiCode PreProc
-hi def link wikiWord Underlined
-hi def link wikiNoExistsWord Error
-
-hi def link wikiPre PreProc
-hi def link wikiLink Underlined
-hi def link wikiList Type
-hi def link wikiTable PreProc
-hi def link wikiEmoticons Constant
-hi def link wikiDelText Comment
-hi def link wikiInsText Constant
-hi def link wikiSuperScript Constant
-hi def link wikiSubScript Constant
-hi def link wikiTodo Todo
-
-let b:current_syntax="vimwiki"
-
-syntax\vimwiki_default.vim [[[1
-66
-" Vim syntax file
-" Language: Wiki (vimwiki default)
-" Author: Maxim Kim (habamax at gmail dot com)
-" Home: http://code.google.com/p/vimwiki/
-" Filenames: *.wiki
-" Last Change: 19.01.2009 14:22
-" Version: 0.5.2
-
-" text: *strong*
-" let g:vimwiki_rxBold = '\*[^*]\+\*'
-let g:vimwiki_rxBold = '\(^\|\s\+\|[[:punct:]]\)\zs\*[^*`]\+\*\ze\([[:punct:]]\|\s\+\|$\)'
-
-" text: _emphasis_
-" let g:vimwiki_rxItalic = '_[^_]\+_'
-let g:vimwiki_rxItalic = '\(^\|\s\+\|[[:punct:]]\)\zs_[^_`]\+_\ze\([[:punct:]]\|\s\+\|$\)'
-
-" text: *_strong italic_* or _*italic strong*_
-let g:vimwiki_rxBoldItalic = '\(^\|\s\+\|[[:punct:]]\)\zs\(\*_[^*_`]\+_\*\)\|\(_\*[^*_`]\+\*_\)\ze\([[:punct:]]\|\s\+\|$\)'
-
-" text: `code`
-let g:vimwiki_rxCode = '`[^`]\+`'
-
-" text: ~~deleted text~~
-let g:vimwiki_rxDelText = '\~\~[^~`]\+\~\~'
-
-" text: ^superscript^
-let g:vimwiki_rxSuperScript = '\^[^^`]\+\^'
-
-" text: ,,subscript,,
-let g:vimwiki_rxSubScript = ',,[^,`]\+,,'
-
-" Header levels, 1-6
-let g:vimwiki_rxH1 = '^!\{1}.*$'
-let g:vimwiki_rxH2 = '^!\{2}.*$'
-let g:vimwiki_rxH3 = '^!\{3}.*$'
-let g:vimwiki_rxH4 = '^!\{4}.*$'
-let g:vimwiki_rxH5 = '^!\{5}.*$'
-let g:vimwiki_rxH6 = '^!\{6}.*$'
-
-" <hr>, horizontal rule
-let g:vimwiki_rxHR = '^----.*$'
-
-" Tables. Each line starts and ends with '||'; each cell is separated by '||'
-let g:vimwiki_rxTable = '||'
-
-" Bulleted list items start with whitespace(s), then '*'
-" syntax match wikiList /^\s\+\(\*\|[1-9]\+0*\.\).*$/ contains=@wikiText
-" highlight only bullets and digits.
-" let g:vimwiki_rxList = '^\s\+\(\*\|#\)'
-let g:vimwiki_rxListBullet = '^\s\+\*'
-let g:vimwiki_rxListNumber = '^\s\+#'
-
-" Treat all other lines that start with spaces as PRE-formatted text.
-let g:vimwiki_rxPre1 = '^\s\+[^[:blank:]*#].*$'
-
-" Preformatted text
-" let g:vimwiki_rxPreStart = '^{{{\s*$'
-" let g:vimwiki_rxPreEnd = '^}}}\s*$'
-let g:vimwiki_rxPreStart = '{{{'
-let g:vimwiki_rxPreEnd = '}}}'
-
-" Header's folding
-let g:vimwiki_rxFoldHeadingStart = '^!'
-let g:vimwiki_rxFoldHeadingEnd = '\n\+\ze!'
-
-" vim:tw=0:
-syntax\vimwiki_google.vim [[[1
-65
-" Vim syntax file
-" Language: Wiki
-" Author: Maxim Kim (habamax at gmail dot com)
-" Home: http://code.google.com/p/vimwiki/
-" Filenames: *.wiki
-" Last Change: 19.01.2009 14:22
-" Version: 0.5.2
-
-" text: *strong*
-" let g:vimwiki_rxBold = '\*[^*]\+\*'
-let g:vimwiki_rxBold = '\(^\|\s\+\|[[:punct:]]\)\zs\*[^*`]\+\*\ze\([[:punct:]]\|\s\+\|$\)'
-
-" text: _emphasis_
-" let g:vimwiki_rxItalic = '_[^_]\+_'
-let g:vimwiki_rxItalic = '\(^\|\s\+\|[[:punct:]]\)\zs_[^_`]\+_\ze\([[:punct:]]\|\s\+\|$\)'
-
-" text: *_strong italic_* or _*italic strong*_
-let g:vimwiki_rxBoldItalic = '\(^\|\s\+\|[[:punct:]]\)\zs\(\*_[^*_`]\+_\*\)\|\(_\*[^*_`]\+\*_\)\ze\([[:punct:]]\|\s\+\|$\)'
-
-" text: `code`
-let g:vimwiki_rxCode = '`[^`]\+`'
-
-" text: ~~deleted text~~
-let g:vimwiki_rxDelText = '\~\~[^~`]\+\~\~'
-
-" text: ^superscript^
-let g:vimwiki_rxSuperScript = '\^[^^`]\+\^'
-
-" text: ,,subscript,,
-let g:vimwiki_rxSubScript = ',,[^,`]\+,,'
-
-" Header levels, 1-6
-let g:vimwiki_rxH1 = '^\s*=\{1}.*=\{1}\s*$'
-let g:vimwiki_rxH2 = '^\s*=\{2}.*=\{2}\s*$'
-let g:vimwiki_rxH3 = '^\s*=\{3}.*=\{3}\s*$'
-let g:vimwiki_rxH4 = '^\s*=\{4}.*=\{4}\s*$'
-let g:vimwiki_rxH5 = '^\s*=\{5}.*=\{5}\s*$'
-let g:vimwiki_rxH6 = '^\s*=\{6}.*=\{6}\s*$'
-
-" <hr>, horizontal rule
-let g:vimwiki_rxHR = '^----.*$'
-
-" Tables. Each line starts and ends with '||'; each cell is separated by '||'
-let g:vimwiki_rxTable = '||'
-
-" Bulleted list items start with whitespace(s), then '*'
-" syntax match wikiList /^\s\+\(\*\|[1-9]\+0*\.\).*$/ contains=@wikiText
-" highlight only bullets and digits.
-let g:vimwiki_rxListBullet = '^\s\+\*'
-let g:vimwiki_rxListNumber = '^\s\+#'
-
-" Treat all other lines that start with spaces as PRE-formatted text.
-let g:vimwiki_rxPre1 = '^\s\+[^[:blank:]*#].*$'
-
-" Preformatted text
-" let g:vimwiki_rxPreStart = '^{{{\s*$'
-" let g:vimwiki_rxPreEnd = '^}}}\s*$'
-let g:vimwiki_rxPreStart = '{{{'
-let g:vimwiki_rxPreEnd = '}}}'
-
-" Header's folding
-let g:vimwiki_rxFoldHeadingStart = '^=\+[^=]\+='
-let g:vimwiki_rxFoldHeadingEnd = '\n\ze=\+[^=]\+='
-
-" vim:tw=0:
-syntax\vimwiki_media.vim [[[1
-60
-" Vim syntax file
-" Language: Wiki (MediaWiki)
-" Author: Maxim Kim (habamax at gmail dot com)
-" Home: http://code.google.com/p/vimwiki/
-" Filenames: *.wiki
-" Last Change: 19.01.2009 14:23
-" Version: 0.5.2
-
-" text: '''strong'''
-let g:vimwiki_rxBold = "'''[^']\\+'''"
-
-" text: ''emphasis''
-let g:vimwiki_rxItalic = "''[^']\\+''"
-
-" text: '''''strong italic'''''
-let g:vimwiki_rxBoldItalic = "'''''[^']\\+'''''"
-
-" text: `code`
-let g:vimwiki_rxCode = '`[^`]\+`'
-
-" text: ~~deleted text~~
-let g:vimwiki_rxDelText = '\~\~[^~]\+\~\~'
-
-" text: ^superscript^
-let g:vimwiki_rxSuperScript = '\^[^^]\+\^'
-
-" text: ,,subscript,,
-let g:vimwiki_rxSubScript = ',,[^,]\+,,'
-
-" Header levels, 1-6
-let g:vimwiki_rxH1 = '^\s*=\{1}.\+=\{1}\s*$'
-let g:vimwiki_rxH2 = '^\s*=\{2}.\+=\{2}\s*$'
-let g:vimwiki_rxH3 = '^\s*=\{3}.\+=\{3}\s*$'
-let g:vimwiki_rxH4 = '^\s*=\{4}.\+=\{4}\s*$'
-let g:vimwiki_rxH5 = '^\s*=\{5}.\+=\{5}\s*$'
-let g:vimwiki_rxH6 = '^\s*=\{6}.\+=\{6}\s*$'
-
-" <hr>, horizontal rule
-let g:vimwiki_rxHR = '^----.*$'
-
-" Tables. Each line starts and ends with '||'; each cell is separated by '||'
-let g:vimwiki_rxTable = '||'
-
-" Bulleted list items start with whitespace(s), then '*'
-" highlight only bullets and digits.
-let g:vimwiki_rxListBullet = '^\s*\*\+\([^*]*$\)\@='
-let g:vimwiki_rxListNumber = '^\s*#\+'
-
-" Treat all other lines that start with spaces as PRE-formatted text.
-let g:vimwiki_rxPre1 = '^\s\+[^[:blank:]*#].*$'
-
-" Preformatted text
-let g:vimwiki_rxPreStart = '<pre>'
-let g:vimwiki_rxPreEnd = '<\/pre>'
-
-" Header's folding
-let g:vimwiki_rxFoldHeadingStart = '^=\+[^=]\+='
-let g:vimwiki_rxFoldHeadingEnd = '\n\ze=\+[^=]\+='
-
-" vim:tw=0:
diff --git a/vimwiki_0_5_3.vba b/vimwiki_0_5_3.vba
@@ -0,0 +1,2044 @@
+" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.
+UseVimball
+finish
+autoload/vimwiki.vim [[[1
+932
+" VimWiki plugin file
+" Language: Wiki
+" Author: Maxim Kim (habamax at gmail dot com)
+" Home: http://code.google.com/p/vimwiki/
+" Filenames: *.wiki
+" Last Change: 19.01.2009 23:43
+" Version: 0.5.3
+
+if exists("g:loaded_vimwiki_auto") || &cp
+ finish
+endif
+let g:loaded_vimwiki_auto = 1
+
+let s:wiki_badsymbols = '[<>|?*/\:"]'
+
+"" vimwiki functions {{{2
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+function! s:msg(message) "{{{
+ echohl WarningMsg
+ echomsg 'vimwiki: '.a:message
+ echohl None
+endfunction "}}}
+
+function! s:getFileNameOnly(filename) "{{{
+ let word = substitute(a:filename, '\'.g:vimwiki_ext, "", "g")
+ let word = substitute(word, '.*[/\\]', "", "g")
+ return word
+endfunction "}}}
+
+function! s:editfile(command, filename) "{{{
+ let fname = escape(a:filename, '% ')
+ execute a:command.' '.fname
+
+ " if fname is new
+ " if g:vimwiki_addheading!=0 && glob(fname) == ''
+ " execute 'normal I! '.s:getfilename(fname)
+ " update
+ " endif
+endfunction "}}}
+
+function! s:SearchWord(wikiRx,cmd) "{{{
+ let hl = &hls
+ let lasts = @/
+ let @/ = a:wikiRx
+ set nohls
+ try
+ :silent exe 'normal ' a:cmd
+ catch /Pattern not found/
+ call s:msg('WikiWord not found')
+ endt
+ let @/ = lasts
+ let &hls = hl
+endfunction "}}}
+
+function! s:WikiGetWordAtCursor(wikiRX) "{{{
+ let col = col('.') - 1
+ let line = getline('.')
+ let ebeg = -1
+ let cont = match(line, a:wikiRX, 0)
+ while (ebeg >= 0 || (0 <= cont) && (cont <= col))
+ let contn = matchend(line, a:wikiRX, cont)
+ if (cont <= col) && (col < contn)
+ let ebeg = match(line, a:wikiRX, cont)
+ let elen = contn - ebeg
+ break
+ else
+ let cont = match(line, a:wikiRX, contn)
+ endif
+ endwh
+ if ebeg >= 0
+ return strpart(line, ebeg, elen)
+ else
+ return ""
+ endif
+endf "}}}
+
+function! s:WikiStripWord(word, sym) "{{{
+ function! s:WikiStripWordHelper(word, sym)
+ return substitute(a:word, s:wiki_badsymbols, a:sym, 'g')
+ endfunction
+
+ let result = a:word
+ if strpart(a:word, 0, 2) == "[["
+ let result = s:WikiStripWordHelper(strpart(a:word, 2, strlen(a:word)-4), a:sym)
+ endif
+ return result
+endfunction "}}}
+
+function! s:WikiIsLinkToNonWikiFile(word) "{{{
+ " Check if word is link to a non-wiki file.
+ " The easiest way is to check if it has extension like .txt or .html
+ if a:word =~ '\.\w\{1,4}$'
+ return 1
+ endif
+ return 0
+endfunction "}}}
+
+"" WikiWord history helper functions {{{
+" history is [['WikiWord.wiki', 11], ['AnotherWikiWord', 3] ... etc]
+" where numbers are column positions we should return to when coming back.
+function! s:GetHistoryWord(historyItem)
+ return get(a:historyItem, 0)
+endfunction
+function! s:GetHistoryColumn(historyItem)
+ return get(a:historyItem, 1)
+endfunction
+"}}}
+
+function! vimwiki#WikiNextWord() "{{{
+ call s:SearchWord(g:vimwiki_rxWikiWord, 'n')
+endfunction "}}}
+
+function! vimwiki#WikiPrevWord() "{{{
+ call s:SearchWord(g:vimwiki_rxWikiWord, 'N')
+endfunction "}}}
+
+function! vimwiki#WikiFollowWord(split) "{{{
+ if a:split == "split"
+ let cmd = ":split "
+ elseif a:split == "vsplit"
+ let cmd = ":vsplit "
+ else
+ let cmd = ":e "
+ endif
+ let word = s:WikiStripWord(s:WikiGetWordAtCursor(g:vimwiki_rxWikiWord), g:vimwiki_stripsym)
+ " insert doesn't work properly inside :if. Check :help :if.
+ if word == ""
+ execute "normal! \n"
+ return
+ endif
+ if s:WikiIsLinkToNonWikiFile(word)
+ call s:editfile(cmd, word)
+ else
+ call insert(g:vimwiki_history, [expand('%:p'), col('.')])
+ call s:editfile(cmd, g:vimwiki_home.word.g:vimwiki_ext)
+ endif
+endfunction "}}}
+
+function! vimwiki#WikiGoBackWord() "{{{
+ if !empty(g:vimwiki_history)
+ let word = remove(g:vimwiki_history, 0)
+ " go back to saved WikiWord
+ execute ":e ".s:GetHistoryWord(word)
+ call cursor(line('.'), s:GetHistoryColumn(word))
+ endif
+endfunction "}}}
+
+function! vimwiki#WikiNewLine(direction) "{{{
+ "" direction == checkup - use previous line for checking
+ "" direction == checkdown - use next line for checking
+ function! s:WikiAutoListItemInsert(listSym, dir)
+ let sym = escape(a:listSym, '*')
+ if a:dir=='checkup'
+ let linenum = line('.')-1
+ else
+ let linenum = line('.')+1
+ end
+ let prevline = getline(linenum)
+ if prevline =~ '^\s\+'.sym
+ let curline = substitute(getline('.'),'^\s\+',"","g")
+ if prevline =~ '^\s*'.sym.'\s*$'
+ " there should be easier way ...
+ execute 'normal kA '."\<ESC>".'"_dF'.a:listSym.'JX'
+ return 1
+ endif
+ let ind = indent(linenum)
+ call setline(line('.'), strpart(prevline, 0, ind).a:listSym.' '.curline)
+ call cursor(line('.'), ind+3)
+ return 1
+ endif
+ return 0
+ endfunction
+
+ if s:WikiAutoListItemInsert('*', a:direction)
+ return
+ endif
+
+ if s:WikiAutoListItemInsert('#', a:direction)
+ return
+ endif
+
+ " delete <space>
+ if getline('.') =~ '^\s\+$'
+ execute 'normal x'
+ else
+ execute 'normal X'
+ endif
+endfunction "}}}
+
+function! vimwiki#WikiHighlightWords() "{{{
+ let wikies = glob(g:vimwiki_home.'*')
+ "" remove .wiki extensions
+ let wikies = substitute(wikies, '\'.g:vimwiki_ext, "", "g")
+ let g:vimwiki_wikiwords = split(wikies, '\n')
+ "" remove paths
+ call map(g:vimwiki_wikiwords, 'substitute(v:val, ''.*[/\\]'', "", "g")')
+ "" remove backup files (.wiki~)
+ call filter(g:vimwiki_wikiwords, 'v:val !~ ''.*\~$''')
+
+ for word in g:vimwiki_wikiwords
+ if word =~ g:vimwiki_word1 && !s:WikiIsLinkToNonWikiFile(word)
+ execute 'syntax match wikiWord /\<'.word.'\>/'
+ else
+ execute 'syntax match wikiWord /\[\['.substitute(word, g:vimwiki_stripsym, s:wiki_badsymbols, "g").'\]\]/'
+ endif
+ endfor
+endfunction "}}}
+
+function! vimwiki#WikiGoHome()"{{{
+ try
+ execute ':e '.g:vimwiki_home.g:vimwiki_index.g:vimwiki_ext
+ catch /E37/ " catch 'No write since last change' error
+ " this is really unsecure!!!
+ execute ':'.g:vimwiki_gohome.' '.g:vimwiki_home.g:vimwiki_index.g:vimwiki_ext
+ endtry
+ let g:vimwiki_history = []
+endfunction"}}}
+
+function! vimwiki#WikiDeleteWord() "{{{
+ "" file system funcs
+ "" Delete WikiWord you are in from filesystem
+ let val = input('Delete ['.expand('%').'] (y/n)? ', "")
+ if val!='y'
+ return
+ endif
+ let fname = expand('%:p')
+ " call WikiGoBackWord()
+ try
+ call delete(fname)
+ catch /.*/
+ call s:msg('Cannot delete "'.expand('%:r').'"!')
+ return
+ endtry
+ execute "bdelete! ".escape(fname, " ")
+
+ " delete from g:vimwiki_history list
+ call filter (g:vimwiki_history, 's:GetHistoryWord(v:val) != fname')
+ " as we got back to previous WikiWord - delete it from history - as much
+ " as possible
+ let hword = ""
+ while !empty(g:vimwiki_history) && hword == s:GetHistoryWord(g:vimwiki_history[0])
+ let hword = s:GetHistoryWord(remove(g:vimwiki_history, 0))
+ endwhile
+
+ " reread buffer => deleted WikiWord should appear as non-existent
+ execute "e"
+endfunction "}}}
+
+function! vimwiki#WikiRenameWord() "{{{
+ "" Rename WikiWord, update all links to renamed WikiWord
+ let wwtorename = expand('%:r')
+ let isOldWordComplex = 0
+ if wwtorename !~ g:vimwiki_word1
+ let wwtorename = substitute(wwtorename, g:vimwiki_stripsym, s:wiki_badsymbols, "g")
+ let isOldWordComplex = 1
+ endif
+
+ " there is no file (new one maybe)
+ " if glob(g:vimwiki_home.expand('%')) == ''
+ if glob(expand('%:p')) == ''
+ call s:msg('Cannot rename "'.expand('%:p').'". It does not exist! (New file? Save it before renaming.)')
+ return
+ endif
+
+ let val = input('Rename "'.expand('%:r').'" (y/n)? ', "")
+ if val!='y'
+ return
+ endif
+ let newWord = input('Enter new name: ', "")
+ " check newWord - it should be 'good', not empty
+ if substitute(newWord, '\s', '', 'g') == ''
+ call s:msg('Cannot rename to an empty filename!')
+ return
+ endif
+ if s:WikiIsLinkToNonWikiFile(newWord)
+ call s:msg('Cannot rename to a filename with extension (ie .txt .html)!')
+ return
+ endif
+
+ if newWord !~ g:vimwiki_word1
+ " if newWord is 'complex wiki word' then add [[]]
+ let newWord = '[['.newWord.']]'
+ endif
+ let newFileName = s:WikiStripWord(newWord, g:vimwiki_stripsym).g:vimwiki_ext
+
+ " do not rename if word with such name exists
+ let fname = glob(g:vimwiki_home.newFileName)
+ if fname != ''
+ call s:msg('Cannot rename to "'.newFileName.'". File with that name exist!')
+ return
+ endif
+ " rename WikiWord file
+ try
+ echomsg "Renaming ".expand('%')." to ".g:vimwiki_home.newFileName
+ let res = rename(expand('%'), g:vimwiki_home.newFileName)
+ if res == 0
+ bd
+ else
+ throw "Cannot rename!"
+ end
+ catch /.*/
+ call s:msg('Cannot rename "'.expand('%:r').'" to "'.newFileName.'"')
+ return
+ endtry
+
+ " save open buffers
+ let openbuffers = []
+ let bcount = 1
+ while bcount<=bufnr("$")
+ if bufexists(bcount)
+ call add(openbuffers, bufname(bcount))
+ endif
+ let bcount = bcount + 1
+ endwhile
+
+ " update links
+ echomsg "Updating links to ".newWord."..."
+ execute ':silent args '.escape(g:vimwiki_home, " ").'*'.g:vimwiki_ext
+ if isOldWordComplex
+ execute ':silent argdo %sm/\[\['.wwtorename.'\]\]/'.newWord.'/geI | update'
+ else
+ execute ':silent argdo %sm/\<'.wwtorename.'\>/'.newWord.'/geI | update'
+ endif
+ execute ':silent argd *'.g:vimwiki_ext
+
+ " restore open buffers
+ let bcount = 1
+ while bcount<=bufnr("$")
+ if bufexists(bcount)
+ if index(openbuffers, bufname(bcount)) == -1
+ execute 'silent bdelete '.escape(bufname(bcount), " ")
+ end
+ endif
+ let bcount = bcount + 1
+ endwhile
+
+ call s:editfile('e', g:vimwiki_home.newFileName)
+
+ "" DONE: after renaming GUI caption is a bit corrupted?
+ "" FIXED: buffers menu is also not in the "normal" state, howto Refresh menu?
+ "" TODO: Localized version of Gvim gives error -- Refresh menu doesn't exist
+ execute "silent! emenu Buffers.Refresh\ menu"
+
+ echomsg wwtorename." is renamed to ".newWord
+endfunction "}}}
+
+" Functions 2}}}
+
+"" vimwiki html functions {{{2
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+function! s:WikiCreateDefaultCSS(path) " {{{
+ if glob(a:path.'style.css') == ""
+ let lines = ['body { margin: 1em 5em 1em 5em; font-size: 120%; line-height: 1.5;}']
+ call add(lines, 'p, ul, ol {margin: 0.3em auto;}')
+ call add(lines, '.todo {font-weight: bold; text-decoration: underline; color: #FF0000; }')
+ call add(lines, '.strike {text-decoration: line-through; }')
+ call add(lines, 'h1 {font-size: 2.0em;}')
+ call add(lines, 'h2 {font-size: 1.4em;}')
+ call add(lines, 'h3 {font-size: 1.0em;}')
+ call add(lines, 'h4 {font-size: 0.8em;}')
+ call add(lines, 'h5 {font-size: 0.7em;}')
+ call add(lines, 'h6 {font-size: 0.6em;}')
+ call add(lines, 'h1 { border-bottom: 1px solid #3366cc; text-align: left; padding: 0em 1em 0.3em 0em; }')
+ call add(lines, 'h3 { background: #e5ecf9; border-top: 1px solid #3366cc; padding: 0.1em 0.3em 0.1em 0.5em; }')
+ call add(lines, 'ul { margin-left: 2em; padding-left: 0.5em; }')
+ call add(lines, 'pre { border-left: 0.2em solid #ccc; margin-left: 2em; padding-left: 0.5em; }')
+ call add(lines, 'td { border: 1px solid #ccc; padding: 0.3em; }')
+ call add(lines, 'hr { border: none; border-top: 1px solid #ccc; }')
+
+ call writefile(lines, a:path.'style.css')
+ echomsg "Default style.css is created."
+ endif
+endfunction "}}}
+
+function! s:syntax_supported()
+ return g:vimwiki_syntax == "default"
+endfunction
+
+function! vimwiki#WikiAll2HTML(path) "{{{
+ if !s:syntax_supported()
+ call s:msg('Wiki2Html: Only vimwiki_default syntax supported!!!')
+ return
+ endif
+
+ if !isdirectory(a:path)
+ call s:msg('Please create '.a:path.' directory first!')
+ return
+ endif
+
+ let setting_more = &more
+ setlocal nomore
+
+ let wikifiles = split(glob(g:vimwiki_home.'*'.g:vimwiki_ext), '\n')
+ for wikifile in wikifiles
+ echomsg 'Processing '.wikifile
+ call vimwiki#Wiki2HTML(a:path, wikifile)
+ endfor
+ call s:WikiCreateDefaultCSS(g:vimwiki_home_html)
+ echomsg 'Wikifiles converted.'
+
+ let &more = setting_more
+endfunction "}}}
+
+function! vimwiki#Wiki2HTML(path, wikifile) "{{{
+ if !s:syntax_supported()
+ call s:msg('Wiki2Html: Only vimwiki_default syntax supported!!!')
+ return
+ endif
+
+ if !isdirectory(a:path)
+ call s:msg('Please create '.a:path.' directory first!')
+ return
+ endif
+
+ "" helper funcs
+ function! s:isWebLink(lnk) "{{{
+ if a:lnk =~ '^\(http://\|www.\|ftp://\)'
+ return 1
+ endif
+ return 0
+ endfunction "}}}
+ function! s:isImgLink(lnk) "{{{
+ if a:lnk =~ '.\(png\|jpg\|gif\|jpeg\)$'
+ return 1
+ endif
+ return 0
+ endfunction "}}}
+
+ function! s:HTMLHeader(title, charset) "{{{
+ let lines=[]
+ call add(lines, "")
+ call add(lines, '<html>')
+ call add(lines, '<head>')
+ call add(lines, '<link rel="Stylesheet" type="text/css" href="style.css" />')
+ call add(lines, '<title>'.a:title.'</title>')
+ call add(lines, '<meta http-equiv="Content-Type" content="text/html; charset='.a:charset.'" />')
+ call add(lines, '</head>')
+ call add(lines, '<body>')
+ return lines
+ endfunction "}}}
+
+ function! s:HTMLFooter() "{{{
+ let lines=[]
+ call add(lines, "")
+ call add(lines, '</body>')
+ call add(lines, '</html>')
+ return lines
+ endfunction "}}}
+
+ function! s:closeCode(code, ldest) "{{{
+ if a:code
+ call add(a:ldest, "</pre></code>")
+ return 0
+ endif
+ return a:code
+ endfunction "}}}
+
+ function! s:closePre(pre, ldest) "{{{
+ if a:pre
+ call add(a:ldest, "</pre>")
+ return 0
+ endif
+ return a:pre
+ endfunction "}}}
+
+ function! s:closeTable(table, ldest) "{{{
+ if a:table
+ call add(a:ldest, "</table>")
+ return 0
+ endif
+ return a:table
+ endfunction "}}}
+
+ function! s:closeList(lists, ldest) "{{{
+ while len(a:lists)
+ let item = remove(a:lists, -1)
+ call add(a:ldest, item[0])
+ endwhile
+ endfunction! "}}}
+
+ " TODO: сделать так, чтобы {{{WikiWord}}} нормально отрабатывал
+ function! s:processCode(line, code) "{{{
+ let lines = []
+ let code = a:code
+ let processed = 0
+ if !code && a:line =~ '^{{{\s*$'
+ " if !code && a:line =~ g:vimwiki_rxPreStart
+ let code = 1
+ call add(lines, "<code><pre>")
+ let processed = 1
+ elseif code && a:line =~ '^}}}\s*$'
+ " elseif code && a:line =~ g:vimwiki_rxPreEnd
+ let code = 0
+ call add(lines, "</pre></code>")
+ let processed = 1
+ elseif code
+ let processed = 1
+ call add(lines, a:line)
+ endif
+ return [processed, lines, code]
+ endfunction "}}}
+
+ function! s:processPre(line, pre) "{{{
+ let lines = []
+ let pre = a:pre
+ let processed = 0
+ if a:line =~ '^\s\+[^[:blank:]*#]'
+ if !pre
+ call add(lines, "<pre>")
+ let pre = 1
+ endif
+ let processed = 1
+ call add(lines, a:line)
+ elseif pre && a:line =~ '^\s*$'
+ let processed = 1
+ call add(lines, a:line)
+ elseif pre
+ call add(lines, "</pre>")
+ let pre = 0
+ endif
+ return [processed, lines, pre]
+ endfunction "}}}
+
+ function! s:processList(line, lists) "{{{
+ let lines = []
+ let lstSym = ''
+ let lstTagOpen = ''
+ let lstTagClose = ''
+ let lstRegExp = ''
+ let processed = 0
+ if a:line =~ '^\s\+\*'
+ let lstSym = '*'
+ let lstTagOpen = '<ul>'
+ let lstTagClose = '</ul>'
+ let lstRegExp = '^\s\+\*'
+ let processed = 1
+ elseif a:line =~ '^\s\+#'
+ let lstSym = '#'
+ let lstTagOpen = '<ol>'
+ let lstTagClose = '</ol>'
+ let lstRegExp = '^\s\+#'
+ let processed = 1
+ endif
+ if lstSym != ''
+ let indent = stridx(a:line, lstSym)
+ let cnt = len(a:lists)
+ if !cnt || (cnt && indent > a:lists[-1][1])
+ call add(a:lists, [lstTagClose, indent])
+ call add(lines, lstTagOpen)
+ elseif (cnt && indent < a:lists[-1][1])
+ while indent < a:lists[-1][1]
+ let item = remove(a:lists, -1)
+ call add(lines, item[0])
+ endwhile
+ endif
+ call add(lines, '<li>'.substitute(a:line, lstRegExp, '', '').'</li>')
+ else
+ while len(a:lists)
+ let item = remove(a:lists, -1)
+ call add(lines, item[0])
+ endwhile
+ endif
+ return [processed, lines]
+ endfunction "}}}
+
+ function! s:processP(line) "{{{
+ let lines = []
+ if a:line =~ '^\S'
+ call add(lines, '<p>'.a:line.'</p>')
+ return [1, lines]
+ endif
+ return [0, lines]
+ endfunction "}}}
+
+ function! s:processHeading(line) "{{{
+ let line = a:line
+ let processed = 0
+ if a:line =~ g:vimwiki_rxH6
+ let line = '<h6>'.strpart(a:line, 6).'</h6>'
+ let processed = 1
+ elseif a:line =~ g:vimwiki_rxH5
+ let line = '<h5>'.strpart(a:line, 5).'</h5>'
+ let processed = 1
+ elseif a:line =~ g:vimwiki_rxH4
+ let line = '<h4>'.strpart(a:line, 4).'</h4>'
+ let processed = 1
+ elseif a:line =~ g:vimwiki_rxH3
+ let line = '<h3>'.strpart(a:line, 3).'</h3>'
+ let processed = 1
+ elseif a:line =~ g:vimwiki_rxH2
+ let line = '<h2>'.strpart(a:line, 2).'</h2>'
+ let processed = 1
+ elseif a:line =~ g:vimwiki_rxH1
+ let line = '<h1>'.strpart(a:line, 1).'</h1>'
+ let processed = 1
+ endif
+ return [processed, line]
+ endfunction "}}}
+
+ function! s:processHR(line) "{{{
+ let line = a:line
+ let processed = 0
+ if a:line =~ '^-----*$'
+ let line = '<hr />'
+ let processed = 1
+ endif
+ return [processed, line]
+ endfunction "}}}
+
+ function! s:processTable(line, table) "{{{
+ let table = a:table
+ let lines = []
+ let processed = 0
+ if a:line =~ '^||.\+||.*'
+ if !table
+ call add(lines, "<table>")
+ let table = 1
+ endif
+ let processed = 1
+
+ call add(lines, "<tr>")
+ let pos1 = 0
+ let pos2 = 0
+ let done = 0
+ while !done
+ let pos1 = stridx(a:line, '||', pos2)
+ let pos2 = stridx(a:line, '||', pos1+2)
+ if pos1==-1 || pos2==-1
+ let done = 1
+ let pos2 = len(a:line)
+ endif
+ let line = strpart(a:line, pos1+2, pos2-pos1-2)
+ if line != ''
+ call add(lines, "<td>".line."</td>")
+ endif
+ endwhile
+ call add(lines, "</tr>")
+
+ elseif table
+ call add(lines, "</table>")
+ let table = 0
+ endif
+ return [processed, lines, table]
+ endfunction "}}}
+
+ "" change dangerous html symbols - < > & (line)
+ function! s:safeHTML(line) "{{{
+ let line = substitute(a:line, '&', '\&', 'g')
+ let line = substitute(line, '<', '\<', 'g')
+ let line = substitute(line, '>', '\>', 'g')
+ return line
+ endfunction "}}}
+
+ "" Substitute text found by regexp_match with tagOpen.regexp_subst.tagClose
+ function! s:MakeTagHelper(line, regexp_match, tagOpen, tagClose, cSymRemove, func) " {{{
+ let pos = 0
+ let lines = split(a:line, a:regexp_match, 1)
+ let res_line = ""
+ for line in lines
+ let res_line = res_line.line
+ let matched = matchstr(a:line, a:regexp_match, pos)
+ if matched != ""
+ let toReplace = strpart(matched, a:cSymRemove, len(matched)-2*a:cSymRemove)
+ if a:func!=""
+ let toReplace = {a:func}(escape(toReplace, '\&*[]?%'))
+ else
+ " let toReplace = a:tagOpen.escape(toReplace, '\&*[]?%').a:tagClose
+ let toReplace = a:tagOpen.toReplace.a:tagClose
+ endif
+ let res_line = res_line.toReplace
+ endif
+ let pos = matchend(a:line, a:regexp_match, pos)
+ endfor
+ return res_line
+
+ endfunction " }}}
+
+ "" Make tags only if not in ` ... `
+ "" ... should be function that process regexp_match deeper.
+ function! s:MakeTag(line, regexp_match, tagOpen, tagClose, ...) " {{{
+ "check if additional function exists
+ let func = ""
+ let cSym = 1
+ if a:0 == 2
+ let cSym = a:1
+ let func = a:2
+ elseif a:0 == 1
+ let cSym = a:1
+ endif
+
+ let patt_splitter = g:vimwiki_rxCode
+ " let patt_splitter = '\('.g:vimwiki_rxCode.'\)\|\(<a href.\{-}</a>\)\|\(<img src.\{-}/>\)'
+ " TODO: make one regexp from g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd
+ let patt_splitter = '\('.g:vimwiki_rxCode.'\)\|\('.g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd.'\)\|\(<a href.\{-}</a>\)\|\(<img src.\{-}/>\)'
+ if g:vimwiki_rxCode == a:regexp_match || g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd == a:regexp_match
+ let res_line = s:MakeTagHelper(a:line, a:regexp_match, a:tagOpen, a:tagClose, cSym, func)
+ else
+ let pos = 0
+ let lines = split(a:line, patt_splitter, 1)
+ let res_line = ""
+ for line in lines
+ let res_line = res_line.s:MakeTagHelper(line, a:regexp_match, a:tagOpen, a:tagClose, cSym, func)
+ let res_line = res_line.matchstr(a:line, patt_splitter, pos)
+ let pos = matchend(a:line, patt_splitter, pos)
+ endfor
+ endif
+ return res_line
+ endfunction " }}}
+
+ "" Make <a href="link">link desc</a>
+ "" from [link link desc]
+ function! s:MakeExternalLink(entag) "{{{
+ let line = ''
+ if s:isWebLink(a:entag)
+ let lnkElements = split(a:entag)
+ let head = lnkElements[0]
+ let rest = join(lnkElements[1:])
+ if rest==""
+ let rest=head
+ endif
+ if s:isImgLink(rest)
+ if rest!=head
+ let line = '<a href="'.head.'"><img src="'.rest.'" /></a>'
+ else
+ let line = '<img src="'.rest.'" />'
+ endif
+ else
+ let line = '<a href="'.head.'">'.rest.'</a>'
+ endif
+ else
+ if s:isImgLink(a:entag)
+ let line = '<img src="'.a:entag.'" />'
+ else
+ let line = '<a href="'.a:entag.'">'.a:entag.'</a>'
+ endif
+ endif
+ return line
+ endfunction "}}}
+
+ "" Make <a href="This is a link">This is a link</a>
+ "" from [[This is a link]]
+ function! s:MakeInternalLink(entag) "{{{
+ let line = ''
+ if s:isImgLink(a:entag)
+ let line = '<img src="'.a:entag.'" />'
+ else
+ let line = '<a href="'.a:entag.'.html">'.a:entag.'</a>'
+ endif
+ return line
+ endfunction "}}}
+
+ "" Make <a href="WikiWord">WikiWord</a>
+ "" from WikiWord
+ function! s:MakeWikiWordLink(entag) "{{{
+ let line = '<a href="'.a:entag.'.html">'.a:entag.'</a>'
+ return line
+ endfunction "}}}
+
+ "" Make <a href="http://habamax.ru">http://habamax.ru</a>
+ "" from http://habamax.ru
+ function! s:MakeBareBoneLink(entag) "{{{
+ if s:isImgLink(a:entag)
+ let line = '<img src="'.a:entag.'" />'
+ else
+ let line = '<a href="'.a:entag.'">'.a:entag.'</a>'
+ endif
+ return line
+ endfunction "}}}
+
+ let lsource=readfile(a:wikifile)
+ let ldest = s:HTMLHeader(s:getFileNameOnly(a:wikifile), &encoding)
+
+ let pre = 0
+ let code = 0
+ let table = 0
+ let lists = []
+
+ for line in lsource
+ let processed = 0
+ let lines = []
+
+ let line = s:safeHTML(line)
+
+ "" Code
+ if !processed
+ let [processed, lines, code] = s:processCode(line, code)
+ if processed && len(lists)
+ call s:closeList(lists, ldest)
+ endif
+ if processed && table
+ let table = s:closeTable(table, ldest)
+ endif
+ if processed && pre
+ let pre = s:closePre(pre, ldest)
+ endif
+ call extend(ldest, lines)
+ endif
+
+ "" Pre
+ if !processed
+ let [processed, lines, pre] = s:processPre(line, pre)
+ if processed && len(lists)
+ call s:closeList(lists, ldest)
+ endif
+ if processed && table
+ let table = s:closeTable(table, ldest)
+ endif
+ if processed && code
+ let code = s:closeCode(code, ldest)
+ endif
+ call extend(ldest, lines)
+ endif
+
+
+ "" list
+ if !processed
+ let [processed, lines] = s:processList(line, lists)
+ if processed && pre
+ let pre = s:closePre(pre, ldest)
+ endif
+ if processed && code
+ let code = s:closeCode(code, ldest)
+ endif
+ if processed && table
+ let table = s:closeTable(table, ldest)
+ endif
+ call map(lines, 's:MakeTag(v:val, ''\[\[.\{-}\]\]'', '''', '''', 2, ''s:MakeInternalLink'')')
+ call map(lines, 's:MakeTag(v:val, ''\[.\{-}\]'', '''', '''', 1, ''s:MakeExternalLink'')')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWeblink, '''', '''', 0, ''s:MakeBareBoneLink'')')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWikiWord, '''', '''', 0, ''s:MakeWikiWordLink'')')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxItalic, ''<em>'', ''</em>'')')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxBold, ''<strong>'', ''</strong>'')')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxTodo, ''<span class="todo">'', ''</span>'', 0)')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxDelText, ''<span class="strike">'', ''</span>'', 2)')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSuperScript, ''<sup><small>'', ''</small></sup>'', 1)')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSubScript, ''<sub><small>'', ''</small></sub>'', 2)')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxCode, ''<code>'', ''</code>'')')
+ " TODO: change MakeTag function: delete cSym parameter -- count of symbols
+ " to strip from 2 sides of tag. Add 2 new instead -- OpenWikiTag length
+ " and CloseWikiTag length as for preformatted text there could be {{{,}}} and <pre>,</pre>.
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxPreStart.''.\+''.g:vimwiki_rxPreEnd, ''<code>'', ''</code>'', 3)')
+ call extend(ldest, lines)
+ endif
+
+ "" table
+ if !processed
+ let [processed, lines, table] = s:processTable(line, table)
+ call map(lines, 's:MakeTag(v:val, ''\[\[.\{-}\]\]'', '''', '''', 2, ''s:MakeInternalLink'')')
+ call map(lines, 's:MakeTag(v:val, ''\[.\{-}\]'', '''', '''', 1, ''s:MakeExternalLink'')')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWeblink, '''', '''', 0, ''s:MakeBareBoneLink'')')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWikiWord, '''', '''', 0, ''s:MakeWikiWordLink'')')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxItalic, ''<em>'', ''</em>'')')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxBold, ''<strong>'', ''</strong>'')')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxTodo, ''<span class="todo">'', ''</span>'', 0)')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxDelText, ''<span class="strike">'', ''</span>'', 2)')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSuperScript, ''<sup><small>'', ''</small></sup>'', 1)')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSubScript, ''<sub><small>'', ''</small></sub>'', 2)')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxCode, ''<code>'', ''</code>'')')
+ call map(lines, 's:MakeTag(v:val, g:vimwiki_rxPreStart.''.\+''.g:vimwiki_rxPreEnd, ''<code>'', ''</code>'', 3)')
+ call extend(ldest, lines)
+ endif
+
+ if !processed
+ let [processed, line] = s:processHeading(line)
+ if processed
+ call s:closeList(lists, ldest)
+ let table = s:closeTable(table, ldest)
+ let code = s:closeCode(code, ldest)
+ call add(ldest, line)
+ endif
+ endif
+
+ if !processed
+ let [processed, line] = s:processHR(line)
+ if processed
+ call s:closeList(lists, ldest)
+ let table = s:closeTable(table, ldest)
+ let code = s:closeCode(code, ldest)
+ call add(ldest, line)
+ endif
+ endif
+
+ "" P
+ if !processed
+ let line = s:MakeTag(line, '\[\[.\{-}\]\]', '', '', 2, 's:MakeInternalLink')
+ let line = s:MakeTag(line, '\[.\{-}\]', '', '', 1, 's:MakeExternalLink')
+ let line = s:MakeTag(line, g:vimwiki_rxWeblink, '', '', 0, 's:MakeBareBoneLink')
+ let line = s:MakeTag(line, g:vimwiki_rxWikiWord, '', '', 0, 's:MakeWikiWordLink')
+ let line = s:MakeTag(line, g:vimwiki_rxItalic, '<em>', '</em>')
+ let line = s:MakeTag(line, g:vimwiki_rxBold, '<strong>', '</strong>')
+ let line = s:MakeTag(line, g:vimwiki_rxTodo, '<span class="todo">', '</span>', 0)
+ let line = s:MakeTag(line, g:vimwiki_rxDelText, '<span class="strike">', '</span>', 2)
+ let line = s:MakeTag(line, g:vimwiki_rxSuperScript, '<sup><small>', '</small></sup>', 1)
+ let line = s:MakeTag(line, g:vimwiki_rxSubScript, '<sub><small>', '</small></sub>', 2)
+ let line = s:MakeTag(line, g:vimwiki_rxCode, '<code>', '</code>')
+ let line = s:MakeTag(line, g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd, '<code>', '</code>', 3)
+ let [processed, lines] = s:processP(line)
+ if processed && pre
+ let pre = s:closePre(pre, ldest)
+ endif
+ if processed && code
+ let code = s:closeCode(code, ldest)
+ endif
+ if processed && table
+ let table = s:closeTable(table, ldest)
+ endif
+ call extend(ldest, lines)
+ endif
+
+ "" add the rest
+ if !processed
+ call add(ldest, line)
+ endif
+ endfor
+
+ "" process end of file
+ "" close opened tags if any
+ call s:closePre(pre, ldest)
+ call s:closeCode(code, ldest)
+ call s:closeList(lists, ldest)
+ call s:closeTable(table, ldest)
+
+
+ call extend(ldest, s:HTMLFooter())
+
+ "" make html file.
+ "" TODO: add html headings, css, etc.
+ let wwFileNameOnly = s:getFileNameOnly(a:wikifile)
+ call writefile(ldest, a:path.wwFileNameOnly.'.html')
+endfunction "}}}
+
+" 2}}}
+doc/vimwiki.txt [[[1
+607
+*vimwiki.txt* A Personal Wiki for Vim
+
+ __ __ ______ __ __ ______ __ __ ______ ~
+ /\ \/\ \/\__ _\ /'\_/`\/\ \ __/\ \/\__ _\ /\ \/\ \ /\__ _\ ~
+ \ \ \ \ \/_/\ \/ /\ \ \ \/\ \ \ \/_/\ \/ \ \ \/'/'\/_/\ \/ ~
+ \ \ \ \ \ \ \ \ \ \ \__\ \ \ \ \ \ \ \ \ \ \ \ \ , < \ \ \ ~
+ \ \ \_/ \ \_\ \__\ \ \_/\ \ \ \_/ \_\ \ \_\ \__\ \ \\`\ \_\ \__ ~
+ \ `\___/ /\_____\\ \_\\ \_\ `\___x___/ /\_____\\ \_\ \_\ /\_____\~
+ `\/__/ \/_____/ \/_/ \/_/'\/__//__/ \/_____/ \/_/\/_/ \/_____/~
+
+
+ Let the help begins ...~
+
+ Version: 0.5.3 ~
+
+==============================================================================
+CONTENTS *vimwiki-contents*
+
+ 1. Intro ...................................|vimwiki|
+ 2. Prerequisites ...........................|vimwiki-prerequisites|
+ 3. Mappings ................................|vimwiki-mappings|
+ 3.1. Global mappings .....................|vimwiki-global-mappings|
+ 3.2. Local mappings ......................|vimwiki-local-mappings|
+ 4. Commands ................................|vimwiki-commands|
+ 4.1. Global commands .....................|vimwiki-global-commands|
+ 4.2. Local commands ......................|vimwiki-local-commands|
+ 5. Wiki syntax .............................|vimwiki-syntax|
+ 5.1. Typeface ............................|vimwiki-typeface|
+ 5.2. Links ...............................|vimwiki-links|
+ 5.3. Headers .............................|vimwiki-headers|
+ 5.4. Paragraphs...........................|vimwiki-paragraphs|
+ 5.5. Lists ...............................|vimwiki-lists|
+ 5.6. Tables ..............................|vimwiki-tables|
+ 5.7. Pre .................................|vimwiki-pre|
+ 6. Options .................................|vimwiki-options|
+ 7. Help ....................................|vimwiki-help|
+ 8. Author ..................................|vimwiki-author|
+ 9. Changelog ...............................|vimwiki-changelog|
+ 10. License ................................|vimwiki-license|
+
+
+==============================================================================
+1. Intro *vimwiki*
+
+Vimwiki being a personal wiki for Vim allows you to organize text information
+using hyper links. To do a quick start add the following to your vimrc: >
+ :let g:vimwiki_home = "~/mywiki/"
+
+Change "~/mywiki/" to whatever path you prefer. Make sure it exists and you
+can read and write to that path.
+
+Now restart Vim and press <Leader>ww to go to your index wiki file.
+Feed it with the following example (copy&paste without and between ---) :
+
+---
+! My knowledge base
+ * MyUrgentTasks -- things to be done _yesterday_!!!
+ * ProjectGutenberg -- good books are power.
+ * MusicILike, MusicIHate.
+---
+
+Notice that ProjectGutenberg, MyUrgentTasks, MusicILike and MusicIHate
+highlighted as errors. These WikiWords (WikiWord or WikiPage --
+capitalized word connected with other capitalized words) do not exist yet.
+
+Place cursor on ProjectGutenberg and press Enter. Now you are in
+ProjectGutenberg. Edit and save it, then press Backspace to return
+to previous WikiPage. You should see the difference in highlighting now.
+
+Now begin to add your own information ...
+
+==============================================================================
+2. Prerequisites *vimwiki-prerequisites*
+
+Make sure you have these settings in your vimrc file: >
+ set nocompatible
+ filetype plugin on
+ syntax on
+
+Without them Vimwiki will not work properly.
+
+
+==============================================================================
+3. Mappings *vimwiki-mappings*
+
+There are global and local mappings in vimwiki.
+
+------------------------------------------------------------------------------
+3.1. Global mappings *vimwiki-global-mappings*
+
+<Leader>ww or <Plug>VimwikiGoHome
+ Open vimwiki's main file.
+ To redefine: >
+ :map <Leader>w <Plug>VimwikiGoHome
+<
+See also|:VimwikiGoHome|
+
+<Leader>wt or <Plug>VimwikiTabGoHome
+ Open vimwiki's main file in a new tab.
+ To redefine: >
+ :map <Leader>t <Plug>VimwikiTabGoHome
+<
+See also|:VimwikiTabGoHome|
+
+<Leader>wh or <Plug>VimwikiExploreHome
+ Open vimwiki's home directory.
+ To redefine: >
+ :map <Leader>h <Plug>VimwikiExploreHome
+<
+See also|:VimwikiExploreHome|
+
+------------------------------------------------------------------------------
+3.1. Local mappings *vimwiki-local-mappings*
+
+Normal mode (Keyboard):~
+<CR> Follow/Create WikiWord.
+ Maps to|:VimwikiFollowWord|.
+
+<S-CR> Split and follow/create WikiWord
+ Maps to|:VimwikiSplitWord|.
+
+<C-CR> Vertical split and follow/create WikiWord
+ Maps to|:VimwikiVSplitWord|.
+
+<Backspace> Go back to previous WikiWord
+ Maps to|:VimwikiGoBackWord|.
+
+<Tab> Find next WikiWord
+ Maps to|:VimwikiNextWord|.
+
+<S-Tab> Find previous WikiWord
+ Maps to|:VimwikiPrevWord|.
+
+<Leader>wd Delete WikiWord you are in.
+ Maps to|:VimwikiDeleteWord|.
+
+<Leader>wr Rename WikiWord you are in.
+ Maps to|:VimwikiRenameWord|.
+
+
+Normal mode (Mouse): ~
+<2-LeftMouse> Follow/Create WikiWord
+<S-2-LeftMouse> Split and follow/create WikiWord
+<C-2-LeftMouse> Vertical split and follow/create WikiWord
+<RightMouse><LeftMouse> Go back to previous WikiWord
+
+Note: <2-LeftMouse> is just left double click.
+
+
+==============================================================================
+4. Commands *vimwiki-commands*
+
+------------------------------------------------------------------------------
+4.1. Global Commands *vimwiki-global-commands*
+
+*:VimwikiGoHome*
+ Open vimwiki's main file.
+
+*:VimwikiTabGoHome*
+ Open vimwiki's main file in a new tab.
+
+*:VimwikiExploreHome*
+ Open vimwiki's home directory.
+
+------------------------------------------------------------------------------
+4.2. Local commands *vimwiki-local-commands*
+
+*:VimwikiFollowWord*
+ Follow/create WikiWord.
+
+*:VimwikiGoBackWord*
+ Go back to previous WikiWord you come from.
+
+*:VimwikiSplitWord*
+ Split and follow/create WikiWord.
+
+*:VimwikiVSplitWord*
+ Vertical split and follow/create WikiWord.
+
+*:VimwikiNextWord*
+ Find next WikiWord.
+
+*:VimwikiPrevWord*
+ Find previous WikiWord.
+
+*:VimwikiDeleteWord*
+ Delete WikiWord you are in.
+
+*:VimwikiRenameWord*
+ Rename WikiWord you are in.
+
+*:Vimwiki2HTML*
+ Convert current WikiPage to HTML.
+
+*:VimwikiAll2HTML*
+ Convert all WikiPages to HTML.
+
+Note that in order 2HTML commands to work you should set up & create html
+directory. By default it is g:vimwiki_home/html/ so just go to g:vimwiki_home
+and create html directory there.
+
+
+==============================================================================
+5. Wiki syntax *vimwiki-syntax*
+
+There are a lot of different wikies out there. Most of them have their own
+syntax and vimwiki is not an exception here. Default vimwiki's syntax is quite
+similar to what google's wiki has. With the noticeable difference in headings
+markup.
+
+As for MediaWiki's syntax -- the most used wiki syntax in the world -- it is
+not that convenient for non English keyboard layouts to emphasize text as it
+uses a lot of '''''' to do it. You have to switch layouts every time you want
+some bold non English text. This is the answer to "Why not MediaWiki?"
+
+Nevertheless, there is MediaWiki syntax file included in the distribution (it
+doesn't have all the fancy stuff original MediaWiki syntax has though). As the
+Google's one. To switch add the following to your vimrc: >
+ let g:vimwiki_syntax = "media"
+or: >
+ let g:vimwiki_syntax = "google"
+
+
+------------------------------------------------------------------------------
+5.1. Typeface *vimwiki-typeface*
+
+There are a few typefaces that gives you a bit of control on how your
+text should be decorated: >
+ *bold text*
+ _italic text_
+ ~~strikeout text~~
+ `code (no syntax) text`
+ super^script^
+ sub,,script,,
+
+------------------------------------------------------------------------------
+5.2. Links *vimwiki-links*
+
+Internal links:
+ CapitalizedWordsConnected
+or:
+ [[This is a link]]
+
+External links effects are visible after export to HTML.
+Plain link:
+ http://code.google.com/p/vimwiki
+
+Link with description
+ [http://habamax.ru/blog habamax home page]
+
+Image link is the link with one of jpg, png or gif endings.
+Plain image link:
+ http://someaddr.com/picture.jpg
+
+Image thumbnail link:
+ [http://someaddr.com/bigpicture.jpg http://someaddr.com/thumbnail.jpg]
+
+------------------------------------------------------------------------------
+5.3. Headers *vimwiki-headers*
+! Header level 1
+!! Header level 2
+!!! Header level 3
+!!!! Header level 4
+!!!!! Header level 5
+!!!!!! Header level 6
+
+------------------------------------------------------------------------------
+5.4. Paragraphs *vimwiki-paragraphs*
+
+Every line started from column 0 (zero) is a paragraph if it is not a list,
+table or preformatted text.
+
+------------------------------------------------------------------------------
+5.5. Lists *vimwiki-lists*
+Indent lists with at least one space:
+ * Bulleted list item 1
+ * Bulleted list item 2
+ * Bulleted list sub item 1
+ * Bulleted list sub item 2
+ * more ...
+ * and more ...
+ * ...
+ * Bulleted list sub item 3
+ * etc.
+
+The same goes for numbered lists:
+ # Numbered list item 1
+ # Numbered list item 2
+ # Numbered list sub item 1
+ # Numbered list sub item 2
+ # more ...
+ # and more ...
+ # ...
+ # Numbered list sub item 3
+ # etc.
+
+It is possible to mix bulleted and numbered lists.
+
+------------------------------------------------------------------------------
+5.6. Tables *vimwiki-tables*
+
+Tables are created by entering the content of each cell separated by ||
+delimiters. You can insert other inline wiki syntax in table cells, including
+typeface formatting and links.
+For example:
+
+||*Year*s||*Temperature (low)*||*Temperature (high)*||
+||1900 ||-10 ||25 ||
+||1910 ||-15 ||30 ||
+||1920 ||-10 ||32 ||
+||1930 ||_N/A_ ||_N/A_ ||
+||1940 ||-2 ||40 ||
+
+
+------------------------------------------------------------------------------
+5.7. Pre *vimwiki-pre*
+
+If the line started from whitespace and is not a list it is "preformatted" text.
+For example: >
+
+ Tyger! Tyger! burning bright
+ In the forests of the night,
+ What immortal hand or eye
+ Could frame thy fearful symmetry?
+ In what distant deeps or skies
+ Burnt the fire of thine eyes?
+ On what wings dare he aspire?
+ What the hand dare sieze the fire?
+ ...
+ ...
+
+Or use {{{ and }}} to define pre:
+{{{ >
+ Tyger! Tyger! burning bright
+ In the forests of the night,
+ What immortal hand or eye
+ Could frame thy fearful symmetry?
+ In what distant deeps or skies
+ Burnt the fire of thine eyes?
+ On what wings dare he aspire?
+ What the hand dare sieze the fire?
+}}}
+
+It could be started from column 0.
+
+
+==============================================================================
+6. Options *vimwiki-options*
+
+------------------------------------------------------------------------------
+Default: "" *g:vimwiki_home*
+Values: path
+
+Set your wiki files home directory: >
+ let g:vimwiki_home = "~/mywiki/"
+
+Change "~/mywiki/" to whatever you prefer -- "d:/vimwiki/" for example.
+Make sure it exists and you can read and write to that path.
+
+Note: this option is a MUST.
+
+------------------------------------------------------------------------------
+Default: g:vimwiki_home."html" *g:vimwiki_home_html*
+Values: path
+
+Set up directory for wiki files converted to HTML: >
+ let g:vimwiki_home_html = '~/my wiki/html/'
+
+------------------------------------------------------------------------------
+Default: "index" *g:vimwiki_index*
+Values: filename without extension
+
+If you don't like index.wiki as the main wiki file change it: >
+ let g:vimwiki_index = "homesweethome"
+
+Note: there is NO .wiki extension
+
+------------------------------------------------------------------------------
+Default: ".wiki" *g:vimwiki_ext*
+Values: file extension
+
+If you don't want .wiki extension change it: >
+ let g:vimwiki_ext = ".shmiki"
+
+
+------------------------------------------------------------------------------
+Default: "default" *g:vimwiki_syntax*
+Values: "default", "media" or "google"
+
+You can use different markup languages (currently default vimwiki, google and
+MediaWiki) but only vimwiki's default markup could be converted to HTML at the
+moment.
+To use MediaWiki's wiki markup: >
+ let g:vimwiki_syntax = "media"
+
+To use google's wiki markup: >
+ let g:vimwiki_syntax = "google"
+
+------------------------------------------------------------------------------
+Default: "A-ZА-Я" *g:vimwiki_upper*
+Values: Upper letters (ranges)
+
+This affects WikiWord detection.
+By default WikiWord detection uses English and Russian letters.
+You can set up your own: >
+ let g:vimwiki_upper="A-Z"
+
+------------------------------------------------------------------------------
+Default: "a-zа-я" *g:vimwiki_lower*
+Values: Lower letters ranges
+
+See |g:vimwiki_upper|: >
+ let g:vimwiki_lower="a-z"
+
+------------------------------------------------------------------------------
+Default: 1 *g:vimwiki_smartCR*
+Values: 0, 1, 2
+
+This option affects the behaviour of <CR> in INSERT mode while adding new
+|vimwiki-lists|items.
+
+let g:vimwiki_smartCR=1~
+Imagine you have the following list (cursor stands on | ): >
+ * List item 1
+ * List item 2 |
+
+Now if you press <CR>: >
+ * List item 1
+ * List item 2
+ * |
+
+New list item appear. Now press <CR> again: >
+ * List item 1
+ * List item 2
+ |
+
+It is disappeared. That's it. Try it with cursor on any part of the list. It
+also works for |o| and |O|.
+
+let g:vimwiki_smartCR=2~
+It only adds new list item. Nothing more. It uses Vim comments facility such
+as: >
+ :h comments
+ :h formatoptions.
+
+To turn it off: >
+ let g:vimwiki_smartCR = 0
+
+------------------------------------------------------------------------------
+Default: 1 *g:vimwiki_maxhi*
+Values: 0, 1
+
+Non-existent WikiWord highlighting could be quite slow and if you don't want
+it set g:vimwiki_maxhi to 0: >
+ let g:vimwiki_maxhi = 0
+
+------------------------------------------------------------------------------
+Default: "_" *g:vimwiki_stripsym*
+Values: symbol
+
+Change strip symbol -- in Windows you cannot use /*?<>:" in file names so
+vimwiki replaces them with symbol given below: (_ is default): >
+ let g:vimwiki_stripsym = '_'
+
+------------------------------------------------------------------------------
+Default: "split" *g:vimwiki_gohome*
+Values: split, vsplit, tabe
+
+This option controls the way |:VimwikiGoHome| command works.
+For instance you have 'No write since last change' buffer. After <Leader>ww
+(or :VimwikiGoHome) vimwiki index file will be splitted with it. Or vertically
+splitted. Or opened in a new tab.
+
+
+==============================================================================
+7. Help *vimwiki-help*
+
+As you could see I am not native English speaker (not a writer as well).
+Please send me correct phrases instead of that incorrect stuff I have used
+here.
+
+Any help is really appreciated!
+
+==============================================================================
+8. Author *vimwiki-author*
+
+I live in Moscow and you may believe me -- there are no polar bears (no brown
+too) here in the streets.
+
+I do not do programming for a living. So don't blame me for an ugly
+ineffective code. :)
+
+Maxim Kim
+e-mail: habamax@gmail.com~
+
+Vimwiki's website: http://code.google.com/p/vimwiki/
+Vim plugins website: http://www.Vim.org/scripts/script.php?script_id=2226
+
+==============================================================================
+9. Changelog *vimwiki-changelog*
+
+0.5.3
+ * [fix] Fixed |:VimwikiRenameWord|. Error when g:vimwiki_home had
+ whitespaces in path.
+ * [fix] |:VimwikiSplitWord| and |:VimwikiVSplitWord| didn't work.
+
+0.5.2
+ * [new] Added |:VimwikiGoHome|, |:VimwikiTabGoHome| and
+ |:VimwikiExploreHome| commands.
+ * [new] Added <Leader>wt mapping to open vimwiki index file in a new tab.
+ * [new] Added g:vimwiki_gohome option that controls how|:VimwikiGoHome|
+ works when current buffer is changed. (Thanks Timur Zaripov)
+ * [fix] Fixed |:VimwikiRenameWord|. Very bad behaviour when autochdir isn't
+ set up.
+ * [fix] Fixed commands :Wiki2HTML and :WikiAll2HTML to be available only for
+ vimwiki buffers.
+ * [fix] Renamed :Wiki2HTML and :WikiAll2HTML to |:Vimwiki2HTML| and
+ |:VimwikiAll2HTML| commands.
+ * [fix] Help file corrections.
+
+0.5.1
+ * [new] This help is created.
+ * [new] Now you can fold headers.
+ * [new] <Plug>VimwikiGoHome and <Plug>VimwikiExploreHome were added.
+ * [fix] Bug with {{{HelloWikiWord}}} export to HTML is fixed.
+ * [del] Sync option removed from: Syntax highlighting for preformatted text
+ {{{ }}}.
+
+0.5
+ * [new] vimwiki default markup to HTML conversion improved.
+ * [new] Added basic GoogleWiki and MediaWiki markup languages.
+ * [new] Chinese [[complex wiki words]].
+
+0.4
+ * [new] vimwiki=>HTML converter in plain Vim language.
+ * [new] Plugin autoload.
+
+0.3.4
+ * [fix] Backup files (.wiki~) caused a bunch of errors while opening wiki
+ files.
+
+0.3.3
+ * FIXED: [[wiki word with dots at the end...]] didn't work.
+ * [new] Added error handling for delete wiki word function.
+ * [new] Added keybindings o and O for list items when g:vimwiki_smartCR=1.
+ * [new] Added keybinding <Leader>wh to visit wiki home directory.
+
+0.3.2
+ * [fix] Renaming -- error if complex wiki word contains %.
+ * [fix] Syntax highlighting for preformatted text {{{ }}}. Sync option
+ added.
+ * [fix] smartCR bug fix.
+
+0.3.1
+ * [fix] Renaming -- [[hello world?]] to [[hello? world]] links are not
+ updated.
+ * [fix] Buffers menu is a bit awkward after renaming.
+ * [new] Use mouse to follow links. Left double-click to follow WikiWord,
+ Rightclick then Leftclick to go back.
+
+0.3
+ * [new] Highlight non-existent WikiWords.
+ * [new] Delete current WikiWord (<Leader>wd).
+ * [new] g:vimwiki_smartCR=2 => use Vim comments (see :h comments :h
+ formatoptions) feature to deal with list items. (thx -- Dmitry Alexandrov)
+ * [new] Highlight TODO:, DONE:, FIXED:, FIXME:.
+ * [new] Rename current WikiWord -- be careful on Windows you cannot rename
+ wikiword to WikiWord. After renaming update all links to that renamed
+ WikiWord.
+ * [fix] Bug -- do not duplicate WikiWords in wiki history.
+ * [fix] after renaming [[wiki word]] twice buffers are not deleted.
+ * [fix] when renaming from [[wiki word]] to WikiWord result is [[WikiWord]]
+ * [fix] more than one complex words on one line is bugging each other when
+ try go to one of them. [[bla bla bla]] [[dodo dodo dodo]] becomes
+ bla bla bla]] [[dodo dodo dodo.
+
+
+0.2.2
+ * [new] Added keybinding <S-CR> -- split WikiWord
+ * [new] Added keybinding <C-CR> -- vertical split WikiWord
+
+0.2.1
+ * [new] Install on Linux now works.
+
+0.2
+ * [new] Added part of Google's Wiki syntax.
+ * [new] Added auto insert # with ENTER.
+ * [new] On/Off auto insert bullet with ENTER.
+ * [new] Strip [[complex wiki name]] from symbols that cannot be used in file
+ names.
+ * [new] Links to non-wiki files. Non wiki files are files with extensions ie
+ [[hello world.txt]] or [[my homesite.html]]
+
+0.1
+ * First public version.
+
+==============================================================================
+10. License *vimwiki-license*
+
+GNU General Public License v2
+http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+
+To be frank I didn't read it myself. It is not that easy reading. But I hope
+it's free enough to suit your needs.
+
+
+ vim:tw=78:ts=8:ft=help:fdm=marker:
+ftplugin/vimwiki.vim [[[1
+98
+" Vim filetype plugin file
+" Language: Wiki
+" Author: Maxim Kim (habamax at gmail dot com)
+" Home: http://code.google.com/p/vimwiki/
+" Filenames: *.wiki
+" Last Change: 20.01.2009 11:21
+" Version: 0.5.3
+
+if exists("b:did_ftplugin")
+ finish
+endif
+
+let b:did_ftplugin = 1 " Don't load another plugin for this buffer
+
+
+"" Defaults
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+" Reset the following options to undo this plugin.
+let b:undo_ftplugin = "setl tw< wrap< lbr< fenc< ff< sua< isf< awa< com< fo< fdt< fdm< fde< commentstring<"
+
+setlocal textwidth=0
+setlocal wrap
+setlocal linebreak
+setlocal fileencoding=utf-8
+setlocal fileformat=unix
+setlocal autowriteall
+" for gf
+execute 'setlocal suffixesadd='.g:vimwiki_ext
+setlocal isfname-=[,]
+
+if g:vimwiki_smartCR>=2
+ setlocal comments=b:*,b:#
+ setlocal formatoptions=ctnqro
+endif
+
+" folding for Headers using syntax fold method.
+setlocal fdm=syntax
+
+setlocal commentstring=<!--%s-->
+
+"" commands {{{2
+command! -buffer Vimwiki2HTML call vimwiki#Wiki2HTML(g:vimwiki_home_html, expand('%'))
+command! -buffer VimwikiAll2HTML call vimwiki#WikiAll2HTML(g:vimwiki_home_html)
+
+command! -buffer VimwikiNextWord call vimwiki#WikiNextWord()
+command! -buffer VimwikiPrevWord call vimwiki#WikiPrevWord()
+command! -buffer VimwikiDeleteWord call vimwiki#WikiDeleteWord()
+command! -buffer VimwikiRenameWord call vimwiki#WikiRenameWord()
+command! -buffer VimwikiFollowWord call vimwiki#WikiFollowWord('nosplit')
+command! -buffer VimwikiGoBackWord call vimwiki#WikiGoBackWord()
+command! -buffer VimwikiSplitWord call vimwiki#WikiFollowWord('split')
+command! -buffer VimwikiVSplitWord call vimwiki#WikiFollowWord('vsplit')
+
+"" commands 2}}}
+
+"" keybindings {{{
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+nmap <buffer> <Up> gk
+nmap <buffer> k gk
+vmap <buffer> <Up> gk
+vmap <buffer> k gk
+
+nmap <buffer> <Down> gj
+nmap <buffer> j gj
+vmap <buffer> <Down> gj
+vmap <buffer> j gj
+
+imap <buffer> <Down> <C-o>gj
+imap <buffer> <Up> <C-o>gk
+
+nmap <silent><buffer> <CR> :VimwikiFollowWord<CR>
+nmap <silent><buffer> <S-CR> :VimwikiSplitWord<CR>
+nmap <silent><buffer> <C-CR> :VimwikiVSplitWord<CR>
+
+nmap <buffer> <S-LeftMouse> <NOP>
+nmap <buffer> <C-LeftMouse> <NOP>
+noremap <silent><buffer> <2-LeftMouse> :VimwikiFollowWord<CR>
+noremap <silent><buffer> <S-2-LeftMouse> <LeftMouse>:VimwikiSplitWord<CR>
+noremap <silent><buffer> <C-2-LeftMouse> <LeftMouse>:VimwikiVSplitWord<CR>
+
+nmap <silent><buffer> <BS> :VimwikiGoBackWord<CR>
+"<BS> mapping doesn't work in vim console
+nmap <silent><buffer> <C-h> :VimwikiGoBackWord<CR>
+nmap <silent><buffer> <RightMouse><LeftMouse> :VimwikiGoBackWord<CR>
+
+nmap <silent><buffer> <TAB> :VimwikiNextWord<CR>
+nmap <silent><buffer> <S-TAB> :VimwikiPrevWord<CR>
+
+nmap <silent><buffer> <Leader>wd :VimwikiDeleteWord<CR>
+nmap <silent><buffer> <Leader>wr :VimwikiRenameWord<CR>
+
+if g:vimwiki_smartCR==1
+ inoremap <silent><buffer><CR> <CR><Space><C-O>:call vimwiki#WikiNewLine('checkup')<CR>
+ noremap <silent><buffer>o o<Space><C-O>:call vimwiki#WikiNewLine('checkup')<CR>
+ noremap <silent><buffer>O O<Space><C-O>:call vimwiki#WikiNewLine('checkdown')<CR>
+endif
+" keybindings }}}
+plugin/vimwiki.vim [[[1
+75
+" VimWiki plugin file
+" Language: Wiki
+" Author: Maxim Kim (habamax at gmail dot com)
+" Home: http://code.google.com/p/vimwiki/
+" Filenames: *.wiki
+" Last Change: 20.01.2009 11:22
+" Version: 0.5.3
+
+
+if exists("loaded_vimwiki") || &cp
+ finish
+endif
+let loaded_vimwiki = 1
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+function! s:default(varname,value)
+ if !exists('g:vimwiki_'.a:varname)
+ let g:vimwiki_{a:varname} = a:value
+ endif
+endfunction
+
+"" Could be redefined by users
+call s:default('home',"")
+call s:default('index',"index")
+call s:default('ext','.wiki')
+call s:default('upper','A-ZА-Я')
+call s:default('lower','a-zа-я')
+call s:default('other','0-9_')
+call s:default('maxhi','1')
+call s:default('stripsym','_')
+call s:default('smartCR',1)
+call s:default('home_html',g:vimwiki_home."html/")
+call s:default('syntax','default')
+call s:default('gohome','split')
+
+call s:default('history',[])
+
+let g:vimwiki_home = expand(g:vimwiki_home)
+
+let upp = g:vimwiki_upper
+let low = g:vimwiki_lower
+let oth = g:vimwiki_other
+let nup = low.oth
+let nlo = upp.oth
+let any = upp.nup
+
+let g:vimwiki_word1 = '\C\<['.upp.']['.nlo.']*['.low.']['.nup.']*['.upp.']['.any.']*\>'
+" let g:vimwiki_word2 = '\[\[['.upp.low.oth.'[:punct:][:space:]]\{-}\]\]'
+let g:vimwiki_word2 = '\[\[[^\]]\+\]\]'
+let g:vimwiki_rxWikiWord = g:vimwiki_word1.'\|'.g:vimwiki_word2
+
+execute 'autocmd! BufNewFile,BufReadPost,BufEnter *'.g:vimwiki_ext.' set ft=vimwiki'
+
+
+command! VimwikiGoHome call vimwiki#WikiGoHome()
+command! VimwikiTabGoHome tabedit <bar> call vimwiki#WikiGoHome()
+command! VimwikiExploreHome execute "Explore ".g:vimwiki_home
+
+if !hasmapto('<Plug>VimwikiGoHome')
+ map <silent><unique> <Leader>ww <Plug>VimwikiGoHome
+endif
+noremap <unique><script> <Plug>VimwikiGoHome :VimwikiGoHome<CR>
+
+if !hasmapto('<Plug>VimwikiTabGoHome')
+ map <silent><unique> <Leader>wt <Plug>VimwikiTabGoHome
+endif
+noremap <unique><script> <Plug>VimwikiTabGoHome :VimwikiTabGoHome<CR>
+
+if !hasmapto('<Plug>VimwikiExploreHome')
+ map <silent><unique> <Leader>wh <Plug>VimwikiExploreHome
+endif
+noremap <unique><script> <Plug>VimwikiExploreHome :VimwikiExploreHome<CR>
+
+syntax/vimwiki.vim [[[1
+122
+" Vim syntax file
+" Language: Wiki
+" Author: Maxim Kim (habamax at gmail dot com)
+" Home: http://code.google.com/p/vimwiki/
+" Filenames: *.wiki
+" Last Change: 20.01.2009 11:22
+" Version: 0.5.3
+
+" Quit if syntax file is already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+"" use max highlighting - could be quite slow if there are too many wikifiles
+if g:vimwiki_maxhi
+ " Every WikiWord is nonexistent
+ execute 'syntax match wikiNoExistsWord /'.g:vimwiki_word1.'/'
+ execute 'syntax match wikiNoExistsWord /'.g:vimwiki_word2.'/'
+ " till we find them in g:vimwiki_home
+ call vimwiki#WikiHighlightWords()
+else
+ " A WikiWord (unqualifiedWikiName)
+ execute 'syntax match wikiWord /'.g:vimwiki_word1.'/'
+ " A [[bracketed wiki word]]
+ execute 'syntax match wikiWord /'.g:vimwiki_word2.'/'
+endif
+
+
+" text: "this is a link (optional tooltip)":http://www.microsoft.com
+" TODO: check URL syntax against RFC
+let g:vimwiki_rxWeblink = '\("[^"(]\+\((\([^)]\+\))\)\?":\)\?\(https\?\|ftp\|gopher\|telnet\|file\|notes\|ms-help\):\(\(\(//\)\|\(\\\\\)\)\+[A-Za-z0-9:#@%/;$~_?+-=.&\-\\\\]*\)'
+execute 'syntax match wikiLink `'.g:vimwiki_rxWeblink.'`'
+
+" Emoticons: must come after the Textilisms, as later rules take precedence
+" over earlier ones. This match is an approximation for the ~70 distinct
+syntax match wikiEmoticons /\((.)\|:[()|$@]\|:-[DOPS()\]|$@]\|;)\|:'(\)/
+
+let g:vimwiki_rxTodo = '\(TODO:\|DONE:\|FIXME:\|FIXED:\)'
+execute 'syntax match wikiTodo /'. g:vimwiki_rxTodo .'/'
+
+" Load concrete Wiki syntax
+execute 'runtime! syntax/vimwiki_'.g:vimwiki_syntax.'.vim'
+
+execute 'syntax match wikiBold /'.g:vimwiki_rxBold.'/'
+
+execute 'syntax match wikiItalic /'.g:vimwiki_rxItalic.'/'
+
+execute 'syntax match wikiBoldItalic /'.g:vimwiki_rxBoldItalic.'/'
+
+execute 'syntax match wikiDelText /'.g:vimwiki_rxDelText.'/'
+
+execute 'syntax match wikiSuperScript /'.g:vimwiki_rxSuperScript.'/'
+
+execute 'syntax match wikiSubScript /'.g:vimwiki_rxSubScript.'/'
+
+execute 'syntax match wikiCode /'.g:vimwiki_rxCode.'/'
+
+" Aggregate all the regular text highlighting into wikiText
+syntax cluster wikiText contains=wikiItalic,wikiBold,wikiCode,wikiDelText,wikiSuperScript,wikiSubScript,wikiWord,wikiEmoticons
+
+" Header levels, 1-6
+execute 'syntax match wikiH1 /'.g:vimwiki_rxH1.'/'
+execute 'syntax match wikiH2 /'.g:vimwiki_rxH2.'/'
+execute 'syntax match wikiH3 /'.g:vimwiki_rxH3.'/'
+execute 'syntax match wikiH4 /'.g:vimwiki_rxH4.'/'
+execute 'syntax match wikiH5 /'.g:vimwiki_rxH5.'/'
+execute 'syntax match wikiH6 /'.g:vimwiki_rxH6.'/'
+
+" <hr>, horizontal rule
+execute 'syntax match wikiHR /'.g:vimwiki_rxHR.'/'
+
+" Tables. Each line starts and ends with '||'; each cell is separated by '||'
+execute 'syntax match wikiTable /'.g:vimwiki_rxTable.'/'
+
+" Bulleted list items start with whitespace(s), then '*'
+" syntax match wikiList /^\s\+\(\*\|[1-9]\+0*\.\).*$/ contains=@wikiText
+" highlight only bullets and digits.
+execute 'syntax match wikiList /'.g:vimwiki_rxListBullet.'/'
+execute 'syntax match wikiList /'.g:vimwiki_rxListNumber.'/'
+
+" Treat all other lines that start with spaces as PRE-formatted text.
+execute 'syntax match wikiPre /'.g:vimwiki_rxPre1.'/'
+
+execute 'syntax region wikiPre start=/'.g:vimwiki_rxPreStart.'/ end=/'.g:vimwiki_rxPreEnd.'/'
+" FIXME: this is quite buggy...
+" execute 'syntax sync match wikiPreSync grouphere wikiPre /'.g:vimwiki_rxPreStart.'/'
+
+
+" Folding
+execute 'syntax region wikiHeaderFolding start=/'.g:vimwiki_rxFoldHeadingStart.'/ end=/'.g:vimwiki_rxFoldHeadingEnd.'/ transparent fold'
+
+hi def link wikiH1 Title
+hi def link wikiH2 wikiH1
+hi def link wikiH3 wikiH2
+hi def link wikiH4 wikiH3
+hi def link wikiH5 wikiH4
+hi def link wikiH6 wikiH5
+hi def link wikiHR wikiH6
+
+hi def wikiBold term=bold cterm=bold gui=bold
+hi def wikiItalic term=italic cterm=italic gui=italic
+hi def wikiBoldItalic term=bold cterm=bold gui=bold,italic
+
+hi def link wikiCode PreProc
+hi def link wikiWord Underlined
+hi def link wikiNoExistsWord Error
+
+hi def link wikiPre PreProc
+hi def link wikiLink Underlined
+hi def link wikiList Type
+hi def link wikiTable PreProc
+hi def link wikiEmoticons Constant
+hi def link wikiDelText Comment
+hi def link wikiInsText Constant
+hi def link wikiSuperScript Constant
+hi def link wikiSubScript Constant
+hi def link wikiTodo Todo
+
+let b:current_syntax="vimwiki"
+
+syntax/vimwiki_default.vim [[[1
+66
+" Vim syntax file
+" Language: Wiki (vimwiki default)
+" Author: Maxim Kim (habamax at gmail dot com)
+" Home: http://code.google.com/p/vimwiki/
+" Filenames: *.wiki
+" Last Change: 20.01.2009 11:22
+" Version: 0.5.3
+
+" text: *strong*
+" let g:vimwiki_rxBold = '\*[^*]\+\*'
+let g:vimwiki_rxBold = '\(^\|\s\+\|[[:punct:]]\)\zs\*[^*`]\+\*\ze\([[:punct:]]\|\s\+\|$\)'
+
+" text: _emphasis_
+" let g:vimwiki_rxItalic = '_[^_]\+_'
+let g:vimwiki_rxItalic = '\(^\|\s\+\|[[:punct:]]\)\zs_[^_`]\+_\ze\([[:punct:]]\|\s\+\|$\)'
+
+" text: *_strong italic_* or _*italic strong*_
+let g:vimwiki_rxBoldItalic = '\(^\|\s\+\|[[:punct:]]\)\zs\(\*_[^*_`]\+_\*\)\|\(_\*[^*_`]\+\*_\)\ze\([[:punct:]]\|\s\+\|$\)'
+
+" text: `code`
+let g:vimwiki_rxCode = '`[^`]\+`'
+
+" text: ~~deleted text~~
+let g:vimwiki_rxDelText = '\~\~[^~`]\+\~\~'
+
+" text: ^superscript^
+let g:vimwiki_rxSuperScript = '\^[^^`]\+\^'
+
+" text: ,,subscript,,
+let g:vimwiki_rxSubScript = ',,[^,`]\+,,'
+
+" Header levels, 1-6
+let g:vimwiki_rxH1 = '^!\{1}.*$'
+let g:vimwiki_rxH2 = '^!\{2}.*$'
+let g:vimwiki_rxH3 = '^!\{3}.*$'
+let g:vimwiki_rxH4 = '^!\{4}.*$'
+let g:vimwiki_rxH5 = '^!\{5}.*$'
+let g:vimwiki_rxH6 = '^!\{6}.*$'
+
+" <hr>, horizontal rule
+let g:vimwiki_rxHR = '^----.*$'
+
+" Tables. Each line starts and ends with '||'; each cell is separated by '||'
+let g:vimwiki_rxTable = '||'
+
+" Bulleted list items start with whitespace(s), then '*'
+" syntax match wikiList /^\s\+\(\*\|[1-9]\+0*\.\).*$/ contains=@wikiText
+" highlight only bullets and digits.
+" let g:vimwiki_rxList = '^\s\+\(\*\|#\)'
+let g:vimwiki_rxListBullet = '^\s\+\*'
+let g:vimwiki_rxListNumber = '^\s\+#'
+
+" Treat all other lines that start with spaces as PRE-formatted text.
+let g:vimwiki_rxPre1 = '^\s\+[^[:blank:]*#].*$'
+
+" Preformatted text
+" let g:vimwiki_rxPreStart = '^{{{\s*$'
+" let g:vimwiki_rxPreEnd = '^}}}\s*$'
+let g:vimwiki_rxPreStart = '{{{'
+let g:vimwiki_rxPreEnd = '}}}'
+
+" Header's folding
+let g:vimwiki_rxFoldHeadingStart = '^!'
+let g:vimwiki_rxFoldHeadingEnd = '\n\+\ze!'
+
+" vim:tw=0:
+syntax/vimwiki_google.vim [[[1
+65
+" Vim syntax file
+" Language: Wiki
+" Author: Maxim Kim (habamax at gmail dot com)
+" Home: http://code.google.com/p/vimwiki/
+" Filenames: *.wiki
+" Last Change: 20.01.2009 11:22
+" Version: 0.5.3
+
+" text: *strong*
+" let g:vimwiki_rxBold = '\*[^*]\+\*'
+let g:vimwiki_rxBold = '\(^\|\s\+\|[[:punct:]]\)\zs\*[^*`]\+\*\ze\([[:punct:]]\|\s\+\|$\)'
+
+" text: _emphasis_
+" let g:vimwiki_rxItalic = '_[^_]\+_'
+let g:vimwiki_rxItalic = '\(^\|\s\+\|[[:punct:]]\)\zs_[^_`]\+_\ze\([[:punct:]]\|\s\+\|$\)'
+
+" text: *_strong italic_* or _*italic strong*_
+let g:vimwiki_rxBoldItalic = '\(^\|\s\+\|[[:punct:]]\)\zs\(\*_[^*_`]\+_\*\)\|\(_\*[^*_`]\+\*_\)\ze\([[:punct:]]\|\s\+\|$\)'
+
+" text: `code`
+let g:vimwiki_rxCode = '`[^`]\+`'
+
+" text: ~~deleted text~~
+let g:vimwiki_rxDelText = '\~\~[^~`]\+\~\~'
+
+" text: ^superscript^
+let g:vimwiki_rxSuperScript = '\^[^^`]\+\^'
+
+" text: ,,subscript,,
+let g:vimwiki_rxSubScript = ',,[^,`]\+,,'
+
+" Header levels, 1-6
+let g:vimwiki_rxH1 = '^\s*=\{1}.*=\{1}\s*$'
+let g:vimwiki_rxH2 = '^\s*=\{2}.*=\{2}\s*$'
+let g:vimwiki_rxH3 = '^\s*=\{3}.*=\{3}\s*$'
+let g:vimwiki_rxH4 = '^\s*=\{4}.*=\{4}\s*$'
+let g:vimwiki_rxH5 = '^\s*=\{5}.*=\{5}\s*$'
+let g:vimwiki_rxH6 = '^\s*=\{6}.*=\{6}\s*$'
+
+" <hr>, horizontal rule
+let g:vimwiki_rxHR = '^----.*$'
+
+" Tables. Each line starts and ends with '||'; each cell is separated by '||'
+let g:vimwiki_rxTable = '||'
+
+" Bulleted list items start with whitespace(s), then '*'
+" syntax match wikiList /^\s\+\(\*\|[1-9]\+0*\.\).*$/ contains=@wikiText
+" highlight only bullets and digits.
+let g:vimwiki_rxListBullet = '^\s\+\*'
+let g:vimwiki_rxListNumber = '^\s\+#'
+
+" Treat all other lines that start with spaces as PRE-formatted text.
+let g:vimwiki_rxPre1 = '^\s\+[^[:blank:]*#].*$'
+
+" Preformatted text
+" let g:vimwiki_rxPreStart = '^{{{\s*$'
+" let g:vimwiki_rxPreEnd = '^}}}\s*$'
+let g:vimwiki_rxPreStart = '{{{'
+let g:vimwiki_rxPreEnd = '}}}'
+
+" Header's folding
+let g:vimwiki_rxFoldHeadingStart = '^=\+[^=]\+='
+let g:vimwiki_rxFoldHeadingEnd = '\n\ze=\+[^=]\+='
+
+" vim:tw=0:
+syntax/vimwiki_media.vim [[[1
+60
+" Vim syntax file
+" Language: Wiki (MediaWiki)
+" Author: Maxim Kim (habamax at gmail dot com)
+" Home: http://code.google.com/p/vimwiki/
+" Filenames: *.wiki
+" Last Change: 20.01.2009 11:22
+" Version: 0.5.3
+
+" text: '''strong'''
+let g:vimwiki_rxBold = "'''[^']\\+'''"
+
+" text: ''emphasis''
+let g:vimwiki_rxItalic = "''[^']\\+''"
+
+" text: '''''strong italic'''''
+let g:vimwiki_rxBoldItalic = "'''''[^']\\+'''''"
+
+" text: `code`
+let g:vimwiki_rxCode = '`[^`]\+`'
+
+" text: ~~deleted text~~
+let g:vimwiki_rxDelText = '\~\~[^~]\+\~\~'
+
+" text: ^superscript^
+let g:vimwiki_rxSuperScript = '\^[^^]\+\^'
+
+" text: ,,subscript,,
+let g:vimwiki_rxSubScript = ',,[^,]\+,,'
+
+" Header levels, 1-6
+let g:vimwiki_rxH1 = '^\s*=\{1}.\+=\{1}\s*$'
+let g:vimwiki_rxH2 = '^\s*=\{2}.\+=\{2}\s*$'
+let g:vimwiki_rxH3 = '^\s*=\{3}.\+=\{3}\s*$'
+let g:vimwiki_rxH4 = '^\s*=\{4}.\+=\{4}\s*$'
+let g:vimwiki_rxH5 = '^\s*=\{5}.\+=\{5}\s*$'
+let g:vimwiki_rxH6 = '^\s*=\{6}.\+=\{6}\s*$'
+
+" <hr>, horizontal rule
+let g:vimwiki_rxHR = '^----.*$'
+
+" Tables. Each line starts and ends with '||'; each cell is separated by '||'
+let g:vimwiki_rxTable = '||'
+
+" Bulleted list items start with whitespace(s), then '*'
+" highlight only bullets and digits.
+let g:vimwiki_rxListBullet = '^\s*\*\+\([^*]*$\)\@='
+let g:vimwiki_rxListNumber = '^\s*#\+'
+
+" Treat all other lines that start with spaces as PRE-formatted text.
+let g:vimwiki_rxPre1 = '^\s\+[^[:blank:]*#].*$'
+
+" Preformatted text
+let g:vimwiki_rxPreStart = '<pre>'
+let g:vimwiki_rxPreEnd = '<\/pre>'
+
+" Header's folding
+let g:vimwiki_rxFoldHeadingStart = '^=\+[^=]\+='
+let g:vimwiki_rxFoldHeadingEnd = '\n\ze=\+[^=]\+='
+
+" vim:tw=0: