#427 Add a function for looking up ALE variables in buffer scope, and then global scope

This commit is contained in:
w0rp 2017-04-16 00:16:48 +01:00
parent 7682fab294
commit e80116cee0
2 changed files with 27 additions and 0 deletions

View file

@ -96,3 +96,14 @@ endfunction
function! ale#ResetLintFileMarkers() abort
let s:should_lint_file_for_buffer = {}
endfunction
" Given a buffer number and a variable name, look for that variable in the
" buffer scope, then in global scope. If the name does not exist in the global
" scope, an exception will be thrown.
"
" Every variable name will be prefixed with 'ale_'.
function! ale#Var(buffer, variable_name) abort
let l:full_name = 'ale_' . a:variable_name
return getbufvar(a:buffer, l:full_name, g:[l:full_name])
endfunction

16
test/test_ale_var.vader Normal file
View file

@ -0,0 +1,16 @@
Before:
let g:ale_some_variable = 'abc'
After:
unlet! g:ale_some_variable
Execute(ale#Var should return global variables):
AssertEqual 'abc', ale#Var(bufnr(''), 'some_variable')
Execute(ale#Var should return buffer overrides):
let b:ale_some_variable = 'def'
AssertEqual 'def', ale#Var(bufnr(''), 'some_variable')
Execute(ale#Var should throw exceptions for undefined variables):
AssertThrows call ale#Var(bufnr(''), 'undefined_variable_name')