Version 0.8.2

* [del] Removed google syntax file.
  * [new] Default vimwiki syntax is a subset of google's one. Header's has been changed from !Header to =Header=. It is easier to maintain only 2 syntaxes. See :h vimwiki-syntax-headers.
  * [new] Multiline paragraphs -- less longlines.
  * [new] Comments. See :h vimwiki-syntax-comments.
  * [del] Removed setlocal textwidth = 0 from ftplugin.
  * [fix] New regexps for bold, italic, bolditalic.
  * [fix] The last item in List sometimes fold-in incorrectly.
  * [fix] Minor tweaks on default css.
This commit is contained in:
Maxim Kim 2009-03-14 00:00:00 +00:00 committed by Able Scraper
parent c47bf06d92
commit 768f9a1b11
1 changed files with 260 additions and 184 deletions

View File

@ -2,7 +2,7 @@
UseVimball
finish
doc\vimwiki.txt [[[1
835
872
*vimwiki.txt* A Personal Wiki for Vim
__ __ ______ __ __ ______ __ __ ______ ~
@ -13,7 +13,7 @@ doc\vimwiki.txt [[[1
\ `\___/ /\_____\\ \_\\ \_\ `\___x___/ /\_____\\ \_\ \_\ /\_____\~
`\/__/ \/_____/ \/_/ \/_/'\/__//__/ \/_____/ \/_/\/_/ \/_____/~
Version: 0.8.1 ~
Version: 0.8.2 ~
==============================================================================
CONTENTS *vimwiki-contents*
@ -34,6 +34,7 @@ CONTENTS *vimwiki-contents*
5.5. Lists ...............................|vimwiki-syntax-lists|
5.6. Tables ..............................|vimwiki-syntax-tables|
5.7. Preformatted text ...................|vimwiki-syntax-preformatted|
5.8. Comments ............................|vimwiki-syntax-comment|
6. Folding/Outline .........................|vimwiki-folding|
7. Getting Things Done (GTD)................|vimwiki-gtd|
8. Options .................................|vimwiki-options|
@ -47,15 +48,15 @@ CONTENTS *vimwiki-contents*
==============================================================================
1. Quick start *vimwiki*
Vimwiki is a personal wiki for Vim. Using it you can organize text files with
hyperlinks. To do a quick start press <Leader>ww (this is usually \ww) to go
to your index wiki file. By default it is located in: >
Vimwiki being a personal wiki for Vim allows you to organize text information
using hyper links. To do a quick start press <Leader>ww (this is usually \ww)
to go to your index wiki file. By default it is located in: >
~/vimwiki/index.wiki
You do not have to create it manually -- vimwiki can make it for you.
Feed it with the following example (copy&paste without and between ---) :
---
! My knowledge base
= My knowledge base =
* MyUrgentTasks -- things to be done _yesterday_!!!
* ProjectGutenberg -- good books are power.
* MusicILike, MusicIHate.
@ -245,9 +246,8 @@ 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.
syntax and vimwiki is not an exception here. Default vimwiki's syntax is a
subset of google's wiki syntax markup.
As for MediaWiki's syntax -- it is not that convenient for non English
(Russian in my case :)) keyboard layouts to emphasize text as it uses a lot
@ -255,8 +255,8 @@ 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. See |vimwiki-option-syntax|.
doesn't have all the fancy stuff original MediaWiki syntax has though).
See |vimwiki-option-syntax|.
------------------------------------------------------------------------------
@ -303,18 +303,38 @@ Path to image (ie. images/pabloymoira.jpg) is relative to
------------------------------------------------------------------------------
5.3. Headers *vimwiki-syntax-headers*
= Header level 1 =~
== Header level 2 ==~
=== Header level 3 ===
==== Header level 4 ====
===== Header level 5 ====
====== Header level 6 =====
Note: before vimwiki 0.8.2, header's markup syntax used exclamation marks:
! Header level 1
!! Header level 2
!!! Header level 3
!!!! Header level 4
!!!!! Header level 5
!!!!!! Header level 6
etc...
If you upgrade from pre 0.8.2 you might find the next commands useful.
BACKUP FIRST!
To easily change headers from !Header to =Header= in your wiki files use the
next commands (\ww first to open your wiki index file): >
:args .wiki
:argdo %s/^\(!\+\)\([^!].*$\)/\=substitute(submatch(1),'!','=','g').submatch(2).substitute(submatch(1),'!','=','g')
<
------------------------------------------------------------------------------
5.4. Paragraphs *vimwiki-syntax-paragraphs*
Every line started from column 0 (zero) is a paragraph if it is not a list,
table or preformatted text.
Paragraph is group of lines started from column 1 (no indentation). Paragraphs
divided by a blank line:
This is first paragraph
with two lines.
This is a second paragraph with
two lines.
------------------------------------------------------------------------------
5.5. Lists *vimwiki-syntax-lists*
@ -390,6 +410,14 @@ Or use {{{ and }}} to define pre:
It could be started from column 0.
------------------------------------------------------------------------------
5.8. Comments *vimwiki-syntax-comments*
Text between <!-- and --> is a comment.
Ex: >
<!-- this text would not be in HTML -->
<
==============================================================================
6. Folding/Outline *vimwiki-folding*
@ -398,7 +426,7 @@ Enable folding with the following command: >
:set foldenable
>
Example:
! My current task
= My current task =
* [ ] Do stuff 1
* [ ] Do substuff 1.1
* [ ] Do substuff 1.2
@ -409,16 +437,16 @@ Example:
* [ ] Do stuff 3
Hit |zM| :
! My current task [8] --------------------------------------~
= My current task = [8] --------------------------------------~
Hit |zr| :
! My current task~
= My current task =~
* [ ] Do stuff 1 [5] --------------------------------------~
* [ ] Do stuff 2~
* [ ] Do stuff 3~
Hit |zr| one more time:
! My current task~
= My current task =~
* [ ] Do stuff 1~
* [ ] Do substuff 1.1~
* [ ] Do substuff 1.2 [2] -------------------------------~
@ -426,8 +454,8 @@ Hit |zr| one more time:
* [ ] Do stuff 2~
* [ ] Do stuff 3~
NOTE: Whether you use default or google syntax, folding on list items should
work properly only if all of them are indented using current |shiftwidth|.
NOTE: Whether you use default syntax, folding on list items should work
properly only if all of them are indented using current |shiftwidth|.
For MediaWiki * or # should be in the first column.
@ -438,7 +466,7 @@ That is not really a GTD :). But vimwiki can handle "projects" that are just
lists of items you can check/uncheck.
Consider the following example:
!!! Toggleable list of items
= Toggleable list of items =
* [x] Toggle list item on/off.
* [x] Simple toggling between [ ] and [x].
* [x] All list's subitems should be toggled on/off appropriately.
@ -524,18 +552,15 @@ Extension of wiki files: >
<
*vimwiki-option-syntax*
Key Default value Values~
syntax default default, google, media
syntax default default, media
Description~
Wiki syntax.
You can use different markup languages (currently default vimwiki, google and
You can use different markup languages (currently default vimwiki 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_list = [{'path': '~/my_site/', 'syntax': 'media'}]
To use google's wiki markup: >
let g:vimwiki_list = [{'path': '~/my_site/', 'syntax': 'google'}]
<
*vimwiki-option-html_header*
@ -676,6 +701,18 @@ Vim plugins website: http://www.vim.org/scripts/script.php?script_id=2226
==============================================================================
12. Changelog *vimwiki-changelog*
0.8.2
* [del] Removed google syntax file.
* [new] Default vimwiki syntax is a subset of google's one. Header's has
been changed from !Header to =Header=. It is easier to maintain only 2
syntaxes. See |vimwiki-syntax-headers|.
* [new] Multiline paragraphs -- less longlines.
* [new] Comments. See |vimwiki-syntax-comments|.
* [del] Removed setlocal textwidth = 0 from ftplugin.
* [fix] New regexps for bold, italic, bolditalic.
* [fix] The last item in List sometimes fold-in incorrectly.
* [fix] Minor tweaks on default css.
0.8.1
* [new] Vimwiki's foldmethod changed from syntax to expr. Foldtext is
changed to be nicer with folded list items.
@ -839,10 +876,11 @@ it's free enough to suit your needs.
vim:tw=78:ts=8:ft=help
syntax\vimwiki.vim [[[1
108
110
" Vimwiki syntax file
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
" vim:tw=78:
" Quit if syntax file is already loaded
if version < 600
@ -865,7 +903,6 @@ else
execute 'syntax match wikiWord /'.g:vimwiki_word2.'/'
endif
let g:vimwiki_rxWeblink = '\("[^"(]\+\((\([^)]\+\))\)\?":\)\?\(https\?\|ftp\|gopher\|telnet\|file\|notes\|ms-help\):\(\(\(//\)\|\(\\\\\)\)\+[A-Za-z0-9:#@%/;$~_?+=.&\\\-]*\)'
execute 'syntax match wikiLink `'.g:vimwiki_rxWeblink.'`'
@ -885,6 +922,8 @@ execute 'syntax match wikiItalic /'.g:vimwiki_rxItalic.'/'
execute 'syntax match wikiBoldItalic /'.g:vimwiki_rxBoldItalic.'/'
execute 'syntax match wikiItalicBold /'.g:vimwiki_rxItalicBold.'/'
execute 'syntax match wikiDelText /'.g:vimwiki_rxDelText.'/'
execute 'syntax match wikiSuperScript /'.g:vimwiki_rxSuperScript.'/'
@ -894,15 +933,10 @@ 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
" syntax cluster wikiText contains=wikiItalic,wikiBold,wikiCode,wikiDelText,wikiSuperScript,wikiSubScript,wikiWord,wikiEmoticons
" Header levels, 1-6
execute 'syntax match wikiHeader /'.g:vimwiki_rxHeader.'/'
" 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.'/'
@ -915,20 +949,24 @@ 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 match wikiPre /'.g:vimwiki_rxPre1.'/ contains=wikiComment'
execute 'syntax region wikiPre start=/'.g:vimwiki_rxPreStart.'/ end=/'.g:vimwiki_rxPreEnd.'/'
execute 'syntax region wikiPre start=/'.g:vimwiki_rxPreStart.'/ end=/'.g:vimwiki_rxPreEnd.'/ contains=wikiComment'
" List item checkbox
syntax match wikiCheckBox /\[.\?\]/
execute 'syntax match wikiCheckBoxDone /'.g:vimwiki_rxListBullet.'\s*\[x\].*$/'
execute 'syntax match wikiCheckBoxDone /'.g:vimwiki_rxListNumber.'\s*\[x\].*$/'
hi def link wikiHeader Title
syntax region wikiComment start='<!--' end='-->'
hi def link wikiHeader Title
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 wikiItalicBold wikiBoldItalic
hi def link wikiCode PreProc
hi def link wikiWord Underlined
@ -941,30 +979,42 @@ hi def link wikiCheckBox wikiList
hi def link wikiCheckBoxDone Comment
hi def link wikiTable PreProc
hi def link wikiEmoticons Constant
hi def link wikiDelText Comment
hi def link wikiDelText Constant
hi def link wikiInsText Constant
hi def link wikiSuperScript Constant
hi def link wikiSubScript Constant
hi def link wikiTodo Todo
hi def link wikiComment Comment
let b:current_syntax="vimwiki"
syntax\vimwiki_default.vim [[[1
60
69
" Vimwiki syntax file
" Default syntax
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
" vim:tw=78:
" text: *strong*
" let g:vimwiki_rxBold = '\*[^*]\+\*'
let g:vimwiki_rxBold = '\(^\|\s\+\|[[:punct:]]\)\zs\*[^*`]\+\*\ze\([[:punct:]]\|\s\+\|$\)'
let g:vimwiki_rxBold = '\(^\|\s\|[[:punct:]]\)\zs\*[^*`[:space:]]'.
\'[^*`]\+'.
\'[^*`[:space:]]\*\ze\([[:punct:]]\|\s\|$\)'
" text: _emphasis_
" let g:vimwiki_rxItalic = '_[^_]\+_'
let g:vimwiki_rxItalic = '\(^\|\s\+\|[[:punct:]]\)\zs_[^_`]\+_\ze\([[:punct:]]\|\s\+\|$\)'
let g:vimwiki_rxItalic = '\(^\|\s\|[[:punct:]]\)\zs_[^_`[:space:]]'.
\'[^_`]\+'.
\'[^_`[:space:]]_\ze\([[:punct:]]\|\s\|$\)'
" text: *_strong italic_* or _*italic strong*_
let g:vimwiki_rxBoldItalic = '\(^\|\s\+\|[[:punct:]]\)\zs\(\*_[^*_`]\+_\*\)\|\(_\*[^*_`]\+\*_\)\ze\([[:punct:]]\|\s\+\|$\)'
" text: *_bold italic_* or _*italic bold*_
let g:vimwiki_rxBoldItalic = '\(^\|\s\|[[:punct:]]\)\zs\*_[^*_`[:space:]]'.
\'[^*_`]\+'.
\'[^*_`[:space:]]_\*\ze\([[:punct:]]\|\s\|$\)'
let g:vimwiki_rxItalicBold = '\(^\|\s\|[[:punct:]]\)\zs_\*[^*_`[:space:]]'.
\'[^*_`]\+'.
\'[^*_`[:space:]]\*_\ze\([[:punct:]]\|\s\|$\)'
" text: `code`
let g:vimwiki_rxCode = '`[^`]\+`'
@ -979,12 +1029,12 @@ let g:vimwiki_rxSuperScript = '\^[^^`]\+\^'
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}.*$'
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*$'
let g:vimwiki_rxHeader = '\('.g:vimwiki_rxH1.'\)\|'.
\ '\('.g:vimwiki_rxH2.'\)\|'.
\ '\('.g:vimwiki_rxH3.'\)\|'.
@ -1008,78 +1058,13 @@ let g:vimwiki_rxPre1 = '^\s\+[^[:blank:]*#].*$'
" Preformatted text
let g:vimwiki_rxPreStart = '{{{'
let g:vimwiki_rxPreEnd = '}}}'
" vim:tw=0:
syntax\vimwiki_google.vim [[[1
62
" Vimwiki syntax file
" GoogleWiki syntax
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
" 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*$'
let g:vimwiki_rxHeader = '\('.g:vimwiki_rxH1.'\)\|'.
\ '\('.g:vimwiki_rxH2.'\)\|'.
\ '\('.g:vimwiki_rxH3.'\)\|'.
\ '\('.g:vimwiki_rxH4.'\)\|'.
\ '\('.g:vimwiki_rxH5.'\)\|'.
\ '\('.g:vimwiki_rxH6.'\)'
" <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 = '{{{'
let g:vimwiki_rxPreEnd = '}}}'
" vim:tw=0:
syntax\vimwiki_media.vim [[[1
59
" Vimwiki syntax file
" MediaWiki syntax
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
" vim:tw=78:
" text: '''strong'''
let g:vimwiki_rxBold = "'''[^']\\+'''"
@ -1089,6 +1074,7 @@ let g:vimwiki_rxItalic = "''[^']\\+''"
" text: '''''strong italic'''''
let g:vimwiki_rxBoldItalic = "'''''[^']\\+'''''"
let g:vimwiki_rxItalicBold = g:vimwiki_rxBoldItalic
" text: `code`
let g:vimwiki_rxCode = '`[^`]\+`'
@ -1103,12 +1089,12 @@ let g:vimwiki_rxSuperScript = '\^[^^]\+\^'
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*$'
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*$'
let g:vimwiki_rxHeader = '\('.g:vimwiki_rxH1.'\)\|'.
\ '\('.g:vimwiki_rxH2.'\)\|'.
\ '\('.g:vimwiki_rxH3.'\)\|'.
@ -1133,8 +1119,6 @@ let g:vimwiki_rxPre1 = '^\s\+[^[:blank:]*#].*$'
" Preformatted text
let g:vimwiki_rxPreStart = '<pre>'
let g:vimwiki_rxPreEnd = '<\/pre>'
" vim:tw=78:
autoload\vimwiki_gtd.vim [[[1
164
" Vimwiki autoload plugin file
@ -1302,7 +1286,7 @@ function! vimwiki_gtd#GTDToggleItem()"{{{
endwhile
endfunction"}}}
autoload\vimwiki_html.vim [[[1
686
767
" Vimwiki autoload plugin file
" Export to HTML
" Author: Maxim Kim <habamax@gmail.com>
@ -1334,23 +1318,27 @@ endfunction " }}}
function! s:create_default_CSS(path) " {{{
let path = expand(a:path)
if glob(path.'style.css') == ""
let lines = ['body {margin: 1em 5em 1em 5em; font-size: 100%; line-height: 1.5;}']
let lines = []
call add(lines, 'body {margin: 1em 5em 1em 5em; font-size: 100%; line-height: 1.5;}')
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, 'h2 {font-size: 1.6em;}')
call add(lines, 'h3 {font-size: 1.2em;}')
call add(lines, 'h4 {font-size: 1.2em;}')
call add(lines, 'h5 {font-size: 1.1em;}')
call add(lines, 'h6 {font-size: 1.1em;}')
call add(lines, 'h1, h2, h3, h4, h5, h6 {margin: 1.2em auto 0.6em;}')
call add(lines, 'h1 {border-bottom: 1px solid #3366cc; text-align: left; padding: 0em 1em 0em 0em;}')
call add(lines, 'h3 {background: #e5ecf9; border-top: 1px solid #3366cc; padding: 0em 0.3em 0em 0.5em;}')
call add(lines, 'h3 {background: #e5ecf9; border-top: 1px solid #3366cc; padding: 0em 0.1em 0em 0.1em;}')
call add(lines, 'h4 {color: #333333;}')
call add(lines, 'h5 {color: #555555;}')
call add(lines, 'h6 {color: #777777;}')
call add(lines, 'p, ul, ol, pre {margin: 0.6em auto;}')
call add(lines, 'ul {margin-left: 2em; padding-left: 0.5em;}')
call add(lines, 'img {border: none;}')
call add(lines, 'pre {border-left: 1px 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; width: 100%;}')
call add(lines, '.todo {font-weight: bold; text-decoration: underline; color: #FF0000;}')
call add(lines, '.todo {font-weight: bold; background-color: #f0ece8; color: #a03020;}')
call add(lines, '.strike {text-decoration: line-through;}')
call writefile(lines, path.'style.css')
@ -1450,6 +1438,14 @@ function! s:close_tag_pre(pre, ldest) "{{{
return a:pre
endfunction "}}}
function! s:close_tag_para(para, ldest) "{{{
if a:para
call insert(a:ldest, "</p>")
return 0
endif
return a:para
endfunction "}}}
function! s:close_tag_table(table, ldest) "{{{
if a:table
call insert(a:ldest, "</table>")
@ -1554,35 +1550,47 @@ function! s:process_tag_list(line, lists) "{{{
return [processed, lines]
endfunction "}}}
function! s:process_tag_p(line) "{{{
function! s:process_tag_para(line, para) "{{{
let lines = []
let para = a:para
let processed = 0
if a:line =~ '^\S'
call add(lines, '<p>'.a:line.'</p>')
return [1, lines]
if !para
call add(lines, "<p>")
let para = 1
endif
let processed = 1
call add(lines, a:line)
elseif para && a:line =~ '^\s*$'
call add(lines, "</p>")
let para = 0
endif
return [0, lines]
return [processed, lines, para]
endfunction "}}}
function! s:process_tag_h(line) "{{{
let line = a:line
let processed = 0
if a:line =~ '^!\{6}.*$'
let line = '<h6>'.strpart(a:line, 6).'</h6>'
let processed = 1
elseif a:line =~ '^!\{5}.*$'
let line = '<h5>'.strpart(a:line, 5).'</h5>'
let processed = 1
elseif a:line =~ '^!\{4}.*$'
let line = '<h4>'.strpart(a:line, 4).'</h4>'
let processed = 1
elseif a:line =~ '^!\{3}.*$'
let line = '<h3>'.strpart(a:line, 3).'</h3>'
let processed = 1
elseif a:line =~ '^!\{2}.*$'
let line = '<h2>'.strpart(a:line, 2).'</h2>'
let processed = 1
elseif a:line =~ '^!\{1}.*$'
let line = '<h1>'.strpart(a:line, 1).'</h1>'
let h_level = 0
if a:line =~ g:vimwiki_rxH6
let h_level = 6
elseif a:line =~ g:vimwiki_rxH5
let h_level = 5
elseif a:line =~ g:vimwiki_rxH4
let h_level = 4
elseif a:line =~ g:vimwiki_rxH3
let h_level = 3
elseif a:line =~ g:vimwiki_rxH2
let h_level = 2
elseif a:line =~ g:vimwiki_rxH1
let h_level = 1
endif
if h_level > 0
" rtrim
let line = substitute(a:line, '\s\+$', '', 'g')
let line = '<h'.h_level.'>'.
\ strpart(line, h_level, len(line) - h_level * 2).
\'</h'.h_level.'>'
let processed = 1
endif
return [processed, line]
@ -1642,6 +1650,7 @@ function! s:process_tags(line) "{{{
let line = s:make_tag(line, g:vimwiki_rxWikiWord, '', '', 0, 's:make_wikiword_link')
let line = s:make_tag(line, g:vimwiki_rxItalic, '<em>', '</em>')
let line = s:make_tag(line, g:vimwiki_rxBold, '<strong>', '</strong>')
" let line = s:make_tag(line, g:vimwiki_rxItalic, '<em>', '</em>')
let line = s:make_tag(line, g:vimwiki_rxTodo, '<span class="todo">', '</span>', 0)
let line = s:make_tag(line, g:vimwiki_rxDelText, '<span class="strike">', '</span>', 2)
let line = s:make_tag(line, g:vimwiki_rxSuperScript, '<sup><small>', '</small></sup>', 1)
@ -1801,7 +1810,8 @@ function! s:make_barebone_link(entag) "{{{
return line
endfunction "}}}
function! s:get_html_from_wiki_line(line, pre, code, table, lists) " {{{
function! s:get_html_from_wiki_line(line, para, pre, code, table, lists) " {{{
let para = a:para
let pre = a:pre
let code = a:code
let table = a:table
@ -1824,6 +1834,9 @@ function! s:get_html_from_wiki_line(line, pre, code, table, lists) " {{{
if processed && pre
let pre = s:close_tag_pre(pre, lines)
endif
if processed && para
let para = s:close_tag_para(para, lines)
endif
call extend(res_lines, lines)
endif
@ -1839,6 +1852,9 @@ function! s:get_html_from_wiki_line(line, pre, code, table, lists) " {{{
if processed && code
let code = s:close_tag_code(code, lines)
endif
if processed && para
let para = s:close_tag_para(para, lines)
endif
call extend(res_lines, lines)
endif
@ -1855,6 +1871,9 @@ function! s:get_html_from_wiki_line(line, pre, code, table, lists) " {{{
if processed && table
let table = s:close_tag_table(table, lines)
endif
if processed && para
let para = s:close_tag_para(para, lines)
endif
call map(lines, 's:process_tags(v:val)')
@ -1892,9 +1911,10 @@ function! s:get_html_from_wiki_line(line, pre, code, table, lists) " {{{
"" P
if !processed
let line = s:process_tags(line)
let [processed, lines] = s:process_tag_p(line)
let [processed, lines, para] = s:process_tag_para(line, para)
if processed && len(lists)
call s:close_tag_list(lists, lines)
endif
if processed && pre
let pre = s:close_tag_pre(pre, res_lines)
endif
@ -1904,6 +1924,9 @@ function! s:get_html_from_wiki_line(line, pre, code, table, lists) " {{{
if processed && table
let table = s:close_tag_table(table, res_lines)
endif
call map(lines, 's:process_tags(v:val)')
call extend(res_lines, lines)
endif
@ -1912,10 +1935,49 @@ function! s:get_html_from_wiki_line(line, pre, code, table, lists) " {{{
call add(res_lines, line)
endif
return [res_lines, pre, code, table, lists]
return [res_lines, para, pre, code, table, lists]
endfunction " }}}
function! s:remove_comments(lines) "{{{
let res = []
let multiline_comment = 0
let idx = 0
while idx < len(a:lines)
let line = a:lines[idx]
let idx += 1
if multiline_comment
let col = matchend(line, '-->',)
if col != -1
let multiline_comment = 0
let line = strpart(line, col)
else
continue
endif
endif
if !multiline_comment && line =~ '<!--.*-->'
let line = substitute(line, '<!--.*-->', '', 'g')
if line =~ '^\s*$'
continue
endif
endif
if !multiline_comment
let col = match(line, '<!--',)
if col != -1
let multiline_comment = 1
let line = strpart(line, 1, col - 1)
endif
endif
call add(res, line)
endwhile
return res
endfunction "}}}
function! vimwiki_html#Wiki2HTML(path, wikifile) "{{{
if !s:syntax_supported()
@ -1926,9 +1988,11 @@ function! vimwiki_html#Wiki2HTML(path, wikifile) "{{{
let path = expand(a:path)
call vimwiki#mkdir(path)
let lsource=readfile(a:wikifile)
let lsource = s:remove_comments(readfile(a:wikifile))
let ldest = s:get_html_header(s:get_file_name_only(a:wikifile), &encoding)
let para = 0
let pre = 0
let code = 0
let table = 0
@ -1936,8 +2000,8 @@ function! vimwiki_html#Wiki2HTML(path, wikifile) "{{{
for line in lsource
let oldpre = pre
let [lines, pre, code, table, lists] = s:get_html_from_wiki_line(line,
\ pre, code, table, lists)
let [lines, para, pre, code, table, lists] =
\ s:get_html_from_wiki_line(line, para, pre, code, table, lists)
" A dirty hack: There could be a lot of empty strings before
" s:process_tag_pre find out `pre` is over. So we should delete
@ -1955,6 +2019,7 @@ function! vimwiki_html#Wiki2HTML(path, wikifile) "{{{
"" close opened tags if any
let lines = []
call s:close_tag_pre(pre, lines)
call s:close_tag_para(para, lines)
call s:close_tag_code(code, lines)
call s:close_tag_list(lists, lines)
call s:close_tag_table(table, lines)
@ -2330,7 +2395,7 @@ function! vimwiki#WikiUISelect()"{{{
call vimwiki#WikiGoHome(r)
endfunction"}}}
ftplugin\vimwiki.vim [[[1
210
221
" Vimwiki filetype plugin file
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
@ -2346,12 +2411,11 @@ let b:did_ftplugin = 1 " Don't load another plugin for this buffer
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Reset the following options to undo this plugin.
let b:undo_ftplugin = "setlocal textwidth< wrap< linebreak< ".
let b:undo_ftplugin = "setlocal wrap< linebreak< ".
\ "suffixesadd< isfname< autowriteall< comments< ".
\ "formatoptions< foldtext< ".
\ "foldmethod< foldexpr< commentstring< "
setlocal textwidth=0
setlocal wrap
setlocal linebreak
setlocal autowriteall
@ -2371,16 +2435,29 @@ setlocal formatoptions=ctnqro
setlocal fdm=expr
setlocal foldexpr=VimwikiFoldLevel(v:lnum)
function! VimwikiFoldLevel(lnum) "{{{
let s:rx_list_item = '\('.
\ g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.
\ '\)'
let pline = getline(a:lnum - 1)
let line = getline(a:lnum)
let nline = getline(a:lnum + 1)
" if a:lnum == 1
" return 'a1'
" elseif a:lnum == 3
" return 's1'
" elseif a:lnum == 4
" return 'a1'
" elseif a:lnum == 6
" return 's1'
" elseif a:lnum == 7
" return 'a1'
" elseif a:lnum == 8
" return 's1'
" elseif a:lnum == 9
" return 'a1'
" endif
" return '-1'
" Header folding...
if line =~ g:vimwiki_rxHeader
return s:count_first_sym(line)
return '>'.s:count_first_sym(line)
endif
if nline =~ g:vimwiki_rxHeader
return '<'.s:count_first_sym(nline)
@ -2390,25 +2467,24 @@ function! VimwikiFoldLevel(lnum) "{{{
let pnum = a:lnum - 1
let nnum = a:lnum + 1
if line =~ s:rx_list_item &&
\ nline =~ s:rx_list_item
let rx_list_item = '\('.
\ g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.
\ '\)'
if line =~ rx_list_item &&
\ nline =~ rx_list_item
if VimwikiGet('syntax') == 'media'
return s:get_level_media(a:lnum, nnum)
return s:get_li_level_media(a:lnum, nnum)
else
return s:get_level(a:lnum, nnum)
endif
elseif line =~ s:rx_list_item
if VimwikiGet('syntax') == 'media'
return s:get_level_media(a:lnum, pnum)
else
return s:get_level(a:lnum, pnum)
return s:get_li_level(a:lnum, nnum)
endif
elseif line =~ rx_list_item
return "="
endif
return -1
endfunction "}}}
function! s:get_level(lnum, nnum) "{{{
function! s:get_li_level(lnum, nnum) "{{{
let level = ((indent(a:nnum) - indent(a:lnum)) / &sw)
if level > 0
return "a".level
@ -2420,7 +2496,7 @@ function! s:get_level(lnum, nnum) "{{{
endfunction "}}}
" Special case: MediaWiki list items level do not use indents.
function! s:get_level_media(lnum, nnum) "{{{
function! s:get_li_level_media(lnum, nnum) "{{{
let level = s:count_first_sym(getline(a:nnum)) -
\ s:count_first_sym(getline(a:lnum))
if level > 0