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:
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()