summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale.vim11
-rw-r--r--test/test_ale_var.vader16
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')