Skip to content

Commit 2f0c677

Browse files
committed
tombi: support toml_tombi_online flag to control remote schema fetching
1 parent b415ddd commit 2f0c677

File tree

7 files changed

+67
-6
lines changed

7 files changed

+67
-6
lines changed

ale_linters/toml/tombi.vim

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,19 @@
33

44
call ale#Set('toml_tombi_executable', 'tombi')
55
call ale#Set('toml_tombi_lsp_options', '')
6+
call ale#Set('toml_tombi_online', 0)
7+
8+
function! ale_linters#toml#tombi#GetCommand(buffer) abort
9+
let l:offline = ''
10+
11+
if !ale#Var(a:buffer, 'toml_tombi_online')
12+
let l:offline = '--offline'
13+
endif
14+
15+
return '%e lsp'
16+
\ . ale#Pad(l:offline)
17+
\ . ale#Pad(ale#Var(a:buffer, 'toml_tombi_lsp_options'))
18+
endfunction
619

720
function! ale_linters#toml#tombi#GetProjectRoot(buffer) abort
821
" Try to find nearest tombi.toml
@@ -33,6 +46,6 @@ call ale#linter#Define('toml', {
3346
\ 'name': 'tombi',
3447
\ 'lsp': 'stdio',
3548
\ 'executable': {b -> ale#Var(b, 'toml_tombi_executable')},
36-
\ 'command': {b -> '%e lsp' . ale#Pad(ale#Var(b, 'toml_tombi_lsp_options'))},
49+
\ 'command': function('ale_linters#toml#tombi#GetCommand'),
3750
\ 'project_root': function('ale_linters#toml#tombi#GetProjectRoot'),
3851
\})

autoload/ale/fixers/tombi_format.vim

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,20 @@
33

44
call ale#Set('toml_tombi_executable', 'tombi')
55
call ale#Set('toml_tombi_format_options', '')
6+
call ale#Set('toml_tombi_online', 0)
67

78
function! ale#fixers#tombi_format#Fix(buffer) abort
89
let l:executable = ale#Var(a:buffer, 'toml_tombi_executable')
10+
let l:offline = ''
11+
12+
if !ale#Var(a:buffer, 'toml_tombi_online')
13+
let l:offline = '--offline'
14+
endif
915

1016
return {
1117
\ 'command': ale#Escape(l:executable)
1218
\ . ' format'
19+
\ . ale#Pad(l:offline)
1320
\ . ale#Pad(ale#Var(a:buffer, 'toml_tombi_format_options')),
1421
\}
1522
endfunction

autoload/ale/fixers/tombi_lint.vim

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,20 @@
33

44
call ale#Set('toml_tombi_executable', 'tombi')
55
call ale#Set('toml_tombi_lint_options', '')
6+
call ale#Set('toml_tombi_online', 0)
67

78
function! ale#fixers#tombi_lint#Fix(buffer) abort
89
let l:executable = ale#Var(a:buffer, 'toml_tombi_executable')
10+
let l:offline = ''
11+
12+
if !ale#Var(a:buffer, 'toml_tombi_online')
13+
let l:offline = '--offline'
14+
endif
915

1016
return {
1117
\ 'command': ale#Escape(l:executable)
1218
\ . ' lint'
19+
\ . ale#Pad(l:offline)
1320
\ . ale#Pad(ale#Var(a:buffer, 'toml_tombi_lint_options')),
1421
\}
1522
endfunction

doc/ale-toml.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,18 @@ g:ale_toml_tombi_executable
2525
`tombi`.
2626

2727

28+
*ale-options.toml_tombi_online*
29+
*g:ale_toml_tombi_online*
30+
*b:ale_toml_tombi_online*
31+
toml_tombi_online
32+
g:ale_toml_tombi_online
33+
Type: |Boolean|
34+
Default: `1`
35+
36+
This variable can be modified allow fetching remote schemas when using
37+
`tombi`.
38+
39+
2840
*ale-options.toml_tombi_lsp_options*
2941
*g:ale_toml_tombi_lsp_options*
3042
*b:ale_toml_tombi_lsp_options*

test/fixers/test_tombi_format_fixer_callback.vader

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Before:
22
Save g:ale_toml_tombi_executable
33
Save g:ale_toml_tombi_format_options
4+
Save g:ale_toml_tombi_online
45

56
" Use an invalid global executable, so we don't match it.
67
let g:ale_toml_tombi_executable = 'xxxinvalid'
@@ -15,12 +16,19 @@ After:
1516

1617
Execute(The tombi format callback should return the correct default values):
1718
AssertEqual
18-
\ {'command': ale#Escape('xxxinvalid') . ' format'},
19+
\ {'command': ale#Escape('xxxinvalid') . ' format --offline'},
1920
\ ale#fixers#tombi_format#Fix(bufnr(''))
2021

22+
Execute(The tombi format callback should obey `toml_tombi_online`):
23+
let g:ale_toml_tombi_online = 1
24+
25+
AssertEqual
26+
\ {'command': ale#Escape('xxxinvalid') . ' lint'},
27+
\ ale#fixers#tombi_lint#Fix(bufnr(''))
28+
2129
Execute(The tombi format callback should include custom options):
22-
let g:ale_toml_tombi_format_options = "--offline"
30+
let g:ale_toml_tombi_format_options = "--no-cache"
2331

2432
AssertEqual
25-
\ {'command': ale#Escape('xxxinvalid') . ' format --offline'},
33+
\ {'command': ale#Escape('xxxinvalid') . ' format --offline --no-cache'},
2634
\ ale#fixers#tombi_format#Fix(bufnr(''))

test/fixers/test_tombi_lint_fixer_callback.vader

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Before:
22
Save g:ale_toml_tombi_executable
33
Save g:ale_toml_tombi_lint_options
4+
Save g:ale_toml_tombi_online
45

56
" Use an invalid global executable, so we don't match it.
67
let g:ale_toml_tombi_executable = 'xxxinvalid'
@@ -14,13 +15,20 @@ After:
1415
call ale#test#RestoreDirectory()
1516

1617
Execute(The tombi lint callback should return the correct default values):
18+
AssertEqual
19+
\ {'command': ale#Escape('xxxinvalid') . ' lint --offline'},
20+
\ ale#fixers#tombi_lint#Fix(bufnr(''))
21+
22+
Execute(The tombi lint callback should obey `toml_tombi_online`):
23+
let g:ale_toml_tombi_online = 1
24+
1725
AssertEqual
1826
\ {'command': ale#Escape('xxxinvalid') . ' lint'},
1927
\ ale#fixers#tombi_lint#Fix(bufnr(''))
2028

2129
Execute(The tombi lint callback should include custom options):
22-
let g:ale_toml_tombi_lint_options = "--offline"
30+
let g:ale_toml_tombi_lint_options = "--no-cache"
2331

2432
AssertEqual
25-
\ {'command': ale#Escape('xxxinvalid') . ' lint --offline'},
33+
\ {'command': ale#Escape('xxxinvalid') . ' lint --offline --no-cache'},
2634
\ ale#fixers#tombi_lint#Fix(bufnr(''))

test/linter/test_toml_tombi.vader

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
Before:
2+
Save g:ale_toml_tombi_online
23
call ale#assert#SetUpLinterTest('toml', 'tombi')
34

45
After:
56
call ale#assert#TearDownLinterTest()
67

78
Execute(The default executable path should be correct):
9+
AssertLinter 'tombi', ale#Escape('tombi') . ' lsp --offline'
10+
11+
Execute(The default executable path should obey `toml_tombi_online`):
12+
let g:ale_toml_tombi_online = 1
13+
814
AssertLinter 'tombi', ale#Escape('tombi') . ' lsp'
915

1016
Execute(The project root should be detected correctly with a configuration file):

0 commit comments

Comments
 (0)