diff --git a/autoload/ale/pattern_options.vim b/autoload/ale/pattern_options.vim index a42a39d..03c9146 100644 --- a/autoload/ale/pattern_options.vim +++ b/autoload/ale/pattern_options.vim @@ -13,6 +13,10 @@ function! ale#pattern_options#SetOptions() abort endfor for l:key in keys(l:options) - let b:[l:key] = l:options[l:key] + if l:key[:0] ==# '&' + call setbufvar(bufnr(''), l:key, l:options[l:key]) + else + let b:[l:key] = l:options[l:key] + endif endfor endfunction diff --git a/test/test_pattern_options.vader b/test/test_pattern_options.vader index ba07441..164e5aa 100644 --- a/test/test_pattern_options.vader +++ b/test/test_pattern_options.vader @@ -1,5 +1,7 @@ Before: - Save g:ale_pattern_options, g:ale_pattern_options_enabled + Save g:ale_pattern_options + Save g:ale_pattern_options_enabled + Save &filetype After: Restore @@ -11,6 +13,7 @@ Execute(Buffer variables should be set when filename patterns match): let g:ale_pattern_options = {'baz.*\.js': { \ 'ale_enabled': 1, \ 'some_option': 347, + \ '&filetype': 'pattern_option_set_filetype', \}} silent! file foobar.js @@ -26,3 +29,4 @@ Execute(Buffer variables should be set when filename patterns match): AssertEqual 1, b:ale_enabled AssertEqual 347, b:some_option + AssertEqual 'pattern_option_set_filetype', &filetype