vimwiki

Personal wiki for vim
git clone https://github.com/vimwiki/vimwiki.git
Log | Files | Refs | README | LICENSE

commit 58e072fa9220229091cbf11ca388eab6cbe25194
parent 79b78dc9ee8c18c5b96043166f7f7affcc322db0
Author: Maxim Kim <habamax@gmail.com>
Date:   Thu, 18 Jul 2013 09:55:24 +0400

Do not load whole syntax file for a buffer twice.

Load twice only regexes for a concrete syntax.

Diffstat:
Mautoload/vimwiki/u.vim | 10++++++++++
Mftplugin/vimwiki.vim | 3++-
Msyntax/vimwiki.vim | 16+++++-----------
Msyntax/vimwiki_default.vim | 4+++-
Msyntax/vimwiki_markdown.vim | 3+++
Msyntax/vimwiki_media.vim | 5++++-
6 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim @@ -78,3 +78,13 @@ endfunction "}}} function! vimwiki#u#escape(string) "{{{ return escape(a:string, '.*[]\^$') endfunction "}}} + +" Load concrete Wiki syntax: sets regexes and templates for headers and links +function vimwiki#u#reload_regexes() "{{{ + execute 'runtime! syntax/vimwiki_'.VimwikiGet('syntax').'.vim' +endfunction "}}} + +" Load syntax-specific functionality +function vimwiki#u#reload_regexes_custom() "{{{ + execute 'runtime! syntax/vimwiki_'.VimwikiGet('syntax').'_custom.vim' +endfunction "}}} diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim @@ -7,7 +7,8 @@ if exists("b:did_ftplugin") finish endif let b:did_ftplugin = 1 " Don't load another plugin for this buffer -execute 'runtime! syntax/vimwiki.vim' + +call vimwiki#u#reload_regexes() " UNDO list {{{ " Reset the following options to undo this plugin. diff --git a/syntax/vimwiki.vim b/syntax/vimwiki.vim @@ -9,6 +9,7 @@ if version < 600 elseif exists("b:current_syntax") finish endif + "TODO do nothing if ...? (?) let starttime = reltime() " start the clock if VimwikiGet('maxhi') @@ -43,10 +44,8 @@ let g:vimwiki_rxWeblinkUrl = g:vimwiki_rxWebProtocols . " }}} -" ------------------------------------------------------------------------- -" Load concrete Wiki syntax: sets regexes and templates for headers and links -execute 'runtime! syntax/vimwiki_'.VimwikiGet('syntax').'.vim' -" ------------------------------------------------------------------------- +call vimwiki#u#reload_regexes() + let time0 = vimwiki#u#time(starttime) "XXX " LINKS: setup of larger regexes {{{ @@ -399,10 +398,7 @@ syntax match VimwikiTableRow /^\s*|.\+|\s*$/ syntax match VimwikiCellSeparator \ /\%(|\)\|\%(-\@<=+\-\@=\)\|\%([|+]\@<=-\+\)/ contained -" List items -let g:vimwiki_rxListItemWithoutCB = '^\s*\%(\('.g:vimwiki_rxListBullet.'\)\|\('.g:vimwiki_rxListNumber.'\)\)\s' -let g:vimwiki_rxListItem = g:vimwiki_rxListItemWithoutCB . '\+\%(\[\(['.join(g:vimwiki_listsyms, '').']\)\]\s\)\?' - +" Lists execute 'syntax match VimwikiList /'.g:vimwiki_rxListItemWithoutCB.'/' execute 'syntax match VimwikiList /'.g:vimwiki_rxListDefine.'/' execute 'syntax match VimwikiListTodo /'.g:vimwiki_rxListItem.'/' @@ -577,10 +573,8 @@ hi def link VimwikiLinkCharT VimwikiLinkT hi def link VimwikiNoExistsLinkCharT VimwikiNoExistsLinkT "}}} -" ------------------------------------------------------------------------- " Load syntax-specific functionality -execute 'runtime! syntax/vimwiki_'.VimwikiGet('syntax').'_custom.vim' -" ------------------------------------------------------------------------- +call vimwiki#u#reload_regexes_custom() " FIXME it now does not make sense to pretend there is a single syntax "vimwiki" let b:current_syntax="vimwiki" diff --git a/syntax/vimwiki_default.vim b/syntax/vimwiki_default.vim @@ -80,8 +80,10 @@ let g:vimwiki_number_types = ['1)', '1.', 'i)', 'I)', 'a)', 'A)'] "it is used for i_<C-L><C-J> among other things let g:vimwiki_list_markers = ['-', '•', '1.', '*', 'I)', 'a)'] let g:vimwiki_rxListDefine = '::\(\s\|$\)' - call vimwiki#lst#setup_marker_infos() + +let g:vimwiki_rxListItemWithoutCB = '^\s*\%(\('.g:vimwiki_rxListBullet.'\)\|\('.g:vimwiki_rxListNumber.'\)\)\s' +let g:vimwiki_rxListItem = g:vimwiki_rxListItemWithoutCB . '\+\%(\[\(['.join(g:vimwiki_listsyms, '').']\)\]\s\)\?' let g:vimwiki_rxListItemAndChildren = '^\(\s*\)\%('.g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.'\)\s\+\['.g:vimwiki_listsyms[4].'\]\s.*\%(\n\%(\1\s.*\|^$\)\)*' " Preformatted text diff --git a/syntax/vimwiki_markdown.vim b/syntax/vimwiki_markdown.vim @@ -78,6 +78,9 @@ let g:vimwiki_number_types = ['1.'] let g:vimwiki_list_markers = ['-', '*', '+', '1.'] let g:vimwiki_rxListDefine = '::\%(\s\|$\)' call vimwiki#lst#setup_marker_infos() + +let g:vimwiki_rxListItemWithoutCB = '^\s*\%(\('.g:vimwiki_rxListBullet.'\)\|\('.g:vimwiki_rxListNumber.'\)\)\s' +let g:vimwiki_rxListItem = g:vimwiki_rxListItemWithoutCB . '\+\%(\[\(['.join(g:vimwiki_listsyms, '').']\)\]\s\)\?' let g:vimwiki_rxListItemAndChildren = '^\(\s*\)\%('.g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.'\)\s\+\['.g:vimwiki_listsyms[4].'\]\s.*\%(\n\%(\1\s.*\|^$\)\)*' " Preformatted text diff --git a/syntax/vimwiki_media.vim b/syntax/vimwiki_media.vim @@ -59,7 +59,10 @@ let g:vimwiki_number_types = [] let g:vimwiki_list_markers = ['*', '#'] let g:vimwiki_rxListDefine = '^\%(;\|:\)\s' call vimwiki#lst#setup_marker_infos() -let g:vimwiki_rxListItemAndChildren = '^\('.g:vimwiki_rxListBullet.'\)\s\+\['.g:vimwiki_listsyms[4].'\]\s.*\%(\n\%(\1\%('.g:vimwiki_rxListBullet.'\).*\|^$\|^\s.*\)\)*' + +let g:vimwiki_rxListItemWithoutCB = '^\s*\%(\('.g:vimwiki_rxListBullet.'\)\|\('.g:vimwiki_rxListNumber.'\)\)\s' +let g:vimwiki_rxListItem = g:vimwiki_rxListItemWithoutCB . '\+\%(\[\(['.join(g:vimwiki_listsyms, '').']\)\]\s\)\?' +let g:vimwiki_rxListItemAndChildren = '^\(\s*\)\%('.g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.'\)\s\+\['.g:vimwiki_listsyms[4].'\]\s.*\%(\n\%(\1\s.*\|^$\)\)*' " Preformatted text let g:vimwiki_rxPreStart = '<pre>'