Skip to content

Commit

Permalink
fix: Preprocess aliased filetypes
Browse files Browse the repository at this point in the history
  • Loading branch information
kkoomen committed Mar 13, 2020
1 parent c4a5670 commit 1aba70d
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 3 deletions.
11 changes: 11 additions & 0 deletions autoload/doge/helpers.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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
6 changes: 3 additions & 3 deletions autoload/doge/pattern.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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

Expand Down
4 changes: 4 additions & 0 deletions doc/doge.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
1 change: 1 addition & 0 deletions doc/tags
Original file line number Diff line number Diff line change
Expand Up @@ -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()*
Expand Down

0 comments on commit 1aba70d

Please sign in to comment.