vimwiki

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

commit 78a41b79c65b3f7293a474bf731408d7b3e9a5ba
parent ca28174dcc6b4c8555846c3f0e28028db39cd626
Author: Rane Brown <rane.brown@gmail.com>
Date:   Fri,  3 Apr 2020 13:31:36 -0600

Merge branch 'multi_ft' into dev

This allows setting multiple filetypes at the same time e.g. 'vimwiki.md'
Closes #817, resolves #830, resolves #461.

Diffstat:
Mautoload/vimwiki/base.vim | 8++++----
Mautoload/vimwiki/tbl.vim | 4++--
Mautoload/vimwiki/u.vim | 24++++++++++++++++++++++++
Mautoload/vimwiki/vars.vim | 1+
Mdoc/vimwiki.txt | 14++++++++++++++
Mplugin/vimwiki.vim | 6+++---
6 files changed, 48 insertions(+), 9 deletions(-)

diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim @@ -341,7 +341,7 @@ function! vimwiki#base#open_link(cmd, link, ...) abort if is_wiki_link if a:0 let vimwiki_prev_link = [a:1, []] - elseif &filetype ==# 'vimwiki' + elseif vimwiki#u#ft_is_vw() let vimwiki_prev_link = [vimwiki#path#current_wiki_file(), getpos('.')] endif endif @@ -437,7 +437,7 @@ function! vimwiki#base#goto(...) abort \ vimwiki#vars#get_wikilocal('path') . key . vimwiki#vars#get_wikilocal('ext'), \ anchor, \ vimwiki_prev_link, - \ &filetype ==# 'vimwiki') + \ vimwiki#u#ft_is_vw()) endfunction @@ -853,8 +853,8 @@ function! vimwiki#base#edit_file(command, filename, anchor, ...) abort " Make sure no other plugin takes ownership over the new file. Vimwiki " rules them all! Well, except for directories, which may be opened with " Netrw - if &filetype !=# 'vimwiki' && fname !~? '\m/$' - setfiletype vimwiki + if !vimwiki#u#ft_is_vw() && fname !~? '\m/$' + call vimwiki#u#ft_set() endif endif if a:anchor !=? '' diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim @@ -671,7 +671,7 @@ endfunction function! vimwiki#tbl#format(lnum, ...) abort - if !(&filetype ==? 'vimwiki') + if !vimwiki#u#ft_is_vw() return endif let line = getline(a:lnum) @@ -754,7 +754,7 @@ endfunction function! vimwiki#tbl#reset_tw(lnum) abort - if !(&filetype ==? 'vimwiki') + if !vimwiki#u#ft_is_vw() return endif let line = getline(a:lnum) diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim @@ -108,3 +108,27 @@ function! vimwiki#u#is_codeblock(lnum) abort return 0 endif endfunction + +" Sets the filetype to vimwiki +" If g:vimwiki_filetypes variable is set +" the filetype will be vimwiki.<ft1>.<ft2> etc. +function! vimwiki#u#ft_set() + let ftypelist = vimwiki#vars#get_global('filetypes') + let ftype = 'vimwiki' + for ftypeadd in ftypelist + let ftype = ftype . '.' . ftypeadd + endfor + let &filetype = ftype +endfunction + +" Returns: 1 if filetype is vimwiki, 0 else +" If multiple fileytpes are in use 1 is returned only if the +" first ft is vimwiki which should always be the case unless +" the user manually changes it to something else +function! vimwiki#u#ft_is_vw() + if split(&filetype, '\.')[0] ==? 'vimwiki' + return 1 + else + return 0 + endif +endfunction diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim @@ -162,6 +162,7 @@ function! s:read_global_settings_from_user() abort \ 'folding': {'type': type(''), 'default': '', 'possible_values': ['', 'expr', 'syntax', \ 'list', 'custom', ':quick', 'expr:quick', 'syntax:quick', 'list:quick', \ 'custom:quick']}, + \ 'filetypes': {'type': type([]), 'default': []}, \ 'global_ext': {'type': type(0), 'default': 1, 'min': 0, 'max': 1}, \ 'hl_cb_checked': {'type': type(0), 'default': 0, 'min': 0, 'max': 2}, \ 'hl_headers': {'type': type(0), 'default': 0, 'min': 0, 'max': 1}, diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt @@ -3384,6 +3384,20 @@ The default is to enable all key mappings except the mouse: > \ } +------------------------------------------------------------------------------ +*g:vimwiki_filetypes* + +A list of additional fileypes that should be registered to vimwiki files: > + + let g:vimwiki_filetypes = ['markdown', 'pandoc'] + +Would result in the filetype being set to `vimwiki.markdown.pandoc`. This can +be used to enable third party plugins such as custom folding. WARNING: this +option can allow other plugins to overwrite vimwiki settings and operation so +take care when using it. Any plugin that uses a set filetype will be enabled. + +The default is `[ ]` + ============================================================================== 13. Getting help *vimwiki-help* diff --git a/plugin/vimwiki.vim b/plugin/vimwiki.vim @@ -89,7 +89,7 @@ function! s:setup_new_wiki_buffer() abort " this makes that ftplugin/vimwiki.vim and afterwards syntax/vimwiki.vim are " sourced - setfiletype vimwiki + call vimwiki#u#ft_set() endfunction @@ -114,8 +114,8 @@ function! s:setup_buffer_win_enter() abort return endif - if &filetype !=# 'vimwiki' - setfiletype vimwiki + if !vimwiki#u#ft_is_vw() + call vimwiki#u#ft_set() endif call s:set_windowlocal_options()