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 update_prev_link | ||||||
|     if a:0 |     if a:0 | ||||||
|       let vimwiki_prev_link = [a:1, []] |       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('.')] |       let vimwiki_prev_link = [vimwiki#path#current_wiki_file(), getpos('.')] | ||||||
|     endif |     endif | ||||||
|   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 |     " Make sure no other plugin takes ownership over the new file. Vimwiki | ||||||
|     " rules them all! Well, except for directories, which may be opened with |     " rules them all! Well, except for directories, which may be opened with | ||||||
|     " Netrw |     " Netrw | ||||||
|     if &filetype != 'vimwiki' && fname !~ '\m/$' |     if !vimwiki#u#ft_is_vw() && fname !~? '\m/$' | ||||||
|       setfiletype vimwiki |       call vimwiki#u#ft_set() | ||||||
|     endif |     endif | ||||||
|   endif |   endif | ||||||
|   if a:anchor != '' |   if a:anchor != '' | ||||||
|   | |||||||
| @@ -676,7 +676,7 @@ endfunction | |||||||
|  |  | ||||||
|  |  | ||||||
| function! vimwiki#tbl#format(lnum, ...) | function! vimwiki#tbl#format(lnum, ...) | ||||||
|   if !(&filetype ==? 'vimwiki') |   if !vimwiki#u#ft_is_vw() | ||||||
|     return |     return | ||||||
|   endif |   endif | ||||||
|   let line = getline(a:lnum) |   let line = getline(a:lnum) | ||||||
| @@ -759,7 +759,7 @@ endfunction | |||||||
|  |  | ||||||
|  |  | ||||||
| function! vimwiki#tbl#reset_tw(lnum) | function! vimwiki#tbl#reset_tw(lnum) | ||||||
|   if !(&filetype ==? 'vimwiki') |   if !vimwiki#u#ft_is_vw() | ||||||
|     return |     return | ||||||
|   endif |   endif | ||||||
|   let line = getline(a:lnum) |   let line = getline(a:lnum) | ||||||
|   | |||||||
| @@ -70,3 +70,28 @@ else | |||||||
|   endfunc |   endfunc | ||||||
| endif | 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', |         \ 'folding': {'type': type(''), 'default': '', 'possible_values': ['', 'expr', 'syntax', | ||||||
|         \     'list', 'custom', ':quick', 'expr:quick', 'syntax:quick', 'list:quick', |         \     'list', 'custom', ':quick', 'expr:quick', 'syntax:quick', 'list:quick', | ||||||
|         \     'custom:quick']}, |         \     'custom:quick']}, | ||||||
|  |         \ 'filetypes': {'type': type([]), 'default': []}, | ||||||
|         \ 'global_ext': {'type': type(0), 'default': 1, 'min': 0, 'max': 1}, |         \ 'global_ext': {'type': type(0), 'default': 1, 'min': 0, 'max': 1}, | ||||||
|         \ 'hl_cb_checked': {'type': type(0), 'default': 0, 'min': 0, 'max': 2}, |         \ 'hl_cb_checked': {'type': type(0), 'default': 0, 'min': 0, 'max': 2}, | ||||||
|         \ 'hl_headers': {'type': type(0), 'default': 0, 'min': 0, 'max': 1}, |         \ '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. | 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* | 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 |   " this makes that ftplugin/vimwiki.vim and afterwards syntax/vimwiki.vim are | ||||||
|   " sourced |   " sourced | ||||||
|   setfiletype vimwiki |   call vimwiki#u#ft_set() | ||||||
|  |  | ||||||
| endfunction | endfunction | ||||||
|  |  | ||||||
| @@ -102,8 +102,8 @@ function! s:setup_buffer_enter() | |||||||
|     return |     return | ||||||
|   endif |   endif | ||||||
|  |  | ||||||
|   if &filetype != 'vimwiki' |   if !vimwiki#u#ft_is_vw() | ||||||
|     setfiletype vimwiki |     call vimwiki#u#ft_set() | ||||||
|   endif |   endif | ||||||
|  |  | ||||||
|   call s:set_global_options() |   call s:set_global_options() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user