All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
1 " Author: Jerko Steiner <jerko.steiner@gmail.com>
2 " Description: Organize imports support for tsserver
4 function! ale#organize_imports#HandleTSServerResponse(conn_id, response) abort
5 if get(a:response, 'command', '') isnot# 'organizeImports'
9 if get(a:response, 'success', v:false) isnot v:true
13 let l:file_code_edits = a:response.body
15 call ale#code_action#HandleCodeAction(
17 \ 'description': 'Organize Imports',
18 \ 'changes': l:file_code_edits,
21 \ 'conn_id': a:conn_id,
22 \ 'should_save': g:ale_save_hidden || !&hidden,
27 function! s:OnReady(linter, lsp_details) abort
28 let l:id = a:lsp_details.connection_id
30 if a:linter.lsp isnot# 'tsserver'
31 call ale#util#Execute('echom ''OrganizeImports currently only works with tsserver''')
36 let l:buffer = a:lsp_details.buffer
38 let l:Callback = function('ale#organize_imports#HandleTSServerResponse')
40 call ale#lsp#RegisterCallback(l:id, l:Callback)
42 let l:message = ale#lsp#tsserver_message#OrganizeImports(l:buffer)
44 let l:request_id = ale#lsp#Send(l:id, l:message)
47 function! s:OrganizeImports(linter) abort
48 let l:buffer = bufnr('')
49 let [l:line, l:column] = getpos('.')[1:2]
51 if a:linter.lsp isnot# 'tsserver'
52 let l:column = min([l:column, len(getline(l:line))])
55 let l:Callback = function('s:OnReady')
56 call ale#lsp_linter#StartLSP(l:buffer, a:linter, l:Callback)
59 function! ale#organize_imports#Execute() abort
60 for l:linter in ale#lsp_linter#GetEnabled(bufnr(''))
61 call s:OrganizeImports(l:linter)