diff --git a/autoload/doge/helpers.vim b/autoload/doge/helpers.vim index 92b0c7c8..53605bbe 100644 --- a/autoload/doge/helpers.vim +++ b/autoload/doge/helpers.vim @@ -135,6 +135,17 @@ function! doge#helpers#deepsubstitute(input, search, replacement, flags) abort return eval(substitute(string(a:input), a:search, a:replacement, a:flags)) endfunction +"" @public +" Get the current filetype. Returns the original filetype if the current +" filetype is an alias. +function! doge#helpers#get_filetype() abort + for [l:ft, l:aliases] in items(get(g:, 'doge_filetype_aliases', [])) + if index(l:aliases, &filetype) >= 0 + return l:ft + endif + endfor + return &filetype +endfunction let &cpoptions = s:save_cpo unlet s:save_cpo diff --git a/autoload/doge/pattern.vim b/autoload/doge/pattern.vim index 3741a63f..9ef1a680 100644 --- a/autoload/doge/pattern.vim +++ b/autoload/doge/pattern.vim @@ -51,7 +51,7 @@ function! doge#pattern#generate(pattern) abort endif try - let l:preprocess_fn = printf('doge#preprocessors#%s#tokens', &filetype) + let l:preprocess_fn = printf('doge#preprocessors#%s#tokens', doge#helpers#get_filetype()) call function(l:preprocess_fn)(l:tokens) catch /^Vim\%((\a\+)\)\=:E117/ endtry @@ -73,7 +73,7 @@ function! doge#pattern#generate(pattern) abort " Preprocess the extracted parameter tokens. try - let l:preprocess_fn = printf('doge#preprocessors#%s#parameter_tokens', &filetype) + let l:preprocess_fn = printf('doge#preprocessors#%s#parameter_tokens', doge#helpers#get_filetype()) call function(l:preprocess_fn)(l:param_tokens) catch /^Vim\%((\a\+)\)\=:E117/ endtry @@ -127,7 +127,7 @@ function! doge#pattern#generate(pattern) abort endif try - let l:preprocess_fn = printf('doge#preprocessors#%s#insert_position', &filetype) + let l:preprocess_fn = printf('doge#preprocessors#%s#insert_position', doge#helpers#get_filetype()) let l:preprocessed_insert_position = function(l:preprocess_fn)(l:comment_lnum_insert_position) let l:comment_lnum_insert_position = l:preprocessed_insert_position diff --git a/doc/doge.txt b/doc/doge.txt index e352de1b..074e0a41 100644 --- a/doc/doge.txt +++ b/doc/doge.txt @@ -198,6 +198,10 @@ doge#helpers#deepsubstitute({input}, {search}, {replacement}, {flags}) *doge#helpers#deepsubstitute()* Substitute input recursively. +doge#helpers#get_filetype() *doge#helpers#get_filetype()* + Get the current filetype. Returns the original filetype if the current + filetype is an alias. + doge#indent#add({lnum}, {text}) *doge#indent#add()* Indent a string based on a given line its indent, based on the user setting. diff --git a/doc/tags b/doc/tags index d9b44243..2999691a 100644 --- a/doc/tags +++ b/doc/tags @@ -17,6 +17,7 @@ doge#helpers#count() doge.txt /*doge#helpers#count()* doge#helpers#deepextend() doge.txt /*doge#helpers#deepextend()* doge#helpers#deepsubstitute() doge.txt /*doge#helpers#deepsubstitute()* doge#helpers#generator() doge.txt /*doge#helpers#generator()* +doge#helpers#get_filetype() doge.txt /*doge#helpers#get_filetype()* doge#helpers#keyseq() doge.txt /*doge#helpers#keyseq()* doge#helpers#placeholder() doge.txt /*doge#helpers#placeholder()* doge#helpers#trim() doge.txt /*doge#helpers#trim()*