Allow additional filetypes to be registered to vimwiki files.
This options allow third party plugins to register and enable additonal functionality by setting the filetype to vimwiki.other_ft.other_ft2 etc. This option should be used with care since vimwiki functionality can be overwritten by other plugins. See Issue #461 for an example use case.
This commit is contained in:
		| @@ -309,7 +309,7 @@ function! vimwiki#base#open_link(cmd, link, ...) | ||||
|   if update_prev_link | ||||
|     if a:0 | ||||
|       let vimwiki_prev_link = [a:1, []] | ||||
|     elseif &ft ==# 'vimwiki' | ||||
|     elseif vimwiki#u#ft_is_vw() | ||||
|       let vimwiki_prev_link = [vimwiki#path#current_wiki_file(), getpos('.')] | ||||
|     endif | ||||
|   endif | ||||
| @@ -811,8 +811,8 @@ function! vimwiki#base#edit_file(command, filename, anchor, ...) | ||||
|     " 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 != '' | ||||
|   | ||||
| @@ -676,7 +676,7 @@ endfunction | ||||
|  | ||||
|  | ||||
| function! vimwiki#tbl#format(lnum, ...) | ||||
|   if !(&filetype ==? 'vimwiki') | ||||
|   if !vimwiki#u#ft_is_vw() | ||||
|     return | ||||
|   endif | ||||
|   let line = getline(a:lnum) | ||||
| @@ -759,7 +759,7 @@ endfunction | ||||
|  | ||||
|  | ||||
| function! vimwiki#tbl#reset_tw(lnum) | ||||
|   if !(&filetype ==? 'vimwiki') | ||||
|   if !vimwiki#u#ft_is_vw() | ||||
|     return | ||||
|   endif | ||||
|   let line = getline(a:lnum) | ||||
|   | ||||
| @@ -70,3 +70,28 @@ else | ||||
|   endfunc | ||||
| endif | ||||
|  | ||||
|  | ||||
| " 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 | ||||
|   | ||||
| @@ -160,6 +160,7 @@ function! s:read_global_settings_from_user() | ||||
|         \ '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}, | ||||
|   | ||||
| @@ -3161,6 +3161,21 @@ values are from 0 to 2. | ||||
| The default is 1. | ||||
|  | ||||
|  | ||||
| ------------------------------------------------------------------------------ | ||||
| *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* | ||||
|  | ||||
|   | ||||
| @@ -89,7 +89,7 @@ function! s:setup_new_wiki_buffer() | ||||
|  | ||||
|   " this makes that ftplugin/vimwiki.vim and afterwards syntax/vimwiki.vim are | ||||
|   " sourced | ||||
|   setfiletype vimwiki | ||||
|   call vimwiki#u#ft_set() | ||||
|  | ||||
| endfunction | ||||
|  | ||||
| @@ -102,8 +102,8 @@ function! s:setup_buffer_enter() | ||||
|     return | ||||
|   endif | ||||
|  | ||||
|   if &filetype != 'vimwiki' | ||||
|     setfiletype vimwiki | ||||
|   if !vimwiki#u#ft_is_vw() | ||||
|     call vimwiki#u#ft_set() | ||||
|   endif | ||||
|  | ||||
|   call s:set_global_options() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user