From c47bf06d929862fb362e360ec59924cc07d6e1d2 Mon Sep 17 00:00:00 2001 From: Maxim Kim Date: Wed, 11 Mar 2009 00:00:00 +0000 Subject: [PATCH] Version 0.8.1 * [new] Vimwiki's foldmethod changed from syntax to expr. Foldtext is changed to be nicer with folded list items. * [new] Fold/outline list items. * [new] It is possible now to edit wiki files in arbitrary directories which is not in g:vimwiki_list's paths. New WikiWords are created in the path of the current WikiWord. * [new] User can remap Vimwiki's built in mappings. * [new] Added g:vimwiki_use_mouse. It is off by default. * [fix] Removed mapping. --- vimwiki_0_8.vba => vimwiki_0_8_1.vba | 460 ++++++++++++++++++--------- 1 file changed, 309 insertions(+), 151 deletions(-) rename vimwiki_0_8.vba => vimwiki_0_8_1.vba (88%) diff --git a/vimwiki_0_8.vba b/vimwiki_0_8_1.vba similarity index 88% rename from vimwiki_0_8.vba rename to vimwiki_0_8_1.vba index da52574..ef6a9cd 100644 --- a/vimwiki_0_8.vba +++ b/vimwiki_0_8_1.vba @@ -2,7 +2,7 @@ UseVimball finish doc\vimwiki.txt [[[1 -766 +835 *vimwiki.txt* A Personal Wiki for Vim __ __ ______ __ __ ______ __ __ ______ ~ @@ -13,12 +13,12 @@ doc\vimwiki.txt [[[1 \ `\___/ /\_____\\ \_\\ \_\ `\___x___/ /\_____\\ \_\ \_\ /\_____\~ `\/__/ \/_____/ \/_/ \/_/'\/__//__/ \/_____/ \/_/\/_/ \/_____/~ - Version: 0.8.0 ~ + Version: 0.8.1 ~ ============================================================================== CONTENTS *vimwiki-contents* - 1. Intro ...................................|vimwiki| + 1. Quick start .............................|vimwiki| 2. Prerequisites ...........................|vimwiki-prerequisites| 3. Mappings ................................|vimwiki-mappings| 3.1. Global mappings .....................|vimwiki-global-mappings| @@ -34,7 +34,7 @@ CONTENTS *vimwiki-contents* 5.5. Lists ...............................|vimwiki-syntax-lists| 5.6. Tables ..............................|vimwiki-syntax-tables| 5.7. Preformatted text ...................|vimwiki-syntax-preformatted| - 6. Folding .................................|vimwiki-folding| + 6. Folding/Outline .........................|vimwiki-folding| 7. Getting Things Done (GTD)................|vimwiki-gtd| 8. Options .................................|vimwiki-options| 9. Help ....................................|vimwiki-help| @@ -45,11 +45,11 @@ CONTENTS *vimwiki-contents* ============================================================================== -1. Intro *vimwiki* +1. Quick start *vimwiki* -Vimwiki being a personal wiki for Vim allows you to organize text information -using hyper links. To do a quick start press ww (this is usually \ww) -to go to your index wiki file. By default it is located in: > +Vimwiki is a personal wiki for Vim. Using it you can organize text files with +hyperlinks. To do a quick start press 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. @@ -97,7 +97,7 @@ There are global and local mappings in vimwiki. 2ww opens second wiki from |g:vimwiki_list|. 3ww opens third wiki from |g:vimwiki_list|. etc. - To redefine: > + To remap: > :map w VimwikiGoHome < See also|:VimwikiGoHome| @@ -109,14 +109,14 @@ See also|:VimwikiGoHome| 2ww tabopens second wiki from |g:vimwiki_list|. 3ww tabopens third wiki from |g:vimwiki_list|. etc. - To redefine: > + To remap: > :map t VimwikiTabGoHome < See also|:VimwikiTabGoHome| ws or VimwikiUISelect List and select available wikies. - To redefine: > + To remap: > :map wq VimwikiUISelect < See also|:VimwikiUISelect| @@ -128,36 +128,53 @@ See also|:VimwikiUISelect| Normal mode (Keyboard):~ Follow/Create WikiWord. Maps to|:VimwikiFollowWord|. - + To remap: > + :map wf VimwikiFollowWord +< Split and follow/create WikiWord Maps to|:VimwikiSplitWord|. - + To remap: > + :map we VimwikiSplitWord +< Vertical split and follow/create WikiWord Maps to|:VimwikiVSplitWord|. - + To remap: > + :map wq VimwikiVSplitWord +< Go back to previous WikiWord Maps to|:VimwikiGoBackWord|. - + To remap: > + :map wb VimwikiGoBackWord +< Find next WikiWord Maps to|:VimwikiNextWord|. - + To remap: > + :map wn VimwikiNextWord +< Find previous WikiWord Maps to|:VimwikiPrevWord|. - + To remap: > + :map wp VimwikiPrevWord +< wd Delete WikiWord you are in. Maps to|:VimwikiDeleteWord|. - + To remap: > + :map dd VimwikiDeleteWord +< wr Rename WikiWord you are in. Maps to|:VimwikiRenameWord|. - + To remap: > + :map rr VimwikiRenameWord +< Toggle list item on/off (checked/unchecked) Maps to|:VimwikiGTDToggleItem|. - To redefine: > - map tt VimwikiToggleListItem + To remap: > + :map tt VimwikiToggleListItem < See |vimwiki-gtd|. Normal mode (Mouse): ~ +Works only if |g:vimwiki_use_mouse| is set to 1. <2-LeftMouse> Follow/Create WikiWord Split and follow/create WikiWord Vertical split and follow/create WikiWord @@ -374,13 +391,45 @@ It could be started from column 0. ============================================================================== -6. Folding *vimwiki-folding* +6. Folding/Outline *vimwiki-folding* -Vimwiki has headers folding -- 6 levels. -Just enable vim's folding with: > +Vimwiki can fold or outline headers and list items. +Enable folding with the following command: > :set foldenable > -Then hit |zM| and contents of each header would be folded away. +Example: +! My current task + * [ ] Do stuff 1 + * [ ] Do substuff 1.1 + * [ ] Do substuff 1.2 + * [ ] Do substuff 1.2.1 + * [ ] Do substuff 1.2.2 + * [ ] Do substuff 1.3 + * [ ] Do stuff 2 + * [ ] Do stuff 3 + +Hit |zM| : +! My current task [8] --------------------------------------~ + +Hit |zr| : +! My current task~ + * [ ] Do stuff 1 [5] --------------------------------------~ + * [ ] Do stuff 2~ + * [ ] Do stuff 3~ + +Hit |zr| one more time: +! My current task~ + * [ ] Do stuff 1~ + * [ ] Do substuff 1.1~ + * [ ] Do substuff 1.2 [2] -------------------------------~ + * [ ] Do substuff 1.3~ + * [ ] 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|. +For MediaWiki * or # should be in the first column. + ============================================================================== 7. Getting Things Done (GTD) *vimwiki-gtd* @@ -553,14 +602,14 @@ 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" + 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" + let g:vimwiki_lower="a-z" ------------------------------------------------------------------------------ Default: "_" *g:vimwiki_stripsym* @@ -570,6 +619,15 @@ 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: 0 *g:vimwiki_use_mouse* +Values: 0, 1 + +Use local mouse mappings from|vimwiki-local-mappings|: > + let g:vimwiki_use_mouse = 1 + +Do not use it: > + let g:vimwiki_use_mouse = 0 ============================================================================== 9. Help *vimwiki-help* @@ -603,7 +661,7 @@ 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. Send me a better code instead. :) +ineffective code. Send me a better one instead. :) Many thanks to all of you for voting vimwiki up on www.vim.org. I do vimwiki in my spare time I could use to dance argentine tango with beautiful women. @@ -618,6 +676,17 @@ Vim plugins website: http://www.vim.org/scripts/script.php?script_id=2226 ============================================================================== 12. Changelog *vimwiki-changelog* +0.8.1 + * [new] Vimwiki's foldmethod changed from syntax to expr. Foldtext is + changed to be nicer with folded list items. + * [new] Fold/outline list items. + * [new] It is possible now to edit wiki files in arbitrary directories which + is not in g:vimwiki_list's paths. New WikiWords are created in the path of + the current WikiWord. + * [new] User can remap Vimwiki's built in mappings. + * [new] Added |g:vimwiki_use_mouse|. It is off by default. + * [fix] Removed mapping. + 0.8.0 * [new] Multiple wikies support. A lot of options have been changed, see |vimwiki-options| @@ -770,7 +839,7 @@ it's free enough to suit your needs. vim:tw=78:ts=8:ft=help syntax\vimwiki.vim [[[1 -128 +108 " Vimwiki syntax file " Author: Maxim Kim " Home: http://code.google.com/p/vimwiki/ @@ -828,12 +897,12 @@ execute 'syntax match wikiCode /'.g:vimwiki_rxCode.'/' 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.'/' +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.'/' "
horizontal rule execute 'syntax match wikiHR /'.g:vimwiki_rxHR.'/' @@ -850,32 +919,12 @@ execute 'syntax match wikiPre /'.g:vimwiki_rxPre1.'/' execute 'syntax region wikiPre start=/'.g:vimwiki_rxPreStart.'/ end=/'.g:vimwiki_rxPreEnd.'/' -" Folding -execute 'syntax region wikiH1Folding start=/'.g:vimwiki_rxFoldH1Start. - \ '/ end=/'.g:vimwiki_rxFoldH1End.'/me=s-1 transparent fold' -execute 'syntax region wikiH2Folding start=/'.g:vimwiki_rxFoldH2Start. - \ '/ end=/'.g:vimwiki_rxFoldH2End.'/me=s-1 transparent fold' -execute 'syntax region wikiH3Folding start=/'.g:vimwiki_rxFoldH3Start. - \ '/ end=/'.g:vimwiki_rxFoldH3End.'/me=s-1 transparent fold' -execute 'syntax region wikiH4Folding start=/'.g:vimwiki_rxFoldH4Start. - \ '/ end=/'.g:vimwiki_rxFoldH4End.'/me=s-1 transparent fold' -execute 'syntax region wikiH5Folding start=/'.g:vimwiki_rxFoldH5Start. - \ '/ end=/'.g:vimwiki_rxFoldH5End.'/me=s-1 transparent fold' -execute 'syntax region wikiH6Folding start=/'.g:vimwiki_rxFoldH6Start. - \ '/ end=/'.g:vimwiki_rxFoldH6End.'/me=s-1 transparent fold' - " 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 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 link wikiHeader Title hi def wikiBold term=bold cterm=bold gui=bold hi def wikiItalic term=italic cterm=italic gui=italic @@ -900,7 +949,7 @@ hi def link wikiTodo Todo let b:current_syntax="vimwiki" syntax\vimwiki_default.vim [[[1 -73 +60 " Vimwiki syntax file " Default syntax " Author: Maxim Kim @@ -936,6 +985,12 @@ let g:vimwiki_rxH3 = '^!\{3}.*$' let g:vimwiki_rxH4 = '^!\{4}.*$' let g:vimwiki_rxH5 = '^!\{5}.*$' let g:vimwiki_rxH6 = '^!\{6}.*$' +let g:vimwiki_rxHeader = '\('.g:vimwiki_rxH1.'\)\|'. + \ '\('.g:vimwiki_rxH2.'\)\|'. + \ '\('.g:vimwiki_rxH3.'\)\|'. + \ '\('.g:vimwiki_rxH4.'\)\|'. + \ '\('.g:vimwiki_rxH5.'\)\|'. + \ '\('.g:vimwiki_rxH6.'\)' "
, horizontal rule let g:vimwiki_rxHR = '^----.*$' @@ -954,28 +1009,9 @@ let g:vimwiki_rxPre1 = '^\s\+[^[:blank:]*#].*$' let g:vimwiki_rxPreStart = '{{{' let g:vimwiki_rxPreEnd = '}}}' -" Header's folding -let g:vimwiki_rxFoldH1Start = '^![^!]\+.*' -let g:vimwiki_rxFoldH1End = '^![^!]\+.*' - -let g:vimwiki_rxFoldH2Start = '^!![^!]\+.*' -let g:vimwiki_rxFoldH2End = '^!!\{,1}[^!]\+.*' - -let g:vimwiki_rxFoldH3Start = '^!!![^!]\+.*' -let g:vimwiki_rxFoldH3End = '^!!\{,2}[^!]\+.*' - -let g:vimwiki_rxFoldH4Start = '^!!!![^!]\+.*' -let g:vimwiki_rxFoldH4End = '^!!\{,3}[^!]\+.*' - -let g:vimwiki_rxFoldH5Start = '^!!!!![^!]\+.*' -let g:vimwiki_rxFoldH5End = '^!!\{,4}[^!]\+.*' - -let g:vimwiki_rxFoldH6Start = '^!!!!!![^!]\+.*' -let g:vimwiki_rxFoldH6End = '^!!\{,5}[^!]\+.*' - " vim:tw=0: syntax\vimwiki_google.vim [[[1 -75 +62 " Vimwiki syntax file " GoogleWiki syntax " Author: Maxim Kim @@ -1011,6 +1047,12 @@ 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.'\)' "
, horizontal rule let g:vimwiki_rxHR = '^----.*$' @@ -1031,28 +1073,9 @@ let g:vimwiki_rxPre1 = '^\s\+[^[:blank:]*#].*$' let g:vimwiki_rxPreStart = '{{{' let g:vimwiki_rxPreEnd = '}}}' -" Header's folding -let g:vimwiki_rxFoldH1Start = '^=[^=]\+.*=\s*$' -let g:vimwiki_rxFoldH1End = '^=[^=]\+=\s*$' - -let g:vimwiki_rxFoldH2Start = '^==[^=]\+.*==\s*$' -let g:vimwiki_rxFoldH2End = '^==\{,1}[^=]\+.*==\{,1}\s*$' - -let g:vimwiki_rxFoldH3Start = '^===[^=]\+.*===\s*$' -let g:vimwiki_rxFoldH3End = '^==\{,2}[^=]\+.*==\{,2}\s*$' - -let g:vimwiki_rxFoldH4Start = '^====[^=]\+.*====\s*$' -let g:vimwiki_rxFoldH4End = '^==\{,3}[^=]\+.*==\{,4}\s*$' - -let g:vimwiki_rxFoldH5Start = '^=====[^=]\+.*=====\s*$' -let g:vimwiki_rxFoldH5End = '^==\{,4}[^=]\+.*==\{,4}\s*$' - -let g:vimwiki_rxFoldH6Start = '^======[^=]\+.*======\s*$' -let g:vimwiki_rxFoldH6End = '^==\{,5}[^=]\+.*==\{,5}\s*$' - " vim:tw=0: syntax\vimwiki_media.vim [[[1 -72 +59 " Vimwiki syntax file " MediaWiki syntax " Author: Maxim Kim @@ -1086,6 +1109,12 @@ 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.'\)' "
, horizontal rule let g:vimwiki_rxHR = '^----.*$' @@ -1105,25 +1134,6 @@ let g:vimwiki_rxPre1 = '^\s\+[^[:blank:]*#].*$' let g:vimwiki_rxPreStart = '
'
 let g:vimwiki_rxPreEnd = '<\/pre>'
 
-" Header's folding
-let g:vimwiki_rxFoldH1Start = '^=[^=]\+.*=\s*$'
-let g:vimwiki_rxFoldH1End = '^=[^=]\+=\s*$'
-
-let g:vimwiki_rxFoldH2Start = '^==[^=]\+.*==\s*$'
-let g:vimwiki_rxFoldH2End = '^==\{,1}[^=]\+.*==\{,1}\s*$'
-
-let g:vimwiki_rxFoldH3Start = '^===[^=]\+.*===\s*$'
-let g:vimwiki_rxFoldH3End = '^==\{,2}[^=]\+.*==\{,2}\s*$'
-
-let g:vimwiki_rxFoldH4Start = '^====[^=]\+.*====\s*$'
-let g:vimwiki_rxFoldH4End = '^==\{,3}[^=]\+.*==\{,4}\s*$'
-
-let g:vimwiki_rxFoldH5Start = '^=====[^=]\+.*=====\s*$'
-let g:vimwiki_rxFoldH5End = '^==\{,4}[^=]\+.*==\{,4}\s*$'
-
-let g:vimwiki_rxFoldH6Start = '^======[^=]\+.*======\s*$'
-let g:vimwiki_rxFoldH6End = '^==\{,5}[^=]\+.*==\{,5}\s*$'
-
 " vim:tw=78:
 autoload\vimwiki_gtd.vim	[[[1
 164
@@ -1144,7 +1154,7 @@ let s:rx_list_item = '\('.
       \ '\s*\zs\[.\?\]'
 let s:rx_li_box = '\[.\?\]'
 let s:rx_li_unchecked = '\[\s\?\]'
-" used in substitutes
+" used in substitutions
 let s:rx_li_check = '\[x\]'
 let s:rx_li_uncheck = '\[ \]'
 
@@ -1292,7 +1302,7 @@ function! vimwiki_gtd#GTDToggleItem()"{{{
   endwhile
 endfunction"}}}
 autoload\vimwiki_html.vim	[[[1
-679
+686
 " Vimwiki autoload plugin file
 " Export to HTML
 " Author: Maxim Kim 
@@ -1303,8 +1313,8 @@ if exists("g:loaded_vimwiki_html_auto") || &cp
 endif
 let g:loaded_vimwiki_html_auto = 1
 
-" I do not want to redefine these functions. Really. I do not want them to be
-" global too.
+" TODO: move the next 2 functions into vimwiki#msg and
+" vimwiki#get_file_name_only.
 function! s:msg(message) "{{{
   echohl WarningMsg
   echomsg 'vimwiki: '.a:message
@@ -1527,7 +1537,14 @@ function! s:process_tag_list(line, lists) "{{{
         call add(lines, item[0])
       endwhile
     endif
-    call add(lines, '
  • '.substitute(a:line, lstRegExp, '', '').'
  • ') + " apply strikethrough for checked list items + if a:line =~ '^\s\+\(\*\|#\)\s*\[x]' + call add(lines, '
  • '. + \ substitute(a:line, lstRegExp, '', ''). + \ '
  • ') + else + call add(lines, '
  • '.substitute(a:line, lstRegExp, '', '').'
  • ') + endif else while len(a:lists) let item = remove(a:lists, -1) @@ -2313,7 +2330,7 @@ function! vimwiki#WikiUISelect()"{{{ call vimwiki#WikiGoHome(r) endfunction"}}} ftplugin\vimwiki.vim [[[1 -96 +210 " Vimwiki filetype plugin file " Author: Maxim Kim " Home: http://code.google.com/p/vimwiki/ @@ -2329,7 +2346,10 @@ 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 = "setl tw< wrap< lbr< sua< isf< awa< com< fo< fdt< fdm< fde< commentstring<" +let b:undo_ftplugin = "setlocal textwidth< wrap< linebreak< ". + \ "suffixesadd< isfname< autowriteall< comments< ". + \ "formatoptions< foldtext< ". + \ "foldmethod< foldexpr< commentstring< " setlocal textwidth=0 setlocal wrap @@ -2337,7 +2357,7 @@ setlocal linebreak setlocal autowriteall " for gf -execute 'setlocal suffixesadd=.'.VimwikiGet('ext') +execute 'setlocal suffixesadd='.VimwikiGet('ext') setlocal isfname-=[,] " for list items, and list items with checkboxes @@ -2346,12 +2366,90 @@ setlocal comments+=b:#\ [\ ],b:#[\ ],b:#\ [],b:#[],b:#\ [x],b:#[x] setlocal comments+=n:*,n:# setlocal formatoptions=ctnqro -" folding for Headers using syntax fold method. -setlocal fdm=syntax + +" folding for Headers using expr fold method. +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) + + " Header folding... + if line =~ g:vimwiki_rxHeader + return s:count_first_sym(line) + endif + if nline =~ g:vimwiki_rxHeader + return '<'.s:count_first_sym(nline) + endif + + " List item folding... + let pnum = a:lnum - 1 + let nnum = a:lnum + 1 + + if line =~ s:rx_list_item && + \ nline =~ s:rx_list_item + if VimwikiGet('syntax') == 'media' + return s:get_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) + endif + endif + + return -1 +endfunction "}}} + +function! s:get_level(lnum, nnum) "{{{ + let level = ((indent(a:nnum) - indent(a:lnum)) / &sw) + if level > 0 + return "a".level + elseif level < 0 + return "s".abs(level) + else + return "=" + endif +endfunction "}}} + +" Special case: MediaWiki list items level do not use indents. +function! s:get_level_media(lnum, nnum) "{{{ + let level = s:count_first_sym(getline(a:nnum)) - + \ s:count_first_sym(getline(a:lnum)) + if level > 0 + return "a".level + elseif level < 0 + return "s".abs(level) + else + return "=" + endif +endfunction "}}} + +function! s:count_first_sym(line) "{{{ + let idx = 0 + while a:line[idx] == a:line[0] && idx < len(a:line) + let idx += 1 + endwhile + return idx +endfunction "}}} + + +setlocal foldtext=VimwikiFoldText() +function! VimwikiFoldText() "{{{ + let line = getline(v:foldstart) + return line.' ['.(v:foldend - v:foldstart).'] ' +endfunction "}}} setlocal commentstring= -"" commands {{{2 +"" commands {{{ command! -buffer Vimwiki2HTML call vimwiki_html#Wiki2HTML(expand(VimwikiGet('path_html')), expand('%')) command! -buffer VimwikiAll2HTML call vimwiki_html#WikiAll2HTML(expand(VimwikiGet('path_html'))) @@ -2365,7 +2463,7 @@ command! -buffer VimwikiSplitWord call vimwiki#WikiFollowWord('split') command! -buffer VimwikiVSplitWord call vimwiki#WikiFollowWord('vsplit') command! -buffer VimwikiGTDToggleItem call vimwiki_gtd#GTDToggleItem() -"" commands 2}}} +"" commands }}} "" keybindings {{{ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -2379,39 +2477,72 @@ nmap j gj vmap gj vmap j gj -imap gj -imap gk +if g:vimwiki_use_mouse + nmap + nmap + noremap <2-LeftMouse> :VimwikiFollowWord + noremap :VimwikiSplitWord + noremap :VimwikiVSplitWord + noremap :VimwikiGoBackWord +endif -nmap :VimwikiFollowWord -nmap :VimwikiSplitWord -nmap :VimwikiVSplitWord +if !hasmapto('VimwikiFollowWord') + nmap VimwikiFollowWord +endif +noremap