Close #2102 - Add support for the Angular language server

This commit is contained in:
w0rp
2021-03-14 21:10:05 +00:00
parent 80a48d01be
commit b45ee8ec6c
13 changed files with 230 additions and 48 deletions

View File

@@ -0,0 +1,44 @@
Before:
call ale#assert#SetUpLinterTest('html', 'angular')
let g:paths = {}
After:
call ale#assert#TearDownLinterTest()
unlet g:paths
Execute(The Angular LSP connection shouldn't be created outside of Angular projects):
AssertLSPLanguage 'html'
AssertLSPConfig {}
AssertLSPProject ''
AssertLinterNotExecuted
Execute(The default command for Angular should be correct):
call ale#test#SetFilename('../test-projects/angular/test.html')
let g:paths = {
\ 'ngserver': ale#test#GetFilename('../test-projects/angular/node_modules/@angular/language-server/bin/ngserver'),
\ 'service': ale#test#GetFilename('../test-projects/angular/node_modules/@angular/language-service'),
\ 'typescript': ale#test#GetFilename('../test-projects/angular/node_modules/typescript'),
\}
AssertLSPLanguage 'html'
AssertLSPProject ale#test#GetFilename('../test-projects/angular')
AssertLinter g:paths.ngserver, ale#Escape(g:paths.ngserver)
\ . ' --ngProbeLocations ' . ale#Escape(g:paths.service)
\ . ' --tsProbeLocations ' . ale#Escape(g:paths.typescript)
\ . ' --stdio'
Execute(It should be possible to use the global ngserver):
let b:ale_html_angular_use_global = 1
call ale#test#SetFilename('../test-projects/angular/test.html')
let g:paths = {
\ 'service': ale#test#GetFilename('../test-projects/angular/node_modules/@angular/language-service'),
\ 'typescript': ale#test#GetFilename('../test-projects/angular/node_modules/typescript'),
\}
AssertLSPLanguage 'html'
AssertLSPProject ale#test#GetFilename('../test-projects/angular')
AssertLinter 'ngserver', ale#Escape('ngserver')
\ . ' --ngProbeLocations ' . ale#Escape(g:paths.service)
\ . ' --tsProbeLocations ' . ale#Escape(g:paths.typescript)
\ . ' --stdio'

View File

@@ -343,6 +343,29 @@ Execute(Other files should be jumped to for LSP definition responses):
AssertEqual [3, 8], getpos('.')[1:2]
AssertEqual {}, ale#definition#GetMap()
Execute(Newer LocationLink items should be supported):
call ale#definition#SetMap({3: {'open_in': 'current-buffer'}})
call ale#definition#HandleLSPResponse(
\ 1,
\ {
\ 'id': 3,
\ 'result': {
\ 'targetUri': ale#path#ToURI(ale#path#Simplify(g:dir . '/completion_dummy_file')),
\ 'targetRange': {
\ 'start': {'line': 2, 'character': 7},
\ },
\ },
\ }
\)
AssertEqual
\ [
\ 'edit +3 ' . fnameescape(ale#path#Simplify(g:dir . '/completion_dummy_file')),
\ ],
\ g:expr_list
AssertEqual [3, 8], getpos('.')[1:2]
AssertEqual {}, ale#definition#GetMap()
Execute(Locations inside the same file should be jumped to without using :edit):
call ale#definition#SetMap({3: {'open_in': 'current-buffer'}})
call ale#definition#HandleLSPResponse(