diff options
author | w0rp <devw0rp@gmail.com> | 2017-04-16 00:16:48 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2017-04-16 00:16:48 +0100 |
commit | e80116cee03af66bb229c3f570f0b2f244f0a197 (patch) | |
tree | fbbce032e7d3db51b6dc50c71467d1e64f09a4b5 | |
parent | 7682fab2947ea13b2427bfdf2b42c30168712f92 (diff) | |
download | ale-e80116cee03af66bb229c3f570f0b2f244f0a197.zip |
#427 Add a function for looking up ALE variables in buffer scope, and then global scope
-rw-r--r-- | autoload/ale.vim | 11 | ||||
-rw-r--r-- | test/test_ale_var.vader | 16 |
2 files changed, 27 insertions, 0 deletions
diff --git a/autoload/ale.vim b/autoload/ale.vim index 3c15f5d5..80ef3eed 100644 --- a/autoload/ale.vim +++ b/autoload/ale.vim @@ -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 diff --git a/test/test_ale_var.vader b/test/test_ale_var.vader new file mode 100644 index 00000000..aee8e048 --- /dev/null +++ b/test/test_ale_var.vader @@ -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') |